Function at 0x471de0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
test ecx, ecx
movzx edx, byte [eax]
je 0x471f62
movzx ebp, byte [eax + 1]
movzx eax, byte [eax + 2]
shl ebp, 8
shl eax, 0x10
or ebp, eax
mov eax, dword [esp + 0x50]
or ebp, edx
movzx eax, byte [eax + 3]
shl eax, 0x18
or ebp, eax
mov eax, dword [esp + 0x50]
movzx edx, byte [eax + 4]
movzx ecx, byte [eax + 5]
movzx eax, byte [eax + 6]
shl ecx, 8
shl eax, 0x10
or ecx, eax
mov eax, dword [esp + 0x50]
or ecx, edx
movzx eax, byte [eax + 7]
shl eax, 0x18
or ecx, eax
cmp dword [esp + 0x48], 7
jbe 0x471f38
mov eax, dword [esp + 0x48]
mov edx, ebp
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x40]
mov dword [esp], eax
lea eax, [esp + 0x24]
mov dword [esp + 8], eax
movzx ebp, byte [ebx + 1]
add ebx, 8
add esi, 8
movzx eax, byte [ebx - 6]
movzx edi, byte [ebx - 8]
shl ebp, 8
shl eax, 0x10
or ebp, eax
movzx eax, byte [ebx - 5]
or ebp, edi
movzx edi, byte [ebx - 2]
shl eax, 0x18
or ebp, eax
movzx eax, byte [ebx - 4]
shl edi, 0x10
xor ebp, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x24], ebp
mov dword [esp + 4], eax
movzx eax, byte [ebx - 3]
shl eax, 8
or eax, edi
movzx edi, byte [ebx - 1]
or eax, dword [esp + 4]
shl edi, 0x18
or eax, edi
xor eax, ecx
mov ecx, 1
mov dword [esp + 0x28], eax
mov eax, dword [esp + 8]
call fcn.0046f9e0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
sub dword [esp], 8
mov eax, edx
shr eax, 8
mov byte [esi - 7], al
mov eax, edx
shr eax, 0x10
mov byte [esi - 6], al
mov eax, edx
shr eax, 0x18
mov byte [esi - 5], al
mov eax, ecx
shr eax, 8
mov byte [esi - 3], al
mov eax, ecx
shr eax, 0x10
mov byte [esi - 2], al
mov eax, ecx
mov byte [esi - 8], dl
shr eax, 0x18
mov byte [esi - 4], cl
cmp dword [esp], 7
mov byte [esi - 1], al
ja 0x471e64
mov eax, dword [esp + 0x48]
mov ebp, edx
and dword [esp + 0x48], 7
sub eax, 8
shr eax, 3
lea eax, [eax*8 + 8]
add dword [esp + 0x40], eax
add dword [esp + 0x44], eax
mov edx, dword [esp + 0x48]
test edx, edx
je 0x472110
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x48]
cmp dword [esp + 0x48], 7
ja case.0x471f5b.0
mov edi, dword [esp + 0x48]
jmp dword [edi*4 + 0x53f720]
movzx eax, byte [eax + 1]
mov dword [esp], eax
mov eax, dword [esp + 0x50]
shl dword [esp], 8
movzx eax, byte [eax + 2]
shl eax, 0x10
or dword [esp], eax
mov eax, dword [esp + 0x50]
or dword [esp], edx
movzx eax, byte [eax + 3]
shl eax, 0x18
or dword [esp], eax
mov eax, dword [esp + 0x50]
movzx edx, byte [eax + 4]
movzx eax, byte [eax + 5]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
shl dword [esp + 4], 8
movzx eax, byte [eax + 6]
shl eax, 0x10
or dword [esp + 4], eax
mov eax, dword [esp + 0x50]
or dword [esp + 4], edx
movzx eax, byte [eax + 7]
shl eax, 0x18
or dword [esp + 4], eax
cmp dword [esp + 0x48], 7
jbe 0x472321
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x24]
mov dword [esp + 8], eax
jmp 0x471fef
mov dword [esp + 4], edi
mov dword [esp], ebp
movzx ebp, byte [ebx + 1]
add ebx, 8
xor ecx, ecx
movzx eax, byte [ebx - 6]
add esi, 8
movzx edx, byte [ebx - 8]
movzx edi, byte [ebx - 3]
shl ebp, 8
shl eax, 0x10
or ebp, eax
movzx eax, byte [ebx - 5]
or ebp, edx
movzx edx, byte [ebx - 4]
shl edi, 8
shl eax, 0x18
or ebp, eax
movzx eax, byte [ebx - 2]
mov dword [esp + 0x24], ebp
shl eax, 0x10
or edi, eax
movzx eax, byte [ebx - 1]
or edi, edx
mov edx, dword [esp + 0x4c]
shl eax, 0x18
or edi, eax
mov eax, dword [esp + 8]
mov dword [esp + 0x28], edi
call fcn.0046f9e0
mov ecx, dword [esp]
xor ecx, dword [esp + 0x24]
mov eax, dword [esp + 4]
xor eax, dword [esp + 0x28]
mov edx, ecx
shr edx, 8
mov byte [esi - 7], dl
mov edx, ecx
shr edx, 0x10
mov byte [esi - 6], dl
mov edx, eax
shr edx, 8
mov byte [esi - 3], dl
mov edx, eax
mov byte [esi - 8], cl
shr edx, 0x10
shr ecx, 0x18
sub dword [esp + 0x18], 8
mov byte [esi - 4], al
shr eax, 0x18
mov byte [esi - 5], cl
mov byte [esi - 2], dl
cmp dword [esp + 0x18], 7
mov byte [esi - 1], al
ja 0x471fe8
mov eax, dword [esp + 0x48]
and dword [esp + 0x48], 7
sub eax, 8
shr eax, 3
lea eax, [eax*8 + 8]
add dword [esp + 0x40], eax
add dword [esp + 0x44], eax
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x472237
mov ecx, dword [esp + 0x50]
mov eax, ebp
mov byte [ecx], al
mov eax, ebp
shr eax, 8
mov byte [ecx + 1], al
mov eax, ebp
shr eax, 0x10
mov byte [ecx + 2], al
mov eax, ebp
shr eax, 0x18
mov byte [ecx + 3], al
mov eax, edi
mov byte [ecx + 4], al
mov eax, edi
shr eax, 8
mov byte [ecx + 5], al
mov eax, edi
shr eax, 0x10
mov byte [ecx + 6], al
mov eax, edi
shr eax, 0x18
mov byte [ecx + 7], al
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, ebp
mov esi, ebp
shr eax, 8
mov edi, ecx
mov dword [esp], eax
mov eax, ebp
shr eax, 0x10
mov dword [esp + 4], eax
mov eax, ecx
shr eax, 8
mov ebx, eax
mov eax, ecx
shr ebp, 0x18
shr eax, 0x10
mov dword [esp + 8], ebp
mov edx, eax
shr ecx, 0x18
mov ebp, dword [esp + 0x50]
mov eax, esi
mov byte [ebp], al
movzx eax, byte [esp]
mov byte [ebp + 5], bl
mov byte [ebp + 6], dl
mov byte [ebp + 7], cl
mov byte [ebp + 1], al
movzx eax, byte [esp + 4]
mov byte [ebp + 2], al
movzx eax, byte [esp + 8]
mov byte [ebp + 3], al
mov eax, edi
mov byte [ebp + 4], al
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
movzx esi, byte [eax - 1]
sub eax, 1
shl esi, 0x10
movzx edx, byte [eax - 1]
lea ebx, [eax - 1]
shl edx, 8
or edx, esi
movzx esi, byte [ebx - 1]
lea eax, [ebx - 1]
or esi, edx
movzx ebx, byte [eax - 1]
lea edx, [eax - 1]
shl ebx, 0x18
lea eax, [edx - 1]
movzx edx, byte [edx - 1]
shl edx, 0x10
or edx, ebx
lea ebx, [eax - 1]
movzx eax, byte [eax - 1]
shl eax, 8
or eax, edx
movzx edx, byte [ebx - 1]
xor ecx, esi
mov dword [esp + 0x28], ecx
mov ecx, 1
or edx, eax
xor edx, ebp
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
lea eax, [esp + 0x24]
call fcn.0046f9e0
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x44]
mov edx, eax
mov esi, eax
shr edx, 8
mov byte [edi], al
mov byte [edi + 1], dl
mov byte [esp], dl
mov edx, eax
shr eax, 0x18
mov byte [edi + 3], al
shr edx, 0x10
mov byte [esp + 8], al
mov eax, dword [esp + 0x28]
mov byte [edi + 2], dl
mov byte [esp + 4], dl
mov edx, eax
mov edi, eax
shr edx, 8
mov byte [ecx + 4], al
mov ebx, edx
mov byte [ecx + 5], dl
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov edx, ecx
mov byte [ebp + 6], cl
mov ecx, eax
mov byte [ebp + 7], al
jmp 0x47213d
mov eax, dword [esp + 0x40]
xor ecx, ecx
movzx edx, byte [eax]
movzx esi, byte [eax + 1]
movzx eax, byte [eax + 2]
shl esi, 8
shl eax, 0x10
or esi, eax
mov eax, dword [esp + 0x40]
or esi, edx
movzx eax, byte [eax + 3]
shl eax, 0x18
or esi, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x24], esi
movzx edx, byte [eax + 4]
movzx ebx, byte [eax + 5]
movzx eax, byte [eax + 6]
shl ebx, 8
shl eax, 0x10
or ebx, eax
mov eax, dword [esp + 0x40]
or ebx, edx
mov edx, dword [esp + 0x4c]
movzx eax, byte [eax + 7]
shl eax, 0x18
or ebx, eax
lea eax, [esp + 0x24]
mov dword [esp + 0x28], ebx
call fcn.0046f9e0
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x44]
xor edi, dword [esp + 0x28]
add eax, dword [esp + 0x48]
xor edx, ebp
cmp dword [esp + 0x48], 7
mov ecx, edi
mov dword [esp], edx
ja case.0x4722c1.0
mov edi, dword [esp + 0x48]
jmp dword [edi*4 + 0x53f740]
mov edi, ecx
sub eax, 1
shr edi, 0x10
mov edx, edi
mov byte [eax], dl
mov edi, ecx
shr edi, 8
mov edx, edi
lea ebp, [eax - 1]
mov byte [eax - 1], dl
lea eax, [ebp - 1]
mov byte [ebp - 1], cl
mov edi, dword [esp]
lea ecx, [eax - 1]
shr edi, 0x18
mov edx, edi
mov byte [eax - 1], dl
mov edi, dword [esp]
lea eax, [ecx - 1]
shr edi, 0x10
mov edx, edi
mov byte [ecx - 1], dl
mov edi, dword [esp]
lea ecx, [eax - 1]
shr edi, 8
mov edx, edi
mov byte [eax - 1], dl
movzx eax, byte [esp]
mov edi, ebx
mov ebp, esi
mov byte [ecx - 1], al
jmp 0x4720c5
mov edi, dword [esp + 4]
mov ebp, dword [esp]
jmp 0x4720b9
xor esi, esi
xor edx, edx
jmp 0x4721a8
mov edx, eax
xor esi, esi
xor ebx, ebx
jmp 0x47219c
xor esi, esi
jmp 0x472192
mov ebx, eax
xor edx, edx
jmp 0x472189
mov ebx, eax
xor esi, esi
xor eax, eax
jmp 0x4721b4
xor esi, esi
jmp 0x47217d
mov ebp, eax
jmp 0x4722e1
mov ecx, eax
lea esi, [esi]
jmp 0x4722f5
mov ecx, eax
jmp 0x472311