// // sub_180003D30 from 0x180003d30 to 0x180003eff (463 bytes) // // 8 xrefs: // > sub_180017A50 @ 0x180017b87 // > sub_180017CB0 @ 0x180017ced // > sub_180017CB0 @ 0x180017d0e // > sub_180017E70 @ 0x180018026 // > sub_180017E70 @ 0x180018081 // > @ 0x18017d5e8 // > @ 0x18017d5f8 // > @ 0x1801f621c // // 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_180003D30(__int64 a1, float *a2, int a3) { __int64 v3; // r13 int v5; // edx int v7; // edi int v8; // edi int v9; // edx char *v10; // rcx char *v11; // rsi float *v12; // r15 __int64 v14; // [rsp+20h] [rbp-60h] __int64 v15; // [rsp+28h] [rbp-58h] __int64 v16; // [rsp+30h] [rbp-50h] int v17; // [rsp+60h] [rbp-20h] BYREF int v18; // [rsp+64h] [rbp-1Ch] BYREF int v19; // [rsp+68h] [rbp-18h] BYREF int v20; // [rsp+6Ch] [rbp-14h] BYREF int v21; // [rsp+70h] [rbp-10h] BYREF int v22[3]; // [rsp+74h] [rbp-Ch] BYREF int v23; // [rsp+B0h] [rbp+30h] BYREF int v24; // [rsp+C8h] [rbp+48h] BYREF v3 = *(_QWORD *)a1; v5 = *(_DWORD *)(a1 + 24); if ( v5 <= -1 ) return 0; v7 = *(_DWORD *)(a1 + 28); if ( v5 >= v7 ) return 0; v8 = v7 - v5; if ( a2 ) { if ( v8 > a3 ) v8 = a3; sub_1800041D0( a1, v5, v5 + v8, (unsigned int)&v18, (__int64)&v17, (__int64)&v24, (__int64)&v23, (__int64)&v20, (__int64)&v19, (__int64)&v21, (__int64)v22); v9 = *(_DWORD *)(a1 + 40); v10 = (char *)&unk_1801A3200; if ( v9 && *(_DWORD *)(a1 + 36) ) { v11 = (char *)&unk_1801A3200 + 4 * v21; } else { v11 = (char *)&unk_1801A3000 + 4 * v21; if ( !v9 || !*(_DWORD *)(a1 + 36) ) v10 = (char *)&unk_1801A3000; } v12 = (float *)&v10[4 * v22[0]]; if ( (unsigned int)sub_1800C0A10(2) ) { sub_180005520(a1, (_DWORD)a2, (_DWORD)v11, (_DWORD)v12, v20, v19, *(_DWORD *)(v3 + 4), v18, v17, v24, v23); } else if ( (unsigned int)sub_1800C0A10(0) ) { LODWORD(v16) = *(_DWORD *)(v3 + 4); LODWORD(v15) = v19; LODWORD(v14) = v20; sub_180004520(a1, (_DWORD)a2, (_DWORD)v11, (_DWORD)v12, v14, v15, v16, v18, v17, v24, v23); } else { sub_180003740(a1, a2, (__int64)v11, v12, v20, v19, *(_DWORD *)(v3 + 4), v18, v17, v24, v23); } } return (unsigned int)v8; }