Function at 0x470990
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
mov eax, dword [esp + 0x30]
push ebx
push esi
mov esi, dword [esp + 0x30]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, esi
call fcn.00494500
mov edx, dword [esi + 8]
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0xc]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
sub edx, eax
mov eax, dword [esp + 0x1c]
mov ebx, edx
sar edx, 3
and ebx, 7
cmp eax, esi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x30], edx
mov dword [esp + 8], eax
jge 0x470c12
imul eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x34]
push ebp
mov dword [esp + 0x10], ecx
push edi
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
lea ecx, [ecx + esi*4]
add ecx, edi
test edx, edx
jle 0x470bab
mov edi, edx
mov edx, dword [ecx]
mov esi, edx
xor esi, eax
and esi, 0xfefefe
mov ebp, edx
and ebp, eax
lea esi, [esi + ebp*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx], edx
mov edx, dword [ecx + 4]
mov ebp, edx
mov esi, edx
and esi, eax
xor ebp, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + 4], edx
mov edx, dword [ecx + 8]
mov ebp, edx
mov esi, edx
and esi, eax
xor ebp, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + 8], edx
mov edx, dword [ecx + 0xc]
mov ebp, edx
mov esi, edx
and esi, eax
xor ebp, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + 0xc], edx
mov edx, dword [ecx + 0x10]
mov ebp, edx
mov esi, edx
and esi, eax
xor ebp, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + 0x10], edx
mov edx, dword [ecx + 0x14]
mov ebp, edx
mov esi, edx
xor ebp, eax
and esi, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + 0x14], edx
mov edx, dword [ecx + 0x18]
mov ebp, edx
mov esi, edx
and esi, eax
xor ebp, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + 0x18], edx
mov edx, dword [ecx + 0x1c]
mov ebp, edx
mov esi, edx
and esi, eax
xor ebp, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + 0x1c], edx
add ecx, 0x20
dec edi
jne 0x470a08
mov edx, dword [esp + 0x38]
xor edi, edi
test ebx, ebx
jle 0x470bed
mov edx, dword [ecx + edi*4]
mov ebp, edx
mov esi, edx
and esi, eax
xor ebp, eax
and ebp, 0xfefefe
lea esi, [ebp + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, eax
or edx, esi
mov dword [ecx + edi*4], edx
inc edi
cmp edi, ebx
jl 0x470bb1
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x2c]
inc esi
add ecx, ebp
cmp esi, edi
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], ecx
jl 0x4709f1
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
add esp, 0x20
ret