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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x7c
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov eax, dword [esi + 0x58]
cmp eax, 2
jl 0x664021
cmp dword [esi + 4], 0
je 0x664021
mov ebx, dword [esi + 0x34]
cmp ebx, 0xffffffff
jle 0x664021
xorps xmm0, xmm0
xor edi, edi
movlpd qword [esp + 0x58], xmm0
test ebx, ebx
jle 0x664017
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov edx, edi
mov ecx, esi
call fcn.00663aa0
add dword [esp + 0x18], eax
adc dword [esp + 0x1c], edx
inc edi
cmp edi, ebx
jl 0x663ff4
mov eax, dword [esi + 0x58]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
jmp 0x664031
mov ebx, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
jmp 0x664029
or ebx, 0xffffffff
mov edx, 0xffffff7d
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], ebx
cmp eax, 2
jl 0x664745
cmp dword [esi + 4], 0
jne 0x66404c
mov eax, 0xffffff76
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x10]
test ecx, ecx
jl 0x664745
mov eax, dword [ebp + 0xc]
jg 0x664064
test eax, eax
jb 0x664745
cmp ecx, ebx
jg 0x664745
jl 0x664076
cmp eax, edx
ja 0x664745
mov edi, dword [esi + 0x34]
sub edi, 1
mov dword [esp + 0x30], edi
js 0x6640bb
mov eax, dword [esi + 0x44]
mov ecx, edi
mov esi, dword [ebp + 0xc]
add eax, 8
shl ecx, 4
add eax, ecx
mov ecx, dword [ebp + 0x10]
sub edx, dword [eax]
sbb ebx, dword [eax + 4]
cmp ecx, ebx
jg 0x6640ac
jl 0x6640a4
cmp esi, edx
jae 0x6640ac
sub eax, 0x10
sub edi, 1
jns 0x664095
mov esi, dword [ebp + 8]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], edx
mov dword [esp + 0x30], edi
mov eax, dword [esi + 0x38]
mov ecx, dword [eax + edi*8 + 8]
mov edx, dword [eax + edi*8 + 0xc]
mov ebx, dword [eax + edi*8]
mov edi, dword [eax + edi*8 + 4]
mov eax, dword [esi + 0x44]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x30]
add ecx, ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0x4c], ebx
mov edx, dword [eax + ecx*8 + 4]
mov esi, dword [eax + ecx*8]
mov dword [esp + 0x3c], edx
mov edx, dword [eax + ecx*8 + 8]
mov eax, dword [eax + ecx*8 + 0xc]
add edx, esi
mov ecx, dword [esp + 0x3c]
adc eax, ecx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x58], eax
mov eax, esi
sub eax, dword [esp + 0x18]
mov dword [esp + 0x38], esi
sbb ecx, dword [esp + 0x1c]
add eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
adc ecx, dword [ebp + 0x10]
mov dword [esp + 0x34], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], edi
cmp edi, edx
jg 0x6644c7
mov ecx, dword [esp + 0x14]
jl 0x664150
cmp ebx, ecx
jae 0x6644c7
nop word [eax + eax]
mov eax, ecx
mov ecx, edx
sub eax, ebx
mov dword [esp + 0x44], eax
sbb ecx, edi
mov dword [esp + 0x50], ecx
test ecx, ecx
jg 0x664178
jl 0x66416d
cmp eax, 0x10000
jae 0x664178
mov edi, ebx
mov ebx, dword [esp + 0x10]
jmp 0x664210
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x40]
sbb edx, dword [esp + 0x3c]
call fcn.00684f90
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x44]
movsd qword [esp + 0x28], xmm0
call fcn.00684f90
movsd xmm1, qword [esp + 0x28]
mov ecx, dword [esp + 0x54]
sub ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x58]
sbb edx, dword [esp + 0x3c]
mulsd xmm1, xmm0
movsd qword [esp + 0x28], xmm1
call fcn.00684f90
movsd xmm1, qword [esp + 0x28]
divsd xmm1, xmm0
movaps xmm0, xmm1
call fcn.00684e3f
mov ecx, dword [esp + 0x20]
mov edi, eax
add edi, ecx
mov ebx, edx
mov edx, dword [esp + 0x10]
mov eax, ecx
adc ebx, edx
sub edi, 0x10000
sbb ebx, 0
add eax, 0x10000
mov dword [esp + 0x50], eax
mov eax, edx
adc eax, 0
cmp ebx, eax
jg 0x664210
jl 0x66420c
cmp edi, dword [esp + 0x50]
jae 0x664210
mov edi, ecx
mov ebx, edx
cmp edi, dword [esi + 8]
jne 0x66421a
cmp ebx, dword [esi + 0xc]
je 0x664266
mov ecx, dword [esi]
test ecx, ecx
je 0x664252
mov eax, dword [esi + 0x2c4]
test eax, eax
je 0x66424b
push 0
push ebx
push edi
push ecx
call eax
add esp, 0x10
cmp eax, 0xffffffff
je 0x66424b
lea ecx, [esi + 0x18]
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
call fcn.006587f0
xor eax, eax
jmp 0x664257
mov eax, 0xffffff80
jmp 0x664257
mov eax, 0xffffff7f
cdq
mov ecx, eax
mov dword [esp + 0xc], eax
or ecx, edx
jne 0x664660
mov eax, dword [esp + 0x14]
nop word [eax + eax]
mov ecx, eax
lea edx, [esp + 0x68]
sub ecx, dword [esi + 8]
mov eax, dword [esp + 0x24]
sbb eax, dword [esi + 0xc]
push eax
push ecx
mov ecx, esi
call fcn.00662200
add esp, 8
mov dword [esp + 0xc], eax
mov ecx, edx
mov dword [esp + 0x50], ecx
cmp eax, 0xffffff80
jne 0x6642a4
cmp ecx, 0xffffffff
je 0x664660
test ecx, ecx
jg 0x6642fe
jl 0x6642ae
test eax, eax
jae 0x6642fe
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
add ecx, 1
adc edx, 0
cmp ebx, edx
jl 0x6644c7
jg 0x6642ce
cmp edi, ecx
jbe 0x6644c7
mov eax, edi
or eax, ebx
je 0x664660
add edi, 0xffff0000
adc ebx, 0xffffffff
cmp ebx, dword [esp + 0x10]
jg 0x664428
jl 0x6642f7
cmp edi, dword [esp + 0x20]
ja 0x664428
mov ebx, edx
jmp 0x664426
mov ecx, dword [esp + 0x68]
movzx edx, byte [ecx + 0x11]
movzx eax, byte [ecx + 0x10]
shl edx, 8
or edx, eax
movzx eax, byte [ecx + 0xf]
shl edx, 8
or edx, eax
movzx eax, byte [ecx + 0xe]
mov ecx, dword [esp + 0x30]
shl edx, 8
or edx, eax
mov eax, dword [esi + 0x40]
cmp edx, dword [eax + ecx*4]
jne 0x664472
lea ecx, [esp + 0x68]
call fcn.00658030
mov ecx, eax
mov dword [esp + 0x44], eax
and ecx, edx
cmp ecx, 0xffffffff
je 0x664472
cmp edx, dword [esp + 0x40]
jg 0x6643ae
mov ecx, dword [esp + 0x34]
jl 0x66435b
cmp eax, ecx
jae 0x6643ae
mov eax, dword [esp + 0xc]
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
sub ecx, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
sbb eax, edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0x3c], edx
test eax, eax
jg 0x6644ad
jl 0x6643a3
cmp ecx, 0xac44
ja 0x6644ad
mov edi, ebx
mov ebx, dword [esp + 0x10]
jmp 0x664472
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
add ecx, 1
mov dword [esp + 0x28], esi
adc dword [esp + 0x28], 0
mov esi, dword [ebp + 8]
cmp ebx, dword [esp + 0x28]
jl 0x6644c7
jg 0x6643d9
cmp edi, ecx
jbe 0x6644c7
mov eax, dword [esp + 0x14]
cmp eax, dword [esi + 8]
mov eax, dword [esp + 0x44]
jne 0x664491
mov eax, dword [esp + 0x24]
cmp eax, dword [esi + 0xc]
mov eax, dword [esp + 0x44]
jne 0x664491
mov eax, dword [esp + 0xc]
add edi, 0xffff0000
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x50]
adc ebx, 0xffffffff
mov dword [esp + 0x24], eax
cmp ebx, dword [esp + 0x10]
jg 0x664428
jl 0x664422
cmp edi, dword [esp + 0x20]
ja 0x664428
mov ebx, dword [esp + 0x28]
mov edi, ecx
mov ecx, dword [esi]
test ecx, ecx
je 0x664460
mov eax, dword [esi + 0x2c4]
test eax, eax
je 0x664459
push 0
push ebx
push edi
push ecx
call eax
add esp, 0x10
cmp eax, 0xffffffff
je 0x664459
lea ecx, [esi + 0x18]
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
call fcn.006587f0
xor eax, eax
jmp 0x664465
mov eax, 0xffffff80
jmp 0x664465
mov eax, 0xffffff7f
cdq
mov dword [esp + 0xc], eax
or eax, edx
jne 0x664660
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x10], eax
jg 0x6644c7
mov eax, dword [esp + 0x14]
jl 0x664270
cmp dword [esp + 0x20], eax
jae 0x6644c7
jmp 0x664270
mov ecx, edi
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edx
jmp 0x6644b1
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
cmp edi, edx
jl 0x664150
jg 0x6644c7
cmp ebx, ecx
jb 0x664150
push dword [esp + 0x48]
mov ecx, esi
push dword [esp + 0x50]
call fcn.006621a0
cdq
add esp, 8
mov dword [esp + 0xc], eax
or eax, edx
mov dword [esi + 0x50], 0xffffffff
mov dword [esi + 0x54], 0xffffffff
jne 0x664660
push 0xffffffffffffffff
push 0xffffffffffffffff
lea edx, [esp + 0x60]
mov ecx, esi
call fcn.00662200
add esp, 8
mov dword [esp + 0xc], eax
test edx, edx
jl 0x664660
jg 0x66451c
test eax, eax
jb 0x664660
mov ebx, dword [esp + 0x30]
cmp ebx, dword [esi + 0x60]
je 0x664541
mov ecx, esi
call fcn.00663390
mov eax, dword [esi + 0x40]
mov dword [esi + 0x60], ebx
mov eax, dword [eax + ebx*4]
mov dword [esi + 0x5c], eax
mov dword [esi + 0x58], 3
jmp 0x66454c
lea ecx, [esi + 0x1e0]
call fcn.00653f20
mov edx, dword [esi + 0x5c]
lea edi, [esi + 0x78]
test edi, edi
je 0x664568
cmp dword [edi], 0
je 0x664568
mov ecx, edi
call fcn.00658830
mov dword [edi + 0x150], edx
lea edx, [esp + 0x58]
mov ecx, edi
call fcn.00658510
mov ebx, dword [esp + 0x7c]
test edi, edi
je 0x664599
cmp dword [edi], 0
je 0x664599
push 0
lea edx, [esp + 0x6c]
mov ecx, edi
call fcn.006588e0
mov ebx, dword [esp + 0x80]
add esp, 4
jmp 0x66459b
xor eax, eax
cdq
mov ecx, eax
or ecx, edx
je 0x6646a0
test edx, edx
jl 0x664696
jg 0x6645b8
test eax, eax
jb 0x664696
mov edx, dword [esp + 0x78]
mov eax, edx
and eax, ebx
cmp eax, 0xffffffff
jne 0x6645de
test edi, edi
je 0x664599
cmp dword [edi], 0
je 0x664577
push 1
xor edx, edx
mov ecx, edi
call fcn.006588e0
add esp, 4
jmp 0x664577
mov ecx, dword [esi + 0x60]
mov eax, dword [esi + 0x44]
shl ecx, 4
sub edx, dword [ecx + eax]
sbb ebx, dword [ecx + eax + 4]
mov dword [esi + 0x50], edx
mov dword [esi + 0x54], ebx
test ebx, ebx
jg 0x66460c
jl 0x6645fe
test edx, edx
jae 0x66460c
mov dword [esi + 0x50], 0
mov dword [esi + 0x54], 0
mov eax, dword [esp + 0x18]
add dword [esi + 0x50], eax
mov eax, dword [esp + 0x1c]
adc dword [esi + 0x54], eax
mov edi, dword [ebp + 0x10]
cmp dword [esi + 0x54], edi
jg 0x664650
mov ebx, dword [ebp + 0xc]
jl 0x66462c
cmp dword [esi + 0x50], ebx
ja 0x664650
or edx, 0xffffffff
mov ecx, esi
call fcn.00663aa0
cmp edi, edx
jg 0x664650
jl 0x664640
cmp ebx, eax
ja 0x664650
xorps xmm0, xmm0
xor eax, eax
movups xmmword [esi + 0x68], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0xc], 0xffffff7f
mov dword [esp + 0x5c], 0xffffffff
lea ecx, [esi + 0x1e0]
mov dword [esi + 0x50], 0xffffffff
mov dword [esi + 0x54], 0xffffffff
call fcn.00653c90
lea ecx, [esi + 0x250]
call fcn.00653870
mov eax, dword [esp + 0xc]
mov dword [esi + 0x58], 2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0xc], 0xffffff78
jmp 0x664658
push dword [esp + 0x48]
mov ecx, esi
push dword [esp + 0x50]
call fcn.006621a0
cdq
add esp, 8
mov dword [esp + 0xc], eax
test edx, edx
jl 0x664660
jg 0x6646c1
test eax, eax
jb 0x664660
lea edx, [esp + 0x58]
mov ecx, esi
call fcn.006622b0
mov ebx, edx
mov dword [esp + 0xc], eax
test ebx, ebx
jl 0x664660
jg 0x6646e0
test eax, eax
jb 0x664660
nop dword [eax]
mov edi, dword [esp + 0x58]
movzx ecx, byte [edi + 0x11]
movzx eax, byte [edi + 0x10]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 0xf]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 0xe]
shl ecx, 8
or ecx, eax
cmp ecx, dword [esi + 0x5c]
jne 0x664723
lea ecx, [esp + 0x58]
call fcn.00658030
cmp edx, 0xffffffff
jg 0x66472f
jl 0x66471d
cmp eax, 0xffffffff
ja 0x66472f
test byte [edi + 5], 1
je 0x66472f
mov eax, dword [esp + 0xc]
mov dword [esi + 8], eax
mov dword [esi + 0xc], ebx
jmp 0x6646c1
mov eax, dword [esp + 0xc]
push ebx
push eax
push esi
call fcn.00663b30
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0xffffff7d
pop ebx
mov esp, ebp
pop ebp
ret