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

Disassembly:
sub esp, 0x98
push ebx
mov ebx, dword [esp + 0xd8]
push ebp
mov ebp, dword [esp + 0xd8]
inc ebx
inc ebp
mov dword [esp + 0x84], 0xffffffff
and ebp, 0xfffffffe
mov dword [esp + 0x88], 0xffffffff
mov eax, ebp
mov dword [esp + 0x24], ebp
sar eax, 1
and ebx, 0xfffffffe
mov dword [esp + 0x3c], eax
mov eax, ebx
sar eax, 1
mov dword [esp + 0x20], eax
lea eax, [ebp*2]
add eax, ebp
mov dword [esp + 0x6c], ebx
add eax, eax
mov dword [esp + 0x78], eax
cdq
shld edx, eax, 1
push esi
add eax, eax
push edi
test edx, edx
jne 0x1002c349
push eax
call fcn.10058cb3
add esp, 4
mov dword [esp + 0x58], eax
mov edi, eax
jmp 0x1002c34f
xor edi, edi
mov dword [esp + 0x58], edi
mov eax, ebx
imul eax, ebp
cdq
mov esi, eax
shld edx, esi, 1
add esi, esi
test edx, edx
jne 0x1002c37a
push esi
call fcn.10058cb3
push esi
mov dword [esp + 0x18], eax
call fcn.10058cb3
add esp, 8
mov dword [esp + 0x30], eax
jmp 0x1002c388
xor eax, eax
mov dword [esp + 0x30], 0
mov dword [esp + 0x10], eax
lea ebx, [ebp*2]
mov eax, ebx
mov dword [esp + 0x70], ebx
cdq
shld edx, eax, 1
add eax, eax
test edx, edx
jne 0x1002c3af
push eax
call fcn.10058cb3
add esp, 4
mov dword [esp + 0x4c], eax
jmp 0x1002c3b7
mov dword [esp + 0x4c], 0
mov eax, dword [esp + 0x28]
imul eax, dword [esp + 0x44]
lea eax, [eax + eax*2]
cdq
mov esi, eax
shld edx, esi, 1
add esi, esi
test edx, edx
jne 0x1002c3e9
push esi
call fcn.10058cb3
push esi
mov dword [esp + 0x28], eax
call fcn.10058cb3
add esp, 8
mov dword [esp + 0x48], eax
jmp 0x1002c401
mov eax, dword [esp + 0x10]
mov dword [esp + 0x48], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x44]
lea eax, [eax + eax*2]
mov dword [esp + 0x88], eax
cdq
shld edx, eax, 1
add eax, eax
test edx, edx
jne 0x1002c42b
push eax
call fcn.10058cb3
add esp, 4
mov dword [esp + 0x78], eax
mov esi, eax
jmp 0x1002c431
xor esi, esi
mov dword [esp + 0x78], esi
movd xmm1, dword [esp + 0x74]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x48]
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
mov dword [esp + 0x18], eax
mov dword [esp + 0x60], edx
cvtdq2pd xmm1, xmm1
mulsd xmm0, qword [0x100668a0]
mulsd xmm0, xmm1
call fcn.10056e80
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], edx
test ecx, ecx
je 0x1002ccc9
mov edx, dword [esp + 0x20]
test edx, edx
je 0x1002ccc9
cmp dword [esp + 0x30], 0
je 0x1002ccc9
cmp dword [esp + 0x48], 0
je 0x1002ccc9
cmp dword [esp + 0x4c], 0
je 0x1002ccc9
test esi, esi
je 0x1002ccc9
test edi, edi
je 0x1002ccc9
mov esi, dword [esp + 0xe4]
test esi, esi
mov esi, dword [esp + 0xc0]
mov dword [esp + 0x3c], 0
jle 0x1002c86e
mov eax, dword [esp + 0x80]
add eax, edi
mov dword [esp + 0x14], eax
lea eax, [esi + 2]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x44]
lea eax, [eax + eax*2]
add eax, eax
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xbc]
add eax, eax
mov dword [esp + 0x68], eax
mov eax, ebp
neg eax
shl eax, 2
mov dword [esp + 0x64], eax
mov eax, edi
sub eax, dword [esp + 0x30]
mov dword [esp + 0x38], eax
mov eax, edx
sub eax, dword [esp + 0x48]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x84], eax
mov eax, ecx
mov ecx, dword [esp + 0xac]
sub eax, dword [esp + 0x30]
sub ecx, edx
sub dword [esp + 0xb4], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0xac], ecx
jmp 0x1002c567
lea ebx, [ebp*2]
mov eax, dword [esp + 0xb4]
add ecx, edx
push edi
push dword [esp + 0xe4]
add eax, edx
push esi
push dword [esp + 0xc4]
push eax
push edx
push ecx
call fcn.1002cd40
mov eax, dword [esp + 0x100]
add esp, 0x1c
dec eax
cmp dword [esp + 0x3c], eax
je 0x1002c5e6
push dword [esp + 0x14]
mov ecx, dword [esp + 0xb4]
push dword [esp + 0xe4]
mov edx, dword [esp + 0xc4]
mov eax, dword [esp + 0xbc]
add eax, ecx
push esi
push dword [esp + 0xc4]
add eax, edx
push eax
lea eax, [ecx + edx]
push eax
mov eax, dword [esp + 0xc4]
add eax, ecx
add eax, edx
push eax
call fcn.1002cd40
mov ebp, dword [esp + 0x48]
add esp, 0x1c
jmp 0x1002c5fa
push dword [esp + 0x80]
push edi
push dword [esp + 0x1c]
call fcn.10057b10
add esp, 0xc
mov eax, dword [esp + 0x54]
add eax, dword [esp + 0x18]
push ebp
push eax
push edi
call fcn.1002d4b0
mov eax, dword [esp + 0x24]
add eax, ebx
mov dword [esp + 0x40], eax
add eax, dword [esp + 0x60]
push ebp
push eax
push dword [esp + 0x28]
call fcn.1002d4b0
mov eax, 0xe
lea ecx, [esi + 2]
sub eax, esi
add esp, 0x18
cmp ecx, 0xe
mov edx, 2
cmovle eax, edx
add eax, esi
mov dword [esp + 0x7c], eax
test ebp, ebp
jle 0x1002c706
lea eax, [edi + ebp*4]
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x18]
lea esi, [ebx + edi]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x50], esi
nop
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x7c]
push edi
movzx eax, word [eax + ebp]
push eax
call fcn.1002dc10
movzx ecx, word [esi]
mov ebx, eax
push edi
push ecx
call fcn.1002dc10
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x1c]
push edi
movzx ecx, word [eax]
push edi
push ecx
call fcn.1002dc10
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1002dda0
mov esi, dword [esp + 0x58]
lea ebp, [ebp + 2]
add dword [esp + 0x24], 2
add esi, 2
add esp, 8
mov word [ebp - 2], ax
sub dword [esp + 0x24], 1
mov dword [esp + 0x50], esi
jne 0x1002c660
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0xc0]
mov ecx, dword [esp + 0x40]
mov eax, 0xe
sub eax, esi
cmp ecx, 0xe
mov ecx, 2
cmovle eax, ecx
lea ecx, [eax + esi]
xor eax, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], eax
test ebp, ebp
jle 0x1002c7ef
mov edi, dword [esp + 0x14]
mov esi, edi
sub esi, dword [esp + 0x18]
mov dword [esp + 0x28], esi
nop dword [eax + eax]
movzx eax, word [edi + eax*2]
push ecx
push eax
call fcn.1002dc10
push dword [esp + 0x2c]
mov ebx, eax
mov eax, dword [esp + 0x40]
movzx ecx, word [esi + eax]
push ecx
call fcn.1002dc10
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x24]
push eax
push eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + ebp*2]
movzx ecx, word [edi + ecx*2]
push ecx
call fcn.1002dc10
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1002dda0
mov ecx, dword [esp + 0x3c]
add esp, 8
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x28]
mov word [ecx], ax
add ecx, 2
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
cmp eax, ebp
jl 0x1002c740
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0xc0]
mov ebx, dword [esp + 0x60]
push esi
push dword [esp + 0x48]
push ebx
push dword [esp + 0x20]
push edi
call fcn.1002d580
push dword [esp + 0x70]
mov eax, dword [esp + 0x9c]
add eax, ebx
push ebx
push eax
call fcn.10057b10
mov edx, dword [esp + 0xd0]
lea eax, [ebp*4]
add dword [esp + 0x38], eax
add esp, 0x20
mov eax, dword [esp + 0x64]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
add ebx, dword [esp + 0x5c]
add eax, 2
add edx, dword [esp + 0x68]
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x60], ebx
mov dword [esp + 0xb0], edx
mov dword [esp + 0x3c], eax
cmp eax, dword [esp + 0xe4]
jl 0x1002c560
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x54], 0
jmp 0x1002c884
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x74]
xorps xmm0, xmm0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x60], edx
mov dword [esp + 0x34], edx
xor edx, edx
movlpd qword [esp + 0x68], xmm0
mov dword [esp + 0x14], ecx
mov dword [esp + 0x28], edx
test eax, eax
jle 0x1002cc11
mov ebx, dword [esp + 0x80]
lea eax, [esi + 2]
mov dword [esp + 0x7c], eax
add ebx, edi
mov eax, 0xe
mov dword [esp + 0x18], ebx
sub eax, esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x24], eax
lea eax, [ebp*4]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x44]
lea eax, [eax + eax*2]
add eax, eax
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x48]
sub eax, dword [esp + 0x20]
sub esi, dword [esp + 0x10]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x84], esi
mov dword [esp + 0x1c], eax
nop word [eax + eax]
push dword [esp + 0xc0]
mov esi, dword [esp + 0x78]
mov ecx, 0
mov eax, dword [esp + 0x8c]
add esi, 0xfffffffe
cmp edx, esi
mov edx, dword [esp + 0x40]
push ebx
cmovge eax, ecx
mov ecx, dword [esp + 0x1c]
push edi
push ebp
lea esi, [edx + eax*2]
push esi
push edx
push dword [esp + 0x78]
push ecx
call fcn.1002cee0
mov ecx, dword [esp + 0x9c]
add esp, 0x20
mov eax, dword [esp + 0x3c]
cmp ecx, 0xe
mov edi, dword [esp + 0x24]
mov edx, 2
cmovle edi, edx
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0xc0]
add edi, esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], edi
test ebp, ebp
jle 0x1002ca62
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x70]
mov ebp, dword [esp + 0x4c]
lea eax, [ecx + edx*2]
mov dword [esp + 0x38], eax
lea esi, [edx + ecx]
mov eax, ecx
mov dword [esp + 0x5c], esi
mov ecx, dword [esp + 0x2c]
sub eax, ebp
mov dword [esp + 0x64], eax
mov dword [esp + 0x40], ecx
nop dword [eax]
movzx eax, word [eax + ebp]
push edi
push eax
call fcn.1002dc10
movzx ecx, word [esi]
mov ebx, eax
push edi
push ecx
call fcn.1002dc10
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x38]
push edi
movzx ecx, word [eax]
push edi
push ecx
call fcn.1002dc10
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1002dda0
mov esi, dword [esp + 0x64]
lea ebp, [ebp + 2]
add dword [esp + 0x40], 2
add esi, 2
mov edi, dword [esp + 0x70]
add esp, 8
sub dword [esp + 0x40], 1
mov word [ebp - 2], ax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x5c], esi
jne 0x1002c9c0
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0xc0]
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x24]
cmp ecx, 0xe
mov ecx, 2
cmovle edi, ecx
xor ebp, ebp
add edi, esi
mov dword [esp + 0x64], edi
cmp dword [esp + 0x2c], ebp
jle 0x1002cb40
mov esi, dword [esp + 0x70]
mov eax, ebx
add esi, dword [esp + 0x4c]
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x40], esi
mov dword [esp + 0x68], eax
nop dword [eax]
movzx eax, word [ebx + ebp*2]
push edi
push eax
call fcn.1002dc10
mov ebx, eax
mov eax, dword [esp + 0x70]
push edi
movzx ecx, word [eax + esi]
push ecx
call fcn.1002dc10
mov ecx, dword [esp + 0x80]
add esp, 0x10
mov esi, eax
add ecx, ebp
mov eax, dword [esp + 0x18]
push edi
push edi
movzx ecx, word [eax + ecx*2]
push ecx
call fcn.1002dc10
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1002dda0
mov esi, dword [esp + 0x48]
inc ebp
mov edi, dword [esp + 0x6c]
add esp, 8
mov ebx, dword [esp + 0x18]
mov word [esi], ax
add esi, 2
mov dword [esp + 0x40], esi
cmp ebp, dword [esp + 0x2c]
jl 0x1002caa0
mov esi, dword [esp + 0xc0]
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x58]
push esi
push dword [esp + 0x48]
mov dword [esp + 0x18], eax
push dword [esp + 0x80]
mov eax, dword [esp + 0x2c]
push ebx
push edi
mov dword [esp + 0x34], eax
call fcn.1002d580
mov eax, dword [esp + 0x38]
lea ecx, [esi + 2]
mov ebp, dword [esp + 0x28]
cmp ecx, 0xe
mov ecx, 2
cmovle eax, ecx
add eax, esi
push eax
push dword [esp + 0x88]
mov eax, dword [esp + 0xa0]
push ebp
push dword [esp + 0x6c]
add eax, ebp
push eax
call dword [0x1007a1f0]
add dword [esp + 0x44], eax
push dword [esp + 0xb0]
mov eax, dword [esp + 0x60]
adc dword [esp + 0x7c], edx
push eax
push dword [esp + 0xa8]
add eax, dword [esp + 0xc8]
push eax
call dword [0x1007a1ec]
mov edx, dword [esp + 0x60]
add esp, 0x38
add ebp, dword [esp + 0x98]
add edx, 2
mov eax, dword [esp + 0x9c]
add dword [esp + 0x34], eax
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x28], edx
cmp edx, dword [esp + 0x74]
jl 0x1002c920
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov dword [esp + 0x10], ebx
jmp 0x1002cc21
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
cmp dword [esp + 0x54], 0
jle 0x1002cc50
cmp ecx, dword [esp + 0xa0]
jb 0x1002cc70
ja 0x1002cc3c
cmp eax, dword [esp + 0xa4]
jb 0x1002cc70
cmp ecx, dword [esp + 0x90]
ja 0x1002cc70
jb 0x1002cc50
cmp eax, dword [esp + 0x8c]
ja 0x1002cc70
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x54]
inc eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0x54], eax
cmp eax, 4
jl 0x1002c880
push dword [esp + 0xe8]
push dword [esp + 0xe8]
push dword [esp + 0xe8]
push dword [esp + 0xe8]
push esi
push dword [esp + 0xec]
push dword [esp + 0xec]
push dword [esp + 0xec]
push dword [esp + 0xec]
push dword [esp + 0xec]
push dword [esp + 0xec]
push edx
push ebx
call fcn.1002bf20
mov ecx, dword [esp + 0x44]
add esp, 0x34
mov esi, eax
jmp 0x1002cccb
xor esi, esi
push ecx
call fcn.10058c98
push dword [esp + 0x24]
call fcn.10058c98
push dword [esp + 0x38]
call fcn.10058c98
push dword [esp + 0x54]
call fcn.10058c98
push dword [esp + 0x5c]
call fcn.10058c98
push dword [esp + 0x8c]
call fcn.10058c98
push edi
call fcn.10058c98
add esp, 0x1c
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret