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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov rdi, r8
call fcn.1402789a0
test eax, eax
js 0x1402798ee
movsxd rdx, dword [rdi + 0xf0]
mov r11, rdi
lea ecx, [rdx*4]
test ecx, ecx
jle 0x14027975e
lea r8d, [rcx - 1]
add rdx, 1
mov r10d, ecx
shr r8d, 3
shl rdx, 4
lea r9d, [r8 + 1]
mov rbx, rdx
lea rax, [rdx - 0x10]
mov r8, r9
shl r9, 4
sub rbx, r9
cmp rbx, r9
jge 0x14027972b
test rdx, rdx
jg 0x140279900
mov rdx, rdi
add rax, rdi
xor ecx, ecx
nop dword [rax + rax]
movdqu xmm0, xmmword [rdx]
movdqu xmm4, xmmword [rax]
add ecx, 1
add rdx, 0x10
sub rax, 0x10
movups xmmword [rdx - 0x10], xmm4
movups xmmword [rax + 0x10], xmm0
cmp ecx, r8d
jb 0x140279738
mov edx, dword [rdi + 0xf0]
mov r12d, 1
lea rbp, [0x1406b6920]
lea rax, [0x1406b7520]
lea r8, [0x1406b5d20]
lea rsi, [0x1406b6520]
lea rbx, [0x1406b6120]
cmp edx, 1
jle 0x1402798ec
mov r13d, dword [r11 + 0x10]
mov r10d, dword [r11 + 0x14]
add r11, 0x10
add r12d, 1
mov r9d, dword [r11 + 8]
mov r15d, dword [r11 + 0xc]
mov edx, r13d
movzx r14d, r13b
mov ecx, r13d
shr edx, 0x18
movzx r14d, byte [rax + r14*4]
movzx ecx, ch
movzx edx, byte [rax + rdx*4]
mov edx, dword [rbp + rdx*4]
xor edx, dword [r8 + r14*4]
mov r14d, r13d
mov r13d, ecx
shr r14d, 0x10
movzx r13d, byte [rax + r13*4]
mov ecx, r10d
movzx r14d, r14b
movzx ecx, ch
movzx r14d, byte [rax + r14*4]
xor edx, dword [rsi + r14*4]
xor edx, dword [rbx + r13*4]
movzx r13d, r10b
movd xmm0, edx
mov edx, r10d
movzx r13d, byte [rax + r13*4]
shr edx, 0x18
movzx edx, byte [rax + rdx*4]
mov edx, dword [rbp + rdx*4]
xor edx, dword [r8 + r13*4]
mov r13d, r10d
mov r10d, ecx
shr r13d, 0x10
movzx r10d, byte [rax + r10*4]
mov ecx, r9d
movzx r13d, r13b
movzx ecx, ch
movzx r13d, byte [rax + r13*4]
xor edx, dword [rsi + r13*4]
xor edx, dword [rbx + r10*4]
mov r10d, r9d
movzx r13d, r9b
shr r10d, 0x18
movzx r14d, byte [rax + r13*4]
movd xmm3, edx
movzx r10d, byte [rax + r10*4]
punpckldq xmm0, xmm3
mov r10d, dword [rbp + r10*4]
xor r10d, dword [r8 + r14*4]
mov r13d, r10d
mov r10d, r9d
mov r9d, ecx
mov ecx, r15d
shr r10d, 0x10
movzx r9d, byte [rax + r9*4]
shr ecx, 0x18
movzx r10d, r10b
movzx r10d, byte [rax + r10*4]
xor r13d, dword [rsi + r10*4]
mov r10d, r13d
xor r10d, dword [rbx + r9*4]
mov r9d, ecx
mov ecx, r15d
movd xmm1, r10d
movzx r10d, r15b
movzx r9d, byte [rax + r9*4]
shr ecx, 0x10
movzx r13d, byte [rax + r10*4]
mov r9d, dword [rbp + r9*4]
xor r9d, dword [r8 + r13*4]
mov r10d, r9d
movzx r9d, cl
mov ecx, r15d
movzx ecx, ch
movzx r9d, byte [rax + r9*4]
mov ecx, ecx
movzx ecx, byte [rax + rcx*4]
xor r10d, dword [rsi + r9*4]
mov r9d, r10d
xor r9d, dword [rbx + rcx*4]
movd xmm2, r9d
punpckldq xmm1, xmm2
punpcklqdq xmm0, xmm1
movups xmmword [r11], xmm0
cmp dword [rdi + 0xf0], r12d
jg 0x140279790
xor eax, eax
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, rdi
add rax, rdi
nop word cs:[rax + rax]
mov r8d, dword [rdx]
mov r9d, dword [rax]
sub ecx, 4
add rdx, 0x10
sub rax, 0x10
mov dword [rdx - 0x10], r9d
mov r9d, dword [rax + 0x14]
mov dword [rax + 0x10], r8d
mov r8d, dword [rdx - 0xc]
mov dword [rdx - 0xc], r9d
mov r9d, dword [rax + 0x18]
mov dword [rax + 0x14], r8d
mov r8d, dword [rdx - 8]
mov dword [rdx - 8], r9d
mov r9d, dword [rax + 0x1c]
mov dword [rax + 0x18], r8d
mov r8d, dword [rdx - 4]
mov dword [rdx - 4], r9d
mov dword [rax + 0x1c], r8d
mov r8d, r10d
sub r8d, ecx
cmp r8d, ecx
jl 0x140279910
jmp 0x140279758