// // sub_5AF44 from 0x5af44 to 0x5b0c4 (384 bytes) // // 1 xrefs: // > sub_5A364 @ 0x5a3d8 // // 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 sub_5AF44() { __int64 v0; // x0 __int64 v1; // x1 char v2; // w2 __int64 v3; // x8 char v4; // w21 __int64 v5; // x20 __int64 v6; // x19 __int64 v7; // x10 int v8; // w12 unsigned int v9; // w9 int v10; // w12 __int64 v16; // x9 __int64 result; // x0 __int64 v18; // [xsp+8h] [xbp-28h] BYREF v0 = sub_5C6DC(); if ( !v3 ) return 30; v4 = v2; v5 = v0; v6 = v1; *(_QWORD *)(v1 + 512) = v0; *(_QWORD *)(v3 + 40) = 0; *(_QWORD *)(v3 + 48) = v1; *(_DWORD *)(v3 + 92) = -1; *(_QWORD *)(v3 + 84) = 0xFFFFFFFFLL; *(_DWORD *)(v3 + 56) = 8; *(_QWORD *)(v3 + 24) = v0; if ( (v2 & 1) != 0 ) { v7 = *(_QWORD *)(v0 + 8); v8 = *(_DWORD *)(v0 + 72); *(_DWORD *)(v0 + 24) = 1; *(_QWORD *)(v0 + 496) = 0; *(_QWORD *)(v0 + 16) = 0; *(_QWORD *)(v0 + 40) = 0; v9 = v8 & 0xFEEDFFD8; v10 = *(_DWORD *)(v7 + 70460); *(_OWORD *)(v0 + 152) = xmmword_2F340; __asm { FMOV V0.2S, #1.0 } *(_DWORD *)(v0 + 72) = v9; *(_QWORD *)(v0 + 184) = 0x3F80000000000000LL; *(_DWORD *)(v0 + 552) = 0; *(_DWORD *)(v0 + 544) = 1065353216; *(_DWORD *)(v0 + 52) = 1065353216; *(_QWORD *)(v0 + 120) = _D0; *(_DWORD *)(v0 + 192) = 0; *(_OWORD *)(v0 + 168) = xmmword_2F610; *(_QWORD *)(v0 + 224) = 0; *(_DWORD *)(v0 + 232) = 0; *(_QWORD *)(v0 + 240) = _D0; *(_DWORD *)(v0 + 256) = 0; *(_DWORD *)(v0 + 248) = 0; *(_DWORD *)(v0 + 548) = v10; *(_DWORD *)(v0 + 252) = *(_DWORD *)(v7 + 69712); *(_QWORD *)(v0 + 88) = 1065353216; if ( v7 ) { v16 = 0; while ( v16 != 4 ) sub_5C6F0(); } *(_QWORD *)(v5 + 296) = 0; *(_QWORD *)(v5 + 304) = 0; *(_BYTE *)(v5 + 312) = 0; } result = sub_5C500(*(_QWORD *)(v5 + 96)); if ( !(_DWORD)result ) { if ( (v4 & 1) == 0 ) return (*(__int64 (__fastcall **)(_QWORD, __int64))(**(_QWORD **)(v5 + 472) + 48LL))(*(_QWORD *)(v5 + 472), v6); result = sub_5C638(); if ( !(_DWORD)result ) { result = sub_AFE50(*(_QWORD *)(v5 + 112)); if ( !(_DWORD)result ) { result = sub_5C50C(*(_QWORD *)(v5 + 32), 4294967293LL, &v18); if ( !(_DWORD)result ) { result = sub_5C538(v18, *(_QWORD *)(v5 + 96)); if ( !(_DWORD)result ) return (*(__int64 (__fastcall **)(_QWORD, __int64))(**(_QWORD **)(v5 + 472) + 48LL))( *(_QWORD *)(v5 + 472), v6); } } } } return result; }