Function at 0x100392a0
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 0x100e14fc
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x208
mov eax, dword [0x1013e040]
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 - 0x164], edi
mov dword [ebp - 0x168], ecx
mov ecx, edi
call fcn.10025210
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.10023ae0
xor ecx, ecx
mov byte [ebp - 0x15d], 0
mov dword [ebp - 0x1d8], 0
mov dword [ebp - 0x1dc], 0
mov dword [ebp - 0x17c], ecx
mov dword [ebp - 0x1d4], ecx
mov dword [ebp - 4], ecx
xor edi, edi
mov dword [ebp - 0x1cc], ecx
mov dword [ebp - 0x1d0], ecx
mov dword [ebp - 0x194], edi
mov dword [ebp - 0x1c8], edi
mov eax, dword [ebp - 0x164]
lea edx, [edi + 8]
mov byte [ebp - 4], 1
mov ecx, dword [eax + 0x54]
mov dword [ebp - 0x1a0], ecx
test ecx, ecx
jle 0x100393c2
cmp ecx, edx
mov esi, ecx
cmovl esi, edx
test esi, esi
jle 0x100393c2
imul ecx, esi, 0x5c
call fcn.10009930
mov ecx, dword [ebp - 0x1a0]
lea edx, [edi + 8]
mov dword [ebp - 0x17c], eax
mov dword [ebp - 0x1d4], eax
mov eax, dword [ebp - 0x164]
mov dword [ebp - 0x1d8], esi
mov eax, dword [eax + 0x3c]
mov dword [ebp - 0x1dc], ecx
mov dword [ebp - 0x1a4], eax
test eax, eax
jle 0x1003940c
cmp eax, 8
mov esi, eax
cmovl esi, edx
test esi, esi
jle 0x1003940c
lea ecx, [esi + esi*2]
shl ecx, 3
call fcn.10009930
mov ecx, dword [ebp - 0x1a0]
mov edi, eax
mov eax, dword [ebp - 0x1a4]
mov dword [ebp - 0x194], edi
mov dword [ebp - 0x1c8], edi
mov dword [ebp - 0x1cc], esi
mov esi, dword [ebp - 0x17c]
imul ecx, ecx, 0x5c
mov dword [ebp - 0x1d0], eax
push ecx
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebp - 0x1a4]
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 - 0x164]
add esp, 0xc
mov eax, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov dword [ebp - 0x184], 0
mov dword [ebp - 0x198], 6
cmp dword [edx + 0x54], 0
mov dword [ebp - 0x1b0], eax
jle 0x100395b7
xor ecx, ecx
add esi, 0x3c
mov dword [ebp - 0x180], ecx
mov dword [ebp - 0x190], esi
nop
mov eax, dword [edx + 0x5c]
xor edx, edx
add eax, ecx
mov dword [esi - 4], 0xffffffff
mov ecx, dword [ebp - 0x164]
mov dword [ebp - 0x174], eax
cmp dword [ecx + 0x3c], edx
jle 0x10039627
mov edi, dword [ebp - 0x190]
or esi, 0xffffffff
nop dword [eax]
mov ecx, esi
cmp esi, 0xffffffff
jne 0x100394e3
mov ecx, dword [ebp - 0x164]
or esi, esi
mov eax, dword [eax + 0x78]
mov ecx, dword [ecx + 0x44]
cmp eax, dword [ecx + edx*4]
jne 0x100394cf
mov dword [edi - 4], edx
mov esi, edx
mov eax, dword [ebp - 0x164]
inc edx
mov ecx, esi
cmp edx, dword [eax + 0x3c]
mov eax, dword [ebp - 0x174]
jl 0x100394b0
mov edi, dword [ebp - 0x194]
cmp ecx, 0xffffffff
je 0x10039627
push dword [ebx + 8]
mov esi, dword [ebp - 0x190]
push eax
push dword [ebp - 0x168]
lea ecx, [esi - 0x3c]
call fcn.10038830
test al, al
je 0x10039627
mov ecx, dword [ebp - 0x174]
mov edx, 0x1012bb74
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 - 0x18c], eax
mov eax, dword [ecx + 0x30]
test eax, eax
cmovne edx, eax
mov dword [esi - 8], edx
cmp word [edx], 0
je 0x1003956b
nop dword [eax + eax]
movzx eax, word [edx + 2]
test ax, ax
je 0x1003956b
mov ecx, eax
cmp dword [esi], ecx
cmovge ecx, dword [esi]
add edx, 4
mov dword [esi], ecx
cmp word [edx], 0
jne 0x10039550
mov edx, dword [ebp - 0x18c]
mov eax, dword [ebp - 0x184]
inc dword [edi + edx*8]
mov ecx, dword [esi]
cmp dword [edi + edx*8 + 4], ecx
cmovge ecx, dword [edi + edx*8 + 4]
inc eax
mov dword [edi + edx*8 + 4], ecx
add esi, 0x5c
mov edx, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x180]
add ecx, 0x7c
mov dword [ebp - 0x184], eax
mov dword [ebp - 0x190], esi
mov dword [ebp - 0x180], ecx
cmp eax, dword [edx + 0x54]
jl 0x10039480
mov eax, dword [ebp - 0x1a0]
xor esi, esi
mov dword [ebp - 0x170], esi
test eax, eax
jle 0x10039933
mov edx, dword [ebp - 0x17c]
add edx, 0x4c
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x178], 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 - 0x18c], ecx
mov eax, dword [edx - 4]
mov dword [ebp - 0x190], esi
mov dword [ebp - 0x168], eax
cmp ecx, eax
jle 0x10039675
test eax, eax
je 0x10039633
cdq
sub eax, edx
mov edx, dword [ebp - 0x178]
sar eax, 1
add eax, dword [ebp - 0x168]
mov dword [ebp - 0x174], eax
jmp 0x1003963d
mov byte [ebp - 0x15d], 0
jmp 0x1003a91a
mov dword [ebp - 0x174], 8
cmp dword [ebp - 0x174], ecx
lea eax, [edx - 8]
mov dword [ebp - 0x184], eax
mov eax, ecx
cmovg eax, dword [ebp - 0x174]
mov ecx, dword [ebp - 0x184]
push eax
call fcn.1001d860
mov edx, dword [ebp - 0x178]
mov ecx, dword [ebp - 0x18c]
mov eax, dword [ebp - 0x184]
jmp 0x10039678
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 - 0x174], ecx
cmp dword [ecx], 0
jne 0x10039701
mov esi, dword [edi + esi*8 + 4]
mov eax, dword [ecx + 4]
add esi, 0x20
sar esi, 5
mov dword [ebp - 0x168], eax
cmp esi, eax
jle 0x100396ea
test eax, eax
je 0x100396cc
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
add ecx, dword [ebp - 0x168]
jmp 0x100396d1
mov ecx, 8
cmp ecx, esi
mov eax, esi
cmovg eax, ecx
mov ecx, dword [ebp - 0x174]
push eax
call fcn.1001d860
mov ecx, dword [ebp - 0x174]
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 - 0x178]
mov eax, dword [edx - 0x18]
mov dword [ebp - 0x1c0], eax
cmp word [eax], 0
je 0x100397f7
nop word [eax + eax]
movzx ecx, word [eax + 2]
test cx, cx
je 0x100397f1
movzx edi, word [eax]
cmp edi, ecx
ja 0x100397d8
nop dword [eax + eax]
mov eax, dword [ebp - 0x190]
mov ecx, edi
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov esi, edi
mov ecx, dword [ebp - 0x194]
sar esi, 5
mov dword [ebp - 0x168], edx
mov eax, dword [ecx + eax*8 + 0x14]
test dword [eax + esi*4], edx
jne 0x100397bf
mov eax, dword [ebp - 0x178]
push edi
push dword [eax - 0x34]
call fcn.1007f8a0
mov edx, dword [ebp - 0x178]
add esp, 8
test eax, eax
je 0x100397c5
inc dword [edx - 0xc]
mov eax, dword [ebp - 0x190]
mov ecx, dword [ebp - 0x194]
inc dword [ecx + eax*8 + 8]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x168]
mov edx, dword [ebp - 0x194]
or dword [eax + esi*4], ecx
mov eax, dword [ebp - 0x190]
mov eax, dword [edx + eax*8 + 0x14]
or dword [eax + esi*4], ecx
inc dword [ebp - 0x170]
mov edx, dword [ebp - 0x178]
mov eax, dword [ebp - 0x1c0]
inc edi
movzx eax, word [eax + 2]
cmp edi, eax
jle 0x10039740
mov eax, dword [ebp - 0x1c0]
add eax, 4
mov dword [ebp - 0x1c0], eax
cmp word [eax], 0
jne 0x10039720
mov edi, dword [ebp - 0x194]
add edx, 0x5c
sub dword [ebp - 0x180], 1
mov dword [ebp - 0x178], edx
jne 0x100395e2
mov esi, dword [ebp - 0x17c]
mov edi, dword [ebp - 0x1a0]
add esi, 0x58
mov dword [ebp - 0x184], edi
push dword [esi - 0x18]
lea ecx, [esi - 8]
call fcn.1003ae00
mov ecx, dword [esi - 0xc]
mov edx, ecx
mov eax, dword [esi - 0x14]
mov dword [ebp - 0x18c], ecx
mov dword [ebp - 0x174], ecx
lea eax, [ecx + eax*4]
mov dword [ebp - 0x1ac], eax
cmp ecx, eax
jae 0x1003990b
mov eax, dword [edx]
mov dword [ebp - 0x168], eax
test eax, eax
je 0x100398f0
xor edi, edi
mov eax, 1
mov ecx, edi
shl eax, cl
test dword [ebp - 0x168], eax
je 0x100398e6
mov ecx, dword [esi - 8]
mov eax, edx
sub eax, dword [ebp - 0x18c]
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 ecx, eax
jne 0x100398cd
inc ecx
test eax, eax
je 0x100398b1
cdq
sub eax, edx
sar eax, 1
add eax, dword [esi - 4]
jmp 0x100398b6
mov eax, 8
cmp eax, ecx
cmovg ecx, eax
push ecx
lea ecx, [esi - 8]
call fcn.1003ae00
mov edx, dword [ebp - 0x174]
xorps xmm0, xmm0
mov eax, dword [esi - 8]
shl eax, 5
add eax, dword [esi]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x204]
movups xmmword [eax + 0x10], xmm0
inc dword [esi - 8]
inc edi
cmp edi, 0x20
jb 0x10039864
add edx, 4
mov dword [ebp - 0x174], edx
cmp edx, dword [ebp - 0x1ac]
jb 0x10039852
mov edi, dword [ebp - 0x184]
lea ecx, [esi - 0x14]
call fcn.1001d420
add esi, 0x5c
sub edi, 1
mov dword [ebp - 0x184], edi
jne 0x10039822
mov edi, dword [ebp - 0x194]
mov esi, dword [ebp - 0x170]
jmp 0x1003993b
xor esi, esi
mov dword [ebp - 0x170], esi
cmp dword [ebp - 0x1a4], 0
jle 0x10039970
mov esi, dword [ebp - 0x1a4]
lea eax, [edi + 0xc]
mov dword [ebp - 0x168], eax
mov edi, eax
mov ecx, edi
call fcn.1001d420
add edi, 0x18
sub esi, 1
jne 0x10039955
mov edi, dword [ebp - 0x194]
mov esi, dword [ebp - 0x170]
test edi, edi
je 0x10039a10
mov ecx, dword [0x10265810]
mov dword [ebp - 0x1cc], 0
mov dword [ebp - 0x1d0], 0
test ecx, ecx
je 0x100399ef
movsx eax, word [ecx + 0x5f34]
mov edx, dword [ecx + 0x3f38]
add eax, 0xbe7
mov dword [ebp - 0x168], edx
cmp dword [ecx + eax*8], edx
lea eax, [ecx + eax*8]
je 0x100399e5
movsx eax, word [ecx + 0x5f34]
inc eax
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov edx, dword [ebp - 0x168]
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
lea eax, [ecx + eax*8]
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f30]
cmp dword [0x10265808], 0
je 0x10039a02
push edi
call dword [ebp - 0x1b0]
add esp, 4
xor eax, eax
mov dword [ebp - 0x194], eax
mov dword [ebp - 0x1c8], eax
xor eax, eax
mov dword [ebp - 0x1f0], 0
mov dword [ebp - 0x1f4], 0
mov dword [ebp - 0x190], eax
mov dword [ebp - 0x1ec], eax
mov byte [ebp - 4], 6
test esi, esi
jle 0x10039a68
cmp esi, 8
mov edi, esi
mov ecx, 8
cmovl edi, ecx
test edi, edi
jle 0x10039a68
lea ecx, [edi + edi*2]
shl ecx, 3
call fcn.10009930
mov dword [ebp - 0x190], eax
mov dword [ebp - 0x1ec], eax
mov dword [ebp - 0x1f0], edi
lea ecx, [esi + esi*2]
mov dword [ebp - 0x1f4], esi
shl ecx, 3
push ecx
push 0
push eax
call sub.VCRUNTIME140.dll_memset
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x170], 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 - 0x1b4], eax
call eax
mov ecx, dword [0x10265810]
add esp, 4
mov edi, eax
test ecx, ecx
je 0x10039b07
movsx edx, word [ecx + 0x5f34]
lea eax, [ecx + 0x5f38]
mov esi, dword [ecx + 0x3f38]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x10039afd
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
xor edx, edx
lea eax, [ecx + eax*8]
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 4]
inc dword [ecx + 0x5f2c]
mov ecx, 0x20
call fcn.10009930
movss xmm0, dword [0x1013496c]
xor ecx, ecx
mov dword [ebp - 0x1a4], eax
mov dword [ebp - 0x11c], eax
mov dword [eax], edi
mov eax, 1
xor edi, edi
mov dword [ebp - 0x120], 8
mov dword [ebp - 0x1c0], eax
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x1b8], ecx
mov dword [ebp - 0x1ac], edi
cmp dword [ebp - 0x1a0], ecx
jle 0x10039f0a
mov eax, dword [ebp - 0x1a0]
xor edx, edx
mov esi, dword [ebp - 0x17c]
mov dword [ebp - 0x19c], eax
add esi, 0x50
mov eax, dword [ebp - 0x164]
mov dword [ebp - 0x1a8], edx
mov ecx, dword [eax + 0x5c]
add ecx, edx
cmp dword [esi - 0x10], 0
je 0x10039ed7
mov edx, dword [ebp - 0x190]
lea eax, [edi + edi*2]
add edi, dword [esi - 0x10]
mov dword [ebp - 0x1ac], edi
lea eax, [edx + eax*8]
mov dword [esi - 0x20], eax
movss xmm1, dword [ecx + 0x44]
ucomiss xmm1, xmm0
movss dword [ebp - 0x168], xmm1
lahf
test ah, 0x44
jnp 0x10039c1a
mov byte [ebp - 0x169], 1
xor edi, edi
nop word [eax + eax]
movd xmm0, edi
mov eax, edi
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10134fa0]
cvtpd2ps xmm0, xmm0
mulss xmm0, xmm1
call fcn.100e0970
movss xmm1, dword [ebp - 0x168]
mov edx, 0xff
cmp eax, edx
movzx ecx, al
cmovbe edx, ecx
mov byte [ebp + edi - 0x118], dl
inc edi
cmp edi, 0x100
jb 0x10039bd0
jmp 0x10039c21
mov byte [ebp - 0x169], 0
cmp dword [esi], 0
mov eax, dword [ebp - 0x164]
mov dword [ebp - 0x180], 0
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x184], eax
jle 0x10039ed1
xor ecx, ecx
mov dword [ebp - 0x1bc], 0
mov dword [ebp - 0x178], ecx
mov edi, dword [esi + 8]
add edi, ecx
push dword [edi + 0x18]
push dword [esi - 0x38]
call fcn.1007f8a0
add esp, 8
test eax, eax
je 0x10039ea6
push dword [esi - 0x30]
push eax
push dword [esi - 0x38]
call fcn.10080270
add esp, 0xc
test eax, eax
jne 0x10039ea6
test byte [esi - 0x34], 0x20
mov eax, dword [esi - 0x38]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x174], eax
je 0x10039ca8
push eax
call fcn.10087530
mov eax, dword [ebp - 0x174]
add esp, 4
test byte [esi - 0x34], 0x40
je 0x10039cb7
push eax
call fcn.10087620
add esp, 4
mov eax, dword [ebp - 0x174]
add eax, 0x18
je 0x10039ea6
mov eax, dword [esi - 0x38]
push dword [esi - 0x2c]
mov eax, dword [eax + 0x54]
push eax
mov dword [ebp - 0x168], eax
call fcn.10082590
add esp, 8
test eax, eax
jne 0x10039ea6
mov eax, dword [esi - 0x38]
mov ecx, dword [eax + 0x54]
mov eax, dword [ecx + 0x50]
add ecx, 0x4c
mov dword [edi], eax
mov dword [ebp - 0x188], ecx
mov eax, dword [ecx]
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 - 0x168]
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 0x10039ea6
mov eax, dword [edi]
imul eax, dword [edi + 4]
mov edx, dword [ebp - 0x170]
shl eax, 2
mov dword [ebp - 0x174], eax
add eax, edx
cmp eax, 0x40000
jle 0x10039e2e
xor eax, eax
push 0x40000
mov dword [ebp - 0x170], eax
call dword [ebp - 0x1b4]
mov ecx, dword [0x10265810]
add esp, 4
mov dword [ebp - 0x18c], eax
test ecx, ecx
je 0x10039df6
movsx eax, word [ecx + 0x5f34]
mov edx, dword [ecx + 0x3f38]
add eax, 0xbe7
mov dword [ebp - 0x168], edx
cmp dword [ecx + eax*8], edx
lea eax, [ecx + eax*8]
je 0x10039de6
movsx eax, word [ecx + 0x5f34]
inc eax
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov edx, dword [ebp - 0x168]
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
lea eax, [ecx + eax*8]
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 4]
inc dword [ecx + 0x5f2c]
mov eax, dword [ebp - 0x18c]
mov dword [ebp - 0x168], eax
lea ecx, [ebp - 0x124]
lea eax, [ebp - 0x168]
push eax
call fcn.1003ab60
mov eax, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x124]
mov edx, dword [ebp - 0x170]
mov dword [ebp - 0x1a4], eax
mov dword [ebp - 0x1c0], ecx
jmp 0x10039e3a
mov eax, dword [ebp - 0x1a4]
mov ecx, dword [ebp - 0x1c0]
mov ecx, dword [eax + ecx*4 - 4]
lea eax, [ebp - 0x118]
add ecx, edx
add edx, dword [ebp - 0x174]
mov dword [ebp - 0x170], edx
xor edx, edx
cmp byte [ebp - 0x169], dl
mov dword [edi + 0x1c], ecx
cmove eax, edx
push eax
push dword [edi]
push ecx
push dword [ebp - 0x188]
call fcn.10038a90
mov edx, dword [ebp - 0x1bc]
mov eax, dword [esi - 0x20]
mov ecx, dword [edi]
add ecx, dword [ebp - 0x184]
mov dword [eax + edx + 4], ecx
mov eax, dword [esi - 0x20]
mov ecx, dword [edi + 4]
add ecx, dword [ebp - 0x184]
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 - 0x1b8], eax
mov eax, dword [ebp - 0x180]
mov ecx, dword [ebp - 0x178]
inc eax
add dword [ebp - 0x1bc], 0x18
add ecx, 0x20
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x178], ecx
cmp eax, dword [esi]
jl 0x10039c55
mov eax, dword [ebp - 0x164]
mov edx, dword [ebp - 0x1a8]
add esi, 0x5c
movss xmm0, dword [0x1013496c]
add edx, 0x7c
sub dword [ebp - 0x19c], 1
mov edi, dword [ebp - 0x1ac]
mov dword [ebp - 0x1a8], edx
jne 0x10039b81
mov ecx, dword [ebp - 0x1b8]
movd xmm0, ecx
xorps xmm1, xmm1
cvtdq2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x10039f23
sqrtsd xmm0, xmm0
jmp 0x10039f28
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
mov ecx, dword [ebp - 0x164]
cvtsd2ss xmm0, xmm0
mov edi, dword [ecx + 8]
mov dword [ecx + 0x28], 0
cvttss2si eax, xmm0
inc eax
test edi, edi
jg 0x10039f80
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [0x10134a7c]
jb 0x10039f5c
mov edi, 0x1000
jmp 0x10039f80
comiss xmm0, dword [0x10134a78]
jb 0x10039f6c
mov edi, 0x800
jmp 0x10039f80
comiss xmm0, dword [0x10134a6c]
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 - 0x1e4], 0
mov dword [ebp - 0x1e8], 0
mov dword [ebp - 0x1e0], eax
mov byte [ebp - 4], 8
test edi, edi
jle 0x10039fd8
cmp edi, 8
mov esi, edi
mov edx, 8
cmovl esi, edx
test esi, esi
jle 0x10039fd8
lea ecx, [esi + esi*2]
shl ecx, 2
call fcn.10009930
mov ecx, dword [ebp - 0x164]
mov dword [ebp - 0x1e0], eax
mov dword [ebp - 0x1e4], esi
mov esi, dword [ecx + 0xc]
mov ecx, 0x8000
push edi
mov dword [ebp - 0x1e8], edi
sub ecx, esi
mov edi, dword [ebp - 0x164]
push eax
push ecx
lea ecx, [ebp - 0x15c]
mov edx, dword [edi + 0x24]
sub edx, esi
call fcn.10038f30
add esp, 0xc
lea edx, [ebp - 0x15c]
mov ecx, edi
call fcn.100243d0
mov ecx, dword [ebp - 0x1a0]
test ecx, ecx
jle 0x1003a08c
mov esi, dword [ebp - 0x17c]
add esi, 0x40
mov dword [ebp - 0x1ac], ecx
nop word [eax + eax]
mov eax, dword [esi]
test eax, eax
je 0x1003a07a
mov edx, dword [esi - 0x10]
lea ecx, [ebp - 0x15c]
push eax
call fcn.100390c0
xor edi, edi
add esp, 4
cmp dword [esi], edi
jle 0x1003a07a
xor edx, edx
mov eax, dword [esi - 0x10]
cmp dword [edx + eax + 0x14], 0
je 0x1003a072
mov ecx, dword [edx + eax + 0x10]
add ecx, dword [edx + eax + 8]
mov eax, dword [ebp - 0x164]
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 0x1003a050
add esi, 0x5c
sub dword [ebp - 0x1ac], 1
jne 0x1003a030
mov edi, dword [ebp - 0x164]
test byte [edi], 1
mov eax, dword [edi + 0x28]
jne 0x1003a0b9
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 [0x1013496c]
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 0x1003a183
lea edi, [esi*4]
push edi
call dword [ebp - 0x1b4]
mov ecx, dword [0x10265810]
add esp, 4
mov esi, eax
test ecx, ecx
je 0x1003a171
movsx eax, word [ecx + 0x5f34]
mov edx, dword [ecx + 0x3f38]
add eax, 0xbe7
mov dword [ebp - 0x188], edx
cmp dword [ecx + eax*8], edx
lea eax, [ecx + eax*8]
je 0x1003a167
movsx eax, word [ecx + 0x5f34]
inc eax
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov edx, dword [ebp - 0x188]
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
lea eax, [ecx + eax*8]
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 4]
inc dword [ecx + 0x5f2c]
mov eax, dword [ebp - 0x164]
push edi
push 0
push esi
mov dword [eax + 0x20], esi
jmp 0x1003a210
push esi
call dword [ebp - 0x1b4]
mov ecx, dword [0x10265810]
add esp, 4
mov edi, eax
test ecx, ecx
je 0x1003a203
movsx eax, word [ecx + 0x5f34]
mov edx, dword [ecx + 0x3f38]
add eax, 0xbe7
mov dword [ebp - 0x188], edx
cmp dword [ecx + eax*8], edx
lea eax, [ecx + eax*8]
je 0x1003a1e8
movsx eax, word [ecx + 0x5f34]
inc eax
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov edx, dword [ebp - 0x188]
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
lea eax, [ecx + eax*8]
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
cmp esi, 0xffffffff
je 0x1003a1f9
inc word [eax + 4]
inc dword [ecx + 0x5f2c]
jmp 0x1003a203
inc word [eax + 6]
inc dword [ecx + 0x5f30]
mov eax, dword [ebp - 0x164]
push esi
push 0
push edi
mov dword [eax + 0x1c], edi
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x1a0]
xor cl, cl
add esp, 0xc
mov byte [ebp - 0x169], cl
test edx, edx
jle 0x1003a6d2
mov eax, dword [ebp - 0x17c]
xor ecx, ecx
add eax, 4
mov dword [ebp - 0x168], ecx
mov dword [ebp - 0x1bc], eax
cmp dword [eax + 0x3c], 0
je 0x1003a6ab
mov edi, dword [ebp - 0x164]
movss xmm0, dword [eax]
movss dword [ebp - 0x188], xmm0
movss xmm0, dword [eax + 4]
mov edx, dword [edi + 0x5c]
add edx, ecx
movss dword [ebp - 0x18c], xmm0
mov dword [ebp - 0x1ac], edx
cmp byte [edx + 0x3c], 0
mov ecx, dword [edx + 0x78]
mov dword [ebp - 0x17c], ecx
lea esi, [ecx + 0x50]
jne 0x1003a312
mov dword [ecx + 0x10], 0
mov dword [ecx + 0xc], 0
add ecx, 0x20
call fcn.1001d420
mov ecx, dword [ebp - 0x17c]
call fcn.1001d420
mov ecx, dword [ebp - 0x17c]
lea ecx, [ecx + 0x14]
call fcn.1001d420
mov ecx, dword [ebp - 0x17c]
mov edx, dword [ebp - 0x1ac]
movss xmm0, dword [ebp - 0x188]
mov dword [esi], 0
mov dword [ecx + 0x30], 0
mov dword [ecx + 0x54], 0
mov dword [ecx + 0x2c], 0
mov byte [ecx + 0x48], 1
mov dword [ecx + 0x58], 0
mov eax, dword [edx + 0x10]
movss dword [esi], xmm0
movss xmm0, dword [ebp - 0x18c]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x30], edi
movss dword [ecx + 0x54], xmm0
movss xmm0, dword [esi]
addss xmm0, dword [0x10134934]
movss xmm3, dword [edx + 0x28]
mov esi, dword [edi + 0xc]
movss dword [ebp - 0x1b8], xmm3
mov dword [ebp - 0x178], esi
cvttss2si eax, xmm0
mov dword [ebp - 0x18c], 0
movd xmm2, eax
mov eax, dword [ebp - 0x1bc]
cvtdq2ps xmm2, xmm2
cmp dword [eax + 0x3c], 0
addss xmm2, dword [edx + 0x2c]
movss dword [ebp - 0x1b4], xmm2
jle 0x1003a698
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x184], ecx
mov dword [ebp - 0x174], edx
mov edi, dword [eax + 0x54]
mov eax, dword [eax + 0x2c]
add edi, edx
add eax, ecx
cmp dword [eax + 4], 0
jne 0x1003a390
cmp dword [eax + 8], 0
je 0x1003a662
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 - 0x1bc]
movd xmm0, dword [edi + 0xc]
movd xmm1, dword [edi + 8]
add esi, dword [ebp - 0x178]
movss xmm6, dword [eax + 0x28]
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x19c], esi
mov esi, dword [ebp - 0x164]
mov dword [ebp - 0x1a8], 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 - 0x188], xmm0
mulss xmm7, xmm6
addss xmm5, xmm0
movss dword [ebp - 0x180], xmm1
movd xmm0, dword [esi + 0x24]
cvtdq2ps xmm0, xmm0
addss xmm7, xmm1
movd xmm4, edx
movd xmm1, dword [esi + 0x28]
mov esi, dword [ebp - 0x19c]
cvtdq2ps xmm4, xmm4
lea eax, [ecx + esi]
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 - 0x17c]
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 - 0x188]
movss dword [esp + 0x14], xmm2
movss dword [esp + 0x10], xmm3
movss xmm3, dword [ebp - 0x180]
movss dword [esp + 0xc], xmm4
movss dword [esp + 8], xmm5
movss dword [esp + 4], xmm7
movss dword [esp], xmm0
push eax
push dword [ebp - 0x1ac]
call fcn.10025d50
cmp byte [edi + 0x14], 0
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x28]
lea eax, [eax + eax*4]
je 0x1003a4cf
or dword [ecx + eax*8 - 0x28], 1
mov byte [ebp - 0x169], 1
mov eax, dword [ebp - 0x164]
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi]
mov dword [ebp - 0x170], ecx
mov esi, dword [eax + 0x24]
mov eax, esi
mov ecx, dword [ebp - 0x164]
imul eax, dword [ebp - 0x19c]
mov dword [ebp - 0x188], esi
mov dword [ebp - 0x19c], 0
cmp dword [ecx + 0x1c], 0
mov ecx, dword [ebp - 0x170]
je 0x1003a5a1
mov esi, dword [ebp - 0x164]
add eax, dword [ebp - 0x1a8]
add eax, dword [esi + 0x1c]
cmp dword [edi + 4], 0
mov dword [ebp - 0x170], eax
jle 0x1003a64c
lea esi, [edx*4]
mov dword [ebp - 0x180], esi
lea esi, [ecx + 3]
mov dword [ebp - 0x1a8], esi
xor ecx, ecx
test edx, edx
jle 0x1003a572
nop dword [eax]
mov edx, dword [ebp - 0x170]
lea esi, [esi + 4]
mov al, byte [esi - 4]
mov byte [edx + ecx], al
inc ecx
mov edx, dword [edi]
cmp ecx, edx
jl 0x1003a550
mov eax, dword [ebp - 0x170]
mov esi, dword [ebp - 0x1a8]
mov ecx, dword [ebp - 0x19c]
add eax, dword [ebp - 0x188]
inc ecx
add esi, dword [ebp - 0x180]
mov dword [ebp - 0x19c], ecx
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x1a8], esi
cmp ecx, dword [edi + 4]
jl 0x1003a547
jmp 0x1003a64c
mov ecx, dword [ebp - 0x1a8]
add ecx, eax
cmp dword [edi + 4], 0
mov eax, dword [ebp - 0x164]
mov eax, dword [eax + 0x20]
lea eax, [eax + ecx*4]
mov dword [ebp - 0x180], eax
jle 0x1003a64c
lea ecx, [esi*4]
mov dword [ebp - 0x1a8], ecx
lea ecx, [edx*4]
mov dword [ebp - 0x1c4], ecx
mov ecx, dword [ebp - 0x170]
xor esi, esi
test edx, edx
jle 0x1003a622
mov ecx, eax
mov eax, dword [ebp - 0x170]
sub eax, dword [ebp - 0x180]
mov dword [ebp - 0x188], 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 - 0x188]
cmp esi, edx
jl 0x1003a600
mov eax, dword [ebp - 0x180]
mov ecx, dword [ebp - 0x170]
mov esi, dword [ebp - 0x19c]
add eax, dword [ebp - 0x1a8]
inc esi
add ecx, dword [ebp - 0x1c4]
mov dword [ebp - 0x19c], esi
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x170], ecx
cmp esi, dword [edi + 4]
jl 0x1003a5e5
mov esi, dword [ebp - 0x178]
movss xmm3, dword [ebp - 0x1b8]
movss xmm2, dword [ebp - 0x1b4]
mov ecx, dword [ebp - 0x18c]
mov eax, dword [ebp - 0x1bc]
inc ecx
add dword [ebp - 0x174], 0x20
add dword [ebp - 0x184], 0x18
mov edx, dword [ebp - 0x174]
cmp ecx, dword [eax + 0x3c]
mov dword [ebp - 0x18c], ecx
mov ecx, dword [ebp - 0x184]
jl 0x1003a376
mov ecx, dword [ebp - 0x168]
mov edx, dword [ebp - 0x1a0]
mov dword [eax + 0x2c], 0
add eax, 0x5c
add ecx, 0x7c
sub edx, 1
mov dword [ebp - 0x1bc], eax
mov dword [ebp - 0x168], ecx
mov dword [ebp - 0x1a0], edx
jne 0x1003a245
mov cl, byte [ebp - 0x169]
mov eax, dword [ebp - 0x164]
xor esi, esi
mov byte [eax + 0x19], cl
cmp dword [ebp - 0x1c0], esi
jle 0x1003a784
nop dword [eax]
mov eax, dword [ebp - 0x1a4]
mov edi, dword [eax + esi*4]
test edi, edi
je 0x1003a764
mov ecx, dword [0x10265810]
test ecx, ecx
je 0x1003a764
movsx eax, word [ecx + 0x5f34]
mov edx, dword [ecx + 0x3f38]
add eax, 0xbe7
mov dword [ebp - 0x1c4], edx
cmp dword [ecx + eax*8], edx
lea eax, [ecx + eax*8]
je 0x1003a75a
movsx eax, word [ecx + 0x5f34]
inc eax
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov edx, dword [ebp - 0x1c4]
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
lea eax, [ecx + eax*8]
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f30]
cmp dword [0x10265808], 0
je 0x1003a777
push edi
call dword [ebp - 0x1b0]
add esp, 4
inc esi
cmp esi, dword [ebp - 0x1c0]
jl 0x1003a6f0
lea ecx, [ebp - 0x1dc]
call fcn.1003ac60
mov ecx, dword [ebp - 0x164]
call fcn.100253e0
mov byte [ebp - 0x15d], 1
mov edi, dword [ebp - 0x1e0]
test edi, edi
je 0x1003a818
mov ecx, dword [0x10265810]
test ecx, ecx
je 0x1003a801
movsx edx, word [ecx + 0x5f34]
lea eax, [ecx + 0x5f38]
mov esi, dword [ecx + 0x3f38]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x1003a7f7
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
xor edx, edx
lea eax, [ecx + eax*8]
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f30]
cmp dword [0x10265808], 0
je 0x1003a818
push edi
mov edi, dword [ebp - 0x1b0]
call edi
add esp, 4
jmp 0x1003a81e
mov edi, dword [ebp - 0x1b0]
mov eax, dword [ebp - 0x1a4]
test eax, eax
je 0x1003a893
mov ecx, dword [0x10265810]
test ecx, ecx
je 0x1003a884
movsx edx, word [ecx + 0x5f34]
lea eax, [ecx + 0x5f38]
mov esi, dword [ecx + 0x3f38]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x1003a874
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
xor edx, edx
lea eax, [ecx + eax*8]
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f30]
mov eax, dword [ebp - 0x1a4]
cmp dword [0x10265808], 0
je 0x1003a893
push eax
call edi
add esp, 4
mov eax, dword [ebp - 0x190]
test eax, eax
je 0x1003a908
mov ecx, dword [0x10265810]
test ecx, ecx
je 0x1003a8f9
movsx edx, word [ecx + 0x5f34]
lea eax, [ecx + 0x5f38]
mov esi, dword [ecx + 0x3f38]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x1003a8e9
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
xor edx, edx
lea eax, [ecx + eax*8]
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f30]
mov eax, dword [ebp - 0x190]
cmp dword [0x10265808], 0
je 0x1003a908
push eax
call edi
add esp, 4
mov eax, dword [ebp - 0x1d4]
mov edi, dword [ebp - 0x194]
mov dword [ebp - 0x17c], eax
test edi, edi
je 0x1003a98b
mov ecx, dword [0x10265810]
test ecx, ecx
je 0x1003a974
movsx edx, word [ecx + 0x5f34]
lea eax, [ecx + 0x5f38]
mov esi, dword [ecx + 0x3f38]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x1003a96a
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
xor edx, edx
lea eax, [ecx + eax*8]
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f30]
cmp dword [0x10265808], 0
je 0x1003a98b
push edi
mov edi, dword [ebp - 0x1b0]
call edi
add esp, 4
jmp 0x1003a991
mov edi, dword [ebp - 0x1b0]
mov eax, dword [ebp - 0x17c]
test eax, eax
je 0x1003aa06
mov ecx, dword [0x10265810]
test ecx, ecx
je 0x1003a9f7
movsx edx, word [ecx + 0x5f34]
lea eax, [ecx + 0x5f38]
mov esi, dword [ecx + 0x3f38]
lea eax, [eax + edx*8]
cmp dword [eax], esi
je 0x1003a9e7
lea eax, [edx + 1]
cdq
idiv dword [ebp - 0x198]
movzx eax, dx
mov word [ecx + 0x5f34], ax
cwde
add eax, 0xbe7
xor edx, edx
lea eax, [ecx + eax*8]
mov dword [eax], esi
mov dword [eax + 4], edx
inc word [eax + 6]
inc dword [ecx + 0x5f30]
mov eax, dword [ebp - 0x17c]
cmp dword [0x10265808], 0
je 0x1003aa06
push eax
call edi
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.100df10f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret