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

Disassembly:
sub esp, 0xcc
mov dword [esp + 0x1c], edx
mov edx, ecx
push ebx
push ebp
xor ecx, ecx
mov dword [esp + 0x2c], edx
mov eax, dword [edx]
xor ebp, ebp
push esi
mov esi, dword [edx + 8]
push edi
mov eax, dword [eax]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ebp
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x64], esi
cmp byte [eax + 0x57], cl
je 0x4ff832
mov eax, 7
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xcc
ret
mov eax, dword [esi + 0x2c]
mov edx, 0x18
movzx ecx, word [esi + 0x18]
test al, 0x20
mov ebx, dword [esp + 0xe0]
mov dword [esp + 0x48], eax
mov eax, 0x1bf
cmove edx, eax
movzx edi, cx
movzx eax, word [esi + 0x1a]
mov dword [esp + 0x58], eax
movzx eax, word [esi + 0x1c]
mov dword [esp + 0x5c], eax
movzx eax, word [esi + 0x32]
mov dword [esp + 0x60], eax
movzx eax, word [esi + 0x30]
mov dword [esp + 0x40], ecx
mov ecx, edx
mov dword [esp + 0x3c], eax
and ecx, 0xffffffc3
mov eax, dword [esi]
test byte [ebx + 0x38], 4
mov dword [esp + 0x50], eax
mov eax, dword [esi + 4]
cmove ecx, edx
mov dword [esp + 0x54], eax
movzx eax, word [esi + 0x16]
push ebx
push ecx
mov ecx, dword [esp + 0x3c]
mov ebp, eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x34]
push edi
mov edx, dword [ecx + 4]
lea ecx, [esp + 0x84]
mov dword [esp + 0x7c], ebp
push dword [eax + 0x2c]
mov dword [esp + 0x2c], edi
call fcn.004fcdb0
mov ebp, eax
add esp, 0x10
xor eax, eax
mov word [esi + 0x12], ax
mov eax, dword [ebx + 8]
movzx eax, word [eax]
mov ecx, eax
mov dword [esp + 0x6c], ecx
cmp cx, 0xa
jg 0x4ff8e3
xor eax, eax
jmp 0x4ff8f6
cwde
cdq
push edx
push eax
call fcn.0046ffd0
add esp, 8
sub ax, 0x21
movzx eax, ax
mov dword [esp + 0x24], eax
mov ecx, 0x100
movzx eax, ax
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x30], eax
test ebp, ebp
je 0x50003c
movzx edx, word [ebp + 0xc]
mov eax, edx
mov dword [esp + 0x20], 0
mov dword [esp + 0x38], eax
cmp ax, cx
je 0x4ff936
test byte [ebp + 0xa], 0x80
je 0x4ff962
mov eax, dword [ebx + 4]
movsx ecx, word [eax + edi*2]
test ecx, ecx
js 0x4ff959
mov eax, dword [ebx + 0xc]
add ecx, ecx
mov eax, dword [eax + 4]
test dword [eax + ecx*8 + 4], 0xf
jne 0x500021
jmp 0x4ff962
cmp ecx, 0xffffffff
je 0x500021
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
and ecx, dword [ebp + 0x20]
and eax, dword [ebp + 0x24]
or ecx, eax
jne 0x500021
mov eax, 0x100
test word [ebp + 0xa], ax
je 0x4ff98a
cmp edx, 0x10
je 0x500021
mov eax, dword [esp + 0x2c]
test byte [eax + 0x24], 8
je 0x4ff9a1
mov eax, dword [ebp]
test byte [eax + 4], 1
je 0x500021
cmp byte [ebx + 0x36], 0
je 0x4ff9ba
movzx eax, word [ebx + 0x32]
dec eax
cmp edi, eax
jne 0x4ff9ba
mov ecx, dword [esp + 0x34]
or byte [ecx + 0x10], 2
jmp 0x4ff9c2
mov eax, dword [esp + 0x34]
or byte [eax + 0x10], 1
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x3c]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x40]
mov word [esi + 0x18], ax
mov eax, dword [esp + 0x58]
mov word [esi + 0x1a], ax
mov eax, dword [esp + 0x5c]
movzx edi, cx
mov word [esi + 0x1c], ax
inc edi
movzx eax, word [esi + 0x34]
mov word [esi + 0x30], cx
cmp eax, edi
jae 0x4ffa49
mov ecx, dword [esp + 0x28]
add edi, 7
and edi, 0xfffffff8
push 0
lea eax, [edi*4]
push eax
call fcn.0046b920
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x50003c
movzx eax, word [esi + 0x34]
shl eax, 2
push eax
push dword [esi + 0x38]
push ebx
call fcn.005487c0
mov edx, dword [esi + 0x38]
lea eax, [esi + 0x40]
add esp, 0xc
cmp edx, eax
je 0x4ffa42
mov ecx, dword [esp + 0x28]
call fcn.0046b530
mov dword [esi + 0x38], ebx
mov word [esi + 0x34], di
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov edi, dword [esp + 0x50]
mov dword [eax + ecx*4], ebp
mov ax, word [esi + 0x30]
mov ecx, dword [esi + 8]
inc ax
mov word [esi + 0x30], ax
not ecx
or edi, dword [ebp + 0x20]
mov edx, dword [ebp + 0x24]
and edi, ecx
or edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x38]
movzx ebx, ax
mov eax, dword [esi + 0xc]
not eax
mov dword [esi], edi
and edx, eax
mov dword [esi + 4], edx
test cl, 1
je 0x4ffbc5
mov edx, dword [ebp]
test dword [edx + 4], 0x800
je 0x4ffb12
lea edi, [ebx - 1]
mov dword [esp + 0x20], 0x2e
xor ecx, ecx
test edi, edi
jle 0x4ffb33
mov ebx, dword [esi + 0x38]
mov esi, dword [esp + 0x20]
mov eax, dword [ebx + ecx*4]
test eax, eax
je 0x4ffacc
cmp dword [eax], edx
mov dword [esp + 0x20], 0
cmove esi, dword [esp + 0x20]
inc ecx
cmp ecx, edi
jl 0x4ffab6
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0xe0]
test byte [eax + 0x38], 0x80
je 0x4ffb83
cmp word [esp + 0x24], 0xa
jl 0x4ffb83
mov eax, dword [eax + 8]
mov edx, dword [esp + 0x1c]
movzx edi, cx
movzx ebx, word [eax + edx*2]
cmp di, 0xa
jg 0x4ffb3a
xor eax, eax
jmp 0x4ffb4f
mov eax, dword [edx + 0x14]
test eax, eax
je 0x4ffad9
mov eax, dword [eax]
test eax, eax
je 0x4ffad9
cdq
push edx
push eax
call fcn.0046ffd0
movsx ecx, ax
add esp, 8
mov dword [esp + 0x20], ecx
jmp 0x4ffadd
mov ecx, 0x2e
jmp 0x4ffadd
movsx eax, di
cdq
push edx
push eax
call fcn.0046ffd0
add esp, 8
sub ax, 0x21
movzx eax, ax
sub eax, edi
sub eax, dword [esp + 0x24]
add eax, 0xa
add eax, ebx
test ax, ax
jns 0x4ffb83
cmp word [esp + 0x30], 2
jge 0x500016
mov eax, dword [esp + 0x28]
test dword [eax + 0x50], 0x20000
jne 0x500016
or dword [esi + 0x2c], 0x100000
or dword [esi + 0x2c], 4
mov edi, dword [esp + 0xe0]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esi + 0x2c]
test bl, 2
je 0x4ffe18
movzx eax, word [esi + 0x16]
movsx edi, ax
test ecx, ecx
je 0x4ffd9d
movzx ecx, word [ecx + 8]
test cx, cx
jg 0x4ffd90
add eax, ecx
jmp 0x4ffd9d
test cl, 0x82
je 0x4ffc55
mov ebx, dword [esp + 0xe0]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esi + 0x2c]
or edx, 1
mov eax, dword [ebx + 4]
movsx eax, word [eax + ecx*2]
mov dword [esi + 0x2c], edx
cmp eax, 0xffffffff
je 0x4ffc2c
mov ecx, edx
test eax, eax
js 0x4ffc37
cmp word [esp + 0x30], 0
jne 0x4ffc37
movzx eax, word [ebx + 0x32]
mov edi, eax
dec eax
cmp dword [esp + 0x1c], eax
jne 0x4ffc37
test byte [ebx + 0x38], 8
jne 0x4ffc2c
cmp edi, 1
jne 0x4ffc22
cmp byte [ebx + 0x36], 0
je 0x4ffc22
cmp word [esp + 0x38], 2
je 0x4ffc2c
mov ecx, edx
or ecx, 0x10000
jmp 0x4ffc34
mov ecx, edx
or ecx, 0x1000
mov dword [esi + 0x2c], ecx
cmp byte [esp + 0x91], 1
mov edi, ebx
jbe 0x4ffb8e
or ecx, 0x200000
mov dword [esi + 0x2c], ecx
jmp 0x4ffb8e
mov eax, dword [esi + 0x2c]
test ecx, 0x100
je 0x4ffc6b
or eax, 8
mov dword [esi + 0x2c], eax
jmp 0x4ffb87
mov edi, dword [esp + 0xe0]
test cl, 0x24
mov ecx, dword [esp + 0x4c]
push ebp
push dword [esp + 0x20]
push edi
je 0x4ffd4c
or eax, 0x22
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 0x2c]
call fcn.004ff5c0
mov word [esi + 0x1a], ax
xor edx, edx
mov eax, 0x100
mov dword [esp + 0x20], edx
add esp, 0xc
mov ecx, ebp
mov dword [esp + 0x18], ecx
test word [ebp + 0xa], ax
je 0x4ffb96
movzx edi, word [esi + 0x30]
lea edx, [ebp + 0x30]
movzx eax, word [esi + 0x34]
inc edi
mov dword [esp + 0x14], edx
cmp eax, edi
jae 0x4ffd25
mov ecx, dword [esp + 0x28]
add edi, 7
and edi, 0xfffffff8
push 0
lea eax, [edi*4]
push eax
call fcn.0046b920
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x50003c
movzx eax, word [esi + 0x34]
shl eax, 2
push eax
push dword [esi + 0x38]
push ebx
call fcn.005487c0
mov edx, dword [esi + 0x38]
lea eax, [esi + 0x40]
add esp, 0xc
cmp edx, eax
je 0x4ffd1a
mov ecx, dword [esp + 0x28]
call fcn.0046b530
mov edx, dword [esp + 0x14]
mov dword [esi + 0x38], ebx
mov word [esi + 0x34], di
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov edi, dword [esp + 0xe0]
mov dword [eax + ecx*4], edx
mov eax, 1
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x10
mov word [esi + 0x1c], ax
jmp 0x4ffb92
or eax, 0x12
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 0x2c]
call fcn.004ff5c0
add esp, 0xc
mov word [esi + 0x1c], ax
test byte [esi + 0x2c], 0x20
mov edx, ebp
mov dword [esp + 0x14], edx
je 0x4ffd85
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov ecx, dword [eax + ecx*4 - 8]
mov dword [esp + 0x18], ecx
jmp 0x4ffb96
xor ecx, ecx
mov dword [esp + 0x18], ecx
jmp 0x4ffb96
mov ecx, dword [esp + 0x18]
test byte [ecx + 0xa], 0x80
jne 0x4ffd9d
sub eax, 0x14
mov ebp, dword [esp + 0x14]
movzx ecx, ax
test edx, edx
je 0x4ffdc1
movzx edx, word [edx + 8]
test dx, dx
jg 0x4ffdb5
add eax, edx
jmp 0x4ffdbe
test byte [ebp + 0xa], 0x80
jne 0x4ffdc1
add eax, 0xffffffec
movzx ecx, ax
mov eax, dword [esp + 0x18]
movzx edx, cx
test eax, eax
je 0x4ffde4
cmp word [eax + 8], 0
jle 0x4ffde4
test ebp, ebp
je 0x4ffde4
cmp word [ebp + 8], 0
jle 0x4ffde4
lea eax, [ecx - 0x14]
movzx edx, ax
xor eax, eax
cmp dword [esp + 0x18], eax
setne al
sub edi, eax
xor eax, eax
test ebp, ebp
setne al
sub edi, eax
cmp dx, 0xa
mov eax, 0xa
cmovl edx, eax
movzx eax, dx
cmp eax, edi
mov edx, eax
movzx eax, di
cmovge edx, eax
movzx eax, dx
mov ebp, eax
jmp 0x4ffe75
inc word [esi + 0x18]
movzx ecx, word [ebp + 8]
movzx edx, word [esi + 0x18]
test cx, cx
jg 0x4ffe4a
mov eax, dword [edi + 4]
mov ebp, dword [esp + 0x1c]
cmp word [eax + ebp*2], 0
jl 0x4ffe4a
mov ax, word [esi + 0x16]
sub ax, word [esp + 0x20]
add ax, cx
movzx eax, ax
mov ebp, eax
jmp 0x4ffe75
mov eax, dword [edi + 8]
mov cx, word [esi + 0x16]
sub cx, word [eax + edx*2 - 2]
add cx, word [eax + edx*2]
test dword [esp + 0x38], 0x100
movzx eax, cx
mov ecx, eax
mov word [esi + 0x16], ax
mov ebp, eax
je 0x4ffe79
lea eax, [ecx + 0xa]
movzx ebp, ax
mov word [esi + 0x16], ax
movzx eax, bp
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x10]
movsx edi, word [eax + 0x28]
mov eax, dword [esp + 0xe0]
movsx ecx, word [eax + 0x30]
mov eax, ecx
shl eax, 4
sub eax, ecx
cdq
idiv edi
lea ecx, [eax + ebp]
lea eax, [ecx + 1]
movsx ecx, cx
movzx edi, ax
inc ecx
mov eax, dword [esp + 0x68]
movsx edx, ax
cmp word [esp + 0x24], di
jl 0x4ffee6
lea eax, [ecx + 0x31]
cmp edx, eax
jle 0x4ffec8
mov eax, dword [esp + 0x24]
jmp 0x4fff09
lea eax, [ecx + 0x1f]
cmp edx, eax
jle 0x4ffed6
mov eax, dword [esp + 0x24]
inc eax
jmp 0x4fff09
sub edx, ecx
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ax, word [esp + 0x24]
jmp 0x4fff09
lea eax, [edx + 0x31]
cmp ecx, eax
jle 0x4ffef1
mov ecx, edi
jmp 0x4fff0c
lea eax, [edx + 0x1f]
cmp ecx, eax
jle 0x4ffefd
lea eax, [edi + 1]
jmp 0x4fff09
sub ecx, edx
movzx eax, byte [ecx + str._n_n_t_t_b_b_a_a_a]
add ax, di
movzx ecx, ax
movzx eax, cx
test ebx, 0x140
jne 0x4fff7a
lea eax, [ebp + 0x10]
movsx edi, bp
movzx ebx, ax
add edi, 0x10
movsx edx, cx
cmp cx, bx
jl 0x4fff51
lea eax, [edi + 0x31]
cmp edx, eax
jle 0x4fff37
movzx eax, cx
jmp 0x4fff77
lea eax, [edi + 0x1f]
cmp edx, eax
jle 0x4fff43
lea eax, [ecx + 1]
jmp 0x4fff74
sub edx, edi
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ax, cx
jmp 0x4fff74
lea eax, [edx + 0x31]
cmp edi, eax
jle 0x4fff5c
mov eax, ebx
jmp 0x4fff77
lea eax, [edx + 0x1f]
cmp edi, eax
jle 0x4fff68
lea eax, [ebx + 1]
jmp 0x4fff74
sub edi, edx
movzx eax, byte [edi + str._n_n_t_t_b_b_a_a_a]
add ax, bx
movzx eax, ax
movzx eax, ax
mov ecx, dword [esp + 0x20]
mov edx, esi
push dword [esp + 0x6c]
movzx edi, cx
add eax, edi
add eax, dword [esp + 0x34]
mov word [esi + 0x14], ax
lea eax, [edi + ebp]
mov ebp, dword [esp + 0x38]
add eax, dword [esp + 0x34]
mov word [esi + 0x16], ax
mov ecx, dword [ebp + 4]
call fcn.004ff3e0
add esp, 4
mov edx, esi
mov ecx, ebp
call fcn.004ff120
mov ecx, dword [esp + 0x70]
mov ebx, dword [esp + 0xe0]
movzx edx, cx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2c]
test al, 2
movzx ecx, cx
cmove edx, ecx
mov word [esi + 0x16], dx
test al, 0x10
jne 0x50000c
movzx eax, word [esi + 0x18]
cmp ax, word [ebx + 0x34]
jae 0x50000c
cmp ax, word [ebx + 0x32]
jb 0x4ffff6
mov eax, dword [ebx + 0x38]
and al, 3
cmp al, 2
je 0x50000c
mov eax, dword [esp + 0x30]
mov ecx, ebp
mov edx, dword [esp + 0x2c]
add eax, edi
push eax
push ebx
call fcn.004ff7e0
add esp, 8
mov eax, dword [esp + 0x44]
mov word [esi + 0x16], ax
jmp 0x50001d
mov ebx, dword [esp + 0xe0]
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x78]
call fcn.004fca90
cmp dword [esp + 0x10], 0
mov ebp, eax
mov ecx, 0x100
je 0x4ff911
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x60]
mov dword [esi], eax
mov eax, dword [esp + 0x54]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x58]
mov word [esi + 0x1a], ax
mov eax, dword [esp + 0x5c]
mov word [esi + 0x1c], ax
mov eax, dword [esp + 0x48]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x44]
mov word [esi + 0x16], ax
mov eax, dword [esp + 0x3c]
mov word [esi + 0x18], bx
mov word [esi + 0x32], cx
mov word [esi + 0x30], ax
cmp bx, cx
jne 0x5001b9
mov ebp, dword [esp + 0xe0]
mov edx, dword [esp + 0x1c]
movzx ecx, word [ebp + 0x32]
lea eax, [edx + 1]
cmp eax, ecx
jae 0x5001b9
mov eax, dword [esp + 0x3c]
movzx edi, ax
cmp bx, di
jne 0x5001b9
mov eax, dword [ebp + 0x38]
test al, 0x40
jne 0x5001b9
test al, al
jns 0x5001b9
mov ecx, dword [esp + 0x28]
test dword [ecx + 0x50], 0x4000
jne 0x5001b9
mov eax, dword [ebp + 8]
cmp word [eax + edx*2 + 2], 0x2a
jl 0x5001b9
movzx eax, word [esi + 0x34]
inc edi
cmp eax, edi
jae 0x500147
add edi, 7
and edi, 0xfffffff8
push 0
lea eax, [edi*4]
push eax
call fcn.0046b920
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x4ff822
movzx eax, word [esi + 0x34]
shl eax, 2
push eax
push dword [esi + 0x38]
push ebx
call fcn.005487c0
mov edx, dword [esi + 0x38]
lea eax, [esi + 0x40]
add esp, 0xc
cmp edx, eax
je 0x500138
mov ecx, dword [esp + 0x28]
call fcn.0046b530
mov edx, dword [esp + 0x1c]
mov dword [esi + 0x38], ebx
mov ebx, dword [esp + 0x40]
mov word [esi + 0x34], di
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
inc word [esi + 0x18]
inc word [esi + 0x32]
mov dword [esp + 0x10], 0
mov dword [eax + ecx*4], 0
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x8000
mov eax, dword [ebp + 8]
mov cx, word [eax + edx*2]
sub cx, word [eax + edx*2 + 2]
mov edx, dword [esp + 0x2c]
movzx eax, cx
mov ecx, dword [esp + 0x30]
sub word [esi + 0x16], ax
add ecx, 5
add eax, ecx
mov ecx, dword [esp + 0x34]
push eax
push ebp
call fcn.004ff7e0
mov eax, dword [esp + 0x4c]
add esp, 8
mov word [esi + 0x16], ax
mov eax, dword [esp + 0x60]
mov word [esi + 0x32], ax
mov eax, dword [esp + 0x48]
mov word [esi + 0x18], bx
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xcc
ret