Function at 0x4905f8
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 4
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
test al, 3
je 0x490794
cmp dword [ebp + 0xc], 0xb
jbe 0x4908b1
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x10], edx
mov ecx, 0x9e3779b9
mov edx, 0x9e3779b9
mov esi, ecx
mov ecx, ebx
lea esi, [esi]
movzx edi, byte [eax + 5]
shl edi, 8
movzx ebx, byte [eax + 6]
shl ebx, 0x10
lea ebx, [edi + ebx]
movzx edi, byte [eax + 4]
lea edi, [ebx + edi]
movzx ebx, byte [eax + 7]
shl ebx, 0x18
lea ebx, [edi + ebx]
lea esi, [ebx + esi]
movzx edi, byte [eax + 9]
shl edi, 8
movzx ebx, byte [eax + 0xa]
shl ebx, 0x10
lea ebx, [edi + ebx]
movzx edi, byte [eax + 8]
add ebx, edi
movzx edi, byte [eax + 0xb]
shl edi, 0x18
add ebx, edi
add ebx, ecx
movzx edi, byte [eax + 1]
shl edi, 8
movzx ecx, byte [eax + 2]
shl ecx, 0x10
lea ecx, [edi + ecx]
movzx edi, byte [eax]
lea edi, [ecx + edi]
movzx ecx, byte [eax + 3]
shl ecx, 0x18
lea ecx, [edi + ecx]
lea edx, [ecx + edx]
sub edx, ebx
sub edx, esi
mov ecx, ebx
shr ecx, 0xd
xor edx, ecx
sub esi, ebx
sub esi, edx
mov ecx, edx
shl ecx, 8
xor ecx, esi
mov esi, ebx
sub esi, edx
sub esi, ecx
mov ebx, ecx
shr ebx, 0xd
xor ebx, esi
sub edx, ecx
sub edx, ebx
mov esi, ebx
shr esi, 0xc
xor esi, edx
mov edx, ecx
sub edx, ebx
sub edx, esi
mov ecx, esi
shl ecx, 0x10
xor ecx, edx
mov edx, ebx
sub edx, esi
sub edx, ecx
mov ebx, ecx
shr ebx, 5
xor ebx, edx
sub esi, ecx
sub esi, ebx
mov edx, ebx
shr edx, 3
xor edx, esi
sub ecx, ebx
sub ecx, edx
mov esi, edx
shl esi, 0xa
xor esi, ecx
sub ebx, edx
sub ebx, esi
mov ecx, esi
shr ecx, 0xf
xor ecx, ebx
add eax, 0xc
sub dword [ebp - 0x10], 0xc
cmp dword [ebp - 0x10], 0xb
ja 0x490630
mov ebx, ecx
mov ecx, esi
add ebx, dword [ebp + 0xc]
cmp dword [ebp - 0x10], 0xb
jbe 0x490846
nop
sub edx, ecx
sub edx, ebx
mov eax, ebx
shr eax, 0xd
xor edx, eax
sub ecx, ebx
sub ecx, edx
mov eax, edx
shl eax, 8
xor eax, ecx
sub ebx, edx
sub ebx, eax
mov esi, eax
shr esi, 0xd
xor esi, ebx
sub edx, eax
sub edx, esi
mov ecx, esi
shr ecx, 0xc
xor ecx, edx
mov edx, eax
sub edx, esi
sub edx, ecx
mov eax, ecx
shl eax, 0x10
xor eax, edx
sub esi, ecx
sub esi, eax
mov edx, eax
shr edx, 5
xor edx, esi
sub ecx, eax
sub ecx, edx
mov ebx, edx
shr ebx, 3
xor ebx, ecx
sub eax, edx
sub eax, ebx
mov ecx, ebx
shl ecx, 0xa
xor ecx, eax
sub edx, ebx
sub edx, ecx
mov eax, ecx
shr eax, 0xf
xor eax, edx
pop edx
pop ebx
pop esi
pop edi
leave
ret
cmp dword [ebp + 0xc], 0xb
jbe 0x4908c6
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x10], esi
mov ecx, 0x9e3779b9
mov edx, 0x9e3779b9
mov edi, ecx
mov ecx, ebx
nop
add edi, dword [eax + 4]
mov ebx, dword [eax + 8]
add ebx, ecx
add edx, dword [eax]
sub edx, edi
sub edx, ebx
mov ecx, ebx
shr ecx, 0xd
xor edx, ecx
sub edi, ebx
sub edi, edx
mov ecx, edx
shl ecx, 8
xor ecx, edi
mov edi, ebx
sub edi, edx
sub edi, ecx
mov ebx, ecx
shr ebx, 0xd
xor ebx, edi
sub edx, ecx
sub edx, ebx
mov edi, ebx
shr edi, 0xc
xor edi, edx
mov edx, ecx
sub edx, ebx
sub edx, edi
mov ecx, edi
shl ecx, 0x10
xor ecx, edx
mov edx, ebx
sub edx, edi
sub edx, ecx
mov ebx, ecx
shr ebx, 5
xor ebx, edx
sub edi, ecx
sub edi, ebx
mov edx, ebx
shr edx, 3
xor edx, edi
sub ecx, ebx
sub ecx, edx
mov edi, edx
shl edi, 0xa
xor edi, ecx
sub ebx, edx
sub ebx, edi
mov ecx, edi
shr ecx, 0xf
xor ecx, ebx
add eax, 0xc
sub esi, 0xc
cmp esi, 0xb
ja 0x4907b4
mov dword [ebp - 0x10], esi
mov ebx, ecx
mov ecx, edi
add ebx, dword [ebp + 0xc]
cmp dword [ebp - 0x10], 0xb
ja case.0x490849.0
mov esi, dword [ebp - 0x10]
jmp dword [esi*4 + 0x4f2384]
movzx esi, byte [eax + 0xa]
shl esi, 0x18
add ebx, esi
movzx esi, byte [eax + 9]
shl esi, 0x10
add ebx, esi
movzx esi, byte [eax + 8]
shl esi, 8
add ebx, esi
movzx esi, byte [eax + 7]
shl esi, 0x18
add ecx, esi
movzx esi, byte [eax + 6]
shl esi, 0x10
add ecx, esi
movzx esi, byte [eax + 5]
shl esi, 8
add ecx, esi
movzx esi, byte [eax + 4]
add ecx, esi
movzx esi, byte [eax + 3]
shl esi, 0x18
add edx, esi
movzx esi, byte [eax + 2]
shl esi, 0x10
add edx, esi
movzx esi, byte [eax + 1]
shl esi, 8
add edx, esi
movzx eax, byte [eax]
add edx, eax
jmp case.0x490849.0
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x10], edx
mov ecx, 0x9e3779b9
mov edx, 0x9e3779b9
jmp 0x490839
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x10], esi
mov ecx, 0x9e3779b9
mov edx, 0x9e3779b9
jmp 0x490839