// // sub_180007A70 from 0x180007a70 to 0x180007cad (573 bytes) // // 2 xrefs: // > sub_180017630 @ 0x180017803 // > @ 0x1801f63a8 // // 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_180007A70(__int64 a1, __int64 a2) { int v4; // esi int v5; // ebp int v6; // r14d int v7; // edi int v8; // eax unsigned int v9; // edi int v10; // eax int v11; // edx __int64 v12; // rcx int v13; // r14d unsigned int v14; // ebp int v15; // edi unsigned int i; // ebp int v17; // eax int v18; // r14d unsigned int v19; // edi int v20; // eax int v21; // eax unsigned int v22; // edi __int64 v23; // rsi int v24; // ecx int v25; // eax unsigned int v26; // r11d int v27; // r10d __int64 v28; // rdi __int64 v29; // rsi int v30; // r9d unsigned int v31; // r8d unsigned int v32; // ecx unsigned __int64 v33; // rdx v4 = 0; v5 = 0; v6 = sub_180001340(a2, 8) + 1; v7 = 120 * v6; if ( v6 > 0 ) { do { v8 = sub_180001540(a2); if ( v8 < 0 ) return 0xFFFFFFFFLL; ++v5; v7 = v8 + ((v7 + 15) & 0xFFFFFFF0); } while ( v5 < v6 ); } v9 = (v7 + 3) & 0xFFFFFFFC; v10 = sub_180001340(a2, 6); if ( v10 >= 0 ) { v11 = *(_DWORD *)(a2 + 16); do { v12 = (__int64)(v11 + 16) >> 3; v11 = ((_BYTE)v11 + 16) & 7; *(_QWORD *)a2 += v12; --v10; } while ( v10 >= 0 ); *(_DWORD *)(a2 + 16) = v11; } v13 = sub_180001340(a2, 6) + 1; v14 = v9 + 8 * v13 + 3; v15 = 0; for ( i = (v13 + v14) & 0xFFFFFFFC; v15 < v13; i += (v17 + 3) & 0xFFFFFFFC ) { sub_180001340(a2, 16); v17 = sub_180006380(a1, a2); if ( v17 < 0 ) return 0xFFFFFFFFLL; ++v15; } v18 = sub_180001340(a2, 6) + 1; v19 = (i + 40 * v18 + 3) & 0xFFFFFFFC; if ( v18 > 0 ) { do { v20 = sub_180009D60(a1, a2); if ( v20 < 0 ) return 0xFFFFFFFFLL; ++v4; v19 = (v20 + v19 + 3) & 0xFFFFFFFC; } while ( v4 < v18 ); } v21 = sub_180001340(a2, 6) + 1; v22 = v19 + 40 * v21; if ( v21 > 0 ) { v23 = (unsigned int)v21; do { v24 = *(_DWORD *)(a2 + 16) + 16; *(_DWORD *)(a2 + 16) = (*(_BYTE *)(a2 + 16) + 16) & 7; *(_QWORD *)a2 += (__int64)v24 >> 3; v22 = (sub_180007CB0(a1, a2) + 3 + v22) & 0xFFFFFFFC; --v23; } while ( v23 ); } v25 = sub_180001340(a2, 6) + 1; v26 = (v22 + 2 * v25 + 3) & 0xFFFFFFFC; if ( v25 > 0 ) { v27 = *(_DWORD *)(a2 + 16); v28 = *(_QWORD *)a2; v29 = (unsigned int)v25; do { v30 = v27 + 1; v31 = (((_BYTE)v27 + 1) & 7) + 16; v32 = (((((_BYTE)v27 + 1) & 7) + 16) & 7) + 16; v33 = (((((((_BYTE)v27 + 1) & 7) + 16) & 7) + 16) & 7u) + 8; v27 = ((((((((_BYTE)v27 + 1) & 7) + 16) & 7) + 16) & 7) + 8) & 7; v28 += ((unsigned __int64)v31 >> 3) + ((unsigned __int64)v32 >> 3) + (v33 >> 3) + ((__int64)v30 >> 3); --v29; } while ( v29 ); *(_DWORD *)(a2 + 16) = v27; *(_QWORD *)a2 = v28; } return v26; }