Function at 0x478e40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [ebp + 0x10]
cmp dword [ebp + 0xc], eax
je 0x479089
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041b230
pop edi
mov esi, dword [ebp + 0x18]
push esi
call fcn.0041b0e0
add esp, 0x10
mov dword [ebp - 0x48], eax
test eax, eax
je 0x479085
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov eax, dword [edx + 4]
mov ebx, dword [ecx + 4]
add eax, ebx
lea ebx, [eax + 4]
mov eax, dword [ebp - 0x48]
cmp ebx, dword [eax + 8]
jg 0x479071
mov edx, dword [ebp - 0x48]
test ebx, ebx
mov dword [edx + 4], ebx
jle 0x478eb3
xor edx, edx
mov ecx, dword [ebp - 0x48]
mov eax, dword [ecx]
mov dword [eax + edx*4], 0
inc edx
cmp edx, ebx
jne 0x478ea2
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x479016
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x34], 0
mov esi, dword [edx + 4]
mov eax, dword [ebp + 0x10]
mov edx, dword [eax]
mov eax, dword [ebp - 0x34]
mov eax, dword [edx + eax]
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x4c]
inc eax
cmp ecx, eax
je 0x478efc
mov eax, dword [ebp - 0x34]
mov edx, dword [eax + edx + 4]
mov dword [ebp - 0x44], edx
test esi, esi
jle 0x478ffb
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
xor edx, eax
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x30], 0
lea esi, [esi]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0x30]
shl edx, 2
xor ebx, ebx
mov ecx, dword [eax]
mov eax, dword [ebp - 0x30]
inc eax
mov edi, dword [ecx + edx]
cmp esi, eax
je 0x478f3c
mov ebx, dword [edx + ecx + 4]
mov eax, dword [ebp - 0x44]
mov ecx, ebx
push eax
lea edx, [ebp - 0x1c]
lea eax, [ebp - 0x18]
xor ebx, edi
call fcn.00478610
mov eax, dword [ebp - 0x40]
push eax
mov ecx, edi
lea edx, [ebp - 0x24]
lea eax, [ebp - 0x20]
call fcn.00478610
mov esi, dword [ebp - 0x3c]
mov ecx, ebx
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x10]
push esi
call fcn.00478610
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x10]
xor eax, ebx
mov edx, dword [ebp - 0x18]
xor eax, ecx
mov edi, dword [ebp - 0x24]
xor eax, edx
xor edx, ecx
mov esi, dword [ebp - 0x14]
xor edx, edi
xor edx, esi
mov ecx, dword [ebp - 0x48]
xor edx, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0x38]
mov ebx, dword [ecx]
mov eax, dword [ebp - 0x24]
add edx, ebx
add esp, 0xc
mov ebx, 2
mov ecx, dword [edx]
xor ecx, eax
mov dword [edx], ecx
mov ecx, dword [ebp - 0x38]
add ecx, 4
mov eax, dword [ebp - 0x48]
mov edx, ecx
add ecx, 4
mov edi, dword [eax]
mov eax, dword [ebp + ebx*4 - 0x28]
add edx, edi
inc ebx
mov esi, dword [edx]
xor esi, eax
cmp ebx, 5
mov dword [edx], esi
jne 0x478fb8
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp + 0xc]
add eax, 2
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x38]
mov esi, dword [edx + 4]
add eax, 8
mov dword [ebp - 0x38], eax
cmp esi, dword [ebp - 0x30]
jg 0x478f20
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 4]
mov eax, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x34]
add eax, 2
add edi, 8
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x34], edi
cmp ecx, dword [ebp - 0x4c]
jg 0x478ed5
mov edx, dword [ebp - 0x48]
mov ecx, dword [edx + 4]
test ecx, ecx
jle 0x47903a
mov eax, dword [edx]
sub eax, 4
lea edx, [eax + ecx*4]
mov eax, dword [edx]
sub edx, 4
test eax, eax
jne 0x479034
dec ecx
jne 0x479028
mov eax, dword [ebp - 0x48]
mov dword [eax + 4], ecx
push ebx
mov ebx, 1
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp - 0x48]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00478920
add esp, 0x10
test eax, eax
je 0x479085
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041afd0
mov eax, ebx
add esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
push edx
push edx
push ebx
push eax
call fcn.0041c0d0
add esp, 0x10
test eax, eax
jne 0x478e96
xor ebx, ebx
jmp 0x479058
mov ecx, dword [ebp + 0x18]
push ecx
mov edx, dword [ebp + 0x14]
push edx
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00478bf0
mov ebx, eax
add esp, 0x10
mov eax, ebx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret