Function at 0x464f0e
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x144
mov eax, dword [0x485118]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x28]
mov dword [ebp - 0x13c], eax
mov eax, dword [ebp + 0x20]
push ebx
mov dword [ebp - 0x144], eax
mov eax, dword [eax]
push esi
mov esi, dword [ebp + 0x24]
add eax, 0x48
push edi
push eax
mov dword [ebp - 0x140], ecx
call dword [sym.imp.msvcrt.dll_malloc]
test esi, esi
pop ecx
mov ebx, eax
je 0x464f85
mov edi, dword [esi]
cmp edi, 0x20
jge 0x464f80
push edi
push dword [esi + 4]
push ebx
call sub.msvcrt.dll_memcpy
push 0x20
pop eax
sub eax, edi
push eax
push 0x4958a8
add edi, ebx
push edi
call sub.msvcrt.dll_memcpy
add esp, 0x18
jmp 0x464f91
mov esi, dword [esi + 4]
jmp 0x464f8a
mov esi, 0x4958a8
push 8
pop ecx
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 0x14]
mov esi, dword [eax + 4]
mov eax, dword [ebp + 0x1c]
push 8
pop ecx
lea edi, [ebx + 0x20]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x144]
mov ecx, eax
sar ecx, 8
mov byte [ebx + 0x41], cl
mov byte [ebx + 0x40], al
mov ecx, eax
sar eax, 0x18
sar ecx, 0x10
mov byte [ebx + 0x43], al
mov byte [ebx + 0x42], cl
push dword [esi]
lea eax, [ebx + 0x44]
push dword [esi + 4]
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esi]
add esp, 0xc
add eax, 0x44
cmp dword [ebp + 0x2c], 0
jne 0x464ff1
mov byte [eax + ebx], 0xff
inc eax
mov byte [eax + ebx], 0xff
inc eax
mov byte [eax + ebx], 0xff
inc eax
mov byte [eax + ebx], 0xff
inc eax
mov esi, dword [ebp - 0x140]
push esi
push eax
push ebx
call fcn.00464703
cmp dword [ebp + 0xc], 3
jne 0x465015
push 0x32
pop edi
push esi
push dword [ebp + 0x10]
push esi
call fcn.00464703
dec edi
jne 0x465008
cmp dword [ebp + 0xc], 2
jne 0x465075
push dword [ebp + 0x10]
push esi
lea esi, [ebp - 0x134]
call fcn.00464092
mov eax, dword [ebp - 0x13c]
mov edi, dword [eax + 4]
mov byte [ebp - 0x135], 0
mov byte [ebp - 0x136], 0
xor esi, esi
movzx eax, byte [edi + esi]
push eax
lea eax, [ebp - 0x135]
lea edx, [ebp - 0x136]
lea ecx, [ebp - 0x134]
call fcn.00464102
mov byte [ebp + esi - 0x34], al
inc esi
cmp esi, 0x20
jl 0x465043
push 8
mov edi, 0x4958a8
jmp 0x465146
cmp dword [ebp + 0xc], 3
jne 0x465155
mov eax, dword [ebp - 0x13c]
mov esi, dword [eax + 4]
push 8
pop ecx
lea edi, [ebp - 0x34]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x13c], 0x13
xor edi, edi
cmp dword [ebp + 0x10], edi
jle 0x4650c1
mov eax, dword [ebp - 0x140]
lea ecx, [ebp - 0x14]
sub eax, ecx
lea esi, [ebp + edi - 0x14]
mov cl, byte [eax + esi]
xor cl, byte [ebp - 0x13c]
inc edi
cmp edi, dword [ebp + 0x10]
mov byte [esi], cl
jl 0x4650ac
push dword [ebp + 0x10]
lea eax, [ebp - 0x14]
push eax
lea esi, [ebp - 0x134]
call fcn.00464092
mov byte [ebp - 0x135], 0
mov byte [ebp - 0x136], 0
xor edi, edi
lea esi, [ebp + edi - 0x34]
movzx eax, byte [esi]
push eax
lea eax, [ebp - 0x135]
lea edx, [ebp - 0x136]
lea ecx, [ebp - 0x134]
call fcn.00464102
inc edi
cmp edi, 0x20
mov byte [esi], al
jl 0x4650e3
dec dword [ebp - 0x13c]
jns 0x46509a
push 8
pop ecx
mov esi, 0x4958a8
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x144]
push dword [esi]
lea eax, [ebx + 0x20]
push dword [esi + 4]
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esi]
add esp, 0xc
push ebx
add eax, 0x20
push eax
push ebx
call fcn.00464703
push 4
mov edi, ebx
xor eax, eax
pop ecx
lea esi, [ebp - 0x34]
repe cmpsd dword [esi], dword es:[edi]
sete al
mov esi, eax
jmp 0x465157
xor esi, esi
push ebx
call dword [sym.imp.msvcrt.dll_free]
pop ecx
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.004347dd
leave
ret 0x28