Function at 0x140002ff0
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 rsi, qword [rbp + 0xa8]
test sil, 0xf
je 0x140003036
mov qword [rcx], 1
xorps xmm0, xmm0
movups xmmword [rcx + 8], xmm0
mov rax, rcx
jmp 0x1400036b0
mov r12, r9
mov rbx, r8
mov r15, rdx
test rsi, rsi
mov qword [rbp - 0x28], rcx
je 0x140003079
js 0x1400037a6
movzx eax, byte [0x14003b121]
mov edx, 1
mov rcx, rsi
call fcn.140002e20
mov rdi, rax
test rax, rax
jne 0x14000307e
mov ecx, 1
mov rdx, rsi
call fcn.14001ea90
ud2
mov edi, 1
mov rdx, qword [rbp + 0xa0]
mov rcx, rdi
mov r8, rsi
call sub.VCRUNTIME140.dll_memcpy
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
lea r14, [0x140030060]
xor eax, eax
xor ecx, ecx
mov qword [rbp - 0x18], rdi
mov qword [rbp - 0x30], r15
test al, 1
je 0x140003110
nop word cs:[rax + rax]
add rcx, 0xf
jb 0x14000367d
cmp rcx, rsi
jae 0x14000367d
lea rax, [rcx + 1]
jmp 0x140003123
cmp rcx, rsi
mov rax, rcx
adc rax, 0
cmp rcx, rsi
jae 0x14000367d
lea rdx, [rcx + 0x10]
cmp rcx, 0xffffffffffffffef
ja 0x140003780
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x58], r12
mov qword [rbp - 0x48], rbx
cmp rdx, rsi
ja 0x14000378e
lea rax, [rdi + rcx]
mov qword [rbp - 0x50], rax
mov r12d, dword [rdi + rcx]
mov ebx, dword [rdi + rcx + 4]
bswap r12d
xor r12d, dword [rbp - 0x10]
mov r11d, r12d
bswap ebx
xor ebx, dword [rbp - 0xc]
mov edx, dword [rdi + rcx + 8]
bswap edx
xor edx, dword [rbp - 8]
mov qword [rbp - 0x38], rcx
mov eax, dword [rdi + rcx + 0xc]
bswap eax
xor eax, dword [rbp - 4]
mov ecx, 0x3c
mov r8, r15
movzx r9d, byte [rbp + 0x2f]
mov byte [rbp + 0x20], r9b
lea r9, [0x140030c78]
nop word cs:[rax + rax]
mov qword [rbp - 0x20], rcx
mov qword [rbp - 0x60], r8
movzx edi, dh
movzx ecx, dl
mov qword [rbp], rcx
mov ecx, edx
mov qword [rbp + 0x18], rcx
shr edx, 0x10
movzx edx, dl
mov r13d, eax
movzx esi, ah
movzx ecx, al
mov qword [rbp + 8], rcx
shr eax, 0x18
lea r10, [0x140030478]
mov ecx, dword [r10 + rdx*4]
xor ecx, dword [r14 + rax*4]
mov edx, r11d
mov eax, r11d
shr eax, 0x18
shr r13d, 0x10
movzx r13d, r13b
mov r15d, dword [r10 + r13*4]
xor r15d, dword [r14 + rax*4]
lea r8, [0x140030878]
xor r15d, dword [r8 + rdi*4]
movzx eax, bl
mov qword [rbp + 0x10], rax
mov r13d, ebx
mov eax, ebx
movzx edi, bh
mov r12, rdi
shr r13d, 0x18
mov ebx, r11d
shr ebx, 0x10
movzx ebx, bl
movzx edi, dh
movzx r11d, dl
mov edx, dword [r10 + rbx*4]
xor edx, dword [r14 + r13*4]
xor edx, dword [r8 + rsi*4]
mov r13, qword [rbp + 0x18]
shr r13d, 0x18
shr eax, 0x10
movzx esi, al
mov ebx, dword [r10 + rsi*4]
xor ebx, dword [r14 + r13*4]
xor ebx, dword [r8 + rdi*4]
xor ecx, dword [r8 + r12*4]
mov rax, qword [rbp + 0x10]
xor r15d, dword [r9 + rax*4]
mov rax, qword [rbp]
xor edx, dword [r9 + rax*4]
mov rax, qword [rbp + 8]
xor ebx, dword [r9 + rax*4]
mov r13, qword [rbp - 0x60]
xor ecx, dword [r9 + r11*4]
xor r15d, dword [r13 - 0x1c]
xor edx, dword [r13 - 0x18]
xor ebx, dword [r13 - 0x14]
xor ecx, dword [r13 - 0x10]
movzx eax, byte [rbp + 0x20]
dec al
je 0x140003380
mov byte [rbp + 0x20], al
movzx eax, bh
mov qword [rbp], rax
movzx eax, bl
mov qword [rbp + 8], rax
mov r11d, ebx
shr ebx, 0x10
movzx eax, bl
mov r10d, ecx
movzx edi, ch
movzx r8d, cl
mov qword [rbp + 0x10], r8
shr ecx, 0x18
lea r12, [0x140030478]
mov eax, dword [r12 + rax*4]
xor eax, dword [r14 + rcx*4]
movzx ecx, dl
mov qword [rbp + 0x18], rcx
mov esi, edx
shr esi, 0x18
mov rcx, r15
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [r12 + rbx*4]
xor ebx, dword [r14 + rsi*4]
mov esi, edx
movzx edx, dh
mov r8, rdx
lea r15, [0x140030878]
xor ebx, dword [r15 + rdi*4]
mov edi, ecx
shr r11d, 0x18
shr esi, 0x10
movzx edx, sil
movzx esi, ch
movzx ecx, cl
mov edx, dword [r12 + rdx*4]
xor edx, dword [r14 + r11*4]
xor edx, dword [r15 + rsi*4]
xor eax, dword [r15 + r8*4]
mov r11, qword [rbp]
mov r11d, dword [r15 + r11*4]
mov r8, qword [rbp + 0x18]
xor r11d, dword [r9 + r8*4]
shr r10d, 0x10
movzx r10d, r10b
xor r11d, dword [r12 + r10*4]
shr edi, 0x18
xor r11d, dword [r14 + rdi*4]
mov r8, qword [rbp + 8]
xor ebx, dword [r9 + r8*4]
mov r8, qword [rbp + 0x10]
xor edx, dword [r9 + r8*4]
xor eax, dword [r9 + rcx*4]
xor r11d, dword [r13 - 0xc]
xor ebx, dword [r13 - 8]
xor edx, dword [r13 - 4]
xor eax, dword [r13]
mov rcx, qword [rbp - 0x20]
add rcx, 0xfffffffffffffff8
lea r8, [r13 + 0x20]
cmp rcx, 4
ja 0x1400031a0
jmp 0x1400036c4
cmp qword [rbp - 0x20], 8
je 0x1400036df
mov rax, rcx
mov rdi, rdx
mov r10d, eax
mov r12d, eax
mov esi, eax
mov edx, r15d
mov r14d, r15d
shr r15d, 8
movzx eax, r15b
mov qword [rbp + 0x20], rax
mov r9d, ebx
mov eax, ebx
shr ebx, 0x10
movzx r11d, bl
mov rcx, rdi
mov edi, ecx
movzx ebx, dil
shr r9d, 8
movzx r9d, r9b
lea r8, [0x140031090]
movzx r9d, byte [r9 + r8]
movzx ebx, byte [rbx + r8]
shl ebx, 0x18
shl r9d, 0x10
or r9d, ebx
mov r15d, ecx
shr ecx, 8
movzx ebx, cl
shr r10d, 0x10
movzx ecx, r10b
movzx ecx, byte [rcx + r8]
shl ecx, 8
or ecx, r9d
mov r9, rdx
shr r9, 0x18
movzx r9d, byte [r9 + r8]
or ecx, r9d
bswap ecx
xor ecx, dword [r13 - 0xc]
bswap ecx
mov r9, qword [rbp - 0x50]
mov dword [r9], ecx
shr r14d, 0x10
movzx ecx, r14b
movzx r10d, byte [rcx + r8]
shr rdi, 0x18
movzx ecx, byte [rdi + r8]
shl r10d, 8
or r10d, ecx
movzx ecx, al
movzx ecx, byte [rcx + r8]
shl ecx, 0x18
or r10d, ecx
shr r12d, 8
movzx ecx, r12b
movzx ecx, byte [rcx + r8]
shl ecx, 0x10
or r10d, ecx
bswap r10d
xor r10d, dword [r13 - 8]
bswap r10d
mov dword [r9 + 4], r10d
shr r15d, 0x10
movzx ecx, r15b
movzx ecx, byte [rcx + r8]
shr rax, 0x18
movzx eax, byte [rax + r8]
shl ecx, 8
or ecx, eax
movzx eax, sil
movzx eax, byte [rax + r8]
shl eax, 0x18
or ecx, eax
mov rax, qword [rbp + 0x20]
movzx eax, byte [rax + r8]
shl eax, 0x10
or ecx, eax
bswap ecx
xor ecx, dword [r13 - 4]
bswap ecx
mov dword [r9 + 8], ecx
movzx eax, byte [r11 + r8]
mov r11, r9
shr rsi, 0x18
movzx r9d, byte [rsi + r8]
shl eax, 8
or eax, r9d
movzx edx, dl
movzx edx, byte [rdx + r8]
shl edx, 0x18
or eax, edx
movzx edx, byte [rbx + r8]
shl edx, 0x10
or eax, edx
bswap eax
xor eax, dword [r13]
bswap eax
mov dword [r11 + 0xc], eax
mov r9, qword [rbp - 0x58]
test r9, r9
je 0x1400036f4
mov r8, qword [rbp - 0x48]
movzx edx, byte [r8]
xor byte [r11], dl
cmp r9, 1
je 0x1400036f8
movzx edx, byte [r8 + 1]
xor byte [r11 + 1], dl
cmp r9, 2
je 0x1400036ff
movzx edx, byte [r8 + 2]
xor byte [r11 + 2], dl
cmp r9, 3
je 0x140003706
movzx edx, byte [r8 + 3]
xor byte [r11 + 3], dl
cmp r9, 4
je 0x14000370d
movzx edx, byte [r8 + 4]
xor dl, r10b
mov byte [r11 + 4], dl
cmp r9, 5
je 0x140003714
mov edx, r10d
shr edx, 8
xor dl, byte [r8 + 5]
mov byte [r11 + 5], dl
cmp r9, 6
je 0x14000371b
mov edx, r10d
shr edx, 0x10
xor dl, byte [r8 + 6]
mov byte [r11 + 6], dl
cmp r9, 7
je 0x140003722
shr r10d, 0x18
xor r10b, byte [r8 + 7]
mov byte [r11 + 7], r10b
cmp r9, 8
je 0x140003729
movzx edx, byte [r8 + 8]
xor dl, cl
mov byte [r11 + 8], dl
cmp r9, 9
je 0x140003730
mov edx, ecx
shr edx, 8
xor dl, byte [r8 + 9]
mov byte [r11 + 9], dl
cmp r9, 0xa
je 0x140003737
mov edx, ecx
shr edx, 0x10
xor dl, byte [r8 + 0xa]
mov byte [r11 + 0xa], dl
cmp r9, 0xb
je 0x14000373e
shr ecx, 0x18
xor cl, byte [r8 + 0xb]
mov byte [r11 + 0xb], cl
cmp r9, 0xc
je 0x140003745
movzx ecx, byte [r8 + 0xc]
xor cl, al
mov byte [r11 + 0xc], cl
cmp r9, 0xd
je 0x14000374c
mov ecx, eax
shr ecx, 8
xor cl, byte [r8 + 0xd]
mov byte [r11 + 0xd], cl
cmp r9, 0xe
je 0x140003753
mov ecx, eax
shr ecx, 0x10
xor cl, byte [r8 + 0xe]
mov byte [r11 + 0xe], cl
cmp r9, 0xf
je 0x14000375a
shr eax, 0x18
xor al, byte [r8 + 0xf]
mov byte [r11 + 0xf], al
mov rbx, qword [rbp - 0x38]
add rbx, qword [rbp + 0xa0]
mov r12d, 0x10
mov al, 1
mov rcx, qword [rbp - 0x40]
mov rsi, qword [rbp + 0xa8]
mov rdi, qword [rbp - 0x18]
mov r15, qword [rbp - 0x30]
lea r14, [0x140030060]
test al, 1
je 0x140003110
jmp 0x1400030f0
mov rcx, rsi
sub rcx, 1
jb 0x140003770
movzx eax, byte [rdi + rcx]
xor ecx, ecx
mov rdx, rsi
sub rdx, rax
cmovae rcx, rdx
cmp rcx, rsi
cmovae rcx, rsi
mov rax, qword [rbp - 0x28]
mov qword [rax], rdi
mov qword [rax + 8], rsi
mov qword [rax + 0x10], rcx
add rsp, 0xb8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.4_srclib.rs
mov ecx, 4
mov edx, 4
call fcn.14001ec50
jmp 0x1400037a4
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.4_srclib.rs
xor ecx, ecx
xor edx, edx
call fcn.14001ec50
jmp 0x1400037a4
xor ecx, ecx
jmp 0x14000375f
mov ecx, 1
jmp 0x14000375f
mov ecx, 2
jmp 0x14000375f
mov ecx, 3
jmp 0x14000375f
mov ecx, 4
jmp 0x14000375f
mov ecx, 5
jmp 0x14000375f
mov ecx, 6
jmp 0x14000375f
mov ecx, 7
jmp 0x14000375f
mov ecx, 8
jmp 0x14000375f
mov ecx, 9
jmp 0x14000375f
mov ecx, 0xa
jmp 0x14000375f
mov ecx, 0xb
jmp 0x14000375f
mov ecx, 0xc
jmp 0x14000375f
mov ecx, 0xd
jmp 0x14000375f
mov ecx, 0xe
jmp 0x14000375f
mov ecx, 0xf
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.4_srclib.rs
mov rdx, rcx
call fcn.14001ec50
jmp 0x1400037a4
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.4_srclib.rs
xor edx, edx
call fcn.14001ec50
jmp 0x1400037a4
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.4_srclib.rs
call fcn.14001f080
jmp 0x1400037a4
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.4_srclib.rs
mov rcx, rdx
mov rdx, qword [rbp + 0xa8]
call fcn.14001f000
ud2
call fcn.140017b80
ud2