// // sub_5614C from 0x5614c to 0x562a4 (344 bytes) // // 2 xrefs: // > sub_58B74 @ 0x58bac // > sub_5BA6C @ 0x5baa0 // // 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_5614C(__int64 a1, __int64 a2, signed int a3, signed int a4, unsigned int a5, char a6) { unsigned int v10; // w11 __int64 v12; // x8 __int64 v13; // x11 __int64 v14; // x12 __int64 v15; // x13 int v16; // w14 __int64 result; // x0 int v18; // w25 __int64 v19; // x0 if ( (a6 & 1) == 0 ) return 0; if ( !a2 ) { if ( *(_QWORD *)(a1 + 64) ) { ((void (*)(void))loc_577E4)(); *(_DWORD *)(a1 + 56) = 0; *(_QWORD *)(a1 + 64) = 0; } return 0; } if ( a5 ) v10 = a5; else v10 = a4; v12 = 0; v13 = 4LL * (int)v10; v14 = a2; while ( v12 < a3 ) { v15 = 0; while ( v15 < a4 ) { v16 = *(_DWORD *)(v14 + 4 * v15++); if ( (~v16 & 0x7F800000) == 0 ) return 29; } ++v12; v14 += v13; } if ( *(_QWORD *)(a1 + 64) ) { if ( *(__int16 *)(a1 + 56) >= a4 && *(__int16 *)(a1 + 58) >= a3 ) goto LABEL_26; ((void (*)(void))loc_577E4)(); } if ( a4 <= a3 ) v18 = a3; else v18 = a4; v19 = ((__int64 (__fastcall *)(__int64, _QWORD, __int64))loc_57858)( *(_QWORD *)(a1 + 8) + 67784LL, (unsigned int)(4 * a3 * v18), 184320); if ( !v19 ) return 38; *(_WORD *)(a1 + 56) = v18; *(_WORD *)(a1 + 58) = a3; *(_QWORD *)(a1 + 64) = v19; LABEL_26: result = sub_B7BB4(a1 + 56, a2, (unsigned int)a3, (unsigned int)a4, a5); if ( !(_DWORD)result ) return 0; return result; }