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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 4]
cmp eax, dword [ecx + 8]
jbe 0x66f32c
sub esp, 0x84
mov ecx, dword [esp + 0x88]
mov edx, dword [ecx + 0x10]
test edx, edx
jne 0x66f2bd
xor eax, eax
xor edx, edx
mov ebx, dword [esp + 0x90]
mov ebp, dword [esp + 0x8c]
xor esi, esi
mov edi, esi
movzx esi, byte [ecx + 4]
xchg esi, eax
test al, al
xchg esi, eax
jne 0x66e8d3
jmp 0x66e8dd
dec ebx
mov esi, ebx
neg ebx
sar ebx, 0x1f
and ebx, 1
add ebp, ebx
mov ebx, esi
test ebx, ebx
jle 0x66e8dd
cmp byte [ebp], 0x2e
je 0x66e8c4
mov dword [esp + 0x8c], ebp
mov dword [esp + 0x90], ebx
test eax, eax
je 0x66f1fd
mov dword [esp + 0x34], eax
mov esi, edi
lea edi, [esp + 0x64]
xor eax, eax
call fcn.00456d78
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], ebx
mov eax, dword [esp + 0x34]
jmp 0x66e928
mov ebx, dword [esp + 0x90]
mov ebp, dword [esp + 0x8c]
mov esi, ecx
mov edx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x54], edx
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x68]
cmp dword [esp + 0x78], ecx
jge 0x66ec52
xchg esi, eax
mov byte [esp + 0x22], al
xchg esi, eax
lea eax, [esp + 0x64]
mov dword [esp], eax
call fcn.0066fe50
mov ecx, dword [esp + 8]
mov eax, dword [esp + 4]
test ecx, ecx
jne 0x66eab6
mov edx, dword [esp + 0x34]
test edx, edx
je 0x66ea12
mov eax, dword [esp + 0x54]
movzx ecx, byte [esp + 0x22]
mov dword [esp + 0x34], edx
mov ebx, dword [esp + 0x80]
lea ebp, [ebx + 1]
mov dword [esp + 0x80], ebp
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x6c]
test edi, edi
je 0x66e9d9
cmp ebp, esi
jl 0x66e9a7
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x78], ebx
jmp 0x66e912
lea edx, [esi - 1]
cmp ebp, edx
jne 0x66e9d5
cmp ebp, esi
jae 0x66f318
lea edx, [edi + ebx*8 + 8]
mov edx, dword [edx + 4]
test edx, edx
sete dl
test dl, dl
je 0x66e9cc
mov edx, dword [esp + 0x34]
jmp 0x66e99a
mov edx, dword [esp + 0x34]
jmp 0x66e912
xor edx, edx
jmp 0x66e9c2
mov ebx, dword [esp + 0x7c]
lea ebp, [ebx + 1]
mov dword [esp + 0x78], ebp
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
lea edx, [esi - 1]
cmp edx, ebp
jne 0x66ea09
cmp ebp, esi
jae 0x66f30f
movzx edx, byte [edi + ebx + 1]
cmp dl, 0x2e
jne 0x66ea09
mov dword [esp + 0x78], esi
mov edx, dword [esp + 0x34]
jmp 0x66e912
mov ebx, dword [esp + 0x88]
movzx ebp, byte [ebx + 3]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x66e96c
lea eax, [0x97ea40]
mov dword [esp], eax
call fcn.0040af00
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x90]
mov dword [edi + 4], eax
mov ecx, dword [0xe8ff30]
test ecx, ecx
jne 0x66ea9d
mov edx, dword [esp + 0x8c]
mov dword [edi], edx
mov dword [edi + 0xc], 2
mov ebx, dword [0xe8ff30]
test ebx, ebx
jne 0x66ea7d
lea ebx, [0x9ca703]
mov dword [edi + 8], ebx
lea edx, [0xaa59d0]
mov eax, edi
jmp 0x66e970
lea ebp, [edi + 8]
mov ecx, edi
mov edi, ebp
mov ebx, eax
lea eax, [0x9ca703]
call fcn.00456ab0
mov eax, ebx
lea ebx, [0x9ca703]
mov edi, ecx
jmp 0x66ea70
mov ecx, eax
mov eax, dword [esp + 0x8c]
call fcn.00456ab0
mov eax, ecx
mov edx, dword [esp + 0x8c]
jmp 0x66ea56
cmp ecx, 4
jge 0x66ec1e
xor edx, edx
test dl, dl
jne 0x66eafc
mov edx, dword [esp + 0x34]
test edx, edx
je 0x66eadb
mov eax, dword [esp + 0x54]
movzx ecx, byte [esp + 0x22]
jmp 0x66e975
mov edx, dword [esp + 0x88]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.006702b0
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
jmp 0x66ead1
cmp ecx, 4
jb 0x66f321
add ecx, 0xfffffffc
mov edx, ecx
neg ecx
sar ecx, 0x1f
and ecx, 4
add eax, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.006708a0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
test ecx, ecx
je 0x66eb4e
mov edx, dword [esp + 0x34]
test edx, edx
je 0x66eb4a
mov eax, dword [esp + 0x54]
movzx ecx, byte [esp + 0x22]
jmp 0x66e975
mov edx, ecx
jmp 0x66eb40
mov dword [esp + 0x28], edx
mov dword [esp + 0x48], ebx
movzx eax, byte [esp + 0x22]
test al, al
je 0x66ebfc
mov eax, 1
mov byte [esp + 0x22], al
lea ecx, [esp + 0x64]
mov dword [esp], ecx
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
call fcn.0066ff30
mov eax, dword [esp + 0x34]
test eax, eax
je 0x66ebc7
mov ecx, dword [esp + 0x54]
test eax, eax
je 0x66eb9e
mov edx, eax
mov eax, ecx
movzx ecx, byte [esp + 0x22]
jmp 0x66e975
mov eax, dword [esp + 0x88]
mov dword [esp], eax
mov ecx, dword [esp + 0x48]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 8], ecx
call fcn.006702b0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
jmp 0x66eb90
mov ebx, dword [esp + 0x88]
movzx ebp, byte [ebx + 2]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x66eb88
mov edx, dword [ebx + 0xc]
mov dword [esp], ebx
mov eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x28]
mov dword [esp + 8], ecx
mov ebp, dword [edx]
call ebp
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
jmp 0x66eb8c
mov dword [esp], ebx
mov dword [esp + 4], edx
call fcn.00661600
mov eax, dword [esp + 8]
test eax, eax
setne al
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x48]
jmp 0x66eb68
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x4c], eax
mov dword [esp], eax
lea ecx, [0x9cbe78]
mov dword [esp + 4], ecx
mov dword [esp + 8], 4
call fcn.00402350
movzx edx, byte [esp + 0xc]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x2c]
jmp 0x66eac1
xchg esi, eax
test al, al
xchg esi, eax
je 0x66f1f1
mov ecx, dword [esp + 0x88]
mov esi, dword [ecx + 0x14]
test esi, esi
je 0x66ec72
test eax, eax
je 0x66f059
movzx ebx, byte [esp + 0x94]
test bl, bl
je 0x66eef0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
jmp 0x66ecad
mov ecx, ebp
mov eax, edx
mov edx, ebx
movzx ebx, byte [esp + 0x94]
mov ebp, dword [esp + 0x68]
cmp dword [esp + 0x78], ebp
jge 0x66eef0
mov dword [esp + 0x60], edx
mov dword [esp + 0x40], eax
lea eax, [esp + 0x64]
mov dword [esp], eax
call fcn.0066fe50
mov eax, dword [esp + 8]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x50], ecx
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00670840
movzx eax, byte [esp + 8]
test al, al
je 0x66ee71
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x88]
movzx esi, byte [ebp + 3]
xchg esi, eax
test al, al
xchg esi, eax
je 0x66ed21
test edx, edx
je 0x66edc3
mov esi, dword [esp + 0x80]
lea eax, [esi + 1]
mov dword [esp + 0x80], eax
mov edi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
test edi, edi
je 0x66ed87
cmp eax, ecx
jl 0x66ed4f
mov eax, dword [esp + 0x68]
mov dword [esp + 0x78], eax
jmp 0x66ec9f
lea ebp, [ecx - 1]
cmp eax, ebp
jne 0x66ed83
cmp eax, ecx
jae 0x66f300
lea eax, [edi + esi*8 + 8]
mov eax, dword [eax + 4]
test eax, eax
sete al
test al, al
je 0x66ed77
mov ebp, dword [esp + 0x88]
jmp 0x66ed42
mov ebp, dword [esp + 0x88]
jmp 0x66ec9f
xor eax, eax
jmp 0x66ed6a
mov esi, dword [esp + 0x7c]
lea eax, [esi + 1]
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
lea ebp, [ecx - 1]
cmp ebp, eax
jne 0x66edb7
cmp eax, ecx
jae 0x66f2fb
movzx eax, byte [edi + esi + 1]
cmp al, 0x2e
jne 0x66edb7
mov dword [esp + 0x78], ecx
mov ebp, dword [esp + 0x88]
jmp 0x66ec9f
test eax, eax
jne 0x66ee62
mov esi, 1
xchg esi, eax
test al, al
xchg esi, eax
je 0x66ed21
mov dword [esp + 0x30], eax
mov dword [esp + 0x50], ecx
lea eax, [0x97ea40]
mov dword [esp], eax
call fcn.0040af00
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x30]
mov dword [edi + 4], eax
mov eax, dword [0xe8ff30]
test eax, eax
jne 0x66ee57
mov edx, dword [esp + 0x50]
mov dword [edi], edx
mov dword [edi + 0xc], 2
mov edx, dword [0xe8ff30]
test edx, edx
jne 0x66ee39
lea edx, [0x9ca703]
mov dword [edi + 8], edx
mov ebp, dword [esp + 0x88]
mov ebx, edi
lea edx, [0xaa59d0]
jmp 0x66ed21
lea ebx, [edi + 8]
mov eax, edi
mov edi, ebx
mov ecx, eax
lea eax, [0x9ca703]
call fcn.00456ab0
lea edx, [0x9ca703]
mov edi, ecx
jmp 0x66ee25
mov eax, dword [esp + 0x50]
call fcn.00456ab0
jmp 0x66ee0b
cmp eax, 0x3f
xchg esi, ebx
setg bl
xchg esi, ebx
jmp 0x66edd0
lea eax, [0x9cbe78]
mov dword [esp], eax
mov dword [esp + 4], 4
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0xc], ecx
call fcn.00671210
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x40]
test ebp, ebp
je 0x66eeec
mov edx, dword [esp + 0x60]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x54], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x58], ecx
lea ebx, [esp + 0x64]
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0066ff30
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x54]
jmp 0x66ed08
mov ebp, ebx
jmp 0x66eeb3
mov ebp, dword [esp + 0x70]
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x6c]
test edi, edi
jne 0x66f009
mov ebp, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
test bl, bl
je 0x66ef1c
movzx ecx, byte [ecx + 3]
test cl, cl
je 0x66ef1c
test eax, eax
je 0x66ef3f
mov dword [esp + 0x98], esi
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
add esp, 0x84
ret
test ebp, ebp
jle 0x66f002
movzx ecx, byte [ebp + esi - 1]
cmp cl, 0x2e
jne 0x66f002
lea ecx, [ebp - 1]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x44], esi
cmp ebp, 1
jge 0x66efec
lea eax, [0x97ea40]
mov dword [esp], eax
call fcn.0040af00
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x24]
mov dword [edi + 4], eax
mov ecx, dword [0xe8ff30]
test ecx, ecx
jne 0x66efd9
mov ecx, dword [esp + 0x44]
mov dword [edi], ecx
mov dword [edi + 0xc], 2
mov edx, dword [0xe8ff30]
test edx, edx
jne 0x66efbf
lea edx, [0x9ca703]
mov dword [edi + 8], edx
lea edx, [0xaa59d0]
mov ebp, eax
mov esi, ecx
mov eax, edx
mov edx, edi
jmp 0x66ef1c
lea edx, [edi + 8]
mov ebx, edi
mov edi, edx
mov ebp, eax
lea eax, [0x9ca703]
call fcn.00456ab0
mov eax, ebp
mov edi, ebx
jmp 0x66efac
mov ecx, eax
mov eax, dword [esp + 0x44]
call fcn.00456ab0
mov edx, eax
mov eax, ecx
mov ecx, edx
jmp 0x66ef92
cmp ecx, 0xfd
jg 0x66ef69
mov ecx, esi
mov edi, edx
mov edx, eax
mov eax, ebp
jmp 0x66efb2
mov ecx, ebp
jmp 0x66ef58
mov dword [esp + 0x3c], eax
mov dword [esp + 0x5c], edx
mov dword [esp], edi
mov dword [esp + 4], ebp
mov dword [esp + 8], esi
lea eax, [0x9ca5d1]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 1
call fcn.005424b0
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
movzx eax, byte [esp + 0x94]
test al, al
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x5c]
jmp 0x66ef0e
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
jmp 0x66f093
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x90]
mov ebp, dword [esp + 0x8c]
mov esi, dword [esp + 0x68]
cmp dword [esp + 0x78], esi
jge 0x66f1ed
lea eax, [esp + 0x64]
mov dword [esp], eax
call fcn.0066fe50
mov eax, dword [esp + 0x88]
mov edx, dword [eax + 0x14]
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 8]
mov dword [esp], ecx
mov dword [esp + 4], ebx
mov ecx, dword [edx]
call ecx
movzx eax, byte [esp + 8]
test al, al
je 0x66f16a
mov edx, dword [esp + 0x80]
lea eax, [edx + 1]
mov dword [esp + 0x80], eax
mov ebx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
test ebx, ebx
je 0x66f12d
cmp eax, ecx
jl 0x66f105
mov eax, dword [esp + 0x68]
mov dword [esp + 0x78], eax
jmp 0x66f076
lea ebp, [ecx - 1]
cmp eax, ebp
jne 0x66f129
cmp eax, ecx
jae 0x66f30a
lea eax, [ebx + edx*8 + 8]
mov eax, dword [eax + 4]
test eax, eax
sete al
test al, al
jne 0x66f0f8
jmp 0x66f076
xor eax, eax
jmp 0x66f120
mov edx, dword [esp + 0x7c]
lea eax, [edx + 1]
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
lea ebp, [ecx - 1]
cmp ebp, eax
jne 0x66f076
cmp eax, ecx
jae 0x66f305
movzx eax, byte [ebx + edx + 1]
cmp al, 0x2e
jne 0x66f076
mov dword [esp + 0x78], ecx
jmp 0x66f076
lea eax, [0x97ea40]
mov dword [esp], eax
call fcn.0040af00
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x90]
mov dword [edi + 4], eax
mov eax, dword [0xe8ff30]
test eax, eax
jne 0x66f1df
mov ecx, dword [esp + 0x8c]
mov dword [edi], ecx
mov dword [edi + 0xc], 1
mov ecx, dword [0xe8ff30]
test ecx, ecx
jne 0x66f1c7
lea eax, [0x9ca5e3]
mov dword [edi + 8], eax
lea eax, [0xaa59d0]
mov ecx, dword [esp + 0x88]
mov edx, edi
jmp 0x66ec72
lea ecx, [edi + 8]
mov eax, edi
mov edi, ecx
mov edx, eax
lea eax, [0x9ca5e3]
call fcn.00456ab0
mov edi, edx
jmp 0x66f1b3
mov eax, dword [esp + 0x8c]
call fcn.00456ab0
jmp 0x66f199
mov edi, edx
jmp 0x66f1b9
mov ecx, dword [esp + 0x88]
jmp 0x66ec72
movzx esi, byte [ecx + 3]
xchg esi, eax
test al, al
xchg esi, eax
je 0x66e8f3
test ebx, ebx
jne 0x66e8f3
xchg edi, eax
mov byte [esp + 0x23], al
xchg edi, eax
lea eax, [0x97ea40]
mov dword [esp], eax
call fcn.0040af00
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x90]
mov dword [edi + 4], eax
mov ecx, dword [0xe8ff30]
test ecx, ecx
jne 0x66f2a4
mov ecx, dword [esp + 0x8c]
mov dword [edi], ecx
mov dword [edi + 0xc], 2
mov edx, dword [0xe8ff30]
test edx, edx
jne 0x66f284
lea edx, [0x9ca703]
mov dword [edi + 8], edx
mov ecx, dword [esp + 0x88]
mov ebx, eax
mov ebp, dword [esp + 0x8c]
mov edx, edi
lea eax, [0xaa59d0]
movzx edi, byte [esp + 0x23]
jmp 0x66e8f3
lea ebx, [edi + 8]
mov edx, edi
mov edi, ebx
mov ebp, eax
lea eax, [0x9ca703]
call fcn.00456ab0
mov eax, ebp
mov edi, edx
lea edx, [0x9ca703]
jmp 0x66f262
mov ecx, eax
mov eax, dword [esp + 0x8c]
call fcn.00456ab0
mov eax, ecx
mov ecx, dword [esp + 0x8c]
jmp 0x66f248
mov dword [esp], ecx
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 8], eax
mov eax, dword [edx]
call eax
mov ebp, dword [esp + 0xc]
movzx esi, byte [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x88]
jmp 0x66e8b6
call fcn.00456b30
call fcn.00456b30
call fcn.00456b30
call fcn.00456b30
mov eax, ebp
mov ecx, esi
call fcn.00456b30
mov eax, ebp
mov ecx, esi
call fcn.00456b30
mov eax, 4
call fcn.00456b90
nop
call fcn.00455270
jmp fcn.0066e870