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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xb8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x30], 0xfffffffffffffffe
mov rbx, rcx
mov rsi, qword [rbp + 0xa8]
test sil, 0xf
je 0x140003936
mov qword [rbx], 1
xorps xmm0, xmm0
movups xmmword [rbx + 8], xmm0
jmp 0x140003f79
test rsi, rsi
je 0x14000398a
js 0x14000403f
mov r12, r9
mov r14, r8
mov r15, rdx
movzx eax, byte [0x1400b3151]
mov edx, 1
mov rcx, rsi
call fcn.140003540
test rax, rax
je 0x140004046
mov rdi, rax
mov rdx, qword [rbp + 0xa0]
mov rcx, rax
mov r8, rsi
call sub.VCRUNTIME140.dll_memcpy
cmp rsi, 0x10
jae 0x140003996
mov rax, rsi
jmp 0x140003f6e
mov edi, 1
xor eax, eax
jmp 0x140003f6e
mov qword [rbp - 0x20], rbx
mov rcx, rsi
shr rcx, 4
mov eax, dword [r15 + 0xf4]
mov dword [rbp - 0x10], eax
mov eax, dword [r15 + 0xf8]
mov dword [rbp - 0xc], eax
mov eax, dword [r15 + 0xfc]
mov dword [rbp - 8], eax
mov eax, dword [r15 + 0x100]
mov dword [rbp - 4], eax
movzx eax, byte [r15 + 0x1e4]
shr al, 1
mov byte [rbp + 0x2f], al
add r15, 0x120
mov eax, 0x10
xor r8d, r8d
mov qword [rbp - 0x18], rdi
mov qword [rbp - 0x28], r15
nop dword [rax]
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x58], r12
lea rax, [r8 + 0x10]
cmp rax, rsi
ja 0x140004027
mov qword [rbp - 0x48], r14
dec rcx
mov qword [rbp - 0x38], rcx
lea rax, [rdi + r8]
mov qword [rbp - 0x50], rax
mov edx, dword [rdi + r8]
mov ebx, dword [rdi + r8 + 4]
bswap edx
xor edx, dword [rbp - 0x10]
bswap ebx
xor ebx, dword [rbp - 0xc]
mov ecx, dword [rdi + r8 + 8]
bswap ecx
xor ecx, dword [rbp - 8]
mov qword [rbp - 0x30], r8
mov eax, dword [rdi + r8 + 0xc]
bswap eax
xor eax, dword [rbp - 4]
mov r10d, 0x3c
mov qword [rbp + 0x18], r15
movzx r8d, byte [rbp + 0x2f]
mov byte [rbp + 0x20], r8b
lea r14, [0x1400a4eb0]
lea r12, [0x1400a52c8]
lea r13, [0x1400a56c8]
lea r11, [0x1400a5ac8]
nop word cs:[rax + rax]
mov qword [rbp - 0x60], r10
movzx esi, ch
mov r9, rsi
movzx r8d, cl
mov qword [rbp], r8
mov esi, ecx
shr ecx, 0x10
movzx ecx, cl
mov r15d, eax
movzx edi, ah
mov qword [rbp + 0x10], rdi
movzx r8d, al
mov qword [rbp + 8], r8
shr eax, 0x18
mov r8d, dword [r12 + rcx*4]
xor r8d, dword [r14 + rax*4]
mov eax, edx
shr eax, 0x18
shr r15d, 0x10
movzx r15d, r15b
mov ecx, dword [r12 + r15*4]
xor ecx, dword [r14 + rax*4]
xor ecx, dword [r13 + r9*4]
movzx r13d, bl
mov r15d, ebx
mov r10d, ebx
movzx edi, bh
shr r15d, 0x18
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
movzx eax, dh
movzx r9d, dl
mov edx, dword [r12 + rbx*4]
xor edx, dword [r14 + r15*4]
lea rbx, [0x1400a56c8]
mov r15, qword [rbp + 0x10]
xor edx, dword [rbx + r15*4]
shr esi, 0x18
shr r10d, 0x10
movzx r10d, r10b
mov ebx, dword [r12 + r10*4]
xor ebx, dword [r14 + rsi*4]
lea r10, [0x1400a56c8]
xor ebx, dword [r10 + rax*4]
lea rax, [0x1400a56c8]
xor r8d, dword [rax + rdi*4]
xor ecx, dword [r11 + r13*4]
mov rax, qword [rbp]
xor edx, dword [r11 + rax*4]
mov rax, qword [rbp + 8]
xor ebx, dword [r11 + rax*4]
xor r8d, dword [r11 + r9*4]
mov rax, qword [rbp + 0x18]
xor ecx, dword [rax - 0x1c]
mov rdi, rcx
mov rcx, r8
xor edx, dword [rax - 0x18]
xor ebx, dword [rax - 0x14]
xor ecx, dword [rax - 0x10]
movzx eax, byte [rbp + 0x20]
dec al
je 0x140003c70
mov byte [rbp + 0x20], al
movzx eax, bh
mov qword [rbp], rax
movzx eax, bl
mov qword [rbp + 8], rax
mov r9d, ebx
shr ebx, 0x10
movzx eax, bl
mov r10d, ecx
movzx esi, ch
movzx ebx, cl
mov qword [rbp + 0x10], rbx
shr ecx, 0x18
mov eax, dword [r12 + rax*4]
xor eax, dword [r14 + rcx*4]
movzx r15d, dl
mov r13d, edx
shr r13d, 0x18
mov rcx, rdi
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [r12 + rbx*4]
xor ebx, dword [r14 + r13*4]
mov edi, edx
movzx edx, dh
mov r8, rdx
lea rdx, [0x1400a56c8]
xor ebx, dword [rdx + rsi*4]
mov esi, ecx
shr r9d, 0x18
shr edi, 0x10
movzx edx, dil
movzx edi, ch
movzx r13d, cl
mov ecx, dword [r12 + rdx*4]
xor ecx, dword [r14 + r9*4]
lea r9, [0x1400a56c8]
xor ecx, dword [r9 + rdi*4]
lea rdi, [0x1400a56c8]
xor eax, dword [rdi + r8*4]
mov rdx, qword [rbp]
mov edx, dword [rdi + rdx*4]
xor edx, dword [r11 + r15*4]
shr r10d, 0x10
movzx r10d, r10b
xor edx, dword [r12 + r10*4]
shr esi, 0x18
xor edx, dword [r14 + rsi*4]
mov r8, qword [rbp + 8]
xor ebx, dword [r11 + r8*4]
mov r8, qword [rbp + 0x10]
xor ecx, dword [r11 + r8*4]
xor eax, dword [r11 + r13*4]
mov r13, rdi
mov r9, qword [rbp + 0x18]
xor edx, dword [r9 - 0xc]
xor ebx, dword [r9 - 8]
xor ecx, dword [r9 - 4]
xor eax, dword [r9]
add r9, 0x20
mov r10, qword [rbp - 0x60]
add r10, 0xfffffffffffffff8
mov qword [rbp + 0x18], r9
cmp r10, 4
ja 0x140003a80
jmp 0x140003f90
mov r15d, ecx
mov esi, ecx
mov r14d, ecx
mov r13d, edi
mov ecx, edi
shr edi, 8
movzx eax, dil
mov qword [rbp + 0x20], rax
mov r8d, ebx
mov eax, ebx
shr ebx, 0x10
movzx r12d, bl
mov r10d, edx
movzx r11d, r10b
shr r8d, 8
movzx r8d, r8b
lea r9, [0x1400a5f58]
movzx r8d, byte [r8 + r9]
movzx r11d, byte [r11 + r9]
shl r11d, 0x18
shl r8d, 0x10
or r8d, r11d
mov edi, edx
shr edx, 8
movzx r11d, dl
shr r15d, 0x10
movzx edx, r15b
movzx ebx, byte [rdx + r9]
shl ebx, 8
or ebx, r8d
mov rdx, r13
shr rdx, 0x18
movzx edx, byte [rdx + r9]
or ebx, edx
shr ecx, 0x10
movzx ecx, cl
movzx edx, byte [rcx + r9]
shr r10, 0x18
movzx ecx, byte [r10 + r9]
shl edx, 8
or edx, ecx
movzx ecx, al
movzx ecx, byte [rcx + r9]
shl ecx, 0x18
or edx, ecx
shr esi, 8
movzx ecx, sil
movzx ecx, byte [rcx + r9]
shl ecx, 0x10
or edx, ecx
shr edi, 0x10
movzx ecx, dil
movzx ecx, byte [rcx + r9]
shr rax, 0x18
movzx eax, byte [rax + r9]
shl ecx, 8
or ecx, eax
movzx eax, r14b
movzx eax, byte [rax + r9]
shl eax, 0x18
or ecx, eax
mov rax, qword [rbp + 0x20]
movzx eax, byte [rax + r9]
shl eax, 0x10
or ecx, eax
movzx eax, byte [r12 + r9]
shr r14, 0x18
movzx r8d, byte [r14 + r9]
shl eax, 8
or eax, r8d
movzx r8d, r13b
movzx r8d, byte [r8 + r9]
shl r8d, 0x18
or eax, r8d
bswap ebx
mov r10, qword [rbp + 0x18]
xor ebx, dword [r10 - 0xc]
bswap edx
xor edx, dword [r10 - 8]
movzx r8d, byte [r11 + r9]
shl r8d, 0x10
or eax, r8d
bswap ecx
xor ecx, dword [r10 - 4]
bswap eax
xor eax, dword [r10]
bswap ebx
mov r11, qword [rbp - 0x50]
mov dword [r11], ebx
bswap edx
mov dword [r11 + 4], edx
bswap ecx
mov dword [r11 + 8], ecx
bswap eax
mov dword [r11 + 0xc], eax
mov r10, qword [rbp - 0x58]
test r10, r10
je 0x140003fab
mov r9, qword [rbp - 0x48]
movzx r8d, byte [r9]
xor byte [r11], r8b
cmp r10, 1
je 0x140003faf
movzx r8d, byte [r9 + 1]
xor byte [r11 + 1], r8b
cmp r10, 2
je 0x140003fb6
movzx r8d, byte [r9 + 2]
xor byte [r11 + 2], r8b
cmp r10, 3
je 0x140003fbd
movzx r8d, byte [r9 + 3]
xor byte [r11 + 3], r8b
cmp r10, 4
je 0x140003fc4
movzx r8d, byte [r9 + 4]
xor r8b, dl
mov byte [r11 + 4], r8b
cmp r10, 5
je 0x140003fcb
mov r8d, edx
shr r8d, 8
xor r8b, byte [r9 + 5]
mov byte [r11 + 5], r8b
cmp r10, 6
je 0x140003fd2
mov r8d, edx
shr r8d, 0x10
xor r8b, byte [r9 + 6]
mov byte [r11 + 6], r8b
cmp r10, 7
je 0x140003fd9
shr edx, 0x18
xor dl, byte [r9 + 7]
mov byte [r11 + 7], dl
cmp r10, 8
je 0x140003fe0
movzx edx, byte [r9 + 8]
xor dl, cl
mov byte [r11 + 8], dl
cmp r10, 9
je 0x140003fe7
mov edx, ecx
shr edx, 8
xor dl, byte [r9 + 9]
mov byte [r11 + 9], dl
cmp r10, 0xa
je 0x140003fee
mov edx, ecx
shr edx, 0x10
xor dl, byte [r9 + 0xa]
mov byte [r11 + 0xa], dl
cmp r10, 0xb
je 0x140003ff5
shr ecx, 0x18
xor cl, byte [r9 + 0xb]
mov byte [r11 + 0xb], cl
cmp r10, 0xc
je 0x140003ffc
movzx ecx, byte [r9 + 0xc]
xor cl, al
mov byte [r11 + 0xc], cl
cmp r10, 0xd
je 0x140004003
mov ecx, eax
shr ecx, 8
xor cl, byte [r9 + 0xd]
mov byte [r11 + 0xd], cl
cmp r10, 0xe
je 0x14000400a
mov ecx, eax
shr ecx, 0x10
xor cl, byte [r9 + 0xe]
mov byte [r11 + 0xe], cl
cmp r10, 0xf
je 0x140004011
shr eax, 0x18
xor al, byte [r9 + 0xf]
mov byte [r11 + 0xf], al
mov r14, qword [rbp - 0x30]
add r14, qword [rbp + 0xa0]
mov rax, qword [rbp - 0x40]
mov r8, rax
add rax, 0x10
mov r12d, 0x10
mov rcx, qword [rbp - 0x38]
test rcx, rcx
mov rsi, qword [rbp + 0xa8]
mov rdi, qword [rbp - 0x18]
mov r15, qword [rbp - 0x28]
jne 0x1400039f0
movzx ecx, byte [rsi + rdi - 1]
xor eax, eax
mov rdx, rsi
sub rdx, rcx
cmovae rax, rdx
cmp rax, rsi
cmovae rax, rsi
mov rbx, qword [rbp - 0x20]
mov qword [rbx], rdi
mov qword [rbx + 8], rsi
mov qword [rbx + 0x10], rax
mov rax, rbx
add rsp, 0xb8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea r8, str.P_n_
mov ecx, 4
mov edx, 4
call fcn.140022010
jmp 0x14000403d
xor ecx, ecx
jmp 0x140004016
mov ecx, 1
jmp 0x140004016
mov ecx, 2
jmp 0x140004016
mov ecx, 3
jmp 0x140004016
mov ecx, 4
jmp 0x140004016
mov ecx, 5
jmp 0x140004016
mov ecx, 6
jmp 0x140004016
mov ecx, 7
jmp 0x140004016
mov ecx, 8
jmp 0x140004016
mov ecx, 9
jmp 0x140004016
mov ecx, 0xa
jmp 0x140004016
mov ecx, 0xb
jmp 0x140004016
mov ecx, 0xc
jmp 0x140004016
mov ecx, 0xd
jmp 0x140004016
mov ecx, 0xe
jmp 0x140004016
mov ecx, 0xf
lea r8, str.C:UsersAdministrator.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov rdx, rcx
call fcn.140022010
jmp 0x14000403d
lea r8, str.C:UsersAdministrator.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov rcx, rax
mov rdx, qword [rbp + 0xa8]
call fcn.1400223c0
ud2
call fcn.140019f40
ud2
mov ecx, 1
mov rdx, rsi
call fcn.140021e50
ud2