// // sub_585B0 from 0x585b0 to 0x58654 (164 bytes) // // 3 xrefs: // > sub_581C4 @ 0x5834c // > sub_584E4 @ 0x58540 // > sub_585B0 @ 0x58600 // // 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_585B0(__int64 a1, char a2) { int v2; // w8 __int64 v3; // x19 __int64 v4; // x21 char v5; // w9 unsigned int v6; // w10 int v7; // w8 char v8; // zf _QWORD *v9; // x20 _QWORD *v10; // x21 __int64 v11; // x19 _BYTE v13[4]; // [xsp+Ch] [xbp-14h] BYREF v2 = *(_DWORD *)(a1 + 72); v3 = a1; v4 = a1 + 400; v5 = v2 & 1 | a2; v6 = v2 & 0xFFFFFFEF; v7 = v2 | 0x10; if ( (v5 & 1) == 0 ) v7 = v6; *(_DWORD *)(a1 + 72) = v7; while ( 1 ) { sub_5937C(a1); if ( v8 ) break; a1 = sub_585B0(*(_QWORD *)(v4 + 16), (*(_DWORD *)(v3 + 72) >> 4) & 1); } v9 = *(_QWORD **)(v3 + 424); v10 = (_QWORD *)(v3 + 424); while ( v9 != v10 ) { v11 = v9[2]; (*(void (__fastcall **)(__int64, _BYTE *))(*(_QWORD *)v11 + 24LL))(v11, v13); (*(void (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v11 + 16LL))(v11, v13[0]); v9 = (_QWORD *)*v9; } return 0; }