// // sub_5D9B4 from 0x5d9b4 to 0x5db60 (428 bytes) // // 1 xrefs: // > FMOD::Geometry::release @ 0xd508c // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // __int64 __fastcall sub_5D9B4(_QWORD *a1) { __int64 v2; // x0 _QWORD *v3; // x9 _QWORD *v4; // x8 _QWORD *v5; // x11 _QWORD *v6; // x10 __int64 v7; // x8 __int64 v8; // x1 __int64 v9; // x2 __int64 v10; // x8 __int64 v11; // x1 __int64 v12; // x2 __int64 v13; // x8 __int64 v14; // x0 _QWORD *v15; // x9 _QWORD *v16; // x8 __int64 v17; // x0 __int64 v18; // x8 _QWORD *v19; // x9 __int64 v21; // [xsp+8h] [xbp-28h] BYREF __int64 v22; // [xsp+10h] [xbp-20h] BYREF char v23; // [xsp+18h] [xbp-18h] v22 = *(_QWORD *)(a1[3] + 400LL); FMOD_OS_CriticalSection_Enter(v22); v23 = 1; v2 = a1[3]; v3 = nullptr; v4 = (_QWORD *)(v2 + 432); v5 = (_QWORD *)(v2 + 432); while ( 1 ) { v6 = v3; v3 = (_QWORD *)*v5; if ( !*v5 ) break; v5 = v3 + 38; if ( v3 == a1 ) { if ( v6 ) v4 = v6 + 38; *v4 = a1[38]; break; } } if ( a1[33] ) { sub_60D14(*(_QWORD *)(v2 + 416)); sub_610B0(*(_QWORD *)(a1[3] + 416LL), a1[33] + 80LL); sub_5F318(*(__int64 *)((char *)&qword_1B0 + (_QWORD)off_114000), a1[33], "../../src/fmod_geometryi.cpp", 378); v2 = a1[3]; a1[33] = 0; } if ( *(_QWORD *)(v2 + 416) ) v2 = sub_5D3D0(v2); if ( a1[8] ) { sub_5F220(v2); v2 = sub_5F318(*(_QWORD *)(v7 + 432), v8, v9, 388); a1[8] = 0; } if ( a1[6] ) { sub_5F220(v2); sub_5F318(*(_QWORD *)(v10 + 432), v11, v12, 393); a1[6] = 0; } v13 = a1[3]; *(_BYTE *)(v13 + 8) = 1; v21 = 0; sub_50238(&v21, *(_QWORD *)v13); sub_6CFD0(*(_QWORD *)a1[3]); v14 = sub_51968(&v21); v15 = (_QWORD *)(*(_QWORD *)a1[3] + 73136LL); v16 = (_QWORD *)*a1; if ( (_QWORD *)*v15 == a1 ) { *v15 = v16; if ( v16 == a1 ) *v15 = 0; } v17 = sub_5F220(v14); *v19 = v18; *(_QWORD *)(*a1 + 8LL) = v19; *a1 = a1; a1[1] = a1; sub_5F320(v17, a1); sub_52090((__int64)&v22); return 0; }