// // sub_5B538 from 0x5b538 to 0x5b6a8 (368 bytes) // // 2 xrefs: // > sub_92AE0 @ 0x931a0 // > @ 0x10c630 // // 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_5B538() { __int64 v0; // x19 __int64 v1; // x0 __int64 v2; // x8 __int64 v3; // x0 int v4; // w1 __int64 v5; // x9 int v6; // w8 unsigned int v7; // w10 int v8; // w8 int v9; // w20 __int64 v10; // x0 __int64 result; // x0 __int64 v12; // x0 __int64 v13; // x0 int v14; // [xsp+8h] [xbp-28h] BYREF _BYTE v15[4]; // [xsp+Ch] [xbp-24h] BYREF v1 = sub_5C6DC(); if ( !v2 ) return 30; v3 = sub_5C688(v1); if ( !v5 ) return 30; v6 = *(_DWORD *)(v0 + 72); v7 = v6 & 0xFFFFFFFE; v8 = v6 | 1; if ( (v4 & 1) == 0 ) v8 = v7; *(_DWORD *)(v0 + 72) = v8; v9 = v4 | ((unsigned __int8)(*(_BYTE *)(v5 + 72) & 0x10) >> 4); if ( (v8 & 0x40000) != 0 && !(v4 & 1 | ((*(_BYTE *)(v5 + 72) & 0x10) != 0)) ) { v14 = 0; *(_DWORD *)(v0 + 72) = v8 & 0xFFFBFFFF; v10 = sub_597E0(v0); v3 = sub_5C658(v10, &v14); if ( (v14 & 0x10) != 0 ) { *(_DWORD *)(v0 + 72) |= 0x80000u; v3 = sub_5B3B0(v0, 0, 1); *(_DWORD *)(v0 + 72) &= ~0x80000u; } } result = sub_5C6C4(v3, v15); if ( !(_DWORD)result ) { if ( v15[0] || ((unsigned __int8)v9 & ((*(_BYTE *)(*(_QWORD *)(v0 + 32) + 72LL) & 0x10) == 0)) == 0 || (result = sub_5C500(*(_QWORD *)(v0 + 96)), !(_DWORD)result) && ((v12 = *(_QWORD *)(v0 + 112), v12 == *(_QWORD *)(v0 + 96)) || (result = sub_5C500(v12), !(_DWORD)result)) ) { result = (*(__int64 (__fastcall **)(_QWORD, _QWORD))(**(_QWORD **)(v0 + 472) + 88LL))( *(_QWORD *)(v0 + 472), v9 & 1); if ( !(_DWORD)result ) { if ( v15[0] || ((v9 | ((unsigned __int8)(*(_BYTE *)(*(_QWORD *)(v0 + 32) + 72LL) & 0x10) >> 4)) & 1) != 0 ) goto LABEL_29; v13 = *(_QWORD *)(v0 + 112); if ( v13 != *(_QWORD *)(v0 + 96) ) { result = ((__int64 (*)(void))sub_5C710)(); if ( (_DWORD)result ) return result; v13 = *(_QWORD *)(v0 + 96); } result = sub_5C710(v13); if ( !(_DWORD)result ) { LABEL_29: if ( (v9 & 1) != 0 ) return 0; if ( (*(_DWORD *)(v0 + 72) & 0x800000) == 0 ) return 0; result = sub_5C64C(); if ( !(_DWORD)result ) return 0; } } } } return result; }