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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x59cfe7
sub esp, 0x50
mov ebx, dword [esp + 0x54]
mov ebp, dword [ebx + 0x34]
test ebp, ebp
je 0x59cfce
mov ebp, dword [esp + 0x58]
cmp dword [ebx + 0x64], ebp
jge 0x59c6a7
mov esi, dword [ebx + 0x7c]
test esi, esi
jne 0x59c619
mov dword [esp], ebx
call fcn.0059c250
movzx eax, byte [esp + 4]
test al, al
je 0x59c69e
mov ebx, dword [esp + 0x54]
mov ebp, dword [esp + 0x58]
mov esi, dword [ebx + 0x58]
mov eax, ebp
mov ebp, dword [ebx + 0x54]
mov ecx, ebp
mov ebp, dword [ebx + 0x5c]
mov edx, ebx
mov ebx, dword [ebx + 0x60]
test ebx, ebx
jle 0x59c682
cmp ebx, esi
jge 0x59c682
mov dword [esp + 0x24], esi
sub ebp, ebx
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, ebx
mov edi, ebp
add ebp, ecx
sub esi, ebx
mov ebx, dword [esp + 0x24]
cmp ebx, esi
jg 0x59c654
mov esi, ebx
test edi, edi
je 0x59c674
mov dword [esp], ecx
mov dword [esp + 4], ebp
mov dword [esp + 8], esi
call fcn.00464050
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x24]
mov ebp, dword [edx + 0x60]
mov dword [edx + 0x60], 0
sub ebx, ebp
jmp 0x59c691
cmp ebx, esi
jne 0x59c68f
mov dword [edx + 0x60], 0
xor esi, esi
mov ebx, esi
mov ebp, dword [edx + 0x5c]
mov dword [edx + 0x58], ebp
mov ecx, 1
jmp 0x59c6b2
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov byte [esp + 0x5c], 1
add esp, 0x50
ret
xor ecx, ecx
cmp dword [edx + 0x64], eax
jge 0x59c755
mov dword [esp + 0x38], ebx
test cl, cl
je 0x59c6cf
mov ebp, dword [edx + 0x78]
cmp dword [edx + 0x70], ebp
jne 0x59c790
mov dword [esp], edx
call fcn.0059c3d0
movzx eax, byte [esp + 4]
test al, al
je 0x59c734
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x38]
jmp 0x59c790
movzx ebx, byte [edx + 0x50]
test bl, bl
jne 0x59cb95
mov ebx, dword [esp + 0x30]
jmp 0x59c725
movzx ebx, byte [edx + 0x50]
test bl, bl
jne 0x59cc73
mov ebx, dword [esp + 0x30]
jmp 0x59c725
movzx ebx, byte [edx + 0x50]
test bl, bl
jne 0x59cd01
mov ebx, dword [esp + 0x30]
movzx ebp, byte [edx + 0x50]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x59c6b0
jmp 0x59cd4a
mov eax, dword [esp + 0x54]
mov edx, dword [eax + 0x5c]
mov ecx, dword [esp + 0x38]
cmp ecx, edx
ja 0x59c788
mov dword [eax + 0x58], ecx
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov byte [ebp + ebx], 0
inc ebx
cmp eax, ebx
jle 0x59c765
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
cmp ebx, ecx
jb 0x59c74f
jmp 0x59c781
mov eax, dword [edx + 0x5c]
cmp ebx, eax
ja 0x59c778
mov dword [edx + 0x58], ebx
mov byte [esp + 0x5c], 1
add esp, 0x50
ret
mov ecx, ebx
mov edx, eax
call fcn.004637f0
mov eax, ebx
call fcn.004637b0
call fcn.004637f0
inc dword [edx + 0x64]
mov ebp, dword [edx + 0x78]
mov ecx, dword [edx + 0x70]
mov esi, dword [edx + 0x6c]
cmp ecx, ebp
je 0x59c725
mov dword [esp + 0x34], ebp
mov dword [esp + 0x4c], esi
mov dword [esp + 0x30], ebx
mov edi, ecx
sub ecx, ebp
mov ebx, dword [edx + 0x7c]
cmp ebx, 1
jne 0x59c8a7
cmp edi, ebp
jbe 0x59cfc5
movzx ebx, byte [esi + ebp]
test bl, 0x80
jne 0x59c7dd
mov dword [esp + 0x44], eax
mov eax, 1
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x44]
jmp 0x59c844
mov byte [esp + 0xf], bl
and ebx, 0xffffffe0
cmp bl, 0xc0
jne 0x59c7fe
movzx ebx, byte [esp + 0xf]
mov ebx, 2
mov dword [esp + 0x10], ebx
movzx ebx, byte [esp + 0xf]
jmp 0x59c844
movzx ebx, byte [esp + 0xf]
and ebx, 0xfffffff0
cmp bl, 0xe0
jne 0x59c820
movzx ebx, byte [esp + 0xf]
mov ebx, 3
mov dword [esp + 0x10], ebx
movzx ebx, byte [esp + 0xf]
jmp 0x59c844
movzx ebx, byte [esp + 0xf]
and ebx, 0xfffffff8
cmp bl, 0xf0
jne 0x59cbde
movzx ebx, byte [esp + 0xf]
mov ebx, 4
mov dword [esp + 0x10], ebx
movzx ebx, byte [esp + 0xf]
mov esi, dword [esp + 0x10]
cmp esi, ecx
jg 0x59c6f1
test bl, 0x80
jne 0x59c85a
and ebx, 0x7f
jmp 0x59c88d
mov ecx, ebx
and ebx, 0xffffffe0
cmp bl, 0xc0
jne 0x59c86b
and ecx, 0x1f
mov ebx, ecx
jmp 0x59c88d
mov ebx, ecx
and ecx, 0xfffffff0
cmp cl, 0xe0
jne 0x59c87a
and ebx, 0xf
jmp 0x59c88d
mov ecx, ebx
and ebx, 0xfffffff8
cmp bl, 0xf0
jne 0x59c88b
and ecx, 7
mov ebx, ecx
jmp 0x59c88d
xor ebx, ebx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x3c], eax
mov eax, 1
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x3c]
jmp 0x59ce56
lea esi, [ebx - 2]
cmp esi, 1
ja 0x59ce1e
cmp ecx, 2
jl 0x59c715
cmp ebx, 2
xchg esi, ebx
setne bl
xchg esi, ebx
xchg esi, eax
movzx eax, al
xchg esi, eax
mov dword [esp + 0x18], esi
add esi, ebp
cmp edi, esi
jbe 0x59ce15
mov dword [esp + 0x2c], esi
cmp ebx, 2
sete bl
mov ebp, dword [esp + 0x4c]
movzx esi, byte [ebp + esi]
mov dword [esp + 0x28], esi
movzx ebx, bl
mov dword [esp + 0x20], ebx
mov esi, dword [esp + 0x34]
add ebx, esi
cmp edi, ebx
jbe 0x59ce0c
mov dword [esp + 0x34], ebx
movzx ebx, byte [ebp + ebx]
shl ebx, 8
mov ebp, dword [esp + 0x28]
add ebx, ebp
mov ebp, ebx
and ebx, 0xfc00
cmp ebx, 0xdc00
je 0x59ccbc
cmp ebx, 0xd800
jne 0x59c9b2
cmp ecx, 4
jl 0x59c703
mov ebx, dword [esp + 0x18]
lea ebx, [ebx + esi + 2]
cmp edi, ebx
jbe 0x59ce03
mov ebx, dword [esp + 0x2c]
mov ecx, ebp
mov ebp, dword [esp + 0x4c]
movzx ebx, byte [ebp + ebx + 2]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x20]
lea ebx, [ebx + esi + 2]
cmp edi, ebx
jbe 0x59cdfa
mov ebx, dword [esp + 0x34]
movzx ebx, byte [ebp + ebx + 2]
shl ebx, 8
mov ebp, dword [esp + 0x28]
add ebx, ebp
mov ebp, ebx
and ebx, 0xfc00
cmp ebx, 0xdc00
jne 0x59cc2b
and ecx, 0x3ff
shl ecx, 0xa
and ebp, 0x3ff
lea ebx, [ebp + ecx + 0x10000]
mov ecx, 4
jmp 0x59c9b9
mov ebx, ebp
mov ecx, 2
cmp ebx, 9
je 0x59ca06
cmp ebx, 0xa
je 0x59ca06
cmp ebx, 0xd
je 0x59ca06
lea ebp, [ebx - 0x20]
cmp ebp, 0x5e
jbe 0x59ca06
cmp ebx, 0x85
je 0x59ca06
lea ebp, [ebx - 0xa0]
cmp ebp, 0xd75f
jbe 0x59ca06
lea ebp, [ebx - 0xe000]
cmp ebp, 0x1ffd
jbe 0x59ca06
lea ebp, [ebx - 0x10000]
cmp ebp, 0xfffff
ja 0x59cd69
lea ebp, [ecx + esi]
mov dword [edx + 0x78], ebp
add dword [edx + 0x80], ecx
cmp ebx, 0x7f
jg 0x59ca35
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov esi, dword [esp + 0x30]
cmp esi, ecx
jae 0x59cdf3
mov byte [ebp + esi], bl
lea ebx, [esi + 1]
jmp 0x59c78d
cmp ebx, 0x7ff
jg 0x59ca86
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov esi, dword [esp + 0x30]
cmp esi, ecx
jae 0x59cdec
mov ecx, ebx
sar ebx, 6
add ebx, 0xc0
mov byte [ebp + esi], bl
mov ebx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov edi, ebp
lea ebp, [esi + 1]
cmp ebx, ebp
jbe 0x59cde3
and ecx, 0x3f
lea ebx, [ecx + 0x80]
mov byte [esi + edi + 1], bl
lea ebx, [esi + 2]
jmp 0x59c78d
cmp ebx, 0xffff
jg 0x59cafe
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov esi, dword [esp + 0x30]
cmp esi, ecx
jae 0x59cddc
mov ecx, ebx
sar ebx, 0xc
add ebx, 0xe0
mov byte [ebp + esi], bl
mov ebx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov edi, ebp
lea ebp, [esi + 1]
cmp ebx, ebp
jbe 0x59cdd3
mov ebx, ecx
sar ecx, 6
and ecx, 0x3f
lea ebp, [ecx + 0x80]
xchg ebp, eax
mov byte [esi + edi + 1], al
xchg ebp, eax
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov edi, ebp
lea ebp, [esi + 2]
cmp ecx, ebp
jbe 0x59cdcc
and ebx, 0x3f
add ebx, 0x80
mov byte [esi + edi + 2], bl
lea ebx, [esi + 3]
jmp 0x59c78d
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov esi, dword [esp + 0x30]
cmp esi, ecx
jae 0x59cdc5
mov ecx, ebx
sar ebx, 0x12
add ebx, 0xf0
mov byte [ebp + esi], bl
mov ebx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov edi, ebp
lea ebp, [esi + 1]
cmp ebx, ebp
jbe 0x59cdbc
mov ebx, ecx
sar ecx, 0xc
and ecx, 0x3f
lea ebp, [ecx + 0x80]
xchg ebp, eax
mov byte [esi + edi + 1], al
xchg ebp, eax
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
mov edi, ebp
lea ebp, [esi + 2]
cmp ecx, ebp
jbe 0x59cdb5
mov ebp, ebx
sar ebx, 6
and ebx, 0x3f
add ebx, 0x80
mov byte [esi + edi + 2], bl
mov ecx, dword [edx + 0x58]
mov ebx, dword [edx + 0x54]
mov edi, ebx
lea ebx, [esi + 3]
cmp ecx, ebx
jbe 0x59cdae
and ebp, 0x3f
add ebp, 0x80
xchg ebp, eax
mov byte [esi + edi + 3], al
xchg ebp, eax
lea ebx, [esi + 4]
jmp 0x59c78d
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x1f
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59cbbd
lea eax, [0x616a57]
mov dword [edx + 4], eax
jmp 0x59cbcb
lea edi, [edx + 4]
lea eax, [0x616a57]
call fcn.00463730
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], 0xffffffff
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x1b
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59cc06
lea eax, [0x614b4a]
mov dword [edx + 4], eax
jmp 0x59cc14
lea edi, [edx + 4]
lea eax, [0x614b4a]
call fcn.00463730
mov dword [edx + 0xc], ecx
movzx eax, byte [esp + 0xf]
movzx eax, al
mov dword [edx + 0x10], eax
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x1b
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59cc53
lea eax, [0x614a06]
mov dword [edx + 4], eax
jmp 0x59cc61
lea edi, [edx + 4]
lea eax, [0x614a06]
call fcn.00463730
lea eax, [ecx + 2]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], ebp
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x20
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59cc9b
lea eax, [0x616fff]
mov dword [edx + 4], eax
jmp 0x59cca9
lea edi, [edx + 4]
lea eax, [0x616fff]
call fcn.00463730
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], 0xffffffff
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x1d
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59cce4
lea eax, [0x615d9a]
mov dword [edx + 4], eax
jmp 0x59ccf2
lea edi, [edx + 4]
lea eax, [0x615d9a]
call fcn.00463730
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], ebp
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x1b
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59cd29
lea eax, [0x614ade]
mov dword [edx + 4], eax
jmp 0x59cd37
lea edi, [edx + 4]
lea eax, [0x614ade]
call fcn.00463730
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], 0xffffffff
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov ecx, dword [edx + 0x58]
mov ebp, dword [edx + 0x54]
cmp ebx, ecx
jae 0x59cd62
mov byte [ebp + ebx], 0
inc dword [edx + 0x64]
inc ebx
jmp 0x59c755
mov eax, ebx
call fcn.004637b0
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x22
mov ebp, dword [0x7c78f0]
test ebp, ebp
jne 0x59cd91
lea eax, [0x617cc7]
mov dword [edx + 4], eax
jmp 0x59cd9f
lea edi, [edx + 4]
lea eax, [0x617cc7]
call fcn.00463730
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], ebx
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov eax, ebx
call fcn.004637b0
mov eax, ebp
call fcn.004637b0
mov eax, ebp
mov ecx, ebx
call fcn.004637b0
mov eax, esi
call fcn.004637b0
mov eax, ebp
call fcn.004637b0
mov eax, ebp
mov ecx, ebx
call fcn.004637b0
mov eax, esi
call fcn.004637b0
mov eax, ebp
mov ecx, ebx
call fcn.004637b0
mov eax, esi
call fcn.004637b0
mov eax, esi
call fcn.004637b0
mov eax, ebx
mov ecx, edi
call fcn.004637b0
mov eax, ebx
mov ecx, edi
call fcn.004637b0
mov eax, ebx
mov ecx, edi
call fcn.004637b0
mov eax, esi
mov ecx, edi
call fcn.004637b0
lea eax, [0x5e1fa0]
mov dword [esp], eax
lea eax, [0x6614cc]
mov dword [esp + 4], eax
call fcn.00435720
inc ebx
mov ebp, dword [esp + 0x14]
shl ebp, 6
movzx eax, byte [esp + 0xf]
and eax, 0x3f
add eax, ebp
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x1c], ebx
mov ebx, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x1c]
cmp ebx, esi
jge 0x59cecf
add ebp, ebx
cmp edi, ebp
jbe 0x59cfbc
movzx ebp, byte [ecx + ebp]
xchg ebp, eax
mov byte [esp + 0xf], al
xchg ebp, eax
and ebp, 0xffffffc0
xchg ebp, eax
cmp al, 0x80
xchg ebp, eax
je 0x59ce36
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x1c
add ecx, ebx
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59ceaa
lea eax, [0x615328]
mov dword [edx + 4], eax
jmp 0x59ceb8
lea edi, [edx + 4]
lea eax, [0x615328]
call fcn.00463730
mov dword [edx + 0xc], ecx
movzx eax, byte [esp + 0xf]
movzx eax, al
mov dword [edx + 0x10], eax
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
cmp esi, 1
jne 0x59ceda
mov ebx, dword [esp + 0x14]
jmp 0x59cf0b
cmp esi, 2
jne 0x59ceed
mov ebx, dword [esp + 0x14]
cmp ebx, 0x80
jge 0x59cf0b
jmp 0x59cef1
mov ebx, dword [esp + 0x14]
cmp esi, 3
jne 0x59cefe
cmp ebx, 0x800
jge 0x59cf0b
cmp esi, 4
jne 0x59cf73
cmp ebx, 0x10000
jl 0x59cf73
mov ecx, ebp
lea ebp, [ebx - 0xd800]
cmp ebp, 0x7ff
jbe 0x59cf2e
cmp ebx, 0x10ffff
jg 0x59cf2e
mov esi, ecx
mov ecx, dword [esp + 0x10]
jmp 0x59c9b9
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x19
mov ebp, dword [0x7c78f0]
test ebp, ebp
jne 0x59cf56
lea eax, [0x613ba3]
mov dword [edx + 4], eax
jmp 0x59cf64
lea edi, [edx + 4]
lea eax, [0x613ba3]
call fcn.00463730
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], ebx
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov ecx, dword [edx + 0x80]
mov dword [edx], 2
mov dword [edx + 8], 0x22
mov ebx, dword [0x7c78f0]
test ebx, ebx
jne 0x59cf9b
lea eax, [0x617ea3]
mov dword [edx + 4], eax
jmp 0x59cfa9
lea edi, [edx + 4]
lea eax, [0x617ea3]
call fcn.00463730
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], 0xffffffff
mov byte [esp + 0x5c], 0
add esp, 0x50
ret
mov eax, ebp
mov ecx, edi
call fcn.004637b0
mov eax, ebp
mov ecx, edi
call fcn.004637b0
lea eax, [0x5e1fa0]
mov dword [esp], eax
lea eax, [0x6614c4]
mov dword [esp + 4], eax
call fcn.00435720
nop
call fcn.00462320
jmp fcn.0059c5c0