// // sub_180002830 from 0x180002830 to 0x180002954 (292 bytes) // // 4 xrefs: // > sub_180002B80 @ 0x180003050 // > sub_180003390 @ 0x180003610 // > sub_180003390 @ 0x180003625 // > @ 0x1801f612c // // 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_180002830(__int64 a1, __int64 a2, __m128i *a3, __m128i *a4) { _QWORD *v4; // r11 __int64 v6; // rdi int v8; // ecx __int64 v11; // r9 __int64 v12; // r10 unsigned int v13; // edx int v14; // r8d unsigned int v15; // eax int v16; // ecx __int64 v17; // rax unsigned int v18; // r10d __m128i v19; // xmm3 unsigned int v20; // r9d __m128i v21; // xmm3 __int64 result; // rax v4 = *(_QWORD **)a2; v6 = *(_QWORD *)(a1 + 56); v8 = *(_DWORD *)(a2 + 16); v11 = **(_QWORD **)a2 >> v8; v12 = (unsigned int)v11 & *(_DWORD *)(a1 + 112); v13 = *(unsigned __int16 *)(*(_QWORD *)(a1 + 48) + 2 * v12); v14 = *(char *)((*(_WORD *)(*(_QWORD *)(a1 + 48) + 2 * v12) & 0x7FFF) + v6); if ( v13 >= 0x8000 ) { v15 = sub_180001910(a1, a2, v13, v11); v8 = *(_DWORD *)(a2 + 16); v4 = *(_QWORD **)a2; v13 = v15; v14 = *(char *)(v15 + v6); } v16 = v14 + v8; *(_DWORD *)(a2 + 16) = v16 & 7; *(_QWORD *)a2 = (char *)v4 + ((__int64)v16 >> 3); v17 = *(_QWORD *)(a1 + 72); LOBYTE(v16) = *(_BYTE *)(a1 + 102); v18 = *(unsigned __int16 *)(v17 + 2LL * (v13 - 1)) >> v16; v19 = _mm_cvtsi32_si128(*(unsigned __int16 *)(v17 + 2LL * (v13 - 1))); LODWORD(v17) = v18 >> v16 >> v16; v20 = (unsigned int)v17 >> v16 >> v16; *a3 = _mm_unpacklo_epi64( _mm_unpacklo_epi32(v19, _mm_cvtsi32_si128(v18)), _mm_unpacklo_epi32(_mm_cvtsi32_si128(v18 >> v16), _mm_cvtsi32_si128(v17))); v21 = _mm_cvtsi32_si128((unsigned int)v17 >> v16); result = v20 >> v16 >> v16; *a4 = _mm_unpacklo_epi64( _mm_unpacklo_epi32(v21, _mm_cvtsi32_si128(v20)), _mm_unpacklo_epi32(_mm_cvtsi32_si128(v20 >> v16), _mm_cvtsi32_si128(result))); return result; }