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

Disassembly:
sub esp, 0x64
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
mov dword [esp + 8], eax
mov dword [esp + 0x10], eax
or eax, 0xffffffff
push ebx
mov ebx, dword [esp + 0x6c]
push ebp
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x9c]
push esi
mov esi, dword [esp + 0x88]
push edi
mov edi, dword [ebx + 0x1c8]
push eax
push ecx
push edx
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x1c], edi
call fcn.0066a190
add esp, 0xc
test eax, eax
je 0x66a8d0
cmp dword [esp + 0x9c], edi
je 0x66a7d0
mov ebp, dword [esp + 0xa4]
mov edx, dword [esp + 0xa0]
lea eax, [esp + 0x94]
lea ecx, [esp + 0x9c]
push eax
push ecx
push ebp
push edx
push ebx
mov dword [esp + 0xb0], edi
call fcn.0066a3b0
mov dword [ebx + 8], eax
mov eax, dword [esp + 0xb0]
add esp, 0x14
cmp eax, edi
mov dword [ebx + 0xc], edx
jne 0x66a796
mov edi, dword [esp + 0xa8]
mov eax, dword [ebx + 0x38]
test eax, eax
lea ebp, [edi + 1]
mov dword [ebx + 0x34], ebp
je 0x66a7ed
push eax
call fcn.004cb3f4
add esp, 4
mov eax, dword [ebx + 0x40]
test eax, eax
je 0x66a7fd
push eax
call fcn.004cb3f4
add esp, 4
mov eax, dword [ebx + 0x3c]
test eax, eax
je 0x66a80d
push eax
call fcn.004cb3f4
add esp, 4
mov eax, dword [ebx + 0x34]
lea ecx, [eax*8 + 8]
push ecx
call fcn.004cb917
mov edx, dword [ebx + 0x34]
mov dword [ebx + 0x38], eax
mov eax, dword [ebx + 0x48]
shl edx, 5
push edx
push eax
call fcn.004d4c74
mov ecx, dword [ebx + 0x34]
mov edx, dword [ebx + 0x4c]
shl ecx, 4
push ecx
push edx
mov dword [ebx + 0x48], eax
call fcn.004d4c74
mov dword [ebx + 0x4c], eax
mov eax, dword [ebx + 0x34]
shl eax, 2
push eax
call fcn.004cb917
mov ecx, dword [ebx + 0x34]
mov dword [ebx + 0x40], eax
shl ecx, 3
push ecx
call fcn.004cb917
mov edx, dword [ebx + 0x34]
mov dword [ebx + 0x3c], eax
shl edx, 4
push edx
call fcn.004cb917
mov ecx, dword [esp + 0xb0]
mov dword [ebx + 0x44], eax
mov eax, dword [ebx + 0x38]
add esp, 0x20
mov dword [eax + ebp*8], esi
mov dword [eax + ebp*8 + 4], ecx
mov edx, dword [ebx + 0x38]
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
mov dword [edx + edi*8], eax
mov dword [edx + edi*8 + 4], ecx
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x94]
test ecx, ecx
jg 0x66a8b8
jl 0x66a8b4
test eax, eax
jae 0x66a8b8
xor eax, eax
xor ecx, ecx
mov edx, dword [ebx + 0x44]
shl edi, 4
mov dword [edi + edx + 8], eax
xor eax, eax
mov dword [edi + edx + 0xc], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret
mov ebp, dword [esp + 0x88]
xor eax, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
cmp ebp, dword [esp + 0x90]
jg 0x66aa19
mov edx, dword [esp + 0x84]
jl 0x66a90f
cmp edx, esi
jae 0x66aa19
jmp 0x66a90f
mov edx, dword [esp + 0x84]
mov ebp, dword [esp + 0x88]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov ecx, esi
mov eax, edi
sub ecx, edx
sbb eax, ebp
test eax, eax
jg 0x66a931
jl 0x66a92d
cmp ecx, 0x10000
jae 0x66a931
mov esi, edx
jmp 0x66a944
add esi, edx
push 0
adc edi, ebp
push 2
push edi
push esi
call fcn.006817f0
mov esi, eax
mov ebp, edx
cmp esi, dword [ebx + 8]
jne 0x66a94e
cmp ebp, dword [ebx + 0xc]
je 0x66a964
push ebp
push esi
push ebx
call fcn.0066a5a0
cdq
mov ecx, eax
add esp, 0xc
or ecx, edx
jne 0x66ac29
push 0xffffffffffffffff
lea edx, [esp + 0x48]
push 0xffffffffffffffff
push edx
push ebx
call fcn.00669fd0
add esp, 0x10
cmp eax, 0xffffff80
mov dword [esp + 0x2c], eax
mov edi, edx
jne 0x66a98a
cmp edi, 0xffffffff
je 0x66ac31
test edi, edi
jl 0x66a9cf
jg 0x66a994
test eax, eax
jb 0x66a9cf
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa0]
push eax
lea edx, [esp + 0x48]
push ecx
push edx
call fcn.0066a170
add esp, 0xc
test eax, eax
je 0x66a9cb
mov eax, dword [ebx + 8]
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], ecx
jmp 0x66a9e9
mov eax, dword [esp + 0x2c]
test edi, edi
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], ebp
jl 0x66a9e9
jg 0x66a9e1
test eax, eax
jb 0x66a9e9
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edi
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x88]
cmp eax, edx
jl 0x66a901
jg 0x66aa11
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x84]
cmp ecx, eax
jb 0x66a901
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
lea eax, [edi + 1]
mov dword [ebx + 8], esi
cmp eax, edi
mov dword [ebx + 0xc], ebp
je 0x66aa68
mov eax, dword [esp + 0xa4]
lea ecx, [esp + 0x24]
lea edx, [esp + 0x84]
push ecx
mov ecx, dword [esp + 0xa4]
push edx
push eax
push ecx
push ebx
mov dword [esp + 0x98], edi
call fcn.0066a3b0
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x98]
add esp, 0x14
cmp eax, edi
mov dword [ebx + 0xc], edx
jne 0x66aa2a
mov edx, dword [ebx + 8]
cmp edx, esi
jne 0x66aa76
mov eax, dword [ebx + 0xc]
cmp eax, ebp
je 0x66aa8c
push ebp
push esi
push ebx
call fcn.0066a5a0
cdq
mov ecx, eax
add esp, 0xc
or ecx, edx
jne 0x66ac29
lea edx, [esp + 0x7c]
push 0
lea eax, [esp + 0x7c]
push edx
lea ecx, [esp + 0x3c]
push eax
lea edx, [esp + 0x60]
push ecx
push edx
push ebx
call fcn.00669d20
cdq
mov ecx, eax
add esp, 0x18
or ecx, edx
jne 0x66ac29
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
mov edi, dword [ebx + 0x1c8]
lea ecx, [esp + 0x54]
push ecx
push ebx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x90], eax
call fcn.0066a600
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x84]
lea ebp, [edx + 1]
mov edx, dword [esp + 0xa4]
push ebp
push eax
mov eax, dword [esp + 0xa8]
push ecx
mov ecx, dword [esp + 0xa8]
push edx
mov edx, dword [esp + 0xa8]
push eax
mov eax, dword [esp + 0xa8]
push ecx
mov ecx, dword [ebx + 0xc]
push edx
mov edx, dword [ebx + 8]
push eax
mov eax, dword [esp + 0x48]
push ecx
push edx
push eax
push esi
push ebx
call fcn.0066a720
cdq
mov ecx, eax
add esp, 0x3c
or ecx, edx
jne 0x66ac29
mov eax, dword [esp + 0x78]
test eax, eax
je 0x66ab59
push eax
call fcn.004cb3f4
add esp, 4
mov edx, dword [ebx + 0x38]
mov eax, dword [esp + 0x20]
mov dword [edx + ebp*8], esi
lea esi, [esp + 0x54]
mov dword [edx + ebp*8 + 4], eax
mov ecx, dword [ebx + 0x40]
mov eax, dword [esp + 0x84]
mov dword [ecx + ebp*4], edi
mov edx, dword [ebx + 0x3c]
mov ecx, dword [esp + 0x88]
mov edi, ebp
mov dword [edx + ebp*8], eax
shl edi, 5
mov dword [edx + ebp*8 + 4], ecx
mov eax, dword [ebx + 0x48]
add edi, eax
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebx + 0x4c]
mov eax, dword [esp + 0x34]
shl ebp, 4
add edx, ebp
mov esi, dword [esp + 0x18]
mov dword [edx], eax
mov ecx, dword [esp + 0x38]
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x3c]
mov dword [edx + 8], eax
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0xa8]
mov dword [edx + 0xc], ecx
mov edx, dword [ebx + 0x44]
mov ecx, dword [esp + 0x24]
shl eax, 4
mov dword [eax + edx + 8], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax + edx + 0xc], ecx
mov ecx, dword [ebx + 0x44]
mov edx, dword [esp + 0x14]
add ebp, ecx
mov dword [ebp], edx
mov dword [ebp + 4], esi
mov ecx, dword [ebx + 0x44]
mov edi, dword [eax + ecx + 0x18]
lea ecx, [eax + ecx + 0x18]
sub edi, edx
mov dword [ecx], edi
mov edx, dword [ecx + 4]
sbb edx, esi
mov dword [ecx + 4], edx
mov edx, dword [ebx + 0x44]
mov ecx, dword [eax + edx + 0x1c]
lea eax, [eax + edx + 0x18]
test ecx, ecx
jg 0x66ac27
jl 0x66ac1a
cmp dword [eax], 0
jae 0x66ac27
mov dword [eax], 0
mov dword [eax + 4], 0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffff80
pop ebx
add esp, 0x64
ret