Function at 0x4411fa
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
mov ebx, ecx
mov dl, 0xe
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 4], ebx
call fcn.00440b7f
mov al, byte [edi + 0x16]
mov ecx, ebx
movzx esi, al
shr al, 3
and al, 1
movzx edx, al
mov eax, esi
add dx, dx
shr eax, 2
and eax, 1
and esi, 3
or dx, ax
movzx eax, byte [edi + 0x15]
shl dx, 2
or dx, si
shl dx, 8
or dx, ax
call fcn.00440b96
mov dl, byte [edi + 0x14]
mov ecx, ebx
call fcn.00440b7f
mov edx, dword [edi + 0x20]
mov ecx, ebx
call fcn.00440cb1
movzx edx, word [edi + 0x2c]
lea esi, [ebx + 4]
mov ecx, esi
mov dword [ebp - 8], esi
call fcn.0041984b
movzx edx, word [edi + 0x2e]
mov ecx, esi
call fcn.0041984b
movzx edx, word [edi + 0x30]
mov ecx, esi
call fcn.0041984b
movzx edx, word [edi + 0x32]
mov ecx, esi
call fcn.0041984b
mov edx, dword [edi + 0x40]
mov ecx, esi
call fcn.0041984b
mov edx, dword [edi + 0x3c]
mov ecx, esi
call fcn.0041984b
mov edx, dword [edi + 0x1c]
mov ecx, esi
call fcn.0041984b
xor ebx, ebx
mov ecx, esi
cmp dword [edi + 0x24], ebx
je 0x44134b
movzx edx, word [edi + 0x2e]
movzx eax, word [edi + 0x2c]
add edx, eax
call fcn.0041984b
movzx ecx, word [edi + 0x2e]
movzx eax, word [edi + 0x2c]
mov dword [ebp + 0xc], ebx
add ecx, eax
je 0x441352
mov edx, ebx
mov ebx, esi
mov dword [ebp - 0xc], edx
mov esi, dword [edi + 0x24]
mov ecx, dword [ebp - 4]
add esi, edx
mov edx, dword [esi]
call fcn.00440cb1
mov edx, dword [esi + 4]
mov ecx, ebx
call fcn.0041984b
mov edx, dword [esi + 8]
mov ecx, ebx
inc edx
call fcn.0041984b
mov al, byte [esi + 0xc]
mov esi, dword [ebp - 4]
movzx edx, al
and al, 5
mov ecx, edx
shr edx, 3
shr ecx, 1
and dl, 0xf
and cl, 1
add cl, cl
or cl, al
shl cl, 4
or dl, cl
mov ecx, esi
call fcn.00440b7f
mov edx, dword [ebp - 0xc]
movzx ecx, word [edi + 0x2e]
add edx, 0x14
movzx eax, word [edi + 0x2c]
inc dword [ebp + 0xc]
add ecx, eax
mov dword [ebp - 0xc], edx
cmp dword [ebp + 0xc], ecx
jl 0x4412e0
xor ebx, ebx
jmp 0x441355
xor edx, edx
call fcn.0041984b
mov esi, dword [ebp - 4]
mov eax, ebx
mov dword [ebp + 0xc], ebx
cmp dword [edi + 0x40], ebx
jle 0x4413ab
mov ebx, dword [ebp - 8]
mov esi, dword [edi + 0x28]
mov ecx, dword [ebp - 4]
mov edx, dword [esi + eax*8 + 4]
call fcn.00440cb1
mov eax, dword [ebp + 0xc]
mov ecx, ebx
movzx edx, word [esi + eax*8 + 2]
call fcn.0041984b
mov ecx, dword [ebp + 0xc]
mov al, byte [esi + ecx*8]
mov esi, dword [ebp - 4]
mov ecx, esi
movzx edx, al
and dl, 0xf8
xor dl, al
and dl, 8
xor dl, al
call fcn.00440b7f
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
cmp eax, dword [edi + 0x40]
jl 0x441362
xor ebx, ebx
push dword [edi + 0x1c]
mov edx, dword [edi + 0x18]
mov ecx, esi
call fcn.00440dbc
pop ecx
test eax, eax
jne 0x44141b
test byte [edi + 0x16], 4
je 0x4413f5
mov edx, dword [edi + 0x44]
mov ecx, esi
call fcn.00440cb1
mov esi, dword [ebp - 8]
mov ecx, esi
mov edx, dword [edi + 0x48]
call fcn.0041984b
mov edx, dword [edi + 0x50]
mov ecx, esi
call fcn.0041984b
push dword [edi + 0x50]
mov edx, dword [edi + 0x54]
mov ecx, esi
call fcn.00401186
mov esi, dword [ebp - 4]
pop ecx
cmp dword [edi + 0x3c], ebx
jle 0x441417
mov eax, dword [edi + 0x38]
mov ecx, esi
push dword [eax + ebx*8 + 4]
push dword [eax + ebx*8]
call fcn.00441820
pop ecx
pop ecx
test eax, eax
jne 0x44141b
inc ebx
cmp ebx, dword [edi + 0x3c]
jl 0x4413fa
xor eax, eax
jmp 0x44141e
or eax, 0xffffffff
pop edi
pop esi
pop ebx
leave
ret