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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x214
push ebx
push esi
xor esi, esi
push edi
lea ecx, [esp + 0xb8]
mov dword [esp + 0x84], 3
mov dword [esp + 0x18], esi
call fcn.1000b590
push esi
push esi
mov eax, 0xc7
push esi
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], eax
mov eax, dword [ebp + 0xc]
push esi
push eax
lea ecx, [esp + 0xcc]
mov byte [esp + 0x100], 0
mov byte [esp + 0xec], 1
call fcn.1000a8e0
push 0xc8
lea ecx, [esp + 0x78]
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], 0xa
call fcn.10002a90
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x7c]
add eax, 0xffffffff
cmp eax, esi
jl 0x10002bf9
lea ebx, [ebx]
sub eax, 1
mov dword [ebx + eax*4 + 4], esi
jns 0x10002bf0
mov eax, dword [esp + 0xfc]
cmp eax, 1
mov dword [esp + 0x20], eax
jle 0x10002c32
mov ecx, 0x50
lea esi, [eax - 1]
mov edx, dword [esp + 0x104]
mov eax, dword [ecx + edx + 0x10]
mov edx, dword [ecx + edx + 0x14]
cmp eax, edx
jg 0x10002c26
mov eax, edx
add dword [ebx + eax*4], 1
add ecx, 0x50
sub esi, 1
jne 0x10002c11
mov edx, 8
lea eax, [ebx + 0x24]
lea ebx, [ebx]
mov ecx, dword [eax - 4]
cmp dword [eax - 8], ecx
jl 0x10002c8f
mov edi, dword [eax]
cmp ecx, edi
jl 0x10002c78
mov esi, dword [eax + 4]
cmp edi, esi
jl 0x10002c7d
mov ecx, dword [eax + 8]
cmp esi, ecx
jl 0x10002c82
mov esi, dword [eax + 0xc]
cmp ecx, esi
jl 0x10002c87
cmp esi, dword [eax + 0x10]
jl 0x10002c8c
add edx, 6
add eax, 0x18
cmp edx, 0xc8
jl 0x10002c40
jmp 0x10002c8f
add edx, 1
jmp 0x10002c8f
add edx, 2
jmp 0x10002c8f
add edx, 3
jmp 0x10002c8f
add edx, 4
jmp 0x10002c8f
add edx, 5
sub edx, 1
xor esi, esi
xor ecx, ecx
xor eax, eax
cmp edx, esi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x44], ecx
jle 0x10002cb2
add ecx, dword [ebx + eax*4]
add eax, 1
cmp eax, edx
jl 0x10002ca4
mov dword [esp + 0x44], ecx
cmp dword [esp + 0x78], 1
jl 0x10002cd3
cmp ebx, esi
je 0x10002cd3
mov eax, ebx
push eax
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], esi
call fcn.10018560
add esp, 4
push 0xc8
lea ecx, [esp + 0x5c]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], 0xa
call fcn.10002a90
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x60]
add eax, 0xffffffff
cmp eax, esi
jl 0x10002d0d
sub eax, 1
mov dword [ecx + eax*4 + 4], esi
jns 0x10002d04
mov eax, dword [esp + 0x20]
xor edi, edi
cmp eax, 4
jl 0x10002e5a
mov ebx, dword [esp + 0x60]
add eax, 0xfffffffc
shr eax, 2
xor edx, edx
add eax, 1
lea ecx, [eax*4]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x3c], eax
mov eax, dword [edx + ecx + 0x10]
mov edi, dword [edx + ecx + 0x14]
cmp eax, edi
mov esi, eax
jg 0x10002d51
mov esi, edi
cmp esi, dword [esp + 0x1c]
jl 0x10002d7c
imul eax, edi
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fild dword [edx + ecx + 0x28]
fadd st(0), st(0)
fcompp
fnstsw ax
test ah, 5
jp 0x10002d7c
add dword [ebx + esi*4], 1
mov ecx, dword [esp + 0x104]
mov eax, dword [edx + ecx + 0x60]
mov edi, dword [edx + ecx + 0x64]
cmp eax, edi
mov esi, eax
jg 0x10002d8c
mov esi, edi
cmp esi, dword [esp + 0x1c]
jl 0x10002db7
imul eax, edi
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fild dword [edx + ecx + 0x78]
fadd st(0), st(0)
fcompp
fnstsw ax
test ah, 5
jp 0x10002db7
add dword [ebx + esi*4], 1
mov ecx, dword [esp + 0x104]
mov eax, dword [edx + ecx + 0xb0]
mov edi, dword [edx + ecx + 0xb4]
cmp eax, edi
mov esi, eax
jg 0x10002dcd
mov esi, edi
cmp esi, dword [esp + 0x1c]
jl 0x10002dfb
imul eax, edi
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fild dword [edx + ecx + 0xc8]
fadd st(0), st(0)
fcompp
fnstsw ax
test ah, 5
jp 0x10002dfb
add dword [ebx + esi*4], 1
mov ecx, dword [esp + 0x104]
mov eax, dword [edx + ecx + 0x100]
mov edi, dword [edx + ecx + 0x104]
cmp eax, edi
mov esi, eax
jg 0x10002e11
mov esi, edi
cmp esi, dword [esp + 0x1c]
jl 0x10002e3f
imul eax, edi
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fild dword [edx + ecx + 0x118]
fadd st(0), st(0)
fcompp
fnstsw ax
test ah, 5
jp 0x10002e3f
add dword [ebx + esi*4], 1
mov ecx, dword [esp + 0x104]
add edx, 0x140
sub dword [esp + 0x3c], 1
jne 0x10002d41
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
jmp 0x10002e61
mov ecx, dword [esp + 0x104]
cmp edi, eax
jge 0x10002eb7
lea edx, [edi + edi*4]
shl edx, 4
sub eax, edi
mov ebx, eax
nop
mov eax, dword [edx + ecx + 0x10]
mov edi, dword [edx + ecx + 0x14]
cmp eax, edi
mov esi, eax
jg 0x10002e80
mov esi, edi
cmp esi, dword [esp + 0x1c]
jl 0x10002eaf
imul eax, edi
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fild dword [edx + ecx + 0x28]
fadd st(0), st(0)
fcompp
fnstsw ax
test ah, 5
jp 0x10002eaf
mov eax, dword [esp + 0x60]
add dword [eax + esi*4], 1
mov ecx, dword [esp + 0x104]
add edx, 0x50
sub ebx, 1
jne 0x10002e70
lea ecx, [esp + 0xb8]
call fcn.1000a860
mov eax, dword [esp + 0x60]
or ecx, 0xffffffff
xor esi, esi
mov edx, 2
add eax, 8
mov edi, dword [eax - 8]
add esi, edi
cmp edi, ecx
jle 0x10002ee6
mov ecx, edi
lea edi, [edx - 2]
mov dword [esp + 0x18], edi
mov edi, dword [eax - 4]
add esi, edi
cmp edi, ecx
jle 0x10002ef8
mov ecx, edi
lea edi, [edx - 1]
mov dword [esp + 0x18], edi
mov edi, dword [eax]
add esi, edi
cmp edi, ecx
jle 0x10002f06
mov ecx, edi
mov dword [esp + 0x18], edx
mov edi, dword [eax + 4]
add esi, edi
cmp edi, ecx
jle 0x10002f18
mov ecx, edi
lea edi, [edx + 1]
mov dword [esp + 0x18], edi
mov edi, dword [eax + 8]
add esi, edi
cmp edi, ecx
jle 0x10002f2a
mov ecx, edi
lea edi, [edx + 2]
mov dword [esp + 0x18], edi
add edx, 5
lea edi, [edx - 2]
add eax, 0x14
cmp edi, 0xc8
jl 0x10002ed4
mov ebx, dword [esp + 0x60]
lea esi, [esi + esi*4]
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
test ecx, ecx
jle 0x10002fa4
xor edx, edx
test ecx, ecx
mov eax, 7
jl 0x10002f73
cmp eax, 0xc8
jge 0x10002f73
add edx, dword [ebx + eax*4]
add eax, 1
cmp edx, ecx
jle 0x10002f62
mov ecx, eax
shl ecx, 4
sub ecx, eax
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx - 0x5a]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
lea esi, [edx + eax - 1]
cmp esi, 7
mov dword [esp + 0xc], esi
jge 0x10002fb1
mov esi, 7
jmp 0x10002fad
mov esi, 7
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], esi
mov edi, dword [esp + 0x5c]
cmp edi, 1
jl 0x10002fd3
test ebx, ebx
je 0x10002fd3
mov eax, ebx
xor edi, edi
push eax
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
call fcn.10018560
add esp, 4
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x168]
mov dword [esp + 0x4c], edx
call fcn.1000b590
lea ecx, [esp + 0x110]
call fcn.1000b590
lea eax, [esi + esi*4]
add eax, eax
lea ecx, [esp + 0x1c0]
mov dword [esp + 0x174], eax
mov dword [esp + 0x178], eax
mov byte [esp + 0x19c], 1
call fcn.1000fad0
mov ecx, dword [ebx]
imul ecx, dword [ebx + 4]
mov eax, dword [esp + 0x44]
mov edx, eax
shl edx, 4
sub edx, eax
xor eax, eax
add edx, edx
cmp edx, ecx
setl al
push eax
mov dword [esp + 0x28], eax
lea eax, [esp + 0x1c4]
push ebx
push eax
call fcn.10002790
add esp, 0xc
push 0
push 0
push 0
push 0
lea ecx, [esp + 0x1d0]
push ecx
lea ecx, [esp + 0x17c]
call fcn.1000a8e0
lea eax, [esi - 1]
lea edx, [esp + 0x168]
push edx
lea ecx, [esp + 0x114]
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], eax
mov byte [esp + 0x148], 1
call fcn.1000b210
mov eax, dword [esp + 0x154]
test eax, eax
mov dword [esp + 0x1c], eax
jne 0x10003112
mov esi, dword [ebp + 0x10]
push esi
mov ecx, ebx
call fcn.1000fe90
test al, al
jne 0x100030c1
push ebx
mov ecx, esi
call fcn.10013240
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x1c0]
mov dword [eax + 0x778], 0
call fcn.1000fb30
lea ecx, [esp + 0x110]
call fcn.10009f70
lea ecx, [esp + 0x168]
call fcn.10009f70
cmp edi, 1
jl 0x10003108
mov eax, dword [esp + 0x60]
test eax, eax
je 0x10003108
push eax
call fcn.10018560
add esp, 4
cmp dword [esp + 0x78], 1
jmp 0x10003c99
lea ebx, [esi*4 + 1]
cmp ebx, 7
jge 0x10003123
mov ebx, 7
mov eax, dword [esp + 0xc]
lea esi, [eax*4 + 1]
add ebx, esi
add ebx, dword [esp + 0x2c]
lea esi, [esi + eax*4]
add esi, dword [esp + 0x4c]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x34], esi
imul esi, ebx
add esi, esi
add esi, esi
push esi
call fcn.10018550
mov edx, eax
mov ecx, esi
xor eax, eax
shr ecx, 2
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x10]
lea eax, [eax*4 + 1]
lea esi, [ebx*4 + 4]
imul esi, eax
mov eax, dword [esp + 0x1b0]
add esi, edx
add esp, 4
xor edi, edi
test eax, eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x68], esi
mov dword [esp + 0x38], eax
jle 0x100031af
push edi
push ebx
push esi
lea ecx, [esp + 0x174]
call fcn.1000a160
add edi, 1
cmp edi, dword [esp + 0x38]
jl 0x10003197
lea ecx, [esp + 0x168]
call fcn.1000a860
mov ecx, dword [esp + 0x30]
mov eax, 1
cmp ebx, eax
jle 0x100031de
jmp 0x100031d0
mov edx, dword [ecx + eax*4 - 4]
add dword [ecx + eax*4], edx
add eax, 1
cmp eax, ebx
jl 0x100031d0
mov eax, dword [esp + 0x34]
cmp eax, 1
jle 0x10003234
add eax, 0xffffffff
mov dword [esp + 0x20], eax
mov edi, edi
lea eax, [ebx*4]
mov edx, ecx
add ecx, eax
mov eax, 1
cmp ebx, eax
jle 0x10003212
mov esi, dword [ecx + eax*4 - 4]
add dword [ecx + eax*4], esi
add eax, 1
cmp eax, ebx
jl 0x10003204
test ebx, ebx
jle 0x1000322d
mov eax, ecx
sub edx, ecx
mov esi, ebx
lea esp, [esp]
mov edi, dword [edx + eax]
add dword [eax], edi
add eax, 4
sub esi, 1
jne 0x10003220
sub dword [esp + 0x20], 1
jne 0x100031f0
mov eax, dword [esp + 0x1c]
xor esi, esi
add eax, 1
xor ecx, ecx
cmp eax, esi
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], 0xa
jl 0x10003265
jle 0x10003280
push eax
lea ecx, [esp + 0x8c]
call fcn.10002a90
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x88]
add eax, 0xffffffff
cmp eax, esi
jl 0x10003290
sub eax, 1
mov dword [ecx + eax*4 + 4], esi
jns 0x10003287
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
lea eax, [eax + ecx - 1]
cdq
idiv ecx
mov edx, dword [esp + 0x4c]
lea edi, [eax + eax*4]
lea eax, [edx + ecx - 1]
cdq
idiv ecx
mov dword [esp + 0x10], edi
mov esi, eax
imul esi, edi
lea edi, [esi*4]
push edi
call fcn.10018550
push edi
mov dword [esp + 0x58], eax
call fcn.10018550
add esp, 8
add esi, 0xffffffff
mov dword [esp + 0x44], eax
js 0x10003305
mov ecx, dword [esp + 0x50]
mov edx, eax
lea eax, [edx + esi*4]
sub ecx, edx
lea edx, [esi + 1]
jmp 0x100032f0
mov dword [ecx + eax], 0xffffffff
mov dword [eax], 0xffffffff
sub eax, 4
sub edx, 1
jne 0x100032f0
mov eax, 0x66666667
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*4]
test eax, eax
mov dword [esp + 0x38], eax
jl 0x10003339
mov ecx, dword [esp + 0xc]
mov edx, ecx
imul edx, ecx
lea ecx, [edx + 1]
mov edx, dword [esp + 0x44]
sub eax, 5
mov dword [edx + eax*4 + 0x14], ecx
jns 0x10003330
mov edi, dword [ebp + 0xc]
mov eax, dword [edi + 0x28]
test eax, eax
mov esi, 0x32
mov dword [esp + 0x40], esi
je 0x1000336b
lea ecx, [eax + eax*2 + 9]
lea ecx, [eax + ecx*8 + 3]
add ecx, ecx
mov eax, 0x1b4e81b5
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [esp + 0x40], esi
mov eax, dword [edi + 0x2c]
test eax, eax
je 0x10003393
imul eax, esi
add eax, 0x96
mov ecx, eax
mov eax, 0x1b4e81b5
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov esi, eax
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0xc]
imul eax, eax
add eax, 2
lea ecx, [eax + eax*4]
add ecx, ecx
add ecx, ecx
add ecx, ecx
sub ecx, eax
shl ecx, 4
add ecx, eax
add ecx, ecx
add ecx, ecx
mov eax, 0x68db8bad
imul ecx
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jl 0x100033ca
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x24]
imul eax, eax
mov dword [esp + 0x6c], eax
xor eax, eax
cmp dword [esp + 0x1c], eax
mov dword [esp + 0x28], eax
jle 0x10003537
mov dword [esp + 0x48], eax
lea esp, [esp]
mov ecx, dword [esp + 0x15c]
mov eax, dword [esp + 0x48]
mov edx, dword [ecx + eax + 8]
mov edi, dword [ecx + eax + 0x10]
mov dword [esp + 0x34], edx
mov edx, dword [ecx + eax + 0xc]
mov eax, dword [ecx + eax + 0x14]
cmp edi, eax
mov dword [esp + 0x54], edx
mov dword [esp + 0x20], eax
mov esi, edi
jg 0x1000341f
mov esi, eax
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x54]
lea eax, [esi*4 - 4]
sub ecx, eax
sub edx, eax
sub ecx, 1
lea eax, [ecx + esi*8 - 8]
sub edx, 1
add edi, eax
lea eax, [edx + esi*8 - 8]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x15c]
mov esi, dword [esp + 0x48]
mov esi, dword [eax + esi + 0x28]
cmp esi, dword [esp + 0x40]
jg 0x100034a0
cmp esi, dword [esp + 0x6c]
jl 0x1000351d
mov eax, dword [esp + 0x20]
imul edx, ebx
imul eax, ebx
lea ebx, [eax + ecx]
mov dword [esp + 0x20], edx
add edx, edi
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
mov edx, dword [eax + edx*4]
add edx, dword [eax + ebx*4]
mov ebx, dword [esp + 0x20]
add ebx, ecx
mov ecx, dword [esp + 0x70]
add ecx, edi
mov edi, dword [eax + ebx*4]
add edi, dword [eax + ecx*4]
mov ebx, dword [esp + 0x3c]
cmp edi, edx
jle 0x1000351d
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x18]
cdq
idiv edi
mov ecx, eax
mov eax, dword [esp + 0x34]
imul ecx, dword [esp + 0x10]
cdq
idiv edi
mov edi, dword [esp + 0x50]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x28]
add ecx, edx
mov edx, dword [esp + 0x44]
mov dword [edi + ecx*4 + 0x10], eax
mov dword [edx + ecx*4 + 0x10], esi
lea eax, [ecx*4 + 0xc]
cmp dword [eax + edx], esi
lea ecx, [eax + edx]
jge 0x1000351d
mov dword [esp + 0x34], eax
mov edx, ecx
jmp 0x100034f0
mov ebx, dword [eax + edi]
mov dword [eax + edi + 4], ebx
mov ebx, dword [esp + 0x28]
mov dword [eax + edi], ebx
mov eax, dword [ecx]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x34]
sub edx, 4
mov dword [ecx], esi
sub eax, 4
cmp dword [edx], esi
mov dword [esp + 0x34], eax
mov ecx, edx
jl 0x100034f0
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x28]
add dword [esp + 0x48], 0x50
add eax, 1
cmp eax, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
jl 0x100033f0
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x38]
push ecx
call fcn.10018560
mov edi, dword [esp + 0x20]
add esp, 4
test ebx, ebx
mov dword [esp + 0x48], edi
jl 0x100035ae
mov edx, dword [esp + 0x50]
lea esi, [edx + ebx*4 + 4]
add ebx, 5
mov eax, 0xcccccccd
mul ebx
mov ebx, dword [esp + 0x90]
shr edx, 2
mov dword [esp + 0x30], edx
mov edx, 1
lea esp, [esp]
mov dword [esi + 0xc], 0xffffffff
mov eax, dword [esi]
test eax, eax
jl 0x1000359f
mov ecx, esi
nop
add ecx, 4
mov dword [ebx + eax*4 + 4], edx
mov eax, dword [ecx]
sub edi, edx
test eax, eax
jge 0x10003590
sub esi, 0x14
sub dword [esp + 0x30], edx
jne 0x10003580
mov dword [esp + 0x48], edi
jmp 0x100035b5
mov ebx, dword [esp + 0x90]
mov eax, dword [esp + 0x50]
push eax
call fcn.10018560
mov ecx, dword [esp + 0x48]
push ecx
call fcn.10018560
add esp, 8
cmp dword [esp + 0x24], 0
je 0x10003c00
mov ecx, dword [esp + 0xc]
mov eax, ecx
shl eax, 9
add eax, 0x80
cdq
and edx, 0xff
add eax, edx
mov edi, eax
lea eax, [ecx + 1]
shl eax, 7
cdq
and edx, 0xff
add eax, edx
mov esi, eax
mov eax, dword [esp + 0x2c]
add eax, 0xffffffff
mov dword [esp + 0x10], eax
cdq
sar edi, 8
idiv edi
mov ecx, dword [esp + 0x4c]
add ecx, 0xffffffff
sar esi, 8
mov dword [esp + 0x34], edi
mov dword [esp + 0x54], esi
mov ebx, eax
mov eax, ecx
cdq
idiv esi
add ebx, 1
mov dword [esp + 0x68], ebx
add eax, 1
mov dword [esp + 0x24], eax
mov eax, ecx
cdq
idiv edi
mov ecx, eax
mov eax, dword [esp + 0x10]
cdq
idiv esi
add ecx, 1
mov dword [esp + 0x70], ecx
add ecx, 1
add eax, 1
imul ecx, eax
mov dword [esp + 0x6c], eax
lea eax, [ebx + 1]
imul eax, dword [esp + 0x24]
cmp eax, ecx
jg 0x10003669
mov eax, ecx
lea edx, [eax*4]
push edx
call fcn.10018550
imul esi, edi
mov dword [esp + 0x2c], eax
lea eax, [esi + esi*2]
add eax, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x30]
fild dword [esp + 0x14]
fimul dword [esp + 0x20]
mov dword [esp + 0x14], eax
add esp, 4
fild dword [esp + 0x10]
fdivp st(1)
fld st(0)
fsqrt
fmul qword [0x2f3f078]
faddp st(1)
call fcn.10001036
cmp eax, 3
jle 0x100036c1
mov dword [esp + 0x84], eax
mov dword [esp + 0x40], 0
lea esp, [esp]
cmp dword [esp + 0x40], 0
je 0x100036e5
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x4c], eax
jmp 0x100036f1
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp + 0x28]
lea ecx, [eax + 1]
imul ecx, esi
add ecx, ecx
add ecx, ecx
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x1c]
test edi, edi
lea eax, [ebx + esi*4]
mov dword [esp + 0x18], esi
mov dword [esp + 0x44], eax
jle 0x10003839
fild dword [esp + 0x34]
xor edx, edx
fdivr qword [0x2f3f070]
fild dword [esp + 0x54]
fdivr qword [0x2f3f070]
mov edi, edi
cmp dword [esp + 0x40], 0
fld st(1)
mov ecx, dword [esp + 0x15c]
lea eax, [edx + ecx + 0x40]
mov ecx, dword [eax]
mov dword [esp + 0x98], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0x9c], ecx
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], eax
je 0x100037cd
fmul qword [esp + 0xa0]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov ecx, dword [esp + 0x10]
fldcw word [esp + 0xc]
fld qword [esp + 0x98]
fnstcw word [esp + 0xc]
fmul st(1)
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov eax, dword [esp + 0x10]
fldcw word [esp + 0xc]
jmp 0x1000381d
fmul qword [esp + 0x98]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov ecx, dword [esp + 0x10]
fldcw word [esp + 0xc]
fld qword [esp + 0xa0]
fnstcw word [esp + 0xc]
fmul st(1)
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov eax, dword [esp + 0x10]
fldcw word [esp + 0xc]
imul ecx, esi
add ecx, eax
add dword [ebx + ecx*4], 1
lea eax, [ebx + ecx*4]
add edx, 0x50
sub edi, 1
jne 0x10003740
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x4c]
add eax, 0xfffffffd
test eax, eax
mov dword [esp + 0x50], eax
mov dword [esp + 0xc], eax
jl 0x1000393f
mov ecx, dword [esp + 0x18]
mov edx, eax
imul eax, ecx
mov dword [esp + 0x20], eax
mov eax, ecx
neg eax
mov dword [esp + 0x10], eax
mov eax, ecx
neg eax
add eax, eax
add eax, eax
mov dword [esp + 0x38], eax
lea eax, [edx + 2]
imul eax, ecx
add eax, eax
add eax, eax
mov dword [esp + 0x2c], eax
nop
mov edi, dword [esp + 0x18]
add edi, 0xfffffffe
test edi, edi
jl 0x1000391c
nop
mov eax, dword [esp + 0xc]
lea ecx, [eax + 2]
cmp ecx, eax
mov dword [esp + 0x3c], 0
jl 0x100038e9
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
lea ebx, [ecx + edx]
mov ecx, eax
lea eax, [ecx + 2]
sub eax, ecx
add eax, 1
mov dword [esp + 0x30], eax
lea esp, [esp]
lea esi, [edi + 1]
cmp esi, edi
jl 0x100038de
mov eax, dword [ebx + esi*4]
push eax
call fcn.10018409
add dword [esp + 0x40], eax
sub esi, 1
add esp, 4
cmp esi, edi
jge 0x100038c7
add ebx, dword [esp + 0x38]
sub dword [esp + 0x30], 1
jne 0x100038c0
mov ecx, dword [esp + 0x84]
cmp dword [esp + 0x3c], ecx
jle 0x10003913
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
add edx, edi
mov ecx, dword [eax + edx*4]
lea esi, [eax + edx*4]
push ecx
call fcn.10018409
add esp, 4
neg eax
mov dword [esi], eax
sub edi, 1
jns 0x10003890
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
add dword [esp + 0x20], edx
add dword [esp + 0x2c], ecx
sub eax, 1
test eax, eax
mov dword [esp + 0xc], eax
jge 0x10003880
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
add edx, 0xffffffff
imul edx, eax
lea esi, [ecx + edx*4]
lea ebx, [eax*4]
add ebx, esi
cmp esi, ecx
mov dword [esp + 0x2c], esi
jb 0x10003a18
add eax, 0xfffffffe
mov dword [esp + 0x10], eax
jmp 0x10003976
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
add ecx, ecx
add ecx, ecx
mov edx, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x10]
and ecx, 3
test edx, edx
rep movsb byte es:[edi], byte [esi]
jl 0x100039fa
lea esi, [ebx + edx*4 + 8]
lea ebx, [ebx]
mov eax, dword [esp + 0x2c]
cmp dword [eax + edx*4], 0
jge 0x100039f0
xor ecx, ecx
lea eax, [edx - 3]
test eax, eax
setl cl
sub ecx, 1
and ecx, eax
lea eax, [edx - 2]
cmp eax, ecx
jl 0x100039ce
mov dword [ebx + eax*4], 0
sub eax, 1
cmp eax, ecx
jge 0x100039c0
mov eax, dword [esp + 0x18]
add eax, 0xffffffff
lea ecx, [edx + 3]
cmp eax, ecx
jge 0x100039de
mov ecx, eax
lea eax, [edx + 2]
cmp eax, ecx
jg 0x100039f0
sub ecx, eax
add ecx, 1
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
sub edx, 1
sub esi, 4
test edx, edx
jge 0x100039a0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
add eax, eax
add eax, eax
sub ecx, eax
sub ebx, eax
cmp ecx, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
jae 0x10003972
mov eax, dword [esp + 0x50]
test eax, eax
mov esi, dword [esp + 0x18]
jl 0x10003a8e
mov edi, eax
mov ecx, esi
imul edi, esi
neg ecx
add eax, 1
mov dword [esp + 0x10], ecx
mov dword [esp + 0x38], eax
lea eax, [esi - 2]
test eax, eax
jl 0x10003a85
mov edx, dword [esp + 0x44]
lea ecx, [edi + eax]
add eax, 1
lea ecx, [edx + ecx*4]
mov dword [esp + 0x30], eax
cmp dword [ecx], 0
jge 0x10003a77
lea eax, [ecx + esi*8]
cmp eax, ecx
jb 0x10003a77
lea esp, [esp]
or edx, 0xffffffff
mov ebx, eax
mov dword [ebx], edx
mov dword [ebx + 4], edx
lea edx, [esi*4]
sub eax, edx
cmp eax, ecx
jae 0x10003a60
sub ecx, 4
sub dword [esp + 0x30], 1
jne 0x10003a50
mov ecx, dword [esp + 0x10]
add edi, ecx
sub dword [esp + 0x38], 1
jne 0x10003a38
xor edx, edx
cmp dword [esp + 0x1c], edx
jle 0x10003bd4
fild dword [esp + 0x34]
mov ebx, dword [esp + 0x90]
xor edi, edi
fdivr qword [0x2f3f070]
fild dword [esp + 0x54]
fdivr qword [0x2f3f070]
jmp 0x10003ac0
cmp dword [esp + 0x40], 0
fld st(1)
mov eax, dword [esp + 0x15c]
lea ecx, [eax + edi + 0x40]
mov eax, dword [ecx]
mov dword [esp + 0xa8], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0xac], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], ecx
je 0x10003b4d
fmul qword [esp + 0xb0]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov ecx, dword [esp + 0x10]
fldcw word [esp + 0xc]
fld qword [esp + 0xa8]
fnstcw word [esp + 0xc]
fmul st(1)
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov eax, dword [esp + 0x10]
fldcw word [esp + 0xc]
jmp 0x10003b9d
fmul qword [esp + 0xa8]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov ecx, dword [esp + 0x10]
fldcw word [esp + 0xc]
fld qword [esp + 0xb0]
fnstcw word [esp + 0xc]
fmul st(1)
movzx eax, word [esp + 0xc]
or ah, 0xc
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp qword [esp + 0x10]
mov eax, dword [esp + 0x10]
fldcw word [esp + 0xc]
imul ecx, esi
add ecx, eax
mov eax, dword [esp + 0x44]
cmp dword [eax + ecx*4], 0
jge 0x10003bc0
cmp dword [ebx + edx*4 + 4], 0
jne 0x10003bc0
mov eax, 1
sub dword [esp + 0x48], eax
mov dword [ebx + edx*4 + 4], eax
add edx, 1
add edi, 0x50
cmp edx, dword [esp + 0x1c]
jl 0x10003ac0
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x40]
add eax, 1
cmp eax, 2
mov dword [esp + 0x40], eax
jl 0x100036d0
mov ecx, dword [esp + 0x28]
push ecx
call fcn.10018560
mov edi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x94]
add esp, 4
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
push edx
call fcn.10013240
xor esi, esi
cmp dword [esp + 0x1c], esi
jle 0x10003c35
cmp dword [ebx + esi*4 + 4], 0
jne 0x10003c2c
mov eax, dword [ebp + 0x10]
push esi
push eax
lea ecx, [esp + 0x118]
call fcn.1000a020
add esi, 1
cmp esi, dword [esp + 0x1c]
jl 0x10003c14
cmp dword [esp + 0x8c], 1
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x778], edi
jl 0x10003c55
test ebx, ebx
je 0x10003c55
push ebx
call fcn.10018560
add esp, 4
lea ecx, [esp + 0x1c0]
call fcn.1000fb30
lea ecx, [esp + 0x110]
call fcn.10009f70
lea ecx, [esp + 0x168]
call fcn.10009f70
mov esi, 1
cmp dword [esp + 0x5c], esi
jl 0x10003c95
mov eax, dword [esp + 0x60]
test eax, eax
je 0x10003c95
push eax
call fcn.10018560
add esp, 4
cmp dword [esp + 0x78], esi
jl 0x10003cac
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x10003cac
push eax
call fcn.10018560
add esp, 4
lea ecx, [esp + 0xb8]
call fcn.10009f70
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret