Function at 0x478e70
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 0x4790b9
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041b260
pop edi
mov esi, dword [ebp + 0x18]
push esi
call fcn.0041b110
add esp, 0x10
mov dword [ebp - 0x48], eax
test eax, eax
je 0x4790b5
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 0x4790a1
mov edx, dword [ebp - 0x48]
test ebx, ebx
mov dword [edx + 4], ebx
jle 0x478ee3
xor edx, edx
mov ecx, dword [ebp - 0x48]
mov eax, dword [ecx]
mov dword [eax + edx*4], 0
inc edx
cmp edx, ebx
jne 0x478ed2
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x479046
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 0x478f2c
mov eax, dword [ebp - 0x34]
mov edx, dword [eax + edx + 4]
mov dword [ebp - 0x44], edx
test esi, esi
jle 0x47902b
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 0x478f6c
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.00478640
mov eax, dword [ebp - 0x40]
push eax
mov ecx, edi
lea edx, [ebp - 0x24]
lea eax, [ebp - 0x20]
call fcn.00478640
mov esi, dword [ebp - 0x3c]
mov ecx, ebx
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x10]
push esi
call fcn.00478640
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 0x478fe8
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 0x478f50
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 0x478f05
mov edx, dword [ebp - 0x48]
mov ecx, dword [edx + 4]
test ecx, ecx
jle 0x47906a
mov eax, dword [edx]
sub eax, 4
lea edx, [eax + ecx*4]
mov eax, dword [edx]
sub edx, 4
test eax, eax
jne 0x479064
dec ecx
jne 0x479058
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.00478950
add esp, 0x10
test eax, eax
je 0x4790b5
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041b000
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.0041c100
add esp, 0x10
test eax, eax
jne 0x478ec6
xor ebx, ebx
jmp 0x479088
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.00478c20
mov ebx, eax
add esp, 0x10
mov eax, ebx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret