Function at 0x479055
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 4]
sub esp, 0x24
test ecx, ecx
push ebp
je 0x4793ad
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x4793ad
cmp byte [ebp], 1
je 0x4793ad
push esi
mov esi, dword [esp + 0x38]
test esi, esi
je 0x4793a5
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x4793a5
cdq
and edx, 0x7f
add eax, edx
push ebx
mov ebx, eax
movzx eax, byte [ecx + 0x14]
sar ebx, 7
dec eax
push edi
mov dword [esp + 0x38], ebx
je 0x479364
dec eax
je 0x4792ab
dec eax
je 0x4790c7
pop edi
pop ebx
pop esi
mov eax, 0xfffffffb
pop ebp
add esp, 0x24
ret
test ebx, ebx
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
jle 0x47929e
mov dword [esp + 0x10], ebx
lea esp, [esp]
xor edi, edi
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x4c]
push eax
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x24]
lea eax, [ebp + 0x54]
mov dword [esp + 0x30], ecx
push eax
lea ecx, [esp + 0x2c]
mov dword [esp + 0x38], edx
push ecx
mov edx, ecx
push edx
call fcn.0049c595
mov ecx, dword [esp + 0x58]
mov bl, byte [esp + 0x24]
mov eax, edi
shr eax, 3
lea esi, [eax + ecx]
mov al, byte [esp + 0x34]
mov edx, edi
and edx, 7
shl bl, 1
and al, 0x80
mov cl, dl
shr al, cl
mov cl, byte [esi]
add esp, 0x10
xor cl, al
mov byte [esi], cl
mov al, cl
mov cl, byte [esp + 0x15]
shr cl, 7
or cl, bl
mov bl, byte [esp + 0x15]
mov byte [esp + 0x14], cl
mov cl, byte [esp + 0x16]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x16]
mov byte [esp + 0x15], cl
mov cl, byte [esp + 0x17]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x17]
mov byte [esp + 0x16], cl
mov cl, byte [esp + 0x18]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x18]
mov byte [esp + 0x17], cl
mov cl, byte [esp + 0x19]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x19]
mov byte [esp + 0x18], cl
mov cl, byte [esp + 0x1a]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1a]
mov byte [esp + 0x19], cl
mov cl, byte [esp + 0x1b]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1b]
mov byte [esp + 0x1a], cl
mov cl, byte [esp + 0x1c]
shr cl, 7
shl bl, 1
or cl, bl
mov byte [esp + 0x1b], cl
mov cl, byte [esp + 0x1d]
mov bl, byte [esp + 0x1c]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1d]
mov byte [esp + 0x1c], cl
mov cl, byte [esp + 0x1e]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1e]
mov byte [esp + 0x1d], cl
mov cl, byte [esp + 0x1f]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x1f]
mov byte [esp + 0x1e], cl
mov cl, byte [esp + 0x20]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x20]
mov byte [esp + 0x1f], cl
mov cl, byte [esp + 0x21]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x21]
mov byte [esp + 0x20], cl
mov cl, byte [esp + 0x22]
shr cl, 7
shl bl, 1
or cl, bl
mov bl, byte [esp + 0x22]
mov byte [esp + 0x21], cl
mov cl, byte [esp + 0x23]
shr cl, 7
shl bl, 1
or cl, bl
mov byte [esp + 0x22], cl
mov cl, 7
sub cl, dl
mov dl, byte [esp + 0x23]
shr al, cl
shl dl, 1
and al, 1
or al, dl
inc edi
cmp edi, 0x80
mov byte [esp + 0x23], al
jl 0x4790f7
dec dword [esp + 0x10]
jne 0x4790f5
mov ebx, dword [esp + 0x38]
pop edi
mov eax, ebx
pop ebx
pop esi
shl eax, 7
pop ebp
add esp, 0x24
ret
mov eax, dword [ecx]
mov edx, dword [esi]
mov ebx, dword [esi + 4]
mov edi, dword [esi + 8]
xor eax, edx
mov edx, dword [ecx + 4]
xor edx, ebx
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x28], edx
xor ecx, dword [esi + 0xc]
mov edx, dword [ebp + 0x4c]
push edx
xor eax, edi
mov edi, dword [esp + 0x4c]
lea ebx, [ebp + 0x54]
push ebx
mov dword [esp + 0x34], eax
lea eax, [esp + 0x2c]
push edi
push eax
mov dword [esp + 0x40], ecx
call fcn.0049c595
mov eax, dword [esp + 0x48]
add esp, 0x10
add esi, 0x10
dec eax
test eax, eax
jle 0x47929a
mov dword [esp + 0x10], eax
lea esp, [esp]
mov edx, dword [edi]
mov ecx, dword [esi]
mov eax, dword [edi + 4]
xor ecx, edx
mov edx, dword [esi + 4]
xor edx, eax
mov eax, dword [esi + 8]
mov dword [esp + 0x24], ecx
xor eax, dword [edi + 8]
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x28], edx
mov edx, dword [ebp + 0x4c]
push edx
mov dword [esp + 0x30], eax
xor ecx, dword [edi + 0xc]
push ebx
add edi, 0x10
lea eax, [esp + 0x2c]
push edi
push eax
mov dword [esp + 0x40], ecx
call fcn.0049c595
mov eax, dword [esp + 0x20]
add esp, 0x10
add esi, 0x10
dec eax
mov dword [esp + 0x10], eax
jne 0x479305
mov ebx, dword [esp + 0x38]
pop edi
mov eax, ebx
pop ebx
pop esi
shl eax, 7
pop ebp
add esp, 0x24
ret
test ebx, ebx
jle 0x47929e
mov edi, dword [esp + 0x48]
mov dword [esp + 0x38], ebx
nop
mov ecx, dword [ebp + 0x4c]
push ecx
lea eax, [ebp + 0x54]
push eax
push edi
push esi
call fcn.0049c595
mov eax, dword [esp + 0x48]
add esp, 0x10
add esi, 0x10
add edi, 0x10
dec eax
mov dword [esp + 0x38], eax
jne 0x479375
pop edi
mov eax, ebx
pop ebx
pop esi
shl eax, 7
pop ebp
add esp, 0x24
ret
pop esi
xor eax, eax
pop ebp
add esp, 0x24
ret
mov eax, 0xfffffffb
pop ebp
add esp, 0x24
ret