Function at 0x4795a0
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 0x4797e9
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041b7f0
pop edi
mov esi, dword [ebp + 0x18]
push esi
call fcn.0041b6a0
add esp, 0x10
mov dword [ebp - 0x48], eax
test eax, eax
je 0x4797e5
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 0x4797d1
mov edx, dword [ebp - 0x48]
test ebx, ebx
mov dword [edx + 4], ebx
jle 0x479613
xor edx, edx
mov ecx, dword [ebp - 0x48]
mov eax, dword [ecx]
mov dword [eax + edx*4], 0
inc edx
cmp edx, ebx
jne 0x479602
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x479776
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 0x47965c
mov eax, dword [ebp - 0x34]
mov edx, dword [eax + edx + 4]
mov dword [ebp - 0x44], edx
test esi, esi
jle 0x47975b
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 0x47969c
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.00478d70
mov eax, dword [ebp - 0x40]
push eax
mov ecx, edi
lea edx, [ebp - 0x24]
lea eax, [ebp - 0x20]
call fcn.00478d70
mov esi, dword [ebp - 0x3c]
mov ecx, ebx
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x10]
push esi
call fcn.00478d70
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 0x479718
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 0x479680
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 0x479635
mov edx, dword [ebp - 0x48]
mov ecx, dword [edx + 4]
test ecx, ecx
jle 0x47979a
mov eax, dword [edx]
sub eax, 4
lea edx, [eax + ecx*4]
mov eax, dword [edx]
sub edx, 4
test eax, eax
jne 0x479794
dec ecx
jne 0x479788
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.00479080
add esp, 0x10
test eax, eax
je 0x4797e5
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041b590
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.0041c690
add esp, 0x10
test eax, eax
jne 0x4795f6
xor ebx, ebx
jmp 0x4797b8
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.00479350
mov ebx, eax
add esp, 0x10
mov eax, ebx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret