Function at 0x1008d850
Capabilities:
Access peb ldr_data
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 0x10155a5c
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x208
mov eax, dword [0x10209f80]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
push esi
mov dword [ebp - 0x178], eax
mov dword [ebp - 0x16c], esi
call fcn.1004c080
add esp, 4
mov dword [esi + 4], 0
mov ecx, esi
mov dword [esi + 0x28], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x38], 0
call fcn.1004b530
xor edx, edx
mov byte [ebp - 0x15d], 0
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1d4], 0
mov dword [ebp - 0x190], edx
mov dword [ebp - 0x1cc], edx
xor esi, esi
mov dword [ebp - 4], edx
mov dword [ebp - 0x1c4], edx
mov dword [ebp - 0x1c8], edx
mov dword [ebp - 0x18c], esi
mov dword [ebp - 0x1c0], esi
mov eax, dword [ebp - 0x16c]
lea edx, [esi + 8]
mov byte [ebp - 4], 1
mov ecx, dword [eax + 0x54]
mov dword [ebp - 0x1a4], ecx
test ecx, ecx
jle 0x1008d97c
cmp ecx, edx
mov edi, ecx
cmovl edi, edx
test edi, edi
jle 0x1008d97c
imul eax, edi, 0x5c
push eax
call fcn.1003a400
mov ecx, dword [ebp - 0x1a4]
lea edx, [esi + 8]
mov dword [ebp - 0x190], eax
add esp, 4
mov dword [ebp - 0x1cc], eax
mov eax, dword [ebp - 0x16c]
mov dword [ebp - 0x1d0], edi
mov eax, dword [eax + 0x3c]
mov dword [ebp - 0x1d4], ecx
mov dword [ebp - 0x17c], eax
test eax, eax
jle 0x1008d9ca
cmp eax, 8
mov edi, eax
cmovl edi, edx
test edi, edi
jle 0x1008d9ca
lea eax, [edi + edi*2]
shl eax, 3
push eax
call fcn.1003a400
mov ecx, dword [ebp - 0x1a4]
mov esi, eax
mov eax, dword [ebp - 0x17c]
add esp, 4
mov dword [ebp - 0x18c], esi
mov dword [ebp - 0x1c0], esi
mov dword [ebp - 0x1c4], edi
mov edi, dword [ebp - 0x190]
imul ecx, ecx, 0x5c
mov dword [ebp - 0x1c8], eax
push ecx
push 0
push edi
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebp - 0x17c]
lea eax, [eax + eax*2]
shl eax, 3
push eax
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x16c]
add esp, 0x18
mov dword [ebp - 0x180], 0
cmp dword [edx + 0x54], 0
jle 0x1008db57
xor ecx, ecx
add edi, 0x3c
mov dword [ebp - 0x1a0], ecx
mov dword [ebp - 0x170], edi
mov eax, dword [edx + 0x5c]
xor edx, edx
add eax, ecx
mov dword [edi - 4], 0xffffffff
mov ecx, dword [ebp - 0x16c]
mov dword [ebp - 0x188], eax
cmp dword [ecx + 0x3c], edx
jle 0x1008ddf3
mov esi, dword [ebp - 0x170]
or edi, 0xffffffff
mov ecx, edi
cmp edi, 0xffffffff
jne 0x1008da84
mov ecx, dword [ebp - 0x16c]
or edi, edi
mov eax, dword [eax + 0x78]
mov ecx, dword [ecx + 0x44]
cmp eax, dword [ecx + edx*4]
jne 0x1008da70
mov dword [esi - 4], edx
mov edi, edx
mov eax, dword [ebp - 0x16c]
inc edx
mov ecx, edi
cmp edx, dword [eax + 0x3c]
mov eax, dword [ebp - 0x188]
jl 0x1008da51
mov esi, dword [ebp - 0x18c]
cmp ecx, 0xffffffff
je 0x1008ddf3
push dword [ebx + 0x10]
mov edi, dword [ebp - 0x170]
push eax
push dword [ebp - 0x178]
lea ecx, [edi - 0x3c]
call fcn.1008ebc0
test al, al
je 0x1008ddf3
mov edx, dword [ebp - 0x188]
mov eax, dword [edx + 0x40]
mov edx, dword [edx + 0x30]
shr eax, 8
and al, 1
or byte [ebp - 0x15d], al
mov eax, dword [edi - 4]
lea eax, [eax + eax*2]
mov dword [ebp - 0x1a8], eax
test edx, edx
jne 0x1008dae7
mov ecx, dword [ebp - 0x16c]
call fcn.1004bae0
mov edx, eax
mov dword [edi - 8], edx
cmp word [edx], 0
je 0x1008db0b
movzx eax, word [edx + 2]
test ax, ax
je 0x1008db0b
mov ecx, eax
cmp dword [edi], ecx
cmovge ecx, dword [edi]
add edx, 4
mov dword [edi], ecx
cmp word [edx], 0
jne 0x1008daf0
mov edx, dword [ebp - 0x1a8]
mov eax, dword [ebp - 0x180]
inc dword [esi + edx*8]
mov ecx, dword [edi]
cmp dword [esi + edx*8 + 4], ecx
cmovge ecx, dword [esi + edx*8 + 4]
inc eax
mov dword [esi + edx*8 + 4], ecx
add edi, 0x5c
mov edx, dword [ebp - 0x16c]
mov ecx, dword [ebp - 0x1a0]
add ecx, 0x7c
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x170], edi
mov dword [ebp - 0x1a0], ecx
cmp eax, dword [edx + 0x54]
jl 0x1008da25
mov eax, dword [ebp - 0x1a4]
xor edi, edi
mov dword [ebp - 0x184], edi
test eax, eax
jle 0x1008dedf
mov edx, dword [ebp - 0x190]
add edx, 0x40
mov dword [ebp - 0x188], eax
mov dword [ebp - 0x164], edx
mov eax, dword [edx - 8]
lea esi, [edx + 4]
mov ecx, esi
lea edi, [eax + eax*2]
mov eax, dword [edx - 4]
add eax, 0x20
mov dword [ebp - 0x170], edi
sar eax, 5
push eax
call fcn.10047550
mov eax, dword [esi]
shl eax, 2
push eax
mov eax, dword [ebp - 0x164]
push 0
push dword [eax + 0xc]
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebp - 0x18c]
add esp, 0xc
cmp dword [eax + edi*8 + 0xc], 0
lea esi, [eax + edi*8]
jne 0x1008dbf2
mov eax, dword [eax + edi*8 + 4]
lea ecx, [esi + 0xc]
add eax, 0x20
sar eax, 5
push eax
call fcn.10047550
mov eax, dword [esi + 0xc]
shl eax, 2
push eax
push 0
push dword [esi + 0x14]
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov edx, dword [ebp - 0x164]
mov eax, dword [edx - 0xc]
mov dword [ebp - 0x194], eax
cmp word [eax], 0
je 0x1008dce1
nop dword [eax + eax]
movzx ecx, word [eax + 2]
test cx, cx
je 0x1008dce1
movzx edi, word [eax]
cmp edi, ecx
ja 0x1008dcc8
nop dword [eax + eax]
mov eax, dword [ebp - 0x170]
mov ecx, edi
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov esi, edi
mov ecx, dword [ebp - 0x18c]
sar esi, 5
mov dword [ebp - 0x178], edx
mov eax, dword [ecx + eax*8 + 0x14]
test dword [eax + esi*4], edx
jne 0x1008dcaf
mov eax, dword [ebp - 0x164]
push edi
push dword [eax - 0x28]
call fcn.100923b0
mov edx, dword [ebp - 0x164]
add esp, 8
test eax, eax
je 0x1008dcb5
inc dword [edx]
mov eax, dword [ebp - 0x170]
mov ecx, dword [ebp - 0x18c]
inc dword [ecx + eax*8 + 8]
mov eax, dword [edx + 0xc]
mov ecx, dword [ebp - 0x178]
mov edx, dword [ebp - 0x18c]
or dword [eax + esi*4], ecx
mov eax, dword [ebp - 0x170]
mov eax, dword [edx + eax*8 + 0x14]
or dword [eax + esi*4], ecx
inc dword [ebp - 0x184]
mov edx, dword [ebp - 0x164]
mov eax, dword [ebp - 0x194]
inc edi
movzx eax, word [eax + 2]
cmp edi, eax
jle 0x1008dc30
mov eax, dword [ebp - 0x194]
add eax, 4
mov dword [ebp - 0x194], eax
cmp word [eax], 0
jne 0x1008dc10
add edx, 0x5c
sub dword [ebp - 0x188], 1
mov dword [ebp - 0x164], edx
jne 0x1008db82
mov esi, dword [ebp - 0x190]
mov edx, dword [ebp - 0x1a4]
add esi, 0x54
mov dword [ebp - 0x180], edx
nop dword [eax]
mov edi, dword [esi - 0x14]
cmp edi, dword [esi]
jle 0x1008dd56
mov eax, edi
shl eax, 5
push eax
call fcn.1003a400
mov edx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x178], eax
test edx, edx
je 0x1008dd51
mov ecx, dword [esi - 4]
shl ecx, 5
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
push dword [esi + 4]
call fcn.1003a490
mov eax, dword [ebp - 0x178]
add esp, 0x10
mov dword [esi + 4], eax
mov dword [esi], edi
mov ecx, dword [esi - 8]
mov edx, ecx
mov eax, dword [esi - 0x10]
mov dword [ebp - 0x1a8], ecx
mov dword [ebp - 0x188], ecx
lea eax, [ecx + eax*4]
mov dword [ebp - 0x19c], eax
cmp ecx, eax
jae 0x1008de9c
nop dword [eax + eax]
mov eax, dword [edx]
mov dword [ebp - 0x178], eax
test eax, eax
je 0x1008de87
xor edi, edi
mov dword [ebp - 0x170], edi
nop dword [eax + eax]
mov eax, 1
mov ecx, edi
shl eax, cl
test dword [ebp - 0x178], eax
je 0x1008de77
mov ecx, dword [esi]
mov eax, edx
sub eax, dword [ebp - 0x1a8]
xorps xmm0, xmm0
shl eax, 3
and eax, 0xffffffe0
add eax, edi
movzx eax, ax
movups xmmword [ebp - 0x204], xmm0
mov dword [ebp - 0x1fc], eax
mov eax, dword [esi - 4]
cmp eax, ecx
jne 0x1008de55
lea edi, [eax + 1]
test ecx, ecx
je 0x1008ddff
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
jmp 0x1008de04
mov byte [ebp - 0x15d], 0
jmp 0x1008eb6e
mov eax, 8
cmp eax, edi
cmovg edi, eax
cmp edi, ecx
jle 0x1008de4f
mov eax, edi
shl eax, 5
push eax
call fcn.1003a400
mov edx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x1b8], eax
test edx, edx
je 0x1008de47
mov ecx, dword [esi - 4]
shl ecx, 5
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
push dword [esi + 4]
call fcn.1003a490
mov eax, dword [ebp - 0x1b8]
add esp, 0x10
mov dword [esi + 4], eax
xorps xmm0, xmm0
mov dword [esi], edi
mov edi, dword [ebp - 0x170]
mov eax, dword [esi - 4]
mov ecx, dword [esi + 4]
mov edx, dword [ebp - 0x188]
shl eax, 5
movups xmmword [ecx + eax], xmm0
movups xmm0, xmmword [ebp - 0x204]
movups xmmword [ecx + eax + 0x10], xmm0
inc dword [esi - 4]
inc edi
mov dword [ebp - 0x170], edi
cmp edi, 0x20
jb 0x1008dda0
add edx, 4
mov dword [ebp - 0x188], edx
cmp edx, dword [ebp - 0x19c]
jb 0x1008dd80
mov eax, dword [esi - 8]
test eax, eax
je 0x1008dec1
push eax
mov dword [esi - 0xc], 0
mov dword [esi - 0x10], 0
call fcn.1003a490
add esp, 4
mov dword [esi - 8], 0
add esi, 0x5c
sub dword [ebp - 0x180], 1
jne 0x1008dd10
mov esi, dword [ebp - 0x18c]
mov edi, dword [ebp - 0x184]
jmp 0x1008dee7
xor edi, edi
mov dword [ebp - 0x184], edi
cmp dword [ebp - 0x17c], 0
jle 0x1008df38
mov edi, dword [ebp - 0x17c]
lea eax, [esi + 0x14]
mov dword [ebp - 0x178], eax
mov esi, eax
mov eax, dword [esi]
test eax, eax
je 0x1008df24
push eax
mov dword [esi - 4], 0
mov dword [esi - 8], 0
call fcn.1003a490
add esp, 4
mov dword [esi], 0
add esi, 0x18
sub edi, 1
jne 0x1008df01
mov esi, dword [ebp - 0x18c]
mov edi, dword [ebp - 0x184]
test esi, esi
je 0x1008df67
push esi
mov dword [ebp - 0x1c4], 0
mov dword [ebp - 0x1c8], 0
call fcn.1003a490
add esp, 4
xor eax, eax
mov dword [ebp - 0x18c], eax
mov dword [ebp - 0x1c0], eax
xor eax, eax
mov dword [ebp - 0x1f0], 0
mov dword [ebp - 0x1f4], 0
mov dword [ebp - 0x188], eax
mov dword [ebp - 0x1ec], eax
mov byte [ebp - 4], 6
test edi, edi
jle 0x1008dfc3
cmp edi, 8
mov esi, edi
mov ecx, 8
cmovl esi, ecx
test esi, esi
jle 0x1008dfc3
lea eax, [esi + esi*2]
shl eax, 3
push eax
call fcn.1003a400
add esp, 4
mov dword [ebp - 0x188], eax
mov dword [ebp - 0x1ec], eax
mov dword [ebp - 0x1f0], esi
lea ecx, [edi + edi*2]
mov dword [ebp - 0x1f4], edi
shl ecx, 3
push ecx
push 0
push eax
call sub.VCRUNTIME140.dll_memset
xor eax, eax
mov dword [ebp - 0x17c], eax
mov dword [ebp - 0x120], eax
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x11c], eax
push 0x40000
mov byte [ebp - 4], 7
call fcn.1003a400
push 0x20
mov esi, eax
call fcn.1003a400
movss xmm1, dword [0x101ccef4]
mov ecx, 1
mov dword [ebp - 0x184], eax
xor edi, edi
mov dword [ebp - 0x11c], eax
add esp, 0x14
mov dword [eax], esi
mov edx, 8
mov dword [ebp - 0x1ac], ecx
xor eax, eax
mov dword [ebp - 0x124], ecx
mov ecx, dword [ebp - 0x1a4]
mov dword [ebp - 0x120], edx
mov dword [ebp - 0x164], edi
mov dword [ebp - 0x174], eax
test ecx, ecx
jle 0x1008e3ee
mov esi, dword [ebp - 0x190]
xor edx, edx
mov dword [ebp - 0x198], edx
add esi, 0x18
mov dword [ebp - 0x19c], ecx
mov ecx, dword [ebp - 0x16c]
mov ecx, dword [ecx + 0x5c]
add ecx, edx
mov edx, dword [esi + 0x28]
test edx, edx
je 0x1008e3c7
mov edi, dword [ebp - 0x188]
lea eax, [eax + eax*2]
add dword [ebp - 0x174], edx
lea eax, [edi + eax*8]
mov dword [esi + 0x18], eax
movss xmm0, dword [ecx + 0x44]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1008e0ca
push ecx
lea eax, [ebp - 0x118]
movss dword [esp], xmm0
push eax
mov byte [ebp - 0x165], 1
call fcn.1004c250
add esp, 8
jmp 0x1008e0d1
mov byte [ebp - 0x165], 0
cmp dword [esi + 0x38], 0
mov eax, dword [ebp - 0x16c]
mov edi, dword [ebp - 0x164]
mov dword [ebp - 0x194], 0
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x1a0], eax
jle 0x1008e3c1
xor ecx, ecx
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x1b0], ecx
nop dword [eax]
mov edi, dword [esi + 0x40]
add edi, ecx
push dword [edi + 0x18]
push dword [esi]
call fcn.100923b0
add esp, 8
test eax, eax
je 0x1008e38f
push dword [esi + 8]
push eax
push dword [esi]
call fcn.10092d80
add esp, 0xc
test eax, eax
jne 0x1008e38f
test byte [esi + 4], 0x20
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x180], eax
je 0x1008e160
push eax
call fcn.1009a070
mov eax, dword [ebp - 0x180]
add esp, 4
test byte [esi + 4], 0x40
je 0x1008e16f
push eax
call fcn.1009a160
add esp, 4
mov eax, dword [ebp - 0x180]
add eax, 0x18
je 0x1008e38f
mov eax, dword [esi]
push dword [esi + 0xc]
mov eax, dword [eax + 0x54]
push eax
mov dword [ebp - 0x178], eax
call fcn.100950a0
add esp, 8
test eax, eax
jne 0x1008e38f
mov eax, dword [esi]
mov ecx, dword [eax + 0x54]
mov eax, dword [ecx + 0x50]
add ecx, 0x4c
mov dword [edi], eax
mov dword [ebp - 0x1b4], ecx
mov eax, dword [ecx]
mov dword [edi + 4], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x64]
mov dword [edi + 8], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x68]
neg eax
mov dword [edi + 0xc], eax
mov eax, dword [ebp - 0x178]
mov eax, dword [eax + 0x40]
add eax, 0x3f
and eax, 0xffffffc0
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x10], xmm0
cmp byte [ecx + 0x12], 7
sete al
mov byte [edi + 0x14], al
test ecx, ecx
je 0x1008e38f
mov eax, dword [edi + 4]
imul eax, dword [edi]
mov edx, dword [ebp - 0x17c]
shl eax, 2
mov dword [ebp - 0x180], eax
add eax, edx
cmp eax, 0x40000
jle 0x1008e30a
xor eax, eax
push 0x40000
mov dword [ebp - 0x17c], eax
call fcn.1003a400
mov ecx, dword [ebp - 0x1ac]
add esp, 4
mov dword [ebp - 0x1b8], eax
mov eax, dword [ebp - 0x120]
cmp ecx, eax
jne 0x1008e2e6
inc ecx
test eax, eax
je 0x1008e268
cdq
sub eax, edx
mov edx, dword [ebp - 0x120]
sar eax, 1
add eax, edx
jmp 0x1008e273
mov edx, dword [ebp - 0x120]
mov eax, 8
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp - 0x1a8], ecx
cmp ecx, edx
jle 0x1008e2e0
lea eax, [ecx*4]
push eax
call fcn.1003a400
mov edx, dword [ebp - 0x184]
add esp, 4
mov dword [ebp - 0x178], eax
test edx, edx
je 0x1008e2c8
mov ecx, dword [ebp - 0x1ac]
shl ecx, 2
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov edx, dword [ebp - 0x184]
push edx
call fcn.1003a490
mov eax, dword [ebp - 0x178]
add esp, 0x10
mov dword [ebp - 0x184], eax
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0x1a8]
mov dword [ebp - 0x120], eax
mov ecx, dword [ebp - 0x1ac]
mov edx, dword [ebp - 0x184]
mov eax, dword [ebp - 0x1b8]
mov dword [edx + ecx*4], eax
inc ecx
mov edx, dword [ebp - 0x17c]
mov dword [ebp - 0x1ac], ecx
mov dword [ebp - 0x124], ecx
jmp 0x1008e310
mov ecx, dword [ebp - 0x1ac]
mov eax, dword [ebp - 0x184]
mov ecx, dword [eax + ecx*4 - 4]
lea eax, [ebp - 0x118]
add ecx, edx
add edx, dword [ebp - 0x180]
mov dword [ebp - 0x17c], edx
xor edx, edx
cmp byte [ebp - 0x165], dl
mov dword [edi + 0x1c], ecx
cmove eax, edx
push eax
push dword [edi]
push ecx
push dword [ebp - 0x1b4]
lea ecx, [esi - 0x18]
call fcn.1008d250
mov ecx, dword [edi]
mov edx, dword [ebp - 0x170]
mov eax, dword [esi + 0x18]
add ecx, dword [ebp - 0x1a0]
mov dword [edx + eax + 4], ecx
mov ecx, dword [edi + 4]
mov eax, dword [esi + 0x18]
add ecx, dword [ebp - 0x1a0]
mov edi, dword [ebp - 0x164]
mov dword [edx + eax + 8], ecx
mov ecx, dword [esi + 0x18]
mov eax, dword [edx + ecx + 8]
imul eax, dword [edx + ecx + 4]
add edi, eax
mov dword [ebp - 0x164], edi
jmp 0x1008e395
mov edi, dword [ebp - 0x164]
mov eax, dword [ebp - 0x194]
mov ecx, dword [ebp - 0x1b0]
inc eax
add dword [ebp - 0x170], 0x18
add ecx, 0x20
mov dword [ebp - 0x194], eax
mov dword [ebp - 0x1b0], ecx
cmp eax, dword [esi + 0x38]
jl 0x1008e110
mov eax, dword [ebp - 0x174]
mov edx, dword [ebp - 0x198]
add esi, 0x5c
movss xmm1, dword [0x101ccef4]
add edx, 0x7c
sub dword [ebp - 0x19c], 1
mov dword [ebp - 0x198], edx
jne 0x1008e073
movd xmm0, edi
xorps xmm1, xmm1
cvtdq2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x1008e407
sqrtsd xmm0, xmm0
jmp 0x1008e40c
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
mov edi, dword [ebp - 0x16c]
cvtsd2ss xmm0, xmm0
mov esi, dword [edi + 8]
mov dword [edi + 0x28], 0
cvttss2si eax, xmm0
inc eax
test esi, esi
jg 0x1008e464
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [0x101d37a4]
jb 0x1008e440
mov esi, 0x1000
jmp 0x1008e464
comiss xmm0, dword [0x101d37a0]
jb 0x1008e450
mov esi, 0x800
jmp 0x1008e464
comiss xmm0, dword [str.333D33]
mov esi, 0x200
mov eax, 0x400
cmovae esi, eax
mov dword [edi + 0x24], esi
xor eax, eax
sub esi, dword [edi + 0xc]
mov dword [ebp - 0x1dc], 0
mov dword [ebp - 0x1e0], 0
mov dword [ebp - 0x1d8], eax
mov byte [ebp - 4], 8
test esi, esi
jle 0x1008e4c0
cmp esi, 8
mov edi, esi
mov ecx, 8
cmovl edi, ecx
test edi, edi
jle 0x1008e4ba
lea eax, [edi + edi*2]
shl eax, 2
push eax
call fcn.1003a400
add esp, 4
mov dword [ebp - 0x1d8], eax
mov dword [ebp - 0x1dc], edi
mov edi, dword [ebp - 0x16c]
push esi
push eax
mov eax, dword [edi + 0x24]
mov ecx, 0x8000
sub ecx, dword [edi + 0xc]
sub eax, dword [edi + 0xc]
push ecx
push eax
lea eax, [ebp - 0x15c]
mov dword [ebp - 0x1e0], esi
push eax
call fcn.1008ee20
lea eax, [ebp - 0x15c]
push eax
push edi
call fcn.1004c2b0
mov eax, dword [ebp - 0x1a4]
add esp, 0x1c
test eax, eax
jle 0x1008e56d
mov esi, dword [ebp - 0x190]
add esi, 0x40
mov dword [ebp - 0x19c], eax
nop dword [eax]
mov eax, dword [esi]
test eax, eax
je 0x1008e55b
push eax
push dword [esi - 0x10]
lea eax, [ebp - 0x15c]
push eax
call fcn.1008efa0
xor edi, edi
add esp, 0xc
cmp dword [esi], edi
jle 0x1008e55b
xor edx, edx
mov eax, dword [esi - 0x10]
cmp dword [edx + eax + 0x14], 0
je 0x1008e553
mov ecx, dword [edx + eax + 0x10]
add ecx, dword [edx + eax + 8]
mov eax, dword [ebp - 0x16c]
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 0x1008e531
add esi, 0x5c
sub dword [ebp - 0x19c], 1
jne 0x1008e510
mov edi, dword [ebp - 0x16c]
test byte [edi], 1
mov eax, dword [edi + 0x28]
jne 0x1008e59a
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
movss xmm2, dword [0x101ccef4]
lea esi, [eax + 1]
mov eax, dword [edi + 0x24]
movaps xmm1, xmm2
mov dword [edi + 0x28], esi
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
imul esi, eax
cmp byte [ebp - 0x15d], 0
divss xmm2, xmm0
movss dword [edi + 0x2c], xmm1
movss dword [edi + 0x30], xmm2
je 0x1008e5e8
shl esi, 2
push esi
call fcn.1003a400
mov dword [edi + 0x20], eax
jmp 0x1008e5f1
push esi
call fcn.1003a400
mov dword [edi + 0x1c], eax
push esi
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x1a4]
xor al, al
add esp, 0x10
mov byte [ebp - 0x165], al
test edx, edx
jle 0x1008ea48
mov eax, dword [ebp - 0x190]
xor ecx, ecx
add eax, 4
mov dword [ebp - 0x1a8], ecx
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x178], edx
cmp dword [eax + 0x3c], 0
je 0x1008ea21
mov esi, dword [edi + 0x5c]
sub esp, 8
movss xmm0, dword [eax + 4]
add esi, ecx
movss xmm1, dword [eax]
mov dword [ebp - 0x1e4], esi
movss dword [esp + 4], xmm0
mov ecx, dword [esi + 0x78]
movss dword [esp], xmm1
push esi
push ecx
push edi
mov dword [ebp - 0x19c], ecx
call fcn.1004cf70
mov eax, dword [ebp - 0x19c]
add esp, 0x14
movss xmm3, dword [esi + 0x28]
movss dword [ebp - 0x194], xmm3
mov dword [ebp - 0x1b8], 0
movss xmm0, dword [eax + 0x50]
addss xmm0, dword [0x101ccef0]
cvttss2si eax, xmm0
movd xmm2, eax
mov eax, dword [ebp - 0x170]
cvtdq2ps xmm2, xmm2
cmp dword [eax + 0x3c], 0
addss xmm2, dword [esi + 0x2c]
mov esi, dword [edi + 0xc]
mov dword [ebp - 0x17c], esi
movss dword [ebp - 0x1b0], xmm2
jle 0x1008ea0e
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x1a0], ecx
mov dword [ebp - 0x180], edx
nop dword [eax + eax]
mov edi, dword [eax + 0x54]
mov eax, dword [eax + 0x2c]
add edi, edx
add eax, ecx
cmp dword [eax + 4], 0
jne 0x1008e6fa
cmp dword [eax + 8], 0
je 0x1008e9d2
mov edx, dword [eax + 0xc]
sub esp, 0x24
mov ecx, dword [edi + 4]
add edx, esi
mov esi, dword [eax + 0x10]
mov eax, dword [ebp - 0x170]
movd xmm0, dword [edi + 0xc]
movd xmm1, dword [edi + 8]
add esi, dword [ebp - 0x17c]
movss xmm6, dword [eax + 0x28]
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x198], esi
mov esi, dword [ebp - 0x16c]
mov dword [ebp - 0x174], 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
cvtdq2ps xmm7, xmm7
addss xmm1, xmm3
movss dword [ebp - 0x1b4], xmm0
mulss xmm5, xmm6
mulss xmm7, xmm6
addss xmm5, xmm0
movd xmm2, eax
movd xmm0, dword [esi + 0x24]
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0x164], xmm1
addss xmm7, xmm1
movd xmm1, dword [esi + 0x28]
mov esi, dword [ebp - 0x198]
movd xmm4, edx
cvtdq2ps xmm4, xmm4
lea eax, [ecx + esi]
cvtdq2ps xmm2, xmm2
divss xmm4, xmm0
divss xmm2, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, word [edi + 0x18]
cvtdq2ps xmm1, xmm1
movd xmm3, esi
cvtdq2ps xmm3, xmm3
mov esi, dword [ebp - 0x19c]
mov ecx, esi
mulss xmm6, dword [edi + 0x10]
divss xmm0, xmm1
divss xmm3, xmm1
movss dword [esp + 0x20], xmm6
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [ebp - 0x1b4]
movss dword [esp + 0x18], xmm2
movss dword [esp + 0x14], xmm3
movss dword [esp + 0x10], xmm4
movss dword [esp + 0xc], xmm5
movss dword [esp + 8], xmm7
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp - 0x164]
movss dword [esp], xmm0
push eax
push dword [ebp - 0x1e4]
call fcn.10048870
cmp byte [edi + 0x14], 0
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x28]
lea eax, [eax + eax*4]
je 0x1008e83f
or dword [ecx + eax*8 - 0x28], 1
mov byte [ebp - 0x165], 1
mov eax, dword [ebp - 0x16c]
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi]
mov dword [ebp - 0x164], ecx
mov esi, dword [eax + 0x24]
mov eax, esi
mov ecx, dword [ebp - 0x16c]
imul eax, dword [ebp - 0x198]
mov dword [ebp - 0x1b4], esi
mov dword [ebp - 0x198], 0
cmp dword [ecx + 0x1c], 0
je 0x1008e911
add eax, dword [ecx + 0x1c]
add eax, dword [ebp - 0x174]
cmp dword [edi + 4], 0
mov ecx, dword [ebp - 0x164]
mov dword [ebp - 0x174], eax
jle 0x1008e9bc
lea esi, [edx*4]
mov dword [ebp - 0x1bc], esi
lea esi, [ecx + 3]
mov dword [ebp - 0x164], esi
xor ecx, ecx
test edx, edx
jle 0x1008e8e2
nop word [eax + eax]
mov edx, dword [ebp - 0x174]
lea esi, [esi + 4]
mov al, byte [esi - 4]
mov byte [edx + ecx], al
inc ecx
mov edx, dword [edi]
cmp ecx, edx
jl 0x1008e8c0
mov eax, dword [ebp - 0x174]
mov esi, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x198]
add eax, dword [ebp - 0x1b4]
inc ecx
add esi, dword [ebp - 0x1bc]
mov dword [ebp - 0x198], ecx
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x164], esi
cmp ecx, dword [edi + 4]
jl 0x1008e8b1
jmp 0x1008e9bc
mov ecx, dword [ebp - 0x174]
add ecx, eax
cmp dword [edi + 4], 0
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax + 0x20]
lea eax, [eax + ecx*4]
mov dword [ebp - 0x174], eax
jle 0x1008e9bc
lea ecx, [esi*4]
mov dword [ebp - 0x1b4], ecx
lea ecx, [edx*4]
mov dword [ebp - 0x1e8], ecx
mov ecx, dword [ebp - 0x164]
xor esi, esi
test edx, edx
jle 0x1008e992
mov ecx, eax
mov eax, dword [ebp - 0x164]
sub eax, dword [ebp - 0x174]
mov dword [ebp - 0x1bc], eax
nop
mov eax, dword [eax + ecx]
lea ecx, [ecx + 4]
mov dword [ecx - 4], eax
inc esi
mov edx, dword [edi]
mov eax, dword [ebp - 0x1bc]
cmp esi, edx
jl 0x1008e970
mov eax, dword [ebp - 0x174]
mov ecx, dword [ebp - 0x164]
mov esi, dword [ebp - 0x198]
add eax, dword [ebp - 0x1b4]
inc esi
add ecx, dword [ebp - 0x1e8]
mov dword [ebp - 0x198], esi
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x164], ecx
cmp esi, dword [edi + 4]
jl 0x1008e955
mov esi, dword [ebp - 0x17c]
movss xmm3, dword [ebp - 0x194]
movss xmm2, dword [ebp - 0x1b0]
mov ecx, dword [ebp - 0x1b8]
mov eax, dword [ebp - 0x170]
inc ecx
add dword [ebp - 0x180], 0x20
add dword [ebp - 0x1a0], 0x18
mov edx, dword [ebp - 0x180]
cmp ecx, dword [eax + 0x3c]
mov dword [ebp - 0x1b8], ecx
mov ecx, dword [ebp - 0x1a0]
jl 0x1008e6e0
mov edi, dword [ebp - 0x16c]
mov ecx, dword [ebp - 0x1a8]
mov edx, dword [ebp - 0x178]
mov dword [eax + 0x2c], 0
add eax, 0x5c
add ecx, 0x7c
sub edx, 1
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x1a8], ecx
mov dword [ebp - 0x178], edx
jne 0x1008e630
mov al, byte [ebp - 0x165]
mov byte [edi + 0x19], al
xor esi, esi
mov edi, dword [ebp - 0x1ac]
test edi, edi
jle 0x1008ea76
nop word [eax + eax]
mov eax, dword [ebp - 0x184]
push dword [eax + esi*4]
call fcn.1003a490
inc esi
add esp, 4
cmp esi, edi
jl 0x1008ea60
mov edi, dword [ebp - 0x1a4]
test edi, edi
jle 0x1008ead9
mov esi, dword [ebp - 0x190]
add esi, 0x18
nop dword [eax]
mov eax, dword [esi + 0x40]
mov byte [ebp - 4], 9
test eax, eax
je 0x1008eaa4
push eax
call fcn.1003a490
add esp, 4
mov eax, dword [esi + 0x34]
mov byte [ebp - 4], 0xa
test eax, eax
je 0x1008eab8
push eax
call fcn.1003a490
add esp, 4
mov eax, dword [esi]
mov byte [ebp - 4], 8
test eax, eax
je 0x1008ead1
push eax
call fcn.10091f00
add esp, 4
mov dword [esi], 0
add esi, 0x5c
sub edi, 1
jne 0x1008ea90
mov esi, dword [ebp - 0x190]
test esi, esi
je 0x1008eb0e
push esi
mov dword [ebp - 0x1d0], 0
mov dword [ebp - 0x1d4], 0
call fcn.1003a490
add esp, 4
xor esi, esi
mov dword [ebp - 0x190], esi
mov dword [ebp - 0x1cc], esi
push dword [ebp - 0x16c]
call fcn.1004be30
add esp, 4
mov byte [ebp - 0x15d], 1
mov eax, dword [ebp - 0x1d8]
mov byte [ebp - 4], 0xb
test eax, eax
je 0x1008eb3a
push eax
call fcn.1003a490
add esp, 4
mov eax, dword [ebp - 0x184]
mov byte [ebp - 4], 0xc
test eax, eax
je 0x1008eb51
push eax
call fcn.1003a490
add esp, 4
mov eax, dword [ebp - 0x188]
mov byte [ebp - 4], 0xd
test eax, eax
je 0x1008eb68
push eax
call fcn.1003a490
add esp, 4
mov esi, dword [ebp - 0x18c]
mov byte [ebp - 4], 0xe
test esi, esi
je 0x1008eb7f
push esi
call fcn.1003a490
add esp, 4
mov eax, dword [ebp - 0x190]
mov dword [ebp - 4], 0xf
test eax, eax
je 0x1008eb99
push eax
call fcn.1003a490
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.100f3936
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret