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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x594294
sub esp, 0x7c
mov eax, dword [esp + 0x80]
mov dword [eax + 0x40], 0
movzx ecx, byte [eax + 0x30]
test cl, cl
je 0x594275
mov byte [eax + 0x30], 0
mov ecx, dword [eax + 0x28]
cmp dword [eax + 0x20], ecx
ja 0x5941fa
mov dword [eax + 0x28], 0xffffffff
mov ecx, dword [eax + 0x40]
mov dword [esp + 0x44], ecx
mov edx, dword [eax + 0x3c]
mov ebx, dword [eax + 0x44]
mov ebp, dword [eax + 0x20]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov byte [esp + 0xc], 5
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], 0
call fcn.005945d0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x44]
cmp ebx, ecx
jae 0x594283
movzx ebp, byte [edx + ebx]
or ebp, 0x20
xchg ebp, eax
mov byte [edx + ebx], al
xchg ebp, eax
mov ebx, dword [esp + 0x80]
mov dword [ebx + 0x40], ecx
mov dword [ebx + 0x44], eax
mov ecx, dword [0x7e34e0]
test ecx, ecx
jne 0x5941eb
mov dword [ebx + 0x3c], edx
mov dword [esp], ebx
lea edi, [esp + 4]
mov dword [esp + 0x50], edi
lea esi, [esp + 0x84]
call fcn.0045d09e
call fcn.005942a0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
movzx edx, byte [esp + 0x20]
test dl, dl
jne 0x594168
mov dword [esp + 0x40], ecx
lea edi, [esp + 0x68]
lea esi, [esp + 0x84]
call fcn.0045d09e
movzx ecx, byte [esp + 0x78]
test cl, cl
je 0x59413b
xor ecx, ecx
mov byte [esp + 0x3b], cl
test cl, cl
jne 0x59410a
mov edx, dword [esp + 0x40]
test edx, edx
sete bl
test eax, eax
xchg ebp, ebx
sete bl
xchg ebp, ebx
lea edi, [esp + 0xc]
and ebx, ebp
test bl, bl
je 0x594093
mov eax, dword [esp + 0x80]
mov edx, dword [eax + 0x3c]
mov ebx, dword [eax + 0x40]
mov ebp, dword [eax + 0x44]
mov dword [esp], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
lea esi, [esp + 0x84]
call fcn.0045d09e
movzx ecx, byte [esp + 0x3b]
mov byte [esp + 0x20], cl
call fcn.005943b0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
mov dword [ebx + 0x40], eax
mov dword [ebx + 0x44], ecx
mov eax, dword [0x7e34e0]
test eax, eax
jne 0x594087
mov dword [ebx + 0x3c], edx
mov eax, dword [ebx + 0x34]
mov ecx, dword [ebx + 0x38]
mov eax, dword [eax + 0x10]
mov edx, dword [ebx + 0x3c]
mov ebp, dword [ebx + 0x40]
mov esi, dword [ebx + 0x44]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
call eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
test eax, eax
je 0x59406d
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
add esp, 0x7c
ret
mov ebx, dword [esp + 0x80]
cmp dword [ebx + 0x40], ecx
je 0x59405b
mov eax, dword [0x7ccdb0]
mov edx, dword [0x7ccdb4]
jmp 0x59405b
lea edi, [ebx + 0x3c]
mov eax, edx
call fcn.0045c920
jmp 0x594028
mov ebx, dword [esp + 0x80]
mov ebp, dword [ebx + 0x3c]
mov ecx, dword [ebx + 0x40]
mov ebx, dword [ebx + 0x44]
mov dword [esp], ebp
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
lea esi, [esp + 0x84]
call fcn.0045d09e
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
movzx eax, byte [esp + 0x3b]
mov byte [esp + 0x28], al
call fcn.005944d0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x80]
mov dword [ebx + 0x40], eax
mov dword [ebx + 0x44], ecx
mov eax, dword [0x7e34e0]
test eax, eax
jne 0x5940fb
mov dword [ebx + 0x3c], edx
jmp 0x594028
lea edi, [ebx + 0x3c]
mov eax, edx
call fcn.0045c920
jmp 0x594028
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x80]
mov dword [esp], eax
mov edi, dword [esp + 0x50]
lea esi, [esp + 0x84]
call fcn.0045d09e
call fcn.00594d30
mov eax, dword [esp + 0x3c]
movzx ecx, byte [esp + 0x3b]
jmp 0x593fad
lea edi, [esp + 0x54]
lea esi, [esp + 0x84]
call fcn.0045d09e
mov ecx, dword [esp + 0x58]
add ecx, dword [esp + 0x60]
add ecx, 0x20
mov edx, dword [esp + 0x80]
cmp dword [edx + 0x20], ecx
setae cl
jmp 0x593fa1
mov edx, dword [esp + 0x80]
mov ebx, dword [edx + 0x40]
mov dword [esp + 0x48], ebx
mov ebp, dword [edx + 0x3c]
mov esi, dword [edx + 0x44]
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov byte [esp + 0xc], 7
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
call fcn.005945d0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x48]
cmp ebx, ecx
jae 0x59427c
movzx ebp, byte [eax + ebx]
or ebp, 0xffffff80
xchg ebp, ecx
mov byte [eax + ebx], cl
xchg ebp, ecx
mov ebx, dword [esp + 0x80]
mov dword [ebx + 0x40], ecx
mov dword [ebx + 0x44], edx
mov ecx, dword [0x7e34e0]
test ecx, ecx
jne 0x5941de
mov dword [ebx + 0x3c], eax
jmp 0x594028
lea edi, [ebx + 0x3c]
call fcn.0045c920
jmp 0x594028
lea edi, [ebx + 0x3c]
mov eax, edx
call fcn.0045c920
jmp 0x593f4d
mov edx, dword [eax + 0x40]
mov dword [esp + 0x4c], edx
mov ebx, dword [eax + 0x3c]
mov ebp, dword [eax + 0x44]
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov byte [esp + 0xc], 5
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], 0
call fcn.005945d0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x4c]
cmp ebx, edx
jae 0x59428a
movzx ebp, byte [eax + ebx]
or ebp, 0x20
xchg ebp, ecx
mov byte [eax + ebx], cl
xchg ebp, ecx
mov ebx, dword [esp + 0x80]
mov dword [ebx + 0x40], edx
mov dword [ebx + 0x44], ecx
mov ecx, dword [0x7e34e0]
test ecx, ecx
jne 0x59426b
mov dword [ebx + 0x3c], eax
mov eax, ebx
jmp 0x593ed3
lea edi, [ebx + 0x3c]
call fcn.0045c920
jmp 0x594264
mov ebx, eax
jmp 0x593f4d
mov eax, ebx
call fcn.0045c9a0
mov eax, ebx
call fcn.0045c9a0
mov eax, ebx
mov ecx, edx
call fcn.0045c9a0
nop
call fcn.0045b380
jmp fcn.00593e90