Function at 0x4868d0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x100
cmp eax, 5
push ebx
push esi
push edi
jne 0x486ab1
lea ecx, [esp + 0x5c]
mov eax, dword [esp + 0x118]
push eax
push ecx
call fcn.0048cb70
mov esi, dword [esp + 0x11c]
lea edx, [esp + 0x64]
push esi
push edx
call fcn.0048ce90
sub esp, 0xfffffff0
xor eax, eax
mov cl, byte [eax + esi + 0x10]
mov bl, byte [eax + esi]
xor bl, cl
mov byte [eax + esi], bl
inc eax
cmp eax, 0x10
jb 0x48690f
lea edi, [esi + 0x10]
lea edx, [esp + 0x5c]
push edi
push edx
call fcn.0048ce90
mov eax, edi
sub esp, 0xfffffff8
mov ecx, 0xfffffff0
sub ecx, esi
mov dl, byte [eax + 0x10]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x48693b
lea edi, [esi + 0x20]
lea eax, [esp + 0x5c]
push edi
push eax
call fcn.0048ce90
mov eax, edi
sub esp, 0xfffffff8
mov ecx, 0xffffffe0
sub ecx, esi
mov dl, byte [eax + 0x10]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x10
jb 0x486967
lea eax, [esi + 0x30]
lea ecx, [esp + 0x5c]
push eax
push ecx
call fcn.0048ce90
lea eax, [esp + 0x64]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.0048cb70
mov al, byte [esi + 0x3d]
sub esp, 0xfffffff0
cmp al, 0x53
je 0x4869b0
mov ax, 2
pop edi
pop esi
pop ebx
add esp, 0x100
ret 0x18
mov al, byte [esi + 0x3c]
test al, 0x80
je 0x486a4f
and eax, 0x9f
add eax, 0xffffff80
cmp eax, 8
ja case.default.0x4869c8
jmp dword [eax*4 + 0x486b4c]
mov ax, 0x41
pop edi
pop esi
pop ebx
sub esp, 0xffffff00
ret 0x18
pop edi
mov ax, 4
pop esi
pop ebx
add esp, 0x100
ret 0x18
mov ax, 0xa
pop edi
pop esi
pop ebx
sub esp, 0xffffff00
ret 0x18
pop edi
mov ax, 0x15
pop esi
pop ebx
add esp, 0x100
ret 0x18
pop edi
mov ax, 0x4a
pop esi
pop ebx
sub esp, 0xffffff00
ret 0x18
pop edi
mov ax, 0x3f
pop esi
pop ebx
add esp, 0x100
ret 0x18
pop edi
pop esi
pop ebx
sub esp, 0xffffff00
mov ax, 0x10
ret 0x18
pop edi
mov ax, 0xff
pop esi
pop ebx
add esp, 0x100
ret 0x18
cmp al, 0x3c
ja case.0x4869c8.132
mov edx, dword [esp + 0x120]
and eax, 0xff
cmp eax, edx
ja case.0x4869c8.132
mov ecx, dword [esp + 0x124]
mov dword [ecx], eax
xor ecx, ecx
mov cl, byte [esi + 0x3c]
cmp edx, ecx
jb 0x486aa1
mov edx, ecx
mov edi, dword [esp + 0x11c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor ax, ax
pop edi
pop esi
pop ebx
sub esp, 0xffffff00
ret 0x18
mov ax, 0x49
pop edi
pop esi
pop ebx
sub esp, 0xffffff00
ret 0x18
cmp eax, 7
jne case.0x4869c8.128
lea edi, [esp + 0xc]
mov eax, dword [esp + 0x118]
mov ecx, 0x12
mov esi, dword [esp + 0x114]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x5c]
push eax
push ecx
call fcn.0048cb70
lea eax, [esp + 0x14]
lea edx, [esp + 0x64]
push edx
push eax
call fcn.0048d090
add esp, 0x10
or al, al
jne 0x486b39
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x124]
push ebp
mov ebp, dword [esp + 0x120]
lea edi, [esp + 0x12]
xor esi, esi
sub edi, ebp
mov dword [edx], ecx
mov edx, ebp
test ecx, ecx
jbe 0x486b23
inc esi
mov bl, byte [edi + edx]
mov byte [edx], bl
inc edx
dec ecx
cmp esi, 4
jb 0x486b12
lea esi, [esp + 0x18]
lea edi, [ebp + 4]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
pop ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.00484040
pop edi
pop esi
pop ebx
sub esp, 0xffffff00
ret 0x18