Function at 0x401a40
Capabilities:
Encode data using xor

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
mov r10d, dword [rcx]
mov eax, dword [rcx + 4]
lea r11, [rcx + 8]
mov rdi, rdx
shr rdi, 3
test rdi, rdi
je 0x401c6a
shl rdi, 3
mov rbx, r9
lea rsi, [r8 + rdi]
nop
add r10d, 1
add r8, 8
add rbx, 8
movzx ebp, r10b
lea r14, [r11 + rbp*4]
mov r10, rbp
mov ebp, dword [r14]
add r10d, 1
lea r12d, [rax + rbp]
movzx eax, r12b
lea r13, [r11 + rax*4]
mov r12, rax
mov eax, dword [r13]
mov dword [r14], eax
mov dword [r13], ebp
add ebp, eax
movzx ebp, bpl
mov eax, dword [r11 + rbp*4]
xor al, byte [r8 - 8]
mov byte [rbx - 8], al
movzx eax, r10b
lea r13, [r11 + rax*4]
mov r10, rax
mov ebp, dword [r13]
add r10d, 1
add r12d, ebp
movzx eax, r12b
lea r14, [r11 + rax*4]
mov r12, rax
mov eax, dword [r14]
mov dword [r13], eax
mov dword [r14], ebp
add ebp, eax
movzx ebp, bpl
mov eax, dword [r11 + rbp*4]
xor al, byte [r8 - 7]
mov byte [rbx - 7], al
movzx eax, r10b
lea r13, [r11 + rax*4]
mov r10, rax
mov ebp, dword [r13]
add r10d, 1
add r12d, ebp
movzx eax, r12b
lea r14, [r11 + rax*4]
mov r12, rax
mov eax, dword [r14]
mov dword [r13], eax
mov dword [r14], ebp
add ebp, eax
movzx ebp, bpl
mov eax, dword [r11 + rbp*4]
xor al, byte [r8 - 6]
mov byte [rbx - 6], al
movzx eax, r10b
lea r13, [r11 + rax*4]
mov r10, rax
mov eax, dword [r13]
add r10d, 1
add r12d, eax
movzx ebp, r12b
lea r14, [r11 + rbp*4]
mov r12, rbp
mov ebp, dword [r14]
mov dword [r13], ebp
mov dword [r14], eax
add eax, ebp
movzx eax, al
mov eax, dword [r11 + rax*4]
xor al, byte [r8 - 5]
mov byte [rbx - 5], al
movzx eax, r10b
lea r13, [r11 + rax*4]
mov r10, rax
mov ebp, dword [r13]
add r10d, 1
lea eax, [r12 + rbp]
movzx r12d, al
lea r14, [r11 + r12*4]
mov rax, r12
mov r12d, dword [r14]
mov dword [r13], r12d
mov dword [r14], ebp
add ebp, r12d
movzx ebp, bpl
mov ebp, dword [r11 + rbp*4]
xor bpl, byte [r8 - 4]
mov byte [rbx - 4], bpl
movzx ebp, r10b
lea r13, [r11 + rbp*4]
mov r10, rbp
mov ebp, dword [r13]
add r10d, 1
add eax, ebp
movzx r12d, al
lea r14, [r11 + r12*4]
mov rax, r12
mov r12d, dword [r14]
mov dword [r13], r12d
mov dword [r14], ebp
add ebp, r12d
movzx ebp, bpl
mov ebp, dword [r11 + rbp*4]
xor bpl, byte [r8 - 3]
mov byte [rbx - 3], bpl
movzx ebp, r10b
lea r13, [r11 + rbp*4]
mov r10, rbp
mov ebp, dword [r13]
add r10d, 1
add eax, ebp
movzx r12d, al
lea r14, [r11 + r12*4]
mov rax, r12
mov r12d, dword [r14]
mov dword [r13], r12d
mov dword [r14], ebp
add ebp, r12d
movzx ebp, bpl
mov ebp, dword [r11 + rbp*4]
xor bpl, byte [r8 - 2]
mov byte [rbx - 2], bpl
movzx ebp, r10b
lea r13, [r11 + rbp*4]
mov r10, rbp
mov ebp, dword [r13]
add eax, ebp
movzx r12d, al
lea r14, [r11 + r12*4]
mov rax, r12
mov r12d, dword [r14]
mov dword [r13], r12d
mov dword [r14], ebp
add ebp, r12d
movzx ebp, bpl
mov ebp, dword [r11 + rbp*4]
xor bpl, byte [r8 - 1]
mov byte [rbx - 1], bpl
cmp r8, rsi
jne 0x401a70
add r9, rdi
and edx, 7
jne 0x401c80
mov dword [rcx], r10d
mov dword [rcx + 4], eax
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
add r10d, 1
movzx ebx, r10b
lea rbp, [r11 + rbx*4]
mov r10, rbx
mov ebx, dword [rbp]
add eax, ebx
movzx esi, al
lea rdi, [r11 + rsi*4]
mov rax, rsi
mov esi, dword [rdi]
mov dword [rbp], esi
mov dword [rdi], ebx
add ebx, esi
movzx ebx, bl
mov ebx, dword [r11 + rbx*4]
xor bl, byte [r8]
cmp rdx, 1
mov byte [r9], bl
je 0x401c6f
add r10d, 1
movzx ebx, r10b
lea rbp, [r11 + rbx*4]
mov r10, rbx
mov ebx, dword [rbp]
add eax, ebx
movzx esi, al
lea rdi, [r11 + rsi*4]
mov rax, rsi
mov esi, dword [rdi]
mov dword [rbp], esi
mov dword [rdi], ebx
add ebx, esi
movzx ebx, bl
mov ebx, dword [r11 + rbx*4]
xor bl, byte [r8 + 1]
cmp rdx, 2
mov byte [r9 + 1], bl
je 0x401c6f
add r10d, 1
movzx ebx, r10b
lea rbp, [r11 + rbx*4]
mov r10, rbx
mov ebx, dword [rbp]
add eax, ebx
movzx esi, al
lea rdi, [r11 + rsi*4]
mov rax, rsi
mov esi, dword [rdi]
mov dword [rbp], esi
mov dword [rdi], ebx
add ebx, esi
movzx ebx, bl
mov ebx, dword [r11 + rbx*4]
xor bl, byte [r8 + 2]
cmp rdx, 3
mov byte [r9 + 2], bl
je 0x401c6f
add r10d, 1
movzx ebx, r10b
lea rbp, [r11 + rbx*4]
mov r10, rbx
mov ebx, dword [rbp]
add eax, ebx
movzx esi, al
lea rdi, [r11 + rsi*4]
mov rax, rsi
mov esi, dword [rdi]
mov dword [rbp], esi
mov dword [rdi], ebx
add ebx, esi
movzx ebx, bl
mov ebx, dword [r11 + rbx*4]
xor bl, byte [r8 + 3]
cmp rdx, 4
mov byte [r9 + 3], bl
je 0x401c6f
add r10d, 1
movzx ebx, r10b
lea rbp, [r11 + rbx*4]
mov r10, rbx
mov ebx, dword [rbp]
add eax, ebx
movzx esi, al
lea rdi, [r11 + rsi*4]
mov rax, rsi
mov esi, dword [rdi]
mov dword [rbp], esi
mov dword [rdi], ebx
add ebx, esi
movzx ebx, bl
mov ebx, dword [r11 + rbx*4]
xor bl, byte [r8 + 4]
cmp rdx, 5
mov byte [r9 + 4], bl
je 0x401c6f
add r10d, 1
movzx ebx, r10b
lea rbp, [r11 + rbx*4]
mov r10, rbx
mov ebx, dword [rbp]
add eax, ebx
movzx esi, al
lea rdi, [r11 + rsi*4]
mov rax, rsi
mov esi, dword [rdi]
mov dword [rbp], esi
mov dword [rdi], ebx
add ebx, esi
movzx ebx, bl
mov ebx, dword [r11 + rbx*4]
xor bl, byte [r8 + 5]
cmp rdx, 6
mov byte [r9 + 5], bl
je 0x401c6f
add r10d, 1
movzx edx, r10b
lea rdi, [r11 + rdx*4]
mov r10, rdx
mov edx, dword [rdi]
add eax, edx
movzx ebx, al
lea rsi, [r11 + rbx*4]
mov rax, rbx
mov ebx, dword [rsi]
mov dword [rdi], ebx
mov dword [rsi], edx
add edx, ebx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
xor dl, byte [r8 + 6]
mov byte [r9 + 6], dl
jmp 0x401c6f