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