Function at 0x470560
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 8
mov esi, dword [ebp + 8]
test esi, 3
jne 0x470641
cmp dword [ebp + 0xc], 0xb
jbe 0x47084f
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], 0x9e3779b9
mov ebx, 0x9e3779b9
mov eax, dword [esi + 4]
mov ecx, ebx
add ecx, eax
mov edx, dword [esi]
mov ebx, edi
mov eax, dword [ebp - 0x14]
mov edi, dword [esi + 8]
add eax, edx
add ebx, edi
sub eax, ebx
mov edx, ebx
shr edx, 0xd
sub eax, ecx
xor eax, edx
sub ecx, ebx
mov edx, eax
sub ecx, eax
shl edx, 8
sub ebx, eax
xor edx, ecx
mov ecx, edx
sub ebx, edx
shr ecx, 0xd
sub eax, edx
xor ecx, ebx
mov ebx, ecx
sub eax, ecx
shr ebx, 0xc
sub edx, ecx
xor ebx, eax
mov eax, ebx
sub edx, ebx
shl eax, 0x10
sub ecx, ebx
xor eax, edx
mov edx, eax
sub ecx, eax
shr edx, 5
sub ebx, eax
xor edx, ecx
mov ecx, edx
sub ebx, edx
shr ecx, 3
sub eax, edx
xor ecx, ebx
mov ebx, ecx
sub eax, ecx
shl ebx, 0xa
sub edx, ecx
xor ebx, eax
mov eax, dword [ebp - 0x10]
sub eax, 0xc
mov edi, ebx
sub edx, ebx
mov dword [ebp - 0x10], eax
shr edi, 0xf
add esi, 0xc
xor edi, edx
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], 0xb
ja 0x470597
mov ecx, dword [ebp + 0xc]
add edi, ecx
cmp dword [ebp - 0x10], 0xb
ja case.0x47063a.0
mov ecx, dword [ebp - 0x10]
jmp dword [ecx*4 + 0x4aa640]
cmp dword [ebp + 0xc], 0xb
jbe 0x47084f
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], 0x9e3779b9
mov ebx, 0x9e3779b9
xor ecx, ecx
xor eax, eax
mov cl, byte [esi + 5]
mov al, byte [esi + 6]
shl eax, 0x10
xor edx, edx
shl ecx, 8
mov dl, byte [esi + 1]
shl edx, 8
add ecx, eax
xor eax, eax
mov al, byte [esi + 4]
add ecx, eax
xor eax, eax
mov al, byte [esi + 7]
shl eax, 0x18
add ecx, eax
xor eax, eax
add ecx, ebx
xor ebx, ebx
mov bl, byte [esi + 9]
mov al, byte [esi + 0xa]
shl eax, 0x10
shl ebx, 8
add ebx, eax
xor eax, eax
mov al, byte [esi + 8]
add ebx, eax
xor eax, eax
mov al, byte [esi + 0xb]
shl eax, 0x18
add ebx, eax
xor eax, eax
mov al, byte [esi + 2]
add ebx, edi
shl eax, 0x10
add edx, eax
xor eax, eax
mov al, byte [esi]
add edx, eax
xor eax, eax
mov al, byte [esi + 3]
shl eax, 0x18
add edx, eax
mov eax, dword [ebp - 0x14]
add edx, eax
mov eax, ebx
sub edx, ebx
shr eax, 0xd
sub edx, ecx
xor edx, eax
sub ecx, ebx
mov eax, edx
sub ecx, edx
shl eax, 8
sub ebx, edx
xor eax, ecx
mov ecx, eax
sub ebx, eax
shr ecx, 0xd
sub edx, eax
xor ecx, ebx
mov ebx, ecx
sub edx, ecx
shr ebx, 0xc
sub eax, ecx
xor ebx, edx
mov edx, ebx
sub eax, ebx
shl edx, 0x10
sub ecx, ebx
xor edx, eax
mov eax, edx
sub ecx, edx
shr eax, 5
sub ebx, edx
xor eax, ecx
mov ecx, eax
sub ebx, eax
shr ecx, 3
sub edx, eax
xor ecx, ebx
mov ebx, ecx
sub edx, ecx
shl ebx, 0xa
sub eax, ecx
xor ebx, edx
mov dword [ebp - 0x14], ecx
mov edi, ebx
sub eax, ebx
shr edi, 0xf
add esi, 0xc
xor edi, eax
mov eax, dword [ebp - 0x10]
sub eax, 0xc
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0xb
ja 0x470660
mov ecx, dword [ebp + 0xc]
add edi, ecx
cmp dword [ebp - 0x10], 0xb
jbe 0x470637
lea esi, [esi]
mov eax, dword [ebp - 0x14]
mov edx, edi
shr edx, 0xd
sub eax, ebx
sub eax, edi
sub ebx, edi
xor eax, edx
mov edx, eax
sub ebx, eax
shl edx, 8
sub edi, eax
xor edx, ebx
mov ecx, edx
sub edi, edx
shr ecx, 0xd
sub eax, edx
xor ecx, edi
mov ebx, ecx
sub eax, ecx
shr ebx, 0xc
sub edx, ecx
xor ebx, eax
mov esi, ebx
sub edx, ebx
shl esi, 0x10
sub ecx, ebx
xor esi, edx
mov edx, esi
sub ecx, esi
shr edx, 5
sub ebx, esi
xor edx, ecx
mov ecx, edx
sub ebx, edx
shr ecx, 3
sub esi, edx
xor ecx, ebx
mov eax, ecx
sub esi, ecx
shl eax, 0xa
sub edx, ecx
xor eax, esi
sub edx, eax
shr eax, 0xf
xor eax, edx
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
xor eax, eax
mov al, byte [esi + 0xa]
shl eax, 0x18
add edi, eax
xor eax, eax
mov al, byte [esi + 9]
shl eax, 0x10
add edi, eax
xor eax, eax
mov al, byte [esi + 8]
shl eax, 8
add edi, eax
xor eax, eax
mov al, byte [esi + 7]
shl eax, 0x18
add ebx, eax
xor eax, eax
mov al, byte [esi + 6]
shl eax, 0x10
add ebx, eax
xor eax, eax
mov al, byte [esi + 5]
shl eax, 8
add ebx, eax
xor eax, eax
mov al, byte [esi + 4]
add ebx, eax
xor eax, eax
mov edx, dword [ebp - 0x14]
mov al, byte [esi + 3]
shl eax, 0x18
add edx, eax
mov dword [ebp - 0x14], edx
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov al, byte [esi + 2]
shl eax, 0x10
add ecx, eax
mov dword [ebp - 0x14], ecx
xor eax, eax
mov edx, dword [ebp - 0x14]
mov al, byte [esi + 1]
shl eax, 8
add edx, eax
mov dword [ebp - 0x14], edx
xor eax, eax
mov al, byte [esi]
mov esi, dword [ebp - 0x14]
add esi, eax
mov dword [ebp - 0x14], esi
jmp case.0x47063a.0
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov ebx, 0x9e3779b9
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], 0x9e3779b9
jmp 0x470628