Function at 0x180003870
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 0x1800038b6
mov qword [rcx], 1
xorps xmm0, xmm0
movups xmmword [rcx + 8], xmm0
mov rax, rcx
jmp 0x180003f2e
mov r12, r9
mov rbx, r8
mov r15, rdx
test rsi, rsi
mov qword [rbp - 0x28], rcx
je 0x1800038f9
js 0x180004014
movzx eax, byte [0x180083131]
mov edx, 1
mov rcx, rsi
call fcn.1800034c0
mov rdi, rax
test rax, rax
jne 0x1800038fe
mov ecx, 1
mov rdx, rsi
call fcn.180020160
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, [0x180075cb8]
xor eax, eax
xor ecx, ecx
mov qword [rbp - 0x18], rdi
mov qword [rbp - 0x30], r15
test al, 1
je 0x180003990
nop word cs:[rax + rax]
add rcx, 0xf
jb 0x180003efd
cmp rcx, rsi
jae 0x180003efd
lea rax, [rcx + 1]
jmp 0x1800039a3
cmp rcx, rsi
mov rax, rcx
adc rax, 0
cmp rcx, rsi
jae 0x180003efd
lea rdx, [rcx + 0x10]
cmp rcx, 0xffffffffffffffef
ja 0x180003fee
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x58], r12
mov qword [rbp - 0x48], rbx
cmp rdx, rsi
ja 0x180003ffc
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, [0x1800768d0]
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, [0x1800760d0]
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, [0x1800764d0]
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 0x180003c00
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, [0x1800760d0]
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, [0x1800764d0]
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 0x180003a20
jmp 0x180003f42
cmp qword [rbp - 0x20], 8
je 0x180003f5d
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, [0x180076ce8]
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 0x180003f72
mov r8, qword [rbp - 0x48]
movzx edx, byte [r8]
xor byte [r11], dl
cmp r9, 1
je 0x180003f76
movzx edx, byte [r8 + 1]
xor byte [r11 + 1], dl
cmp r9, 2
je 0x180003f7d
movzx edx, byte [r8 + 2]
xor byte [r11 + 2], dl
cmp r9, 3
je 0x180003f84
movzx edx, byte [r8 + 3]
xor byte [r11 + 3], dl
cmp r9, 4
je 0x180003f8b
movzx edx, byte [r8 + 4]
xor dl, r10b
mov byte [r11 + 4], dl
cmp r9, 5
je 0x180003f92
mov edx, r10d
shr edx, 8
xor dl, byte [r8 + 5]
mov byte [r11 + 5], dl
cmp r9, 6
je 0x180003f99
mov edx, r10d
shr edx, 0x10
xor dl, byte [r8 + 6]
mov byte [r11 + 6], dl
cmp r9, 7
je 0x180003fa0
shr r10d, 0x18
xor r10b, byte [r8 + 7]
mov byte [r11 + 7], r10b
cmp r9, 8
je 0x180003fa7
movzx edx, byte [r8 + 8]
xor dl, cl
mov byte [r11 + 8], dl
cmp r9, 9
je 0x180003fae
mov edx, ecx
shr edx, 8
xor dl, byte [r8 + 9]
mov byte [r11 + 9], dl
cmp r9, 0xa
je 0x180003fb5
mov edx, ecx
shr edx, 0x10
xor dl, byte [r8 + 0xa]
mov byte [r11 + 0xa], dl
cmp r9, 0xb
je 0x180003fbc
shr ecx, 0x18
xor cl, byte [r8 + 0xb]
mov byte [r11 + 0xb], cl
cmp r9, 0xc
je 0x180003fc3
movzx ecx, byte [r8 + 0xc]
xor cl, al
mov byte [r11 + 0xc], cl
cmp r9, 0xd
je 0x180003fca
mov ecx, eax
shr ecx, 8
xor cl, byte [r8 + 0xd]
mov byte [r11 + 0xd], cl
cmp r9, 0xe
je 0x180003fd1
mov ecx, eax
shr ecx, 0x10
xor cl, byte [r8 + 0xe]
mov byte [r11 + 0xe], cl
cmp r9, 0xf
je 0x180003fd8
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, [0x180075cb8]
test al, 1
je 0x180003990
jmp 0x180003970
mov r8, rsi
cmp rsi, 0x10
jb 0x180003f1f
movzx ecx, byte [rsi + rdi - 1]
xor r8d, r8d
mov rdx, rsi
sub rdx, rcx
cmovae r8, rdx
cmp r8, rsi
cmovae r8, rsi
mov rax, qword [rbp - 0x28]
mov qword [rax], rdi
mov qword [rax + 8], rsi
mov qword [rax + 0x10], r8
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.5_srclib.rs
mov ecx, 4
mov edx, 4
call fcn.180020320
jmp 0x180004012
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
xor ecx, ecx
xor edx, edx
call fcn.180020320
jmp 0x180004012
xor ecx, ecx
jmp 0x180003fdd
mov ecx, 1
jmp 0x180003fdd
mov ecx, 2
jmp 0x180003fdd
mov ecx, 3
jmp 0x180003fdd
mov ecx, 4
jmp 0x180003fdd
mov ecx, 5
jmp 0x180003fdd
mov ecx, 6
jmp 0x180003fdd
mov ecx, 7
jmp 0x180003fdd
mov ecx, 8
jmp 0x180003fdd
mov ecx, 9
jmp 0x180003fdd
mov ecx, 0xa
jmp 0x180003fdd
mov ecx, 0xb
jmp 0x180003fdd
mov ecx, 0xc
jmp 0x180003fdd
mov ecx, 0xd
jmp 0x180003fdd
mov ecx, 0xe
jmp 0x180003fdd
mov ecx, 0xf
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov rdx, rcx
call fcn.180020320
jmp 0x180004012
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
call fcn.180020750
jmp 0x180004012
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov rcx, rdx
mov rdx, qword [rbp + 0xa8]
call fcn.1800206d0
ud2
call fcn.1800184d0
ud2