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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x110
mov esi, esp
mov eax, dword [0x101db764]
mov ecx, dword [ebp + 8]
xor eax, ebp
mov dword [esi + 0x108], eax
xor eax, eax
mov edi, dword [ecx]
mov dword [esi + 0xbc], eax
mov dword [esi + 0xb8], eax
mov ecx, dword [ecx + 8]
xor eax, eax
dec eax
mov dword [esi + 8], eax
mov edx, dword [edi + 0x24]
test edx, edx
js 0x10150e64
mov ebx, dword [edi + 4]
mov dword [esi + 0x40], ecx
mov eax, ebx
lea eax, [ebx + 0x800]
mov dword [esi + 0x34], ebx
mov ebx, dword [ebp + 8]
imul eax, ecx
lea ecx, [ecx + ecx*2]
shl ecx, 5
lea eax, [ebx + eax*4]
mov ebx, edi
lea edi, [eax + ecx]
lea eax, [ecx + eax + 0x5c]
mov ecx, dword [ebp + 8]
mov dword [esi + 0x28], ebx
mov dword [esi + 0x54], eax
mov eax, dword [ebp + 0x18]
imul eax, dword [ecx + 0x10]
mov ecx, dword [ebx + 8]
lea edi, [edi + ecx*8 + 0x5c]
mov dword [esi + 0x5c], ecx
mov dword [esi + 0x70], edi
mov edi, eax
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [esi + 0x38], eax
mov eax, dword [ebx + 0x20]
mov dword [esi + 0xac], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x14]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
mov dword [esi + 0x14], eax
lea eax, [ecx + ecx]
mov dword [esi + 0x90], eax
mov eax, dword [esi + 0x70]
lea eax, [eax + ecx*8]
xor ecx, ecx
mov dword [esi + 0x8c], eax
mov eax, dword [ebx + 0x2c]
mov ebx, 0x10
mov dword [esi + 0x24], ebx
mov ebx, eax
shl ebx, cl
cmp ebx, edi
je 0x10150068
mov ebx, dword [esi + 0x24]
add ebx, 8
cmp ecx, edx
lea ecx, [ecx + 1]
jl 0x1015004b
jmp 0x10150e64
xor eax, eax
mov dword [esi + 0x18], ecx
inc eax
mov dword [esi + 0x60], eax
shl eax, cl
cmp dword [ebp + 0x10], 0x4fb
mov dword [esi + 0x88], eax
ja 0x10150e64
cmp dword [ebp + 0x14], 0
mov eax, dword [ebp + 8]
je 0x10150e64
lea ecx, [eax + 0x205c]
mov eax, dword [esi + 0x34]
mov edx, dword [esi + 0x40]
mov dword [esi + 0x4c], edi
lea edi, [edi*4]
xor ebx, ebx
neg edi
lea eax, [eax*4 + 0x2000]
mov dword [esi + 8], eax
lea eax, [ecx - 0x2000]
mov dword [esi + ebx*4 + 0x100], eax
lea eax, [ecx + edi]
add ecx, dword [esi + 8]
mov dword [esi + ebx*4 + 0xf8], eax
inc ebx
cmp ebx, edx
jl 0x101500b7
mov eax, dword [esi + 0x28]
mov edx, dword [ebp + 0xc]
mov ecx, dword [eax + 0xc]
mov eax, dword [esi + 0x14]
cmp eax, ecx
cmovle ecx, eax
mov eax, dword [ebp + 0x10]
test edx, edx
je 0x10150186
cmp eax, 1
jle 0x10150186
mov edi, dword [ebp + 8]
xor eax, eax
mov dword [esi + 0xa8], ecx
xor ecx, ecx
cmp dword [edi + 0x34], eax
setne cl
cmp dword [ebp + 0x1c], 0
mov dword [edi + 0x38], ecx
jne 0x1015012d
lea eax, [esi + 0xc0]
push dword [ebp + 0x10]
push edx
mov dword [esi + 0x10], eax
push eax
call fcn.10151e68
add esp, 0xc
cmp dword [esi + 0x38], 1
mov edx, dword [esi + 0x5c]
mov eax, dword [esi + 0x34]
jne 0x10150161
test edx, edx
jle 0x10150161
lea eax, [eax*4 + 0x2060]
mov ecx, edx
imul eax, dword [esi + 0x40]
lea eax, [edi + eax + 0x5c]
movss xmm0, dword [eax]
maxss xmm0, dword [eax + edx*4]
movss dword [eax], xmm0
add eax, 4
dec ecx
jne 0x1015014e
mov eax, dword [ebp + 0x10]
lea eax, [eax*8]
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
test eax, eax
je 0x101501cf
bsr edx, eax
xor edx, 0xffffffe0
add edx, 0x21
jmp 0x101501cf
mov edi, dword [ebp + 8]
mov ebx, dword [esi + 0x4c]
mov ecx, edi
mov edx, ebx
push dword [esi + 0x18]
call fcn.10150e92
add esp, 4
lea eax, [edi + 0x54]
mov edi, dword [esi + 0x28]
mov edx, dword [ebp + 0x14]
lea ecx, [esi + 0xf8]
add edi, 0x10
push dword [ebp + 0x20]
push eax
push edi
mov edi, dword [ebp + 8]
push dword [edi + 0x10]
push dword [esi + 0x40]
push ebx
call fcn.10151727
add esp, 0x18
mov eax, ebx
cdq
idiv dword [edi + 0x10]
jmp 0x10150e61
sub ecx, edx
mov edi, dword [esi + 0x28]
cmp ecx, dword [esi + 0x3c]
jge 0x1015020a
mov eax, dword [esi + 0x10]
cmp ecx, 1
mov dword [esi + 0x68], 0
mov dword [esi + 0x60], 0
jne 0x1015022b
push 0xf
push eax
mov ebx, eax
call fcn.10151fc1
add esp, 8
test eax, eax
je 0x10150e7c
mov dword [esi + 0x60], eax
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x10150219
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x21
jmp 0x10150219
mov edx, dword [esi + 0x3c]
mov ecx, dword [esi + 0x10]
add eax, edx
mov dword [ecx + 0x14], eax
mov al, 1
mov ecx, edx
mov dword [esi + 0x68], eax
cmp dword [esi + 0x1c], 0
xorps xmm0, xmm0
mov dword [esi + 0x44], 0
jne 0x101502ae
lea eax, [ecx + 0x10]
mov ebx, dword [esi + 0x10]
mov edx, 0
mov dword [esi + 0x58], 0
cmp eax, dword [esi + 0x3c]
jg 0x10150323
push 1
push ebx
call fcn.10151fc1
add esp, 8
test eax, eax
je 0x101502b9
push 6
push ebx
call fcn.10152046
add esp, 8
mov ecx, eax
mov edx, 0x10
add eax, 4
shl edx, cl
mov dword [esi + 0xc], edx
push eax
push ebx
call fcn.1015210c
add esp, 8
mov dword [esi + 8], eax
push 3
push ebx
call fcn.1015210c
add esp, 8
mov ecx, dword [ebx + 0x1c]
mov edi, eax
mov eax, dword [ebx + 0x14]
test ecx, ecx
je 0x101502c9
bsr ecx, ecx
xor ecx, 0xffffffe0
add ecx, 0x21
jmp 0x101502c9
mov dword [esi + 0x58], 0
xor edx, edx
jmp 0x10150323
xorps xmm0, xmm0
mov dword [esi + 0x58], 0
xor edx, edx
mov eax, ebx
jmp 0x1015030c
add eax, 2
mov ebx, dword [esi + 0xc]
xor edx, edx
sub eax, ecx
cmp eax, dword [esi + 0x3c]
jg 0x101502ec
push 2
push 0x101c1fc8
push dword [esi + 0x10]
call fcn.10151ff8
add esp, 0xc
mov edx, eax
mov eax, dword [esi + 8]
inc edi
xorps xmm0, xmm0
cvtsi2ss xmm0, edi
mov edi, dword [esi + 0x28]
mulss xmm0, dword [0x101c1f1c]
lea eax, [eax + ebx - 1]
mov dword [esi + 0x58], eax
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
test eax, eax
je 0x10150321
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x21
jmp 0x10150321
sub ecx, eax
add ecx, 3
cmp dword [esi + 0x18], 0
movss dword [esi + 0x9c], xmm0
mov dword [esi + 0x98], edx
je 0x1015036a
cmp ecx, dword [esi + 0x3c]
jg 0x1015036a
push 3
mov ebx, dword [esi + 0x10]
push ebx
call fcn.10151fc1
add esp, 8
mov dword [esi + 0x44], eax
mov eax, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x14]
test eax, eax
je 0x10150365
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x21
jmp 0x10150365
sub ecx, eax
add ecx, 3
mov eax, dword [esi + 0x44]
mov edx, dword [esi + 0x88]
test eax, eax
cmove edx, eax
xor eax, eax
cmp ecx, dword [esi + 0x3c]
mov dword [esi + 0xa4], edx
jg 0x10150392
push 3
push dword [esi + 0x10]
call fcn.10151fc1
add esp, 8
push dword [esi + 0x18]
push dword [esi + 0x38]
mov ebx, dword [esi + 0x10]
push ebx
push eax
push dword [esi + 0x54]
push dword [esi + 0x14]
push dword [esi + 0x1c]
push edi
call fcn.10153674
add esp, 0x20
mov eax, dword [esi + 0x5c]
lea eax, [eax*4]
mov dword [esi + 0x7c], eax
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0x6c], eax
mov esp, eax
mov eax, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x14]
mov edi, dword [ebx + 4]
mov ebx, ecx
test eax, eax
je 0x101503e5
bsr eax, eax
xor eax, 0xffffffe0
add eax, 0x21
jmp 0x101503e5
shl edi, 3
xor edx, edx
cmp dword [esi + 0x44], 0
mov ecx, dword [esi + 0x18]
mov dword [esi + 0x2c], 0
sete dl
sub ebx, eax
test ecx, ecx
lea eax, [edx + edx + 2]
je 0x10150418
mov ecx, eax
mov edx, ebx
or ecx, 1
add ecx, ebx
cmp ecx, edi
setbe cl
mov dword [esi + 0x50], ecx
jmp 0x10150421
mov edx, ebx
mov dword [esi + 0x50], 0
mov ecx, dword [esi + 0x14]
cmp dword [esi + 0x1c], ecx
jge 0x101504b6
movzx ecx, byte [esi + 0x50]
mov dword [esi + 0xc], edx
mov edx, dword [esi + 0x6c]
mov dword [esi + 0x2c], 0
mov dword [esi + 8], 0
sub edi, ecx
cmp dword [esi + 0x44], 1
mov ecx, 5
mov dword [esi + 0x20], edi
mov edi, dword [esi + 0x14]
adc ecx, 0xffffffff
mov dword [esi + 0x30], ecx
mov ecx, dword [esi + 0x1c]
sub edi, ecx
lea ebx, [edx + ecx*4]
mov ecx, dword [esi + 0xc]
mov edx, ecx
lea ecx, [eax + ecx]
cmp ecx, dword [esi + 0x20]
jbe 0x10150478
mov eax, dword [esi + 8]
mov ecx, edx
jmp 0x101504ab
push eax
push dword [esi + 0x10]
call fcn.10151fc1
add esp, 8
mov edx, dword [esi + 0x10]
xor eax, dword [esi + 8]
mov ecx, dword [edx + 0x14]
mov dword [esi + 0xc], ecx
mov ecx, dword [edx + 0x1c]
test ecx, ecx
je 0x101504a0
bsr edx, ecx
xor edx, 0xffffffe0
add edx, 0x21
mov ecx, dword [esi + 0xc]
or dword [esi + 0x2c], eax
mov dword [esi + 8], eax
sub ecx, edx
mov dword [ebx], eax
mov eax, dword [esi + 0x30]
add ebx, 4
dec edi
jne 0x10150467
xor eax, eax
cmp byte [esi + 0x50], 0
je 0x101504ef
mov edx, dword [esi + 0x44]
mov edi, dword [esi + 0x2c]
mov ebx, dword [esi + 0x24]
lea ecx, [edi + edx*4 + 2]
lea edx, [edi + edx*4]
mov dl, byte [ebx + edx + 0x101c5a4c]
cmp dl, byte [ebx + ecx + 0x101c5a4c]
je 0x101504f2
push 1
push dword [esi + 0x10]
call fcn.10151fc1
add esp, 8
add eax, eax
jmp 0x101504f2
mov ebx, dword [esi + 0x24]
mov ecx, dword [esi + 0x14]
cmp dword [esi + 0x1c], ecx
jge 0x10150522
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x1c]
mov edi, dword [esi + 0x6c]
sub ecx, edx
lea edx, [edi + edx*4]
mov edi, dword [esi + 0x44]
lea eax, [eax + edi*4]
mov edi, dword [edx]
add edi, eax
movsx edi, byte [ebx + edi + 0x101c5a4c]
mov dword [edx], edi
add edx, 4
dec ecx
jne 0x1015050e
mov ecx, dword [esi + 0x10]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x1c]
test ecx, ecx
je 0x1015053a
bsr ecx, ecx
xor ecx, 0xffffffe0
add ecx, 0x21
jmp 0x1015053a
add edx, 4
mov eax, 2
sub edx, ecx
cmp edx, dword [esi + 0x3c]
jg 0x1015055b
push 5
push 0x101c1fcb
push dword [esi + 0x10]
call fcn.10151ff8
add esp, 0xc
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0x7c]
lea edi, [eax + 3]
and edi, 0xfffffffc
mov eax, edi
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
push dword [esi + 0x38]
push dword [esi + 0x18]
mov dword [esi + 0x2c], eax
push eax
push dword [esi + 0x28]
call fcn.1015361a
add esp, 0x10
mov eax, edi
mov dword [esi + 0x80], edi
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0x74], eax
mov esp, eax
mov edi, dword [ebp + 0x10]
shl edi, 6
push dword [esi + 0x10]
call fcn.10153994
add esp, 4
mov ebx, dword [esi + 0x1c]
mov dword [esi + 0x48], eax
mov dword [esi + 0x84], edi
cmp ebx, dword [esi + 0x14]
jge 0x10150729
mov dword [esi + 0x64], 6
mov dword [esi + 0xc], edi
mov ecx, dword [esi + 0xac]
mov edi, 0x30
movsx eax, word [ecx + ebx*2 + 2]
movsx ecx, word [ecx + ebx*2]
sub eax, ecx
mov ecx, dword [esi + 0x18]
imul eax, dword [esi + 0x38]
shl eax, cl
mov ecx, dword [esi + 0x48]
cmp eax, 0x2f
cmovg edi, eax
lea eax, [eax*8]
cmp eax, edi
mov edx, edi
mov dword [esi + 0x78], eax
cmovle edx, eax
mov eax, dword [esi + 0x64]
lea eax, [ecx + eax*8]
mov ecx, ebx
inc ebx
cmp eax, dword [esi + 0xc]
jge 0x101506dd
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x30], edx
cmp dword [eax + ecx*4], 0
jle 0x101506e9
mov dword [esi + 0x94], ebx
mov ebx, dword [esi + 0x78]
mov dword [esi + 0x50], ecx
not edi
mov ecx, dword [esi + 0x64]
mov dword [esi + 0xb0], edi
not ebx
cmp edi, ebx
mov dword [esi + 0x78], ebx
cmovge ebx, edi
mov dword [esi + 0x48], ebx
xor ebx, ebx
mov eax, dword [esi + 0xc]
mov dword [esi + 0x20], ebx
mov dword [esi + 8], eax
push ecx
mov ebx, dword [esi + 0x10]
push ebx
call fcn.10151fc1
add esp, 8
mov dword [esi + 0xc], eax
push ebx
call fcn.10153994
add esp, 4
cmp dword [esi + 0xc], 0
je 0x101506ed
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 8]
mov ebx, eax
add ebx, 8
lea edx, [ecx + edx + 1]
cmp ebx, edx
jge 0x101506b7
mov ecx, dword [esi + 0x30]
mov edx, dword [esi + 0x20]
mov edi, dword [esi + 0xb0]
lea ebx, [edx + ecx]
mov edx, dword [esi + 8]
sub edx, ecx
mov ecx, dword [esi + 0x2c]
mov dword [esi + 0xc], edx
mov edx, dword [esi + 0x50]
cmp ebx, dword [ecx + edx*4]
mov ecx, 1
jl 0x10150655
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x78]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x20]
mov ebx, dword [esi + 0x94]
cmp edi, eax
cmovge eax, edi
add edx, dword [esi + 0x30]
lea eax, [eax + ecx + 1]
mov ecx, dword [esi + 0x50]
mov dword [esi + 0xc], eax
jmp 0x10150702
mov eax, dword [esi + 0x74]
mov dword [eax + ecx*4], 0
jmp 0x1015071e
xor edx, edx
jmp 0x10150702
mov ecx, dword [esi + 8]
mov ebx, dword [esi + 0x94]
mov edx, dword [esi + 0x20]
mov dword [esi + 0x48], eax
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 0x50]
mov eax, dword [esi + 0x74]
test edx, edx
mov dword [eax + ecx*4], edx
jle 0x1015071e
mov eax, dword [esi + 0x64]
mov ecx, 2
dec eax
cmp eax, 1
cmovle eax, ecx
mov dword [esi + 0x64], eax
cmp ebx, dword [esi + 0x14]
jne 0x101505d4
jmp 0x1015072c
mov dword [esi + 0xc], edi
mov eax, dword [esi + 0x80]
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 8], eax
mov esp, eax
mov ebx, dword [esi + 0x48]
mov eax, 5
add ebx, 0x30
cmp ebx, dword [esi + 0xc]
jg 0x10150763
push 7
push str.wmW_
push dword [esi + 0x10]
call fcn.10151ff8
add esp, 0xc
mov dword [esi + 0x20], eax
push dword [esi + 0x10]
call fcn.10153994
add esp, 4
mov ebx, dword [esi + 0x84]
xor edi, edi
sub ebx, eax
dec ebx
cmp dword [esi + 0x18], 2
jb 0x101507a1
cmp dword [esi + 0x44], 0
mov eax, 0
mov ecx, 0
je 0x101507a5
xor eax, eax
cmp ebx, dword [esi + 0x24]
setge al
mov ecx, eax
shl ecx, 3
jmp 0x101507a5
xor eax, eax
xor ecx, ecx
mov edx, dword [esi + 0x80]
mov dword [esi + 0x30], eax
mov dword [esi + 0xc], ecx
sub ebx, ecx
mov eax, edx
call fcn.1015e8d0
mov ecx, esp
and ecx, 0xfffffff0
mov esp, ecx
mov eax, edx
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
lea edx, [esi + 0xb8]
push edi
push edi
push edi
push dword [esi + 0x10]
push dword [esi + 0x18]
push dword [esi + 0x38]
mov dword [esi + 0x48], eax
push eax
push dword [esi + 8]
mov dword [esi + 0x24], ecx
push ecx
lea eax, [esi + 0xb4]
push eax
push ebx
push edx
lea eax, [esi + 0xbc]
push eax
push dword [esi + 0x20]
push dword [esi + 0x2c]
push dword [esi + 0x74]
push dword [esi + 0x14]
push dword [esi + 0x1c]
mov ebx, dword [esi + 0x28]
push ebx
call fcn.101539c8
add esp, 0x4c
mov dword [esi + 0x2c], eax
sub esp, 0x1c
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x38]
mov dword [esp], ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esi + 0x54]
mov dword [esp + 0x10], edx
mov edx, dword [esi + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], ecx
mov ecx, dword [esi + 0x1c]
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
call fcn.10153806
add esp, 0x1c
mov eax, dword [esi + 0x34]
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
shr ebx, 1
add ebx, 0x800
sub ebx, dword [esi + 0x4c]
shl ebx, 2
mov eax, dword [esi + edi*4 + 0x100]
mov ecx, dword [esi + 0x4c]
lea ecx, [eax + ecx*4]
push ebx
push ecx
push eax
call fcn.10161960
add esp, 0xc
inc edi
cmp edi, dword [esi + 0x40]
jl 0x1015086a
mov ebx, dword [esi + 0x5c]
mov edi, dword [esi + 0x38]
imul ebx, edi
lea eax, [ebx + 3]
and eax, 0xfffffffc
call fcn.1015e8d0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0x20], eax
mov esp, eax
mov eax, edi
imul eax, dword [esi + 0x4c]
shl eax, 2
call fcn.1015e8d0
mov ecx, esp
and ecx, 0xfffffff0
mov esp, ecx
mov eax, dword [ebp + 8]
mov edx, 0
lea eax, [eax + 0x28]
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x84]
sub eax, dword [esi + 0xc]
cmp edi, 2
mov edi, dword [esi + 0x4c]
lea edi, [ecx + edi*4]
cmovne edi, edx
xor edx, edx
mov dword [esi + 0xc], edi
mov edi, dword [ebp + 8]
push dword [edi + 0x20]
mov edi, dword [ebp + 8]
push dword [edi + 0x24]
push edx
push dword [esi + 0x50]
push dword [esi + 0x2c]
push dword [esi + 0x18]
push dword [esi + 0x10]
push dword [esi + 0xb4]
push eax
push dword [esi + 0x6c]
push dword [esi + 0xbc]
push dword [esi + 0xb8]
push dword [esi + 0xa0]
push dword [esi + 0xa4]
push dword [esi + 0x24]
mov eax, 0
push eax
push dword [esi + 0x20]
push dword [esi + 0xc]
mov dword [esi + 0xc], ecx
push ecx
push dword [esi + 0x14]
push dword [esi + 0x1c]
mov edi, dword [esi + 0x28]
push edi
push eax
call fcn.10154905
add esp, 0x5c
cmp byte [esi + 0x30], 0
je 0x10150970
push 1
mov edi, dword [esi + 0x10]
push edi
call fcn.1015210c
add esp, 8
mov ecx, dword [edi + 0x1c]
mov dword [esi + 0x30], eax
mov eax, dword [edi + 0x14]
test ecx, ecx
je 0x10150988
bsr ecx, ecx
xor ecx, 0xffffffe0
add ecx, 0x21
jmp 0x10150988
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x1c]
test ecx, ecx
je 0x101509f1
bsr ecx, ecx
xor ecx, 0xffffffe0
add ecx, 0x21
jmp 0x101509f1
mov edx, dword [esi + 0x3c]
mov edi, dword [esi + 0x4c]
sub edx, eax
add edx, ecx
push dword [esi + 0x38]
push dword [esi + 0x10]
push edx
push dword [esi + 0x48]
push dword [esi + 8]
push dword [esi + 0x54]
push dword [esi + 0x14]
push dword [esi + 0x1c]
push dword [esi + 0x28]
call fcn.10153891
add esp, 0x24
cmp dword [esi + 0x30], 0
je 0x10150a17
mov eax, dword [ebp + 8]
push dword [eax + 0x24]
push dword [eax + 0x28]
push dword [esi + 0x24]
push dword [esi + 0x8c]
push dword [esi + 0x70]
push dword [esi + 0x54]
push dword [esi + 0x14]
push dword [esi + 0x1c]
push edi
push dword [esi + 0x38]
push dword [esi + 0x18]
push dword [esi + 0x20]
push dword [esi + 0xc]
push dword [esi + 0x28]
call fcn.10154618
add esp, 0x38
jmp 0x10150a17
mov edx, dword [esi + 0x3c]
sub edx, eax
add edx, ecx
push dword [esi + 0x38]
push dword [esi + 0x10]
push edx
push dword [esi + 0x48]
push dword [esi + 8]
push dword [esi + 0x54]
push dword [esi + 0x14]
push dword [esi + 0x1c]
push edi
call fcn.10153891
add esp, 0x24
mov ecx, dword [esi + 0x68]
mov edi, dword [esi + 0x40]
test ebx, ebx
setle al
xor cl, 1
or cl, al
jne 0x10150a49
mov eax, dword [esi + 0x34]
mov ecx, dword [ebp + 8]
lea eax, [eax*4 + 0x2060]
imul eax, edi
lea eax, [ecx + eax + 0x5c]
mov dword [eax], 0xc1e00000
add eax, 4
dec ebx
jne 0x10150a3d
mov ebx, dword [ebp + 8]
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0xc]
lea eax, [esi + 0xf8]
push dword [ebx + 0x24]
push dword [esi + 0x60]
push dword [ebx + 0x10]
push dword [esi + 0x18]
push dword [esi + 0x44]
push edi
push dword [esi + 0x38]
push dword [esi + 0xa8]
push dword [esi + 0x1c]
push dword [esi + 0x54]
push eax
call fcn.10151907
add esp, 0x2c
xor eax, eax
mov ecx, dword [ebx + 0x24]
mov dword [esi + 0x24], eax
mov eax, 0xe
mov edi, 0xf
mov dword [esi + 8], ecx
mov ecx, dword [ebx + 0x3c]
cmp ecx, eax
cmovle ecx, edi
mov dword [ebx + 0x3c], ecx
mov edx, dword [ebx + 0x40]
cmp edx, eax
mov eax, dword [esi + 0x28]
cmovle edx, edi
mov dword [ebx + 0x40], edx
movss xmm0, dword [ebx + 0x44]
movss xmm1, dword [ebx + 0x48]
mov edi, dword [eax + 0x2c]
mov eax, dword [eax + 0x3c]
mov dword [esi + 0x2c], eax
mov eax, dword [ebx + 0x4c]
mov dword [esi + 0xc], edi
mov dword [esi + 0x30], eax
mov eax, dword [ebx + 0x50]
mov ebx, dword [esi + 0x24]
mov edi, dword [esi + ebx*4 + 0xf8]
mov dword [esi + 0x20], eax
sub esp, 0x30
mov eax, dword [esi + 8]
mov dword [esp + 0xc], ecx
mov ecx, dword [esi + 0x34]
mov dword [esp + 8], edx
movss dword [esp + 0x18], xmm0
movss dword [esp + 0x14], xmm1
mov dword [esp + 4], edi
mov dword [esi + 8], edi
mov dword [esp], edi
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x30]
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x10], eax
call fcn.10153339
add esp, 0x30
cmp dword [esi + 0x18], 0
je 0x10150bbd
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x4c]
mov eax, dword [ecx + 0x2c]
mov ecx, dword [ecx + 0x3c]
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 8]
sub edx, eax
lea edi, [ecx + eax*4]
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x4c]
movss xmm0, dword [eax + 0x44]
mov ecx, dword [eax + 0x24]
mov eax, dword [eax + 0x3c]
mov dword [esi + 8], eax
sub esp, 0x30
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], edx
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0xc]
movss xmm1, dword [esi + 0x9c]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esi + 0x24]
mov dword [esp + 4], edi
mov dword [esp], edi
movss dword [esp + 0x14], xmm0
mov dword [esp + 8], edx
mov dword [esp + 0x28], ecx
mov edx, dword [esi + 0x98]
mov ecx, dword [esi + 0x58]
mov dword [esp + 0x24], eax
movss dword [esp + 0x18], xmm1
mov dword [esp + 0x20], edx
mov dword [esp + 0xc], ecx
call fcn.10153339
add esp, 0x30
inc ebx
cmp ebx, dword [esi + 0x40]
mov eax, ebx
mov ebx, dword [ebp + 8]
jl 0x10150a82
mov eax, dword [ebx + 0x3c]
mov ecx, dword [ebx + 0x44]
cmp dword [esi + 0x18], 0
movss xmm0, dword [esi + 0x9c]
mov dword [ebx + 0x40], eax
mov dword [ebx + 0x48], ecx
mov ecx, dword [esi + 0x58]
mov eax, dword [ebx + 0x4c]
mov dword [ebx + 0x50], eax
mov eax, dword [esi + 0x98]
mov dword [ebx + 0x3c], ecx
movss dword [ebx + 0x44], xmm0
mov dword [ebx + 0x4c], eax
je 0x10150c0b
mov dword [ebx + 0x40], ecx
movss dword [ebx + 0x48], xmm0
mov dword [ebx + 0x50], eax
cmp dword [esi + 0x38], 1
mov ebx, dword [esi + 0x5c]
jne 0x10150c27
mov ecx, dword [esi + 0x54]
lea eax, [ecx + ebx*4]
push dword [esi + 0x7c]
push ecx
push eax
call fcn.101613e0
add esp, 0xc
cmp dword [esi + 0x44], 0
je 0x10150c72
mov edi, dword [esi + 0x90]
test ebx, ebx
jle 0x10150d07
mov eax, dword [esi + 0x34]
mov edx, dword [ebp + 8]
lea ecx, [eax*4 + 0x2060]
imul ecx, dword [esi + 0x40]
lea eax, [ecx + ebx*8]
lea ecx, [edx + ecx + 0x5c]
lea eax, [edx + eax + 0x5c]
xor edx, edx
movss xmm0, dword [eax + edx*4]
minss xmm0, dword [ecx + edx*4]
movss dword [eax + edx*4], xmm0
inc edx
cmp edx, edi
jl 0x10150c59
jmp 0x10150d07
lea eax, [ebx*8]
mov dword [esi + 0x24], eax
push eax
mov edi, dword [esi + 0x70]
push edi
push dword [esi + 0x8c]
call fcn.101613e0
add esp, 0xc
push dword [esi + 0x24]
push dword [esi + 0x54]
push edi
call fcn.101613e0
add esp, 0xc
mov eax, dword [ebp + 8]
cmp dword [eax + 0x34], 0xa
jl 0x10150cb1
movss xmm0, dword [0x10187150]
jmp 0x10150cc4
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [esi + 0x88]
mulss xmm0, dword [0x101c1f20]
mov edi, dword [esi + 0x90]
test ebx, ebx
jle 0x10150d07
mov eax, dword [esi + 0x34]
mov edx, dword [ebp + 8]
lea ecx, [eax*4 + 0x2060]
lea eax, [ebx + ebx*2]
imul ecx, dword [esi + 0x40]
lea eax, [ecx + eax*8]
lea ecx, [edx + ecx + 0x5c]
lea eax, [edx + eax + 0x5c]
xor edx, edx
movss xmm1, dword [eax + edx*4]
addss xmm1, xmm0
minss xmm1, dword [ecx + edx*4]
movss dword [eax + edx*4], xmm1
inc edx
cmp edx, edi
jl 0x10150cef
mov eax, dword [esi + 0x34]
mov ecx, ebx
mov edi, ecx
mov ecx, dword [ebp + 8]
sub edi, dword [esi + 0x14]
lea edx, [eax*4 + 0x2060]
imul edx, dword [esi + 0x40]
mov dword [esi + 0x18], edi
lea eax, [edx + ebx*8]
shl ebx, 4
lea edi, [ecx + eax + 0x5c]
mov ecx, dword [esi + 0x14]
add ebx, edx
mov dword [esi + 0x24], edi
mov edi, dword [ebp + 8]
lea eax, [eax + ecx*4]
lea eax, [edi + eax + 0x5c]
mov dword [esi + 0x34], eax
lea eax, [edi + ebx + 0x5c]
mov edi, ecx
mov dword [esi + 8], eax
lea eax, [ebx + ecx*4]
mov ebx, dword [ebp + 8]
lea ecx, [ebx + eax + 0x5c]
mov eax, ebx
lea ebx, [ebx + edx + 0x5c]
lea edx, [edx + edi*4]
mov dword [esi + 0x30], ebx
mov ebx, dword [esi + 0x34]
lea edi, [eax + edx + 0x5c]
xor edx, edx
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0x34], ebx
mov ebx, dword [esi + 0x30]
mov dword [esi + 0x20], edi
mov edi, 0xc1e00000
mov dword [esi + 0x2c], edx
test ecx, ecx
jle 0x10150d9e
xor edx, edx
mov eax, dword [esi + 8]
mov dword [ebx + edx*4], 0
mov dword [eax + edx*4], edi
mov eax, dword [esi + 0x24]
mov dword [eax + edx*4], edi
inc edx
cmp ecx, edx
jne 0x10150d86
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
mov ebx, dword [esi + 0x34]
cmp ecx, dword [esi + 0x5c]
jge 0x10150dc6
xor edx, edx
mov ecx, dword [esi + 0x20]
mov dword [ecx + edx*4], 0
mov ecx, dword [esi + 0xc]
mov dword [ecx + edx*4], edi
mov dword [ebx + edx*4], edi
inc edx
cmp eax, edx
jne 0x10150dae
mov ecx, dword [esi + 0x7c]
mov edx, dword [esi + 0x2c]
mov eax, dword [esi + 0xc]
mov edi, dword [esi + 0x20]
add dword [esi + 0x24], ecx
add dword [esi + 8], ecx
add dword [esi + 0x30], ecx
inc edx
add eax, ecx
add ebx, ecx
add edi, ecx
cmp edx, 2
mov ecx, eax
jne 0x10150d69
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
mov ebx, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
lea ecx, [esi + 0xf8]
mov eax, dword [eax + 0x1c]
add edi, 0x10
mov dword [ebx + 0x28], eax
lea eax, [ebx + 0x54]
push dword [ebp + 0x20]
push eax
push edi
push dword [ebx + 0x10]
push dword [esi + 0x40]
mov edi, dword [esi + 0x4c]
push edi
call fcn.10151727
add esp, 0x18
mov ecx, dword [esi + 0x10]
mov dword [ebx + 0x34], 0
mov eax, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x1c]
test ecx, ecx
je 0x10150e3d
bsr ecx, ecx
xor ecx, 0xffffffe0
add ecx, 0x21
jmp 0x10150e3d
sub eax, ecx
mov dword [esi + 8], 0xfffffffd
cmp eax, dword [esi + 0x3c]
jg 0x10150e64
mov eax, dword [esi + 0x10]
cmp dword [eax + 0x2c], 0
je 0x10150e5b
mov dword [ebx + 0x2c], 1
mov eax, edi
cdq
idiv dword [ebx + 0x10]
mov dword [esi + 8], eax
mov ecx, dword [esi + 0x108]
xor ecx, ebp
call fcn.1015e65c
mov eax, dword [esi + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
mov dword [esi + 0x68], 0
mov dword [esi + 0x60], 0
inc ecx
jmp 0x1015022b