Function at 0x1003ee00
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xffffffe0
sub esp, 0x260
mov esi, dword [ebp + 0xc]
mov eax, dword [0x1017f528]
xor eax, ebp
mov dword [esp + 0x248], eax
push esi
call fcn.1003c640
add esp, 4
mov dword [esi + 4], 0
vxorps xmm0, xmm0, xmm0
vmovups xmmword [esi + 0x1c], xmm0
mov dword [esi + 0x30], 0
mov dword [esi + 0x2c], 0
mov ecx, esi
call fcn.10039eb0
mov edx, dword [esi + 0x4c]
xor eax, eax
mov ecx, 0
test edx, edx
mov dword [esp + 0x50], edx
jle 0x1003ee7f
cmp edx, 9
mov eax, 8
cmovge eax, edx
imul eax, eax, 0x54
push eax
call fcn.1001ca90
mov edx, dword [esp + 0x54]
add esp, 4
mov ecx, eax
xor eax, eax
mov ebx, dword [esi + 0x34]
test ebx, ebx
mov dword [esp + 0x28], ecx
jle 0x1003eeac
cmp ebx, 9
mov eax, 8
cmovge eax, ebx
shl eax, 3
lea eax, [eax + eax*2]
push eax
call fcn.1001ca90
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x2c]
add esp, 4
mov edi, eax
imul eax, edx, 0x54
push eax
push 0
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [ebx*8]
lea eax, [eax + eax*2]
push eax
push 0
mov dword [esp + 0x34], edi
push edi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [esp + 0xa0], 0
cmp dword [esi + 0x4c], 0
mov dword [esp + 0x54], ebx
jle 0x1003f1fc
mov dword [esp + 0x6c], 0
vbroadcastss xmm0, dword [0x10130d60]
vmovaps xmmword [esp + 0xc0], xmm0
xor eax, eax
mov edx, dword [esp + 0x28]
mov dword [esp + 0x20], eax
imul eax, eax, 0x54
mov edi, dword [esi + 0x54]
mov dword [esp + 0x18], eax
mov dword [edx + eax + 0x30], 0xffffffff
mov ecx, dword [esi + 0x34]
test ecx, ecx
jle 0x1003f1be
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
lea esi, [eax + edx]
mov dword [esp + 0x30], esi
imul ebx, dword [esp + 0x20], 0x78
lea esi, [edi + ebx]
mov dword [esp + 0x3c], esi
add eax, edx
add eax, 0x30
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ebx
mov edx, dword [edi + ebx + 0x74]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x3c]
xor ebx, ebx
nop word cs:[eax + eax]
cmp edx, dword [eax + ebx*4]
je 0x1003ef80
inc ebx
cmp ebx, ecx
jl 0x1003ef70
jmp 0x1003f1be
mov eax, dword [esp + 0x24]
mov dword [eax], ebx
mov eax, dword [esp + 0x30]
lea ebx, [eax + 0x18]
push ebx
mov eax, dword [esp + 0x20]
push dword [edi + eax + 0xc]
push dword [edi + eax + 4]
mov eax, dword [esp + 0x48]
push dword [eax]
push dword [ebp + 8]
call fcn.100d0050
add esp, 0x14
test eax, eax
jne 0x1003f1be
push 0x756e6963
push dword [ebx]
call fcn.100d0cc0
add esp, 8
test eax, eax
jne 0x1003f1be
mov eax, dword [esp + 0x1c]
mov eax, dword [edi + eax + 0x40]
or eax, dword [ebp + 0x10]
mov esi, dword [esp + 0x30]
mov dword [esi + 0x1c], eax
mov ecx, eax
shr ecx, 6
mov edx, ecx
and edx, 8
mov ebx, eax
and ebx, 1
lea edx, [edx + ebx*2]
mov ebx, eax
and ebx, 2
shl ebx, 0xe
or ebx, edx
mov edx, eax
and edx, 4
lea edx, [ebx + edx*8]
xor edx, 8
mov dword [esi + 0x20], edx
mov ebx, 0x10000
test al, 8
jne 0x1003f018
mov ebx, 0x20000
test al, 0x10
je 0x1003f01d
or edx, ebx
mov dword [esi + 0x20], edx
and ecx, 2
mov dword [esi + 0x24], ecx
test eax, 0x100
je 0x1003f033
or edx, 0x100000
mov dword [esi + 0x20], edx
vxorps xmm1, xmm1, xmm1
vmovups xmmword [esi], xmm1
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
mov ecx, dword [esp + 0x1c]
vmovss xmm0, dword [edi + ecx + 0x10]
vcvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
vsubss xmm0, xmm0, dword [0x10129794]
vcvttss2si ebx, xmm0
and ebx, edx
or ebx, ecx
xor ecx, ecx
test eax, 0x200
sete cl
mov dword [esp + 0x148], ecx
mov dword [esp + 0x14c], 0
mov eax, ebx
shl eax, 6
mov dword [esp + 0x150], eax
mov eax, dword [esp + 0x1c]
add eax, edi
add eax, 0x40
mov dword [esp + 0x3c], eax
vmovlps qword [esp + 0x154], xmm1
lea eax, [esp + 0x148]
push eax
push dword [esi + 0x18]
call fcn.100d0230
add esp, 8
mov eax, dword [esi + 0x18]
mov eax, dword [eax + 0x58]
vmovq xmm0, qword [eax + 0x18]
vpaddd xmm1, xmm0, xmmword [esp + 0xc0]
vpshufd xmm2, xmm1, 0x55
vpsubd xmm0, xmm2, xmm0
mov ecx, dword [eax + 0x20]
vmovd edx, xmm0
add edx, ecx
add ecx, 0x3f
vpinsrd xmm0, xmm1, ecx, 2
mov eax, dword [eax + 0x24]
mov dword [esi], ebx
vpinsrd xmm0, xmm0, edx, 3
add eax, 0x3f
sar eax, 6
vcvtsi2ss xmm1, xmm3, eax
vpsrad xmm0, xmm0, 6
vcvtdq2ps xmm0, xmm0
vmovups xmmword [esi + 4], xmm0
vmovss dword [esi + 0x14], xmm1
mov eax, dword [esp + 0x1c]
mov eax, dword [edi + eax + 0x30]
mov ecx, dword [esp + 0x3c]
movzx ebx, byte [ecx + 1]
mov ecx, dword [esp + 0x24]
mov esi, dword [ecx]
test eax, eax
jne 0x1003f136
mov ecx, dword [ebp + 0xc]
call fcn.1003a4b0
and bl, 1
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
mov dword [ecx + edx + 0x2c], eax
cmp word [eax], 0
je 0x1003f17a
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
add ecx, edx
add ecx, 0x34
add eax, 4
nop dword [eax + eax]
movzx edx, word [eax - 2]
test edx, edx
je 0x1003f17a
mov edi, dword [ecx]
cmp edi, edx
cmovg edx, edi
mov dword [ecx], edx
cmp word [eax], 0
lea eax, [eax + 4]
jne 0x1003f160
mov eax, dword [esp + 0x6c]
or al, bl
mov dword [esp + 0x6c], eax
lea eax, [esi + esi*2]
mov edi, dword [esp + 0x2c]
lea ecx, [edi + eax*8]
inc dword [ecx]
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esi + ecx + 0x34]
mov edx, dword [edi + eax*8 + 4]
cmp edx, ecx
cmovg ecx, edx
mov edx, esi
mov dword [edi + eax*8 + 4], ecx
mov eax, dword [esp + 0x20]
inc eax
mov esi, dword [ebp + 0xc]
cmp eax, dword [esi + 0x4c]
jl 0x1003ef10
jmp 0x1003f208
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x1003f1cf
push eax
call fcn.1001cac0
add esp, 4
xor ebx, ebx
mov eax, dword [esp + 0x28]
mov ecx, eax
test eax, eax
je 0x1003f1e4
push ecx
call fcn.1001cac0
add esp, 4
mov ecx, dword [esp + 0x248]
xor ecx, ebp
call fcn.100d7fe0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x6c], 0
mov edx, dword [esp + 0x28]
cmp dword [esp + 0x50], 0
jle 0x1003f6a8
mov dword [esp + 0xa0], 0
xor eax, eax
jmp 0x1003f23f
mov eax, dword [esp + 0x30]
inc eax
cmp eax, dword [esp + 0x50]
je 0x1003f46e
mov dword [esp + 0x30], eax
imul eax, eax, 0x54
mov esi, dword [edx + eax + 0x30]
mov edi, dword [edx + eax + 0x34]
lea ecx, [edx + eax]
add ecx, 0x3c
add edi, 0x20
sar edi, 5
mov dword [esp + 0x1c], eax
mov eax, dword [edx + eax + 0x40]
cmp eax, edi
mov dword [esp + 0x20], ecx
jge 0x1003f2d9
test eax, eax
je 0x1003f27b
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
add ebx, eax
jmp 0x1003f280
mov ebx, 8
cmp ebx, edi
cmovle ebx, edi
cmp eax, ebx
jge 0x1003f2d9
lea eax, [ebx*4]
push eax
call fcn.1001ca90
mov ecx, dword [esp + 0x24]
add esp, 4
mov edx, dword [ecx + 8]
test edx, edx
je 0x1003f2d3
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx]
shl ecx, 2
push ecx
push edx
push eax
mov dword [esp + 0x24], eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [eax + 8]
call fcn.1001cac0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
add esp, 4
mov dword [ecx + 8], eax
mov dword [ecx + 4], ebx
mov dword [ecx], edi
shl edi, 2
push edi
push 0
push dword [ecx + 8]
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea edi, [esi + esi*2]
mov eax, dword [esp + 0x2c]
lea esi, [eax + edi*8]
add esi, 0xc
cmp dword [eax + edi*8 + 0xc], 0
jne 0x1003f393
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x18], edi
mov edi, dword [eax + edi*8 + 4]
add edi, 0x20
sar edi, 5
mov eax, dword [esi + 4]
cmp eax, edi
jge 0x1003f37c
test eax, eax
je 0x1003f32e
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
add ebx, eax
jmp 0x1003f333
mov ebx, 8
cmp ebx, edi
cmovle ebx, edi
cmp eax, ebx
jge 0x1003f37c
lea eax, [ebx*4]
push eax
call fcn.1001ca90
add esp, 4
mov edx, dword [esi + 8]
test edx, edx
je 0x1003f376
mov ecx, dword [esi]
shl ecx, 2
push ecx
push edx
push eax
mov dword [esp + 0x30], eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push dword [esi + 8]
call fcn.1001cac0
mov eax, dword [esp + 0x28]
add esp, 4
mov dword [esi + 8], eax
mov dword [esi + 4], ebx
mov dword [esi], edi
shl edi, 2
push edi
push 0
push dword [esi + 8]
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [edx + ecx + 0x2c]
movzx eax, word [ebx]
test ax, ax
je 0x1003f230
add ecx, edx
add ecx, 0x18
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx + edi*8]
add ecx, 8
mov dword [esp + 0x24], ecx
jmp 0x1003f3e0
movzx eax, word [ebx + 4]
add ebx, 4
test ax, ax
je 0x1003f230
movzx ecx, word [ebx + 2]
test cx, cx
je 0x1003f230
cmp ax, cx
ja 0x1003f3d0
movzx edi, ax
mov dword [esp + 0x1c], ebx
jmp 0x1003f413
mov edx, dword [esp + 0x28]
nop
mov esi, ebx
mov ebx, dword [esp + 0x1c]
lea eax, [edi + 1]
movzx ecx, word [ebx + 2]
cmp edi, ecx
mov edi, eax
jae 0x1003f3d0
mov ebx, esi
mov eax, dword [esi + 8]
mov esi, edi
shr esi, 5
mov eax, dword [eax + esi*4]
bt eax, edi
jb 0x1003f400
push edi
mov eax, dword [esp + 0x1c]
push dword [eax]
call fcn.100d0d80
add esp, 8
test eax, eax
je 0x1003f3fb
mov eax, 1
shlx eax, eax, edi
mov ecx, dword [esp + 0x18]
inc dword [ecx + 0x20]
mov ecx, dword [esp + 0x24]
inc dword [ecx]
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx + 8]
or dword [ecx + esi*4], eax
mov ecx, dword [ebx + 8]
or dword [ecx + esi*4], eax
mov esi, ebx
inc dword [esp + 0xa0]
mov edx, dword [esp + 0x28]
jmp 0x1003f402
cmp dword [esp + 0x50], 0
jle 0x1003f6a8
xor edi, edi
vxorps xmm0, xmm0, xmm0
jmp 0x1003f49b
inc edi
cmp edi, dword [esp + 0x50]
je 0x1003f6a8
imul esi, edi, 0x54
lea ecx, [edx + esi]
add ecx, 0x48
mov ebx, dword [edx + esi + 0x38]
cmp dword [edx + esi + 0x4c], ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x20], ecx
jge 0x1003f520
mov eax, ebx
shl eax, 5
push eax
call fcn.1001ca90
mov edx, dword [esp + 0x2c]
add esp, 4
lea ecx, [edx + esi]
add ecx, 0x50
mov edi, dword [edx + esi + 0x50]
test edi, edi
je 0x1003f50f
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx]
shl ecx, 5
push ecx
push edi
push dword [esp + 0x24]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x18]
push dword [eax]
call fcn.1001cac0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
add esp, 4
mov dword [ecx], eax
mov ecx, dword [esp + 0x20]
mov dword [ecx + 4], ebx
mov edi, dword [esp + 0x38]
vxorps xmm0, xmm0, xmm0
lea eax, [edx + esi]
add eax, 0x3c
mov dword [esp + 0x34], eax
mov eax, dword [edx + esi + 0x3c]
mov ebx, dword [edx + esi + 0x44]
test eax, eax
jle 0x1003f67b
lea eax, [ebx + eax*4]
mov dword [esp + 0x80], eax
lea eax, [edx + esi]
add eax, 0x50
mov dword [esp + 0x30], eax
xor eax, eax
jmp 0x1003f57a
mov ebx, dword [esp + 0xc0]
add ebx, 4
add eax, 0x20
cmp ebx, dword [esp + 0x80]
jae 0x1003f670
movzx eax, ax
mov dword [esp + 0xc0], ebx
mov esi, dword [ebx]
mov dword [esp + 0x18], esi
test esi, esi
mov ebx, dword [esp + 0x30]
je 0x1003f560
xor edi, edi
mov dword [esp + 0x24], eax
jmp 0x1003f5e9
mov dword [ecx], eax
mov dword [ebx + 4], esi
mov eax, dword [ebx]
mov edx, dword [esp + 0x28]
vxorps xmm0, xmm0, xmm0
mov ebx, ecx
mov ecx, dword [ebx]
shl eax, 5
vmovups xmmword [ecx + eax], xmm0
mov dword [ecx + eax + 0x14], 0
mov dword [ecx + eax + 0x10], 0
mov esi, dword [esp + 0x1c]
mov dword [ecx + eax + 0x18], esi
mov dword [ecx + eax + 0x1c], 0
mov ecx, dword [esp + 0x20]
inc dword [ecx]
mov eax, dword [esp + 0x24]
inc edi
cmp edi, 0x20
je 0x1003f560
mov esi, dword [esp + 0x18]
bt esi, edi
jae 0x1003f5df
add eax, edi
mov dword [esp + 0x1c], eax
mov eax, dword [ecx]
cmp eax, dword [ecx + 4]
jne 0x1003f5ab
lea esi, [eax + 1]
test eax, eax
je 0x1003f613
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
add ecx, eax
jmp 0x1003f618
mov ecx, 8
cmp ecx, esi
cmovg esi, ecx
cmp eax, esi
jge 0x1003f5ab
mov eax, esi
shl eax, 5
push eax
call fcn.1001ca90
add esp, 4
mov edx, dword [ebx]
test edx, edx
mov ecx, ebx
mov ebx, dword [esp + 0x20]
je 0x1003f59a
mov ecx, dword [ebx]
shl ecx, 5
push ecx
push edx
push eax
mov dword [esp + 0x48], eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x30]
push dword [eax]
call fcn.1001cac0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
add esp, 4
jmp 0x1003f59a
mov eax, dword [esp + 0x34]
mov ebx, dword [eax + 8]
mov edi, dword [esp + 0x38]
test ebx, ebx
je 0x1003f490
mov esi, dword [esp + 0x34]
vmovlps qword [esi], xmm0
push ebx
call fcn.1001cac0
vxorps xmm0, xmm0, xmm0
mov edx, dword [esp + 0x2c]
add esp, 4
mov dword [esi + 8], 0
jmp 0x1003f490
mov edi, dword [esp + 0x54]
test edi, edi
mov eax, dword [esp + 0x2c]
jle 0x1003f6e6
lea esi, [eax + 0x14]
mov ebx, dword [esp + 0xa0]
jmp 0x1003f6c6
add esi, 0x18
dec edi
je 0x1003f6f1
mov eax, dword [esi]
test eax, eax
je 0x1003f6c0
vxorps xmm0, xmm0, xmm0
vmovlps qword [esi - 8], xmm0
push eax
call fcn.1001cac0
add esp, 4
mov dword [esi], 0
jmp 0x1003f6c0
test eax, eax
mov ebx, dword [esp + 0xa0]
je 0x1003f6fd
push dword [esp + 0x2c]
call fcn.1001cac0
add esp, 4
mov dword [esp + 0x60], 0
mov eax, 0
test ebx, ebx
jle 0x1003f725
cmp ebx, 9
mov eax, 8
cmovge eax, ebx
shl eax, 4
push eax
call fcn.1001ca90
add esp, 4
shl ebx, 4
push ebx
push 0
mov dword [esp + 0xa4], eax
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
push 0x40000
call fcn.1001ca90
add esp, 4
mov edi, eax
push 0x20
call fcn.1001ca90
add esp, 4
mov dword [esp + 0x68], eax
mov dword [eax], edi
cmp dword [esp + 0x50], 0
jle 0x10040417
mov dword [esp + 0x74], 8
mov dword [esp + 0x40], 1
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x78], 0
xor esi, esi
vbroadcastss ymm0, dword [0x1012973c]
vmovaps ymmword [esp + 0x120], ymm0
vbroadcastss ymm0, dword [0x10129738]
vmovaps ymmword [esp + 0x100], ymm0
mov edi, dword [ebp + 0xc]
mov edx, dword [esp + 0x28]
jmp 0x1003f7e4
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x5c]
mov ecx, eax
mov eax, dword [esp + 0x98]
add dword [esp + 0x78], eax
mov dword [esp + 0x40], ecx
inc esi
cmp esi, dword [esp + 0x50]
je 0x10040422
mov ebx, esi
imul esi, esi, 0x54
mov eax, dword [edx + esi + 0x38]
mov dword [esp + 0x98], eax
test eax, eax
je 0x10040410
mov eax, dword [edi + 0x54]
mov ecx, dword [esp + 0x78]
shl ecx, 4
add ecx, dword [esp + 0x9c]
mov dword [edx + esi + 0x28], ecx
mov dword [esp + 0x5c], ebx
imul ecx, ebx, 0x78
vmovss xmm0, dword [eax + ecx + 0x44]
vucomiss xmm0, dword [0x10129710]
vmovss dword [esp + 0x44], xmm0
jne 0x1003f830
jnp 0x1003f858
sub esp, 8
vmovss dword [esp + 4], xmm0
lea eax, [esp + 0x150]
mov dword [esp], eax
vzeroupper
call fcn.1003b780
vmovss xmm0, dword [esp + 0x4c]
mov edx, dword [esp + 0x30]
add esp, 8
cmp dword [edx + esi + 0x48], 0
jle 0x1003f7c0
lea eax, [edx + esi]
mov dword [esp + 0x54], eax
lea ebx, [edx + esi]
add ebx, 0x28
mov eax, dword [edi + 0xc]
mov dword [esp + 0x94], eax
xor ecx, ecx
vucomiss xmm0, dword [0x10129710]
mov edx, 0
lea eax, [esp + 0x148]
cmovne edx, eax
cmovp edx, eax
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x4c], ebx
nop word cs:[eax + eax]
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x3c], ecx
mov edi, ecx
shl edi, 5
mov dword [esp + 0x18], eax
push dword [eax + edi + 0x18]
mov ebx, dword [esp + 0x58]
push dword [ebx + 0x18]
vzeroupper
call fcn.100d0d80
add esp, 8
test eax, eax
je 0x1003f8ed
push dword [ebx + 0x20]
push eax
push dword [ebx + 0x18]
call fcn.100d0440
add esp, 0xc
test eax, eax
je 0x1003f910
mov eax, dword [esp + 0x40]
mov edi, dword [ebp + 0xc]
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x3c]
inc ecx
mov dword [esp + 0x40], eax
cmp ecx, dword [ebx + 0x20]
jl 0x1003f8b0
jmp 0x1003f7c8
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x1c]
mov esi, dword [ecx + 0x54]
test al, 0x20
je 0x1003f92d
push esi
call fcn.100d7e40
mov ebx, dword [esp + 0x58]
add esp, 4
mov eax, dword [ebx + 0x1c]
test al, 0x40
je 0x1003f93e
push esi
call fcn.100d7f40
mov ebx, dword [esp + 0x58]
add esp, 4
mov eax, dword [ebx + 0x18]
mov esi, dword [eax + 0x54]
push dword [ebx + 0x24]
push esi
call fcn.100d0b20
add esp, 8
test eax, eax
je 0x1003f965
mov eax, dword [esp + 0x40]
mov edi, dword [ebp + 0xc]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x5c]
jmp 0x1003f8f8
mov eax, dword [esp + 0x18]
lea edx, [eax + edi]
mov eax, dword [ebx + 0x18]
mov ecx, dword [eax + 0x54]
mov dword [esp + 0x24], ecx
mov eax, dword [ecx + 0x50]
mov dword [esp + 0x2c], eax
mov dword [edx], eax
mov dword [esp + 0x20], esi
mov esi, dword [ecx + 0x4c]
mov dword [edx + 4], esi
mov eax, dword [ebx + 0x18]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x64]
mov dword [edx + 8], eax
mov eax, dword [ebx + 0x18]
mov eax, dword [eax + 0x54]
xor ecx, ecx
sub ecx, dword [eax + 0x68]
mov dword [edx + 0xc], ecx
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x40]
add eax, 0x3f
sar eax, 6
vcvtsi2ss xmm0, xmm6, eax
vmovss dword [edx + 0x10], xmm0
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x5e], 7
mov dword [esp + 0x70], edx
sete byte [edx + 0x14]
mov eax, dword [esp + 0x2c]
imul esi, eax
mov edx, dword [esp + 0x64]
mov dword [esp + 0x58], esi
lea eax, [edx + esi*4]
cmp eax, 0x40001
jl 0x1003fa15
push 0x40000
call fcn.1001ca90
add esp, 4
mov ebx, eax
mov esi, dword [esp + 0x40]
lea eax, [esi + 1]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x74]
cmp esi, ecx
jne 0x1003fa40
test esi, esi
je 0x1003fa6b
mov ecx, esi
shr ecx, 0x1f
add ecx, esi
sar ecx, 1
add ecx, esi
jmp 0x1003fa70
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
vmovd xmm2, dword [0x1012973c]
vmovd xmm3, dword [0x10129738]
vmovd xmm4, dword [0x10129794]
vmovss xmm0, dword [esp + 0x44]
jmp 0x1003fb49
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x68]
vmovd xmm2, dword [0x1012973c]
vmovd xmm3, dword [0x10129738]
vmovd xmm4, dword [0x10129794]
vmovss xmm0, dword [esp + 0x44]
jmp 0x1003fb36
mov ecx, 8
vmovd xmm2, dword [0x1012973c]
vmovd xmm3, dword [0x10129738]
vmovd xmm4, dword [0x10129794]
vmovss xmm0, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
cmp ecx, edx
cmovle ecx, edx
cmp esi, ecx
jge 0x1003fb08
mov dword [esp + 0x74], ecx
lea eax, [ecx*4]
push eax
call fcn.1001ca90
add esp, 4
mov ecx, dword [esp + 0x68]
test ecx, ecx
je 0x1003fb12
mov dword [esp + 0x20], ebx
mov esi, dword [esp + 0x40]
lea edx, [esi*4]
push edx
push ecx
push eax
mov ebx, ecx
mov dword [esp + 0x3c], eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push ebx
call fcn.1001cac0
mov ebx, dword [esp + 0x24]
add esp, 4
vmovd xmm2, dword [0x1012973c]
vmovd xmm3, dword [0x10129738]
vmovd xmm4, dword [0x10129794]
vmovss xmm0, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
jmp 0x1003fb36
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x74], esi
jmp 0x1003fb36
mov esi, dword [esp + 0x40]
vmovd xmm2, dword [0x1012973c]
vmovd xmm3, dword [0x10129738]
vmovd xmm4, dword [0x10129794]
vmovss xmm0, dword [esp + 0x44]
mov ecx, eax
mov dword [ecx + esi*4], ebx
mov eax, dword [esp + 0x70]
mov eax, dword [eax]
mov dword [esp + 0x2c], eax
xor edx, edx
mov ebx, dword [esp + 0x48]
shl dword [esp + 0x58], 2
mov dword [esp + 0x48], ebx
mov eax, dword [ecx + ebx*4 - 4]
mov dword [esp + 0x7c], eax
add eax, edx
mov ebx, dword [esp + 0x18]
mov dword [ebx + edi + 0x1c], eax
mov edi, eax
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x38], eax
mov eax, dword [esi + 0x50]
mov dword [esp + 0x18], eax
mov ebx, dword [esi + 0x58]
mov eax, dword [esi + 0x54]
mov dword [esp + 0x34], eax
movzx eax, byte [esi + 0x5e]
cmp eax, 1
mov dword [esp + 0x68], ecx
mov dword [esp + 0x64], edx
mov dword [esp + 0x20], ebx
je 0x1003fc83
cmp eax, 7
je 0x1003fcab
cmp eax, 2
mov edx, dword [esp + 0x18]
jne 0x1004039c
vucomiss xmm0, dword [0x10129710]
jne 0x1003fbc1
jnp 0x1003fdd6
cmp dword [esp + 0x38], 0
je 0x1004039c
mov eax, edx
and eax, 0xfffffffe
xor esi, esi
jmp 0x1003fbfe
inc esi
mov ecx, dword [esp + 0x34]
add dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x2c]
lea edi, [edi + ecx*4]
cmp esi, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
je 0x1004039c
test edx, edx
je 0x1003fbe0
mov dword [esp + 0x24], esi
mov edx, 0
cmp dword [esp + 0x18], 1
mov ebx, edi
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
je 0x1003fc51
xor edx, edx
nop
movzx ecx, byte [esi + edx]
movzx ecx, byte [edi + ecx]
shl ecx, 0x18
or ecx, 0xffffff
mov dword [ebx + edx*4], ecx
movzx ecx, byte [esi + edx + 1]
movzx ecx, byte [edi + ecx]
shl ecx, 0x18
or ecx, 0xffffff
mov dword [ebx + edx*4 + 4], ecx
add edx, 2
cmp eax, edx
jne 0x1003fc20
test byte [esp + 0x18], 1
mov edi, ebx
mov esi, dword [esp + 0x24]
je 0x1003fbe0
mov ecx, dword [esp + 0x20]
movzx ecx, byte [ecx + edx]
mov ebx, edi
mov edi, dword [esp + 0x1c]
movzx ecx, byte [edi + ecx]
mov edi, ebx
shl ecx, 0x18
or ecx, 0xffffff
mov dword [ebx + edx*4], ecx
jmp 0x1003fbe0
vucomiss xmm0, dword [0x10129710]
mov eax, dword [esp + 0x1c]
jne 0x1003fc97
jnp 0x1003ff92
movzx ebx, byte [eax]
movzx eax, byte [esp + 0x247]
mov byte [esp + 0x24], al
jmp 0x1003ff99
vucomiss xmm0, dword [0x10129710]
jne 0x1003fcbb
jnp 0x1004002f
cmp dword [esp + 0x38], 0
mov ecx, dword [esp + 0x18]
je 0x1004039c
xor edx, edx
jmp 0x1003fcee
mov edx, dword [esp + 0x24]
inc edx
add ebx, dword [esp + 0x34]
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x2c]
lea edi, [edi + eax*4]
cmp edx, dword [esp + 0x38]
je 0x1004039c
mov dword [esp + 0x24], edx
test ecx, ecx
mov ebx, dword [esp + 0x20]
je 0x1003fcd0
xor esi, esi
mov dword [esp + 0x30], edi
movzx ecx, byte [ebx + esi*4]
movzx edx, byte [ebx + esi*4 + 3]
vcvtsi2ss xmm0, xmm5, ecx
vmulss xmm1, xmm0, xmm2
vcvtsi2ss xmm0, xmm5, edx
vdivss xmm1, xmm1, xmm0
vaddss xmm1, xmm1, xmm3
vcvttss2si ecx, xmm1
mov edi, ecx
vsubss xmm1, xmm1, xmm4
vcvttss2si ebx, xmm1
sar edi, 0x1f
and ebx, edi
mov eax, dword [esp + 0x20]
movzx edi, byte [eax + esi*4 + 1]
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + edx]
shl eax, 0x18
or ebx, ecx
mov ecx, dword [esp + 0x1c]
movzx edx, byte [ecx + ebx]
mov ebx, dword [esp + 0x20]
shl edx, 0x10
vcvtsi2ss xmm1, xmm5, edi
vmulss xmm1, xmm1, xmm2
vdivss xmm1, xmm1, xmm0
vaddss xmm1, xmm1, xmm3
vcvttss2si ecx, xmm1
or edx, eax
mov eax, ecx
sar eax, 0x1f
vsubss xmm1, xmm1, xmm4
vcvttss2si edi, xmm1
and edi, eax
movzx eax, byte [ebx + esi*4 + 2]
or edi, ecx
mov ecx, dword [esp + 0x1c]
movzx edi, byte [ecx + edi]
shl edi, 8
or edi, edx
vcvtsi2ss xmm1, xmm5, eax
vmulss xmm1, xmm1, xmm2
vdivss xmm0, xmm1, xmm0
vaddss xmm0, xmm0, xmm3
vcvttss2si eax, xmm0
mov ecx, eax
vsubss xmm0, xmm0, xmm4
vcvttss2si edx, xmm0
sar ecx, 0x1f
and edx, ecx
or edx, eax
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + edx]
mov ecx, dword [esp + 0x18]
or eax, edi
mov edi, dword [esp + 0x30]
mov dword [edi + esi*4], eax
inc esi
cmp ecx, esi
jne 0x1003fd00
jmp 0x1003fcd0
cmp dword [esp + 0x38], 0
je 0x1004039c
mov eax, dword [esp + 0x64]
lea eax, [eax + edx*4]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x2c]
lea eax, [eax*4]
mov dword [esp + 0xc0], eax
mov eax, edx
and eax, 0xffffffe0
mov dword [esp + 0x80], eax
mov eax, edx
and eax, 3
mov dword [esp + 0x30], eax
xor esi, esi
mov ebx, dword [esp + 0x20]
jmp 0x1003fe36
inc esi
add ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
lea edi, [edi + eax*4]
cmp esi, dword [esp + 0x38]
je 0x1004039c
test edx, edx
je 0x1003fe20
xor eax, eax
cmp edx, 0x20
jb 0x1003fef0
mov ecx, dword [esp + 0x34]
imul ecx, esi
add ecx, edx
add ecx, dword [esp + 0x20]
cmp edi, ecx
jae 0x1003fe73
mov ecx, dword [esp + 0xc0]
imul ecx, esi
add ecx, dword [esp + 0xa0]
add ecx, dword [esp + 0x7c]
cmp ebx, ecx
jb 0x1003fef0
xor eax, eax
mov ecx, dword [esp + 0x80]
nop dword [eax]
vpmovzxbd ymm0, qword [ebx + eax]
vpmovzxbd ymm1, qword [ebx + eax + 8]
vpmovzxbd ymm2, qword [ebx + eax + 0x10]
vpmovzxbd ymm3, qword [ebx + eax + 0x18]
vpslld ymm0, ymm0, 0x18
vpslld ymm1, ymm1, 0x18
vpslld ymm2, ymm2, 0x18
vpslld ymm3, ymm3, 0x18
vpbroadcastd ymm4, dword [0x10130894]
vpor ymm0, ymm0, ymm4
vpor ymm1, ymm1, ymm4
vpor ymm2, ymm2, ymm4
vpor ymm3, ymm3, ymm4
vmovdqu ymmword [edi + eax*4], ymm0
vmovdqu ymmword [edi + eax*4 + 0x20], ymm1
vmovdqu ymmword [edi + eax*4 + 0x40], ymm2
vmovdqu ymmword [edi + eax*4 + 0x60], ymm3
add eax, 0x20
cmp ecx, eax
jne 0x1003fe80
mov eax, ecx
cmp edx, ecx
je 0x1003fe20
mov dword [esp + 0x24], esi
mov ecx, edx
mov edx, eax
not edx
add edx, ecx
mov esi, dword [esp + 0x30]
test esi, esi
je 0x1003ff24
nop word cs:[eax + eax]
movzx ecx, byte [ebx + eax]
shl ecx, 0x18
or ecx, 0xffffff
mov dword [edi + eax*4], ecx
inc eax
dec esi
jne 0x1003ff10
cmp edx, 3
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
jb 0x1003fe20
nop word cs:[eax + eax]
movzx ecx, byte [ebx + eax]
shl ecx, 0x18
or ecx, 0xffffff
mov dword [edi + eax*4], ecx
movzx ecx, byte [ebx + eax + 1]
shl ecx, 0x18
or ecx, 0xffffff
mov dword [edi + eax*4 + 4], ecx
movzx ecx, byte [ebx + eax + 2]
shl ecx, 0x18
or ecx, 0xffffff
mov dword [edi + eax*4 + 8], ecx
movzx ecx, byte [ebx + eax + 3]
shl ecx, 0x18
or ecx, 0xffffff
mov dword [edi + eax*4 + 0xc], ecx
add eax, 4
cmp edx, eax
jne 0x1003ff40
jmp 0x1003fe20
mov byte [esp + 0x24], 0xff
xor ebx, ebx
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x38], 0
je 0x1004039c
xor ecx, ecx
jmp 0x1003ffd4
mov ecx, dword [esp + 0x30]
inc ecx
mov eax, dword [esp + 0x34]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
mov edi, esi
lea edi, [esi + eax*4]
cmp ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
je 0x1004039c
mov dword [esp + 0x30], ecx
mov esi, edi
test eax, eax
je 0x1003ffb0
xor edx, edx
mov edi, dword [esp + 0x20]
xor eax, eax
jmp 0x1004000a
mov ecx, ebx
movzx ecx, cl
shl ecx, 0x18
or ecx, 0xffffff
mov dword [esi + edx*4], ecx
inc edx
add al, al
cmp dword [esp + 0x18], edx
je 0x1003ffb0
test dl, 7
je 0x10040020
test al, al
jns 0x1003fff0
jmp 0x10040028
movzx eax, byte [edi]
inc edi
test al, al
jns 0x1003fff0
movzx ecx, byte [esp + 0x24]
jmp 0x1003fff5
cmp dword [esp + 0x38], 0
mov edx, dword [esp + 0x18]
je 0x1004039c
lea eax, [edx*4]
mov dword [esp + 0xfc], eax
mov eax, dword [esp + 0x64]
lea eax, [eax + edx*4]
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x2c]
lea eax, [eax*4]
mov dword [esp + 0xf4], eax
mov eax, edx
and eax, 0xfffffff8
mov dword [esp + 0xf0], eax
mov dword [esp + 0x40], 0
mov eax, dword [esp + 0x20]
jmp 0x100400b0
mov ecx, dword [esp + 0x40]
inc ecx
add esi, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
lea edi, [edi + eax*4]
mov dword [esp + 0x40], ecx
cmp ecx, dword [esp + 0x38]
mov eax, esi
je 0x1004039c
test edx, edx
mov esi, eax
je 0x10040090
mov eax, esi
xor ebx, ebx
cmp edx, 8
jae 0x100400d0
mov esi, eax
jmp 0x100402c0
mov ecx, dword [esp + 0x34]
imul ecx, dword [esp + 0x40]
add ecx, dword [esp + 0xfc]
add ecx, dword [esp + 0x20]
cmp edi, ecx
mov esi, eax
jae 0x10040109
mov ecx, dword [esp + 0xf4]
imul ecx, dword [esp + 0x40]
add ecx, dword [esp + 0xf8]
add ecx, dword [esp + 0x7c]
cmp esi, ecx
jb 0x100402c0
mov ecx, esi
xor esi, esi
mov eax, dword [esp + 0xf0]
nop word cs:[eax + eax]
vmovdqu xmm0, xmmword [ecx + esi*4]
vmovdqu xmm1, xmmword [ecx + esi*4 + 0x10]
vmovdqa xmm3, xmmword [0x10130d70]
vpshufb xmm2, xmm1, xmm3
vpshufb xmm3, xmm0, xmm3
vpunpckldq xmm2, xmm3, xmm2
vmovdqa xmm4, xmmword [0x10130d80]
vpshufb xmm3, xmm1, xmm4
vpshufb xmm4, xmm0, xmm4
vpunpckldq xmm3, xmm4, xmm3
vmovdqa xmmword [esp + 0x80], xmm3
vmovdqa xmm5, xmmword [0x10130d90]
vpshufb xmm3, xmm1, xmm5
vpshufb xmm5, xmm0, xmm5
vmovdqa xmm6, xmmword [0x10130da0]
vpshufb xmm1, xmm1, xmm6
vpshufb xmm0, xmm0, xmm6
vpunpckldq xmm0, xmm0, xmm1
vpmovzxbd ymm0, xmm0
vmovdqa ymmword [esp + 0xa0], ymm0
vpmovzxbd ymm1, xmm2
vcvtdq2ps ymm1, ymm1
vmovaps ymm7, ymmword [esp + 0x120]
vmulps ymm2, ymm1, ymm7
vcvtdq2ps ymm1, ymm0
vdivps ymm2, ymm2, ymm1
vpunpckldq xmm5, xmm5, xmm3
vmovaps ymm0, ymmword [esp + 0x100]
vaddps ymm2, ymm2, ymm0
vcvttps2dq ymm6, ymm2
vpsrad ymm4, ymm6, 0x1f
vbroadcastss ymm3, dword [0x10129794]
vsubps ymm2, ymm2, ymm3
vcvttps2dq ymm2, ymm2
vpand ymm2, ymm2, ymm4
vpor ymm2, ymm6, ymm2
vmovdqa ymmword [esp + 0xc0], ymm2
vpmovzxbd ymm4, qword [esp + 0x80]
vcvtdq2ps ymm4, ymm4
vmulps ymm4, ymm4, ymm7
vdivps ymm4, ymm4, ymm1
vaddps ymm4, ymm4, ymm0
vcvttps2dq ymm6, ymm4
vpsrad ymm2, ymm6, 0x1f
vsubps ymm4, ymm4, ymm3
vcvttps2dq ymm4, ymm4
vpand ymm4, ymm4, ymm2
vpor ymm4, ymm6, ymm4
vpmovzxbd ymm5, xmm5
vcvtdq2ps ymm5, ymm5
vmulps ymm5, ymm5, ymm7
vdivps ymm1, ymm5, ymm1
vaddps ymm1, ymm1, ymm0
vcvttps2dq ymm5, ymm1
vsubps ymm1, ymm1, ymm3
vpsrad ymm3, ymm5, 0x1f
vcvttps2dq ymm1, ymm1
vpand ymm1, ymm1, ymm3
vmovdqa ymm0, ymmword [esp + 0xa0]
vpslld ymm0, ymm0, 0x18
vpor ymm0, ymm5, ymm0
vpor ymm0, ymm1, ymm0
vmovdqa ymm1, ymmword [esp + 0xc0]
vpslld ymm1, ymm1, 0x10
vpor ymm0, ymm0, ymm1
vpslld ymm1, ymm4, 8
vpor ymm0, ymm0, ymm1
vmovdqu ymmword [edi + esi*4], ymm0
add esi, 8
cmp eax, esi
jne 0x10040120
mov esi, ecx
mov ebx, eax
cmp edx, eax
vmovd xmm2, dword [0x1012973c]
vmovd xmm3, dword [0x10129738]
vmovd xmm4, dword [0x10129794]
je 0x10040090
nop word cs:[eax + eax]
mov dword [esp + 0x30], edi
mov dword [esp + 0x24], esi
nop dword [eax + eax]
movzx ecx, byte [esi + ebx*4]
mov eax, dword [esp + 0x24]
movzx esi, byte [eax + ebx*4 + 3]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, ecx
vmulss xmm1, xmm0, xmm2
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, esi
vdivss xmm1, xmm1, xmm0
vaddss xmm1, xmm1, xmm3
vcvttss2si eax, xmm1
mov ecx, dword [esp + 0x24]
movzx edi, byte [ecx + ebx*4 + 1]
mov ecx, eax
sar ecx, 0x1f
vsubss xmm1, xmm1, xmm4
vcvttss2si edx, xmm1
and edx, ecx
or edx, eax
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm1, xmm7, edi
vmulss xmm1, xmm1, xmm2
vdivss xmm1, xmm1, xmm0
vaddss xmm1, xmm1, xmm3
vcvttss2si ecx, xmm1
mov eax, ecx
vsubss xmm1, xmm1, xmm4
vcvttss2si edi, xmm1
sar eax, 0x1f
and edi, eax
mov eax, dword [esp + 0x24]
movzx eax, byte [eax + ebx*4 + 2]
shl esi, 0x18
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm1, xmm7, eax
vmulss xmm1, xmm1, xmm2
vdivss xmm0, xmm1, xmm0
vaddss xmm0, xmm0, xmm3
vcvttss2si eax, xmm0
or edi, ecx
or esi, eax
sar eax, 0x1f
vsubss xmm0, xmm0, xmm4
vcvttss2si ecx, xmm0
and ecx, eax
or esi, ecx
shl edx, 0x10
or esi, edx
mov edx, dword [esp + 0x18]
shl edi, 8
or esi, edi
mov edi, dword [esp + 0x30]
mov dword [edi + ebx*4], esi
mov esi, dword [esp + 0x24]
inc ebx
cmp edx, ebx
jne 0x100402d0
jmp 0x10040090
mov ecx, dword [esp + 0x70]
mov eax, dword [ecx]
mov esi, dword [esp + 0x94]
add eax, esi
mov ebx, dword [esp + 0x4c]
mov edx, dword [ebx]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x3c]
shl edx, 4
mov edi, dword [esp + 0x18]
mov word [edi + edx + 4], ax
mov eax, dword [esp + 0x58]
add dword [esp + 0x64], eax
mov eax, dword [ecx + 4]
add eax, esi
mov ecx, dword [ebx]
mov word [ecx + edx + 6], ax
mov eax, dword [ebx]
movzx ecx, word [eax + edx + 4]
movzx eax, word [eax + edx + 6]
imul eax, ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x60], eax
mov edi, dword [ebp + 0xc]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x48]
jmp 0x1003f900
mov esi, ebx
jmp 0x1003f7d9
mov dword [esp + 0x40], 1
mov edi, dword [ebp + 0xc]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, dword [esp + 0x60]
vcvtss2sd xmm0, xmm0, xmm0
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jb 0x10040440
vsqrtsd xmm0, xmm0, xmm0
jmp 0x10040463
sub esp, 8
vmovsd qword [esp], xmm0
vzeroupper
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
add esp, 8
fstp qword [esp + 0x140]
vmovsd xmm0, qword [esp + 0x140]
mov dword [edi + 0x20], 0
mov ebx, dword [edi + 8]
test ebx, ebx
jg 0x100404a4
vcvtsd2ss xmm0, xmm0, xmm0
vcvttss2si eax, xmm0
mov ebx, 0x1000
cmp eax, 0xb32
jg 0x100404a4
mov ebx, 0x800
cmp eax, 0x598
jg 0x100404a4
xor ebx, ebx
cmp eax, 0x2cc
setge bl
shl ebx, 9
add ebx, 0x200
mov dword [edi + 0x1c], ebx
mov edx, ebx
sub edx, dword [edi + 0xc]
jle 0x100404e8
add edi, 0x1c
cmp edx, 9
mov eax, 8
cmovge eax, edx
shl eax, 3
push eax
mov dword [esp + 0x20], edx
vzeroupper
call fcn.1001ca90
mov edx, dword [esp + 0x20]
add esp, 4
mov esi, eax
mov ebx, dword [edi]
xor eax, eax
cmp edx, 1
jne 0x100404f4
xor ecx, ecx
mov edi, dword [ebp + 0xc]
jmp 0x10040591
lea eax, [edx - 1]
xor esi, esi
xor ecx, ecx
jmp 0x10040591
mov dword [esp + 0x18], ebx
mov dword [esp + 0x60], esi
lea eax, [edx - 1]
lea ecx, [edx - 2]
mov edx, eax
and edx, 7
xor edi, edi
cmp ecx, 7
jb 0x10040559
mov ebx, eax
and ebx, 0xfffffff8
xor edi, edi
mov ecx, dword [esp + 0x60]
nop dword [eax]
lea esi, [ecx + 8]
mov dword [ecx + 4], esi
lea esi, [ecx + 0x10]
mov dword [ecx + 0xc], esi
lea esi, [ecx + 0x18]
mov dword [ecx + 0x14], esi
lea esi, [ecx + 0x20]
mov dword [ecx + 0x1c], esi
lea esi, [ecx + 0x28]
mov dword [ecx + 0x24], esi
lea esi, [ecx + 0x30]
mov dword [ecx + 0x2c], esi
lea esi, [ecx + 0x38]
mov dword [ecx + 0x34], esi
add edi, 8
lea esi, [ecx + 0x40]
mov dword [ecx + 0x3c], esi
mov ecx, esi
cmp ebx, edi
jne 0x10040520
test edx, edx
je 0x10040580
mov esi, dword [esp + 0x60]
lea ecx, [esi + edi*8]
add ecx, 8
mov ebx, dword [esp + 0x18]
nop dword [eax + eax]
mov dword [ecx - 4], ecx
add ecx, 8
dec edx
jne 0x10040570
mov ecx, eax
mov edi, dword [ebp + 0xc]
jmp 0x1004058d
mov ecx, eax
mov edi, dword [ebp + 0xc]
mov esi, dword [esp + 0x60]
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov dword [esi + ecx*8 + 4], 0
vmovsd xmm0, qword [0x10129930]
vmovsd qword [esp + 0x154], xmm0
mov dword [esp + 0x60], esi
mov dword [esp + 0x164], esi
lea ecx, [esp + 0x168]
mov dword [esp + 0x160], ecx
mov dword [esp + 0x148], ebx
mov dword [esp + 0x14c], 0x8000
mov dword [esp + 0x15c], edx
add eax, ebx
mov ecx, edx
cdq
idiv ecx
mov dword [esp + 0x150], eax
mov dword [esp + 0x168], 0
lea eax, [esp + 0x170]
mov dword [esp + 0x16c], eax
mov word [esp + 0x170], bx
mov word [esp + 0x172], 0xffff
mov dword [esp + 0x174], 0
lea eax, [esp + 0x148]
push eax
push edi
vzeroupper
call fcn.1003bea0
add esp, 8
cmp dword [esp + 0x50], 0
jle 0x10040e06
xor eax, eax
jmp 0x10040662
mov eax, dword [esp + 0x98]
inc eax
cmp eax, dword [esp + 0x50]
je 0x10040e06
mov dword [esp + 0x98], eax
imul ebx, eax, 0x54
mov eax, dword [esp + 0x28]
mov eax, dword [eax + ebx + 0x38]
test eax, eax
je 0x10040650
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + ebx + 0x28]
jle 0x10040d40
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x58]
lea edx, [eax - 1]
and eax, 3
xor ecx, ecx
mov dword [esp + 0x78], edx
cmp edx, 3
jb 0x100406de
mov edx, dword [esp + 0x58]
and edx, 0xfffffffc
mov ecx, dword [esp + 0x44]
lea esi, [ecx + 0x3c]
xor ecx, ecx
nop word cs:[eax + eax]
mov dword [esi - 0x30], ecx
lea edi, [ecx + 1]
mov dword [esi - 0x20], edi
lea edi, [ecx + 2]
mov dword [esi - 0x10], edi
lea edi, [ecx + 3]
mov dword [esi], edi
add ecx, 4
add esi, 0x40
cmp ecx, edx
jne 0x100406c0
test eax, eax
je 0x1004070b
mov edx, ecx
shl edx, 4
mov esi, dword [esp + 0x44]
add edx, esi
add edx, 0xc
shl eax, 4
xor esi, esi
nop word cs:[eax + eax]
mov dword [edx + esi], ecx
inc ecx
add esi, 0x10
cmp eax, esi
jne 0x10040700
mov dword [esp + 0x94], ebx
push 0x1003eda0
push 0x10
push dword [esp + 0x60]
mov esi, dword [esp + 0x50]
push esi
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_qsort]
mov ecx, esi
add esp, 0x10
xor eax, eax
jmp 0x10040753
mov dword [ecx + esi + 8], 0
inc eax
cmp eax, dword [esp + 0x58]
je 0x10040cd0
mov esi, eax
shl esi, 4
movzx edx, word [ecx + esi + 4]
test edx, edx
je 0x10040740
movzx ebx, word [ecx + esi + 6]
mov edi, ebx
mov dword [esp + 0x54], ebx
test ebx, ebx
je 0x10040740
mov dword [esp + 0x70], eax
mov ebx, dword [esp + 0x148]
mov ecx, dword [esp + 0x150]
mov dword [esp + 0x7c], edx
lea edi, [edx + ecx]
dec edi
mov eax, edi
cdq
idiv ecx
sub edi, edx
cmp edi, ebx
jg 0x10040c80
mov eax, dword [esp + 0x14c]
mov dword [esp + 0x100], eax
cmp eax, dword [esp + 0x54]
jl 0x10040c80
mov eax, dword [esp + 0x160]
movzx edx, word [eax]
lea ecx, [edi + edx]
cmp ecx, ebx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x2c], eax
jle 0x100407ec
xor eax, eax
mov dword [esp + 0x5c], 0x40000000
mov ebx, dword [esp + 0x158]
mov dword [esp + 0x34], 0x40000000
jmp 0x100409f1
mov dword [esp + 0x18], ecx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x80], 0
mov dword [esp + 0x5c], 0x40000000
mov ebx, dword [esp + 0x158]
mov dword [esp + 0xa0], edx
mov dword [esp + 0xc0], eax
lea eax, [esp + 0x160]
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], 0x40000000
mov dword [esp + 0x64], edx
mov dword [esp + 0x120], ebx
jmp 0x100408a0
mov eax, dword [esp + 0x34]
cmp esi, eax
cmovl eax, esi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x80]
cmovl eax, dword [esp + 0x38]
mov dword [esp + 0x80], eax
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0xc0]
mov ecx, eax
mov eax, dword [eax + 4]
add ecx, 4
mov dword [esp + 0x38], ecx
movzx ecx, word [eax]
mov dword [esp + 0xa0], ecx
add ecx, edi
mov dword [esp + 0xc0], eax
mov dword [esp + 0x18], ecx
cmp ecx, dword [esp + 0x48]
jg 0x100409d0
mov esi, 0
mov edx, 0
test edi, edi
jle 0x10040970
xor edx, edx
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x20], eax
xor eax, eax
xor ebx, ebx
mov ecx, dword [esp + 0xc0]
jmp 0x10040921
mov ecx, dword [ecx + 4]
mov dword [esp + 0x30], ecx
movzx esi, word [ecx]
mov dword [esp + 0x1c], esi
sub esi, dword [esp + 0x20]
lea ecx, [esi + eax]
mov dword [esp + 0x20], ecx
mov edi, dword [esp + 0x3c]
mov ecx, edi
sub ecx, eax
cmp dword [esp + 0x20], edi
cmovle ecx, esi
mov esi, dword [esp + 0x18]
imul edx, ecx
mov edi, dword [esp + 0x24]
add edi, edx
mov edx, edi
add eax, ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], ecx
mov edi, ebx
mov dword [esp + 0x18], esi
cmp esi, ecx
mov esi, ebx
mov ecx, dword [esp + 0x30]
jle 0x10040970
mov dword [esp + 0x24], edx
movzx esi, word [ecx + 2]
mov edx, ebx
sub edx, esi
jge 0x100408d0
mov edx, esi
sub edx, ebx
imul edx, eax
mov ecx, dword [ecx + 4]
movzx edi, word [ecx]
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x20]
cmp ebx, edi
mov dword [esp + 0x30], ecx
jb 0x10040955
mov edi, ebx
mov ebx, esi
mov ecx, dword [esp + 0x1c]
sub ecx, edi
mov esi, dword [esp + 0x18]
jmp 0x100408ff
mov ebx, dword [esp + 0x120]
test ebx, ebx
je 0x10040840
mov eax, dword [esp + 0x54]
add eax, esi
cmp eax, dword [esp + 0x100]
jg 0x10040860
mov ecx, edx
mov eax, esi
cmp esi, dword [esp + 0x34]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x64]
jl 0x100409b8
jne 0x1004086c
cmp ecx, dword [esp + 0x5c]
jge 0x1004086c
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x80], eax
mov dword [esp + 0x5c], ecx
jmp 0x1004086c
cmp dword [esp + 0x80], 0
je 0x100409ef
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
movzx ecx, word [eax]
mov eax, dword [esp + 0x80]
jmp 0x100409f3
xor eax, eax
xor ecx, ecx
cmp ebx, 1
mov dword [esp + 0x48], ecx
jne 0x10040bdc
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov ebx, eax
cmp edi, edx
jle 0x10040a1a
mov ebx, eax
nop
mov ebx, dword [ebx + 4]
movzx eax, word [ebx]
cmp edi, eax
jg 0x10040a10
lea eax, [esp + 0x160]
mov dword [esp + 0x38], eax
mov eax, ecx
jmp 0x10040a51
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x120]
mov ebx, dword [ebx + 4]
test ebx, ebx
je 0x10040bdc
mov dword [esp + 0x80], eax
mov dword [esp + 0x120], ebx
movzx ebx, word [ebx]
mov dword [esp + 0x30], ebx
sub ebx, edi
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
mov esi, ecx
mov edi, eax
lea eax, [ecx + 4]
mov ecx, dword [ecx + 4]
movzx edx, word [ecx]
cmp ebx, edx
jge 0x10040a70
mov dword [esp + 0xc0], ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x2c], esi
movzx eax, word [esi]
xor ecx, ecx
mov edx, 0
mov dword [esp + 0x1c], eax
cmp word [esp + 0x30], ax
jbe 0x10040b60
xor edx, edx
xor ebx, ebx
xor esi, esi
mov edi, dword [esp + 0x2c]
jmp 0x10040b0d
mov edi, dword [edi + 4]
mov dword [esp + 0x18], edi
movzx eax, word [edi]
mov dword [esp + 0x20], eax
mov edx, eax
sub edx, dword [esp + 0x1c]
lea eax, [edx + ebx]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x3c]
mov edi, eax
sub edi, ebx
cmp dword [esp + 0x1c], eax
cmovle edi, edx
mov edx, dword [esp + 0x24]
imul ecx, edi
mov eax, esi
add edx, ecx
add ebx, edi
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x1c], ecx
mov esi, eax
cmp ecx, dword [esp + 0x30]
mov ecx, eax
mov edi, dword [esp + 0x18]
jae 0x10040b60
movzx eax, word [edi + 2]
mov ecx, esi
sub ecx, eax
mov dword [esp + 0x24], edx
jge 0x10040ac0
mov dword [esp + 0xa0], eax
mov ecx, eax
sub ecx, esi
imul ecx, ebx
mov edi, dword [edi + 4]
mov dword [esp + 0x18], edi
movzx edi, word [edi]
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0x1c]
cmp eax, edx
mov dword [esp + 0x20], edi
jge 0x10040b50
sub edi, edx
jmp 0x10040b52
sub edi, eax
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0xa0]
jmp 0x10040af3
mov eax, dword [esp + 0x54]
add eax, ecx
cmp eax, dword [esp + 0x100]
jg 0x10040a30
cmp ecx, dword [esp + 0x34]
jg 0x10040a30
mov dword [esp + 0xa0], ecx
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x120]
jl 0x10040bb9
cmp edx, dword [esp + 0x5c]
jl 0x10040bb9
jne 0x10040a46
mov ecx, dword [esp + 0xc0]
cmp ecx, dword [esp + 0x48]
jge 0x10040a46
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x5c], edx
jmp 0x10040a46
test eax, eax
je 0x10040c80
mov edi, eax
mov eax, dword [esp + 0x54]
add eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x100]
jg 0x10040c80
mov ecx, dword [esp + 0x164]
test ecx, ecx
je 0x10040c80
mov edx, eax
mov ebx, dword [esp + 0x48]
mov eax, ebx
mov word [ecx], bx
mov word [ecx + 2], dx
mov edx, dword [ecx + 4]
mov dword [esp + 0x164], edx
mov edx, dword [edi]
movzx esi, word [edx]
cmp ebx, esi
jle 0x10040c32
mov esi, dword [edx + 4]
add edx, 4
mov edi, edx
mov edx, esi
mov dword [edi], ecx
mov ebx, dword [edx + 4]
mov esi, dword [esp + 0x48]
add esi, dword [esp + 0x7c]
mov dword [esp + 0x48], esi
test ebx, ebx
je 0x10040c95
lea edi, [edx + 4]
nop word [eax + eax]
mov esi, ebx
movzx ebx, word [ebx]
cmp dword [esp + 0x48], ebx
jl 0x10040c95
mov ebx, dword [esp + 0x164]
mov dword [edi], ebx
mov dword [esp + 0x164], edx
lea edi, [esi + 4]
mov ebx, dword [esi + 4]
mov edx, esi
test ebx, ebx
jne 0x10040c50
jmp 0x10040c97
mov ecx, dword [esp + 0x44]
mov dword [ecx + esi + 8], 0xffffffff
mov eax, dword [esp + 0x70]
jmp 0x10040748
mov esi, edx
mov dword [ecx + 4], esi
movzx ecx, word [esi]
mov edx, dword [esp + 0x48]
cmp edx, ecx
jle 0x10040caa
mov ecx, edx
mov word [esi], cx
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x4c]
mov word [ecx + edx + 8], ax
mov eax, dword [esp + 0x34]
mov word [ecx + edx + 0xa], ax
jmp 0x10040c8c
push 0x1003ede0
push 0x10
mov edi, dword [esp + 0x60]
push edi
push ecx
mov esi, ecx
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_qsort]
add esp, 0x10
cmp dword [esp + 0x78], 0
je 0x10040d70
and edi, 0xfffffffe
lea edx, [esi + 0x1c]
xor eax, eax
jmp 0x10040d0e
mov dword [edx], ebx
add eax, 2
add edx, 0x20
mov ecx, edi
cmp edi, eax
je 0x10040d72
mov ebx, 1
cmp word [edx - 0x14], 0xffff
mov ecx, 1
jne 0x10040d29
xor ecx, ecx
cmp word [edx - 0x12], 0xffff
setne cl
mov dword [edx - 0x10], ecx
cmp word [edx - 4], 0xffff
jne 0x10040d00
xor ebx, ebx
cmp word [edx - 2], 0xffff
setne bl
jmp 0x10040d00
push 0x1003eda0
push 0x10
mov esi, dword [esp + 0x60]
push esi
push ecx
mov edi, ecx
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_qsort]
add esp, 0x10
push 0x1003ede0
push 0x10
push esi
push edi
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_qsort]
mov edx, dword [esp + 0x38]
add esp, 0x10
jmp 0x10040da7
xor eax, eax
test byte [esp + 0x58], 1
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x94]
je 0x10040da7
shl eax, 4
mov ecx, 1
mov esi, dword [esp + 0x44]
cmp word [esi + eax + 8], 0xffff
jne 0x10040da3
xor ecx, ecx
cmp word [esi + eax + 0xa], 0xffff
setne cl
mov dword [esi + eax + 0xc], ecx
lea eax, [edx + ebx]
add eax, 0x38
mov dword [esp + 0x1c], eax
mov edi, dword [eax]
test edi, edi
jle 0x10040650
mov eax, dword [esp + 0x28]
lea ecx, [eax + ebx]
add ecx, 0x28
xor edx, edx
mov esi, 0xc
jmp 0x10040ddc
inc edx
add esi, 0x10
cmp edx, edi
jge 0x10040650
mov ebx, dword [ecx]
cmp dword [ebx + esi], 0
je 0x10040dd0
movzx edi, word [ebx + esi - 2]
movzx ebx, word [ebx + esi - 6]
add ebx, edi
mov eax, dword [ebp + 0xc]
mov edi, dword [eax + 0x20]
cmp edi, ebx
cmovg ebx, edi
mov dword [eax + 0x20], ebx
mov eax, dword [esp + 0x1c]
mov edi, dword [eax]
jmp 0x10040dd0
mov edi, dword [ebp + 0xc]
test byte [edi], 1
mov esi, dword [edi + 0x20]
jne 0x10040e34
dec esi
mov eax, esi
sar eax, 1
or eax, esi
mov ecx, eax
sar ecx, 2
or ecx, eax
mov eax, ecx
sar eax, 4
or eax, ecx
mov ecx, eax
sar ecx, 8
or ecx, eax
mov esi, ecx
sar esi, 0x10
or esi, ecx
mov ecx, dword [esp + 0x6c]
inc esi
mov dword [edi + 0x20], esi
mov eax, dword [edi + 0x1c]
vmovd xmm0, eax
vpinsrd xmm0, xmm0, esi, 1
vcvtdq2ps xmm0, xmm0
vbroadcastss xmm1, dword [0x10129710]
vdivps xmm0, xmm1, xmm0
vmovlps qword [edi + 0x24], xmm0
imul esi, eax
test cl, cl
je 0x10040e77
shl esi, 2
push esi
call fcn.1001ca90
add esp, 4
mov dword [edi + 0x18], eax
jmp 0x10040e83
push esi
call fcn.1001ca90
add esp, 4
mov dword [edi + 0x14], eax
push esi
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
xor edx, edx
cmp dword [esp + 0x50], 0
mov edi, dword [esp + 0x28]
jle 0x10041242
mov dword [esp + 0x100], 0
jmp 0x10040ecf
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
mov dword [edi + ebx + 0x28], 0
inc edx
cmp edx, dword [esp + 0x50]
je 0x1004124d
imul ebx, edx, 0x54
cmp dword [edi + ebx + 0x38], 0
je 0x10040ec4
lea ecx, [edi + ebx]
add ecx, 0x38
mov dword [esp + 0xc0], ecx
mov eax, edx
mov ecx, dword [ebp + 0xc]
mov esi, dword [ecx + 0x54]
mov edx, ebx
mov dword [esp + 0x2c], eax
imul ebx, eax, 0x78
lea eax, [esi + ebx]
mov dword [esp + 0x1c], esi
mov esi, dword [esi + ebx + 0x74]
vmovss xmm0, dword [edi + edx + 4]
mov dword [esp + 0x34], edx
vmovss xmm1, dword [edi + edx + 8]
sub esp, 0x14
vmovss dword [esp + 0x10], xmm1
vmovss dword [esp + 0xc], xmm0
mov dword [esp + 0x4c], eax
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov dword [esp], ecx
call fcn.1003bdc0
add esp, 0x14
vmovss xmm0, dword [0x10129738]
mov dword [esp + 0x54], esi
vaddss xmm0, xmm0, dword [esi + 0x48]
mov eax, dword [esp + 0xc0]
cmp dword [eax], 0
jle 0x10040eb0
vcvttps2dq xmm0, xmm0
vcvtdq2ps xmm0, xmm0
mov eax, dword [esp + 0x1c]
vaddss xmm0, xmm0, dword [eax + ebx + 0x2c]
vmovss dword [esp + 0x4c], xmm0
vmovss xmm0, dword [eax + ebx + 0x28]
vmovss dword [esp + 0x120], xmm0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x24], eax
mov ebx, dword [esp + 0x34]
lea eax, [edi + ebx]
add eax, 0x50
mov dword [esp + 0x80], eax
xor ecx, ecx
mov edx, dword [esp + 0x2c]
jmp 0x10040fcc
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
inc ecx
mov eax, dword [esp + 0xc0]
cmp ecx, dword [eax]
jge 0x10040eb8
mov eax, dword [esp + 0x80]
mov esi, dword [eax]
mov eax, dword [eax - 0x28]
mov edi, ecx
shl edi, 4
cmp word [eax + edi + 4], 0
jne 0x10040fed
cmp word [eax + edi + 6], 0
je 0x10040fbc
mov dword [esp + 0x30], ecx
mov edx, esi
mov dword [esp + 0x1c], esi
mov esi, ecx
shl esi, 5
lea ebx, [edx + esi]
mov dword [esp + 0x18], eax
movzx eax, word [eax + edi + 8]
add eax, dword [esp + 0x24]
mov edx, dword [ebx]
vxorps xmm2, xmm2, xmm2
vcvtsi2ss xmm0, xmm2, edx
add edx, eax
vxorps xmm2, xmm2, xmm2
vcvtsi2ss xmm1, xmm2, edx
vxorps xmm2, xmm2, xmm2
vcvtsi2ss xmm2, xmm2, dword [ebx + 8]
mov edx, dword [ebx + 4]
vxorps xmm4, xmm4, xmm4
vcvtsi2ss xmm3, xmm4, edx
mov dword [esp + 0x3c], eax
vxorps xmm4, xmm4, xmm4
vcvtsi2ss xmm4, xmm4, eax
mov eax, dword [esp + 0x18]
movzx ecx, word [eax + edi + 0xa]
mov eax, dword [ebp + 0xc]
vxorps xmm6, xmm6, xmm6
vcvtsi2ss xmm5, xmm6, dword [eax + 0x1c]
add ecx, dword [esp + 0x24]
vxorps xmm6, xmm6, xmm6
vcvtsi2ss xmm6, xmm6, ecx
vaddss xmm2, xmm2, dword [esp + 0x120]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm7, xmm7, dword [eax + 0x20]
vdivss xmm4, xmm4, xmm5
vdivss xmm6, xmm6, xmm7
vdivss xmm1, xmm1, xmm5
vmovss dword [esp + 0x18], xmm1
mov dword [esp + 0xa0], ecx
add edx, ecx
vcvtsi2ss xmm5, xmm0, edx
vdivss xmm5, xmm5, xmm7
vcvtsi2ss xmm7, xmm0, dword [ebx + 0xc]
vaddss xmm7, xmm7, dword [esp + 0x4c]
vaddss xmm1, xmm2, xmm0
vaddss xmm3, xmm7, xmm3
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + esi + 0x18]
vmovss xmm0, dword [ebx + 0x10]
sub esp, 0x2c
vmovss dword [esp + 0x28], xmm0
vmovss dword [esp + 0x14], xmm3
vmovss dword [esp + 0x10], xmm1
vmovss dword [esp + 0xc], xmm7
vmovss dword [esp + 8], xmm2
vmovss dword [esp + 0x1c], xmm6
vmovss dword [esp + 0x18], xmm4
vmovss dword [esp + 0x24], xmm5
vmovss xmm0, dword [esp + 0x44]
vmovss dword [esp + 0x20], xmm0
mov dword [esp + 4], eax
mov eax, dword [esp + 0x64]
mov dword [esp], eax
mov esi, dword [esp + 0x80]
mov ecx, esi
call fcn.1003d270
cmp byte [ebx + 0x14], 0
je 0x10041130
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x28]
lea eax, [eax + eax*4]
or dword [ecx + eax*8 - 0x28], 1
mov al, 1
mov dword [esp + 0x100], eax
mov eax, dword [ebx]
mov dword [esp + 0x18], eax
mov edi, dword [ebx + 4]
mov eax, dword [ebp + 0xc]
mov esi, dword [eax + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ecx, dword [ecx + edx + 0x1c]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x20], eax
test esi, esi
je 0x100411d0
test edi, edi
jle 0x10040fb0
mov eax, dword [esp + 0xa0]
imul eax, dword [esp + 0x20]
add esi, eax
add esi, dword [esp + 0x3c]
xor eax, eax
mov edx, dword [esp + 0x18]
jmp 0x1004119c
mov dword [esp + 0x1c], edi
inc eax
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
lea ecx, [ecx + edi*4]
mov edi, dword [esp + 0x1c]
cmp eax, edi
jge 0x10040fb0
test edx, edx
jle 0x10041180
xor edi, edi
nop word cs:[eax + eax]
movzx edx, byte [ecx + edi*4 + 3]
mov byte [esi + edi], dl
inc edi
mov edx, dword [ebx]
cmp edi, edx
jl 0x100411b0
mov edi, dword [ebx + 4]
jmp 0x10041180
test edi, edi
jle 0x10040fb0
mov edx, dword [esp + 0xa0]
imul edx, dword [esp + 0x20]
shl edx, 2
mov eax, dword [ebp + 0xc]
add edx, dword [eax + 0x18]
mov eax, dword [esp + 0x3c]
lea eax, [edx + eax*4]
xor esi, esi
mov edx, dword [esp + 0x18]
jmp 0x1004121f
mov dword [esp + 0x1c], edi
inc esi
mov edi, dword [esp + 0x20]
lea eax, [eax + edi*4]
mov edi, dword [esp + 0x18]
lea ecx, [ecx + edi*4]
mov edi, dword [esp + 0x1c]
cmp esi, edi
jge 0x10040fb0
test edx, edx
jle 0x10041200
xor edi, edi
nop word cs:[eax + eax]
mov edx, dword [ecx + edi*4]
mov dword [eax + edi*4], edx
inc edi
mov edx, dword [ebx]
cmp edi, edx
jl 0x10041230
mov edi, dword [ebx + 4]
jmp 0x10041200
mov dword [esp + 0x100], 0
mov eax, dword [esp + 0x100]
and al, 1
mov ecx, dword [ebp + 0xc]
mov byte [ecx + 0x12], al
cmp dword [esp + 0x40], 0
mov ebx, dword [esp + 0x68]
jle 0x10041282
xor esi, esi
nop dword [eax]
push dword [ebx + esi*4]
call fcn.1001cac0
add esp, 4
inc esi
cmp dword [esp + 0x40], esi
jne 0x10041270
mov ecx, dword [esp + 0x50]
test ecx, ecx
jle 0x100412e5
mov eax, dword [esp + 0x28]
lea esi, [eax + 0x18]
jmp 0x100412a6
add esi, 0x54
dec ecx
je 0x100412ec
mov eax, dword [esi + 0x38]
test eax, eax
mov ebx, ecx
je 0x100412ba
push eax
call fcn.1001cac0
mov ecx, ebx
add esp, 4
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x100412cc
push eax
call fcn.1001cac0
mov ecx, ebx
add esp, 4
mov eax, dword [esi]
test eax, eax
je 0x100412a0
push eax
call fcn.100d00c0
mov ecx, ebx
add esp, 4
mov dword [esi], 0
jmp 0x100412a0
cmp dword [esp + 0x28], 0
je 0x100412f8
push dword [esp + 0x28]
call fcn.1001cac0
add esp, 4
push dword [ebp + 0xc]
call fcn.1003c870
add esp, 4
mov eax, dword [esp + 0x60]
test eax, eax
je 0x10041314
push eax
call fcn.1001cac0
add esp, 4
mov eax, dword [esp + 0x68]
test eax, eax
je 0x10041325
push eax
call fcn.1001cac0
add esp, 4
mov bl, 1
mov ecx, dword [esp + 0x9c]
test ecx, ecx
jne 0x1003f1db
jmp 0x1003f1e4