; ; sub_180003390 from 0x180003390 to 0x180003734 (932 bytes) ; ; 5 xrefs: ; > sub_180009770 @ 0x180009ccd ; > @ 0x18017d54c ; > @ 0x18017d584 ; > @ 0x1801a78b0 ; > @ 0x1801f61bc ; ; 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 ; mov r11, rsp ; +0x0, 0x180003390 push rbx ; +0x3, 0x180003393 push rbp ; +0x4, 0x180003394 push rsi ; +0x5, 0x180003395 push rdi ; +0x6, 0x180003396 push r14 ; +0x7, 0x180003397 sub rsp, 0A0h ; +0x9, 0x180003399 mov rdi, [rdx] ; +0x10, 0x1800033a0 mov rbp, rcx ; +0x13, 0x1800033a3 mov rbx, [rdx+8] ; +0x16, 0x1800033a6 movsx r14d, byte ptr [rcx+66h] ; +0x1a, 0x1800033aa movaps xmmword ptr [r11-48h], xmm7 ; +0x1f, 0x1800033af movdqu xmm7, xmmword ptr [rcx] ; +0x24, 0x1800033b4 movsxd rax, r8d ; +0x28, 0x1800033b8 movaps xmmword ptr [r11-58h], xmm8 ; +0x2b, 0x1800033bb movups xmm8, xmmword ptr [rcx+10h] ; +0x30, 0x1800033c0 lea r8, ds:0[rax*4] ; +0x35, 0x1800033c5 movaps xmmword ptr [r11-68h], xmm9 ; +0x3d, 0x1800033cd movups xmm9, xmmword ptr [rcx+20h] ; +0x42, 0x1800033d2 mov rax, [rcx+30h] ; +0x47, 0x1800033d7 add rdi, r8 ; +0x4b, 0x1800033db add rbx, r8 ; +0x4e, 0x1800033de prefetcht0 byte ptr [rax] ; +0x51, 0x1800033e1 mov rax, [rcx+38h] ; +0x54, 0x1800033e4 prefetcht0 byte ptr [rax] ; +0x58, 0x1800033e8 mov esi, [rsp+0C8h+arg_28] ; +0x5b, 0x1800033eb movsx rax, byte ptr [rcx+64h] ; +0x62, 0x1800033f2 sar esi, 2 ; +0x67, 0x1800033f7 cmp eax, 8; switch 9 cases ; +0x6a, 0x1800033fa ja def_18000341D; jumptable 000000018000341D default case ; +0x6d, 0x1800033fd mov [r11+18h], r15 ; +0x73, 0x180003403 lea rdx, cs:180000000h ; +0x77, 0x180003407 movaps xmmword ptr [r11-38h], xmm6 ; +0x7e, 0x18000340e mov ecx, ds:(jpt_18000341D - 180000000h)[rdx+rax*4] ; +0x83, 0x180003413 add rcx, rdx ; +0x8a, 0x18000341a jmp rcx; switch jump ; +0x8d, 0x18000341d test esi, esi; jumptable 000000018000341D cases 0,1 ; +0x8f, 0x18000341f jz loc_1800036D9 ; +0x91, 0x180003421 mov r14, [rsp+0C8h+arg_20] ; +0x97, 0x180003427 nop ; +0x9f, 0x18000342f mov rdx, r14 ; +0xa0, 0x180003430 mov rcx, rbp ; +0xa3, 0x180003433 call sub_180002960 ; +0xa6, 0x180003436 pand xmm0, xmm7 ; +0xab, 0x18000343b mov rdx, r14 ; +0xaf, 0x18000343f cvtdq2ps xmm6, xmm0 ; +0xb2, 0x180003442 mov rcx, rbp ; +0xb5, 0x180003445 mulps xmm6, xmm9 ; +0xb8, 0x180003448 addps xmm6, xmm8 ; +0xbc, 0x18000344c call sub_180002960 ; +0xc0, 0x180003450 pand xmm0, xmm7 ; +0xc5, 0x180003455 cvtdq2ps xmm1, xmm0 ; +0xc9, 0x180003459 movaps xmm0, xmm6 ; +0xcc, 0x18000345c mulps xmm1, xmm9 ; +0xcf, 0x18000345f addps xmm1, xmm8 ; +0xd3, 0x180003463 shufps xmm0, xmm1, 88h ; +0xd7, 0x180003467 addps xmm0, xmmword ptr [rdi] ; +0xdb, 0x18000346b shufps xmm6, xmm1, 0DDh ; +0xde, 0x18000346e movups xmmword ptr [rdi], xmm0 ; +0xe2, 0x180003472 add rdi, 10h ; +0xe5, 0x180003475 addps xmm6, xmmword ptr [rbx] ; +0xe9, 0x180003479 movups xmmword ptr [rbx], xmm6 ; +0xec, 0x18000347c add rbx, 10h ; +0xef, 0x18000347f sub esi, 1 ; +0xf3, 0x180003483 jnz short loc_180003430 ; +0xf6, 0x180003486 jmp loc_1800036D9 ; +0xf8, 0x180003488 test esi, esi; jumptable 000000018000341D cases 2,3 ; +0xfd, 0x18000348d jz loc_1800036D9 ; +0xff, 0x18000348f mov r15, [rsp+0C8h+arg_20] ; +0x105, 0x180003495 nop dword ptr [rax] ; +0x10d, 0x18000349d mov rdx, r15 ; +0x110, 0x1800034a0 mov rcx, rbp ; +0x113, 0x1800034a3 call sub_180002960 ; +0x116, 0x1800034a6 movdqa xmm1, xmm0 ; +0x11b, 0x1800034ab movdqa xmm3, xmm0 ; +0x11f, 0x1800034af movd xmm0, r14d ; +0x123, 0x1800034b3 pand xmm1, xmm7 ; +0x128, 0x1800034b8 psrad xmm3, xmm0 ; +0x12c, 0x1800034bc cvtdq2ps xmm2, xmm1 ; +0x130, 0x1800034c0 pand xmm3, xmm7 ; +0x133, 0x1800034c3 mulps xmm2, xmm9 ; +0x137, 0x1800034c7 cvtdq2ps xmm0, xmm3 ; +0x13b, 0x1800034cb addps xmm2, xmm8 ; +0x13e, 0x1800034ce mulps xmm0, xmm9 ; +0x142, 0x1800034d2 addps xmm2, xmmword ptr [rdi] ; +0x146, 0x1800034d6 addps xmm0, xmm8 ; +0x149, 0x1800034d9 movups xmmword ptr [rdi], xmm2 ; +0x14d, 0x1800034dd add rdi, 10h ; +0x150, 0x1800034e0 addps xmm0, xmmword ptr [rbx] ; +0x154, 0x1800034e4 movups xmmword ptr [rbx], xmm0 ; +0x157, 0x1800034e7 add rbx, 10h ; +0x15a, 0x1800034ea sub esi, 1 ; +0x15e, 0x1800034ee jnz short loc_1800034A0 ; +0x161, 0x1800034f1 jmp loc_1800036D9 ; +0x163, 0x1800034f3 sar esi, 1; jumptable 000000018000341D cases 4-7 ; +0x168, 0x1800034f8 jz loc_1800036D9 ; +0x16a, 0x1800034fa mov [rsp+0C8h+arg_0], r12 ; +0x170, 0x180003500 lea r15d, [r14+r14] ; +0x178, 0x180003508 mov [rsp+0C8h+arg_8], r13 ; +0x17c, 0x18000350c lea r12d, [r14+r14*2] ; +0x184, 0x180003514 mov r13, [rsp+0C8h+arg_20] ; +0x188, 0x180003518 mov rdx, r13 ; +0x190, 0x180003520 mov rcx, rbp ; +0x193, 0x180003523 call sub_180002960 ; +0x196, 0x180003526 movdqa xmm4, xmm0 ; +0x19b, 0x18000352b movdqa xmm1, xmm0 ; +0x19f, 0x18000352f pand xmm1, xmm7 ; +0x1a3, 0x180003533 movdqa xmm2, xmm0 ; +0x1a7, 0x180003537 cvtdq2ps xmm6, xmm1 ; +0x1ab, 0x18000353b movd xmm1, r14d ; +0x1ae, 0x18000353e psrad xmm2, xmm1 ; +0x1b3, 0x180003543 movdqa xmm1, xmm4 ; +0x1b7, 0x180003547 mulps xmm6, xmm9 ; +0x1bb, 0x18000354b pand xmm2, xmm7 ; +0x1bf, 0x18000354f movd xmm0, r15d ; +0x1c3, 0x180003553 psrad xmm1, xmm0 ; +0x1c8, 0x180003558 cvtdq2ps xmm5, xmm2 ; +0x1cc, 0x18000355c pand xmm1, xmm7 ; +0x1cf, 0x18000355f movd xmm0, r12d ; +0x1d3, 0x180003563 cvtdq2ps xmm3, xmm1 ; +0x1d8, 0x180003568 psrad xmm4, xmm0 ; +0x1db, 0x18000356b addps xmm6, xmm8 ; +0x1df, 0x18000356f mulps xmm5, xmm9 ; +0x1e3, 0x180003573 pand xmm4, xmm7 ; +0x1e7, 0x180003577 mulps xmm3, xmm9 ; +0x1eb, 0x18000357b cvtdq2ps xmm2, xmm4 ; +0x1ef, 0x18000357f movaps xmm0, xmm6 ; +0x1f2, 0x180003582 addps xmm5, xmm8 ; +0x1f5, 0x180003585 addps xmm3, xmm8 ; +0x1f9, 0x180003589 mulps xmm2, xmm9 ; +0x1fd, 0x18000358d movaps xmm1, xmm5 ; +0x201, 0x180003591 addps xmm2, xmm8 ; +0x204, 0x180003594 unpcklps xmm0, xmm3 ; +0x208, 0x180003598 addps xmm0, xmmword ptr [rdi] ; +0x20b, 0x18000359b unpckhps xmm6, xmm3 ; +0x20e, 0x18000359e unpcklps xmm1, xmm2 ; +0x211, 0x1800035a1 movups xmmword ptr [rdi], xmm0 ; +0x214, 0x1800035a4 addps xmm1, xmmword ptr [rbx] ; +0x217, 0x1800035a7 unpckhps xmm5, xmm2 ; +0x21a, 0x1800035aa movups xmmword ptr [rbx], xmm1 ; +0x21d, 0x1800035ad addps xmm6, xmmword ptr [rdi+10h] ; +0x220, 0x1800035b0 movups xmmword ptr [rdi+10h], xmm6 ; +0x224, 0x1800035b4 add rdi, 20h ; ' ' ; +0x228, 0x1800035b8 addps xmm5, xmmword ptr [rbx+10h] ; +0x22c, 0x1800035bc movups xmmword ptr [rbx+10h], xmm5 ; +0x230, 0x1800035c0 add rbx, 20h ; ' ' ; +0x234, 0x1800035c4 sub esi, 1 ; +0x238, 0x1800035c8 jnz loc_180003520 ; +0x23b, 0x1800035cb mov r13, [rsp+0C8h+arg_8] ; +0x241, 0x1800035d1 mov r12, [rsp+0C8h+arg_0] ; +0x249, 0x1800035d9 jmp loc_1800036D9 ; +0x251, 0x1800035e1 sar esi, 1; jumptable 000000018000341D case 8 ; +0x256, 0x1800035e6 jz loc_1800036D9 ; +0x258, 0x1800035e8 mov r14, [rsp+0C8h+arg_20] ; +0x25e, 0x1800035ee nop word ptr [rax+rax+00000000h] ; +0x266, 0x1800035f6 lea r9, [rsp+0C8h+var_98] ; +0x270, 0x180003600 mov rdx, r14 ; +0x275, 0x180003605 lea r8, [rsp+0C8h+var_A8] ; +0x278, 0x180003608 mov rcx, rbp ; +0x27d, 0x18000360d call sub_180002830 ; +0x280, 0x180003610 lea r9, [rsp+0C8h+var_78] ; +0x285, 0x180003615 mov rdx, r14 ; +0x28a, 0x18000361a lea r8, [rsp+0C8h+var_88] ; +0x28d, 0x18000361d mov rcx, rbp ; +0x292, 0x180003622 call sub_180002830 ; +0x295, 0x180003625 movdqa xmm0, [rsp+0C8h+var_A8] ; +0x29a, 0x18000362a movdqa xmm2, [rsp+0C8h+var_88] ; +0x2a0, 0x180003630 pand xmm0, xmm7 ; +0x2a6, 0x180003636 movdqa xmm1, [rsp+0C8h+var_98] ; +0x2aa, 0x18000363a pand xmm2, xmm7 ; +0x2b0, 0x180003640 movdqa xmm3, [rsp+0C8h+var_78] ; +0x2b4, 0x180003644 pand xmm1, xmm7 ; +0x2ba, 0x18000364a cvtdq2ps xmm6, xmm0 ; +0x2be, 0x18000364e cvtdq2ps xmm5, xmm2 ; +0x2c1, 0x180003651 cvtdq2ps xmm4, xmm1 ; +0x2c4, 0x180003654 movdqa [rsp+0C8h+var_88], xmm2 ; +0x2c7, 0x180003657 pand xmm3, xmm7 ; +0x2cd, 0x18000365d mulps xmm6, xmm9 ; +0x2d1, 0x180003661 mulps xmm5, xmm9 ; +0x2d5, 0x180003665 movdqa [rsp+0C8h+var_A8], xmm0 ; +0x2d9, 0x180003669 addps xmm6, xmm8 ; +0x2df, 0x18000366f movdqa [rsp+0C8h+var_98], xmm1 ; +0x2e3, 0x180003673 cvtdq2ps xmm2, xmm3 ; +0x2e9, 0x180003679 addps xmm5, xmm8 ; +0x2ec, 0x18000367c mulps xmm4, xmm9 ; +0x2f0, 0x180003680 movaps xmm0, xmm6 ; +0x2f4, 0x180003684 mulps xmm2, xmm9 ; +0x2f7, 0x180003687 movdqa [rsp+0C8h+var_78], xmm3 ; +0x2fb, 0x18000368b movaps xmm1, xmm5 ; +0x301, 0x180003691 addps xmm4, xmm8 ; +0x304, 0x180003694 addps xmm2, xmm8 ; +0x308, 0x180003698 shufps xmm0, xmm4, 88h ; +0x30c, 0x18000369c addps xmm0, xmmword ptr [rdi] ; +0x310, 0x1800036a0 shufps xmm1, xmm2, 88h ; +0x313, 0x1800036a3 addps xmm1, xmmword ptr [rdi+10h] ; +0x317, 0x1800036a7 shufps xmm6, xmm4, 0DDh ; +0x31b, 0x1800036ab shufps xmm5, xmm2, 0DDh ; +0x31f, 0x1800036af movups xmmword ptr [rdi], xmm0 ; +0x323, 0x1800036b3 movups xmmword ptr [rdi+10h], xmm1 ; +0x326, 0x1800036b6 add rdi, 20h ; ' ' ; +0x32a, 0x1800036ba addps xmm6, xmmword ptr [rbx] ; +0x32e, 0x1800036be addps xmm5, xmmword ptr [rbx+10h] ; +0x331, 0x1800036c1 movups xmmword ptr [rbx], xmm6 ; +0x335, 0x1800036c5 movups xmmword ptr [rbx+10h], xmm5 ; +0x338, 0x1800036c8 add rbx, 20h ; ' ' ; +0x33c, 0x1800036cc sub esi, 1 ; +0x340, 0x1800036d0 jnz loc_180003600 ; +0x343, 0x1800036d3 mov r15, [rsp+0C8h+arg_10] ; +0x349, 0x1800036d9 movaps xmm6, [rsp+0C8h+var_38] ; +0x351, 0x1800036e1 movaps xmm7, [rsp+0C8h+var_48]; jumptable 000000018000341D default case ; +0x359, 0x1800036e9 xor eax, eax ; +0x361, 0x1800036f1 movaps xmm8, [rsp+0C8h+var_58] ; +0x363, 0x1800036f3 movaps xmm9, [rsp+0C8h+var_68] ; +0x369, 0x1800036f9 add rsp, 0A0h ; +0x36f, 0x1800036ff pop r14 ; +0x376, 0x180003706 pop rdi ; +0x378, 0x180003708 pop rsi ; +0x379, 0x180003709 pop rbp ; +0x37a, 0x18000370a pop rbx ; +0x37b, 0x18000370b retn ; +0x37c, 0x18000370c align 10h ; +0x37d, 0x18000370d dd offset loc_18000341F - 180000000h; jump table for switch statement ; +0x380, 0x180003710