Function at 0x472ba0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x18]
push 0x18
push 0x564342
push edi
call fcn.00479a10
mov esi, dword [esp + 0x20]
mov eax, dword [esi]
push 0x10
push eax
push edi
call fcn.00479a10
mov ecx, dword [esi + 4]
push 0x18
push ecx
push edi
call fcn.00479a10
mov ebp, dword [esi + 4]
mov eax, 1
add esp, 0x24
cmp ebp, eax
jle 0x472bf9
mov edx, dword [esi + 8]
cmp byte [edx], 0
je 0x472bf9
mov ecx, dword [esi + 8]
mov bl, byte [ecx + eax]
cmp bl, byte [ecx + eax - 1]
jl 0x472bf9
inc eax
inc edx
cmp eax, ebp
jl 0x472be2
push 1
cmp eax, ebp
jne 0x472c95
push 1
push edi
xor ebp, ebp
call fcn.00479a10
mov edx, dword [esi + 8]
movsx eax, byte [edx]
push 5
dec eax
push eax
push edi
call fcn.00479a10
mov ebx, 1
add esp, 0x18
cmp dword [esi + 4], ebx
jle 0x472c78
lea ebx, [ebx]
mov ecx, dword [esi + 8]
lea eax, [ecx + ebx]
mov cl, byte [eax]
mov al, byte [eax - 1]
cmp cl, al
jle 0x472c72
movsx edx, al
movsx eax, cl
cmp edx, eax
jge 0x472c72
sub eax, edx
mov dword [esp + 0x14], eax
nop
mov edx, dword [esi + 4]
sub edx, ebp
push edx
call fcn.00471b30
push eax
mov eax, ebx
sub eax, ebp
push eax
push edi
call fcn.00479a10
add esp, 0x10
dec dword [esp + 0x14]
mov ebp, ebx
jne 0x472c50
inc ebx
cmp ebx, dword [esi + 4]
jl 0x472c30
mov ecx, dword [esi + 4]
sub ecx, ebp
push ecx
call fcn.00471b30
push eax
sub ebx, ebp
push ebx
push edi
call fcn.00479a10
add esp, 0x10
jmp 0x472d3b
push 0
push edi
call fcn.00479a10
mov ecx, dword [esi + 4]
add esp, 0xc
xor eax, eax
test ecx, ecx
jle 0x472cbb
mov edx, dword [esi + 8]
lea esp, [esp]
cmp byte [edx + eax], 0
je 0x472cbb
inc eax
cmp eax, ecx
jl 0x472cb0
push 1
cmp eax, ecx
jne 0x472cef
push 0
push edi
call fcn.00479a10
xor ebx, ebx
add esp, 0xc
cmp dword [esi + 4], ebx
jle 0x472d3b
mov edx, dword [esi + 8]
movsx eax, byte [edx + ebx]
push 5
dec eax
push eax
push edi
call fcn.00479a10
inc ebx
add esp, 0xc
cmp ebx, dword [esi + 4]
jl 0x472cd3
jmp 0x472d3b
push 1
push edi
call fcn.00479a10
xor ebx, ebx
add esp, 0xc
cmp dword [esi + 4], ebx
jle 0x472d3b
mov ecx, dword [esi + 8]
cmp byte [ebx + ecx], 0
push 1
jne 0x472d19
push 0
push edi
call fcn.00479a10
add esp, 0xc
jmp 0x472d35
push 1
push edi
call fcn.00479a10
mov edx, dword [esi + 8]
movsx eax, byte [edx + ebx]
push 5
dec eax
push eax
push edi
call fcn.00479a10
add esp, 0x18
inc ebx
cmp ebx, dword [esi + 4]
jl 0x472d01
mov ecx, dword [esi + 0xc]
push 4
push ecx
push edi
call fcn.00479a10
mov eax, dword [esi + 0xc]
add esp, 0xc
test eax, eax
je 0x472de2
dec eax
cmp eax, 1
ja 0x472d61
cmp dword [esi + 0x20], 0
jne 0x472d69
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov edx, dword [esi + 0x10]
push 0x20
push edx
push edi
call fcn.00479a10
mov eax, dword [esi + 0x14]
push 0x20
push eax
push edi
call fcn.00479a10
mov ecx, dword [esi + 0x18]
push 4
dec ecx
push ecx
push edi
call fcn.00479a10
mov edx, dword [esi + 0x1c]
push 1
push edx
push edi
call fcn.00479a10
mov eax, dword [esi + 0xc]
add esp, 0x30
dec eax
je 0x472db3
dec eax
je 0x472dab
or ebp, 0xffffffff
jmp 0x472dbe
mov ebp, dword [esi + 4]
imul ebp, dword [esi]
jmp 0x472dbe
push esi
call fcn.00471d30
add esp, 4
mov ebp, eax
xor ebx, ebx
test ebp, ebp
jle 0x472de2
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x20]
push eax
mov eax, dword [ecx + ebx*4]
cdq
xor eax, edx
sub eax, edx
push eax
push edi
call fcn.00479a10
inc ebx
add esp, 0xc
cmp ebx, ebp
jl 0x472dc4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret