Function at 0x3985d53b0
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, 0x158
test r8, r8
mov r11, rdx
mov qword [rsp + 0x1a0], rcx
mov qword [rsp + 0x1b0], r8
lea rdx, [rcx + 0xf0]
je 0x3985d5d4e
movzx eax, byte [rcx + 0xf0]
mov rdi, rcx
mov r10, rdx
mov r15, r11
add rdi, 0x10
mov qword [rsp + 0x58], rdx
mov rsi, r10
movdqa xmm2, xmmword [0x398691400]
mov qword [rsp + 0x50], rdi
mov rdi, rcx
mov qword [rsp + 0x48], 0
add rdi, 0xe0
mov qword [rsp + 0x40], rdi
mov edx, eax
xor dl, byte [r15]
movzx r9d, byte [r15 + 1]
movzx r12d, byte [r15 + 2]
movzx ebp, byte [r15 + 3]
mov byte [r15], dl
xor r9b, byte [rsi + 1]
mov r10d, edx
movzx r8d, byte [r15 + 4]
movzx ecx, byte [r15 + 5]
movzx edx, byte [r15 + 6]
mov byte [r15 + 1], r9b
xor r12b, byte [rsi + 2]
movzx edi, byte [r15 + 7]
movzx eax, byte [r15 + 8]
movzx ebx, byte [r15 + 9]
mov byte [r15 + 2], r12b
xor bpl, byte [rsi + 3]
movzx r11d, byte [r15 + 0xa]
mov byte [r15 + 3], bpl
xor r8b, byte [rsi + 4]
mov byte [r15 + 4], r8b
xor cl, byte [rsi + 5]
mov byte [r15 + 5], cl
xor dl, byte [rsi + 6]
mov byte [r15 + 6], dl
xor dil, byte [rsi + 7]
mov byte [r15 + 7], dil
xor al, byte [rsi + 8]
mov byte [r15 + 8], al
xor bl, byte [rsi + 9]
mov byte [r15 + 9], bl
xor r11b, byte [rsi + 0xa]
mov byte [r15 + 0xa], r11b
movzx r13d, byte [r15 + 0xb]
xor r13b, byte [rsi + 0xb]
movzx r14d, byte [r15 + 0xc]
mov byte [r15 + 0xb], r13b
xor r14b, byte [rsi + 0xc]
mov byte [r15 + 0xc], r14b
mov byte [rsp + 0x2a], r14b
movzx r14d, byte [r15 + 0xd]
xor r14b, byte [rsi + 0xd]
mov byte [r15 + 0xd], r14b
mov byte [rsp + 0x2b], r14b
movzx r14d, byte [r15 + 0xe]
xor r14b, byte [rsi + 0xe]
mov byte [r15 + 0xe], r14b
mov byte [rsp + 0x2c], r14b
movzx r14d, byte [r15 + 0xf]
xor r14b, byte [rsi + 0xf]
mov rsi, qword [rsp + 0x1a0]
mov byte [r15 + 0xf], r14b
xor r10b, byte [rsi]
mov byte [rsp + 0x2d], r14b
mov byte [r15], r10b
xor r9b, byte [rsi + 1]
mov byte [r15 + 1], r9b
xor r12b, byte [rsi + 2]
mov byte [r15 + 2], r12b
xor bpl, byte [rsi + 3]
mov byte [rsp + 0x10], r12b
mov byte [r15 + 3], bpl
xor r8b, byte [rsi + 4]
mov byte [rsp + 0x2e], bpl
mov byte [r15 + 4], r8b
xor cl, byte [rsi + 5]
movzx ebp, byte [rsp + 0x2a]
mov byte [r15 + 5], cl
xor dl, byte [rsi + 6]
mov byte [r15 + 6], dl
xor dil, byte [rsi + 7]
mov byte [r15 + 7], dil
xor al, byte [rsi + 8]
mov r14d, edi
mov byte [r15 + 8], al
xor bl, byte [rsi + 9]
mov byte [rsp], al
mov byte [r15 + 9], bl
xor r11b, byte [rsi + 0xa]
mov byte [r15 + 0xa], r11b
movzx edi, byte [rsi + 0xb]
xor edi, r13d
mov r13, rsi
mov byte [r15 + 0xb], dil
xor bpl, byte [rsi + 0xc]
mov r12d, edi
mov rax, r13
movzx edi, byte [rsp + 0x2b]
mov byte [r15 + 0xc], bpl
xor dil, byte [rsi + 0xd]
movzx esi, byte [rsp + 0x2c]
mov byte [rsp + 0x2c], r14b
mov r14, r15
mov byte [r15 + 0xd], dil
xor sil, byte [r13 + 0xe]
movzx r13d, byte [rsp + 0x2d]
mov byte [r15 + 0xe], sil
xor r13b, byte [rax + 0xf]
mov byte [rsp + 0x30], r13b
mov r13, qword [rsp + 0x50]
mov r15, r13
movzx r13d, byte [rsp + 0x2e]
jmp 0x3985d5a46
movzx eax, byte [rsp + 0x33]
mov r8d, edi
mov ecx, r11d
xor r11d, r12d
xor al, byte [rsp + 0x35]
xor r8d, r13d
xor ecx, r13d
mov r12d, r8d
mov r8d, r11d
xor r9b, byte [rsp + 0x2c]
mov byte [rsp + 0x3b], cl
xor r8d, r12d
mov byte [rsp + 0x10], r12b
movzx ecx, byte [rsp + 0x2d]
movzx r11d, r11b
mov r10d, r8d
mov r8d, esi
xor esi, ebp
xor cl, byte [rsp + 0x31]
movzx r12d, al
movzx eax, byte [rsp + 0x2d]
mov byte [rsp + 0x38], sil
mov edx, esi
movzx esi, byte [rsp + 0x30]
xor edx, r12d
xor sil, byte [rsp + 0x2b]
xor r8b, byte [rsp + 0x33]
mov byte [rsp + 0x3c], cl
xor eax, ebx
mov ebx, r9d
movzx ecx, byte [rsp + 0x2a]
mov r9d, eax
mov byte [rsp + 0x37], bl
xor cl, byte [rsp + 0x2c]
xor r9d, ebx
movzx ebx, sil
movzx esi, byte [rsp + 0x32]
mov byte [rsp + 0x39], al
xor sil, byte [rsp + 0x34]
movzx r8d, r8b
shl r8, 8
or r8, r12
mov byte [rsp + 0x3d], cl
movzx ecx, byte [rsp + 0x2b]
xor cl, byte [rsp + 0x32]
shl r8, 8
mov ebp, esi
movzx esi, sil
xor ebp, ebx
mov eax, ebp
movzx ebp, byte [rsp]
mov byte [rsp + 0x3e], cl
movzx ecx, byte [rsp + 0x30]
xor cl, byte [rsp + 0x34]
xor ebp, edi
mov byte [rsp + 0x3a], bpl
movzx ebp, byte [rsp + 0x2e]
xor bpl, byte [rsp + 0x35]
mov byte [rsp + 0x3f], cl
movzx r12d, bpl
or r8, r12
movzx r12d, byte [rsp + 0x38]
shl r8, 8
or r8, r12
movzx r12d, byte [rsp + 0x3b]
movzx ecx, byte [rsp + 0x10]
shl r8, 8
movzx ebp, byte [rsp + 0x35]
or r8, r12
movzx r12d, byte [rsp + 0x2d]
shl r8, 8
or r8, rcx
movzx ecx, byte [rsp + 0x3a]
shl r8, 8
or r8, rcx
movzx ecx, byte [rsp + 0x3f]
shl r8, 8
xor r12d, r9d
xor ebp, edx
movzx ebp, bpl
shl rcx, 8
or rcx, rsi
movzx esi, byte [rsp + 0x3e]
shl rcx, 8
or rcx, rsi
mov rsi, r8
movzx r8d, byte [rsp + 0x2a]
mov byte [rsp + 0x2a], r12b
shl rcx, 8
or rsi, r11
movzx r12d, byte [rsp + 0x30]
or rcx, rbx
movzx ebx, byte [rsp + 0x3d]
mov qword [rsp + 0x10], rsi
shl rcx, 8
movzx esi, byte [rsp + 0x36]
xor r8d, r9d
xor r12d, eax
or rcx, rbx
movzx ebx, byte [rsp + 0x37]
shl rcx, 8
xor esi, edx
movzx esi, sil
or rcx, rbx
movzx ebx, byte [rsp + 0x3c]
shl rcx, 8
or rcx, rbx
movzx ebx, byte [rsp + 0x39]
shl rcx, 8
mov r11, rcx
movzx ecx, byte [rsp + 0x2f]
or r11, rbx
mov ebx, edi
movzx edi, byte [rsp + 0x2e]
mov qword [rsp + 0x18], r11
movzx r11d, byte [rsp]
xor ebx, r10d
xor ecx, r10d
mov byte [rsp], r8b
movzx r8d, r12b
movzx ebx, bl
movzx r12d, byte [rsp + 0x2b]
movzx ecx, cl
xor edi, edx
xor dl, byte [rsp + 0x33]
xor r11d, r10d
xor r10d, r13d
movzx r13d, byte [rsp + 0x31]
movzx edi, dil
movzx r10d, r10b
movzx r11d, r11b
xor r12d, eax
movzx edx, dl
movzx r12d, r12b
xor r13d, r9d
xor r9b, byte [rsp + 0x2c]
mov byte [rsp + 0x2d], r13b
movzx r13d, byte [rsp + 0x32]
movzx r9d, r9b
xor r13d, eax
xor al, byte [rsp + 0x34]
shl rdx, 8
or rdx, rbp
movzx r13d, r13b
shl rdx, 8
or rdx, rdi
movzx eax, al
shl rdx, 8
shl rax, 8
or rdx, rsi
or rax, r13
shl rdx, 8
shl rax, 8
or rdx, r10
or rax, r12
shl rdx, 8
shl rax, 8
or rdx, rbx
or rax, r8
movzx r8d, byte [rsp + 0x2d]
shl rdx, 8
shl rax, 8
or rdx, r11
or rax, r9
shl rdx, 8
shl rax, 8
or rdx, rcx
or rax, r8
movzx r8d, byte [rsp + 0x2a]
shl rax, 8
or rax, r8
movzx r8d, byte [rsp]
mov qword [rsp], rdx
movdqa xmm1, xmmword [rsp + 0x10]
shl rax, 8
psrlw xmm1, 7
pand xmm1, xmm2
movdqa xmm0, xmm1
or rax, r8
paddb xmm0, xmm1
mov qword [rsp + 8], rax
paddb xmm0, xmm0
paddb xmm0, xmm0
psubb xmm0, xmm1
paddb xmm0, xmm0
paddb xmm0, xmm0
psubb xmm0, xmm1
movdqa xmm1, xmmword [rsp + 0x10]
paddb xmm1, xmm1
pxor xmm0, xmm1
pxor xmm0, xmmword [rsp]
movups xmmword [r14], xmm0
movd r10d, xmm0
xor r10b, byte [r15]
mov byte [r14], r10b
movaps xmmword [rsp + 0x140], xmm0
movzx r9d, byte [rsp + 0x141]
xor r9b, byte [r15 + 1]
mov byte [r14 + 1], r9b
movaps xmmword [rsp + 0x130], xmm0
movzx eax, byte [rsp + 0x132]
xor al, byte [r15 + 2]
mov byte [r14 + 2], al
mov byte [rsp + 0x10], al
movaps xmmword [rsp + 0x120], xmm0
movzx eax, byte [rsp + 0x123]
xor al, byte [r15 + 3]
mov byte [r14 + 3], al
mov r13d, eax
movaps xmmword [rsp + 0x110], xmm0
movzx r8d, byte [rsp + 0x114]
xor r8b, byte [r15 + 4]
add r15, 0x10
mov byte [r14 + 4], r8b
movaps xmmword [rsp + 0x100], xmm0
movzx ecx, byte [rsp + 0x105]
xor cl, byte [r15 - 0xb]
mov byte [r14 + 5], cl
movaps xmmword [rsp + 0xf0], xmm0
movzx edx, byte [rsp + 0xf6]
xor dl, byte [r15 - 0xa]
mov byte [r14 + 6], dl
movaps xmmword [rsp + 0xe0], xmm0
movzx eax, byte [rsp + 0xe7]
xor al, byte [r15 - 9]
mov byte [r14 + 7], al
mov byte [rsp + 0x2c], al
movaps xmmword [rsp + 0xd0], xmm0
movzx eax, byte [rsp + 0xd8]
xor al, byte [r15 - 8]
mov byte [r14 + 8], al
movaps xmmword [rsp + 0xc0], xmm0
movzx ebx, byte [rsp + 0xc9]
xor bl, byte [r15 - 7]
mov byte [rsp], al
mov byte [r14 + 9], bl
movaps xmmword [rsp + 0xb0], xmm0
movzx r11d, byte [rsp + 0xba]
xor r11b, byte [r15 - 6]
mov byte [r14 + 0xa], r11b
movaps xmmword [rsp + 0xa0], xmm0
movzx r12d, byte [rsp + 0xab]
xor r12b, byte [r15 - 5]
mov byte [r14 + 0xb], r12b
movaps xmmword [rsp + 0x90], xmm0
movzx esi, byte [rsp + 0x9c]
xor sil, byte [r15 - 4]
mov byte [r14 + 0xc], sil
mov ebp, esi
movaps xmmword [rsp + 0x80], xmm0
movzx edi, byte [rsp + 0x8d]
xor dil, byte [r15 - 3]
mov byte [r14 + 0xd], dil
movaps xmmword [rsp + 0x70], xmm0
movzx esi, byte [rsp + 0x7e]
xor sil, byte [r15 - 2]
mov byte [r14 + 0xe], sil
movaps xmmword [rsp + 0x60], xmm0
movzx eax, byte [rsp + 0x6f]
xor al, byte [r15 - 1]
mov byte [rsp + 0x30], al
movzx r10d, r10b
movzx ebp, bpl
movzx ebx, bl
lea rax, [0x398691300]
movzx r8d, r8b
movzx r9d, r9b
movzx eax, byte [rax + r10]
movzx ecx, cl
movzx edi, dil
movzx edx, dl
lea r10, [0x398691300]
movzx r11d, r11b
movzx esi, sil
movzx r8d, byte [r10 + r8]
movzx r12d, r12b
mov byte [rsp + 0x2f], al
movzx eax, byte [rsp]
mov byte [rsp + 0x36], r8b
movzx eax, byte [r10 + rax]
mov byte [rsp + 0x2a], al
mov rax, r10
movzx r10d, byte [r10 + rbp]
movzx r9d, byte [rax + r9]
movzx ebp, byte [rax + rbx]
mov rbx, rax
movzx ecx, byte [rax + rcx]
movzx edi, byte [rax + rdi]
movzx eax, byte [rsp + 0x10]
mov byte [rsp + 0x2b], r9b
mov byte [rsp + 0x2e], bpl
mov byte [rsp], cl
movzx ecx, byte [rbx + rdx]
mov byte [rsp + 0x2d], dil
movzx edi, byte [rbx + r11]
movzx r9d, byte [rbx + rax]
movzx eax, r13b
movzx edx, byte [rbx + rax]
movzx eax, byte [rsp + 0x2c]
movzx r11d, byte [rbx + rsi]
mov rsi, rbx
mov byte [rsp + 0x31], r9b
mov byte [rsp + 0x33], dl
shl rdx, 8
movzx r13d, byte [rbx + rax]
movzx eax, r11b
movzx ebx, byte [rbx + r12]
mov byte [rsp + 0x35], r11b
or rdx, rax
movzx eax, bpl
shl rdx, 8
mov byte [rsp + 0x2c], r13b
movzx r13d, byte [rsp + 0x30]
or rdx, rax
movzx eax, r8b
shl rdx, 8
or rdx, rax
shl rdx, 8
movzx r13d, byte [rsi + r13]
mov rsi, rax
movzx eax, r13b
or rdx, rax
movzx eax, dil
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp]
shl rdx, 8
movzx r8d, byte [rsp + 0x2f]
mov byte [rsp + 0x32], cl
mov byte [rsp + 0x34], bl
mov byte [rsp + 0x30], r10b
or rdx, rax
mov r12, rax
movzx eax, bl
shl rax, 8
shl rdx, 8
mov r11, r8
or rax, rcx
movzx ecx, byte [rsp + 0x2b]
or rdx, r8
shl rax, 8
mov qword [rsp + 0x10], rdx
or rax, rcx
movzx ecx, r10b
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2c]
shl rax, 8
or rax, rcx
movzx ecx, r9b
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2d]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x2a]
shl rax, 8
mov r8, rax
or r8, rcx
mov rbx, rcx
mov qword [rsp + 0x18], r8
mov r8, qword [rsp + 0x40]
movdqa xmm3, xmmword [rsp + 0x10]
movups xmmword [r14], xmm3
cmp r15, r8
jne 0x3985d55d8
mov rax, qword [rsp + 0x1a0]
mov edx, r11d
movzx ebp, byte [rsp + 0x35]
movzx r10d, byte [rsp + 0x2d]
xor dl, byte [rax + 0xe0]
mov rsi, rax
movzx eax, byte [rsp]
mov byte [r14], dl
xor al, byte [rsi + 0xe1]
mov byte [r14 + 1], al
movzx eax, byte [rsi + 0xe2]
xor eax, edi
mov byte [r14 + 2], al
movzx eax, byte [rsi + 0xe3]
xor eax, r13d
mov byte [r14 + 3], al
movzx eax, byte [rsp + 0x36]
xor al, byte [rsi + 0xe4]
mov byte [r14 + 4], al
movzx eax, byte [rsp + 0x2e]
xor al, byte [rsi + 0xe5]
mov byte [r14 + 5], al
movzx eax, byte [rsi + 0xe6]
xor eax, ebp
mov byte [r14 + 6], al
movzx eax, byte [rsp + 0x33]
xor al, byte [rsi + 0xe7]
mov byte [r14 + 7], al
movzx eax, byte [rsp + 0x2a]
xor al, byte [rsi + 0xe8]
mov byte [r14 + 8], al
movzx eax, byte [rsi + 0xe9]
xor eax, r10d
mov byte [r14 + 9], al
movzx eax, byte [rsp + 0x31]
xor al, byte [rsi + 0xea]
mov byte [r14 + 0xa], al
movzx eax, byte [rsp + 0x2c]
xor al, byte [rsi + 0xeb]
add qword [rsp + 0x48], 0x10
mov rdi, qword [rsp + 0x48]
mov byte [r14 + 0xb], al
movzx eax, byte [rsp + 0x30]
xor al, byte [rsi + 0xec]
mov byte [r14 + 0xc], al
movzx eax, byte [rsp + 0x2b]
xor al, byte [rsi + 0xed]
mov byte [r14 + 0xd], al
movzx eax, byte [rsp + 0x32]
xor al, byte [rsi + 0xee]
mov byte [r14 + 0xe], al
movzx eax, byte [rsp + 0x34]
xor al, byte [rsi + 0xef]
mov rsi, r14
cmp rdi, qword [rsp + 0x1b0]
mov byte [r14 + 0xf], al
lea rax, [r14 + 0x10]
jae 0x3985d5d18
mov r15, rax
jmp 0x3985d5429
mov rdx, qword [rsp + 0x58]
mov r11, r14
mov rax, qword [r11]
mov rdi, qword [rsp + 0x1a0]
mov qword [rdi + 0xf0], rax
mov rax, qword [r11 + 8]
mov qword [rdx + 8], rax
add rsp, 0x158
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r11, rdx
jmp 0x3985d5d20