Function at 0x204116290
Capabilities:
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, 0x48
mov qword [rsp + 0xa0], r8
lea r8, [rcx + 0xf0]
cmp qword [rsp + 0xa0], 0
mov qword [rsp + 0x90], rcx
je 0x204116b05
mov rbx, rcx
movzx eax, byte [rcx + 0xf0]
mov r11, rdx
mov qword [rsp + 0x30], 0
add rbx, 0x10
lea rbp, [0x2041f5380]
mov qword [rsp + 0x38], rbx
mov rbx, rcx
mov r10d, eax
add rbx, 0xe0
mov qword [rsp + 0x28], rbx
xor r10b, byte [r11]
movzx r12d, byte [r11 + 1]
movzx edi, byte [r11 + 2]
movzx esi, byte [r11 + 3]
mov byte [r11], r10b
xor r12b, byte [r8 + 1]
movzx edx, byte [r11 + 4]
movzx eax, byte [r11 + 5]
movzx ebx, byte [r11 + 6]
mov byte [r11 + 1], r12b
xor dil, byte [r8 + 2]
movzx r9d, byte [r11 + 7]
movzx ecx, byte [r11 + 9]
movzx r15d, byte [r11 + 0xa]
mov byte [r11 + 2], dil
xor sil, byte [r8 + 3]
mov byte [rsp], dil
mov byte [r11 + 3], sil
xor dl, byte [r8 + 4]
mov byte [r11 + 4], dl
xor al, byte [r8 + 5]
mov byte [r11 + 5], al
xor bl, byte [r8 + 6]
mov r14d, eax
mov byte [r11 + 6], bl
xor r9b, byte [r8 + 7]
mov byte [r11 + 7], r9b
movzx eax, byte [r11 + 8]
xor al, byte [r8 + 8]
mov byte [r11 + 8], al
xor cl, byte [r8 + 9]
mov byte [r11 + 9], cl
xor r15b, byte [r8 + 0xa]
mov byte [r11 + 0xa], r15b
movzx r13d, byte [r11 + 0xb]
xor r13b, byte [r8 + 0xb]
movzx edi, byte [r11 + 0xd]
mov byte [r11 + 0xb], r13b
mov byte [rsp + 0x1c], r13b
movzx r13d, byte [r11 + 0xc]
xor r13b, byte [r8 + 0xc]
mov byte [r11 + 0xc], r13b
xor dil, byte [r8 + 0xd]
mov byte [r11 + 0xd], dil
mov byte [rsp + 0x1e], r13b
movzx r13d, byte [r11 + 0xe]
xor r13b, byte [r8 + 0xe]
mov byte [rsp + 0x1f], dil
mov byte [r11 + 0xe], r13b
movzx edi, byte [r11 + 0xf]
xor dil, byte [r8 + 0xf]
mov byte [rsp + 0x20], r13b
mov byte [r11 + 0xf], dil
mov r8d, edi
mov rdi, qword [rsp + 0x90]
xor r10b, byte [rdi]
mov byte [r11], r10b
xor r12b, byte [rdi + 1]
mov byte [rsp + 0x1b], r10b
mov r10, rdi
mov edi, r12d
mov byte [r11 + 1], r12b
mov r12, r10
movzx r10d, byte [rsp]
xor r10b, byte [r12 + 2]
mov byte [r11 + 2], r10b
xor sil, byte [r12 + 3]
mov byte [r11 + 3], sil
xor dl, byte [r12 + 4]
mov byte [rsp + 0x24], sil
mov byte [r11 + 4], dl
xor r14b, byte [r12 + 5]
mov byte [r11 + 5], r14b
xor bl, byte [r12 + 6]
mov byte [r11 + 6], bl
xor r9b, byte [r12 + 7]
mov r13d, ebx
movzx ebx, byte [rsp + 0x1c]
movzx esi, byte [rsp + 0x1e]
mov byte [r11 + 7], r9b
xor al, byte [r12 + 8]
mov byte [rsp + 0x1d], r9b
mov byte [r11 + 8], al
xor cl, byte [r12 + 9]
mov byte [r11 + 9], cl
movzx r9d, byte [r12 + 0xa]
mov byte [rsp], al
mov rax, r12
xor r9d, r15d
movzx r15d, byte [rsp + 0x1f]
mov byte [rsp + 0x1e], r13b
mov r13d, r10d
mov byte [r11 + 0xa], r9b
xor bl, byte [r12 + 0xb]
mov byte [r11 + 0xb], bl
xor sil, byte [r12 + 0xc]
mov byte [r11 + 0xc], sil
xor r15b, byte [r12 + 0xd]
movzx r12d, byte [rsp + 0x20]
movzx r10d, byte [rsp + 0x1b]
mov byte [r11 + 0xd], r15b
xor r12b, byte [rax + 0xe]
mov byte [r11 + 0xe], r12b
xor r8b, byte [rax + 0xf]
mov byte [rsp + 0x1c], r8b
mov r8, qword [rsp + 0x38]
jmp 0x2041168c7
mov r14d, r10d
mov r13d, r9d
xor r14d, edx
xor r13d, ebx
mov edi, r14d
xor edi, r13d
mov esi, edi
mov edi, r14d
add r14d, r14d
shr dil, 7
mov ecx, esi
lea edi, [rdi + rdi*2]
xor ecx, r10d
xor r10d, ebx
lea edi, [rdi + rdi*8]
xor edi, ecx
mov ecx, edx
xor edx, esi
xor r14d, edi
xor ecx, r9d
xor r9d, esi
xor esi, ebx
mov byte [rsp + 0x27], r14b
mov r14d, ecx
shr cl, 7
mov edi, ecx
mov ecx, r13d
add r14d, r14d
add r13d, r13d
lea edi, [rdi + rdi*2]
shr cl, 7
lea edi, [rdi + rdi*8]
xor edx, edi
movzx edi, byte [rsp + 0x1f]
xor r14d, edx
mov edx, ecx
mov ecx, r10d
add r10d, r10d
lea edx, [rdx + rdx*2]
shr cl, 7
mov ebx, edi
lea edx, [rdx + rdx*8]
xor ebx, eax
xor r9d, edx
mov edx, ecx
movzx ecx, byte [rsp]
lea edx, [rdx + rdx*2]
xor r13d, r9d
mov r9d, ebx
lea edx, [rdx + rdx*8]
xor ecx, r12d
shr r9b, 7
xor esi, edx
mov edx, ebx
lea r9d, [r9 + r9*2]
add ebx, ebx
xor r10d, esi
mov esi, edi
lea r9d, [r9 + r9*8]
mov byte [rsp + 0x1d], r10b
mov r10d, ecx
mov ecx, eax
xor edx, r10d
xor esi, edx
xor esi, r9d
mov r9d, ebx
xor r9d, esi
xor ecx, r12d
xor eax, edx
xor r12d, edx
mov ebx, ecx
shr cl, 7
mov byte [rsp + 0x1e], r9b
movzx esi, byte [rsp + 0x22]
mov r9d, ecx
add ebx, ebx
mov ecx, r10d
add r10d, r10d
lea r9d, [r9 + r9*2]
shr cl, 7
lea r9d, [r9 + r9*8]
xor eax, r9d
mov r9d, r10d
mov r10d, esi
xor ebx, eax
mov eax, ecx
mov byte [rsp + 0x1f], bl
movzx ebx, byte [rsp]
lea eax, [rax + rax*2]
lea eax, [rax + rax*8]
xor edi, ebx
xor r12d, eax
xor edx, ebx
movzx ebx, byte [rsp + 0x23]
mov ecx, edi
xor r9d, r12d
movzx r12d, byte [rsp + 0x26]
shr cl, 7
mov byte [rsp + 0x20], r9b
mov r9d, edi
mov eax, ecx
add r9d, r9d
lea eax, [rax + rax*2]
mov ecx, r9d
mov r9d, esi
lea eax, [rax + rax*8]
xor r9d, r15d
xor edx, eax
xor ecx, edx
mov edx, r9d
mov byte [rsp + 0x21], cl
mov ecx, ebx
shr dl, 7
xor ecx, r12d
lea edx, [rdx + rdx*2]
mov eax, ecx
lea edx, [rdx + rdx*8]
xor eax, r9d
add r9d, r9d
xor r10d, eax
xor r10d, edx
mov edx, r9d
mov r9d, ebx
xor edx, r10d
xor r9d, r15d
xor r15d, eax
mov byte [rsp + 0x22], dl
mov edx, r9d
mov r10d, r15d
add r9d, r9d
shr dl, 7
movzx r15d, byte [rsp + 0x24]
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r10d, edx
mov edx, ecx
xor r9d, r10d
shr dl, 7
xor ebx, eax
xor esi, r12d
lea edx, [rdx + rdx*2]
add ecx, ecx
mov r10d, ebx
xor eax, r12d
lea edx, [rdx + rdx*8]
mov ebx, ecx
mov ecx, esi
movzx r12d, byte [rsp + 0x25]
xor r10d, edx
mov edx, esi
movzx esi, byte [rsp + 0x1b]
add ecx, ecx
shr dl, 7
xor ebx, r10d
lea edx, [rdx + rdx*2]
mov r10d, esi
mov byte [rsp + 0x23], bl
mov ebx, ecx
xor r10d, r15d
movzx ecx, byte [rsp + 0x1c]
lea edx, [rdx + rdx*8]
mov edi, esi
xor eax, edx
mov edx, r10d
xor ecx, r12d
xor ebx, eax
shr dl, 7
mov eax, r10d
add r10d, r10d
xor eax, ecx
lea edx, [rdx + rdx*2]
mov esi, r10d
mov r10d, r15d
lea edx, [rdx + rdx*8]
xor edi, eax
xor r10d, r12d
xor edi, edx
xor r15d, eax
mov edx, r10d
xor esi, edi
add r10d, r10d
mov edi, r15d
shr dl, 7
mov r15d, r10d
mov r10d, r12d
lea edx, [rdx + rdx*2]
xor r10d, eax
lea edx, [rdx + rdx*8]
xor edi, edx
mov edx, ecx
add ecx, ecx
xor r15d, edi
shr dl, 7
movzx edi, byte [rsp + 0x1c]
mov r12d, ecx
movzx ecx, byte [rsp + 0x1b]
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor ecx, edi
xor r10d, edx
mov edx, ecx
xor r12d, r10d
movzx r10d, byte [rsp + 0x27]
shr dl, 7
xor eax, edi
add ecx, ecx
lea edx, [rdx + rdx*2]
mov rdi, r10
lea edx, [rdx + rdx*8]
xor eax, edx
mov edx, ecx
xor edx, eax
movzx eax, byte [rsp + 0x20]
mov ecx, edx
movzx edx, byte [rsp + 0x21]
mov byte [rsp + 0x1b], cl
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x1f]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x1e]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x1d]
shl rdx, 8
or rdx, rax
movzx eax, r13b
shl rdx, 8
or rdx, rax
movzx eax, r14b
shl rdx, 8
or rdx, rax
movzx eax, cl
movzx ecx, r12b
shl rax, 8
shl rdx, 8
or rax, rcx
movzx ecx, r15b
or rdx, r10
shl rax, 8
mov qword [rsp], rdx
or rax, rcx
movzx ecx, sil
shl rax, 8
or rax, rcx
movzx ecx, bl
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x23]
shl rax, 8
or rax, rcx
movzx ecx, r9b
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x22]
shl rax, 8
mov rdx, rax
or rdx, rcx
mov qword [rsp + 8], rdx
movdqa xmm0, xmmword [rsp]
movzx eax, byte [rsp + 0x1d]
movzx edx, byte [rsp + 0x1e]
movups xmmword [r11], xmm0
xor dil, byte [r8]
movzx ecx, byte [rsp + 0x21]
add r8, 0x10
movzx r10d, dil
mov byte [r11], r10b
movzx edi, byte [r8 - 0xf]
xor edi, r14d
movzx r14d, byte [rsp + 0x1f]
mov byte [r11 + 1], dil
xor r13b, byte [r8 - 0xe]
mov byte [r11 + 2], r13b
xor al, byte [r8 - 0xd]
mov byte [r11 + 3], al
xor dl, byte [r8 - 0xc]
mov byte [r11 + 4], dl
xor r14b, byte [r8 - 0xb]
mov byte [r11 + 5], r14b
mov byte [rsp + 0x24], al
movzx eax, byte [rsp + 0x20]
xor al, byte [r8 - 0xa]
mov byte [r11 + 6], al
xor cl, byte [r8 - 9]
mov byte [r11 + 7], cl
mov byte [rsp + 0x1e], al
movzx eax, byte [rsp + 0x22]
xor al, byte [r8 - 8]
mov byte [rsp + 0x1d], cl
mov byte [r11 + 8], al
movzx ecx, byte [r8 - 7]
mov byte [rsp], al
xor ecx, r9d
mov byte [r11 + 9], cl
movzx r9d, byte [rsp + 0x23]
xor r9b, byte [r8 - 6]
movzx eax, byte [rsp + 0x1b]
mov byte [r11 + 0xa], r9b
xor bl, byte [r8 - 5]
mov byte [r11 + 0xb], bl
xor sil, byte [r8 - 4]
mov byte [r11 + 0xc], sil
xor r15b, byte [r8 - 3]
mov byte [r11 + 0xd], r15b
xor r12b, byte [r8 - 2]
mov byte [r11 + 0xe], r12b
xor al, byte [r8 - 1]
mov byte [rsp + 0x1c], al
movzx eax, byte [rsp]
movzx edx, dl
movzx ecx, cl
movzx r14d, r14b
movzx edx, byte [rbp + rdx]
movzx esi, sil
movzx ebx, bl
movzx edi, dil
movzx eax, byte [rbp + rax]
movzx esi, byte [rbp + rsi]
movzx r15d, r15b
movzx r9d, r9b
mov byte [rsp + 0x1f], dl
movzx r10d, byte [rbp + r10]
movzx r12d, r12b
mov byte [rsp + 0x22], al
movzx edi, byte [rbp + rdi]
mov byte [r11 + 8], al
movzx eax, byte [rbp + rcx]
movzx ecx, r13b
movzx r15d, byte [rbp + r15]
movzx r13d, byte [rsp + 0x1e]
mov byte [r11 + 4], dl
movzx edx, byte [rbp + r14]
movzx r14d, byte [rbp + rcx]
mov byte [r11 + 0xc], sil
movzx ecx, byte [rsp + 0x24]
movzx r13d, byte [rbp + r13]
mov byte [r11], r10b
movzx r9d, byte [rbp + r9]
movzx r12d, byte [rbp + r12]
mov byte [rsp + 0x1b], sil
movzx esi, byte [rbp + rcx]
mov byte [r11 + 1], dl
mov byte [r11 + 5], al
mov byte [rsp], sil
movzx esi, byte [rsp + 0x1d]
mov byte [r11 + 9], r15b
movzx ecx, byte [rbp + rsi]
movzx esi, byte [rbp + rbx]
movzx ebx, byte [rsp + 0x1c]
movzx ebx, byte [rbp + rbx]
mov byte [rsp + 0x24], dil
mov byte [rsp + 0x1c], sil
mov byte [r11 + 0xf], sil
movzx esi, byte [rsp]
mov byte [r11 + 0xd], dil
mov byte [r11 + 2], r9b
mov byte [rsp + 0x23], r14b
mov byte [r11 + 0xa], r14b
mov byte [r11 + 6], r12b
mov byte [rsp + 0x25], r13b
mov byte [r11 + 0xe], r13b
mov byte [r11 + 3], bl
mov byte [rsp + 0x26], cl
mov byte [r11 + 0xb], cl
mov byte [r11 + 7], sil
cmp r8, qword [rsp + 0x28]
jne 0x2041164d0
mov ecx, esi
mov rsi, qword [rsp + 0x90]
movzx r14d, byte [rsp + 0x1f]
mov r8, r11
xor r10b, byte [rsi + 0xe0]
mov byte [r11], r10b
xor dl, byte [rsi + 0xe1]
mov byte [r11 + 1], dl
xor r9b, byte [rsi + 0xe2]
mov byte [r11 + 2], r9b
xor bl, byte [rsi + 0xe3]
mov byte [r11 + 3], bl
movzx edx, byte [rsi + 0xe4]
xor edx, r14d
mov byte [r11 + 4], dl
xor al, byte [rsi + 0xe5]
mov byte [r11 + 5], al
xor r12b, byte [rsi + 0xe6]
mov byte [r11 + 6], r12b
xor cl, byte [rsi + 0xe7]
mov byte [r11 + 7], cl
movzx eax, byte [rsp + 0x22]
xor al, byte [rsi + 0xe8]
mov byte [r11 + 8], al
movzx eax, byte [rsi + 0xe9]
xor eax, r15d
mov byte [r11 + 9], al
movzx eax, byte [rsp + 0x23]
xor al, byte [rsi + 0xea]
mov byte [r11 + 0xa], al
movzx eax, byte [rsp + 0x26]
xor al, byte [rsi + 0xeb]
mov byte [r11 + 0xb], al
movzx eax, byte [rsp + 0x1b]
xor al, byte [rsi + 0xec]
mov byte [r11 + 0xc], al
movzx eax, byte [rsp + 0x24]
xor al, byte [rsi + 0xed]
add qword [rsp + 0x30], 0x10
mov byte [r11 + 0xd], al
movzx eax, byte [rsp + 0x25]
xor al, byte [rsi + 0xee]
mov byte [r11 + 0xe], al
movzx eax, byte [rsp + 0x1c]
xor al, byte [rsi + 0xef]
mov rsi, qword [rsp + 0x30]
mov byte [r11 + 0xf], al
lea rax, [r11 + 0x10]
cmp qword [rsp + 0xa0], rsi
jbe 0x204116ad4
mov r11, rax
jmp 0x2041162fe
mov r15, r11
mov rax, qword [r15]
mov rdx, qword [r15 + 8]
mov rbx, qword [rsp + 0x90]
mov qword [rbx + 0xf0], rax
mov qword [rbx + 0xf8], rdx
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r15, r8
jmp 0x204116ad7