Function at 0x20797bb30
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, 0x58
mov qword [rsp + 0xa0], rcx
mov rax, rcx
mov r10, rdx
lea rcx, [rcx + 0xf0]
mov qword [rsp + 0xb0], r8
test r8, r8
je 0x20797c549
movzx r14d, byte [rax + 0xf0]
add rax, 0x10
mov qword [rsp + 0x40], 0
lea r11, [0x207a42e40]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0xa0]
mov edx, r14d
mov r14, r10
add rax, 0xe0
mov qword [rsp + 0x38], rax
xor dl, byte [r14]
movzx esi, byte [r14 + 1]
movzx r8d, byte [r14 + 2]
mov r9d, edx
movzx r13d, byte [r14 + 4]
mov byte [r14], dl
xor sil, byte [rcx + 1]
movzx edx, byte [r14 + 3]
movzx ebx, byte [r14 + 5]
movzx r10d, byte [r14 + 6]
mov byte [r14 + 1], sil
xor r8b, byte [rcx + 2]
movzx ebp, byte [r14 + 7]
movzx eax, byte [r14 + 8]
movzx edi, byte [r14 + 9]
mov byte [r14 + 2], r8b
xor dl, byte [rcx + 3]
mov byte [r14 + 3], dl
xor r13b, byte [rcx + 4]
mov byte [r14 + 4], r13b
xor bl, byte [rcx + 5]
mov byte [r14 + 5], bl
xor r10b, byte [rcx + 6]
mov byte [r14 + 6], r10b
xor bpl, byte [rcx + 7]
mov byte [r14 + 7], bpl
xor al, byte [rcx + 8]
mov byte [r14 + 8], al
xor dil, byte [rcx + 9]
mov byte [r14 + 9], dil
movzx r15d, byte [rcx + 0xa]
mov byte [rsp + 0x1e], bl
movzx ebx, byte [r14 + 0xa]
xor r15d, ebx
mov byte [rsp + 0x20], r15b
movzx r12d, byte [r14 + 0xb]
mov byte [r14 + 0xa], r15b
xor r12b, byte [rcx + 0xb]
movzx r15d, byte [r14 + 0xc]
movzx ebx, byte [r14 + 0xd]
mov byte [r14 + 0xb], r12b
xor r15b, byte [rcx + 0xc]
mov byte [r14 + 0xc], r15b
xor bl, byte [rcx + 0xd]
mov byte [r14 + 0xd], bl
mov byte [rsp + 0x21], bl
movzx ebx, byte [r14 + 0xe]
xor bl, byte [rcx + 0xe]
mov byte [r14 + 0xe], bl
mov byte [rsp + 0x22], bl
movzx ebx, byte [r14 + 0xf]
xor bl, byte [rcx + 0xf]
mov rcx, qword [rsp + 0xa0]
mov byte [r14 + 0xf], bl
xor r9b, byte [rcx]
mov byte [rsp + 0x23], bl
mov byte [r14], r9b
xor sil, byte [rcx + 1]
mov byte [r14 + 1], sil
xor r8b, byte [rcx + 2]
mov ebx, esi
mov rsi, rcx
mov byte [r14 + 2], r8b
xor dl, byte [rcx + 3]
mov byte [r14 + 3], dl
xor r13b, byte [rcx + 4]
mov byte [rsp], dl
mov rdx, rsi
movzx esi, byte [rsp + 0x1e]
mov ecx, r13d
mov byte [r14 + 4], r13b
xor sil, byte [rdx + 5]
mov byte [r14 + 5], sil
xor r10b, byte [rdx + 6]
mov byte [r14 + 6], r10b
xor bpl, byte [rdx + 7]
mov byte [r14 + 7], bpl
xor al, byte [rdx + 8]
mov byte [r14 + 8], al
xor dil, byte [rdx + 9]
mov byte [rsp + 0x1e], r10b
mov r10, rdx
movzx edx, byte [rsp + 0x20]
mov byte [r14 + 9], dil
xor dl, byte [r10 + 0xa]
mov r13, r10
mov byte [r14 + 0xa], dl
movzx r10d, byte [r10 + 0xb]
mov byte [rsp + 0x20], dl
xor r10d, r12d
mov r12, r13
mov byte [rsp + 0x1f], sil
mov byte [r14 + 0xb], r10b
mov edx, r10d
movzx r10d, byte [r13 + 0xc]
mov byte [rsp + 0x25], bl
movzx ebx, byte [rsp + 0x1f]
xor r10d, r15d
movzx r15d, byte [rsp + 0x21]
mov byte [r14 + 0xc], r10b
xor r15b, byte [r13 + 0xd]
mov byte [r14 + 0xd], r15b
movzx r13d, byte [rsp + 0x22]
xor r13b, byte [r12 + 0xe]
mov byte [r14 + 0xe], r13b
mov esi, r13d
mov r13, r12
movzx r12d, byte [rsp + 0x23]
xor r12b, byte [r13 + 0xf]
mov r13, qword [rsp + 0x48]
mov byte [r14 + 0xf], r12b
mov byte [rsp + 0x26], bpl
movzx ebp, byte [rsp + 0x20]
jmp 0x20797c297
mov ecx, r10d
mov r12d, r9d
xor ecx, eax
xor r12d, ebx
mov edx, ecx
xor edx, r12d
mov ebp, edx
mov edx, r12d
add r12d, r12d
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r12d, edx
mov edx, ebp
mov byte [rsp + 0x29], r12b
mov r12d, ebx
xor edx, r9d
xor r9d, eax
xor r12d, r10d
mov byte [rsp + 0x28], dl
xor r10d, ebp
xor ebx, ebp
mov edx, r12d
add r12d, r12d
mov byte [rsp + 0x27], r10b
movzx r10d, byte [rsp + 0x1f]
shr dl, 7
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r12d, edx
mov edx, ecx
add ecx, ecx
shr dl, 7
mov byte [rsp + 0x2a], r12b
movzx r12d, byte [rsp + 0x24]
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor ecx, edx
mov edx, r9d
add r9d, r9d
shr dl, 7
mov byte [rsp + 0x2b], cl
lea edx, [rdx + rdx*2]
lea edx, [rdx + rdx*8]
xor r9d, edx
mov edx, esi
mov byte [rsp + 0x2c], r9b
mov r9d, ebp
xor edx, r15d
xor r9d, eax
mov eax, r10d
xor eax, edi
mov byte [rsp], r9b
mov r9d, edx
mov ecx, eax
xor r9d, eax
add eax, eax
shr cl, 7
lea ecx, [rcx + rcx*2]
lea ecx, [rcx + rcx*8]
xor eax, ecx
mov ecx, edi
mov byte [rsp + 0x2d], al
mov eax, r10d
xor ecx, esi
xor eax, r9d
mov byte [rsp + 0x1f], al
mov eax, ecx
add ecx, ecx
shr al, 7
lea eax, [rax + rax*2]
lea eax, [rax + rax*8]
xor ecx, eax
xor edi, r9d
mov byte [rsp + 0x26], dil
mov edi, edx
add edx, edx
shr dil, 7
mov byte [rsp + 0x2e], cl
mov ecx, r12d
mov eax, edi
mov edi, esi
movzx esi, byte [rsp + 0x20]
xor ecx, r8d
lea eax, [rax + rax*2]
xor edi, r9d
lea eax, [rax + rax*8]
mov byte [rsp + 0x35], dil
xor edx, eax
mov byte [rsp + 0x2f], dl
mov edx, r10d
movzx r10d, byte [rsp + 0x23]
xor edx, r15d
xor r15d, r9d
mov r9d, esi
mov edi, edx
add edx, edx
xor r9d, r10d
shr dil, 7
mov eax, edi
mov edi, edx
mov edx, r9d
lea eax, [rax + rax*2]
xor edx, ecx
lea eax, [rax + rax*8]
xor edi, eax
mov eax, r9d
add r9d, r9d
shr al, 7
mov byte [rsp + 0x30], dil
mov edi, esi
lea eax, [rax + rax*2]
xor edi, edx
lea eax, [rax + rax*8]
mov byte [rsp + 0x34], dil
xor r9d, eax
mov byte [rsp + 0x20], r9b
mov r9d, r10d
xor r10d, edx
mov edi, r10d
mov r10d, ecx
xor r9d, r12d
add ecx, ecx
shr r10b, 7
mov eax, r9d
add r9d, r9d
mov ebp, r10d
shr al, 7
lea ebp, [rbp + rbp*2]
lea eax, [rax + rax*2]
lea ebp, [rbp + rbp*8]
lea eax, [rax + rax*8]
xor ebp, ecx
mov ecx, esi
xor r9d, eax
xor ecx, r8d
mov byte [rsp + 0x23], r9b
mov r9d, r12d
mov esi, ecx
add ecx, ecx
xor r9d, edx
shr sil, 7
mov r12d, ecx
mov eax, esi
mov esi, edx
movzx edx, byte [rsp + 0x1e]
xor esi, r8d
movzx r8d, byte [rsp + 0x21]
lea eax, [rax + rax*2]
mov byte [rsp + 0x33], sil
movzx esi, byte [rsp + 0x22]
lea eax, [rax + rax*8]
mov ecx, r8d
xor r12d, eax
xor ecx, esi
xor dl, byte [rsp + 0x25]
mov byte [rsp + 0x24], r12b
mov r10d, ecx
xor r10d, edx
mov r12d, r10d
mov r10d, ecx
add ecx, ecx
shr r10b, 7
mov eax, r10d
mov r10d, ecx
movzx ecx, byte [rsp + 0x1e]
lea eax, [rax + rax*2]
xor ecx, esi
lea eax, [rax + rax*8]
xor esi, r12d
xor r10d, eax
mov eax, ecx
mov byte [rsp + 0x32], sil
mov esi, edx
shr al, 7
shr sil, 7
add ecx, ecx
add edx, edx
lea eax, [rax + rax*2]
mov byte [rsp + 0x21], r10b
mov r10d, r8d
lea eax, [rax + rax*8]
xor r10d, r12d
xor ecx, eax
mov eax, esi
mov esi, edx
lea eax, [rax + rax*2]
mov byte [rsp + 0x22], cl
lea eax, [rax + rax*8]
xor esi, eax
mov byte [rsp + 0x31], sil
movzx edx, byte [rsp + 0x1e]
movzx ecx, byte [rsp + 0x25]
mov byte [rsp + 0x37], r9b
xor edx, r12d
mov esi, edx
mov edx, r8d
xor r12d, ecx
xor edx, ecx
movzx ecx, byte [rsp + 0x2f]
mov r8d, edx
add edx, edx
shr r8b, 7
mov eax, r8d
lea eax, [rax + rax*2]
lea eax, [rax + rax*8]
xor edx, eax
movzx eax, byte [rsp + 0x35]
mov r8d, edx
movzx edx, r15b
shl rdx, 8
mov byte [rsp + 0x36], r8b
or rdx, rax
movzx eax, byte [rsp + 0x26]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x1f]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x27]
shl rdx, 8
or rdx, rax
movzx eax, bl
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x28]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x30]
movq xmm2, rdx
movzx edx, r8b
shl rax, 8
shl rdx, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2e]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2d]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2c]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2b]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2a]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x29]
shl rax, 8
or rax, rcx
movzx ecx, sil
movq xmm0, rax
movzx eax, byte [rsp + 0x31]
pxor xmm0, xmm2
or rdx, rax
movzx eax, byte [rsp + 0x22]
movq qword [r14], xmm0
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x21]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x24]
shl rdx, 8
or rdx, rax
movzx eax, bpl
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x23]
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x20]
shl rdx, 8
or rdx, rax
movzx eax, r12b
shl rax, 8
movq xmm3, rdx
movzx edx, byte [rsp + 0x28]
or rax, rcx
movzx ecx, byte [rsp + 0x32]
shl rax, 8
xor dl, byte [rsp + 0x29]
or rax, rcx
movzx ecx, r10b
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x33]
shl rax, 8
or rax, rcx
movzx ecx, r9b
shl rax, 8
or rax, rcx
movzx ecx, dil
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x34]
shl rax, 8
or rax, rcx
movq xmm0, rax
pxor xmm0, xmm3
movq qword [r14 + 8], xmm0
movzx r9d, byte [r13]
xor r9d, edx
mov byte [r14], r9b
movzx edx, byte [rsp + 0x2a]
movzx ecx, byte [rsp + 0x1f]
xor cl, byte [rsp + 0x2d]
xor edx, ebx
movzx ebx, byte [r13 + 1]
xor r15b, byte [rsp + 0x30]
movzx eax, byte [rsp + 0x20]
xor al, byte [rsp + 0x34]
xor ebx, edx
movzx edx, byte [rsp]
xor dl, byte [rsp + 0x2c]
mov byte [r14 + 1], bl
movzx r8d, byte [r13 + 2]
mov byte [rsp + 0x25], bl
movzx ebx, byte [rsp + 0x27]
xor bl, byte [rsp + 0x2b]
xor r8d, ebx
mov byte [r14 + 2], r8b
movzx ebx, byte [r13 + 3]
xor ebx, edx
movzx edx, byte [rsp + 0x2f]
xor dl, byte [rsp + 0x35]
mov byte [r14 + 3], bl
xor cl, byte [r13 + 4]
mov byte [r14 + 4], cl
mov byte [rsp], bl
movzx ebx, byte [rsp + 0x26]
xor bl, byte [rsp + 0x2e]
xor bl, byte [r13 + 5]
mov byte [r14 + 5], bl
xor dl, byte [r13 + 6]
mov byte [r14 + 6], dl
xor r15b, byte [r13 + 7]
mov byte [rsp + 0x1e], dl
mov byte [rsp + 0x26], r15b
mov byte [r14 + 7], r15b
xor al, byte [r13 + 8]
xor dil, byte [rsp + 0x23]
movzx edx, byte [rsp + 0x24]
mov byte [r14 + 8], al
xor dil, byte [r13 + 9]
xor bpl, byte [rsp + 0x37]
add r13, 0x10
xor dl, byte [rsp + 0x33]
xor r10b, byte [rsp + 0x21]
mov byte [r14 + 9], dil
xor bpl, byte [r13 - 6]
movzx r15d, byte [rsp + 0x22]
xor r15b, byte [rsp + 0x32]
xor sil, byte [rsp + 0x31]
mov byte [r14 + 0xa], bpl
xor dl, byte [r13 - 5]
xor r12b, byte [rsp + 0x36]
mov byte [r14 + 0xb], dl
xor r10b, byte [r13 - 4]
mov byte [r14 + 0xc], r10b
xor r15b, byte [r13 - 3]
mov byte [r14 + 0xd], r15b
xor sil, byte [r13 - 2]
mov byte [r14 + 0xe], sil
xor r12b, byte [r13 - 1]
mov byte [r14 + 0xf], r12b
movzx eax, al
movzx ecx, cl
movzx r10d, r10b
movzx r15d, r15b
movzx eax, byte [r11 + rax]
movzx ecx, byte [r11 + rcx]
movzx edx, dl
movzx ebx, bl
movzx esi, sil
movzx ebp, bpl
movzx edi, dil
movzx r8d, r8b
mov byte [rsp + 0x20], al
movzx eax, byte [rsp + 0x25]
movzx r12d, r12b
movzx r9d, r9b
movzx r10d, byte [r11 + r10]
movzx r15d, byte [r11 + r15]
mov byte [rsp + 0x1f], cl
movzx eax, byte [r11 + rax]
movzx esi, byte [r11 + rsi]
movzx edi, byte [r11 + rdi]
movzx r8d, byte [r11 + r8]
mov byte [rsp + 0x21], r10b
movzx r10d, byte [r11 + rbp]
movzx ebp, byte [r11 + rdx]
mov byte [rsp + 0x22], al
movzx edx, sil
movzx eax, byte [rsp + 0x1e]
movzx ebx, byte [r11 + rbx]
mov byte [rsp + 0x23], r15b
mov byte [rsp + 0x24], r8b
movzx r9d, byte [r11 + r9]
movzx ecx, byte [r11 + rax]
movzx eax, byte [rsp]
mov byte [rsp + 0x25], bpl
mov byte [rsp + 0x1e], cl
movzx ecx, byte [r11 + rax]
movzx eax, byte [rsp + 0x26]
mov r15, rcx
shl rcx, 8
or rcx, rdx
movzx edx, dil
movzx r8d, byte [r11 + rax]
movzx eax, byte [r11 + r12]
shl rcx, 8
movzx r12d, r9b
or rcx, rdx
movzx edx, byte [rsp + 0x1f]
shl rcx, 8
or rcx, rdx
movzx edx, al
shl rcx, 8
or rcx, rdx
movzx edx, r10b
shl rcx, 8
or rcx, rdx
movzx edx, bl
shl rcx, 8
or rcx, rdx
movzx edx, bpl
movzx ebp, byte [rsp + 0x1e]
shl rdx, 8
shl rcx, 8
or rdx, rbp
movzx ebp, byte [rsp + 0x22]
or rcx, r12
shl rdx, 8
or rdx, rbp
movzx ebp, byte [rsp + 0x21]
shl rdx, 8
or rdx, rbp
movzx ebp, r8b
shl rdx, 8
or rdx, rbp
movzx ebp, byte [rsp + 0x24]
mov qword [rsp], rcx
shl rdx, 8
or rdx, rbp
movzx ebp, byte [rsp + 0x23]
shl rdx, 8
or rdx, rbp
movzx ebp, byte [rsp + 0x20]
shl rdx, 8
or rdx, rbp
mov qword [rsp + 8], rdx
movdqu xmm1, xmmword [rsp]
movups xmmword [r14], xmm1
cmp qword [rsp + 0x38], r13
jne 0x20797bd78
mov rcx, qword [rsp + 0xa0]
mov edx, r9d
movzx r12d, byte [rsp + 0x1f]
xor dl, byte [rcx + 0xe0]
mov byte [r14], dl
xor bl, byte [rcx + 0xe1]
mov byte [r14 + 1], bl
xor r10b, byte [rcx + 0xe2]
mov byte [r14 + 2], r10b
xor al, byte [rcx + 0xe3]
mov byte [r14 + 3], al
xor r12b, byte [rcx + 0xe4]
mov byte [r14 + 4], r12b
movzx eax, byte [rcx + 0xe5]
movzx r12d, byte [rsp + 0x20]
xor eax, edi
mov byte [r14 + 5], al
movzx eax, byte [rcx + 0xe6]
xor eax, esi
mov byte [r14 + 6], al
movzx eax, byte [rcx + 0xe7]
xor eax, r15d
mov byte [r14 + 7], al
xor r12b, byte [rcx + 0xe8]
mov byte [r14 + 8], r12b
movzx eax, byte [rsp + 0x23]
xor al, byte [rcx + 0xe9]
movzx r12d, byte [rsp + 0x21]
mov byte [r14 + 9], al
movzx eax, byte [rsp + 0x24]
xor al, byte [rcx + 0xea]
mov byte [r14 + 0xa], al
movzx eax, byte [rcx + 0xeb]
xor eax, r8d
mov byte [r14 + 0xb], al
xor r12b, byte [rcx + 0xec]
mov byte [r14 + 0xc], r12b
movzx eax, byte [rsp + 0x22]
xor al, byte [rcx + 0xed]
add qword [rsp + 0x40], 0x10
mov byte [r14 + 0xd], al
movzx eax, byte [rsp + 0x1e]
xor al, byte [rcx + 0xee]
mov rdi, qword [rsp + 0x40]
mov byte [r14 + 0xe], al
movzx eax, byte [rsp + 0x25]
xor al, byte [rcx + 0xef]
mov rcx, r14
mov byte [r14 + 0xf], al
lea rax, [r14 + 0x10]
cmp qword [rsp + 0xb0], rdi
jbe 0x20797c518
mov r14, rax
jmp 0x20797bba0
mov r10, r14
mov rax, qword [r10]
mov rdx, qword [r10 + 8]
mov rdi, qword [rsp + 0xa0]
mov qword [rdi + 0xf0], rax
mov qword [rdi + 0xf8], rdx
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r10, rcx
jmp 0x20797c51b