; ; sub_180005520 from 0x180005520 to 0x180005e7e (2398 bytes) ; ; 5 xrefs: ; > sub_180003D30 @ 0x180003e52 ; > @ 0x18017d730 ; > @ 0x18017d75c ; > @ 0x18017d76c ; > @ 0x1801f62dc ; ; 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, 0x180005520 push rsi ; +0x2, 0x180005522 push rdi ; +0x3, 0x180005523 sub rsp, 0C0h ; +0x4, 0x180005524 mov rax, [rcx+10h] ; +0xb, 0x18000552b mov r11, rdx ; +0xf, 0x18000552f movsxd rdx, [rsp+0D8h+arg_20] ; +0x12, 0x180005532 mov rbx, r9 ; +0x1a, 0x18000553a movsxd rsi, [rsp+0D8h+arg_30] ; +0x1d, 0x18000553d mov rdi, r8 ; +0x25, 0x180005545 movsxd r8, [rsp+0D8h+arg_28] ; +0x28, 0x180005548 lea r9, [rax+rdx*4] ; +0x30, 0x180005550 mov rax, [rcx+8] ; +0x34, 0x180005554 lea r10, [rax+r8*4] ; +0x38, 0x180005558 mov [rsp+0D8h+var_78], r10 ; +0x3c, 0x18000555c cmp esi, 1 ; +0x41, 0x180005561 jnz short loc_1800055B3 ; +0x44, 0x180005564 mov eax, [rsp+0D8h+arg_50] ; +0x46, 0x180005566 mov r8, rbx ; +0x4d, 0x18000556d mov [rsp+0D8h+var_98], eax ; +0x50, 0x180005570 mov rdx, rdi ; +0x54, 0x180005574 mov eax, [rsp+0D8h+arg_48] ; +0x57, 0x180005577 mov rcx, r11 ; +0x5e, 0x18000557e mov [rsp+0D8h+var_A0], eax ; +0x61, 0x180005581 mov eax, [rsp+0D8h+arg_40] ; +0x65, 0x180005585 mov dword ptr [rsp+0D8h+var_A8], eax ; +0x6c, 0x18000558c mov eax, [rsp+0D8h+arg_38] ; +0x70, 0x180005590 mov dword ptr [rsp+0D8h+var_B0], eax ; +0x77, 0x180005597 mov [rsp+0D8h+var_B8], r10 ; +0x7b, 0x18000559b call sub_180005E80 ; +0x80, 0x1800055a0 vzeroupper ; +0x85, 0x1800055a5 add rsp, 0C0h ; +0x88, 0x1800055a8 pop rdi ; +0x8f, 0x1800055af pop rsi ; +0x90, 0x1800055b0 pop rbx ; +0x91, 0x1800055b1 retn ; +0x92, 0x1800055b2 cmp esi, 2 ; +0x93, 0x1800055b3 jnz short loc_18000561D ; +0x96, 0x1800055b6 mov eax, [rsp+0D8h+arg_50] ; +0x98, 0x1800055b8 lea rcx, [r10+1000h] ; +0x9f, 0x1800055bf mov [rsp+0D8h+var_88], eax ; +0xa6, 0x1800055c6 lea rdx, [r9+800h] ; +0xaa, 0x1800055ca mov eax, [rsp+0D8h+arg_48] ; +0xb1, 0x1800055d1 mov r8, rbx ; +0xb8, 0x1800055d8 mov [rsp+0D8h+var_90], eax ; +0xbb, 0x1800055db mov eax, [rsp+0D8h+arg_40] ; +0xbf, 0x1800055df mov [rsp+0D8h+var_98], eax ; +0xc6, 0x1800055e6 mov eax, [rsp+0D8h+arg_38] ; +0xca, 0x1800055ea mov [rsp+0D8h+var_A0], eax ; +0xd1, 0x1800055f1 mov [rsp+0D8h+var_A8], rcx ; +0xd5, 0x1800055f5 mov rcx, r11 ; +0xda, 0x1800055fa mov [rsp+0D8h+var_B0], r10 ; +0xdd, 0x1800055fd mov [rsp+0D8h+var_B8], rdx ; +0xe2, 0x180005602 mov rdx, rdi ; +0xe7, 0x180005607 call sub_180006070 ; +0xea, 0x18000560a vzeroupper ; +0xef, 0x18000560f add rsp, 0C0h ; +0xf2, 0x180005612 pop rdi ; +0xf9, 0x180005619 pop rsi ; +0xfa, 0x18000561a pop rbx ; +0xfb, 0x18000561b retn ; +0xfc, 0x18000561c test sil, 3 ; +0xfd, 0x18000561d jnz loc_180005E29 ; +0x101, 0x180005621 movzx eax, r10b ; +0x107, 0x180005627 or al, r9b ; +0x10b, 0x18000562b test al, 1Fh ; +0x10e, 0x18000562e jnz loc_180005E29 ; +0x110, 0x180005630 mov [rsp+0D8h+arg_8], r12 ; +0x116, 0x180005636 mov rcx, rsi ; +0x11e, 0x18000563e mov [rsp+0D8h+arg_18], r13 ; +0x121, 0x180005641 mov [rsp+0D8h+var_20], r14 ; +0x129, 0x180005649 mov r14d, [rsp+0D8h+arg_38] ; +0x131, 0x180005651 mov eax, r14d ; +0x139, 0x180005659 sar eax, 3 ; +0x13c, 0x18000565c mov [rsp+0D8h+var_28], r15 ; +0x13f, 0x18000565f lea r15d, ds:0[rsi*8] ; +0x147, 0x180005667 vmovaps [rsp+0D8h+var_38], xmm6 ; +0x14f, 0x18000566f mov [rsp+0D8h+arg_20], eax ; +0x158, 0x180005678 mov [rsp+0D8h+arg_28], r15d ; +0x15f, 0x18000567f test eax, eax ; +0x167, 0x180005687 jz loc_1800057D4 ; +0x169, 0x180005689 mov r8d, esi ; +0x16f, 0x18000568f movsxd rdx, r15d ; +0x172, 0x180005692 sar r8d, 2 ; +0x175, 0x180005695 shl rdx, 2 ; +0x179, 0x180005699 mov [rsp+0D8h+var_70], rdx ; +0x17d, 0x18000569d mov dword ptr [rsp+0D8h+arg_0], r8d ; +0x182, 0x1800056a2 nop word ptr [rax+rax+00h] ; +0x18a, 0x1800056aa sub r9, 20h ; ' ' ; +0x190, 0x1800056b0 xor r15d, r15d ; +0x194, 0x1800056b4 mov r14d, r8d ; +0x197, 0x1800056b7 test r8d, r8d ; +0x19a, 0x1800056ba jz loc_1800057A5 ; +0x19d, 0x1800056bd mov r12, rcx ; +0x1a3, 0x1800056c3 lea rax, [rcx+rcx*2] ; +0x1a6, 0x1800056c6 mov r13, rcx ; +0x1aa, 0x1800056ca lea rdx, [r11+rax*4] ; +0x1ad, 0x1800056cd neg r12 ; +0x1b1, 0x1800056d1 lea r8, [r9+1000h] ; +0x1b4, 0x1800056d4 add r13, r13 ; +0x1bb, 0x1800056db lea rsi, [rcx+rcx*2] ; +0x1be, 0x1800056de imul r10, rcx, -0Ch ; +0x1c2, 0x1800056e2 nop word ptr [rax+rax+00000000h] ; +0x1c6, 0x1800056e6 lea rax, [r15+rcx] ; +0x1d0, 0x1800056f0 lea rdx, [rdx+10h] ; +0x1d4, 0x1800056f4 lea r15, [r15+4] ; +0x1d8, 0x1800056f8 vmovups ymm0, ymmword ptr [r8-800h] ; +0x1dc, 0x1800056fc vmovups ymm4, ymmword ptr [r8] ; +0x1e5, 0x180005705 vmovups ymm3, ymmword ptr [r8+800h] ; +0x1ea, 0x18000570a vmovups ymm1, ymmword ptr [r8-1000h] ; +0x1f3, 0x180005713 lea r8, [r8+2000h] ; +0x1fc, 0x18000571c vshufps ymm5, ymm1, ymm0, 44h ; 'D' ; +0x203, 0x180005723 vshufps ymm1, ymm1, ymm0, 0EEh ; +0x208, 0x180005728 vshufps ymm2, ymm4, ymm3, 44h ; 'D' ; +0x20d, 0x18000572d vshufps ymm0, ymm4, ymm3, 0EEh ; +0x212, 0x180005732 vshufps ymm6, ymm5, ymm2, 88h ; +0x217, 0x180005737 vshufps ymm4, ymm5, ymm2, 0DDh ; +0x21c, 0x18000573c vshufps ymm2, ymm1, ymm0, 0DDh ; +0x221, 0x180005741 vextractf128 xmmword ptr [r10+rdx-10h], ymm2, 1 ; +0x226, 0x180005746 vshufps ymm3, ymm1, ymm0, 88h ; +0x22e, 0x18000574e vextractf128 xmm1, ymm3, 1 ; +0x233, 0x180005753 vmovups xmmword ptr [r11+rax*4], xmm1 ; +0x239, 0x180005759 vextractf128 xmmword ptr [rdx+r12*4-10h], ymm4, 1 ; +0x23f, 0x18000575f vextractf128 xmmword ptr [rdx-10h], ymm6, 1 ; +0x247, 0x180005767 vmovups xmmword ptr [rdx+rcx*4-10h], xmm2 ; +0x24e, 0x18000576e vmovups xmmword ptr [rdx+rcx*8-10h], xmm3 ; +0x254, 0x180005774 vmovups xmmword ptr [rdx+rsi*4-10h], xmm4 ; +0x25a, 0x18000577a vmovups xmmword ptr [rdx+r13*8-10h], xmm6 ; +0x260, 0x180005780 sub r14d, 1 ; +0x267, 0x180005787 jnz loc_1800056F0 ; +0x26b, 0x18000578b mov eax, [rsp+0D8h+arg_20] ; +0x271, 0x180005791 mov rdx, [rsp+0D8h+var_70] ; +0x278, 0x180005798 mov r8d, dword ptr [rsp+0D8h+arg_0] ; +0x27d, 0x18000579d add r11, rdx ; +0x285, 0x1800057a5 sub eax, 1 ; +0x288, 0x1800057a8 mov [rsp+0D8h+arg_20], eax ; +0x28b, 0x1800057ab jnz loc_1800056B0 ; +0x292, 0x1800057b2 mov r10, [rsp+0D8h+var_78] ; +0x298, 0x1800057b8 mov esi, [rsp+0D8h+arg_30] ; +0x29d, 0x1800057bd mov r14d, [rsp+0D8h+arg_38] ; +0x2a4, 0x1800057c4 mov r15d, [rsp+0D8h+arg_28] ; +0x2ac, 0x1800057cc and r14d, 7 ; +0x2b4, 0x1800057d4 jz short loc_18000580C ; +0x2b8, 0x1800057d8 nop word ptr [rax+rax+00h] ; +0x2ba, 0x1800057da sub r9, 4 ; +0x2c0, 0x1800057e0 mov r8d, esi ; +0x2c4, 0x1800057e4 test esi, esi ; +0x2c7, 0x1800057e7 jz short loc_180005806 ; +0x2c9, 0x1800057e9 mov rdx, r9 ; +0x2cb, 0x1800057eb xchg ax, ax ; +0x2ce, 0x1800057ee mov eax, [rdx] ; +0x2d0, 0x1800057f0 lea rdx, [rdx+800h] ; +0x2d2, 0x1800057f2 mov [r11], eax ; +0x2d9, 0x1800057f9 add r11, 4 ; +0x2dc, 0x1800057fc sub r8d, 1 ; +0x2e0, 0x180005800 jnz short loc_1800057F0 ; +0x2e4, 0x180005804 sub r14d, 1 ; +0x2e6, 0x180005806 jnz short loc_1800057E0 ; +0x2ea, 0x18000580a mov r13d, [rsp+0D8h+arg_40] ; +0x2ec, 0x18000580c mov r12d, r13d ; +0x2f4, 0x180005814 sar r12d, 3 ; +0x2f7, 0x180005817 vmovaps [rsp+0D8h+var_48], xmm7 ; +0x2fb, 0x18000581b vmovaps [rsp+0D8h+var_58], xmm8 ; +0x304, 0x180005824 mov [rsp+0D8h+arg_20], r12d ; +0x30d, 0x18000582d test r12d, r12d ; +0x315, 0x180005835 jz loc_1800059F7 ; +0x318, 0x180005838 mov edx, esi ; +0x31e, 0x18000583e movsxd rax, r15d ; +0x320, 0x180005840 sar edx, 2 ; +0x323, 0x180005843 shl rax, 2 ; +0x326, 0x180005846 mov [rsp+0D8h+var_68], rax ; +0x32a, 0x18000584a mov dword ptr [rsp+0D8h+arg_0], edx ; +0x32f, 0x18000584f nop word ptr [rax+rax+00000000h] ; +0x336, 0x180005856 vmovups ymm6, ymmword ptr [rdi-20h] ; +0x340, 0x180005860 vmovups ymm7, ymmword ptr [rbx] ; +0x345, 0x180005865 sub rdi, 20h ; ' ' ; +0x349, 0x180005869 mov [rsp+0D8h+var_70], 0 ; +0x34d, 0x18000586d sub r9, 20h ; ' ' ; +0x356, 0x180005876 mov [rsp+0D8h+arg_10], rdi ; +0x35a, 0x18000587a mov r15d, edx ; +0x362, 0x180005882 test edx, edx ; +0x365, 0x180005885 jz loc_1800059C6 ; +0x367, 0x180005887 vmovdqu ymm8, cs:ymmword_1801446A0 ; +0x36d, 0x18000588d mov rdi, [rsp+0D8h+var_70] ; +0x375, 0x180005895 lea rax, [rcx+rcx*2] ; +0x37a, 0x18000589a mov r8, rcx ; +0x37e, 0x18000589e lea rsi, [r10+2000h] ; +0x381, 0x1800058a1 mov r14, rcx ; +0x388, 0x1800058a8 lea rdx, [r11+rax*4] ; +0x38b, 0x1800058ab neg r8 ; +0x38f, 0x1800058af lea r13, [r9+1000h] ; +0x392, 0x1800058b2 add r14, r14 ; +0x399, 0x1800058b9 lea r10, [rcx+rcx*2] ; +0x39c, 0x1800058bc imul r12, rcx, -0Ch ; +0x3a0, 0x1800058c0 lea rax, [rdi+rcx] ; +0x3a4, 0x1800058c4 lea rdx, [rdx+10h] ; +0x3a8, 0x1800058c8 lea rdi, [rdi+4] ; +0x3ac, 0x1800058cc vmulps ymm0, ymm6, ymmword ptr [r13-1000h] ; +0x3b0, 0x1800058d0 lea r13, [r13+2000h] ; +0x3b9, 0x1800058d9 lea rsi, [rsi+4000h] ; +0x3c0, 0x1800058e0 vpermps ymm5, ymm8, ymm0 ; +0x3c7, 0x1800058e7 vfmadd231ps ymm5, ymm7, ymmword ptr [rsi-6000h] ; +0x3cc, 0x1800058ec vmulps ymm0, ymm6, ymmword ptr [r13-2800h] ; +0x3d5, 0x1800058f5 vpermps ymm3, ymm8, ymm0 ; +0x3de, 0x1800058fe vfmadd231ps ymm3, ymm7, ymmword ptr [rsi-5000h] ; +0x3e3, 0x180005903 vmulps ymm0, ymm6, ymmword ptr [r13-2000h] ; +0x3ec, 0x18000590c vshufps ymm2, ymm5, ymm3, 44h ; 'D' ; +0x3f5, 0x180005915 vpermps ymm4, ymm8, ymm0 ; +0x3fa, 0x18000591a vfmadd231ps ymm4, ymm7, ymmword ptr [rsi-4000h] ; +0x3ff, 0x18000591f vmulps ymm0, ymm6, ymmword ptr [r13-1800h] ; +0x408, 0x180005928 vshufps ymm3, ymm5, ymm3, 0EEh ; +0x411, 0x180005931 vpermps ymm1, ymm8, ymm0 ; +0x416, 0x180005936 vfmadd231ps ymm1, ymm7, ymmword ptr [rsi-3000h] ; +0x41b, 0x18000593b vshufps ymm0, ymm4, ymm1, 44h ; 'D' ; +0x424, 0x180005944 vshufps ymm5, ymm2, ymm0, 88h ; +0x429, 0x180005949 vmovups xmmword ptr [rdx+r12-10h], xmm5 ; +0x42e, 0x18000594e vshufps ymm1, ymm4, ymm1, 0EEh ; +0x435, 0x180005955 vshufps ymm4, ymm2, ymm0, 0DDh ; +0x43a, 0x18000595a vmovups xmmword ptr [r11+rax*4], xmm4 ; +0x43f, 0x18000595f vshufps ymm2, ymm3, ymm1, 88h ; +0x445, 0x180005965 vmovups xmmword ptr [rdx+r8*4-10h], xmm2 ; +0x44a, 0x18000596a vshufps ymm3, ymm3, ymm1, 0DDh ; +0x451, 0x180005971 vmovups xmmword ptr [rdx-10h], xmm3 ; +0x456, 0x180005976 vextractf128 xmmword ptr [rdx+rcx*4-10h], ymm5, 1 ; +0x45b, 0x18000597b vextractf128 xmmword ptr [rdx+rcx*8-10h], ymm4, 1 ; +0x463, 0x180005983 vextractf128 xmmword ptr [rdx+r10*4-10h], ymm2, 1 ; +0x46b, 0x18000598b vextractf128 xmmword ptr [rdx+r14*8-10h], ymm3, 1 ; +0x473, 0x180005993 sub r15d, 1 ; +0x47b, 0x18000599b jnz loc_1800058C4 ; +0x47f, 0x18000599f mov r10, [rsp+0D8h+var_78] ; +0x485, 0x1800059a5 mov rdi, [rsp+0D8h+arg_10] ; +0x48a, 0x1800059aa mov r12d, [rsp+0D8h+arg_20] ; +0x492, 0x1800059b2 mov rax, [rsp+0D8h+var_68] ; +0x49a, 0x1800059ba mov edx, dword ptr [rsp+0D8h+arg_0] ; +0x49f, 0x1800059bf add r10, 20h ; ' ' ; +0x4a6, 0x1800059c6 add r11, rax ; +0x4aa, 0x1800059ca add rbx, 20h ; ' ' ; +0x4ad, 0x1800059cd mov [rsp+0D8h+var_78], r10 ; +0x4b1, 0x1800059d1 sub r12d, 1 ; +0x4b6, 0x1800059d6 mov [rsp+0D8h+arg_20], r12d ; +0x4ba, 0x1800059da jnz loc_180005860 ; +0x4c2, 0x1800059e2 mov esi, [rsp+0D8h+arg_30] ; +0x4c8, 0x1800059e8 mov r13d, [rsp+0D8h+arg_40] ; +0x4cf, 0x1800059ef and r13d, 7 ; +0x4d7, 0x1800059f7 jz short loc_180005A54 ; +0x4db, 0x1800059fb nop dword ptr [rax] ; +0x4dd, 0x1800059fd vmovss xmm1, dword ptr [rdi-4] ; +0x4e0, 0x180005a00 vmovss xmm2, dword ptr [rbx] ; +0x4e5, 0x180005a05 sub rdi, 4 ; +0x4e9, 0x180005a09 sub r9, 4 ; +0x4ed, 0x180005a0d mov r8d, esi ; +0x4f1, 0x180005a11 test esi, esi ; +0x4f4, 0x180005a14 jz short loc_180005A46 ; +0x4f6, 0x180005a16 mov rax, r9 ; +0x4f8, 0x180005a18 mov rdx, r10 ; +0x4fb, 0x180005a1b xchg ax, ax ; +0x4fe, 0x180005a1e vmulss xmm0, xmm1, dword ptr [rax] ; +0x500, 0x180005a20 vfmadd231ss xmm0, xmm2, dword ptr [rdx] ; +0x504, 0x180005a24 vmovss dword ptr [r11], xmm0 ; +0x509, 0x180005a29 add r11, 4 ; +0x50e, 0x180005a2e lea rdx, [rdx+1000h] ; +0x512, 0x180005a32 lea rax, [rax+800h] ; +0x519, 0x180005a39 sub r8d, 1 ; +0x520, 0x180005a40 jnz short loc_180005A20 ; +0x524, 0x180005a44 add r10, 4 ; +0x526, 0x180005a46 add rbx, 4 ; +0x52a, 0x180005a4a sub r13d, 1 ; +0x52e, 0x180005a4e jnz short loc_180005A00 ; +0x532, 0x180005a52 mov r14d, [rsp+0D8h+arg_48] ; +0x534, 0x180005a54 mov eax, r14d ; +0x53c, 0x180005a5c sar eax, 3 ; +0x53f, 0x180005a5f mov [rsp+0D8h+arg_20], eax ; +0x542, 0x180005a62 test eax, eax ; +0x549, 0x180005a69 jz loc_180005C0B ; +0x54b, 0x180005a6b movsxd rdx, [rsp+0D8h+arg_28] ; +0x551, 0x180005a71 mov r8d, esi ; +0x559, 0x180005a79 vmovdqu ymm6, cs:ymmword_1801446A0 ; +0x55c, 0x180005a7c sar r8d, 2 ; +0x564, 0x180005a84 shl rdx, 2 ; +0x568, 0x180005a88 mov [rsp+0D8h+var_68], rdx ; +0x56c, 0x180005a8c mov dword ptr [rsp+0D8h+arg_0], r8d ; +0x571, 0x180005a91 nop dword ptr [rax+00000000h] ; +0x579, 0x180005a99 vpermps ymm7, ymm6, ymmword ptr [rdi-20h] ; +0x580, 0x180005aa0 vmovups ymm8, ymmword ptr [rbx] ; +0x586, 0x180005aa6 sub rdi, 20h ; ' ' ; +0x58a, 0x180005aaa sub r10, 20h ; ' ' ; +0x58e, 0x180005aae mov [rsp+0D8h+var_78], r10 ; +0x592, 0x180005ab2 mov r15d, r8d ; +0x597, 0x180005ab7 test r8d, r8d ; +0x59a, 0x180005aba jz loc_180005BE1 ; +0x59d, 0x180005abd mov rdx, rcx ; +0x5a3, 0x180005ac3 lea r8, [r10+2000h] ; +0x5a6, 0x180005ac6 mov r12, rcx ; +0x5ad, 0x180005acd lea rax, [r11+rcx*8] ; +0x5b0, 0x180005ad0 neg rdx ; +0x5b4, 0x180005ad4 lea r14, [r9+1000h] ; +0x5b7, 0x180005ad7 add r12, r12 ; +0x5be, 0x180005ade lea rsi, [rcx+rcx*2] ; +0x5c1, 0x180005ae1 mov r13, rcx ; +0x5c5, 0x180005ae5 lea r10, [rcx+rcx*4] ; +0x5c8, 0x180005ae8 neg r13 ; +0x5cc, 0x180005aec nop ; +0x5cf, 0x180005aef lea rax, [rax+10h] ; +0x5d0, 0x180005af0 lea r14, [r14+2000h] ; +0x5d4, 0x180005af4 vpermps ymm0, ymm6, ymmword ptr [r8-2000h] ; +0x5db, 0x180005afb lea r8, [r8+4000h] ; +0x5e4, 0x180005b04 vmulps ymm5, ymm0, ymm8 ; +0x5eb, 0x180005b0b vfmsub231ps ymm5, ymm7, ymmword ptr [r14-3000h] ; +0x5f0, 0x180005b10 vpermps ymm0, ymm6, ymmword ptr [r8-5000h] ; +0x5f9, 0x180005b19 vmulps ymm3, ymm0, ymm8 ; +0x602, 0x180005b22 vfmsub231ps ymm3, ymm7, ymmword ptr [r14-2800h] ; +0x607, 0x180005b27 vpermps ymm0, ymm6, ymmword ptr [r8-4000h] ; +0x610, 0x180005b30 vshufps ymm2, ymm5, ymm3, 44h ; 'D' ; +0x619, 0x180005b39 vmulps ymm4, ymm0, ymm8 ; +0x61e, 0x180005b3e vfmsub231ps ymm4, ymm7, ymmword ptr [r14-2000h] ; +0x623, 0x180005b43 vpermps ymm0, ymm6, ymmword ptr [r8-3000h] ; +0x62c, 0x180005b4c vshufps ymm3, ymm5, ymm3, 0EEh ; +0x635, 0x180005b55 vmulps ymm1, ymm0, ymm8 ; +0x63a, 0x180005b5a vfmsub231ps ymm1, ymm7, ymmword ptr [r14-1800h] ; +0x63f, 0x180005b5f vshufps ymm0, ymm4, ymm1, 44h ; 'D' ; +0x648, 0x180005b68 vshufps ymm5, ymm2, ymm0, 88h ; +0x64d, 0x180005b6d vmovups xmmword ptr [rax+r13*8-10h], xmm5 ; +0x652, 0x180005b72 vshufps ymm1, ymm4, ymm1, 0EEh ; +0x659, 0x180005b79 vshufps ymm4, ymm2, ymm0, 0DDh ; +0x65e, 0x180005b7e vmovups xmmword ptr [rax+rdx*4-10h], xmm4 ; +0x663, 0x180005b83 vshufps ymm2, ymm3, ymm1, 88h ; +0x669, 0x180005b89 vmovups xmmword ptr [rax-10h], xmm2 ; +0x66e, 0x180005b8e vshufps ymm3, ymm3, ymm1, 0DDh ; +0x673, 0x180005b93 vmovups xmmword ptr [rax+rcx*4-10h], xmm3 ; +0x678, 0x180005b98 vextractf128 xmmword ptr [rax+rcx*8-10h], ymm5, 1 ; +0x67e, 0x180005b9e vextractf128 xmmword ptr [rax+rsi*4-10h], ymm4, 1 ; +0x686, 0x180005ba6 vextractf128 xmmword ptr [rax+r12*8-10h], ymm2, 1 ; +0x68e, 0x180005bae vextractf128 xmmword ptr [rax+r10*4-10h], ymm3, 1 ; +0x696, 0x180005bb6 sub r15d, 1 ; +0x69e, 0x180005bbe jnz loc_180005AF0 ; +0x6a2, 0x180005bc2 mov r10, [rsp+0D8h+var_78] ; +0x6a8, 0x180005bc8 mov eax, [rsp+0D8h+arg_20] ; +0x6ad, 0x180005bcd mov rdx, [rsp+0D8h+var_68] ; +0x6b4, 0x180005bd4 mov r8d, dword ptr [rsp+0D8h+arg_0] ; +0x6b9, 0x180005bd9 add r11, rdx ; +0x6c1, 0x180005be1 add r9, 20h ; ' ' ; +0x6c4, 0x180005be4 add rbx, 20h ; ' ' ; +0x6c8, 0x180005be8 sub eax, 1 ; +0x6cc, 0x180005bec mov [rsp+0D8h+arg_20], eax ; +0x6cf, 0x180005bef jnz loc_180005AA0 ; +0x6d6, 0x180005bf6 mov esi, [rsp+0D8h+arg_30] ; +0x6dc, 0x180005bfc mov r14d, [rsp+0D8h+arg_48] ; +0x6e3, 0x180005c03 and r14d, 7 ; +0x6eb, 0x180005c0b jz short loc_180005C70 ; +0x6ef, 0x180005c0f sub rdi, r10 ; +0x6f1, 0x180005c11 sub r9, rbx ; +0x6f4, 0x180005c14 nop word ptr [rax+rax+00000000h] ; +0x6f7, 0x180005c17 vmovss xmm2, dword ptr [rbx] ; +0x700, 0x180005c20 mov rax, r10 ; +0x704, 0x180005c24 mov r8d, esi ; +0x707, 0x180005c27 sub r10, 4 ; +0x70a, 0x180005c2a vmovss xmm1, dword ptr [rax+rdi-4] ; +0x70e, 0x180005c2e test esi, esi ; +0x714, 0x180005c34 jz short loc_180005C66 ; +0x716, 0x180005c36 mov rax, r10 ; +0x718, 0x180005c38 lea rdx, [r9+rbx] ; +0x71b, 0x180005c3b nop ; +0x71f, 0x180005c3f vmulss xmm0, xmm2, dword ptr [rax] ; +0x720, 0x180005c40 vfmsub231ss xmm0, xmm1, dword ptr [rdx] ; +0x724, 0x180005c44 vmovss dword ptr [r11], xmm0 ; +0x729, 0x180005c49 add r11, 4 ; +0x72e, 0x180005c4e lea rdx, [rdx+800h] ; +0x732, 0x180005c52 lea rax, [rax+1000h] ; +0x739, 0x180005c59 sub r8d, 1 ; +0x740, 0x180005c60 jnz short loc_180005C40 ; +0x744, 0x180005c64 add rbx, 4 ; +0x746, 0x180005c66 sub r14d, 1 ; +0x74a, 0x180005c6a jnz short loc_180005C20 ; +0x74e, 0x180005c6e mov r14d, [rsp+0D8h+arg_50] ; +0x750, 0x180005c70 mov r15d, r14d ; +0x758, 0x180005c78 sar r15d, 3 ; +0x75b, 0x180005c7b test r15d, r15d ; +0x75f, 0x180005c7f jz loc_180005D9E ; +0x762, 0x180005c82 vmovups ymm8, cs:ymmword_1801446E0 ; +0x768, 0x180005c88 mov edx, esi ; +0x770, 0x180005c90 lea eax, ds:0[rsi*8] ; +0x772, 0x180005c92 sar edx, 2 ; +0x779, 0x180005c99 cdqe ; +0x77c, 0x180005c9c shl rax, 2 ; +0x77e, 0x180005c9e mov [rsp+0D8h+arg_0], rax ; +0x782, 0x180005ca2 mov [rsp+0D8h+arg_30], edx ; +0x78a, 0x180005caa sub r10, 20h ; ' ' ; +0x791, 0x180005cb1 mov r8d, edx ; +0x795, 0x180005cb5 test edx, edx ; +0x798, 0x180005cb8 jz loc_180005D91 ; +0x79a, 0x180005cba mov r9, rcx ; +0x7a0, 0x180005cc0 lea rax, [r11+rcx*8] ; +0x7a3, 0x180005cc3 mov rbx, rcx ; +0x7a7, 0x180005cc7 lea rdx, [r10+2000h] ; +0x7aa, 0x180005cca neg r9 ; +0x7b1, 0x180005cd1 lea r12, [rcx+rcx*2] ; +0x7b4, 0x180005cd4 add rbx, rbx ; +0x7b8, 0x180005cd8 lea r13, [rcx+rcx*4] ; +0x7bb, 0x180005cdb mov rdi, rcx ; +0x7bf, 0x180005cdf neg rdi ; +0x7c2, 0x180005ce2 nop word ptr [rax+rax+00000000h] ; +0x7c5, 0x180005ce5 lea rax, [rax+10h] ; +0x7d0, 0x180005cf0 vmulps ymm4, ymm8, ymmword ptr [rdx-2000h] ; +0x7d4, 0x180005cf4 vmulps ymm0, ymm8, ymmword ptr [rdx-1000h] ; +0x7dc, 0x180005cfc vmulps ymm2, ymm8, ymmword ptr [rdx] ; +0x7e4, 0x180005d04 vmulps ymm1, ymm8, ymmword ptr [rdx+1000h] ; +0x7e8, 0x180005d08 lea rdx, [rdx+4000h] ; +0x7f0, 0x180005d10 vshufps ymm3, ymm4, ymm0, 44h ; 'D' ; +0x7f7, 0x180005d17 vshufps ymm5, ymm4, ymm0, 0EEh ; +0x7fc, 0x180005d1c vshufps ymm0, ymm2, ymm1, 44h ; 'D' ; +0x801, 0x180005d21 vshufps ymm7, ymm3, ymm0, 88h ; +0x806, 0x180005d26 vshufps ymm6, ymm3, ymm0, 0DDh ; +0x80b, 0x180005d2b vshufps ymm2, ymm2, ymm1, 0EEh ; +0x810, 0x180005d30 vshufps ymm3, ymm5, ymm2, 0DDh ; +0x815, 0x180005d35 vextractf128 xmmword ptr [rax+rdi*8-10h], ymm3, 1 ; +0x81a, 0x180005d3a vshufps ymm4, ymm5, ymm2, 88h ; +0x822, 0x180005d42 vextractf128 xmmword ptr [rax+r9*4-10h], ymm4, 1 ; +0x827, 0x180005d47 vextractf128 xmmword ptr [rax-10h], ymm6, 1 ; +0x82f, 0x180005d4f vextractf128 xmmword ptr [rax+rcx*4-10h], ymm7, 1 ; +0x836, 0x180005d56 vmovups xmmword ptr [rax+rcx*8-10h], xmm3 ; +0x83e, 0x180005d5e vmovups xmmword ptr [rax+r12*4-10h], xmm4 ; +0x844, 0x180005d64 vmovups xmmword ptr [rax+rbx*8-10h], xmm6 ; +0x84b, 0x180005d6b vmovups xmmword ptr [rax+r13*4-10h], xmm7 ; +0x851, 0x180005d71 sub r8d, 1 ; +0x858, 0x180005d78 jnz loc_180005CF0 ; +0x85c, 0x180005d7c mov rax, [rsp+0D8h+arg_0] ; +0x862, 0x180005d82 mov edx, [rsp+0D8h+arg_30] ; +0x86a, 0x180005d8a add r11, rax ; +0x871, 0x180005d91 sub r15d, 1 ; +0x874, 0x180005d94 jnz loc_180005CB1 ; +0x878, 0x180005d98 vmovaps xmm8, [rsp+0D8h+var_58] ; +0x87e, 0x180005d9e vmovaps xmm7, [rsp+0D8h+var_48] ; +0x887, 0x180005da7 vmovaps xmm6, [rsp+0D8h+var_38] ; +0x890, 0x180005db0 mov r15, [rsp+0D8h+var_28] ; +0x899, 0x180005db9 mov r13, [rsp+0D8h+arg_18] ; +0x8a1, 0x180005dc1 mov r12, [rsp+0D8h+arg_8] ; +0x8a9, 0x180005dc9 and r14d, 7 ; +0x8b1, 0x180005dd1 jz short loc_180005E13 ; +0x8b5, 0x180005dd5 vmovss xmm2, dword ptr cs:xmmword_180144610 ; +0x8b7, 0x180005dd7 nop ; +0x8bf, 0x180005ddf sub r10, 4 ; +0x8c0, 0x180005de0 mov ecx, esi ; +0x8c4, 0x180005de4 test esi, esi ; +0x8c6, 0x180005de6 jz short loc_180005E0D ; +0x8c8, 0x180005de8 mov rax, r10 ; +0x8ca, 0x180005dea nop dword ptr [rax] ; +0x8cd, 0x180005ded vmovss xmm0, dword ptr [rax] ; +0x8d0, 0x180005df0 vxorps xmm1, xmm0, xmm2 ; +0x8d4, 0x180005df4 vmovss dword ptr [r11], xmm1 ; +0x8d8, 0x180005df8 add r11, 4 ; +0x8dd, 0x180005dfd lea rax, [rax+1000h] ; +0x8e1, 0x180005e01 sub ecx, 1 ; +0x8e8, 0x180005e08 jnz short loc_180005DF0 ; +0x8eb, 0x180005e0b sub r14d, 1 ; +0x8ed, 0x180005e0d jnz short loc_180005DE0 ; +0x8f1, 0x180005e11 mov r14, [rsp+0D8h+var_20] ; +0x8f3, 0x180005e13 vzeroupper ; +0x8fb, 0x180005e1b add rsp, 0C0h ; +0x8fe, 0x180005e1e pop rdi ; +0x905, 0x180005e25 pop rsi ; +0x906, 0x180005e26 pop rbx ; +0x907, 0x180005e27 retn ; +0x908, 0x180005e28 mov eax, [rsp+0D8h+arg_50] ; +0x909, 0x180005e29 mov r9, rbx ; +0x910, 0x180005e30 mov [rsp+0D8h+var_88], eax ; +0x913, 0x180005e33 mov eax, [rsp+0D8h+arg_48] ; +0x917, 0x180005e37 mov [rsp+0D8h+var_90], eax ; +0x91e, 0x180005e3e mov eax, [rsp+0D8h+arg_40] ; +0x922, 0x180005e42 mov [rsp+0D8h+var_98], eax ; +0x929, 0x180005e49 mov eax, [rsp+0D8h+arg_38] ; +0x92d, 0x180005e4d mov [rsp+0D8h+var_A0], eax ; +0x934, 0x180005e54 mov dword ptr [rsp+0D8h+var_A8], esi ; +0x938, 0x180005e58 mov dword ptr [rsp+0D8h+var_B0], r8d ; +0x93c, 0x180005e5c mov r8, rdi ; +0x941, 0x180005e61 mov dword ptr [rsp+0D8h+var_B8], edx ; +0x944, 0x180005e64 mov rdx, r11 ; +0x948, 0x180005e68 call sub_180004520 ; +0x94b, 0x180005e6b vzeroupper ; +0x950, 0x180005e70 add rsp, 0C0h ; +0x953, 0x180005e73 pop rdi ; +0x95a, 0x180005e7a pop rsi ; +0x95b, 0x180005e7b pop rbx ; +0x95c, 0x180005e7c retn ; +0x95d, 0x180005e7d