Function at 0x140002960
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
mov qword [rsp + 0x20], rbx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov r9, qword [rcx]
lea r12, [rcx + 0x30]
mov rbx, rdx
mov r15, rcx
xor edx, edx
mov r8d, edx
cmp qword [rcx + 8], r9
je 0x1400029bf
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r9 + r8]
mov rcx, qword [r12]
mov byte [r8 + rcx], al
inc r8
mov r9, qword [r15]
mov rax, qword [r15 + 8]
sub rax, r9
cmp r8, rax
jb 0x1400029a0
mov r8, qword [r15 + 0x18]
cmp qword [r15 + 0x20], r8
je 0x1400029f6
nop dword [rax]
movzx eax, byte [r8 + rdx]
mov rcx, qword [r12]
sub rcx, qword [r15]
add rcx, qword [r15 + 8]
mov byte [rcx + rdx], al
inc rdx
mov r8, qword [r15 + 0x18]
mov rax, qword [r15 + 0x20]
sub rax, r8
cmp rdx, rax
jb 0x1400029d0
mov r8b, 0x10
nop dword [rax]
mov rax, qword [r12]
add r8b, 0xff
movzx ecx, r8b
lea rdx, [rcx + rbx]
movzx ecx, byte [rax + rcx]
xor byte [rdx], cl
test r8b, r8b
jne 0x140002a00
mov byte [rsp + 0x68], 1
lea r8, [rbx + 3]
mov byte [rsp + 0x70], 1
lea r13, [rbx + 0x10]
lea r9, str.cw
nop dword [rax]
nop dword [rax + rax]
mov dl, 0x10
mov rcx, r13
nop word [rax + rax]
movzx eax, byte [rcx - 1]
lea rcx, [rcx - 1]
movzx eax, byte [rax + r9]
mov byte [rcx], al
add dl, 0xff
jne 0x140002a50
movzx eax, byte [rbx + 5]
xor r13b, r13b
movzx ecx, byte [rbx + 1]
mov r15, r8
mov byte [rbx + 1], al
movzx eax, byte [rbx + 9]
mov byte [rbx + 5], al
movzx eax, byte [rbx + 0xd]
mov byte [rbx + 9], al
movzx eax, byte [rbx + 2]
mov byte [rbx + 0xd], cl
movzx ecx, byte [rbx + 0xa]
mov byte [rbx + 0xa], al
movzx eax, byte [rbx + 0xf]
mov byte [rbx + 2], cl
movzx ecx, byte [r8]
mov byte [r8], al
movzx eax, byte [rbx + 0xb]
mov byte [rbx + 0xf], al
movzx eax, byte [rbx + 7]
mov byte [rbx + 0xb], al
movzx eax, byte [rbx + 6]
mov byte [rbx + 7], cl
movzx ecx, byte [rbx + 0xe]
mov byte [rbx + 0xe], al
mov byte [rbx + 6], cl
nop
movzx esi, byte [r15 - 3]
movzx r14d, byte [r15]
movzx edi, byte [r15 - 1]
lea r15, [r15 + 4]
movzx r10d, r13b
movzx r11d, r14b
xor r11b, dil
movzx ebp, r11b
movzx r9d, byte [r10 + rbx + 1]
xor bpl, r9b
movzx r8d, r9b
xor r8b, sil
xor bpl, sil
movzx eax, r8b
add al, al
movzx ecx, al
movzx eax, cl
xor al, 0x1b
movzx edx, al
test r8b, r8b
movzx r8d, dil
cmovns edx, ecx
xor r8b, r9b
xor dl, bpl
movzx eax, r8b
xor dl, sil
add al, al
mov byte [r15 - 7], dl
movzx ecx, al
movzx eax, cl
xor al, 0x1b
movzx edx, al
test r8b, r8b
movzx eax, r11b
movzx r8d, r14b
cmovns edx, ecx
add al, al
xor dl, r9b
movzx ecx, al
xor dl, bpl
movzx eax, cl
xor al, 0x1b
mov byte [r10 + rbx + 1], dl
movzx edx, al
test r11b, r11b
cmovns edx, ecx
xor r8b, sil
xor dl, bpl
movzx eax, r8b
xor dl, dil
add al, al
mov byte [r15 - 5], dl
movzx ecx, al
movzx eax, cl
xor al, 0x1b
test r8b, r8b
movzx edx, al
cmovns edx, ecx
add r13b, 4
xor dl, bpl
xor dl, r14b
mov byte [r15 - 4], dl
cmp r13b, 0x10
jb 0x140002ac0
movzx esi, byte [rsp + 0x68]
lea r13, [rbx + 0x10]
mov r15, qword [rsp + 0x60]
movzx edi, sil
and dil, 1
jne 0x140002bba
lea rdx, [rsp + 0x70]
mov rcx, r15
call fcn.140002cd0
mov dl, 0x10
mov r8, r13
nop
add dl, 0xff
lea r8, [r8 - 1]
movzx ecx, dl
test dil, dil
lea eax, [rcx + 0x10]
cmove eax, ecx
mov ecx, eax
mov rax, qword [r12]
movzx ecx, byte [rcx + rax]
xor byte [r8], cl
test dl, dl
jne 0x140002bc0
inc sil
lea r8, [rbx + 3]
mov byte [rsp + 0x68], sil
lea r9, str.cw
cmp sil, 0xe
jb 0x140002a40
mov dl, 0x10
lea r8, str.cw
mov rcx, r13
nop dword [rax]
movzx eax, byte [rcx - 1]
lea rcx, [rcx - 1]
movzx eax, byte [rax + r8]
mov byte [rcx], al
add dl, 0xff
jne 0x140002c10
movzx ecx, byte [rbx + 1]
lea rdx, [rsp + 0x70]
movzx eax, byte [rbx + 5]
mov byte [rbx + 1], al
movzx eax, byte [rbx + 9]
mov byte [rbx + 5], al
movzx eax, byte [rbx + 0xd]
mov byte [rbx + 9], al
movzx eax, byte [rbx + 2]
mov byte [rbx + 0xd], cl
movzx ecx, byte [rbx + 0xa]
mov byte [rbx + 0xa], al
movzx eax, byte [rbx + 0xf]
mov byte [rbx + 2], cl
movzx ecx, byte [rbx + 3]
mov byte [rbx + 3], al
movzx eax, byte [rbx + 0xb]
mov byte [rbx + 0xf], al
movzx eax, byte [rbx + 7]
mov byte [rbx + 7], cl
movzx ecx, byte [rbx + 0xe]
mov byte [rbx + 0xb], al
movzx eax, byte [rbx + 6]
mov byte [rbx + 6], cl
mov rcx, r15
mov byte [rbx + 0xe], al
call fcn.140002cd0
mov dl, 0x10
and sil, 1
nop dword [rax + rax]
add dl, 0xff
lea r13, [r13 - 1]
movzx ecx, dl
test sil, sil
lea eax, [rcx + 0x10]
cmove eax, ecx
mov ecx, eax
mov rax, qword [r12]
movzx ecx, byte [rcx + rax]
xor byte [r13], cl
test dl, dl
jne 0x140002c90
mov rbx, qword [rsp + 0x78]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret