Function at 0x41d7a0
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.00445950
mov esi, dword [esp + 0x20]
mov eax, dword [esi]
push 0x10
push eax
push edi
call fcn.00445950
mov ecx, dword [esi + 4]
push 0x18
push ecx
push edi
call fcn.00445950
mov ecx, dword [esi + 4]
mov eax, 1
add esp, 0x24
cmp ecx, eax
jle 0x41d7fe
mov ebx, dword [esi + 8]
cmp dword [ebx], 0
je 0x41d7fe
mov edx, dword [esi + 8]
mov ebp, dword [edx + eax*4]
cmp ebp, dword [edx + eax*4 - 4]
lea edx, [edx + eax*4]
jl 0x41d7fe
inc eax
add ebx, 4
cmp eax, ecx
jl 0x41d7e2
push 1
cmp eax, ecx
jne 0x41d88c
push 1
push edi
xor ebp, ebp
call fcn.00445950
mov eax, dword [esi + 8]
mov ecx, dword [eax]
push 5
dec ecx
push ecx
push edi
call fcn.00445950
mov ebx, 1
add esp, 0x18
cmp dword [esi + 4], ebx
jle 0x41d86f
mov edi, edi
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 0x41d869
sub eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esi + 4]
sub eax, ebp
push eax
call fcn.0041c960
push eax
mov ecx, ebx
sub ecx, ebp
push ecx
push edi
call fcn.00445950
add esp, 0x10
sub dword [esp + 0x14], 1
mov ebp, ebx
jne 0x41d846
inc ebx
cmp ebx, dword [esi + 4]
jl 0x41d830
mov edx, dword [esi + 4]
sub edx, ebp
push edx
call fcn.0041c960
push eax
sub ebx, ebp
push ebx
push edi
call fcn.00445950
add esp, 0x10
jmp 0x41d92e
push 0
push edi
call fcn.00445950
mov ecx, dword [esi + 4]
add esp, 0xc
xor eax, eax
test ecx, ecx
jle 0x41d8b0
mov edx, dword [esi + 8]
cmp dword [edx], 0
je 0x41d8b0
inc eax
add edx, 4
cmp eax, ecx
jl 0x41d8a3
push 1
cmp eax, ecx
jne 0x41d8e3
push 0
push edi
call fcn.00445950
xor ebx, ebx
add esp, 0xc
cmp dword [esi + 4], ebx
jle 0x41d92e
mov eax, dword [esi + 8]
mov ecx, dword [eax + ebx*4]
push 5
dec ecx
push ecx
push edi
call fcn.00445950
inc ebx
add esp, 0xc
cmp ebx, dword [esi + 4]
jl 0x41d8c8
jmp 0x41d92e
push 1
push edi
call fcn.00445950
xor ebx, ebx
add esp, 0xc
cmp dword [esi + 4], ebx
jle 0x41d92e
mov edx, dword [esi + 8]
cmp dword [edx + ebx*4], 0
push 1
jne 0x41d90d
push 0
push edi
call fcn.00445950
add esp, 0xc
jmp 0x41d928
push 1
push edi
call fcn.00445950
mov eax, dword [esi + 8]
mov ecx, dword [eax + ebx*4]
push 5
dec ecx
push ecx
push edi
call fcn.00445950
add esp, 0x18
inc ebx
cmp ebx, dword [esi + 4]
jl 0x41d8f5
mov edx, dword [esi + 0xc]
push 4
push edx
push edi
call fcn.00445950
mov eax, dword [esi + 0xc]
add esp, 0xc
test eax, eax
je 0x41d9de
dec eax
cmp eax, 1
ja 0x41d954
cmp dword [esi + 0x20], 0
jne 0x41d95c
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov eax, dword [esi + 0x10]
push 0x20
push eax
push edi
call fcn.00445950
mov ecx, dword [esi + 0x14]
push 0x20
push ecx
push edi
call fcn.00445950
mov edx, dword [esi + 0x18]
push 4
dec edx
push edx
push edi
call fcn.00445950
mov eax, dword [esi + 0x1c]
push 1
push eax
push edi
call fcn.00445950
mov eax, dword [esi + 0xc]
add esp, 0x30
sub eax, 1
je 0x41d9aa
sub eax, 1
je 0x41d9a2
or ebp, 0xffffffff
jmp 0x41d9b5
mov ebp, dword [esi + 4]
imul ebp, dword [esi]
jmp 0x41d9b5
push esi
call fcn.0041cb30
add esp, 4
mov ebp, eax
xor ebx, ebx
test ebp, ebp
jle 0x41d9de
jmp 0x41d9c0
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.00445950
inc ebx
add esp, 0xc
cmp ebx, ebp
jl 0x41d9c0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret