Function at 0x4fef20
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [eax + 0x78]
add eax, ebx
push ebx
mov ebx, ebp
lea ebx, [ebx - 0x1c]
mov dword [ebx], ecx
pop ebx
test ecx, ecx
je 0x4fee5b
cmp eax, ebx
jbe 0x4fee5b
mov edx, dword [ebp + 0xc]
jmp 0x4feea8
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x7f
jmp 0x4ff1d0
mov edi, dword [eax + 0x20]
and dword [ebp - 4], esi
sub esp, 0xa
mov dword [esp + 1], eax
mov byte [esp + 6], al
add esp, 1
mov dword [esp + 3], esp
sub esp, 0xf
stc
push dword [esp + 0x10]
pushfd
jmp 0x5779ab
cmp edx, 0x10000
jae 0x4fee77
mov ecx, dword [eax + 0x10]
cmp edx, ecx
jb 0x4fef8a
push esi
pushal
mov bx, sp
lea esi, [eax + eax]
jmp 0x4fef5b
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x4fee5b
mov ecx, ebx
sub esp, 0x1e
pop word [esp]
push dword [esp + 2]
push word [esp + 8]
push word [esp + 0xf]
lea esp, [esp + 0x1f]
pop word [esp]
add esp, 0
lea esp, [esp + 3]
xor esi, esi
call fcn.005286c2
push ebx
mov ebx, eax
lea ebx, [ebx + 0x7c]
mov ecx, dword [ebx]
pop ebx
jmp 0x4fee33
lea esp, [esp + 4]
jmp 0x4feed4
push word [esp + 4]
pop word [esp + 5]
lea esp, [esp + 8]
popal
lea esi, [esi + 0x14]
mov edi, dword [esi]
pop esi
add edi, ecx
cmp edx, edi
jmp 0x4fefc5
not ch
mov bh, al
mov dword [esp + 4], eax
push si
push bp
mov word [esp + 1], dx
mov dword [esp], ecx
push word [esp]
push word [esp + 4]
mov dword [esp + 2], esi
jmp 0x4fef32
push di
mov word [esp], cx
lea esp, [esp + 2]
cmp esi, eax
pushfd
jmp 0x577c22
mov di, 0x2bc2
xchg bp, cx
bswap bp
xchg ebp, esi
mov si, word [esp]
jmp 0x577888
jae 0x4fef8a
sub edx, ecx
push edx
pushal
mov ecx, 0x11bd40a9
jmp 0x4fefa6
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 8
lea ebx, [eax + edx]
xchg ch, cl
mov dword [esp + 0x14], eax
push esp
lea esp, [esp]
mov dword [esp], ecx
jmp 0x5778ce
lea esp, [esp]
push dword [esp + 1]
lea esp, [esp + 8]
popal
jmp 0x577984
mov esi, dword [ecx + ebx]
add esi, ebx
jmp 0x4fef8a
lea edx, [edx + 0x1c]
mov ecx, dword [edx]
pop edx
lea ecx, [ecx + edx*4]
jmp 0x577963
cmp dword [eax + 0x18], esi
jbe 0x4fef8a
jmp 0x577ba8
add edi, ebx
pushfd
push word [esp + 2]
lea esp, [esp + 2]
lea esp, [esp + 0x24]
jmp 0x57798f
mov ecx, dword [edx]
pop edx
push ebp
add ecx, ebx
push ax
mov byte [esp], bh
lea esp, [esp]
push bx
push dword [esp + 3]
lea esp, [esp + 1]
lea esp, [esp + 3]
jmp 0x577b04
push esi
mov esi, ebp
lea esi, [esi + 0xc]
mov edx, dword [esi]
pop esi
jmp 0x577ba8
stc
clc
sub esp, 0x18
add esp, 0x17
mov byte [esp], dl
lea esp, [esp + 1]
xor ecx, ecx
pushfd
push word [esp + 3]
mov word [esp], dx
jmp 0x577ae4
pushfd
pushal
pushfd
pushfd
push word [esp + 0x25]
pop dword [esp + 0x1f]
jmp 0x577b78
test ecx, ecx
je 0x577b50
inc dword [ebp - 4]
mov ecx, dword [ebp - 4]
cmp ecx, dword [eax + 0x18]
jb 0x577a6b
jmp 0x4fef8a
pop word [esp + 1]
push dword [esp + 3]
mov byte [esp + 5], ah
pushal
lea esp, [esp + 0x28]
jmp 0x577abe
lea esp, [esp + 8]
push edi
mov edi, ebp
lea edi, [edi - 8]
mov dword [edi], edx
pop edi
mov edx, dword [ebp - 8]
mov dl, byte [edx]
cmp dl, byte [ecx]
jne 0x577aa2
test dl, dl
je 0x577a79
mov edx, dword [ebp - 8]
mov dl, byte [edx + 1]
mov byte [ebp + 0xb], dl
cmp dl, byte [ecx + 1]
jne 0x577aa2
add dword [ebp - 8], 2
inc ecx
inc ecx
test dl, dl
jne 0x577b11
je 0x577a79
lea esp, [esp + 0x34]
sbb ecx, reloc.oleaut32.dll_SysFreeString
jmp 0x577abe
push ecx
pushal
mov edx, dword [esp]
lea edi, [esi*4]
mov dword [esp + 0x18], ebp
push esi
mov dword [esp], eax
pop word [esp]
jmp 0x577c89
push ax
sbb ecx, ecx
push edx
mov word [esp], sp
push word [esp]
push word [esp + 4]
mov dword [esp + 2], edx
mov dword [esp + 1], ecx
mov word [esp + 2], si
jmp 0x577b44
push edx
mov edx, ebp
lea edx, [edx - 4]
mov ecx, dword [edx]
pop edx
push edx
mov edx, ecx
lea edx, [edx*4]
lea edx, [edx + edi]
jmp 0x577a41
lea esi, [esi - 0x1c]
mov ecx, dword [esi]
pop esi
add eax, ecx
pushfd
mov dword [esp], ebx
push word [esp + 3]
lea esp, [esp + 2]
cmp esi, eax
pushal
lea esp, [esp + 0x24]
jmp 0x577ca9
test esi, esi
je 0x4fee5b
mov eax, esi
jmp 0x577e72
mov word [esp + 1], si
mov dword [esp], edi
pop word [esp]
lea esp, [esp + 2]
jb 0x577c02
push esi
pushal
bswap si
mov bx, 0x283d
lea esi, [eax + ecx]
xchg dh, dl
mov esi, 0x622c4571
xchg esi, edi
mov eax, 0x36296fec
mov cx, 0x38cc
mov dword [esp + 4], ebp
push ebp
push word [esp]
push dword [esp + 1]
mov dword [esp + 3], edi
pop word [esp + 2]
pop dword [esp]
mov byte [esp + 2], dl
lea esp, [esp + 4]
popal
jmp 0x577bd7
lea esp, [esp + 2]
popal
lea ecx, [ecx - 4]
mov edx, dword [ecx]
pop ecx
mov ecx, dword [eax + 0x24]
lea ecx, [ecx + edx*2]
movzx ecx, word [ecx + ebx]
mov edx, dword [eax + 0x1c]
lea ecx, [edx + ecx*4]
jmp 0x577963
jae 0x577c02
mov eax, esi
call fcn.00528680
pushal
xchg edx, edi
lea edx, [ebx + esi]
xchg esi, edi
jmp 0x577d6e
lea ecx, reloc.oleaut32.dll_SysFreeString
call 0x528653
pop ecx
lea eax, reloc.oleaut32.dll_SysFreeString
push eax
mov byte [ebp + edi - 0x120], 0
jmp 0x577e15
mov dl, byte [esp]
mov dword [esp], eax
pushfd
lea esp, [esp + 4]
popal
mov dword [ebp + 0xc], edi
test edi, edi
je 0x4fee5b
sub edi, esi
push edi
mov edx, esi
jmp 0x577d46
mov byte [ebp - 0xf], 0x5d
mov byte [ebp - 0x10], 0x4f
mov byte [ebp - 0x11], 0x61
mov byte [ebp - 0x12], 0x80
mov byte [ebp - 0x13], 0x56
jmp 0x577e8e
mov ecx, dword [ebp + 0xc]
lea eax, [ecx + 1]
cmp byte [eax], 0x23
jne 0x577e66
jmp 0x577f5b
cmp esi, ebx
jne 0x577dce
mov byte [ebp - 0xa], 0x42
mov byte [ebp - 0xb], 0x56
mov byte [ebp - 0xc], 0x56
mov byte [ebp - 0xd], 0x5e
mov byte [ebp - 0xe], 0x14
jmp 0x577dab
call dword [0x509050]
pushal
setae bl
mov bl, byte [esp]
xchg bp, di
mov dword [esp + 4], eax
push ebx
push sp
push dword [esp + 4]
mov byte [esp + 4], bh
mov dword [esp + 4], edi
push dword [esp + 2]
lea esp, [esp + 2]
lea esp, [esp + 0xc]
popal
test esi, esi
jne 0x577dec
call fcn.005225ab
push edi
mov edi, eax
lea edi, [edi + 0x10]
mov eax, dword [edi]
pop edi
push esi
push esi
lea ecx, reloc.oleaut32.dll_SysFreeString
push ecx
call eax
mov esi, eax
jmp 0x577dec
push eax
push esi
call int.004fefe2
jmp 0x4ff1d2
call fcn.00528658
jmp 0x4ff1d2
mov byte [ebp - 0x14], 0x5d
mov byte [ebp - 0x15], 0x54
mov byte [ebp - 0x16], 0x50
mov byte [ebp - 0x17], 0x5d
mov byte [ebp - 0x18], 0x77
sub esp, 0x1a
push ecx
lea esp, [esp + 0xe]
mov dword [esp + 3], edi
pushal
pop word [esp + 0x1e]
stc
mov word [esp + 0x22], cx
pop dword [esp + 9]
lea esp, [esp + 2]
xor ecx, ecx
pushfd
mov word [esp], cx
lea esp, [esp + 0x2c]
lea eax, [ecx + ebp - 0x18]
mov dl, byte [eax]
sub dl, 3
xor dl, 0x3f
inc ecx
cmp ecx, 0xf
mov byte [eax], dl
jl 0x577ecd
lea eax, [ebp - 0x18]
push edx
pushfd
mov dword [esp + 4], eax
pushfd
mov word [esp], sp
pop word [esp]
lea esp, [esp + 2]
lea esp, [esp + 4]
call dword [0x509050]
mov esi, eax
jmp 0x577dce
add ecx, 2
push ecx
call fcn.00511386
pop ecx
jmp 0x577e66