; ; sub_180003130 from 0x180003130 to 0x18000338c (604 bytes) ; ; 5 xrefs: ; > sub_180009770 @ 0x180009a91 ; > @ 0x18017d45c ; > @ 0x18017d494 ; > @ 0x1801a78a8 ; > @ 0x1801f6180 ; ; 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 ; push rbx ; +0x0, 0x180003130 push rsi ; +0x2, 0x180003132 push rdi ; +0x3, 0x180003133 push r14 ; +0x4, 0x180003134 push r15 ; +0x6, 0x180003136 sub rsp, 50h ; +0x8, 0x180003138 movsx r15d, byte ptr [rcx+66h] ; +0xc, 0x18000313c mov edi, r9d ; +0x11, 0x180003141 mov rax, [rcx+30h] ; +0x14, 0x180003144 mov r14, r8 ; +0x18, 0x180003148 movaps [rsp+78h+var_38], xmm6 ; +0x1b, 0x18000314b mov rbx, rdx ; +0x20, 0x180003150 movdqu xmm6, xmmword ptr [rcx] ; +0x23, 0x180003153 mov rsi, rcx ; +0x27, 0x180003157 movaps [rsp+78h+var_48], xmm7 ; +0x2a, 0x18000315a movups xmm7, xmmword ptr [rcx+10h] ; +0x2f, 0x18000315f movaps [rsp+78h+var_58], xmm8 ; +0x33, 0x180003163 movups xmm8, xmmword ptr [rcx+20h] ; +0x39, 0x180003169 prefetcht0 byte ptr [rax] ; +0x3e, 0x18000316e mov rax, [rcx+38h] ; +0x41, 0x180003171 prefetcht0 byte ptr [rax] ; +0x45, 0x180003175 movsx rax, byte ptr [rcx+64h] ; +0x48, 0x180003178 sar edi, 2 ; +0x4d, 0x18000317d cmp eax, 7; switch 8 cases ; +0x50, 0x180003180 ja def_1800031A2; jumptable 00000001800031A2 default case ; +0x53, 0x180003183 lea rdx, cs:180000000h ; +0x59, 0x180003189 mov [rsp+78h+arg_0], rbp ; +0x60, 0x180003190 mov ecx, ds:(jpt_1800031A2 - 180000000h)[rdx+rax*4] ; +0x68, 0x180003198 add rcx, rdx ; +0x6f, 0x18000319f jmp rcx; switch jump ; +0x72, 0x1800031a2 test edi, edi; jumptable 00000001800031A2 cases 0,1 ; +0x74, 0x1800031a4 jz loc_180003343 ; +0x76, 0x1800031a6 nop dword ptr [rax+00h] ; +0x7c, 0x1800031ac mov rdx, r14 ; +0x80, 0x1800031b0 mov rcx, rsi ; +0x83, 0x1800031b3 call sub_180002960 ; +0x86, 0x1800031b6 pand xmm0, xmm6 ; +0x8b, 0x1800031bb cvtdq2ps xmm1, xmm0 ; +0x8f, 0x1800031bf mulps xmm1, xmm8 ; +0x92, 0x1800031c2 addps xmm1, xmm7 ; +0x96, 0x1800031c6 addps xmm1, xmmword ptr [rbx] ; +0x99, 0x1800031c9 movups xmmword ptr [rbx], xmm1 ; +0x9c, 0x1800031cc add rbx, 10h ; +0x9f, 0x1800031cf sub edi, 1 ; +0xa3, 0x1800031d3 jnz short loc_1800031B0 ; +0xa6, 0x1800031d6 jmp loc_180003343 ; +0xa8, 0x1800031d8 mov ebp, edi; jumptable 00000001800031A2 cases 2,3 ; +0xad, 0x1800031dd sar ebp, 1 ; +0xaf, 0x1800031df jz loc_180003343 ; +0xb1, 0x1800031e1 mov eax, edi ; +0xb7, 0x1800031e7 cdq ; +0xb9, 0x1800031e9 sub eax, edx ; +0xba, 0x1800031ea sar eax, 1 ; +0xbc, 0x1800031ec movsxd rdi, eax ; +0xbe, 0x1800031ee add rdi, rdi ; +0xc1, 0x1800031f1 mov rdx, r14 ; +0xc4, 0x1800031f4 mov rcx, rsi ; +0xc7, 0x1800031f7 call sub_180002960 ; +0xca, 0x1800031fa movdqa xmm1, xmm0 ; +0xcf, 0x1800031ff movdqa xmm3, xmm0 ; +0xd3, 0x180003203 movd xmm0, r15d ; +0xd7, 0x180003207 pand xmm1, xmm6 ; +0xdc, 0x18000320c psrad xmm3, xmm0 ; +0xe0, 0x180003210 cvtdq2ps xmm2, xmm1 ; +0xe4, 0x180003214 pand xmm3, xmm6 ; +0xe7, 0x180003217 mulps xmm2, xmm8 ; +0xeb, 0x18000321b cvtdq2ps xmm0, xmm3 ; +0xef, 0x18000321f addps xmm2, xmm7 ; +0xf2, 0x180003222 mulps xmm0, xmm8 ; +0xf5, 0x180003225 addps xmm2, xmmword ptr [rbx] ; +0xf9, 0x180003229 addps xmm0, xmm7 ; +0xfc, 0x18000322c movups xmmword ptr [rbx], xmm2 ; +0xff, 0x18000322f addps xmm0, xmmword ptr [rbx+rdi*8] ; +0x102, 0x180003232 movups xmmword ptr [rbx+rdi*8], xmm0 ; +0x106, 0x180003236 add rbx, 10h ; +0x10a, 0x18000323a sub ebp, 1 ; +0x10e, 0x18000323e jnz short loc_1800031F4 ; +0x111, 0x180003241 jmp loc_180003343 ; +0x113, 0x180003243 mov ebp, edi; jumptable 00000001800031A2 cases 4-7 ; +0x118, 0x180003248 sar ebp, 2 ; +0x11a, 0x18000324a test ebp, ebp ; +0x11d, 0x18000324d jz loc_180003343 ; +0x11f, 0x18000324f mov eax, edi ; +0x125, 0x180003255 mov [rsp+78h+arg_8], r12 ; +0x127, 0x180003257 cdq ; +0x12f, 0x18000325f mov [rsp+78h+arg_10], r13 ; +0x130, 0x180003260 and edx, 3 ; +0x138, 0x180003268 add eax, edx ; +0x13b, 0x18000326b sar eax, 2 ; +0x13d, 0x18000326d movsxd rcx, eax ; +0x140, 0x180003270 mov rdi, rcx ; +0x143, 0x180003273 mov r12, rcx ; +0x146, 0x180003276 add rdi, rdi ; +0x149, 0x180003279 shl r12, 5 ; +0x14c, 0x18000327c lea r13, [rcx+rcx*2] ; +0x150, 0x180003280 add r13, r13 ; +0x154, 0x180003284 nop word ptr [rax+rax+00000000h] ; +0x157, 0x180003287 mov rdx, r14 ; +0x160, 0x180003290 mov rcx, rsi ; +0x163, 0x180003293 call sub_180002960 ; +0x166, 0x180003296 movdqa xmm3, xmm0 ; +0x16b, 0x18000329b lea eax, [r15+r15] ; +0x16f, 0x18000329f movdqa xmm1, xmm0 ; +0x173, 0x1800032a3 movd xmm0, r15d ; +0x177, 0x1800032a7 pand xmm1, xmm6 ; +0x17c, 0x1800032ac cvtdq2ps xmm2, xmm1 ; +0x180, 0x1800032b0 movdqa xmm1, xmm3 ; +0x183, 0x1800032b3 psrad xmm1, xmm0 ; +0x187, 0x1800032b7 mulps xmm2, xmm8 ; +0x18b, 0x1800032bb pand xmm1, xmm6 ; +0x18f, 0x1800032bf cvtdq2ps xmm0, xmm1 ; +0x193, 0x1800032c3 movdqa xmm1, xmm3 ; +0x196, 0x1800032c6 addps xmm2, xmm7 ; +0x19a, 0x1800032ca mulps xmm0, xmm8 ; +0x19d, 0x1800032cd addps xmm2, xmmword ptr [rbx] ; +0x1a1, 0x1800032d1 addps xmm0, xmm7 ; +0x1a4, 0x1800032d4 movups xmmword ptr [rbx], xmm2 ; +0x1a7, 0x1800032d7 addps xmm0, xmmword ptr [rbx+rdi*8] ; +0x1aa, 0x1800032da movups xmmword ptr [rbx+rdi*8], xmm0 ; +0x1ae, 0x1800032de movd xmm0, eax ; +0x1b2, 0x1800032e2 lea eax, [r15+r15*2] ; +0x1b6, 0x1800032e6 psrad xmm1, xmm0 ; +0x1ba, 0x1800032ea pand xmm1, xmm6 ; +0x1be, 0x1800032ee cvtdq2ps xmm0, xmm1 ; +0x1c2, 0x1800032f2 mulps xmm0, xmm8 ; +0x1c5, 0x1800032f5 addps xmm0, xmm7 ; +0x1c9, 0x1800032f9 addps xmm0, xmmword ptr [r12+rbx] ; +0x1cc, 0x1800032fc movups xmmword ptr [r12+rbx], xmm0 ; +0x1d1, 0x180003301 movd xmm0, eax ; +0x1d6, 0x180003306 psrad xmm3, xmm0 ; +0x1da, 0x18000330a pand xmm3, xmm6 ; +0x1de, 0x18000330e cvtdq2ps xmm0, xmm3 ; +0x1e2, 0x180003312 mulps xmm0, xmm8 ; +0x1e5, 0x180003315 addps xmm0, xmm7 ; +0x1e9, 0x180003319 addps xmm0, xmmword ptr [rbx+r13*8] ; +0x1ec, 0x18000331c movups xmmword ptr [rbx+r13*8], xmm0 ; +0x1f1, 0x180003321 add rbx, 10h ; +0x1f6, 0x180003326 sub ebp, 1 ; +0x1fa, 0x18000332a jnz loc_180003290 ; +0x1fd, 0x18000332d mov r13, [rsp+78h+arg_10] ; +0x203, 0x180003333 mov r12, [rsp+78h+arg_8] ; +0x20b, 0x18000333b mov rbp, [rsp+78h+arg_0] ; +0x213, 0x180003343 movaps xmm6, [rsp+78h+var_38]; jumptable 00000001800031A2 default case ; +0x21b, 0x18000334b xor eax, eax ; +0x220, 0x180003350 movaps xmm7, [rsp+78h+var_48] ; +0x222, 0x180003352 movaps xmm8, [rsp+78h+var_58] ; +0x227, 0x180003357 add rsp, 50h ; +0x22d, 0x18000335d pop r15 ; +0x231, 0x180003361 pop r14 ; +0x233, 0x180003363 pop rdi ; +0x235, 0x180003365 pop rsi ; +0x236, 0x180003366 pop rbx ; +0x237, 0x180003367 retn ; +0x238, 0x180003368 align 4 ; +0x239, 0x180003369 dd offset loc_1800031A4 - 180000000h; jump table for switch statement ; +0x23c, 0x18000336c