; ; sub_180004520 from 0x180004520 to 0x180004fb9 (2713 bytes) ; ; 5 xrefs: ; > sub_180003D30 @ 0x180003ea2 ; > sub_180005520 @ 0x180005e6b ; > @ 0x18017d694 ; > @ 0x18017d6f0 ; > @ 0x1801f627c ; ; 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, 0x180004520 push rbp ; +0x2, 0x180004522 push r12 ; +0x3, 0x180004523 push r15 ; +0x5, 0x180004525 sub rsp, 0A8h ; +0x7, 0x180004527 movsxd r10, dword ptr [rsp+0C8h+arg_20] ; +0xe, 0x18000452e mov rbp, r9 ; +0x16, 0x180004536 mov rax, [rcx+10h] ; +0x19, 0x180004539 mov r12, r8 ; +0x1d, 0x18000453d movsxd r15, dword ptr [rsp+0C8h+arg_30] ; +0x20, 0x180004540 mov r11, rdx ; +0x28, 0x180004548 lea rbx, [rax+r10*4] ; +0x2b, 0x18000454b movsxd r10, dword ptr [rsp+0C8h+arg_28] ; +0x2f, 0x18000454f mov rax, [rcx+8] ; +0x37, 0x180004557 lea r10, [rax+r10*4] ; +0x3b, 0x18000455b cmp r15d, 1 ; +0x3f, 0x18000455f jnz short loc_1800045B5 ; +0x43, 0x180004563 mov eax, [rsp+0C8h+arg_50] ; +0x45, 0x180004565 mov r9, rbx ; +0x4c, 0x18000456c mov [rsp+0C8h+var_88], eax ; +0x4f, 0x18000456f mov r8, rbp ; +0x53, 0x180004573 mov eax, [rsp+0C8h+arg_48] ; +0x56, 0x180004576 mov rdx, r12 ; +0x5d, 0x18000457d mov [rsp+0C8h+var_90], eax ; +0x60, 0x180004580 mov rcx, r11 ; +0x64, 0x180004584 mov eax, [rsp+0C8h+arg_40] ; +0x67, 0x180004587 mov [rsp+0C8h+var_98], eax ; +0x6e, 0x18000458e mov eax, [rsp+0C8h+arg_38] ; +0x72, 0x180004592 mov [rsp+0C8h+var_A0], eax ; +0x79, 0x180004599 mov [rsp+0C8h+var_A8], r10 ; +0x7d, 0x18000459d call sub_180004FC0 ; +0x82, 0x1800045a2 add rsp, 0A8h ; +0x87, 0x1800045a7 pop r15 ; +0x8e, 0x1800045ae pop r12 ; +0x90, 0x1800045b0 pop rbp ; +0x92, 0x1800045b2 pop rbx ; +0x93, 0x1800045b3 retn ; +0x94, 0x1800045b4 cmp r15d, 2 ; +0x95, 0x1800045b5 jnz short loc_1800045FF ; +0x99, 0x1800045b9 lea rcx, [r10+1000h] ; +0x9b, 0x1800045bb lea rdx, [rbx+800h] ; +0xa2, 0x1800045c2 mov r9, rbx ; +0xa9, 0x1800045c9 mov r8, rbp ; +0xac, 0x1800045cc mov [rsp+0C8h+arg_30], rcx ; +0xaf, 0x1800045cf mov rcx, r11 ; +0xb7, 0x1800045d7 mov [rsp+0C8h+arg_28], r10 ; +0xba, 0x1800045da mov [rsp+0C8h+arg_20], rdx ; +0xc2, 0x1800045e2 mov rdx, r12 ; +0xca, 0x1800045ea add rsp, 0A8h ; +0xcd, 0x1800045ed pop r15 ; +0xd4, 0x1800045f4 pop r12 ; +0xd6, 0x1800045f6 pop rbp ; +0xd8, 0x1800045f8 pop rbx ; +0xd9, 0x1800045f9 jmp sub_180005220 ; +0xda, 0x1800045fa mov r9d, [rsp+0C8h+arg_38] ; +0xdf, 0x1800045ff mov rdx, r15 ; +0xe7, 0x180004607 mov [rsp+0C8h+arg_8], rsi ; +0xea, 0x18000460a mov [rsp+0C8h+arg_10], rdi ; +0xf2, 0x180004612 mov [rsp+0C8h+arg_18], r13 ; +0xfa, 0x18000461a mov r13d, r9d ; +0x102, 0x180004622 sar r13d, 2 ; +0x105, 0x180004625 mov [rsp+0C8h+var_28], r14 ; +0x109, 0x180004629 test r13d, r13d ; +0x111, 0x180004631 jz loc_1800047D1 ; +0x114, 0x180004634 mov eax, r15d ; +0x11a, 0x18000463a mov ecx, r15d ; +0x11d, 0x18000463d sar eax, 2 ; +0x120, 0x180004640 and ecx, 3 ; +0x123, 0x180004643 mov dword ptr [rsp+0C8h+arg_28], eax ; +0x126, 0x180004646 lea eax, ds:0[r15*4] ; +0x12d, 0x18000464d mov r15d, dword ptr [rsp+0C8h+arg_28] ; +0x135, 0x180004655 cdqe ; +0x13d, 0x18000465d shl rax, 2 ; +0x13f, 0x18000465f mov [rsp+0C8h+arg_0], rax ; +0x143, 0x180004663 mov dword ptr [rsp+0C8h+arg_20], ecx ; +0x14b, 0x18000466b sub rbx, 10h ; +0x152, 0x180004672 xor r8d, r8d ; +0x156, 0x180004676 mov edi, r15d ; +0x159, 0x180004679 test r15d, r15d ; +0x15c, 0x18000467c jz loc_180004721 ; +0x15f, 0x18000467f mov rsi, rdx ; +0x165, 0x180004685 lea rax, [rdx+rdx*2] ; +0x168, 0x180004688 neg rsi ; +0x16c, 0x18000468c lea r9, [r11+rax*4] ; +0x16f, 0x18000468f imul r14, rdx, -0Ch ; +0x173, 0x180004693 lea rcx, [rbx+1000h] ; +0x177, 0x180004697 xchg ax, ax ; +0x17e, 0x18000469e movups xmm0, xmmword ptr [rcx-800h] ; +0x180, 0x1800046a0 lea rax, [r8+rdx] ; +0x187, 0x1800046a7 add r8, 4 ; +0x18b, 0x1800046ab lea r9, [r9+10h] ; +0x18f, 0x1800046af movups xmm1, xmmword ptr [rcx+800h] ; +0x193, 0x1800046b3 movups xmm4, xmmword ptr [rcx-1000h] ; +0x19a, 0x1800046ba movups xmm2, xmmword ptr [rcx] ; +0x1a1, 0x1800046c1 lea rcx, [rcx+2000h] ; +0x1a4, 0x1800046c4 movaps xmm3, xmm4 ; +0x1ab, 0x1800046cb shufps xmm4, xmm0, 0EEh ; +0x1ae, 0x1800046ce shufps xmm3, xmm0, 44h ; 'D' ; +0x1b2, 0x1800046d2 movaps xmm0, xmm2 ; +0x1b6, 0x1800046d6 shufps xmm0, xmm1, 44h ; 'D' ; +0x1b9, 0x1800046d9 shufps xmm2, xmm1, 0EEh ; +0x1bd, 0x1800046dd movaps xmm1, xmm3 ; +0x1c1, 0x1800046e1 shufps xmm1, xmm0, 88h ; +0x1c4, 0x1800046e4 shufps xmm3, xmm0, 0DDh ; +0x1c8, 0x1800046e8 movaps xmm0, xmm4 ; +0x1cc, 0x1800046ec shufps xmm4, xmm2, 0DDh ; +0x1cf, 0x1800046ef shufps xmm0, xmm2, 88h ; +0x1d3, 0x1800046f3 movups xmmword ptr [r14+r9-10h], xmm4 ; +0x1d7, 0x1800046f7 movups xmmword ptr [r11+rax*4], xmm0 ; +0x1dd, 0x1800046fd movups xmmword ptr [r9+rsi*4-10h], xmm3 ; +0x1e2, 0x180004702 movups xmmword ptr [r9-10h], xmm1 ; +0x1e8, 0x180004708 sub edi, 1 ; +0x1ed, 0x18000470d jnz short loc_1800046A0 ; +0x1f0, 0x180004710 mov ecx, dword ptr [rsp+0C8h+arg_20] ; +0x1f2, 0x180004712 mov rax, [rsp+0C8h+arg_0] ; +0x1f9, 0x180004719 mov esi, ecx ; +0x201, 0x180004721 test ecx, ecx ; +0x203, 0x180004723 jz loc_1800047B4 ; +0x205, 0x180004725 lea rcx, [r8+rdx*2] ; +0x20b, 0x18000472b mov rdi, r8 ; +0x20f, 0x18000472f add rcx, rdx ; +0x212, 0x180004732 shl rdi, 0Bh ; +0x215, 0x180004735 add rdi, rbx ; +0x219, 0x180004739 lea r9, [r11+rcx*4] ; +0x21c, 0x18000473c mov rcx, rdx ; +0x220, 0x180004740 neg rcx ; +0x223, 0x180004743 imul r14, rdx, -0Ch ; +0x226, 0x180004746 nop word ptr [rax+rax+00h] ; +0x22a, 0x18000474a lea rax, [r8+rdx] ; +0x230, 0x180004750 lea r9, [r9+4] ; +0x234, 0x180004754 lea r8, [r8+1] ; +0x238, 0x180004758 movups xmm2, xmmword ptr [rdi] ; +0x23c, 0x18000475c lea rdi, [rdi+800h] ; +0x23f, 0x18000475f movdqa xmm0, xmm2 ; +0x246, 0x180004766 movdqa xmm1, xmm2 ; +0x24a, 0x18000476a psrldq xmm0, 0Ch ; +0x24e, 0x18000476e movss dword ptr [r9+r14-4], xmm0 ; +0x253, 0x180004773 movdqa xmm0, xmm2 ; +0x25a, 0x18000477a psrldq xmm1, 8 ; +0x25e, 0x18000477e movss dword ptr [r11+rax*4], xmm1 ; +0x263, 0x180004783 psrldq xmm0, 4 ; +0x269, 0x180004789 movss dword ptr [r9+rcx*4-4], xmm0 ; +0x26e, 0x18000478e psrldq xmm2, 0 ; +0x275, 0x180004795 movss dword ptr [r9-4], xmm2 ; +0x27a, 0x18000479a sub esi, 1 ; +0x280, 0x1800047a0 jnz short loc_180004750 ; +0x283, 0x1800047a3 mov ecx, dword ptr [rsp+0C8h+arg_20] ; +0x285, 0x1800047a5 mov rax, [rsp+0C8h+arg_0] ; +0x28c, 0x1800047ac add r11, rax ; +0x294, 0x1800047b4 sub r13d, 1 ; +0x297, 0x1800047b7 jnz loc_180004672 ; +0x29b, 0x1800047bb mov r15d, dword ptr [rsp+0C8h+arg_30] ; +0x2a1, 0x1800047c1 mov r9d, [rsp+0C8h+arg_38] ; +0x2a9, 0x1800047c9 and r9d, 3 ; +0x2b1, 0x1800047d1 jz short loc_18000480C ; +0x2b5, 0x1800047d5 nop word ptr [rax+rax+00000000h] ; +0x2b7, 0x1800047d7 sub rbx, 4 ; +0x2c0, 0x1800047e0 mov r8d, r15d ; +0x2c4, 0x1800047e4 test r15d, r15d ; +0x2c7, 0x1800047e7 jz short loc_180004806 ; +0x2ca, 0x1800047ea mov rcx, rbx ; +0x2cc, 0x1800047ec nop ; +0x2cf, 0x1800047ef mov eax, [rcx] ; +0x2d0, 0x1800047f0 lea rcx, [rcx+800h] ; +0x2d2, 0x1800047f2 mov [r11], eax ; +0x2d9, 0x1800047f9 add r11, 4 ; +0x2dc, 0x1800047fc sub r8d, 1 ; +0x2e0, 0x180004800 jnz short loc_1800047F0 ; +0x2e4, 0x180004804 sub r9d, 1 ; +0x2e6, 0x180004806 jnz short loc_1800047E0 ; +0x2ea, 0x18000480a mov r9d, [rsp+0C8h+arg_40] ; +0x2ec, 0x18000480c mov ecx, r9d ; +0x2f4, 0x180004814 sar ecx, 2 ; +0x2f7, 0x180004817 movaps [rsp+0C8h+var_38], xmm6 ; +0x2fa, 0x18000481a movaps [rsp+0C8h+var_48], xmm7 ; +0x302, 0x180004822 mov dword ptr [rsp+0C8h+arg_20], ecx ; +0x30a, 0x18000482a test ecx, ecx ; +0x311, 0x180004831 jz loc_180004A6F ; +0x313, 0x180004833 mov r8d, r15d ; +0x319, 0x180004839 lea eax, ds:0[r15*4] ; +0x31c, 0x18000483c mov r13d, r15d ; +0x324, 0x180004844 sar r8d, 2 ; +0x327, 0x180004847 and r13d, 3 ; +0x32b, 0x18000484b movsxd r15, eax ; +0x32f, 0x18000484f shl r15, 2 ; +0x332, 0x180004852 mov [rsp+0C8h+var_68], r15 ; +0x336, 0x180004856 mov dword ptr [rsp+0C8h+arg_0], r8d ; +0x33b, 0x18000485b mov dword ptr [rsp+0C8h+arg_28], r13d ; +0x343, 0x180004863 nop dword ptr [rax+rax+00h] ; +0x34b, 0x18000486b movups xmm6, xmmword ptr [r12-10h] ; +0x350, 0x180004870 sub r12, 10h ; +0x356, 0x180004876 sub rbx, 10h ; +0x35a, 0x18000487a movups xmm7, xmmword ptr [rbp+0] ; +0x35e, 0x18000487e xor esi, esi ; +0x362, 0x180004882 test r8d, r8d ; +0x364, 0x180004884 jz loc_18000498A ; +0x367, 0x180004887 mov rcx, rdx ; +0x36d, 0x18000488d lea rax, [rdx+rdx*2] ; +0x370, 0x180004890 neg rcx ; +0x374, 0x180004894 lea r14, [r11+rax*4] ; +0x377, 0x180004897 imul r15, rdx, -0Ch ; +0x37b, 0x18000489b lea r9, [r10+2000h] ; +0x37f, 0x18000489f lea rdi, [rbx+1000h] ; +0x386, 0x1800048a6 nop dword ptr [rax] ; +0x38d, 0x1800048ad movups xmm0, xmmword ptr [rdi-1000h] ; +0x390, 0x1800048b0 lea rax, [rsi+rdx] ; +0x397, 0x1800048b7 add rsi, 4 ; +0x39b, 0x1800048bb movups xmm1, xmmword ptr [rdi-800h] ; +0x39f, 0x1800048bf movups xmm4, xmmword ptr [r9-2000h] ; +0x3a6, 0x1800048c6 movups xmm3, xmmword ptr [r9-1000h] ; +0x3ae, 0x1800048ce movups xmm5, xmmword ptr [rdi] ; +0x3b6, 0x1800048d6 movups xmm2, xmmword ptr [rdi+800h] ; +0x3b9, 0x1800048d9 add rdi, 2000h ; +0x3c0, 0x1800048e0 mulps xmm1, xmm6 ; +0x3c7, 0x1800048e7 mulps xmm0, xmm6 ; +0x3ca, 0x1800048ea mulps xmm2, xmm6 ; +0x3cd, 0x1800048ed shufps xmm1, xmm1, 1Bh ; +0x3d0, 0x1800048f0 shufps xmm0, xmm0, 1Bh ; +0x3d4, 0x1800048f4 mulps xmm4, xmm7 ; +0x3d8, 0x1800048f8 shufps xmm2, xmm2, 1Bh ; +0x3db, 0x1800048fb mulps xmm5, xmm6 ; +0x3df, 0x1800048ff addps xmm4, xmm0 ; +0x3e2, 0x180004902 mulps xmm3, xmm7 ; +0x3e5, 0x180004905 movups xmm0, xmmword ptr [r9] ; +0x3e8, 0x180004908 shufps xmm5, xmm5, 1Bh ; +0x3ec, 0x18000490c addps xmm3, xmm1 ; +0x3f0, 0x180004910 movaps xmm1, xmm7 ; +0x3f3, 0x180004913 mulps xmm1, xmm0 ; +0x3f6, 0x180004916 addps xmm5, xmm1 ; +0x3f9, 0x180004919 movups xmm1, xmmword ptr [r9+1000h] ; +0x3fc, 0x18000491c add r9, 4000h ; +0x404, 0x180004924 mulps xmm1, xmm7 ; +0x40b, 0x18000492b movaps xmm0, xmm5 ; +0x40e, 0x18000492e addps xmm1, xmm2 ; +0x411, 0x180004931 movaps xmm2, xmm4 ; +0x414, 0x180004934 shufps xmm2, xmm3, 44h ; 'D' ; +0x417, 0x180004937 shufps xmm4, xmm3, 0EEh ; +0x41b, 0x18000493b shufps xmm0, xmm1, 44h ; 'D' ; +0x41f, 0x18000493f shufps xmm5, xmm1, 0EEh ; +0x423, 0x180004943 movaps xmm1, xmm2 ; +0x427, 0x180004947 shufps xmm1, xmm0, 88h ; +0x42a, 0x18000494a movups xmmword ptr [r15+r14], xmm1 ; +0x42e, 0x18000494e shufps xmm2, xmm0, 0DDh ; +0x433, 0x180004953 movaps xmm0, xmm4 ; +0x437, 0x180004957 movups xmmword ptr [r11+rax*4], xmm2 ; +0x43a, 0x18000495a shufps xmm0, xmm5, 88h ; +0x43f, 0x18000495f movups xmmword ptr [r14+rcx*4], xmm0 ; +0x443, 0x180004963 shufps xmm4, xmm5, 0DDh ; +0x448, 0x180004968 movups xmmword ptr [r14], xmm4 ; +0x44c, 0x18000496c add r14, 10h ; +0x450, 0x180004970 sub r8d, 1 ; +0x454, 0x180004974 jnz loc_1800048B0 ; +0x458, 0x180004978 mov ecx, dword ptr [rsp+0C8h+arg_20] ; +0x45e, 0x18000497e mov r15, [rsp+0C8h+var_68] ; +0x465, 0x180004985 mov r14d, r13d ; +0x46a, 0x18000498a test r13d, r13d ; +0x46d, 0x18000498d jz loc_180004A3C ; +0x470, 0x180004990 lea rcx, [rsi+rdx*2] ; +0x476, 0x180004996 mov r9, rsi ; +0x47a, 0x18000499a add rcx, rdx ; +0x47d, 0x18000499d shl r9, 0Ch ; +0x480, 0x1800049a0 mov rdi, rsi ; +0x484, 0x1800049a4 add r9, r10 ; +0x487, 0x1800049a7 shl rdi, 0Bh ; +0x48a, 0x1800049aa add rdi, rbx ; +0x48e, 0x1800049ae lea r8, [r11+rcx*4] ; +0x491, 0x1800049b1 mov rcx, rdx ; +0x495, 0x1800049b5 neg rcx ; +0x498, 0x1800049b8 imul r13, rdx, -0Ch ; +0x49b, 0x1800049bb nop ; +0x49f, 0x1800049bf movups xmm0, xmmword ptr [rdi] ; +0x4a0, 0x1800049c0 lea rax, [rsi+rdx] ; +0x4a3, 0x1800049c3 inc rsi ; +0x4a7, 0x1800049c7 movaps xmm2, xmm6 ; +0x4aa, 0x1800049ca add rdi, 800h ; +0x4ad, 0x1800049cd mulps xmm2, xmm0 ; +0x4b4, 0x1800049d4 movups xmm0, xmmword ptr [r9] ; +0x4b7, 0x1800049d7 add r9, 1000h ; +0x4bb, 0x1800049db mulps xmm0, xmm7 ; +0x4c2, 0x1800049e2 shufps xmm2, xmm2, 1Bh ; +0x4c5, 0x1800049e5 addps xmm2, xmm0 ; +0x4c9, 0x1800049e9 movdqa xmm0, xmm2 ; +0x4cc, 0x1800049ec movdqa xmm1, xmm2 ; +0x4d0, 0x1800049f0 psrldq xmm0, 0 ; +0x4d4, 0x1800049f4 movss dword ptr [r8+r13], xmm0 ; +0x4d9, 0x1800049f9 movdqa xmm0, xmm2 ; +0x4df, 0x1800049ff psrldq xmm1, 4 ; +0x4e3, 0x180004a03 movss dword ptr [r11+rax*4], xmm1 ; +0x4e8, 0x180004a08 psrldq xmm0, 8 ; +0x4ee, 0x180004a0e movss dword ptr [r8+rcx*4], xmm0 ; +0x4f3, 0x180004a13 psrldq xmm2, 0Ch ; +0x4f9, 0x180004a19 movss dword ptr [r8], xmm2 ; +0x4fe, 0x180004a1e add r8, 4 ; +0x503, 0x180004a23 sub r14d, 1 ; +0x507, 0x180004a27 jnz short loc_1800049C0 ; +0x50b, 0x180004a2b mov ecx, dword ptr [rsp+0C8h+arg_20] ; +0x50d, 0x180004a2d mov r13d, dword ptr [rsp+0C8h+arg_28] ; +0x514, 0x180004a34 mov r8d, dword ptr [rsp+0C8h+arg_0] ; +0x51c, 0x180004a3c add r11, r15 ; +0x524, 0x180004a44 add r10, 10h ; +0x527, 0x180004a47 add rbp, 10h ; +0x52b, 0x180004a4b sub ecx, 1 ; +0x52f, 0x180004a4f mov dword ptr [rsp+0C8h+arg_20], ecx ; +0x532, 0x180004a52 jnz loc_180004870 ; +0x539, 0x180004a59 mov r15d, dword ptr [rsp+0C8h+arg_30] ; +0x53f, 0x180004a5f mov r9d, [rsp+0C8h+arg_40] ; +0x547, 0x180004a67 and r9d, 3 ; +0x54f, 0x180004a6f jz loc_180004AEC ; +0x553, 0x180004a73 nop dword ptr [rax+00000000h] ; +0x559, 0x180004a79 movss xmm2, dword ptr [r12-4] ; +0x560, 0x180004a80 sub r12, 4 ; +0x567, 0x180004a87 movss xmm3, dword ptr [rbp+0] ; +0x56b, 0x180004a8b sub rbx, 4 ; +0x570, 0x180004a90 mov r8d, r15d ; +0x574, 0x180004a94 test r15d, r15d ; +0x577, 0x180004a97 jz short loc_180004ADE ; +0x57a, 0x180004a9a mov rax, r10 ; +0x57c, 0x180004a9c mov rcx, rbx ; +0x57f, 0x180004a9f nop dword ptr [rax+00h] ; +0x582, 0x180004aa2 nop word ptr [rax+rax+00000000h] ; +0x586, 0x180004aa6 movaps xmm1, xmm3 ; +0x590, 0x180004ab0 movaps xmm0, xmm2 ; +0x593, 0x180004ab3 mulss xmm1, dword ptr [rax] ; +0x596, 0x180004ab6 add rax, 1000h ; +0x59a, 0x180004aba mulss xmm0, dword ptr [rcx] ; +0x5a0, 0x180004ac0 add rcx, 800h ; +0x5a4, 0x180004ac4 addss xmm1, xmm0 ; +0x5ab, 0x180004acb movss dword ptr [r11], xmm1 ; +0x5af, 0x180004acf add r11, 4 ; +0x5b4, 0x180004ad4 sub r8d, 1 ; +0x5b8, 0x180004ad8 jnz short loc_180004AB0 ; +0x5bc, 0x180004adc add r10, 4 ; +0x5be, 0x180004ade add rbp, 4 ; +0x5c2, 0x180004ae2 sub r9d, 1 ; +0x5c6, 0x180004ae6 jnz short loc_180004A80 ; +0x5ca, 0x180004aea mov r9d, [rsp+0C8h+arg_48] ; +0x5cc, 0x180004aec mov r8d, r9d ; +0x5d4, 0x180004af4 sar r8d, 2 ; +0x5d7, 0x180004af7 mov dword ptr [rsp+0C8h+arg_20], r8d ; +0x5db, 0x180004afb test r8d, r8d ; +0x5e3, 0x180004b03 jz loc_180004D65 ; +0x5e6, 0x180004b06 mov eax, r15d ; +0x5ec, 0x180004b0c movaps [rsp+0C8h+var_58], xmm8 ; +0x5ef, 0x180004b0f sar eax, 2 ; +0x5f5, 0x180004b15 mov r13d, r15d ; +0x5f8, 0x180004b18 mov dword ptr [rsp+0C8h+arg_28], eax ; +0x5fb, 0x180004b1b and r13d, 3 ; +0x602, 0x180004b22 lea eax, ds:0[r15*4] ; +0x606, 0x180004b26 mov dword ptr [rsp+0C8h+arg_0], r13d ; +0x60e, 0x180004b2e mov r15d, dword ptr [rsp+0C8h+arg_28] ; +0x616, 0x180004b36 cdqe ; +0x61e, 0x180004b3e shl rax, 2 ; +0x620, 0x180004b40 mov [rsp+0C8h+var_68], rax ; +0x624, 0x180004b44 nop dword ptr [rax+00000000h] ; +0x629, 0x180004b49 movups xmm7, xmmword ptr [r12-10h] ; +0x630, 0x180004b50 sub r12, 10h ; +0x636, 0x180004b56 sub r10, 10h ; +0x63a, 0x180004b5a movups xmm8, xmmword ptr [rbp+0] ; +0x63e, 0x180004b5e xor r9d, r9d ; +0x643, 0x180004b63 mov rcx, r15 ; +0x646, 0x180004b66 shufps xmm7, xmm7, 1Bh ; +0x649, 0x180004b69 test r15d, r15d ; +0x64d, 0x180004b6d jz loc_180004C72 ; +0x650, 0x180004b70 mov rax, rdx ; +0x656, 0x180004b76 lea r8, [r11+rdx*8] ; +0x659, 0x180004b79 mov r14, rdx ; +0x65d, 0x180004b7d lea rdi, [r10+2000h] ; +0x660, 0x180004b80 neg rax ; +0x667, 0x180004b87 lea rsi, [rbx+1000h] ; +0x66a, 0x180004b8a neg r14 ; +0x671, 0x180004b91 mov r9, rcx ; +0x674, 0x180004b94 shl r9, 2 ; +0x677, 0x180004b97 nop dword ptr [rax+rax+00h] ; +0x67b, 0x180004b9b movups xmm0, xmmword ptr [rdi-2000h] ; +0x680, 0x180004ba0 movups xmm1, xmmword ptr [rdi-1000h] ; +0x687, 0x180004ba7 movups xmm6, xmmword ptr [rsi-1000h] ; +0x68e, 0x180004bae movups xmm3, xmmword ptr [rsi-800h] ; +0x695, 0x180004bb5 movups xmm2, xmmword ptr [rdi] ; +0x69c, 0x180004bbc movups xmm5, xmmword ptr [rdi+1000h] ; +0x69f, 0x180004bbf add rdi, 4000h ; +0x6a6, 0x180004bc6 shufps xmm0, xmm0, 1Bh ; +0x6ad, 0x180004bcd movaps xmm4, xmm7 ; +0x6b1, 0x180004bd1 mulps xmm0, xmm8 ; +0x6b4, 0x180004bd4 shufps xmm1, xmm1, 1Bh ; +0x6b8, 0x180004bd8 mulps xmm1, xmm8 ; +0x6bc, 0x180004bdc shufps xmm2, xmm2, 1Bh ; +0x6c0, 0x180004be0 mulps xmm2, xmm8 ; +0x6c4, 0x180004be4 mulps xmm6, xmm7 ; +0x6c8, 0x180004be8 mulps xmm3, xmm7 ; +0x6cb, 0x180004beb shufps xmm5, xmm5, 1Bh ; +0x6ce, 0x180004bee subps xmm6, xmm0 ; +0x6d2, 0x180004bf2 mulps xmm5, xmm8 ; +0x6d5, 0x180004bf5 movups xmm0, xmmword ptr [rsi] ; +0x6d9, 0x180004bf9 subps xmm3, xmm1 ; +0x6dc, 0x180004bfc movups xmm1, xmmword ptr [rsi+800h] ; +0x6df, 0x180004bff add rsi, 2000h ; +0x6e6, 0x180004c06 mulps xmm4, xmm0 ; +0x6ed, 0x180004c0d mulps xmm1, xmm7 ; +0x6f0, 0x180004c10 subps xmm4, xmm2 ; +0x6f3, 0x180004c13 movaps xmm2, xmm6 ; +0x6f6, 0x180004c16 shufps xmm2, xmm3, 44h ; 'D' ; +0x6f9, 0x180004c19 subps xmm1, xmm5 ; +0x6fd, 0x180004c1d shufps xmm6, xmm3, 0EEh ; +0x700, 0x180004c20 movaps xmm0, xmm4 ; +0x704, 0x180004c24 shufps xmm0, xmm1, 44h ; 'D' ; +0x707, 0x180004c27 shufps xmm4, xmm1, 0EEh ; +0x70b, 0x180004c2b movaps xmm1, xmm2 ; +0x70f, 0x180004c2f shufps xmm1, xmm0, 88h ; +0x712, 0x180004c32 movups xmmword ptr [r8+r14*8], xmm1 ; +0x716, 0x180004c36 shufps xmm2, xmm0, 0DDh ; +0x71b, 0x180004c3b movaps xmm0, xmm6 ; +0x71f, 0x180004c3f movups xmmword ptr [r8+rax*4], xmm2 ; +0x722, 0x180004c42 shufps xmm0, xmm4, 88h ; +0x727, 0x180004c47 movups xmmword ptr [r8], xmm0 ; +0x72b, 0x180004c4b shufps xmm6, xmm4, 0DDh ; +0x72f, 0x180004c4f movups xmmword ptr [r8+rdx*4], xmm6 ; +0x733, 0x180004c53 add r8, 10h ; +0x738, 0x180004c58 sub ecx, 1 ; +0x73c, 0x180004c5c jnz loc_180004BA0 ; +0x73f, 0x180004c5f mov r8d, dword ptr [rsp+0C8h+arg_20] ; +0x745, 0x180004c65 mov rax, [rsp+0C8h+var_68] ; +0x74d, 0x180004c6d mov r14d, r13d ; +0x752, 0x180004c72 test r13d, r13d ; +0x755, 0x180004c75 jz loc_180004D32 ; +0x758, 0x180004c78 lea rcx, [r9+rdx*2] ; +0x75e, 0x180004c7e mov rdi, r9 ; +0x762, 0x180004c82 add rcx, rdx ; +0x765, 0x180004c85 shl rdi, 0Ch ; +0x768, 0x180004c88 mov rsi, r9 ; +0x76c, 0x180004c8c add rdi, r10 ; +0x76f, 0x180004c8f shl rsi, 0Bh ; +0x772, 0x180004c92 add rsi, rbx ; +0x776, 0x180004c96 lea r8, [r11+rcx*4] ; +0x779, 0x180004c99 mov rcx, rdx ; +0x77d, 0x180004c9d neg rcx ; +0x780, 0x180004ca0 imul r13, rdx, -0Ch ; +0x783, 0x180004ca3 nop word ptr [rax+rax+00000000h] ; +0x787, 0x180004ca7 movups xmm0, xmmword ptr [rsi] ; +0x790, 0x180004cb0 lea rax, [r9+rdx] ; +0x793, 0x180004cb3 inc r9 ; +0x797, 0x180004cb7 movups xmm1, xmmword ptr [rdi] ; +0x79a, 0x180004cba add rsi, 800h ; +0x79d, 0x180004cbd add rdi, 1000h ; +0x7a4, 0x180004cc4 movaps xmm2, xmm7 ; +0x7ab, 0x180004ccb mulps xmm2, xmm0 ; +0x7ae, 0x180004cce shufps xmm1, xmm1, 1Bh ; +0x7b1, 0x180004cd1 mulps xmm1, xmm8 ; +0x7b5, 0x180004cd5 subps xmm2, xmm1 ; +0x7b9, 0x180004cd9 movdqa xmm0, xmm2 ; +0x7bc, 0x180004cdc movdqa xmm1, xmm2 ; +0x7c0, 0x180004ce0 psrldq xmm0, 0 ; +0x7c4, 0x180004ce4 movss dword ptr [r8+r13], xmm0 ; +0x7c9, 0x180004ce9 movdqa xmm0, xmm2 ; +0x7cf, 0x180004cef psrldq xmm1, 4 ; +0x7d3, 0x180004cf3 movss dword ptr [r11+rax*4], xmm1 ; +0x7d8, 0x180004cf8 psrldq xmm0, 8 ; +0x7de, 0x180004cfe movss dword ptr [r8+rcx*4], xmm0 ; +0x7e3, 0x180004d03 psrldq xmm2, 0Ch ; +0x7e9, 0x180004d09 movss dword ptr [r8], xmm2 ; +0x7ee, 0x180004d0e add r8, 4 ; +0x7f3, 0x180004d13 sub r14d, 1 ; +0x7f7, 0x180004d17 jnz short loc_180004CB0 ; +0x7fb, 0x180004d1b mov r8d, dword ptr [rsp+0C8h+arg_20] ; +0x7fd, 0x180004d1d mov r13d, dword ptr [rsp+0C8h+arg_0] ; +0x805, 0x180004d25 mov rax, [rsp+0C8h+var_68] ; +0x80d, 0x180004d2d add r11, rax ; +0x812, 0x180004d32 add rbx, 10h ; +0x815, 0x180004d35 add rbp, 10h ; +0x819, 0x180004d39 sub r8d, 1 ; +0x81d, 0x180004d3d mov dword ptr [rsp+0C8h+arg_20], r8d ; +0x821, 0x180004d41 jnz loc_180004B50 ; +0x829, 0x180004d49 mov r15d, dword ptr [rsp+0C8h+arg_30] ; +0x82f, 0x180004d4f mov r9d, [rsp+0C8h+arg_48] ; +0x837, 0x180004d57 movaps xmm8, [rsp+0C8h+var_58] ; +0x83f, 0x180004d5f movaps xmm7, [rsp+0C8h+var_48] ; +0x845, 0x180004d65 movaps xmm6, [rsp+0C8h+var_38] ; +0x84d, 0x180004d6d and r9d, 3 ; +0x855, 0x180004d75 jz short loc_180004DDB ; +0x859, 0x180004d79 sub r12, r10 ; +0x85b, 0x180004d7b sub rbx, rbp ; +0x85e, 0x180004d7e movss xmm3, dword ptr [rbp+0] ; +0x861, 0x180004d81 mov rax, r10 ; +0x866, 0x180004d86 sub r10, 4 ; +0x869, 0x180004d89 mov r8d, r15d ; +0x86d, 0x180004d8d movss xmm2, dword ptr [rax+r12-4] ; +0x870, 0x180004d90 test r15d, r15d ; +0x877, 0x180004d97 jz short loc_180004DD1 ; +0x87a, 0x180004d9a mov rax, r10 ; +0x87c, 0x180004d9c lea rcx, [rbx+rbp] ; +0x87f, 0x180004d9f movaps xmm1, xmm2 ; +0x883, 0x180004da3 movaps xmm0, xmm3 ; +0x886, 0x180004da6 mulss xmm1, dword ptr [rcx] ; +0x889, 0x180004da9 add rcx, 800h ; +0x88d, 0x180004dad mulss xmm0, dword ptr [rax] ; +0x894, 0x180004db4 add rax, 1000h ; +0x898, 0x180004db8 subss xmm1, xmm0 ; +0x89e, 0x180004dbe movss dword ptr [r11], xmm1 ; +0x8a2, 0x180004dc2 add r11, 4 ; +0x8a7, 0x180004dc7 sub r8d, 1 ; +0x8ab, 0x180004dcb jnz short loc_180004DA3 ; +0x8af, 0x180004dcf add rbp, 4 ; +0x8b1, 0x180004dd1 sub r9d, 1 ; +0x8b5, 0x180004dd5 jnz short loc_180004D81 ; +0x8b9, 0x180004dd9 mov esi, [rsp+0C8h+arg_50] ; +0x8bb, 0x180004ddb mov ebp, esi ; +0x8c2, 0x180004de2 sar ebp, 2 ; +0x8c4, 0x180004de4 test ebp, ebp ; +0x8c7, 0x180004de7 jz loc_180004F4E ; +0x8c9, 0x180004de9 movaps xmm5, cs:xmmword_180144650 ; +0x8cf, 0x180004def lea eax, ds:0[r15*4] ; +0x8d6, 0x180004df6 mov r13d, r15d ; +0x8de, 0x180004dfe movsxd r12, eax ; +0x8e1, 0x180004e01 mov r14d, r15d ; +0x8e4, 0x180004e04 sar r13d, 2 ; +0x8e7, 0x180004e07 and r14d, 3 ; +0x8eb, 0x180004e0b shl r12, 2 ; +0x8ef, 0x180004e0f sub r10, 10h ; +0x8f3, 0x180004e13 mov r8d, r13d ; +0x8f7, 0x180004e17 xor edi, edi ; +0x8fa, 0x180004e1a test r13d, r13d ; +0x8fc, 0x180004e1c jz loc_180004EB8 ; +0x8ff, 0x180004e1f mov r9, rdx ; +0x905, 0x180004e25 lea rax, [r11+rdx*8] ; +0x908, 0x180004e28 mov rbx, rdx ; +0x90c, 0x180004e2c lea rcx, [r10+2000h] ; +0x90f, 0x180004e2f neg r9 ; +0x916, 0x180004e36 neg rbx ; +0x919, 0x180004e39 mov edi, r8d ; +0x91c, 0x180004e3c shl rdi, 2 ; +0x91f, 0x180004e3f lea rax, [rax+10h] ; +0x923, 0x180004e43 movups xmm4, xmmword ptr [rcx-2000h] ; +0x927, 0x180004e47 movups xmm0, xmmword ptr [rcx-1000h] ; +0x92e, 0x180004e4e mulps xmm4, xmm5 ; +0x935, 0x180004e55 mulps xmm0, xmm5 ; +0x938, 0x180004e58 movups xmm3, xmmword ptr [rcx] ; +0x93b, 0x180004e5b movups xmm1, xmmword ptr [rcx+1000h] ; +0x93e, 0x180004e5e lea rcx, [rcx+4000h] ; +0x945, 0x180004e65 mulps xmm3, xmm5 ; +0x94c, 0x180004e6c movaps xmm2, xmm4 ; +0x94f, 0x180004e6f shufps xmm2, xmm0, 44h ; 'D' ; +0x952, 0x180004e72 shufps xmm4, xmm0, 0EEh ; +0x956, 0x180004e76 mulps xmm1, xmm5 ; +0x95a, 0x180004e7a movaps xmm0, xmm3 ; +0x95d, 0x180004e7d shufps xmm0, xmm1, 44h ; 'D' ; +0x960, 0x180004e80 shufps xmm3, xmm1, 0EEh ; +0x964, 0x180004e84 movaps xmm1, xmm2 ; +0x968, 0x180004e88 shufps xmm1, xmm0, 88h ; +0x96b, 0x180004e8b shufps xmm2, xmm0, 0DDh ; +0x96f, 0x180004e8f movaps xmm0, xmm4 ; +0x973, 0x180004e93 shufps xmm4, xmm3, 0DDh ; +0x976, 0x180004e96 shufps xmm0, xmm3, 88h ; +0x97a, 0x180004e9a movups xmmword ptr [rax+rbx*8-10h], xmm4 ; +0x97e, 0x180004e9e movups xmmword ptr [rax+r9*4-10h], xmm0 ; +0x983, 0x180004ea3 movups xmmword ptr [rax-10h], xmm2 ; +0x989, 0x180004ea9 movups xmmword ptr [rax+rdx*4-10h], xmm1 ; +0x98d, 0x180004ead sub r8d, 1 ; +0x992, 0x180004eb2 jnz short loc_180004E43 ; +0x996, 0x180004eb6 mov ebx, r14d ; +0x998, 0x180004eb8 test r14d, r14d ; +0x99b, 0x180004ebb jz loc_180004F42 ; +0x99e, 0x180004ebe lea rcx, [rdx+rdx] ; +0x9a4, 0x180004ec4 mov r9, rdi ; +0x9a8, 0x180004ec8 lea rax, [rdi+rcx] ; +0x9ab, 0x180004ecb shl r9, 0Ch ; +0x9af, 0x180004ecf lea r8, [r11+rax*4] ; +0x9b3, 0x180004ed3 add r9, r10 ; +0x9b7, 0x180004ed7 mov rax, rdx ; +0x9ba, 0x180004eda sub rax, rcx ; +0x9bd, 0x180004edd mov rcx, rdx ; +0x9c0, 0x180004ee0 neg rcx ; +0x9c3, 0x180004ee3 nop word ptr [rax+rax+00000000h] ; +0x9c6, 0x180004ee6 lea r8, [r8+4] ; +0x9d0, 0x180004ef0 movups xmm2, xmmword ptr [r9] ; +0x9d4, 0x180004ef4 lea r9, [r9+1000h] ; +0x9d8, 0x180004ef8 mulps xmm2, xmm5 ; +0x9df, 0x180004eff movdqa xmm0, xmm2 ; +0x9e2, 0x180004f02 movdqa xmm1, xmm2 ; +0x9e6, 0x180004f06 psrldq xmm0, 0Ch ; +0x9ea, 0x180004f0a movss dword ptr [r8+rcx*8-4], xmm0 ; +0x9ef, 0x180004f0f movdqa xmm0, xmm2 ; +0x9f6, 0x180004f16 psrldq xmm1, 8 ; +0x9fa, 0x180004f1a movss dword ptr [r8+rax*4-4], xmm1 ; +0x9ff, 0x180004f1f psrldq xmm0, 4 ; +0xa06, 0x180004f26 movss dword ptr [r8-4], xmm0 ; +0xa0b, 0x180004f2b psrldq xmm2, 0 ; +0xa11, 0x180004f31 movss dword ptr [r8+rdx*4-4], xmm2 ; +0xa16, 0x180004f36 sub ebx, 1 ; +0xa1d, 0x180004f3d jnz short loc_180004EF0 ; +0xa20, 0x180004f40 add r11, r12 ; +0xa22, 0x180004f42 sub ebp, 1 ; +0xa25, 0x180004f45 jnz loc_180004E13 ; +0xa28, 0x180004f48 mov r14, [rsp+0C8h+var_28] ; +0xa2e, 0x180004f4e mov r13, [rsp+0C8h+arg_18] ; +0xa36, 0x180004f56 mov rdi, [rsp+0C8h+arg_10] ; +0xa3e, 0x180004f5e and esi, 3 ; +0xa46, 0x180004f66 jz short loc_180004FA3 ; +0xa49, 0x180004f69 movss xmm1, dword ptr cs:xmmword_180144610 ; +0xa4b, 0x180004f6b sub r10, 4 ; +0xa53, 0x180004f73 mov ecx, r15d ; +0xa57, 0x180004f77 test r15d, r15d ; +0xa5a, 0x180004f7a jz short loc_180004F9E ; +0xa5d, 0x180004f7d mov rax, r10 ; +0xa5f, 0x180004f7f movss xmm0, dword ptr [rax] ; +0xa62, 0x180004f82 lea rax, [rax+1000h] ; +0xa66, 0x180004f86 xorps xmm0, xmm1 ; +0xa6d, 0x180004f8d movss dword ptr [r11], xmm0 ; +0xa70, 0x180004f90 add r11, 4 ; +0xa75, 0x180004f95 sub ecx, 1 ; +0xa79, 0x180004f99 jnz short loc_180004F82 ; +0xa7c, 0x180004f9c sub esi, 1 ; +0xa7e, 0x180004f9e jnz short loc_180004F73 ; +0xa81, 0x180004fa1 mov rsi, [rsp+0C8h+arg_8] ; +0xa83, 0x180004fa3 add rsp, 0A8h ; +0xa8b, 0x180004fab pop r15 ; +0xa92, 0x180004fb2 pop r12 ; +0xa94, 0x180004fb4 pop rbp ; +0xa96, 0x180004fb6 pop rbx ; +0xa97, 0x180004fb7 retn ; +0xa98, 0x180004fb8