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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rax, qword [rcx]
mov rdi, r9
mov rsi, r8
mov rbp, rdx
mov rbx, rcx
call qword [rax + 0x20]
test al, al
jne 0x1800e2c72
mov rcx, rbx
call fcn.1800a53c0
lea r9, [rbx + 8]
mov r8, rdi
mov rdx, rsi
mov rcx, rbp
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp 0x1800e3190
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
push rbx
push rbp
push r12
push r13
push r14
sub rsp, 0x40
mov r13, rdx
mov rbx, rcx
lea rdx, str.cw
mov ecx, 0x100
mov r12, r9
mov rbp, r8
call fcn.180158b00
lea rdx, [0x180347200]
mov ecx, 0x100
call fcn.180158b00
lea rdx, [0x180347300]
mov ecx, 0x100
call fcn.180158b00
lea rdx, [0x180347400]
mov ecx, 0x100
call fcn.180158b00
mov r14, qword [r12 + 8]
sub r14, qword [r12]
sar r14, 2
shr r14, 2
dec r14
test rbp, rbp
je 0x1800e3807
mov qword [rsp + 0x70], rsi
lea r9, [0x180347300]
mov r8, r14
mov qword [rsp + 0x38], rdi
shl r8, 4
lea r10, [0x180347400]
mov qword [rsp + 0x30], r15
sub r13, rbx
lea r15, [rbx + 8]
mov qword [rsp + 0x78], r13
mov qword [rsp + 0x28], r8
mov qword [rsp + 0x20], r15
nop dword [rax]
mov edi, dword [r15 - 8]
xor ebx, ebx
mov eax, dword [r15 - 4]
mov r11d, dword [r15]
mov esi, dword [r15 + 4]
bswap edi
bswap eax
bswap r11d
bswap esi
test r14, r14
je 0x1800e363d
mov rbp, qword [r12]
lea r13, [0x180347300]
add rbp, 8
lea r12, [r14 - 2]
lea r15, [0x180347400]
lea r10, str.cw
nop dword [rax]
nop dword [rax + rax]
xor eax, dword [rbp - 4]
lea r8, [0x180347200]
xor r11d, dword [rbp]
xor esi, dword [rbp + 4]
xor edi, dword [rbp - 8]
mov ecx, r11d
shr rcx, 0x18
movzx ecx, byte [rcx + r10]
imul r10d, ecx, 0x10101
mov ecx, r11d
shr ecx, 8
movzx edx, cl
movzx ecx, byte [rdx + r13]
imul edx, ecx, 0x1010001
mov ecx, r11d
shr ecx, 0x10
xor r10d, edx
movzx edx, cl
movzx ecx, byte [rdx + r8]
imul edx, ecx, 0x1000101
movzx ecx, r11b
lea r11, str.cw
movzx ecx, byte [rcx + r15]
xor r10d, edx
imul edx, ecx, 0x1010100
mov ecx, esi
shr rcx, 0x18
xor r10d, edx
movzx ecx, byte [rcx + r11]
imul r9d, ecx, 0x10101
mov ecx, esi
shr ecx, 8
movzx edx, cl
movzx ecx, byte [rdx + r13]
imul edx, ecx, 0x1010001
mov ecx, esi
shr ecx, 0x10
xor r9d, edx
movzx edx, cl
movzx ecx, byte [rdx + r8]
imul edx, ecx, 0x1000101
movzx ecx, sil
lea rsi, [0x180347200]
movzx ecx, byte [rcx + r15]
xor r9d, edx
imul edx, ecx, 0x1010100
mov ecx, eax
shr rcx, 0x18
xor r9d, edx
movzx ecx, byte [rcx + r11]
imul r8d, ecx, 0x10101
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, byte [rdx + r13]
imul edx, ecx, 0x1010001
mov ecx, eax
shr ecx, 0x10
xor r8d, edx
movzx edx, cl
movzx ecx, byte [rdx + rsi]
imul edx, ecx, 0x1000101
movzx ecx, al
movzx eax, byte [rcx + r15]
xor r8d, edx
imul ecx, eax, 0x1010100
mov eax, edi
shr rax, 0x18
xor r8d, ecx
movzx eax, byte [rax + r11]
xor r8d, r10d
imul edx, eax, 0x10101
mov eax, edi
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r13]
imul ecx, eax, 0x1010001
mov eax, edi
xor edx, ecx
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + rsi]
mov esi, r8d
imul ecx, eax, 0x1000101
xor esi, r9d
movzx eax, dil
bswap esi
movzx eax, byte [rax + r15]
xor edx, ecx
imul ecx, eax, 0x1010100
mov edi, edx
xor edi, ecx
xor edi, r8d
mov eax, edi
xor eax, r10d
lea r10, str.cw
xor eax, r9d
xor r8d, eax
mov r11d, eax
shl eax, 0x10
shr r11d, 0x10
or r11d, eax
mov eax, r8d
and eax, 0xffff00ff
shr r8d, 8
shl eax, 8
and r8d, 0xff00ff
or eax, r8d
xor eax, r11d
xor r11d, esi
xor edi, eax
xor esi, eax
xor eax, dword [rbp + 0xc]
xor r11d, edi
xor edi, dword [rbp + 8]
xor eax, r11d
xor r11d, dword [rbp + 0x10]
xor esi, dword [rbp + 0x14]
cmp rbx, r12
je 0x1800e35ff
mov ecx, r11d
shr rcx, 0x18
movzx ecx, byte [rcx + r13]
imul r8d, ecx, 0x1010001
mov ecx, r11d
shr ecx, 8
movzx edx, cl
movzx ecx, byte [rdx + r10]
imul edx, ecx, 0x10101
mov ecx, r11d
shr ecx, 0x10
xor r8d, edx
movzx edx, cl
movzx ecx, byte [rdx + r15]
imul edx, ecx, 0x1010100
movzx ecx, r11b
xor r8d, edx
lea rdx, [0x180347200]
movzx ecx, byte [rcx + rdx]
mov r11d, r8d
imul edx, ecx, 0x1000101
mov ecx, esi
shr rcx, 0x18
xor r11d, edx
movzx ecx, byte [rcx + r13]
imul r9d, ecx, 0x1010001
mov ecx, esi
shr ecx, 8
movzx edx, cl
movzx ecx, byte [rdx + r10]
imul edx, ecx, 0x10101
mov ecx, esi
shr ecx, 0x10
xor r9d, edx
movzx edx, cl
movzx ecx, byte [rdx + r15]
imul edx, ecx, 0x1010100
movzx ecx, sil
lea rsi, [0x180347200]
movzx ecx, byte [rcx + rsi]
xor r9d, edx
imul edx, ecx, 0x1000101
mov ecx, eax
shr rcx, 0x18
xor r9d, edx
movzx ecx, byte [rcx + r13]
imul r8d, ecx, 0x1010001
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, byte [rdx + r10]
imul edx, ecx, 0x10101
mov ecx, eax
shr ecx, 0x10
xor r8d, edx
movzx edx, cl
movzx ecx, byte [rdx + r15]
imul edx, ecx, 0x1010100
movzx ecx, al
movzx eax, byte [rcx + rsi]
xor r8d, edx
imul ecx, eax, 0x1000101
mov eax, r8d
xor eax, ecx
mov ecx, edi
shr rcx, 0x18
xor eax, r11d
xor r11d, r9d
movzx ecx, byte [rcx + r13]
imul r8d, ecx, 0x1010001
mov ecx, edi
shr ecx, 8
movzx edx, cl
movzx ecx, byte [rdx + r10]
imul edx, ecx, 0x10101
mov ecx, edi
shr ecx, 0x10
xor r8d, edx
movzx edx, cl
movzx ecx, byte [rdx + r15]
imul edx, ecx, 0x1010100
xor r9d, eax
movzx ecx, dil
xor r8d, edx
mov edi, r8d
movzx ecx, byte [rcx + rsi]
mov esi, r9d
and esi, 0xffff00ff
imul edx, ecx, 0x1000101
shl esi, 8
shr r9d, 8
and r9d, 0xff00ff
or esi, r9d
xor edi, edx
xor edi, eax
xor r11d, edi
ror edi, 0x10
xor eax, r11d
bswap eax
xor eax, r11d
xor r11d, esi
xor edi, eax
xor esi, eax
xor r11d, edi
xor eax, r11d
add rbx, 2
add rbp, 0x20
cmp rbx, r14
jb 0x1800e32a0
mov r15, qword [rsp + 0x20]
lea r9, [0x180347300]
mov r12, qword [rsp + 0x88]
lea r10, [0x180347400]
mov r13, qword [rsp + 0x78]
mov r8, qword [rsp + 0x28]
mov rbp, qword [rsp + 0x80]
mov rcx, qword [r12]
lea rbx, str.cw
mov edx, edi
shr rdx, 0x18
movzx edx, byte [rdx + r9]
xor dl, byte [r8 + rcx + 3]
mov ecx, edi
mov byte [r15 + r13 - 8], dl
shr ecx, 0x10
movzx edx, cl
mov rcx, qword [r12]
movzx edx, byte [rdx + r10]
xor dl, byte [r8 + rcx + 2]
mov ecx, edi
mov byte [r15 + r13 - 7], dl
shr ecx, 8
movzx edx, cl
mov rcx, qword [r12]
movzx edx, byte [rdx + rbx]
xor dl, byte [r8 + rcx + 1]
mov byte [r15 + r13 - 6], dl
mov rcx, qword [r12]
movzx edx, dil
lea rdi, [0x180347200]
movzx edx, byte [rdx + rdi]
xor dl, byte [r8 + rcx]
mov byte [r15 + r13 - 5], dl
mov rcx, qword [r12]
mov edx, eax
shr rdx, 0x18
movzx edx, byte [rdx + r9]
xor dl, byte [r8 + rcx + 7]
mov ecx, eax
mov byte [r15 + r13 - 4], dl
shr ecx, 0x10
movzx edx, cl
mov rcx, qword [r12]
movzx edx, byte [rdx + r10]
xor dl, byte [r8 + rcx + 6]
mov ecx, eax
shr ecx, 8
mov byte [r15 + r13 - 3], dl
movzx edx, cl
mov rcx, qword [r12]
movzx edx, byte [rdx + rbx]
xor dl, byte [r8 + rcx + 5]
mov byte [r15 + r13 - 2], dl
movzx ecx, al
mov rax, qword [r12]
movzx ecx, byte [rcx + rdi]
xor cl, byte [r8 + rax + 4]
mov byte [r15 + r13 - 1], cl
mov rax, qword [r12]
mov ecx, r11d
shr rcx, 0x18
movzx ecx, byte [rcx + r9]
xor cl, byte [r8 + rax + 0xb]
mov eax, r11d
mov byte [r15 + r13], cl
shr eax, 0x10
movzx ecx, al
mov rax, qword [r12]
movzx ecx, byte [rcx + r10]
xor cl, byte [r8 + rax + 0xa]
mov eax, r11d
mov byte [r15 + r13 + 1], cl
shr eax, 8
movzx ecx, al
mov rax, qword [r12]
movzx ecx, byte [rcx + rbx]
xor cl, byte [r8 + rax + 9]
mov byte [r15 + r13 + 2], cl
mov rax, qword [r12]
movzx ecx, r11b
movzx ecx, byte [rcx + rdi]
xor cl, byte [r8 + rax + 8]
mov byte [r15 + r13 + 3], cl
mov rax, qword [r12]
mov ecx, esi
shr rcx, 0x18
movzx ecx, byte [rcx + r9]
xor cl, byte [r8 + rax + 0xf]
mov eax, esi
mov byte [r15 + r13 + 4], cl
shr eax, 0x10
movzx ecx, al
mov rax, qword [r12]
movzx ecx, byte [rcx + r10]
xor cl, byte [r8 + rax + 0xe]
mov eax, esi
mov byte [r15 + r13 + 5], cl
shr eax, 8
movzx edx, al
mov rax, qword [r12]
mov ecx, dword [r8 + rax + 0xc]
shr ecx, 8
xor cl, byte [rdx + rbx]
mov byte [r15 + r13 + 6], cl
mov rax, qword [r12]
movzx ecx, sil
movzx ecx, byte [rcx + rdi]
xor cl, byte [r8 + rax + 0xc]
mov byte [r15 + r13 + 7], cl
add r15, 0x10
sub rbp, 1
mov qword [rsp + 0x20], r15
mov qword [rsp + 0x80], rbp
jne 0x1800e3250
mov r15, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x70]
add rsp, 0x40
pop r14
pop r13
pop r12
pop rbp
pop rbx
ret