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

Disassembly:
sub esp, 0xcc
mov eax, dword [0x6d6ec0]
xor eax, esp
mov dword [esp + 0xc8], eax
mov edx, dword [esp + 0xd0]
push ebx
mov ebx, dword [esp + 0xdc]
push ebp
mov eax, dword [edx]
mov ebp, dword [esp + 0xdc]
push esi
mov esi, dword [edx + 8]
mov eax, dword [eax]
push edi
xor edi, edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x24], ebp
mov ecx, dword [eax]
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x68], esi
cmp dword [eax + 0x24], ecx
je 0x5f77ef
mov eax, dword [eax + 0xc]
jmp 0x5f8007
mov eax, dword [esi + 0x2c]
mov ecx, 0x18
mov edi, dword [ebx + 0x38]
test al, 0x20
mov dword [esp + 0x44], eax
mov eax, 0x1bf
cmove ecx, eax
test edi, 0x104
je 0x5f7832
mov edx, ecx
mov eax, edi
and edx, 0xffffffc3
test al, 4
cmove edx, ecx
mov ecx, edx
test edi, 0x100
je 0x5f7832
test byte [ebp + 0x28], 2
jne 0x5f7832
and ecx, 0xffffff7c
movzx edx, word [esi + 0x1a]
movzx eax, word [esi + 0x18]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x54], edx
movzx edx, word [esi + 0x1c]
mov dword [esp + 0x58], edx
movzx edx, word [esi + 0x32]
mov dword [esp + 0x60], edx
movzx edx, word [esi + 0x30]
mov dword [esp + 0x5c], edx
movzx edx, dx
push ebx
push ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x6c], edx
mov edx, dword [esi]
movzx eax, ax
push eax
push dword [ebp + 0x2c]
mov dword [esp + 0x5c], edx
mov edx, dword [esi + 4]
push dword [edi + 4]
mov dword [esp + 0x64], edx
movzx edx, word [esi + 0x16]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x8c]
mov dword [esp + 0x50], edx
movzx edx, dx
push eax
mov dword [esp + 0x88], edx
call fcn.005fb440
mov ebp, eax
add esp, 0x18
xor eax, eax
mov word [esi + 0x12], ax
mov ecx, dword [ebx + 8]
movzx ecx, word [ecx]
mov eax, ecx
mov dword [esp + 0x6c], eax
cmp ax, 0xa
jg 0x5f78c8
mov dword [esp + 0x34], 0
jmp 0x5f78e1
movsx eax, cx
cdq
push edx
push eax
call fcn.005bca40
add esp, 8
sub ax, 0x21
movzx eax, ax
mov dword [esp + 0x34], eax
test ebp, ebp
je 0x5f7ee0
movzx edx, word [ebp + 0xc]
xor ecx, ecx
mov eax, edx
mov dword [esp + 0x10], ecx
mov ecx, 0x100
mov dword [esp + 0x30], eax
cmp ax, cx
je 0x5f7909
test byte [ebp + 0xa], 0x80
je 0x5f7939
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x20]
movsx ecx, word [eax + ecx*2]
test ecx, ecx
js 0x5f7930
mov eax, dword [ebx + 0xc]
add ecx, ecx
mov eax, dword [eax + 4]
test dword [eax + ecx*8 + 4], 0xf
jne 0x5f7ec6
jmp 0x5f7939
cmp ecx, 0xffffffff
je 0x5f7ec6
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x24]
and ecx, dword [esi + 8]
and eax, dword [esi + 0xc]
or ecx, eax
jne 0x5f7ec6
mov eax, 0x100
test word [ebp + 0xa], ax
je 0x5f7961
cmp edx, 0x10
je 0x5f7ec6
mov eax, dword [esp + 0x24]
mov cl, byte [eax + 0x24]
test cl, 0x58
je 0x5f799e
mov eax, dword [ebp]
mov edx, dword [eax + 4]
test dl, 3
je 0x5f7ec6
mov edi, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
cmp eax, dword [edi + 0x2c]
mov edi, dword [esp + 0x18]
jne 0x5f7ec6
test cl, 0x18
je 0x5f799e
test dl, 2
jne 0x5f7ec6
cmp byte [ebx + 0x36], 0
je 0x5f79b5
movzx eax, word [ebx + 0x32]
dec eax
cmp dword [esp + 0x20], eax
jne 0x5f79b5
or byte [edi + 0x10], 2
jmp 0x5f79b9
or byte [edi + 0x10], 1
mov eax, dword [esp + 0x44]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x40]
mov word [esi + 0x18], ax
mov eax, dword [esp + 0x54]
mov word [esi + 0x1a], ax
mov eax, dword [esp + 0x58]
mov word [esi + 0x1c], ax
mov eax, dword [esp + 0x5c]
mov word [esi + 0x30], ax
mov eax, dword [esp + 0x64]
cmp ax, word [esi + 0x34]
jb 0x5f7a04
movzx eax, ax
inc eax
push eax
push esi
push dword [esp + 0x40]
call fcn.005f97c0
add esp, 0xc
test eax, eax
jne 0x5f7ee0
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov edi, dword [esp + 0x4c]
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
mov edx, dword [ebp + 0x24]
or edi, dword [ebp + 0x20]
or edx, dword [esp + 0x50]
and edi, ecx
movzx ebx, ax
mov eax, dword [esi + 0xc]
not eax
mov dword [esi], edi
and edx, eax
mov eax, dword [esp + 0x30]
mov dword [esi + 4], edx
test al, 1
je 0x5f7b4e
mov edx, dword [ebp]
test dword [edx + 4], 0x1000
je 0x5f7aca
mov ecx, 0x2e
lea edi, [ebx - 1]
mov dword [esp + 0x10], ecx
xor ecx, ecx
test edi, edi
jle 0x5f7aeb
mov ebx, dword [esi + 0x38]
mov esi, dword [esp + 0x10]
mov eax, dword [ebx + ecx*4]
test eax, eax
je 0x5f7a87
cmp dword [eax], edx
mov dword [esp + 0x10], 0
cmove esi, dword [esp + 0x10]
inc ecx
cmp ecx, edi
jl 0x5f7a71
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
test byte [ecx + 0x38], 0x80
je 0x5f7b3e
cmp word [esp + 0x34], 0xa
jl 0x5f7b3e
mov eax, dword [ecx + 8]
mov ecx, dword [esp + 0x20]
movzx edi, dx
movzx ebx, word [eax + ecx*2]
cmp di, 0xa
jg 0x5f7af2
xor eax, eax
jmp 0x5f7b07
mov eax, dword [edx + 0x14]
test eax, eax
je 0x5f7a94
mov eax, dword [eax]
test eax, eax
je 0x5f7a94
cdq
push edx
push eax
call fcn.005bca40
movsx edx, ax
add esp, 8
mov dword [esp + 0x10], edx
jmp 0x5f7a98
mov edx, 0x2e
jmp 0x5f7a98
movsx eax, di
cdq
push edx
push eax
call fcn.005bca40
add esp, 8
sub ax, 0x21
movzx eax, ax
sub eax, edi
sub eax, dword [esp + 0x34]
add eax, 0xa
add eax, ebx
test ax, ax
jns 0x5f7b3e
cmp word [esp + 0xec], 2
jge 0x5f7ebe
mov eax, dword [esp + 0x38]
test dword [eax + 0x50], 0x20000
jne 0x5f7ebe
or dword [esi + 0x2c], 0x100000
or dword [esi + 0x2c], 4
mov edx, dword [esi + 0x2c]
mov ebx, dword [esp + 0x14]
jmp 0x5f7c9a
mov ebx, dword [esp + 0x14]
test al, 0x82
je 0x5f7bdb
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x20]
movsx eax, word [eax + ecx*2]
mov ecx, dword [esi + 0x2c]
or ecx, 1
mov dword [esi + 0x2c], ecx
cmp eax, 0xffffffff
je 0x5f7bb4
mov edx, ecx
test eax, eax
js 0x5f7bbf
cmp word [esp + 0xec], 0
jne 0x5f7bbf
movzx eax, word [ebx + 0x32]
mov edi, eax
dec eax
cmp dword [esp + 0x20], eax
jne 0x5f7bbf
test byte [ebx + 0x38], 8
jne 0x5f7bb4
cmp edi, 1
jne 0x5f7baa
cmp byte [ebx + 0x36], 0
je 0x5f7baa
cmp word [esp + 0x30], 2
je 0x5f7bb4
mov edx, ecx
or edx, 0x10000
jmp 0x5f7bbc
mov edx, ecx
or edx, 0x1000
mov dword [esi + 0x2c], edx
cmp byte [esp + 0x91], 1
jbe 0x5f7c9a
or edx, 0x200000
mov dword [esi + 0x2c], edx
jmp 0x5f7c9a
test eax, 0x100
je 0x5f7bf0
mov edx, dword [esi + 0x2c]
or edx, 8
mov dword [esi + 0x2c], edx
jmp 0x5f7c9a
mov eax, dword [esp + 0x24]
push ebp
push dword [esp + 0x24]
push ebx
push dword [eax + 0x2c]
push dword [esp + 0x58]
call fcn.005fb1d0
mov edx, dword [esi + 0x2c]
add esp, 0x14
test byte [esp + 0x30], 0x24
je 0x5f7c74
or edx, 0x22
mov word [esi + 0x1a], ax
xor edi, edi
mov dword [esi + 0x2c], edx
mov eax, 0x100
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], edi
test word [ebp + 0xa], ax
je 0x5f7c9a
movzx eax, word [esi + 0x30]
lea edi, [ebp + 0x30]
inc eax
mov dword [esp + 0x2c], edi
push eax
push esi
push dword [esp + 0x40]
call fcn.005f97c0
add esp, 0xc
test eax, eax
jne 0x5f7ee0
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov dword [eax + ecx*4], edi
mov eax, 1
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x10
mov edx, dword [esi + 0x2c]
mov word [esi + 0x1c], ax
jmp 0x5f7c9a
or edx, 0x12
mov word [esi + 0x1c], ax
mov dword [esi + 0x2c], edx
mov dword [esp + 0x2c], ebp
test dl, 0x20
je 0x5f7c94
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
mov ecx, dword [eax + ecx*4 - 8]
jmp 0x5f7c96
xor ecx, ecx
mov dword [esp + 0x28], ecx
test dl, 2
je 0x5f7d38
movzx eax, word [esi + 0x16]
mov ebp, dword [esp + 0x28]
movsx edi, ax
test ebp, ebp
je 0x5f7cc8
movzx ecx, word [ebp + 8]
test cx, cx
jg 0x5f7cbf
add eax, ecx
jmp 0x5f7cc8
test byte [ebp + 0xa], 0x80
jne 0x5f7cc8
sub eax, 0x14
mov ebx, dword [esp + 0x2c]
movzx ecx, ax
test ebx, ebx
je 0x5f7cec
movzx edx, word [ebx + 8]
test dx, dx
jg 0x5f7ce0
add eax, edx
jmp 0x5f7ce9
test byte [ebx + 0xa], 0x80
jne 0x5f7cec
add eax, 0xffffffec
movzx ecx, ax
movzx edx, cx
test ebp, ebp
je 0x5f7d0b
cmp word [ebp + 8], 0
jle 0x5f7d0b
test ebx, ebx
je 0x5f7d0b
cmp word [ebx + 8], 0
jle 0x5f7d0b
lea eax, [ecx - 0x14]
movzx edx, ax
xor ecx, ecx
test ebp, ebp
setne cl
xor eax, eax
test ebx, ebx
setne al
add ecx, eax
mov eax, 0xa
sub edi, ecx
cmp dx, 0xa
cmovl edx, eax
movzx eax, dx
cmp eax, edi
cmovl edi, eax
movzx eax, di
mov edi, eax
jmp 0x5f7d97
inc word [esi + 0x18]
movzx ecx, word [ebp + 8]
movzx edx, word [esi + 0x18]
test cx, cx
jg 0x5f7d6c
mov eax, dword [ebx + 4]
mov ebp, dword [esp + 0x20]
cmp word [eax + ebp*2], 0
jl 0x5f7d6c
mov ebp, dword [esp + 0x10]
sub ecx, ebp
add cx, word [esi + 0x16]
movzx eax, cx
mov word [esi + 0x16], ax
mov edi, eax
jmp 0x5f7d9f
mov eax, dword [ebx + 8]
mov cx, word [eax + edx*2]
sub cx, word [eax + edx*2 - 2]
add cx, word [esi + 0x16]
test dword [esp + 0x30], 0x100
movzx eax, cx
mov ecx, eax
mov word [esi + 0x16], ax
mov edi, eax
je 0x5f7d9b
lea eax, [ecx + 0xa]
movzx edi, ax
mov word [esi + 0x16], ax
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
lea eax, [edi + 0x10]
movzx ebx, ax
mov eax, dword [ecx + 0x38]
and eax, 3
cmp al, 3
jne 0x5f7db7
mov eax, ebx
jmp 0x5f7dd6
movsx ecx, word [ecx + 0x30]
mov eax, ecx
shl eax, 4
sub eax, ecx
mov ecx, dword [esp + 0x24]
cdq
mov ecx, dword [ecx + 0x10]
movsx ecx, word [ecx + 0x28]
idiv ecx
inc eax
add eax, edi
movzx eax, ax
push eax
push dword [esp + 0x38]
mov ecx, ebx
movzx ebx, cx
call fcn.005bcae0
add esp, 8
movzx edx, ax
test dword [esi + 0x2c], 0x4000140
jne 0x5f7e01
push ebx
push eax
call fcn.005bcae0
add esp, 8
movzx edx, ax
push dword [esp + 0x6c]
mov ebx, dword [esp + 0x1c]
movzx ecx, bp
push esi
lea eax, [edx + ecx]
add eax, dword [esp + 0xf4]
mov word [esi + 0x14], ax
lea eax, [edi + ecx]
add eax, dword [esp + 0xf4]
mov word [esi + 0x16], ax
push dword [ebx + 4]
call fcn.005f9560
push esi
push ebx
call fcn.005f92b0
mov edx, dword [esi + 0x2c]
add esp, 0x14
mov dword [esp + 0x1c], eax
test dl, 2
je 0x5f7e50
mov eax, dword [esp + 0x70]
movzx ecx, ax
jmp 0x5f7e53
movzx ecx, di
mov ebx, dword [esp + 0x14]
mov word [esi + 0x16], cx
test dl, 0x10
jne 0x5f7eb0
movzx ecx, word [esi + 0x18]
cmp cx, word [ebx + 0x34]
jae 0x5f7eb0
cmp cx, word [ebx + 0x32]
jb 0x5f7e79
mov eax, dword [ebx + 0x38]
and al, 3
cmp al, 2
je 0x5f7eb0
cmp ecx, 3
jbe 0x5f7e8a
push dword [esp + 0x48]
call fcn.005c6260
add esp, 4
mov eax, dword [esp + 0xec]
mov edi, dword [esp + 0x18]
add eax, ebp
push eax
push ebx
push dword [esp + 0x2c]
push edi
call fcn.005f7780
mov eax, dword [esp + 0x4c]
add esp, 0x10
mov word [esi + 0x16], ax
jmp 0x5f7ec6
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x18]
mov word [esi + 0x16], ax
jmp 0x5f7ec6
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
lea eax, [esp + 0x78]
push eax
call fcn.005fb550
add esp, 4
mov ebp, eax
cmp dword [esp + 0x1c], 0
je 0x5f78e1
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x60]
mov ebp, dword [esp + 0x5c]
mov dword [esi], eax
mov eax, dword [esp + 0x50]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x54]
mov word [esi + 0x1a], ax
mov eax, dword [esp + 0x58]
mov word [esi + 0x1c], ax
mov eax, dword [esp + 0x44]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x3c]
mov word [esi + 0x18], dx
mov word [esi + 0x32], cx
mov word [esi + 0x16], ax
mov word [esi + 0x30], bp
cmp dx, cx
jne 0x5f8001
movzx ecx, word [ebx + 0x32]
movzx eax, dx
inc eax
cmp eax, ecx
jae 0x5f8001
cmp dx, bp
jne 0x5f8001
mov eax, dword [ebx + 0x38]
test al, 0x40
jne 0x5f8001
test al, al
jns 0x5f8001
mov ecx, dword [esp + 0x38]
test dword [ecx + 0x50], 0x4000
jne 0x5f8001
mov eax, dword [ebx + 8]
movzx edi, dx
cmp word [eax + edi*2 + 2], 0x2a
jl 0x5f8001
movzx eax, bp
inc eax
push eax
push esi
push ecx
call fcn.005f97c0
mov ebp, eax
add esp, 0xc
test ebp, ebp
jne 0x5f8005
movzx ecx, word [esi + 0x30]
mov eax, dword [esi + 0x38]
inc word [esi + 0x18]
inc word [esi + 0x32]
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*4], ebp
inc word [esi + 0x30]
or dword [esi + 0x2c], 0x8000
mov eax, dword [ebx + 8]
mov cx, word [eax + edi*2]
sub cx, word [eax + edi*2 + 2]
mov eax, dword [esp + 0xec]
movzx ecx, cx
add eax, 5
sub word [esi + 0x16], cx
add eax, ecx
push eax
push ebx
push dword [esp + 0x2c]
push edx
call fcn.005f7780
mov eax, dword [esp + 0x4c]
add esp, 0x10
mov edx, dword [esp + 0x60]
mov word [esi + 0x16], ax
mov eax, dword [esp + 0x40]
mov word [esi + 0x18], ax
mov eax, dword [esp + 0x44]
mov word [esi + 0x32], dx
mov dword [esi + 0x2c], eax
jmp 0x5f8005
mov ebp, dword [esp + 0x1c]
mov eax, ebp
mov ecx, dword [esp + 0xd8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0061f478
add esp, 0xcc
ret