Function at 0x55ab20
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.005617c0
mov esi, dword [esp + 0x20]
mov eax, dword [esi]
push 0x10
push eax
push edi
call fcn.005617c0
mov ecx, dword [esi + 4]
push 0x18
push ecx
push edi
call fcn.005617c0
mov ecx, dword [esi + 4]
mov eax, 1
add esp, 0x24
cmp ecx, eax
jle 0x55ab7e
mov ebx, dword [esi + 8]
cmp dword [ebx], 0
je 0x55ab7e
mov edx, dword [esi + 8]
mov ebp, dword [edx + eax*4]
cmp ebp, dword [edx + eax*4 - 4]
lea edx, [edx + eax*4]
jl 0x55ab7e
inc eax
add ebx, 4
cmp eax, ecx
jl 0x55ab62
cmp eax, ecx
push 1
jne 0x55ac12
push 1
push edi
xor ebp, ebp
call fcn.005617c0
mov eax, dword [esi + 8]
mov ecx, dword [eax]
push 5
dec ecx
push ecx
push edi
call fcn.005617c0
mov eax, dword [esi + 4]
mov ebx, 1
add esp, 0x18
cmp eax, ebx
jle 0x55abf5
mov edx, dword [esi + 8]
mov eax, dword [edx + ebx*4]
lea ecx, [edx + ebx*4]
mov ecx, dword [ecx - 4]
cmp eax, ecx
jle 0x55abed
sub eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esi + 4]
sub eax, ebp
push eax
call fcn.00551d80
push eax
mov ecx, ebx
sub ecx, ebp
push ecx
push edi
call fcn.005617c0
mov eax, dword [esp + 0x24]
add esp, 0x10
dec eax
mov ebp, ebx
mov dword [esp + 0x14], eax
jne 0x55abc6
mov eax, dword [esi + 4]
inc ebx
cmp ebx, eax
jl 0x55abb0
mov edx, dword [esi + 4]
sub edx, ebp
push edx
call fcn.00551d80
push eax
sub ebx, ebp
push ebx
push edi
call fcn.005617c0
add esp, 0x10
jmp 0x55accb
push 0
push edi
call fcn.005617c0
mov ecx, dword [esi + 4]
add esp, 0xc
xor eax, eax
test ecx, ecx
jle 0x55ac3d
mov edx, dword [esi + 8]
lea esp, [esp]
cmp dword [edx], 0
je 0x55ac3d
inc eax
add edx, 4
cmp eax, ecx
jl 0x55ac30
cmp eax, ecx
push 1
jne 0x55ac74
push 0
push edi
call fcn.005617c0
mov eax, dword [esi + 4]
add esp, 0xc
xor ebx, ebx
test eax, eax
jle 0x55accb
mov eax, dword [esi + 8]
mov ecx, dword [eax + ebx*4]
push 5
dec ecx
push ecx
push edi
call fcn.005617c0
mov eax, dword [esi + 4]
add esp, 0xc
inc ebx
cmp ebx, eax
jl 0x55ac57
jmp 0x55accb
push 1
push edi
call fcn.005617c0
mov eax, dword [esi + 4]
add esp, 0xc
xor ebx, ebx
test eax, eax
jle 0x55accb
jmp 0x55ac90
mov edx, dword [esi + 8]
cmp dword [edx + ebx*4], 0
push 1
jne 0x55aca8
push 0
push edi
call fcn.005617c0
add esp, 0xc
jmp 0x55acc3
push 1
push edi
call fcn.005617c0
mov eax, dword [esi + 8]
mov ecx, dword [eax + ebx*4]
push 5
dec ecx
push ecx
push edi
call fcn.005617c0
add esp, 0x18
mov eax, dword [esi + 4]
inc ebx
cmp ebx, eax
jl 0x55ac90
mov edx, dword [esi + 0xc]
push 4
push edx
push edi
call fcn.005617c0
mov eax, dword [esi + 0xc]
add esp, 0xc
test eax, eax
je 0x55ad7e
jle 0x55ad85
cmp eax, 2
jg 0x55ad85
mov eax, dword [esi + 0x20]
test eax, eax
je 0x55ad85
mov eax, dword [esi + 0x10]
push 0x20
push eax
push edi
call fcn.005617c0
mov ecx, dword [esi + 0x14]
push 0x20
push ecx
push edi
call fcn.005617c0
mov edx, dword [esi + 0x18]
push 4
dec edx
push edx
push edi
call fcn.005617c0
mov eax, dword [esi + 0x1c]
push 1
push eax
push edi
call fcn.005617c0
mov eax, dword [esi + 0xc]
add esp, 0x30
dec eax
je 0x55ad49
dec eax
je 0x55ad41
or ebp, 0xffffffff
jmp 0x55ad54
mov ebp, dword [esi + 4]
imul ebp, dword [esi]
jmp 0x55ad54
push esi
call fcn.00551f20
add esp, 4
mov ebp, eax
xor ebx, ebx
test ebp, ebp
jle 0x55ad7e
lea ebx, [ebx]
mov edx, dword [esi + 0x20]
mov eax, dword [edx + ebx*4]
mov ecx, dword [esi + 0x18]
cdq
xor eax, edx
push ecx
sub eax, edx
push eax
push edi
call fcn.005617c0
add esp, 0xc
inc ebx
cmp ebx, ebp
jl 0x55ad60
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret