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

Disassembly:
sub esp, 0x78
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax]
mov eax, dword [ecx]
push esi
xor esi, esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], esi
cmp word [esp + 0x90], si
je 0x4f5b55
test byte [eax + 0x3c], 0x80
je 0x4f5b55
xor al, al
pop esi
add esp, 0x78
ret
mov edx, dword [esp + 0x84]
movzx eax, word [edx]
mov dword [esp + 0x50], eax
cmp ax, 0x3f
ja 0x4f5b4e
movzx ecx, ax
mov eax, 1
xor edx, edx
mov byte [esp + 6], 1
mov dword [esp + 0x24], ecx
call fcn.005543f0
add eax, 0xffffffff
push ebx
adc edx, 0xffffffff
push ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x30], esi
push edi
jmp 0x4f5bb0
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x54]
ja 0x4f6197
jb 0x4f5bce
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x50]
jae 0x4f6197
movzx eax, word [esp + 0x9c]
mov edx, dword [esp + 0x34]
cmp edx, eax
jg 0x4f6197
test edx, edx
jle 0x4f5bf8
mov ecx, dword [esp + 0x2c]
mov esi, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
or dword [esp + 0x40], esi
or dword [esp + 0x44], ecx
cmp edx, eax
jge 0x4f5c0b
mov eax, dword [esp + 0x94]
mov ecx, dword [eax + 0x18]
mov esi, dword [ecx + edx*4]
jmp 0x4f5c12
mov esi, dword [esp + 0xa0]
test dword [esi + 0x24], 0x400
mov dword [esp + 0x2c], esi
jne 0x4f6191
movzx eax, byte [esi + 0x10]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x8c]
mov ecx, dword [eax + 4]
shl edx, 4
mov edx, dword [edx + ecx + 0x38]
xor ecx, ecx
cmp dword [esp + 0x30], ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x18], ecx
jle 0x4f5d6d
mov dword [esp + 0x14], ecx
mov eax, 1
xor edx, edx
call fcn.005543f0
mov ebp, edx
mov ebx, eax
and eax, dword [esp + 0x1c]
mov ecx, ebp
and ecx, dword [esp + 0x20]
or eax, ecx
jne 0x4f5d51
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x14]
mov eax, dword [edx + ecx]
call fcn.004c6870
mov edi, eax
cmp byte [edi], 0x98
jne 0x4f5d51
mov eax, dword [esp + 0x38]
cmp dword [edi + 0x1c], eax
jne 0x4f5d51
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
movsx eax, word [edi + 0x20]
push 0x182
not edx
push edx
mov edx, dword [esp + 0x94]
not ecx
push ecx
mov ecx, dword [esp + 0x44]
push eax
push ecx
add edx, 0x148
xor ecx, ecx
call fcn.004f47c0
mov esi, eax
add esp, 0x14
test esi, esi
je 0x4f5d51
test byte [esi + 0x12], 0x82
je 0x4f5d49
cmp word [edi + 0x20], 0
jl 0x4f5d49
mov edx, dword [esp + 0x90]
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x8c]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + eax]
push edx
call fcn.004f0ea0
add esp, 4
test eax, eax
jne 0x4f5d18
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 8]
mov edi, dword [eax]
mov eax, dword [esp + 0x8c]
mov ecx, dword [eax]
push ecx
mov ecx, dword [esi]
call fcn.004f0ea0
add esp, 4
test eax, eax
jne 0x4f5d39
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 8]
mov eax, dword [eax]
push eax
push edi
call fcn.004bf990
add esp, 8
test eax, eax
jne 0x4f5d51
or dword [esp + 0x1c], ebx
or dword [esp + 0x20], ebp
mov ecx, dword [esp + 0x18]
add dword [esp + 0x14], 0x18
inc ecx
cmp ecx, dword [esp + 0x30]
mov dword [esp + 0x18], ecx
jl 0x4f5c53
mov esi, dword [esp + 0x2c]
mov eax, dword [esi + 0x24]
test eax, 0x1000
jne 0x4f606a
xor edx, edx
test eax, 0x100
je 0x4f5d93
xor edi, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x58], edx
lea eax, [edx + 1]
jmp 0x4f5dc1
mov edi, dword [esi + 0x1c]
mov dword [esp + 0x18], edi
cmp edi, edx
je 0x4f61f9
test byte [edi + 0x38], 4
jne 0x4f61f9
movzx ecx, word [edi + 0x32]
cmp byte [edi + 0x36], 0
movzx eax, word [edi + 0x34]
mov dword [esp + 0x58], ecx
setne byte [esp + 0x12]
movzx eax, ax
cmp eax, edx
mov byte [esp + 0x25], 0
mov byte [esp + 0x27], 0
mov byte [esp + 0x26], 0
mov dword [esp + 0x14], edx
mov dword [esp + 0x60], eax
jle 0x4f606a
mov dword [esp + 0x28], edx
movzx ecx, word [esi + 0x18]
cmp edx, ecx
jge 0x4f5e1c
cmp word [esi + 0x2a], 0
jne 0x4f5e1c
mov eax, dword [esi + 0x30]
mov eax, dword [eax + edx*4]
movzx eax, word [eax + 0x12]
test eax, 0x182
je 0x4f5e1c
test eax, 0x100
je 0x4f6049
mov byte [esp + 0x12], 0
jmp 0x4f6049
mov eax, dword [esp + 0x18]
test edi, edi
mov edi, dword [esp + 0x14]
je 0x4f5e46
mov edx, dword [eax + 4]
movsx esi, word [edx + edi*2]
mov edx, dword [eax + 0x1c]
mov dl, byte [edi + edx]
mov byte [esp + 0x13], dl
mov edx, dword [eax + 0xc]
movsx edx, word [edx + 0x20]
cmp esi, edx
jne 0x4f5e4e
jmp 0x4f5e4b
mov byte [esp + 0x13], 0
or esi, 0xffffffff
cmp byte [esp + 0x12], 0
je 0x4f5e72
test esi, esi
jl 0x4f5e72
cmp edi, ecx
jl 0x4f5e72
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 4]
lea ecx, [esi + esi*2]
cmp byte [edx + ecx*8 + 0x14], 0
jne 0x4f5e72
mov byte [esp + 0x12], 0
xor edi, edi
mov bl, 1
xor ebp, ebp
jmp 0x4f5e80
cmp edi, dword [esp + 0x30]
jge 0x4f5f8e
mov eax, 1
xor edx, edx
mov ecx, edi
call fcn.005543f0
and eax, dword [esp + 0x1c]
and edx, dword [esp + 0x20]
or eax, edx
jne 0x4f5f82
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 4]
mov eax, dword [ecx + ebp]
test eax, eax
je 0x4f5ee4
lea esp, [esp]
mov ecx, dword [eax + 4]
test ecx, 0x1000
je 0x4f5ee4
test ecx, 0x40000
je 0x4f5edd
mov edx, dword [eax + 0x14]
mov eax, dword [edx + 4]
mov eax, dword [eax]
jmp 0x4f5ee0
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x4f5ec0
test dword [esp + 0x98], 0x300
jne 0x4f5ef3
xor bl, bl
cmp esi, 0xffffffff
jl 0x4f5f12
cmp byte [eax], 0x98
jne 0x4f5f82
mov ecx, dword [esp + 0x38]
cmp dword [eax + 0x1c], ecx
jne 0x4f5f82
movsx edx, word [eax + 0x20]
cmp edx, esi
jmp 0x4f5f34
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
push ecx
mov ecx, dword [edx + 0x28]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x2c]
mov edx, dword [edx + ecx]
push edx
push eax
call fcn.004d1d50
add esp, 0xc
test eax, eax
jne 0x4f5f82
test esi, esi
jl 0x4f5fb9
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x8c]
mov eax, dword [edx]
mov ecx, dword [ecx + ebp]
push eax
call fcn.004f0ea0
add esp, 4
test eax, eax
jne 0x4f5f64
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0x20]
mov edx, dword [esp + 0x14]
mov ecx, dword [ecx + edx*4]
mov edx, dword [eax]
push ecx
push edx
call fcn.004bf990
add esp, 8
test eax, eax
je 0x4f5fb9
inc edi
add ebp, 0x18
test bl, bl
jne 0x4f5e80
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4f5f9f
movzx ecx, word [esp + 0x58]
cmp eax, ecx
jge 0x4f5fa4
mov byte [esp + 0x12], 0
cmp byte [esp + 0x26], 0
je 0x4f606a
mov byte [esp + 0x12], 1
jmp 0x4f6075
test dword [esp + 0x98], 0x100
jne 0x4f6026
cmp byte [esp + 0x25], 0
je 0x4f5fea
mov al, byte [esp + 0x13]
mov edx, dword [esp + 0x90]
xor al, byte [esp + 0x27]
mov edx, dword [edx + 4]
lea ecx, [edi + edi*2]
cmp al, byte [edx + ecx*8 + 0xc]
jne 0x4f5f8e
jmp 0x4f6026
mov ecx, dword [esp + 0x90]
mov edx, dword [ecx + 4]
lea eax, [edi + edi*2]
mov al, byte [edx + eax*8 + 0xc]
xor al, byte [esp + 0x13]
mov byte [esp + 0x27], al
je 0x4f6021
mov ecx, dword [esp + 0x34]
mov eax, 1
xor edx, edx
call fcn.005543f0
mov ecx, dword [esp + 0xa4]
or dword [ecx], eax
or dword [ecx + 4], edx
mov byte [esp + 0x25], 1
test esi, esi
jge 0x4f602f
mov byte [esp + 0x26], 1
mov eax, 1
xor edx, edx
mov ecx, edi
call fcn.005543f0
or dword [esp + 0x1c], eax
or dword [esp + 0x20], edx
mov edx, dword [esp + 0x14]
add dword [esp + 0x28], 0x18
inc edx
cmp edx, dword [esp + 0x60]
mov dword [esp + 0x14], edx
jge 0x4f5fa4
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
jmp 0x4f5de7
cmp byte [esp + 0x12], 0
je 0x4f6180
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
or dword [esp + 0x48], edx
or dword [esp + 0x4c], eax
xor ecx, ecx
cmp dword [esp + 0x30], ecx
mov dword [esp + 0x18], ecx
jle 0x4f6180
mov dword [esp + 0x28], ecx
jmp 0x4f60a0
mov eax, 1
xor edx, edx
call fcn.005543f0
mov ecx, edx
mov ebx, eax
and eax, dword [esp + 0x1c]
mov dword [esp + 0x84], ecx
and ecx, dword [esp + 0x20]
or eax, ecx
jne 0x4f6168
mov ecx, dword [esp + 0x90]
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x28]
mov esi, dword [eax + edx]
mov ecx, dword [esp + 0x8c]
add ecx, 0x44
push esi
push ecx
call fcn.004d4370
mov edi, eax
mov ebp, edx
mov edx, edi
add esp, 8
or edx, ebp
jne 0x4f6145
xor eax, eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x7c], eax
lea eax, [esp + 0x64]
push esi
push eax
mov byte [esp + 0x80], 1
mov dword [esp + 0x6c], 0x4c6a70
mov dword [esp + 0x70], 0x4c6b70
call fcn.004d13d0
add esp, 8
cmp byte [esp + 0x78], 0
je 0x4f6168
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
not eax
not ecx
and eax, edi
and ecx, ebp
or eax, ecx
jne 0x4f6168
mov ecx, dword [esp + 0x84]
or dword [esp + 0x1c], ebx
or dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
add dword [esp + 0x28], 0x18
inc ecx
cmp ecx, dword [esp + 0x30]
mov dword [esp + 0x18], ecx
jl 0x4f60a0
inc dword [esp + 0x34]
cmp byte [esp + 0x12], 0
jne 0x4f5bb0
jmp 0x4f6197
cmp byte [esi + 0x1d], 0
jne 0x4f61ab
mov edx, dword [esp + 0x50]
cmp dword [esp + 0x1c], edx
jne 0x4f61b7
mov eax, dword [esp + 0x54]
cmp dword [esp + 0x20], eax
jne 0x4f61b7
mov al, byte [esp + 0x5c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x78
ret
cmp byte [esp + 0x12], 0
jne 0x4f620d
mov ebx, dword [esp + 0x30]
dec ebx
test ebx, ebx
jle 0x4f61f9
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
nop
mov eax, 1
xor edx, edx
mov ecx, ebx
call fcn.005543f0
add eax, 0xffffffff
adc edx, 0xffffffff
mov ecx, eax
mov esi, edx
and ecx, edi
and esi, ebp
cmp ecx, eax
jne 0x4f61f4
cmp esi, edx
je 0x4f6203
dec ebx
test ebx, ebx
jg 0x4f61d0
pop edi
pop ebp
pop ebx
xor al, al
pop esi
add esp, 0x78
ret
pop edi
pop ebp
mov al, bl
pop ebx
pop esi
add esp, 0x78
ret
pop edi
pop ebp
pop ebx
or al, 0xff
pop esi
add esp, 0x78
ret