; ; sub_180007120 from 0x180007120 to 0x180007405 (741 bytes) ; ; 3 xrefs: ; > @ 0x1801a4240 ; > @ 0x1801a4258 ; > @ 0x1801f6354 ; ; 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 [rsp-8+arg_0], rbx ; +0x0, 0x180007120 mov [rsp-8+arg_8], rsi ; +0x5, 0x180007125 mov [rsp-8+arg_18], rdi ; +0xa, 0x18000712a mov [rsp-8+arg_10], r8 ; +0xf, 0x18000712f push rbp ; +0x14, 0x180007134 push r12 ; +0x15, 0x180007135 push r13 ; +0x17, 0x180007137 push r14 ; +0x19, 0x180007139 push r15 ; +0x1b, 0x18000713b sub rsp, 80h ; +0x1d, 0x18000713d lea rbp, [rsp+40h] ; +0x24, 0x180007144 and rbp, 0FFFFFFFFFFFFFFE0h ; +0x29, 0x180007149 movsxd r10, dword ptr [rcx+28h] ; +0x2d, 0x18000714d mov r13, rdx ; +0x31, 0x180007151 mov rcx, [rcx] ; +0x34, 0x180007154 mov rsi, r9 ; +0x37, 0x180007157 mov rax, [rcx+20h] ; +0x3a, 0x18000715a mov eax, [rax+r10*4] ; +0x3e, 0x18000715e cdq ; +0x42, 0x180007162 sub eax, edx ; +0x43, 0x180007163 sar eax, 1 ; +0x45, 0x180007165 movsxd rdx, eax ; +0x47, 0x180007167 mov [rbp+60h+var_60], edx ; +0x4a, 0x18000716a test r8, r8 ; +0x4d, 0x18000716d jz loc_1800073CD ; +0x50, 0x180007170 mov r10d, [r13+38h] ; +0x56, 0x180007176 lea r11, unk_180144700 ; +0x5a, 0x18000717a imul r10d, [r8] ; +0x61, 0x180007181 xor r9d, r9d ; +0x65, 0x180007185 mov r14d, 1 ; +0x68, 0x180007188 mov r12d, r9d ; +0x6e, 0x18000718e cmp [r13+34h], r14d ; +0x71, 0x180007191 jle loc_180007316 ; +0x75, 0x180007195 mov r15d, r14d ; +0x7b, 0x18000719b xchg ax, ax ; +0x7e, 0x18000719e mov rax, [r13+18h] ; +0x80, 0x1800071a0 movsx rcx, byte ptr [rax+r15] ; +0x84, 0x1800071a4 mov ebx, [r8+rcx*4] ; +0x89, 0x1800071a9 and ebx, 7FFFh ; +0x8d, 0x1800071ad cmp ebx, [r8+rcx*4] ; +0x93, 0x1800071b3 jnz loc_180007303 ; +0x97, 0x1800071b7 imul ebx, [r13+38h] ; +0x9d, 0x1800071bd mov rax, [r13+10h] ; +0xa2, 0x1800071c2 vpxor xmm1, xmm1, xmm1 ; +0xa6, 0x1800071c6 movzx ecx, word ptr [rax+rcx*2] ; +0xaa, 0x1800071ca mov r8d, ebx ; +0xae, 0x1800071ce sub r8d, r10d ; +0xb1, 0x1800071d1 mov [rbp+60h+var_5C], ecx ; +0xb4, 0x1800071d4 mov eax, r8d ; +0xb7, 0x1800071d7 shl r10d, 14h ; +0xba, 0x1800071da shl eax, 14h ; +0xbe, 0x1800071de sub ecx, r12d ; +0xc1, 0x1800071e1 cdq ; +0xc4, 0x1800071e4 sar r8d, 1Fh ; +0xc5, 0x1800071e5 idiv ecx ; +0xc9, 0x1800071e9 and r8d, 0FF800h ; +0xcb, 0x1800071eb mov edi, eax ; +0xd2, 0x1800071f2 vpinsrd xmm1, xmm1, edi, 1 ; +0xd4, 0x1800071f4 lea r9d, ds:0[rax*4] ; +0xda, 0x1800071fa lea ecx, [rax+rax*2] ; +0xe2, 0x180007202 lea r11d, [r8+400h] ; +0xe5, 0x180007205 add ecx, ecx ; +0xec, 0x18000720c lea r8d, [rax+rax*2] ; +0xee, 0x18000720e add r11d, r10d ; +0xf2, 0x180007212 lea r10d, [rax+rax] ; +0xf5, 0x180007215 lea edx, [rax+rax*4] ; +0xf9, 0x180007219 imul eax, 7 ; +0xfc, 0x18000721c vmovd xmm0, r9d ; +0xff, 0x18000721f mov r9d, [rbp+60h+var_5C] ; +0x104, 0x180007224 cmp [rbp+60h+var_60], r9d ; +0x108, 0x180007228 vpinsrd xmm0, xmm0, edx, 1 ; +0x10c, 0x18000722c vpinsrd xmm0, xmm0, ecx, 2 ; +0x112, 0x180007232 vpinsrd xmm0, xmm0, eax, 3 ; +0x118, 0x180007238 lea eax, ds:0[rdi*8] ; +0x11e, 0x18000723e vmovd xmm4, eax ; +0x125, 0x180007245 vpinsrd xmm1, xmm1, r10d, 2 ; +0x129, 0x180007249 vpinsrd xmm1, xmm1, r8d, 3 ; +0x12f, 0x18000724f vinsertf128 ymm2, ymm1, xmm0, 1 ; +0x135, 0x180007255 movsxd rax, r12d ; +0x13b, 0x18000725b mov r8d, r9d ; +0x13e, 0x18000725e cmovle r8d, [rbp+60h+var_60] ; +0x141, 0x180007261 sub r8d, r12d ; +0x146, 0x180007266 vmovd xmm0, r11d ; +0x149, 0x180007269 lea rcx, [rsi+rax*4] ; +0x14e, 0x18000726e mov eax, r8d ; +0x152, 0x180007272 vpbroadcastd ymm0, xmm0 ; +0x155, 0x180007275 sar eax, 3 ; +0x15a, 0x18000727a lea r11, unk_180144700 ; +0x15d, 0x18000727d vpaddd ymm3, ymm0, ymm2 ; +0x164, 0x180007284 vpbroadcastd ymm4, xmm4 ; +0x168, 0x180007288 vmovdqu [rbp+60h+var_40], ymm3 ; +0x16d, 0x18000728d test eax, eax ; +0x172, 0x180007292 jz short loc_1800072C9 ; +0x174, 0x180007294 nop word ptr [rax+rax+00000000h] ; +0x176, 0x180007296 vpsrad ymm1, ymm3, 14h ; +0x180, 0x1800072a0 vpcmpeqb ymm0, ymm0, ymm0 ; +0x185, 0x1800072a5 vpaddd ymm3, ymm3, ymm4 ; +0x189, 0x1800072a9 vmovdqu [rbp+60h+var_40], ymm3 ; +0x18d, 0x1800072ad vgatherdps ymm2, dword ptr [r11+ymm1*4], ymm0 ; +0x192, 0x1800072b2 vmulps ymm0, ymm2, ymmword ptr [rcx] ; +0x198, 0x1800072b8 vmovups ymmword ptr [rcx], ymm0 ; +0x19c, 0x1800072bc add rcx, 20h ; ' ' ; +0x1a0, 0x1800072c0 sub eax, 1 ; +0x1a4, 0x1800072c4 jnz short loc_1800072A0 ; +0x1a7, 0x1800072c7 and r8d, 7 ; +0x1a9, 0x1800072c9 jz short loc_1800072F5 ; +0x1ad, 0x1800072cd mov edx, dword ptr [rbp+60h+var_40] ; +0x1af, 0x1800072cf movsxd rax, edx ; +0x1b2, 0x1800072d2 lea rcx, [rcx+4] ; +0x1b5, 0x1800072d5 sar rax, 14h ; +0x1b9, 0x1800072d9 add edx, edi ; +0x1bd, 0x1800072dd vmovss xmm0, dword ptr [r11+rax*4] ; +0x1bf, 0x1800072df vmulss xmm1, xmm0, dword ptr [rcx-4] ; +0x1c5, 0x1800072e5 vmovss dword ptr [rcx-4], xmm1 ; +0x1ca, 0x1800072ea sub r8d, 1 ; +0x1cf, 0x1800072ef jnz short loc_1800072D2 ; +0x1d3, 0x1800072f3 mov r8, [rsp+0A0h+arg_10] ; +0x1d5, 0x1800072f5 mov r12d, r9d ; +0x1dd, 0x1800072fd mov r10d, ebx ; +0x1e0, 0x180007300 inc r14d ; +0x1e3, 0x180007303 inc r15 ; +0x1e6, 0x180007306 cmp r14d, [r13+34h] ; +0x1e9, 0x180007309 jl loc_1800071A0 ; +0x1ed, 0x18000730d mov edx, [rbp+60h+var_60] ; +0x1f3, 0x180007313 movsxd rcx, r9d ; +0x1f6, 0x180007316 movsxd r9, edx ; +0x1f9, 0x180007319 cmp rcx, r9 ; +0x1fc, 0x18000731c jge loc_1800073C6 ; +0x1ff, 0x18000731f mov rax, r9 ; +0x205, 0x180007325 movsxd rdx, r10d ; +0x208, 0x180007328 sub rax, rcx ; +0x20b, 0x18000732b cmp rax, 4 ; +0x20e, 0x18000732e jl short loc_1800073AE ; +0x212, 0x180007332 mov r8, r9 ; +0x214, 0x180007334 lea rax, [rsi+8] ; +0x217, 0x180007337 sub r8, rcx ; +0x21b, 0x18000733b lea rax, [rax+rcx*4] ; +0x21e, 0x18000733e sub r8, 4 ; +0x222, 0x180007342 shr r8, 2 ; +0x226, 0x180007346 inc r8 ; +0x22a, 0x18000734a lea rcx, [rcx+r8*4] ; +0x22d, 0x18000734d nop dword ptr [rax+00h] ; +0x231, 0x180007351 nop word ptr [rax+rax+00000000h] ; +0x235, 0x180007355 vmovss xmm0, dword ptr [rax-8] ; +0x240, 0x180007360 vmulss xmm1, xmm0, dword ptr [r11+rdx*4] ; +0x245, 0x180007365 vmovss xmm0, dword ptr [rax-4] ; +0x24b, 0x18000736b vmovss xmm2, dword ptr [rax] ; +0x250, 0x180007370 vmovss dword ptr [rax-8], xmm1 ; +0x254, 0x180007374 lea rax, [rax+10h] ; +0x259, 0x180007379 vmulss xmm1, xmm0, dword ptr [r11+rdx*4] ; +0x25d, 0x18000737d vmovss dword ptr [rax-14h], xmm1 ; +0x263, 0x180007383 vmulss xmm0, xmm2, dword ptr [r11+rdx*4] ; +0x268, 0x180007388 vmovss xmm1, dword ptr [rax-0Ch] ; +0x26e, 0x18000738e vmovss dword ptr [rax-10h], xmm0 ; +0x273, 0x180007393 vmulss xmm0, xmm1, dword ptr [r11+rdx*4] ; +0x278, 0x180007398 vmovss dword ptr [rax-0Ch], xmm0 ; +0x27e, 0x18000739e sub r8, 1 ; +0x283, 0x1800073a3 jnz short loc_180007360 ; +0x287, 0x1800073a7 cmp rcx, r9 ; +0x289, 0x1800073a9 jge short loc_1800073C6 ; +0x28c, 0x1800073ac vmovss xmm0, dword ptr [rsi+rcx*4] ; +0x28e, 0x1800073ae vmulss xmm1, xmm0, dword ptr [r11+rdx*4] ; +0x293, 0x1800073b3 vmovss dword ptr [rsi+rcx*4], xmm1 ; +0x299, 0x1800073b9 inc rcx ; +0x29e, 0x1800073be cmp rcx, r9 ; +0x2a1, 0x1800073c1 jl short loc_1800073AE ; +0x2a4, 0x1800073c4 mov eax, 1 ; +0x2a6, 0x1800073c6 jmp short loc_1800073E1 ; +0x2ab, 0x1800073cb lea r8, ds:0[rdx*4]; Size ; +0x2ad, 0x1800073cd mov rcx, rsi; void * ; +0x2b5, 0x1800073d5 xor edx, edx; Val ; +0x2b8, 0x1800073d8 call memset ; +0x2ba, 0x1800073da xor eax, eax ; +0x2bf, 0x1800073df vzeroupper ; +0x2c1, 0x1800073e1 lea r11, [rsp+0A0h+var_20] ; +0x2c4, 0x1800073e4 mov rbx, [r11+30h] ; +0x2cc, 0x1800073ec mov rsi, [r11+38h] ; +0x2d0, 0x1800073f0 mov rdi, [r11+48h] ; +0x2d4, 0x1800073f4 mov rsp, r11 ; +0x2d8, 0x1800073f8 pop r15 ; +0x2db, 0x1800073fb pop r14 ; +0x2dd, 0x1800073fd pop r13 ; +0x2df, 0x1800073ff pop r12 ; +0x2e1, 0x180007401 pop rbp ; +0x2e3, 0x180007403 retn ; +0x2e4, 0x180007404