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

Disassembly:
mov ecx, dword [0x6cfe90]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x1c]
cmp eax, dword [ecx + 8]
jbe 0x5210bf
sub esp, 0x9c
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov edx, dword [esp + 0xa0]
mov ebx, dword [edx + 0x80]
mov dword [esp + 0x38], ebx
mov ebp, dword [edx + 0x84]
mov dword [esp + 0x34], ebp
mov esi, dword [edx + 0x88]
mov dword [esp + 0x30], esi
cmp dword [edx + 0x64], 2
jge 0x520a89
mov dword [esp], edx
mov dword [esp + 4], 2
call fcn.005187b0
movzx eax, byte [esp + 8]
test al, al
je 0x521087
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov ecx, dword [edx + 0x58]
mov edi, dword [edx + 0x60]
lea eax, [edi + 1]
cmp ecx, eax
jbe 0x5210b9
mov eax, dword [edx + 0x54]
lea edi, [edi + eax + 1]
cmp byte [edi], 0x3c
jne 0x520d2a
mov edi, dword [edx + 0x80]
lea eax, [edi + 1]
nop
mov dword [edx + 0x80], eax
mov eax, dword [edx + 0x88]
lea ecx, [eax + 1]
mov dword [edx + 0x88], ecx
mov ecx, dword [edx + 0x64]
lea esi, [ecx - 1]
mov dword [edx + 0x64], esi
mov esi, dword [edx + 0x58]
mov ebp, dword [edx + 0x60]
cmp ebp, esi
jae 0x5210b0
mov esi, dword [edx + 0x54]
movzx esi, byte [esi + ebp]
xchg esi, eax
test al, 0x80
xchg esi, eax
jne 0x520af5
mov esi, 1
jmp 0x520b3a
xchg esi, eax
mov byte [esp + 0x2b], al
xchg esi, eax
and esi, 0xffffffe0
xchg esi, eax
cmp al, 0xc0
xchg esi, eax
jne 0x520b0c
mov esi, 2
jmp 0x520b3a
movzx esi, byte [esp + 0x2b]
and esi, 0xfffffff0
xchg esi, eax
cmp al, 0xe0
xchg esi, eax
jne 0x520b22
mov esi, 3
jmp 0x520b3a
movzx esi, byte [esp + 0x2b]
and esi, 0xfffffff8
xchg esi, eax
cmp al, 0xf0
xchg esi, eax
jne 0x520b38
mov esi, 4
jmp 0x520b3a
xor esi, esi
add ebp, esi
mov dword [edx + 0x60], ebp
lea esi, [edi + 2]
lea edi, [eax + 2]
lea eax, [ecx - 2]
nop
mov dword [edx + 0x80], esi
mov dword [edx + 0x88], edi
mov dword [edx + 0x64], eax
mov ecx, dword [edx + 0x58]
cmp ecx, ebp
jbe 0x5210a9
mov eax, dword [edx + 0x54]
movzx eax, byte [ebp + eax]
test al, 0x80
jne 0x520b77
mov eax, 1
jmp 0x520baa
mov ecx, eax
and eax, 0xffffffe0
cmp al, 0xc0
jne 0x520b88
mov eax, 2
jmp 0x520baa
mov eax, ecx
and ecx, 0xfffffff0
cmp cl, 0xe0
jne 0x520b99
mov eax, 3
jmp 0x520baa
and eax, 0xfffffff8
cmp al, 0xf0
jne 0x520ba8
mov eax, 4
jmp 0x520baa
xor eax, eax
add eax, ebp
mov dword [edx + 0x60], eax
mov dword [esp], edx
mov byte [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x1c], ecx
lea ebp, [esp + 0x3c]
mov dword [esp + 0x20], ebp
call fcn.00521420
movzx eax, byte [esp + 0x24]
test al, al
je 0x520d1b
mov edx, dword [esp + 0xa0]
mov ecx, dword [edx + 0x58]
mov eax, dword [edx + 0x60]
cmp ecx, eax
jbe 0x5210a4
mov ebx, dword [edx + 0x54]
add ebx, eax
cmp byte [ebx], 0x3e
je 0x520cae
nop
mov dword [edx], 3
mov dword [edx + 0x24], 0x14
mov eax, dword [0x6cff38]
test eax, eax
je 0x520c42
mov eax, dword [edx + 0x20]
call fcn.00464ab0
mov dword [edi], eax
lea eax, [0x5800f2]
mov dword [edx + 0x20], eax
mov eax, dword [esp + 0x38]
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x34]
mov dword [edx + 0x2c], eax
mov eax, dword [esp + 0x30]
mov dword [edx + 0x30], eax
mov dword [edx + 8], 0x1d
mov eax, dword [0x6cff38]
test eax, eax
je 0x520c7b
mov eax, dword [edx + 4]
call fcn.00464ab0
mov dword [edi], eax
lea eax, [0x5834ee]
mov dword [edx + 4], eax
mov eax, dword [edx + 0x80]
mov ecx, dword [edx + 0x84]
mov ebx, dword [edx + 0x88]
mov dword [edx + 0x14], eax
mov dword [edx + 0x18], ecx
mov dword [edx + 0x1c], ebx
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
inc dword [edx + 0x80]
inc dword [edx + 0x88]
dec dword [edx + 0x64]
mov ecx, dword [edx + 0x58]
mov eax, dword [edx + 0x60]
cmp ecx, eax
jbe 0x52109f
mov ecx, dword [edx + 0x54]
movzx ecx, byte [ecx + eax]
test cl, 0x80
jne 0x520cde
mov ecx, 1
jmp 0x520d11
mov ebx, ecx
and ecx, 0xffffffe0
cmp cl, 0xc0
jne 0x520cef
mov ecx, 2
jmp 0x520d11
mov ecx, ebx
and ebx, 0xfffffff0
cmp bl, 0xe0
jne 0x520d00
mov ecx, 3
jmp 0x520d11
and ecx, 0xfffffff8
cmp cl, 0xf0
jne 0x520d0f
mov ecx, 4
jmp 0x520d11
xor ecx, ecx
add eax, ecx
mov dword [edx + 0x60], eax
jmp 0x520e94
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
mov dword [esp], edx
mov byte [esp + 4], 0
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], esi
lea eax, [esp + 0x48]
mov dword [esp + 0x14], eax
call fcn.005210d0
movzx eax, byte [esp + 0x18]
test al, al
je 0x521078
mov edx, dword [esp + 0x4c]
test edx, edx
jbe 0x521096
mov eax, dword [esp + 0x48]
cmp byte [eax], 0x21
jne 0x520de3
cmp edx, 1
jle 0x520de3
lea ecx, [edx + eax - 1]
cmp byte [ecx], 0x21
jne 0x520de3
mov eax, dword [esp + 0xa0]
mov dword [esp], eax
mov byte [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x18], edx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
lea ebp, [esp + 0x3c]
mov dword [esp + 0x20], ebp
call fcn.00521420
movzx eax, byte [esp + 0x24]
test al, al
jne 0x520e8d
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0xa0]
mov dword [esp], ebx
mov byte [esp + 4], 0
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x1c], edx
lea ebp, [esp + 0x3c]
mov dword [esp + 0x20], ebp
call fcn.00521420
movzx eax, byte [esp + 0x24]
test al, al
je 0x521069
lea eax, [0x5553c0]
mov dword [esp], eax
call fcn.0040ca70
mov eax, dword [esp + 4]
mov byte [eax], 0x21
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], 1
mov dword [esp + 0x50], 1
mov ecx, dword [esp + 0x40]
test ecx, ecx
jne 0x520e8d
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], 1
mov dword [esp + 0x44], 1
mov edx, dword [esp + 0xa0]
mov eax, dword [edx + 0x64]
test eax, eax
jg 0x520ebf
mov dword [esp], edx
mov dword [esp + 4], 1
call fcn.005187b0
movzx eax, byte [esp + 8]
test al, al
je 0x52105a
mov edx, dword [esp + 0xa0]
mov eax, dword [edx + 0x54]
mov ecx, dword [edx + 0x58]
mov ebx, dword [edx + 0x5c]
mov ebp, dword [edx + 0x60]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ebp
call fcn.005281b0
movzx eax, byte [esp + 0x10]
test al, al
je 0x520fc5
mov eax, dword [esp + 0xa0]
mov ecx, dword [eax + 0x88]
mov dword [esp + 0x2c], ecx
mov edx, dword [eax + 0x80]
mov eax, dword [eax + 0x84]
lea edi, [esp + 0x54]
lea esi, [0x5b6b30]
call fcn.0046510c
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], edx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ecx
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], edx
mov edi, dword [esp + 0xa4]
test byte [edi], al
mov eax, dword [0x6cff38]
test eax, eax
je 0x520fad
lea eax, [0x56faa0]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x54]
mov dword [esp + 8], eax
call fcn.004113a0
mov edi, dword [esp + 0xa4]
lea esi, [esp + 0x54]
call fcn.0046510c
mov byte [esp + 0xa8], 1
add esp, 0x9c
ret
nop
mov eax, dword [esp + 0xa0]
mov dword [eax], 3
mov dword [eax + 0x24], 0x14
mov ecx, dword [0x6cff38]
test ecx, ecx
je 0x520fee
mov ecx, dword [eax + 0x20]
call fcn.00464ab0
mov dword [edi], ecx
lea ecx, [0x5800f2]
mov dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 0x28], ecx
mov ecx, dword [esp + 0x34]
mov dword [eax + 0x2c], ecx
mov ecx, dword [esp + 0x30]
mov dword [eax + 0x30], ecx
mov dword [eax + 8], 0x2e
mov ecx, dword [0x6cff38]
test ecx, ecx
je 0x521027
mov ecx, dword [eax + 4]
call fcn.00464ab0
mov dword [edi], ecx
lea ecx, [0x587b0f]
mov dword [eax + 4], ecx
mov ecx, dword [eax + 0x80]
mov edx, dword [eax + 0x84]
mov ebx, dword [eax + 0x88]
mov dword [eax + 0x14], ecx
mov dword [eax + 0x18], edx
mov dword [eax + 0x1c], ebx
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
mov byte [esp + 0xa8], 0
add esp, 0x9c
ret
xor eax, eax
mov ecx, eax
call fcn.00464b30
call fcn.00464b30
call fcn.00464b30
mov eax, ebp
call fcn.00464b30
mov eax, ebp
mov ecx, esi
call fcn.00464b30
call fcn.00464b30
nop
call fcn.004636b0
jmp fcn.005209e0