Function at 0x2b3681920
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, 0x58
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xb0], r8
test r8, r8
je 0x2b368200b
mov rax, rcx
lea rdi, [rdx + 0x10]
mov r15, rdx
add rax, 0xd0
mov qword [rsp + 0x20], rdi
mov qword [rsp + 0x40], rax
mov rax, 0xfffffffffffffff0
sub rax, rdx
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0xa0]
mov rdi, qword [rsp + 0xa0]
movzx r13d, byte [r15]
movdqu xmm0, xmmword [r15]
xor r13b, byte [rax + 0xe0]
movzx esi, byte [r15 + 1]
mov rbx, qword [rsp + 0xa0]
movzx edx, byte [r15 + 3]
mov byte [r15], r13b
xor sil, byte [rax + 0xe1]
movzx eax, byte [r15 + 2]
movzx r9d, byte [r15 + 5]
movzx r10d, byte [r15 + 8]
mov byte [r15 + 1], sil
xor al, byte [rdi + 0xe2]
mov byte [r15 + 2], al
xor dl, byte [rdi + 0xe3]
mov byte [r15 + 3], dl
movzx edi, byte [r15 + 4]
xor dil, byte [rbx + 0xe4]
mov byte [rsp], dl
mov byte [r15 + 4], dil
xor r9b, byte [rbx + 0xe5]
mov byte [r15 + 5], r9b
movzx edx, byte [r15 + 6]
xor dl, byte [rbx + 0xe6]
mov byte [rsp + 0x3b], al
movzx r14d, dl
movzx edx, byte [r15 + 7]
mov byte [r15 + 6], r14b
xor dl, byte [rbx + 0xe7]
mov byte [rsp + 0x30], dl
mov byte [r15 + 7], dl
xor r10b, byte [rbx + 0xe8]
movzx ebx, byte [r15 + 9]
movzx r11d, byte [r15 + 0xa]
mov byte [r15 + 8], r10b
mov rcx, qword [rsp + 0xa0]
movzx edx, byte [r15 + 0xb]
mov rax, qword [rsp + 0xa0]
xor bl, byte [rcx + 0xe9]
mov r8, rcx
mov byte [r15 + 9], bl
xor r11b, byte [rcx + 0xea]
mov byte [r15 + 0xa], r11b
movzx ecx, byte [rcx + 0xeb]
xor ecx, edx
movzx edx, byte [r15 + 0xc]
mov byte [r15 + 0xb], cl
xor dl, byte [r8 + 0xec]
movzx r12d, dl
movzx edx, byte [r15 + 0xd]
mov byte [r15 + 0xc], r12b
xor dl, byte [r8 + 0xed]
movzx ebp, dl
movzx edx, byte [r15 + 0xe]
mov byte [r15 + 0xd], bpl
xor dl, byte [r8 + 0xee]
movzx r8d, dl
movzx edx, byte [r15 + 0xf]
mov byte [r15 + 0xe], r8b
xor dl, byte [rax + 0xef]
mov rax, qword [rsp + 0x40]
mov byte [r15 + 0xf], dl
mov byte [rsp + 0x3f], dl
movzx edx, r13b
mov qword [rsp + 0x18], rax
movzx eax, byte [rsp + 0x3b]
nop dword [rax]
movzx r10d, r10b
movzx edi, dil
movzx r11d, r11b
movzx ebx, bl
lea r13, [0x2b3758d80]
movzx ecx, cl
movzx esi, sil
movzx r9d, r9b
movzx edx, byte [r13 + rdx]
movzx edi, byte [r13 + rdi]
movzx r13d, byte [r13 + r10]
lea r10, [0x2b3758d80]
movzx r12d, byte [r10 + r12]
mov byte [rsp + 0x3b], r13b
mov byte [rsp + 0x28], r12b
mov r12, r10
movzx r10d, byte [r10 + rbp]
movzx ebp, byte [r12 + rax]
movzx eax, byte [rsp + 0x30]
movzx r11d, byte [r12 + r11]
movzx ebx, byte [r12 + rbx]
movzx esi, byte [r12 + rsi]
movzx r9d, byte [r12 + r9]
mov byte [rsp + 0x3e], bpl
movzx ebp, byte [r12 + rax]
movzx eax, byte [rsp + 0x3f]
mov byte [rsp + 0x3d], r11b
movzx r11d, byte [r12 + r14]
movzx r14d, byte [r12 + rcx]
mov byte [rsp + 0x3c], bl
movzx r13d, byte [r12 + rax]
movzx ebx, byte [r12 + r8]
movzx eax, byte [rsp]
movzx ecx, r14b
movzx r8d, r11b
shl rcx, 8
movzx r12d, byte [r12 + rax]
movzx eax, bl
or rcx, rax
movzx eax, sil
shl rcx, 8
or rcx, rax
movzx eax, dil
shl rcx, 8
or rcx, rax
movzx eax, bpl
shl rcx, 8
or rcx, rax
movzx eax, byte [rsp + 0x3d]
shl rcx, 8
or rcx, rax
movzx eax, r10b
shl rcx, 8
or rcx, rax
movzx eax, dl
mov qword [rsp + 0x30], rax
movzx eax, r12b
shl rcx, 8
or rcx, qword [rsp + 0x30]
shl rax, 8
or rax, r8
movzx r8d, byte [rsp + 0x3c]
shl rax, 8
or rax, r8
movzx r8d, byte [rsp + 0x28]
shl rax, 8
or rax, r8
movzx r8d, r13b
shl rax, 8
or rax, r8
movzx r8d, byte [rsp + 0x3e]
shl rax, 8
or rax, r8
movzx r8d, r9b
shl rax, 8
or rax, r8
movzx r8d, byte [rsp + 0x3b]
mov qword [rsp], rcx
shl rax, 8
movzx ecx, byte [rsp + 0x3d]
or rax, r8
movzx r8d, byte [rsp + 0x3e]
mov qword [rsp + 8], rax
mov rax, qword [rsp + 0x18]
movdqa xmm1, xmmword [rsp]
movups xmmword [r15], xmm1
xor dl, byte [rax]
mov byte [r15], dl
xor r10b, byte [rax + 1]
mov byte [r15 + 1], r10b
xor cl, byte [rax + 2]
mov byte [r15 + 2], cl
xor bpl, byte [rax + 3]
mov byte [r15 + 3], bpl
xor dil, byte [rax + 4]
mov byte [r15 + 4], dil
xor sil, byte [rax + 5]
mov byte [r15 + 5], sil
xor bl, byte [rax + 6]
mov byte [r15 + 6], bl
xor r14b, byte [rax + 7]
mov byte [rsp + 0x3d], cl
mov rcx, rax
movzx eax, byte [rsp + 0x3b]
mov byte [r15 + 7], r14b
xor al, byte [rcx + 8]
mov byte [r15 + 8], al
xor r9b, byte [rcx + 9]
mov byte [r15 + 9], r9b
xor r8b, byte [rcx + 0xa]
mov byte [r15 + 0xa], r8b
xor r13b, byte [rcx + 0xb]
mov byte [rsp + 0x3e], r13b
mov byte [r15 + 0xb], r13b
mov r13, rcx
movzx ecx, byte [rsp + 0x28]
xor cl, byte [r13 + 0xc]
mov byte [r15 + 0xc], cl
mov byte [rsp], cl
movzx ecx, byte [rsp + 0x3c]
xor cl, byte [r13 + 0xd]
mov byte [r15 + 0xd], cl
xor r11b, byte [r13 + 0xe]
mov byte [rsp + 0x3b], cl
mov byte [r15 + 0xe], r11b
movzx ecx, byte [r13 + 0xf]
xor ecx, r12d
mov r12, qword [rsp + 0x18]
mov byte [r15 + 0xf], cl
mov r13d, ecx
cmp qword [rsp + 0xa0], r12
je 0x2b3681eff
mov qword [rsp + 0x28], r15
mov rbx, r15
movzx ecx, byte [rbx]
movzx esi, byte [rbx + 1]
movzx eax, byte [rbx + 2]
mov edx, ecx
lea r8d, [rcx + rcx]
lea r15d, [rsi + rsi]
mov byte [rsp], sil
shr dl, 7
lea r14d, [rax + rax]
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r8d, edx
mov edx, r8d
mov edi, r8d
mov byte [rsp + 0x3b], r8b
movzx r8d, byte [rbx + 3]
shr dl, 7
lea r13d, [rdi + rdi]
lea edx, [rdx + rdx*2]
lea ebp, [r8 + r8]
lea edx, [rdx + rdx*8]
xor r13d, edx
mov edx, r13d
lea r11d, [r13 + r13]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r11d, edx
mov edx, esi
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r15d, edx
mov edx, r15d
lea edi, [r15 + r15]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor edi, edx
mov edx, edi
lea r10d, [rdi + rdi]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r10d, edx
mov edx, eax
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r14d, edx
mov edx, r14d
lea r12d, [r14 + r14]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r12d, edx
mov edx, r12d
lea r9d, [r12 + r12]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r9d, edx
movzx edx, byte [rbx + 3]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor ebp, edx
mov edx, ebp
lea esi, [rbp + rbp]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor esi, edx
mov edx, esi
lea r8d, [rsi + rsi]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r8d, edx
movzx edx, byte [rsp]
xor edx, eax
xor dl, byte [rbx + 3]
xor dl, byte [rsp + 0x3b]
xor edx, r15d
xor edx, r13d
xor edx, r12d
xor edx, r11d
xor edx, r10d
xor edx, r9d
add rbx, 4
xor edx, r8d
mov byte [rbx - 4], dl
mov edx, ecx
xor cl, byte [rsp]
xor edx, eax
xor dl, byte [rbx - 1]
xor eax, ecx
xor al, byte [rsp + 0x3b]
xor edx, r15d
xor eax, ebp
xor edx, r14d
xor eax, edi
xor edx, edi
xor eax, esi
xor edx, esi
xor eax, r11d
xor edx, r11d
xor eax, r10d
xor edx, r10d
xor eax, r9d
xor edx, r9d
xor eax, r8d
xor edx, r8d
mov byte [rbx - 3], dl
movzx edx, byte [rbx - 1]
mov byte [rbx - 1], al
xor edx, ecx
xor edx, r14d
xor edx, ebp
xor edx, r13d
xor edx, r12d
xor edx, r11d
xor edx, r10d
xor edx, r9d
xor edx, r8d
mov byte [rbx - 2], dl
cmp qword [rsp + 0x20], rbx
jne 0x2b3681d07
mov r15, qword [rsp + 0x28]
sub qword [rsp + 0x18], 0x10
movzx edi, byte [r15 + 3]
movzx ebp, byte [r15 + 0xd]
movzx ebx, byte [r15 + 9]
movzx r9d, byte [r15 + 5]
movzx esi, byte [r15 + 1]
movzx eax, byte [r15 + 2]
mov byte [rsp], dil
movzx edi, byte [r15 + 7]
movzx r11d, byte [r15 + 0xa]
movzx r14d, byte [r15 + 6]
movzx r8d, byte [r15 + 0xe]
movzx ecx, byte [r15 + 0xb]
movzx edx, byte [r15]
mov byte [rsp + 0x30], dil
movzx edi, byte [r15 + 0xf]
movzx r10d, byte [r15 + 8]
movzx r12d, byte [r15 + 0xc]
mov byte [rsp + 0x3f], dil
movzx edi, byte [r15 + 4]
jmp 0x2b3681ad0
mov ecx, eax
mov eax, edx
mov edx, r10d
movzx r12d, byte [rsp + 0x3d]
mov r10d, ecx
mov rcx, qword [rsp + 0xa0]
add r15, 0x10
xor al, byte [rcx + 0xf0]
mov byte [r15 - 0x10], al
xor dl, byte [rcx + 0xf1]
mov byte [r15 - 0xf], dl
xor r12b, byte [rcx + 0xf2]
mov byte [r15 - 0xe], r12b
xor bpl, byte [rcx + 0xf3]
mov byte [r15 - 0xd], bpl
xor dil, byte [rcx + 0xf4]
mov byte [r15 - 0xc], dil
xor sil, byte [rcx + 0xf5]
mov rdi, rcx
mov byte [r15 - 0xb], sil
xor bl, byte [rcx + 0xf6]
mov byte [r15 - 0xa], bl
movzx eax, byte [rcx + 0xf7]
xor eax, r14d
mov byte [r15 - 9], al
movzx eax, byte [rcx + 0xf8]
xor eax, r10d
movzx r10d, byte [rsp + 0x3b]
mov byte [r15 - 8], al
movzx eax, byte [rcx + 0xf9]
xor eax, r9d
movzx r9d, byte [rsp]
mov byte [r15 - 7], al
xor r8b, byte [rcx + 0xfa]
mov byte [r15 - 6], r8b
movzx ecx, byte [rsp + 0x3e]
xor cl, byte [rdi + 0xfb]
mov byte [r15 - 5], cl
xor r9b, byte [rdi + 0xfc]
mov byte [r15 - 4], r9b
xor r10b, byte [rdi + 0xfd]
mov byte [r15 - 3], r10b
xor r11b, byte [rdi + 0xfe]
mov byte [r15 - 2], r11b
xor r13b, byte [rdi + 0xff]
mov byte [r15 - 1], r13b
add qword [rsp + 0x20], 0x10
mov rax, qword [rsp + 0x20]
movups xmmword [rdi + 0xf0], xmm0
mov rdi, qword [rsp + 0x48]
add rdi, rax
cmp qword [rsp + 0xb0], rdi
ja 0x2b3681972
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret