Function at 0x140086c70
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push rdi
push r13
push r14
push r15
sub rsp, 8
mov eax, dword [rcx + 4]
lea r14, [rcx + 4]
xor dword [rdx], eax
xor r15d, r15d
mov eax, dword [rdx + 4]
mov rdi, rdx
xor eax, dword [r14 + 4]
mov dword [rdx + 4], eax
mov eax, dword [rdx + 8]
xor eax, dword [r14 + 8]
mov dword [rdx + 8], eax
mov eax, dword [rdx + 0xc]
xor eax, dword [r14 + 0xc]
add r14, 0x10
mov dword [rdx + 0xc], eax
movzx r13d, word [rcx]
test r13d, r13d
je 0x140086fe0
mov qword [rsp + 0x30], rbx
lea rbx, str.cw
mov qword [rsp + 0x40], rbp
mov qword [rsp + 0x48], rsi
mov qword [rsp], r12
lea r12d, [r13 - 1]
nop dword [rax + rax]
movzx eax, byte [rdi + 3]
movzx ebp, byte [rax + rbx]
movzx eax, byte [rdi + 6]
movzx r10d, byte [rax + rbx]
movzx eax, byte [rdi + 9]
movzx r9d, byte [rax + rbx]
movzx eax, byte [rdi + 0xc]
movzx edx, byte [rax + rbx]
cmp r15d, r12d
je 0x140086d78
mov ecx, edx
mov eax, r10d
xor ecx, r9d
xor eax, ebp
xor ecx, r10d
mov r8d, ebp
xor ecx, ebp
test al, al
jns 0x140086d24
add eax, eax
xor eax, 0x1b
jmp 0x140086d26
add eax, eax
movzx eax, al
xor eax, ecx
xor ebp, eax
mov eax, r9d
xor eax, r10d
test al, al
jns 0x140086d3e
add eax, eax
xor eax, 0x1b
jmp 0x140086d40
add eax, eax
movzx eax, al
xor eax, ecx
xor r10d, eax
mov eax, edx
xor eax, r9d
test al, al
jns 0x140086d58
add eax, eax
xor eax, 0x1b
jmp 0x140086d5a
add eax, eax
movzx eax, al
xor r8d, edx
xor eax, ecx
xor r9d, eax
lea eax, [r8 + r8]
test r8b, r8b
jns 0x140086d71
xor eax, 0x1b
movzx eax, al
xor eax, ecx
xor edx, eax
movzx eax, byte [rdi + 7]
shl ebp, 8
or ebp, r10d
shl ebp, 8
movzx esi, byte [rax + rbx]
or ebp, r9d
movzx eax, byte [rdi + 0xa]
shl ebp, 8
or ebp, edx
movzx r10d, byte [rax + rbx]
movzx eax, byte [rdi + 0xd]
movzx r9d, byte [rax + rbx]
movzx eax, byte [rdi]
movzx r8d, byte [rax + rbx]
cmp r15d, r12d
je 0x140086e21
mov ecx, r8d
mov eax, r10d
xor ecx, r9d
xor eax, esi
xor ecx, r10d
mov edx, esi
xor ecx, esi
test al, al
jns 0x140086dcd
add eax, eax
xor eax, 0x1b
jmp 0x140086dcf
add eax, eax
movzx eax, al
xor eax, ecx
xor esi, eax
mov eax, r9d
xor eax, r10d
test al, al
jns 0x140086de7
add eax, eax
xor eax, 0x1b
jmp 0x140086de9
add eax, eax
movzx eax, al
xor eax, ecx
xor r10d, eax
mov eax, r8d
xor eax, r9d
test al, al
jns 0x140086e02
add eax, eax
xor eax, 0x1b
jmp 0x140086e04
add eax, eax
movzx eax, al
xor edx, r8d
xor eax, ecx
xor r9d, eax
lea eax, [rdx + rdx]
test dl, dl
jns 0x140086e19
xor eax, 0x1b
movzx eax, al
xor eax, ecx
xor r8d, eax
movzx eax, byte [rdi + 0xb]
shl esi, 8
or esi, r10d
shl esi, 8
or esi, r9d
movzx r9d, byte [rax + rbx]
movzx eax, byte [rdi + 0xe]
shl esi, 8
or esi, r8d
movzx r11d, byte [rax + rbx]
movzx eax, byte [rdi + 1]
movzx r10d, byte [rax + rbx]
movzx eax, byte [rdi + 4]
movzx r8d, byte [rax + rbx]
cmp r15d, r12d
je 0x140086ed1
mov ecx, r8d
mov eax, r11d
xor ecx, r10d
xor eax, r9d
xor ecx, r11d
mov edx, r9d
xor ecx, r9d
test al, al
jns 0x140086e7c
add eax, eax
xor eax, 0x1b
jmp 0x140086e7e
add eax, eax
movzx eax, al
xor eax, ecx
xor r9d, eax
mov eax, r10d
xor eax, r11d
test al, al
jns 0x140086e97
add eax, eax
xor eax, 0x1b
jmp 0x140086e99
add eax, eax
movzx eax, al
xor eax, ecx
xor r11d, eax
mov eax, r8d
xor eax, r10d
test al, al
jns 0x140086eb2
add eax, eax
xor eax, 0x1b
jmp 0x140086eb4
add eax, eax
movzx eax, al
xor edx, r8d
xor eax, ecx
xor r10d, eax
lea eax, [rdx + rdx]
test dl, dl
jns 0x140086ec9
xor eax, 0x1b
movzx eax, al
xor eax, ecx
xor r8d, eax
movzx eax, byte [rdi + 0xf]
lea rdx, str.cw
shl r9d, 8
or r9d, r11d
shl r9d, 8
movzx ecx, byte [rax + rbx]
or r9d, r10d
movzx eax, byte [rdi + 2]
shl r9d, 8
or r9d, r8d
movzx ebx, byte [rax + rbx]
movzx eax, byte [rdi + 5]
movzx r11d, byte [rax + rdx]
movzx eax, byte [rdi + 8]
movzx r10d, byte [rax + rdx]
cmp r15d, r12d
je 0x140086f8a
mov r8d, r10d
mov eax, ebx
xor r8d, r11d
xor eax, ecx
xor r8d, ebx
mov edx, ecx
xor r8d, ecx
test al, al
jns 0x140086f31
add eax, eax
xor eax, 0x1b
jmp 0x140086f33
add eax, eax
movzx eax, al
xor eax, r8d
xor ecx, eax
mov eax, r11d
xor eax, ebx
test al, al
jns 0x140086f4b
add eax, eax
xor eax, 0x1b
jmp 0x140086f4d
add eax, eax
movzx eax, al
xor eax, r8d
xor ebx, eax
mov eax, r10d
xor eax, r11d
test al, al
jns 0x140086f66
add eax, eax
xor eax, 0x1b
jmp 0x140086f68
add eax, eax
movzx eax, al
xor edx, r10d
xor eax, r8d
xor r11d, eax
test dl, dl
jns 0x140086f7f
add edx, edx
xor edx, 0x1b
jmp 0x140086f81
add edx, edx
movzx eax, dl
xor eax, r8d
xor r10d, eax
xor ebp, dword [r14]
inc r15d
shl ecx, 8
or ecx, ebx
mov dword [rdi], ebp
xor esi, dword [r14 + 4]
lea rbx, str.cw
shl ecx, 8
or ecx, r11d
mov dword [rdi + 4], esi
xor r9d, dword [r14 + 8]
shl ecx, 8
or ecx, r10d
mov dword [rdi + 8], r9d
xor ecx, dword [r14 + 0xc]
add r14, 0x10
mov dword [rdi + 0xc], ecx
cmp r15d, r13d
jb 0x140086ce0
mov r12, qword [rsp]
mov rsi, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x30]
add rsp, 8
pop r15
pop r14
pop r13
pop rdi
ret