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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100ab9dc
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x208
mov eax, dword [0x100d0008]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, edx
mov dword [ebp - 0x168], edi
mov dword [ebp - 0x164], ecx
imul ecx, dword [edi + 0x54], 0x7c
mov edx, dword [edi + 0x5c]
add ecx, edx
cmp edx, ecx
je 0x10045b08
nop dword [eax]
cvttss2si eax, dword [edx + 0x10]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edx + 0x10], xmm0
add edx, 0x7c
cmp edx, ecx
jne 0x10045af0
cmp dword [edi + 0x468], 0
jge 0x10045b7f
test byte [edi], 2
lea eax, [ebp - 0x1dc]
mov dword [ebp - 0x1d8], 0xffffffff
lea ecx, [edi + 0x48]
mov dword [ebp - 0x1d4], 0
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1cc], 0
mov dword [ebp - 0x1c8], 0
mov dword [ebp - 0x1c4], 0
push eax
mov dword [ebp - 0x1dc], 0x1b00f5
je 0x10045b70
mov dword [ebp - 0x1dc], 0x20002
call fcn.1002f070
mov eax, dword [edi + 0x48]
dec eax
mov dword [edi + 0x468], eax
cmp dword [edi + 0x46c], 0
jge 0x10045bec
test byte [edi], 4
jne 0x10045bec
lea eax, [ebp - 0x1dc]
mov dword [ebp - 0x1d8], 0xffffffff
push eax
lea ecx, [edi + 0x48]
mov dword [ebp - 0x1d4], 0
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1cc], 0
mov dword [ebp - 0x1c8], 0
mov dword [ebp - 0x1c4], 0
mov dword [ebp - 0x1dc], 0x400041
call fcn.1002f070
mov eax, dword [edi + 0x48]
dec eax
mov dword [edi + 0x46c], eax
mov ecx, edi
mov dword [edi + 4], 0
mov dword [edi + 0x28], 0
mov dword [edi + 0x24], 0
mov dword [edi + 0x2c], 0
mov dword [edi + 0x30], 0
mov dword [edi + 0x34], 0
mov dword [edi + 0x38], 0
call fcn.1002bda0
xor ecx, ecx
mov byte [ebp - 0x15d], 0
mov dword [ebp - 0x1f8], 0
mov dword [ebp - 0x1fc], 0
mov dword [ebp - 0x17c], ecx
mov dword [ebp - 0x1f4], ecx
mov dword [ebp - 4], ecx
xor edi, edi
mov dword [ebp - 0x1ec], ecx
mov dword [ebp - 0x1f0], ecx
mov dword [ebp - 0x1a0], edi
mov dword [ebp - 0x1e8], edi
mov eax, dword [ebp - 0x168]
lea edx, [edi + 8]
mov byte [ebp - 4], 1
mov ecx, dword [eax + 0x54]
mov dword [ebp - 0x19c], ecx
test ecx, ecx
jle 0x10045cb8
cmp ecx, edx
mov esi, ecx
cmovl esi, edx
test esi, esi
jle 0x10045cb8
imul ecx, esi, 0x5c
call fcn.10012320
mov ecx, dword [ebp - 0x19c]
lea edx, [edi + 8]
mov dword [ebp - 0x17c], eax
mov dword [ebp - 0x1f4], eax
mov eax, dword [ebp - 0x168]
mov dword [ebp - 0x1f8], esi
mov eax, dword [eax + 0x3c]
mov dword [ebp - 0x1fc], ecx
mov dword [ebp - 0x18c], eax
test eax, eax
jle 0x10045d02
cmp eax, 8
mov esi, eax
cmovl esi, edx
test esi, esi
jle 0x10045d02
lea ecx, [esi + esi*2]
shl ecx, 3
call fcn.10012320
mov ecx, dword [ebp - 0x19c]
mov edi, eax
mov eax, dword [ebp - 0x18c]
mov dword [ebp - 0x1a0], edi
mov dword [ebp - 0x1e8], edi
mov dword [ebp - 0x1ec], esi
mov esi, dword [ebp - 0x17c]
imul ecx, ecx, 0x5c
mov dword [ebp - 0x1f0], eax
push ecx
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebp - 0x18c]
add esp, 0xc
lea eax, [eax + eax*2]
shl eax, 3
push eax
push 0
push edi
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x168]
add esp, 0xc
mov eax, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov dword [ebp - 0x188], 0
mov dword [ebp - 0x1a4], 6
cmp dword [edx + 0x54], 0
mov dword [ebp - 0x1b4], eax
jle 0x10045ea7
xor eax, eax
add esi, 0x3c
mov dword [ebp - 0x178], eax
mov dword [ebp - 0x198], esi
mov ecx, dword [edx + 0x5c]
xor edx, edx
add ecx, eax
mov dword [esi - 4], 0xffffffff
mov dword [ebp - 0x174], ecx
mov ecx, dword [ebp - 0x168]
cmp dword [ecx + 0x3c], edx
jle 0x10045f17
mov edi, dword [ebp - 0x198]
or esi, 0xffffffff
mov eax, esi
cmp esi, 0xffffffff
jne 0x10045dce
mov eax, dword [ebp - 0x174]
or esi, esi
mov ecx, dword [ecx + 0x44]
mov eax, dword [eax + 0x78]
cmp eax, dword [ecx + edx*4]
jne 0x10045dc0
mov dword [edi - 4], edx
mov esi, edx
mov ecx, dword [ebp - 0x168]
inc edx
mov eax, esi
cmp edx, dword [ecx + 0x3c]
jl 0x10045da1
mov edi, dword [ebp - 0x1a0]
cmp eax, 0xffffffff
je 0x10045f17
push dword [ebx + 8]
mov esi, dword [ebp - 0x198]
push dword [ebp - 0x174]
push dword [ebp - 0x164]
lea ecx, [esi - 0x3c]
call fcn.10044fc0
test al, al
je 0x10045f17
mov ecx, dword [ebp - 0x174]
mov edx, 0x100cbd68
mov eax, dword [ecx + 0x40]
shr eax, 8
and al, 1
or byte [ebp - 0x15d], al
mov eax, dword [esi - 4]
lea eax, [eax + eax*2]
mov dword [ebp - 0x190], eax
mov eax, dword [ecx + 0x30]
test eax, eax
cmovne edx, eax
mov dword [esi - 8], edx
cmp word [edx], 0
je 0x10045e5b
nop dword [eax + eax]
movzx eax, word [edx + 2]
test ax, ax
je 0x10045e5b
mov ecx, eax
cmp dword [esi], ecx
cmovge ecx, dword [esi]
add edx, 4
mov dword [esi], ecx
cmp word [edx], 0
jne 0x10045e40
mov edx, dword [ebp - 0x190]
mov eax, dword [ebp - 0x178]
inc dword [edi + edx*8]
mov ecx, dword [esi]
cmp dword [edi + edx*8 + 4], ecx
cmovge ecx, dword [edi + edx*8 + 4]
add esi, 0x5c
mov dword [edi + edx*8 + 4], ecx
add eax, 0x7c
mov ecx, dword [ebp - 0x188]
mov edx, dword [ebp - 0x168]
inc ecx
mov dword [ebp - 0x188], ecx
mov dword [ebp - 0x198], esi
mov dword [ebp - 0x178], eax
cmp ecx, dword [edx + 0x54]
jl 0x10045d75
mov eax, dword [ebp - 0x19c]
xor esi, esi
mov dword [ebp - 0x180], esi
test eax, eax
jle 0x10046263
mov edx, dword [ebp - 0x17c]
add edx, 0x4c
mov dword [ebp - 0x1ac], eax
mov dword [ebp - 0x16c], edx
mov eax, dword [edx - 0x14]
mov ecx, dword [edx - 0x10]
add ecx, 0x20
sar ecx, 5
lea esi, [eax + eax*2]
mov dword [ebp - 0x190], ecx
mov eax, dword [edx - 4]
mov dword [ebp - 0x174], esi
mov dword [ebp - 0x164], eax
cmp ecx, eax
jle 0x10045f65
test eax, eax
je 0x10045f23
cdq
sub eax, edx
mov edx, dword [ebp - 0x16c]
sar eax, 1
add eax, dword [ebp - 0x164]
mov dword [ebp - 0x188], eax
jmp 0x10045f2d
mov byte [ebp - 0x15d], 0
jmp 0x100471ac
mov dword [ebp - 0x188], 8
cmp dword [ebp - 0x188], ecx
lea eax, [edx - 8]
mov dword [ebp - 0x178], eax
mov eax, ecx
cmovg eax, dword [ebp - 0x188]
mov ecx, dword [ebp - 0x178]
push eax
call fcn.10026ee0
mov edx, dword [ebp - 0x16c]
mov ecx, dword [ebp - 0x190]
mov eax, dword [ebp - 0x178]
jmp 0x10045f68
lea eax, [edx - 8]
mov dword [eax], ecx
lea eax, [ecx*4]
push eax
push 0
push dword [edx]
call sub.VCRUNTIME140.dll_memset
lea ecx, [esi*8 + 0xc]
add esp, 0xc
add ecx, edi
mov dword [ebp - 0x188], ecx
cmp dword [ecx], 0
jne 0x10045ff1
mov esi, dword [edi + esi*8 + 4]
mov eax, dword [ecx + 4]
add esi, 0x20
sar esi, 5
mov dword [ebp - 0x164], eax
cmp esi, eax
jle 0x10045fda
test eax, eax
je 0x10045fbc
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
add ecx, dword [ebp - 0x164]
jmp 0x10045fc1
mov ecx, 8
cmp ecx, esi
mov eax, esi
cmovg eax, ecx
mov ecx, dword [ebp - 0x188]
push eax
call fcn.10026ee0
mov ecx, dword [ebp - 0x188]
lea eax, [esi*4]
mov dword [ecx], esi
push eax
push 0
push dword [ecx + 8]
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov edx, dword [ebp - 0x16c]
mov eax, dword [edx - 0x18]
mov dword [ebp - 0x198], eax
cmp word [eax], 0
je 0x100460e7
nop word [eax + eax]
movzx ecx, word [eax + 2]
test cx, cx
je 0x100460e1
movzx edi, word [eax]
cmp edi, ecx
ja 0x100460c8
nop dword [eax + eax]
mov eax, dword [ebp - 0x174]
mov ecx, edi
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov esi, edi
mov ecx, dword [ebp - 0x1a0]
sar esi, 5
mov dword [ebp - 0x164], edx
mov eax, dword [ecx + eax*8 + 0x14]
test dword [eax + esi*4], edx
jne 0x100460af
mov eax, dword [ebp - 0x16c]
push edi
push dword [eax - 0x34]
call fcn.10049d20
mov edx, dword [ebp - 0x16c]
add esp, 8
test eax, eax
je 0x100460b5
inc dword [edx - 0xc]
mov eax, dword [ebp - 0x174]
mov ecx, dword [ebp - 0x1a0]
inc dword [ecx + eax*8 + 8]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x164]
mov edx, dword [ebp - 0x1a0]
or dword [eax + esi*4], ecx
mov eax, dword [ebp - 0x174]
mov eax, dword [edx + eax*8 + 0x14]
or dword [eax + esi*4], ecx
inc dword [ebp - 0x180]
mov edx, dword [ebp - 0x16c]
mov eax, dword [ebp - 0x198]
inc edi
movzx eax, word [eax + 2]
cmp edi, eax
jle 0x10046030
mov eax, dword [ebp - 0x198]
add eax, 4
mov dword [ebp - 0x198], eax
cmp word [eax], 0
jne 0x10046010
mov edi, dword [ebp - 0x1a0]
add edx, 0x5c
sub dword [ebp - 0x1ac], 1
mov dword [ebp - 0x16c], edx
jne 0x10045ed2
mov eax, dword [ebp - 0x17c]
mov ecx, dword [ebp - 0x19c]
add eax, 0x58
mov dword [ebp - 0x16c], eax
mov dword [ebp - 0x178], ecx
push dword [eax - 0x18]
lea edi, [eax - 8]
mov ecx, edi
mov dword [ebp - 0x188], edi
call fcn.10047550
mov edx, dword [ebp - 0x16c]
mov ecx, dword [edx - 0xc]
lea eax, [edx - 0x14]
mov dword [ebp - 0x184], eax
mov eax, dword [eax]
mov dword [ebp - 0x190], ecx
mov dword [ebp - 0x174], ecx
lea esi, [ecx + eax*4]
mov eax, ecx
mov dword [ebp - 0x1b8], esi
cmp ecx, esi
jae 0x1004622e
nop
mov ecx, dword [eax]
mov dword [ebp - 0x164], ecx
test ecx, ecx
je 0x1004621d
xor esi, esi
mov eax, 1
mov ecx, esi
shl eax, cl
test dword [ebp - 0x164], eax
je 0x10046207
mov eax, dword [ebp - 0x174]
xorps xmm0, xmm0
sub eax, dword [ebp - 0x190]
mov ecx, dword [edi]
mov edi, dword [edx - 4]
shl eax, 3
and eax, 0xffffffe0
add eax, esi
movzx eax, ax
movups xmmword [ebp - 0x1d0], xmm0
mov dword [ebp - 0x1c8], eax
cmp ecx, edi
jne 0x100461ea
inc ecx
test edi, edi
je 0x100461c7
mov eax, edi
cdq
sub eax, edx
sar eax, 1
add eax, edi
jmp 0x100461cc
mov eax, 8
mov edi, dword [ebp - 0x188]
cmp eax, ecx
cmovg ecx, eax
push ecx
mov ecx, edi
call fcn.10047550
mov edx, dword [ebp - 0x16c]
xorps xmm0, xmm0
jmp 0x100461f0
mov edi, dword [ebp - 0x188]
mov eax, dword [edi]
shl eax, 5
add eax, dword [edx]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x1d0]
movups xmmword [eax + 0x10], xmm0
inc dword [edi]
inc esi
cmp esi, 0x20
jb 0x10046172
mov eax, dword [ebp - 0x174]
mov esi, dword [ebp - 0x1b8]
add eax, 4
mov dword [ebp - 0x174], eax
cmp eax, esi
jb 0x10046160
mov ecx, dword [ebp - 0x184]
call fcn.1000bfb0
mov eax, dword [ebp - 0x16c]
add eax, 0x5c
sub dword [ebp - 0x178], 1
mov dword [ebp - 0x16c], eax
jne 0x10046118
mov edi, dword [ebp - 0x1a0]
mov esi, dword [ebp - 0x180]
jmp 0x1004626b
xor esi, esi
mov dword [ebp - 0x180], esi
cmp dword [ebp - 0x18c], 0
jle 0x100462a0
mov esi, dword [ebp - 0x18c]
lea eax, [edi + 0xc]
mov dword [ebp - 0x164], eax
mov edi, eax
mov ecx, edi
call fcn.1000bfb0
add edi, 0x18
sub esi, 1
jne 0x10046285
mov edi, dword [ebp - 0x1a0]
mov esi, dword [ebp - 0x180]
test edi, edi
je 0x10046338
mov ecx, dword [0x100d24e0]
mov dword [ebp - 0x1ec], 0
mov dword [ebp - 0x1f0], 0
test ecx, ecx
je 0x10046320
movsx eax, word [ecx + 0x5f40]
mov edx, dword [ecx + 0x3f30]
mov dword [ebp - 0x164], edx
lea eax, [eax*8 + 0x5f44]
add eax, ecx
cmp dword [eax], edx
je 0x10046316
movsx eax, word [ecx + 0x5f40]
inc eax
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov edx, dword [ebp - 0x164]
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
push edi
call dword [ebp - 0x1b4]
add esp, 4
xor eax, eax
mov dword [ebp - 0x1a0], eax
mov dword [ebp - 0x1e8], eax
xor eax, eax
mov dword [ebp - 0x210], 0
mov dword [ebp - 0x214], 0
mov dword [ebp - 0x188], eax
mov dword [ebp - 0x20c], eax
mov byte [ebp - 4], 6
test esi, esi
jle 0x10046390
cmp esi, 8
mov edi, esi
mov ecx, 8
cmovl edi, ecx
test edi, edi
jle 0x10046390
lea ecx, [edi + edi*2]
shl ecx, 3
call fcn.10012320
mov dword [ebp - 0x188], eax
mov dword [ebp - 0x20c], eax
mov dword [ebp - 0x210], edi
lea ecx, [esi + esi*2]
mov dword [ebp - 0x214], esi
shl ecx, 3
push ecx
push 0
push eax
call sub.VCRUNTIME140.dll_memset
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x18c], eax
mov dword [ebp - 0x120], eax
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x11c], eax
mov byte [ebp - 4], 7
mov eax, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
push 0x40000
mov dword [ebp - 0x194], eax
call eax
mov ecx, dword [0x100d24e0]
add esp, 4
mov edi, eax
test ecx, ecx
je 0x10046430
movsx edx, word [ecx + 0x5f40]
lea eax, [ecx + 0x5f44]
mov esi, dword [ecx + 0x3f30]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x10046426
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
xor edx, edx
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 4]
inc dword [ecx + 0x5f38]
mov ecx, 0x20
call fcn.10012320
movss xmm0, dword [0x100cc48c]
xor ecx, ecx
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x11c], eax
mov dword [eax], edi
mov eax, 1
xor edi, edi
mov dword [ebp - 0x120], 8
mov dword [ebp - 0x198], eax
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x16c], ecx
mov dword [ebp - 0x190], edi
cmp dword [ebp - 0x19c], ecx
jle 0x10046840
mov eax, dword [ebp - 0x19c]
xor edx, edx
mov esi, dword [ebp - 0x17c]
mov dword [ebp - 0x1b8], eax
add esi, 0x50
mov eax, dword [ebp - 0x168]
mov dword [ebp - 0x184], edx
nop word [eax + eax]
mov ecx, dword [eax + 0x5c]
add ecx, edx
cmp dword [esi - 0x10], 0
je 0x1004680d
mov edx, dword [ebp - 0x188]
lea eax, [edi + edi*2]
add edi, dword [esi - 0x10]
mov dword [ebp - 0x190], edi
lea eax, [edx + eax*8]
mov dword [esi - 0x20], eax
movss xmm1, dword [ecx + 0x44]
ucomiss xmm1, xmm0
movss dword [ebp - 0x164], xmm1
lahf
test ah, 0x44
jnp 0x10046540
mov byte [ebp - 0x16d], 1
xor edi, edi
movd xmm0, edi
mov eax, edi
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x100cc8e0]
cvtpd2ps xmm0, xmm0
mulss xmm0, xmm1
call fcn.100aa810
movss xmm1, dword [ebp - 0x164]
mov edx, 0xff
cmp eax, edx
movzx ecx, al
cmovbe edx, ecx
mov byte [ebp + edi - 0x118], dl
inc edi
cmp edi, 0x100
jb 0x100464f6
jmp 0x10046547
mov byte [ebp - 0x16d], 0
cmp dword [esi], 0
mov eax, dword [ebp - 0x168]
mov dword [ebp - 0x1bc], 0
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x1ac], eax
jle 0x10046807
xor ecx, ecx
mov dword [ebp - 0x180], 0
mov dword [ebp - 0x1a8], ecx
nop dword [eax + eax]
mov edi, dword [esi + 8]
add edi, ecx
push dword [edi + 0x18]
push dword [esi - 0x38]
call fcn.10049d20
add esp, 8
test eax, eax
je 0x100467dc
push dword [esi - 0x30]
push eax
push dword [esi - 0x38]
call fcn.1004a6f0
add esp, 0xc
test eax, eax
jne 0x100467dc
test byte [esi - 0x34], 0x20
mov ecx, dword [esi - 0x38]
mov eax, dword [ecx + 0x54]
mov dword [ebp - 0x178], eax
je 0x100465d6
push eax
call fcn.100519b0
mov ecx, dword [esi - 0x38]
add esp, 4
mov eax, dword [ebp - 0x178]
test byte [esi - 0x34], 0x40
je 0x100465e8
push eax
call fcn.10051aa0
mov ecx, dword [esi - 0x38]
add esp, 4
mov eax, dword [ebp - 0x178]
add eax, 0x18
je 0x100467dc
push dword [esi - 0x2c]
mov eax, dword [ecx + 0x54]
push eax
mov dword [ebp - 0x164], eax
call fcn.1004ca10
add esp, 8
test eax, eax
jne 0x100467dc
mov eax, dword [esi - 0x38]
mov eax, dword [eax + 0x54]
add eax, 0x4c
mov dword [ebp - 0x178], eax
mov ecx, dword [eax + 4]
mov dword [edi], ecx
mov eax, dword [eax]
mov dword [ebp - 0x1b0], eax
mov dword [edi + 4], eax
mov eax, dword [esi - 0x38]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x64]
mov dword [edi + 8], eax
mov eax, dword [esi - 0x38]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x68]
neg eax
mov dword [edi + 0xc], eax
mov eax, dword [ebp - 0x164]
mov eax, dword [eax + 0x40]
add eax, 0x3f
and eax, 0xffffffc0
cdq
and edx, 0x3f
add eax, edx
mov edx, dword [ebp - 0x18c]
sar eax, 6
movd xmm0, eax
mov eax, dword [ebp - 0x178]
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x10], xmm0
cmp byte [eax + 0x12], 7
sete al
mov byte [edi + 0x14], al
mov eax, dword [ebp - 0x1b0]
imul eax, ecx
shl eax, 2
mov dword [ebp - 0x1b0], eax
add eax, edx
cmp eax, 0x40000
jle 0x10046764
xor eax, eax
push 0x40000
mov dword [ebp - 0x18c], eax
call dword [ebp - 0x194]
mov ecx, dword [0x100d24e0]
add esp, 4
mov dword [ebp - 0x174], eax
test ecx, ecx
je 0x1004672c
movsx eax, word [ecx + 0x5f40]
mov edx, dword [ecx + 0x3f30]
mov dword [ebp - 0x164], edx
lea eax, [eax*8 + 0x5f44]
add eax, ecx
cmp dword [eax], edx
je 0x1004671c
movsx eax, word [ecx + 0x5f40]
inc eax
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov edx, dword [ebp - 0x164]
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 4]
inc dword [ecx + 0x5f38]
mov eax, dword [ebp - 0x174]
mov dword [ebp - 0x164], eax
lea ecx, [ebp - 0x124]
lea eax, [ebp - 0x164]
push eax
call fcn.10026fb0
mov eax, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x124]
mov edx, dword [ebp - 0x18c]
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x198], ecx
jmp 0x10046770
mov eax, dword [ebp - 0x174]
mov ecx, dword [ebp - 0x198]
mov ecx, dword [eax + ecx*4 - 4]
lea eax, [ebp - 0x118]
add ecx, edx
add edx, dword [ebp - 0x1b0]
mov dword [ebp - 0x18c], edx
xor edx, edx
cmp byte [ebp - 0x16d], dl
mov dword [edi + 0x1c], ecx
cmove eax, edx
push eax
push dword [edi]
push ecx
push dword [ebp - 0x178]
call fcn.10045220
mov edx, dword [ebp - 0x180]
mov eax, dword [esi - 0x20]
mov ecx, dword [edi]
add ecx, dword [ebp - 0x1ac]
mov dword [eax + edx + 4], ecx
mov eax, dword [esi - 0x20]
mov ecx, dword [edi + 4]
add ecx, dword [ebp - 0x1ac]
mov dword [eax + edx + 8], ecx
mov ecx, dword [esi - 0x20]
mov eax, dword [ecx + edx + 8]
imul eax, dword [ecx + edx + 4]
add dword [ebp - 0x16c], eax
mov eax, dword [ebp - 0x1bc]
mov ecx, dword [ebp - 0x1a8]
inc eax
add dword [ebp - 0x180], 0x18
add ecx, 0x20
mov dword [ebp - 0x1bc], eax
mov dword [ebp - 0x1a8], ecx
cmp eax, dword [esi]
jl 0x10046580
mov eax, dword [ebp - 0x168]
mov edx, dword [ebp - 0x184]
add esi, 0x5c
movss xmm0, dword [0x100cc48c]
add edx, 0x7c
sub dword [ebp - 0x1b8], 1
mov edi, dword [ebp - 0x190]
mov dword [ebp - 0x184], edx
jne 0x100464b0
mov ecx, dword [ebp - 0x16c]
movd xmm0, ecx
xorps xmm1, xmm1
cvtdq2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x10046859
sqrtsd xmm0, xmm0
jmp 0x1004685e
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
mov ecx, dword [ebp - 0x168]
cvtsd2ss xmm0, xmm0
mov edi, dword [ecx + 8]
mov dword [ecx + 0x28], 0
cvttss2si eax, xmm0
inc eax
test edi, edi
jg 0x100468b6
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [0x100cc554]
jb 0x10046892
mov edi, 0x1000
jmp 0x100468b6
comiss xmm0, dword [0x100cc550]
jb 0x100468a2
mov edi, 0x800
jmp 0x100468b6
comiss xmm0, dword [0x100cc544]
mov edi, 0x200
mov eax, 0x400
cmovae edi, eax
mov dword [ecx + 0x24], edi
xor eax, eax
sub edi, dword [ecx + 0xc]
mov dword [ebp - 0x204], 0
mov dword [ebp - 0x208], 0
mov dword [ebp - 0x200], eax
mov byte [ebp - 4], 8
test edi, edi
jle 0x1004690e
cmp edi, 8
mov esi, edi
mov edx, 8
cmovl esi, edx
test esi, esi
jle 0x1004690e
lea ecx, [esi + esi*2]
shl ecx, 2
call fcn.10012320
mov ecx, dword [ebp - 0x168]
mov dword [ebp - 0x200], eax
mov dword [ebp - 0x204], esi
mov esi, dword [ecx + 0xc]
mov ecx, 0x8000
push edi
mov dword [ebp - 0x208], edi
sub ecx, esi
mov edi, dword [ebp - 0x168]
push eax
push ecx
lea ecx, [ebp - 0x15c]
mov edx, dword [edi + 0x24]
sub edx, esi
call fcn.10045720
add esp, 0xc
lea edx, [ebp - 0x15c]
mov ecx, edi
call fcn.1002c810
mov ecx, dword [ebp - 0x19c]
test ecx, ecx
jle 0x100469bc
mov esi, dword [ebp - 0x17c]
add esi, 0x40
mov dword [ebp - 0x190], ecx
mov eax, dword [esi]
test eax, eax
je 0x100469aa
mov edx, dword [esi - 0x10]
lea ecx, [ebp - 0x15c]
push eax
call fcn.100458b0
xor edi, edi
add esp, 4
cmp dword [esi], edi
jle 0x100469aa
xor edx, edx
mov eax, dword [esi - 0x10]
cmp dword [edx + eax + 0x14], 0
je 0x100469a2
mov ecx, dword [edx + eax + 0x10]
add ecx, dword [edx + eax + 8]
mov eax, dword [ebp - 0x168]
cmp dword [eax + 0x28], ecx
cmovge ecx, dword [eax + 0x28]
mov dword [eax + 0x28], ecx
inc edi
add edx, 0x18
cmp edi, dword [esi]
jl 0x10046980
add esi, 0x5c
sub dword [ebp - 0x190], 1
jne 0x10046960
mov edi, dword [ebp - 0x168]
test byte [edi], 1
mov eax, dword [edi + 0x28]
jne 0x100469e9
lea ecx, [eax - 1]
mov eax, ecx
sar eax, 1
or ecx, eax
mov eax, ecx
sar eax, 2
or ecx, eax
mov eax, ecx
sar eax, 4
or ecx, eax
mov eax, ecx
sar eax, 8
or ecx, eax
mov eax, ecx
sar eax, 0x10
or eax, ecx
mov esi, dword [edi + 0x24]
inc eax
movss xmm2, dword [0x100cc48c]
movaps xmm1, xmm2
mov dword [edi + 0x28], eax
movd xmm0, esi
cvtdq2ps xmm0, xmm0
imul esi, eax
cmp byte [ebp - 0x15d], 0
divss xmm1, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x2c], xmm1
divss xmm2, xmm0
movss dword [edi + 0x30], xmm2
je 0x10046ab4
lea edi, [esi*4]
push edi
call dword [ebp - 0x194]
mov ecx, dword [0x100d24e0]
add esp, 4
mov esi, eax
test ecx, ecx
je 0x10046aa2
movsx eax, word [ecx + 0x5f40]
mov edx, dword [ecx + 0x3f30]
mov dword [ebp - 0x164], edx
lea eax, [eax*8 + 0x5f44]
add eax, ecx
cmp dword [eax], edx
je 0x10046a98
movsx eax, word [ecx + 0x5f40]
inc eax
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov edx, dword [ebp - 0x164]
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 4]
inc dword [ecx + 0x5f38]
mov eax, dword [ebp - 0x168]
push edi
push 0
push esi
mov dword [eax + 0x20], esi
jmp 0x10046b42
push esi
call dword [ebp - 0x194]
mov ecx, dword [0x100d24e0]
add esp, 4
mov edi, eax
test ecx, ecx
je 0x10046b35
movsx eax, word [ecx + 0x5f40]
mov edx, dword [ecx + 0x3f30]
mov dword [ebp - 0x164], edx
lea eax, [eax*8 + 0x5f44]
add eax, ecx
cmp dword [eax], edx
je 0x10046b1a
movsx eax, word [ecx + 0x5f40]
inc eax
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov edx, dword [ebp - 0x164]
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
cmp esi, 0xffffffff
je 0x10046b2b
inc word [eax + 4]
inc dword [ecx + 0x5f38]
jmp 0x10046b35
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
mov eax, dword [ebp - 0x168]
push esi
push 0
push edi
mov dword [eax + 0x1c], edi
call sub.VCRUNTIME140.dll_memset
xor cl, cl
add esp, 0xc
cmp dword [ebp - 0x19c], 0
mov byte [ebp - 0x16d], cl
jle 0x10046fa4
mov eax, dword [ebp - 0x17c]
xor edx, edx
mov ecx, dword [ebp - 0x19c]
add eax, 4
mov dword [ebp - 0x164], edx
mov dword [ebp - 0x1b0], eax
nop dword [eax]
cmp dword [eax + 0x3c], 0
je 0x10046f7d
mov edi, dword [ebp - 0x168]
movss xmm0, dword [eax]
movss dword [ebp - 0x184], xmm0
movss xmm0, dword [eax + 4]
mov ecx, dword [edi + 0x5c]
add ecx, edx
movss dword [ebp - 0x1a8], xmm0
mov dword [ebp - 0x190], ecx
cmp byte [ecx + 0x3c], 0
mov edx, dword [ecx + 0x78]
mov dword [ebp - 0x1b8], edx
lea esi, [edx + 0x50]
jne 0x10046bfb
mov ecx, edx
call fcn.1002d2a0
mov ecx, dword [ebp - 0x190]
mov edx, dword [ebp - 0x1b8]
movss xmm0, dword [ebp - 0x184]
mov eax, dword [ecx + 0x10]
movss dword [esi], xmm0
movss xmm0, dword [ebp - 0x1a8]
mov dword [edx + 0x10], eax
mov dword [edx + 0x30], edi
movss dword [edx + 0x54], xmm0
movss xmm0, dword [esi]
addss xmm0, dword [0x100cc444]
movss xmm3, dword [ecx + 0x28]
mov esi, dword [edi + 0xc]
movss dword [ebp - 0x17c], xmm3
mov dword [ebp - 0x180], esi
cvttss2si eax, xmm0
mov dword [ebp - 0x1bc], 0
movd xmm2, eax
mov eax, dword [ebp - 0x1b0]
cvtdq2ps xmm2, xmm2
cmp dword [eax + 0x3c], 0
addss xmm2, dword [ecx + 0x2c]
movss dword [ebp - 0x18c], xmm2
jle 0x10046f6a
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x1ac], ecx
mov dword [ebp - 0x178], edx
nop
mov edi, dword [eax + 0x54]
mov eax, dword [eax + 0x2c]
add edi, edx
add eax, ecx
cmp dword [eax + 4], 0
jne 0x10046c7a
cmp dword [eax + 8], 0
je 0x10046f34
mov edx, dword [eax + 0xc]
sub esp, 0x20
mov ecx, dword [edi + 4]
add edx, esi
mov esi, dword [eax + 0x10]
mov eax, dword [ebp - 0x1b0]
movd xmm0, dword [edi + 0xc]
movd xmm1, dword [edi + 8]
add esi, dword [ebp - 0x180]
movss xmm6, dword [eax + 0x28]
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x184], esi
mov esi, dword [ebp - 0x168]
mov dword [ebp - 0x1c0], edx
cvtdq2ps xmm1, xmm1
mulss xmm0, xmm6
movd xmm7, eax
add eax, edx
movd xmm5, ecx
addss xmm0, xmm2
mulss xmm1, xmm6
cvtdq2ps xmm5, xmm5
addss xmm1, xmm3
movd xmm2, eax
cvtdq2ps xmm7, xmm7
mulss xmm5, xmm6
movss dword [ebp - 0x1a8], xmm0
mulss xmm7, xmm6
addss xmm5, xmm0
movss dword [ebp - 0x194], xmm1
movd xmm0, dword [esi + 0x24]
cvtdq2ps xmm0, xmm0
addss xmm7, xmm1
movd xmm4, edx
movd xmm1, dword [esi + 0x28]
mov esi, dword [ebp - 0x184]
cvtdq2ps xmm4, xmm4
lea eax, [esi + ecx]
cvtdq2ps xmm2, xmm2
divss xmm4, xmm0
divss xmm2, xmm0
movd xmm0, eax
cvtdq2ps xmm1, xmm1
movzx eax, word [edi + 0x18]
movd xmm3, esi
cvtdq2ps xmm0, xmm0
mov esi, dword [ebp - 0x1b8]
mov ecx, esi
cvtdq2ps xmm3, xmm3
mulss xmm6, dword [edi + 0x10]
divss xmm0, xmm1
divss xmm3, xmm1
movss dword [esp + 0x1c], xmm6
movss dword [esp + 0x18], xmm0
movss xmm0, dword [ebp - 0x1a8]
movss dword [esp + 0x14], xmm2
movss dword [esp + 0x10], xmm3
movss xmm3, dword [ebp - 0x194]
movss dword [esp + 0xc], xmm4
movss dword [esp + 8], xmm5
movss dword [esp + 4], xmm7
movss dword [esp], xmm0
push eax
push dword [ebp - 0x190]
call fcn.1002d930
cmp byte [edi + 0x14], 0
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x28]
lea eax, [eax + eax*4]
je 0x10046db9
or dword [ecx + eax*8 - 0x28], 1
mov byte [ebp - 0x16d], 1
mov edx, dword [ebp - 0x168]
mov esi, dword [edi + 0x1c]
mov ecx, dword [edi]
mov dword [ebp - 0x16c], esi
mov eax, dword [edx + 0x24]
mov edx, eax
imul edx, dword [ebp - 0x184]
mov esi, dword [ebp - 0x168]
mov dword [ebp - 0x1a8], eax
mov dword [ebp - 0x184], 0
mov eax, dword [esi + 0x1c]
add edx, dword [ebp - 0x1c0]
mov esi, dword [ebp - 0x16c]
test eax, eax
je 0x10046e81
add eax, edx
cmp dword [edi + 4], 0
mov dword [ebp - 0x194], eax
jle 0x10046f1e
lea edx, [ecx*4]
mov dword [ebp - 0x1c0], edx
xor edx, edx
test ecx, ecx
jle 0x10046e52
add esi, 3
nop dword [eax + eax]
mov ecx, dword [ebp - 0x194]
lea esi, [esi + 4]
mov al, byte [esi - 4]
mov byte [edx + ecx], al
inc edx
mov ecx, dword [edi]
cmp edx, ecx
jl 0x10046e30
mov eax, dword [ebp - 0x194]
mov esi, dword [ebp - 0x16c]
mov edx, dword [ebp - 0x184]
add eax, dword [ebp - 0x1a8]
inc edx
add esi, dword [ebp - 0x1c0]
mov dword [ebp - 0x184], edx
mov dword [ebp - 0x194], eax
mov dword [ebp - 0x16c], esi
cmp edx, dword [edi + 4]
jl 0x10046e22
jmp 0x10046f1e
cmp dword [edi + 4], 0
mov eax, dword [ebp - 0x168]
mov eax, dword [eax + 0x20]
lea edx, [eax + edx*4]
mov dword [ebp - 0x194], edx
jle 0x10046f1e
mov eax, dword [ebp - 0x1a8]
shl eax, 2
mov dword [ebp - 0x1a8], eax
lea eax, [ecx*4]
mov dword [ebp - 0x1e4], eax
mov eax, dword [ebp - 0x16c]
nop
xor esi, esi
test ecx, ecx
jle 0x10046ef4
sub eax, dword [ebp - 0x194]
mov dword [ebp - 0x1c0], eax
mov eax, dword [eax + edx]
lea edx, [edx + 4]
mov dword [edx - 4], eax
inc esi
mov ecx, dword [edi]
mov eax, dword [ebp - 0x1c0]
cmp esi, ecx
jl 0x10046ed2
mov eax, dword [ebp - 0x16c]
mov edx, dword [ebp - 0x194]
mov esi, dword [ebp - 0x184]
add edx, dword [ebp - 0x1a8]
inc esi
add eax, dword [ebp - 0x1e4]
mov dword [ebp - 0x184], esi
mov dword [ebp - 0x194], edx
mov dword [ebp - 0x16c], eax
cmp esi, dword [edi + 4]
jl 0x10046ec0
mov esi, dword [ebp - 0x180]
movss xmm3, dword [ebp - 0x17c]
movss xmm2, dword [ebp - 0x18c]
mov ecx, dword [ebp - 0x1bc]
mov eax, dword [ebp - 0x1b0]
inc ecx
add dword [ebp - 0x178], 0x20
add dword [ebp - 0x1ac], 0x18
mov edx, dword [ebp - 0x178]
cmp ecx, dword [eax + 0x3c]
mov dword [ebp - 0x1bc], ecx
mov ecx, dword [ebp - 0x1ac]
jl 0x10046c60
mov edx, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x19c]
mov dword [eax + 0x2c], 0
add eax, 0x5c
add edx, 0x7c
sub ecx, 1
mov dword [ebp - 0x1b0], eax
mov dword [ebp - 0x164], edx
mov dword [ebp - 0x19c], ecx
jne 0x10046b80
mov cl, byte [ebp - 0x16d]
mov eax, dword [ebp - 0x168]
xor esi, esi
mov byte [eax + 0x19], cl
cmp dword [ebp - 0x198], esi
jle 0x10047048
nop dword [eax + eax]
mov eax, dword [ebp - 0x174]
mov edi, dword [eax + esi*4]
test edi, edi
je 0x10047031
mov ecx, dword [0x100d24e0]
test ecx, ecx
je 0x10047031
movsx eax, word [ecx + 0x5f40]
mov edx, dword [ecx + 0x3f30]
mov dword [ebp - 0x1e4], edx
lea eax, [eax*8 + 0x5f44]
add eax, ecx
cmp dword [eax], edx
je 0x10047027
movsx eax, word [ecx + 0x5f40]
inc eax
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov edx, dword [ebp - 0x1e4]
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
push edi
call dword [ebp - 0x1b4]
inc esi
add esp, 4
cmp esi, dword [ebp - 0x198]
jl 0x10046fc0
lea ecx, [ebp - 0x1fc]
call fcn.100473d0
mov ecx, dword [ebp - 0x168]
call fcn.1002cd70
mov byte [ebp - 0x15d], 1
mov edi, dword [ebp - 0x200]
test edi, edi
je 0x100470cc
mov ecx, dword [0x100d24e0]
test ecx, ecx
je 0x100470c2
movsx edx, word [ecx + 0x5f40]
lea eax, [ecx + 0x5f44]
mov esi, dword [ecx + 0x3f30]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x100470b8
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
xor edx, edx
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
push edi
call dword [ebp - 0x1b4]
add esp, 4
mov edi, dword [ebp - 0x174]
test edi, edi
je 0x10047133
mov ecx, dword [0x100d24e0]
test ecx, ecx
je 0x10047129
movsx edx, word [ecx + 0x5f40]
lea eax, [ecx + 0x5f44]
mov esi, dword [ecx + 0x3f30]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x1004711f
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
xor edx, edx
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
push edi
call dword [ebp - 0x1b4]
add esp, 4
mov edi, dword [ebp - 0x188]
test edi, edi
je 0x1004719a
mov ecx, dword [0x100d24e0]
test ecx, ecx
je 0x10047190
movsx edx, word [ecx + 0x5f40]
lea eax, [ecx + 0x5f44]
mov esi, dword [ecx + 0x3f30]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x10047186
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
xor edx, edx
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
push edi
call dword [ebp - 0x1b4]
add esp, 4
mov eax, dword [ebp - 0x1f4]
mov edi, dword [ebp - 0x1a0]
mov dword [ebp - 0x17c], eax
test edi, edi
je 0x1004720d
mov ecx, dword [0x100d24e0]
test ecx, ecx
je 0x10047203
movsx edx, word [ecx + 0x5f40]
lea eax, [ecx + 0x5f44]
mov esi, dword [ecx + 0x3f30]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x100471f9
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
xor edx, edx
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
push edi
call dword [ebp - 0x1b4]
add esp, 4
mov edi, dword [ebp - 0x17c]
test edi, edi
je 0x10047274
mov ecx, dword [0x100d24e0]
test ecx, ecx
je 0x1004726a
movsx edx, word [ecx + 0x5f40]
lea eax, [ecx + 0x5f44]
mov esi, dword [ecx + 0x3f30]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x10047260
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x1a4]
movzx eax, dx
mov word [ecx + 0x5f40], ax
cwde
lea eax, [eax*8 + 0x5f44]
add eax, ecx
xor edx, edx
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f3c]
push edi
call dword [ebp - 0x1b4]
add esp, 4
mov al, byte [ebp - 0x15d]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100a95f7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret