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

Disassembly:
sub esp, 0x28
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 4], 0
push ebx
mov ebx, dword [esp + 0x30]
movzx eax, byte [edx]
mov dword [esp + 0x14], eax
mov eax, dword [edx + 4]
mov dword [esp + 4], eax
push ebp
push esi
push edi
mov edi, dword [ebx + 8]
mov dword [esp + 0x2c], edi
test ecx, ecx
je 0x4f7b4a
movzx eax, byte [ecx + 1]
jmp 0x4f7b4c
xor eax, eax
mov esi, dword [esp + 0x48]
mov dword [esp + 0x24], eax
test esi, esi
je 0x4f7b63
cmp dword [esi], 0
jne 0x4f7b81
xor esi, esi
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x40]
test eax, eax
jne 0x4f7b85
push dword [esp + 0x54]
push dword [esi + 0xc]
push edi
call fcn.004c4920
mov edx, dword [esp + 0x5c]
add esp, 0xc
jmp 0x4f7b85
mov esi, dword [esp + 0x40]
mov eax, dword [esi + 0x1c]
mov ebp, dword [eax]
mov eax, dword [edx + 0xc]
test eax, eax
jne 0x4f7bbf
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x4f7bb3
test byte [ecx + 0x20], 1
mov eax, dword [ecx]
mov edx, dword [eax]
mov dword [esp + 0x14], edx
jne 0x4f7bac
inc edx
mov dword [esp + 0x14], edx
add dword [ebx + 0x2c], edx
mov edx, dword [esp + 0x50]
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [edx + 0xc], eax
add dword [ebx + 0x2c], ebp
jmp 0x4f7bd2
mov ecx, dword [ebx + 0x2c]
add eax, ebp
cmp eax, ecx
jle 0x4f7bce
lea eax, [ecx + ebp]
mov dword [ebx + 0x2c], eax
mov ecx, dword [esp + 0x48]
mov esi, dword [edx + 0xc]
mov dword [edx + 0x10], ebp
mov edx, dword [esp + 0x44]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], esi
test edx, edx
js 0x4f7c4a
test ebp, ebp
jle 0x4f7d6b
xor ebx, ebx
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x4f7c11
lea eax, [ebx + esi]
push eax
push ebx
push edx
push 0x5d
push edi
call fcn.004e2c80
mov edx, dword [esp + 0x58]
add esp, 0x14
jmp 0x4f7c3c
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x5d
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], ebx
lea ecx, [eax + ecx*4]
lea eax, [ebx + esi]
mov dword [ecx + 0x10], 0
mov dword [ecx + 0xc], eax
inc ebx
cmp ebx, ebp
jl 0x4f7bf2
mov ebx, dword [esp + 0x3c]
jmp 0x4f7d6b
mov edx, dword [esp + 0x20]
cmp edx, 3
je 0x4f7d6b
cmp edx, 0xa
je 0x4f7c6a
cmp edx, 9
je 0x4f7c6a
cmp edx, 0xd
je 0x4f7c6a
xor al, al
jmp 0x4f7c6c
mov al, 1
mov byte [esp + 0x44], al
test ecx, ecx
je 0x4f7d26
cmp dword [esp + 0x24], 0
jne 0x4f7d26
cmp edx, 0xc
je 0x4f7d26
cmp edx, 0xe
je 0x4f7d26
mov edx, dword [ecx + 4]
or al, 0xc
mov byte [esp + 0x44], al
mov eax, dword [ecx]
mov dword [esp + 0x28], edx
cmp edx, dword [eax]
jge 0x4f7d01
mov ebx, dword [esp + 0x48]
mov esi, edx
mov edi, dword [esp + 0x40]
lea ecx, [esi + esi*4]
shl ecx, 2
mov dword [esp + 0x28], ecx
lea esp, [esp]
mov eax, dword [ebx]
movzx eax, word [eax + ecx + 0x18]
test eax, eax
jle 0x4f7ce3
lea ecx, [eax + eax*4]
mov dx, si
sub dx, word [ebx + 4]
mov eax, dword [edi + 0x1c]
inc dx
mov word [eax + ecx*4 + 4], dx
mov ecx, dword [esp + 0x28]
mov eax, dword [ebx]
inc esi
add ecx, 0x14
mov dword [esp + 0x28], ecx
cmp esi, dword [eax]
jl 0x4f7cc0
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x1c]
mov edx, dword [eax]
test edx, edx
jle 0x4f7d26
add eax, 0x18
cmp word [eax], 0
jbe 0x4f7d20
dec ebp
mov dword [esp + 0x1c], 0
add eax, 0x14
dec edx
jne 0x4f7d11
mov edx, dword [esp + 0x40]
mov al, byte [esp + 0x44]
mov dword [esp + 0x30], esi
mov byte [esp + 0x34], al
cmp dword [edx + 8], 0
je 0x4f7d58
test al, 8
je 0x4f7d58
cmp dword [esp + 0x14], 0
jle 0x4f7d58
lea eax, [esp + 0x30]
mov dword [esp + 0x1c], 0
mov dword [ecx + 0x24], eax
jmp 0x4f7d6f
push dword [esp + 0x44]
push 0
push esi
push dword [edx + 0x1c]
push ebx
call fcn.00507d50
add esp, 0x14
mov edx, dword [esp + 0x40]
cmp dword [esp + 0x24], 0
je 0x4f7dc5
push dword [esp + 0x18]
mov eax, dword [esp + 0x50]
push dword [edx + 0x1c]
push dword [esp + 0x5c]
movzx esi, byte [eax + 1]
push dword [eax + 4]
push esi
push ebx
call fcn.004c3e30
mov ecx, dword [esp + 0x64]
push dword [ecx + 8]
push eax
push esi
push ebx
call fcn.004cd880
mov eax, dword [esp + 0x70]
add esp, 0x28
test eax, eax
jne 0x4f7de0
mov eax, dword [esp + 0x40]
push dword [esp + 0x54]
push dword [eax + 0xc]
push edi
call fcn.004c4920
mov esi, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x20]
lea ecx, [edx - 1]
cmp ecx, 0xe
ja case.0x4f7dd9.4
jmp dword [ecx*4 + 0x4f83dc]
mov esi, dword [esp + 0x18]
jmp 0x4f7dc9
mov al, byte [ebx + 0x13]
test al, al
jne 0x4f7df5
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
jmp 0x4f7e04
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
push eax
push ebp
push esi
push 0x60
push edi
mov dword [esp + 0x64], eax
call fcn.0052e1e0
mov edx, dword [esp + 0x24]
push ebp
push esi
mov esi, dword [esp + 0x6c]
push esi
push edx
push 0x89
push edi
call fcn.0052e310
add esp, 0x2c
test esi, esi
je case.0x4f7dd9.4
mov al, byte [ebx + 0x13]
cmp al, 8
jae case.0x4f7dd9.4
movzx eax, al
mov dword [ebx + eax*4 + 0x98], esi
inc byte [ebx + 0x13]
jmp case.0x4f7dd9.4
mov edx, dword [esp + 0x10]
push ebp
push esi
push edx
push 0x8b
push edi
call fcn.0052e1e0
add esp, 0x14
jmp case.0x4f7dd9.4
mov eax, dword [esp + 0x14]
inc eax
push eax
push ebx
call fcn.00516b60
mov ecx, dword [edi + 0x74]
mov edx, eax
mov eax, dword [esp + 0x1c]
add esp, 8
add eax, edx
mov dword [esp + 0x50], edx
cmp dword [edi + 0x78], ecx
jg 0x4f7ea3
push eax
push ebp
push esi
push 0x60
push edi
call fcn.004e2c80
mov edx, dword [esp + 0x64]
add esp, 0x14
jmp 0x4f7ed4
mov ebx, dword [esp + 0x3c]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x14]
add esi, edx
mov dword [eax + ecx*4], 0x60
mov dword [eax + ecx*4 + 8], ebp
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
cmp dword [esp + 0x20], 5
jne 0x4f7f0e
mov eax, dword [edi + 0x74]
mov esi, dword [esp + 0x10]
add eax, 4
push 0
push edx
push eax
inc esi
push esi
push 0x1f
push edi
call fcn.0052e310
push ebp
push dword [esp + 0x34]
mov ebp, dword [esp + 0x70]
push ebp
push esi
push 0x89
push edi
call fcn.0052e310
add esp, 0x30
jmp 0x4f7f12
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0x48]
test esi, esi
je 0x4f7f39
mov ecx, dword [esp + 0x14]
push ecx
push 1
push dword [esp + 0x24]
lea eax, [ecx + ebp]
push eax
push dword [esp + 0x50]
push esi
push ebx
call fcn.004f1b50
add esp, 0x1c
jmp 0x4f7faf
mov al, byte [ebx + 0x13]
test al, al
jne 0x4f7f48
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
jmp 0x4f7f57
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
push eax
push dword [esp + 0x14]
mov dword [esp + 0x50], eax
push 0x7e
push edi
call fcn.0052e180
push dword [esp + 0x58]
push ebp
push dword [esp + 0x28]
push 0x7f
push edi
call fcn.0052e1e0
mov eax, dword [edi + 0x74]
add esp, 0x24
test eax, eax
jle 0x4f7f93
lea ecx, [eax + eax*4]
mov edx, 8
mov eax, dword [edi + 0x70]
mov word [eax + ecx*4 - 0x12], dx
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x4f7faf
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x4f7faf
movzx eax, al
mov dword [ebx + eax*4 + 0x98], ecx
inc byte [ebx + 0x13]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 1
jne 0x4f7fde
test ebp, ebp
je 0x4f8373
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x4f8373
movzx eax, al
mov dword [ebx + eax*4 + 0x98], ebp
inc byte [ebx + 0x13]
jmp 0x4f8373
cmp eax, dword [ebx + 0x1c]
jle 0x4f8373
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x20], ebp
jmp 0x4f8373
test eax, eax
je 0x4f8014
push dword [esp + 0x14]
push ebp
push dword [esp + 0x24]
push esi
mov esi, dword [esp + 0x50]
push esi
push eax
push ebx
call fcn.004f1b50
add esp, 0x1c
jmp case.0x4f7dd9.4
mov ecx, dword [esp + 0x50]
push ebx
mov eax, dword [ecx + 8]
mov dword [esp + 0x4c], eax
call fcn.00516bc0
push dword [esp + 0x5c]
mov ebx, eax
push esi
push 0x32
push edi
call fcn.0052e180
xor ecx, ecx
cmp dword [esp + 0x5c], ecx
push ebx
setl cl
sub ebp, ecx
push ebp
lea eax, [ecx + esi]
push eax
push 0x60
push edi
call fcn.0052e1e0
mov eax, dword [esp + 0x70]
add esp, 0x28
test eax, eax
jns 0x4f806e
push esi
push ebx
push dword [esp + 0x18]
push 0x7f
push edi
call fcn.0052e1e0
add esp, 0x14
jmp 0x4f8377
push eax
push esi
push ebx
push dword [esp + 0x1c]
push 0x89
push edi
call fcn.0052e310
add esp, 0x18
jmp 0x4f8377
test eax, eax
jne 0x4f7ff6
push ebx
call fcn.00516bc0
mov ecx, dword [esp + 0x54]
mov esi, eax
push ebp
push dword [ecx + 0x14]
push esi
push ebp
push dword [esp + 0x2c]
push 0x60
push edi
call fcn.0052e240
push ebp
push dword [esp + 0x3c]
push esi
push dword [esp + 0x3c]
push 0x89
push edi
call fcn.0052e310
push esi
push ebx
call fcn.00523860
add esp, 0x40
jmp 0x4f8377
push dword [esp + 0x10]
push 1
push 0x47
push edi
call fcn.0052e180
add esp, 0x10
jmp case.0x4f7dd9.4
test eax, eax
je 0x4f8377
jmp 0x4f7ff6
test eax, eax
jne 0x4f7ff6
cmp edx, 0xd
jne 0x4f8119
mov ecx, dword [esp + 0x50]
push dword [ecx + 4]
push 0xe
push edi
call fcn.0052e120
add esp, 0xc
jmp 0x4f8377
push ebp
push esi
push 0x53
push edi
call fcn.0052e180
add esp, 0x10
jmp 0x4f8377
mov ecx, dword [esp + 0x50]
xor eax, eax
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x2c], eax
mov ecx, dword [eax]
mov al, byte [ebx + 0x13]
mov dword [esp + 0x4c], ecx
test al, al
jne 0x4f8151
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
jmp 0x4f8160
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
add ecx, 2
mov dword [esp + 0x50], eax
push ecx
push ebx
mov dword [esp + 0x24], ecx
call fcn.00516b60
mov dword [esp + 0x4c], eax
add esp, 8
add eax, dword [esp + 0x4c]
mov dword [esp + 0x24], eax
inc eax
cmp dword [esp + 0x20], 6
mov dword [esp + 0x28], eax
jne 0x4f81aa
mov eax, dword [esp + 0x10]
push ebp
push esi
push 0
inc eax
push eax
push 0x1f
push edi
call fcn.0052e310
mov dword [esp + 0x2c], eax
add esp, 0x18
mov eax, dword [esp + 0x28]
push eax
push ebp
push esi
push 0x60
push edi
call fcn.0052e1e0
add esp, 0x14
cmp dword [esp + 0x20], 6
jne 0x4f81ee
push dword [esp + 0x28]
mov eax, dword [esp + 0x14]
inc eax
push eax
push 0x89
push edi
call fcn.0052e180
mov eax, dword [edi + 0x74]
add esp, 0x10
test eax, eax
jle 0x4f81ee
lea ecx, [eax + eax*4]
mov edx, 0x10
mov eax, dword [edi + 0x70]
mov word [eax + ecx*4 - 0x12], dx
cmp dword [esp + 0x4c], 0
jle 0x4f825e
mov ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x44]
add ebx, 0x18
movzx eax, word [ebx]
lea edx, [esi - 1]
mov ecx, dword [edi + 0x74]
add edx, eax
cmp dword [edi + 0x78], ecx
jg 0x4f8221
push 0
push ebp
push edx
push 0x50
push edi
call fcn.004e2c80
add esp, 0x14
jmp 0x4f8250
mov esi, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x50
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], ebp
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
inc ebp
add ebx, 0x14
dec dword [esp + 0x4c]
jne 0x4f8200
mov ebx, dword [esp + 0x3c]
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x4f827e
mov edx, dword [esp + 0x24]
push 0
push edx
push dword [esp + 0x18]
push 0x7d
push edi
call fcn.004e2c80
add esp, 0x14
jmp 0x4f82b1
mov edx, dword [esp + 0x10]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x24]
mov dword [eax + ecx*4], 0x7d
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0x74]
mov edx, dword [esp + 0x50]
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x44]
cmp dword [edi + 0x78], ecx
jg 0x4f82d5
push edx
push ebp
push esi
push 0x60
push edi
call fcn.004e2c80
add esp, 0x14
jmp 0x4f82fc
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x60
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], ebp
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push ebp
push esi
push dword [esp + 0x58]
push dword [esp + 0x1c]
push 0x89
push edi
call fcn.0052e310
mov ecx, dword [esp + 0x2c]
add esp, 0x18
test ecx, ecx
je 0x4f833f
mov edx, dword [edi + 0x74]
jns 0x4f8324
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x57], 0
je 0x4f8333
mov eax, 0x74c854
jmp 0x4f833c
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov ecx, dword [esp + 0x50]
test ecx, ecx
je 0x4f835b
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x4f835b
movzx eax, al
mov dword [ebx + eax*4 + 0x98], ecx
inc byte [ebx + 0x13]
cmp ebp, 1
je 0x4f7e2d
cmp ebp, dword [ebx + 0x1c]
jle case.0x4f7dd9.4
mov dword [ebx + 0x1c], ebp
mov dword [ebx + 0x20], esi
mov esi, dword [esp + 0x48]
test esi, esi
jne 0x4f83d3
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 8]
test edx, edx
je 0x4f83d3
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x4f83a4
push 0
push dword [esp + 0x5c]
push edx
push 0x3c
push edi
call fcn.004e2c80
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4], 0x3c
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret