Function at 0x140016d45
Capabilities:
Encrypt data using aes

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
mov rdi, rdx
mov r13, qword [rcx]
test r13, r13
je 0x140016dd9
mov rbp, qword [rcx + 8]
cmp rbp, 3
jbe 0x140017316
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x48], rax
mov rsi, qword [rcx + 0x18]
mov edx, 4
mov rcx, r13
call sym.libaes::get_u32::h3bd240ce44699819
cmp rbp, 7
jbe 0x140017324
mov r15d, eax
mov qword [rsp + 0x38], rsi
xor r15d, dword [rdi]
lea rcx, [r13 + 4]
mov edx, 4
call sym.libaes::get_u32::h3bd240ce44699819
cmp rbp, 0xb
jbe 0x140017332
mov r14d, eax
xor r14d, dword [rdi + 4]
lea rcx, [r13 + 8]
mov edx, 4
call sym.libaes::get_u32::h3bd240ce44699819
cmp rbp, 0xf
jbe 0x140017340
mov r12d, eax
jmp 0x140016e4c
mov rsi, qword [rcx + 0x10]
cmp rsi, 3
jbe 0x140017354
mov r13, qword [rcx + 8]
mov edx, 4
mov rcx, r13
call sym.libaes::get_u32::h3bd240ce44699819
cmp rsi, 7
jbe 0x140017362
mov r15d, eax
xor r15d, dword [rdi]
lea rcx, [r13 + 4]
mov edx, 4
call sym.libaes::get_u32::h3bd240ce44699819
cmp rsi, 0xb
jbe 0x140017370
mov r14d, eax
xor r14d, dword [rdi + 4]
lea rcx, [r13 + 8]
mov edx, 4
call sym.libaes::get_u32::h3bd240ce44699819
mov qword [rsp + 0x38], rsi
cmp rsi, 0xf
jbe 0x140017384
mov r12d, eax
mov qword [rsp + 0x48], r13
add r13, 0xc
xor r12d, dword [rdi + 8]
mov edx, 4
mov rcx, r13
call sym.libaes::get_u32::h3bd240ce44699819
xor eax, dword [rdi + 0xc]
mov cl, byte [rdi + 0xf0]
shr cl, 1
dec cl
mov byte [rsp + 0x37], cl
add rdi, 0x2c
mov edx, 0x3c
mov r8d, 0xff
cmp rdx, 4
jbe 0x1400172e7
mov qword [rsp + 0x40], rdx
mov r10d, eax
and r10d, r8d
mov r11d, r12d
shr r11d, 8
and r11d, r8d
mov qword [rsp + 0x50], rdi
lea rdi, [0x1400b6940]
mov r13d, dword [rdi + r11*4]
mov r11d, r14d
shr r11d, 0xe
mov ecx, 0x3fc
and r11d, ecx
mov esi, r15d
shr esi, 0x18
lea r9, [0x1400b6d40]
xor r13d, dword [r9 + r10*4]
lea rbp, [0x1400b7540]
xor r13d, dword [r11 + rbp]
lea rdx, [0x1400b7140]
xor r13d, dword [rdx + rsi*4]
mov r10d, r14d
shr r10d, 0x18
mov r11d, r12d
shr r11d, 0xe
and r11d, ecx
mov ebx, dword [r11 + rbp]
xor ebx, dword [rdx + r10*4]
mov r10d, eax
shr r10d, 8
and r10d, r8d
xor ebx, dword [rdi + r10*4]
mov r10d, r15d
and r10d, r8d
xor ebx, dword [r9 + r10*4]
mov r10d, r12d
shr r10d, 0x18
mov r11d, eax
shr r11d, 0xe
and r11d, ecx
mov esi, dword [r11 + rbp]
xor esi, dword [rdx + r10*4]
mov r10d, r15d
shr r10d, 8
and r10d, r8d
xor esi, dword [rdi + r10*4]
mov r10d, r14d
and r10d, r8d
xor esi, dword [r9 + r10*4]
shr eax, 0x18
shr r15d, 0xe
and r15d, ecx
mov ebp, dword [r15 + rbp]
xor ebp, dword [rdx + rax*4]
shr r14d, 8
and r14d, r8d
xor ebp, dword [rdi + r14*4]
mov rdi, qword [rsp + 0x50]
and r12d, r8d
xor ebp, dword [r9 + r12*4]
xor r13d, dword [rdi - 0x1c]
xor ebx, dword [rdi - 0x18]
xor esi, dword [rdi - 0x14]
xor ebp, dword [rdi - 0x10]
mov al, byte [rsp + 0x37]
sub al, 1
jb 0x140017083
cmp qword [rsp + 0x40], 8
je 0x1400172fd
mov byte [rsp + 0x37], al
mov eax, ebx
shr eax, 0x18
mov r10d, esi
shr r10d, 0xe
and r10d, ecx
lea r11, [0x1400b7540]
mov r14d, dword [r10 + r11]
lea rdx, [0x1400b7140]
xor r14d, dword [rdx + rax*4]
mov eax, ebp
shr eax, 8
and eax, r8d
lea rdi, [0x1400b6940]
xor r14d, dword [rdi + rax*4]
mov eax, r13d
and eax, r8d
lea r9, [0x1400b6d40]
xor r14d, dword [r9 + rax*4]
mov eax, r13d
shr eax, 0x18
mov r10d, ebx
shr r10d, 0xe
and r10d, ecx
mov r15d, dword [r10 + r11]
xor r15d, dword [rdx + rax*4]
mov eax, esi
shr eax, 8
and eax, r8d
xor r15d, dword [rdi + rax*4]
mov eax, ebp
and eax, r8d
xor r15d, dword [r9 + rax*4]
mov eax, esi
shr eax, 0x18
mov r10d, ebp
shr r10d, 0xe
and r10d, ecx
mov r12d, dword [r10 + r11]
xor r12d, dword [rdx + rax*4]
mov eax, r13d
shr eax, 8
and eax, r8d
xor r12d, dword [rdi + rax*4]
mov eax, ebx
and eax, r8d
xor r12d, dword [r9 + rax*4]
shr ebp, 0x18
shr r13d, 0xe
and r13d, ecx
mov eax, dword [r13 + r11]
xor eax, dword [rdx + rbp*4]
mov rdx, qword [rsp + 0x40]
shr ebx, 8
and ebx, r8d
xor eax, dword [rdi + rbx*4]
mov rdi, qword [rsp + 0x50]
and esi, r8d
xor eax, dword [r9 + rsi*4]
xor r14d, dword [rdi - 8]
xor r15d, dword [rdi - 0xc]
xor r12d, dword [rdi - 4]
xor eax, dword [rdi]
add rdi, 0x20
add rdx, 0xfffffffffffffff8
jmp 0x140016e81
cmp qword [rsp + 0x40], 8
je 0x14001730d
mov edx, 0xff
mov eax, ebp
and eax, edx
lea rcx, [0x1400b7540]
movzx eax, byte [rcx + rax*4]
mov ecx, esi
shr ecx, 8
and ecx, edx
lea rdx, [0x1400b7140]
movzx ecx, byte [rdx + rcx*4 + 1]
shl ecx, 8
or ecx, eax
mov eax, ebx
shr eax, 0xe
mov edx, 0x3fc
and eax, edx
lea rdx, [0x1400b6d40]
movzx eax, byte [rax + rdx + 2]
shl eax, 0x10
or eax, ecx
mov ecx, r13d
shr ecx, 0x18
lea rdx, [0x1400b6940]
movzx r14d, byte [rdx + rcx*4 + 3]
shl r14d, 0x18
or r14d, eax
xor r14d, dword [rdi - 0xc]
lea rax, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov qword [rsp + 0x20], rax
mov edx, 4
xor ecx, ecx
mov r15, qword [rsp + 0x48]
mov r8, r15
mov r12, qword [rsp + 0x38]
mov r9, r12
call sym._ZN106__LT_core..ops..range..Range_LT_usize_GT__u20_as_u20_core..slice..index..SliceIndex_LT__u5b_T_u5d__GT__GT_9index_mut17h8
mov rcx, rax
mov r8d, r14d
call sym.libaes::put_u32::hf2573ed93c48996e
mov eax, ebx
shr eax, 0x18
lea rcx, [0x1400b6940]
movzx eax, byte [rcx + rax*4 + 3]
shl eax, 0x18
mov ecx, esi
shr ecx, 0xe
mov edx, 0x3fc
and ecx, edx
lea rdx, [0x1400b6d40]
movzx ecx, byte [rcx + rdx + 2]
shl ecx, 0x10
or ecx, eax
mov eax, ebp
shr eax, 8
mov edx, 0xff
and eax, edx
lea r8, [0x1400b7140]
movzx eax, byte [r8 + rax*4 + 1]
shl eax, 8
or eax, ecx
mov ecx, r13d
and ecx, edx
lea rdx, [0x1400b7540]
movzx r14d, byte [rdx + rcx*4]
or r14d, eax
xor r14d, dword [rdi - 8]
lea rax, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov qword [rsp + 0x20], rax
mov ecx, 4
mov edx, 8
mov r8, r15
mov r9, r12
call sym._ZN106__LT_core..ops..range..Range_LT_usize_GT__u20_as_u20_core..slice..index..SliceIndex_LT__u5b_T_u5d__GT__GT_9index_mut17h8
mov rcx, rax
mov r8d, r14d
call sym.libaes::put_u32::hf2573ed93c48996e
mov eax, esi
shr eax, 0x18
lea rcx, [0x1400b6940]
movzx eax, byte [rcx + rax*4 + 3]
shl eax, 0x18
mov ecx, ebp
shr ecx, 0xe
mov edx, 0x3fc
and ecx, edx
lea rdx, [0x1400b6d40]
movzx ecx, byte [rcx + rdx + 2]
shl ecx, 0x10
or ecx, eax
mov eax, r13d
shr eax, 8
mov edx, 0xff
and eax, edx
lea r8, [0x1400b7140]
movzx eax, byte [r8 + rax*4 + 1]
shl eax, 8
or eax, ecx
mov ecx, ebx
and ecx, edx
lea rdx, [0x1400b7540]
movzx r14d, byte [rdx + rcx*4]
or r14d, eax
xor r14d, dword [rdi - 4]
lea rax, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov qword [rsp + 0x20], rax
mov ecx, 8
mov edx, 0xc
mov r8, r15
mov r9, r12
call sym._ZN106__LT_core..ops..range..Range_LT_usize_GT__u20_as_u20_core..slice..index..SliceIndex_LT__u5b_T_u5d__GT__GT_9index_mut17h8
mov rcx, rax
mov r8d, r14d
call sym.libaes::put_u32::hf2573ed93c48996e
shr ebp, 0x18
lea rax, [0x1400b6940]
movzx eax, byte [rax + rbp*4 + 3]
shl eax, 0x18
shr r13d, 0xe
mov ecx, 0x3fc
and r13d, ecx
lea rcx, [0x1400b6d40]
movzx ecx, byte [r13 + rcx + 2]
shl ecx, 0x10
or ecx, eax
shr ebx, 8
mov edx, 0xff
and ebx, edx
lea rax, [0x1400b7140]
movzx eax, byte [rax + rbx*4 + 1]
shl eax, 8
or eax, ecx
and esi, edx
lea rcx, [0x1400b7540]
movzx ebp, byte [rcx + rsi*4]
or ebp, eax
xor ebp, dword [rdi]
lea rax, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov qword [rsp + 0x20], rax
mov ecx, 0xc
mov edx, 0x10
mov r8, r15
mov r9, r12
call sym._ZN106__LT_core..ops..range..Range_LT_usize_GT__u20_as_u20_core..slice..index..SliceIndex_LT__u5b_T_u5d__GT__GT_9index_mut17h8
mov rcx, rax
mov r8d, ebp
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp sym.libaes::put_u32::hf2573ed93c48996e
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 4
mov edx, 4
call sym.core::panicking::panic_bounds_check::h646967d06236d449
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
xor ecx, ecx
xor edx, edx
call sym.core::panicking::panic_bounds_check::h646967d06236d449
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
jmp 0x140017304
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 4
jmp 0x14001734c
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 8
jmp 0x14001734c
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 0xc
jmp 0x14001734c
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 0x10
mov rdx, rbp
call sym.core::slice::index::slice_end_index_len_fail::h0369f756e1733715
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 4
jmp 0x14001737c
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 8
jmp 0x14001737c
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 0xc
mov rdx, rsi
call sym.core::slice::index::slice_end_index_len_fail::h0369f756e1733715
lea r8, str.C:Users1.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.7.0_srclib.rs
mov ecx, 0x10
mov rdx, qword [rsp + 0x38]
call sym.core::slice::index::slice_end_index_len_fail::h0369f756e1733715
int3