Function at 0x180004060
Capabilities:
Encode data using xor
Encrypt data using aes
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov word [rsp + 0x26], r8w
movzx r8d, r8w
cmp r8d, 0x80
je 0x18000409d
cmp r8d, 0xc0
je 0x1800040a1
cmp r8d, 0x100
jne 0x180004748
mov al, 0xe
jmp 0x1800040a3
mov al, 0xa
jmp 0x1800040a3
mov al, 0xc
mov byte [r9 + 0xf0], al
mov r11d, dword [rcx]
bswap r11d
mov dword [r9], r11d
mov edi, dword [rcx + 4]
bswap edi
mov dword [r9 + 4], edi
mov esi, dword [rcx + 8]
bswap esi
mov dword [r9 + 8], esi
mov ebx, dword [rcx + 0xc]
bswap ebx
mov dword [r9 + 0xc], ebx
cmp r8d, 0x80
jne 0x180004180
xor eax, eax
lea r14, [0x180074c18]
lea rdx, [0x180075018]
lea r8, [0x180075418]
lea r10, [0x180075818]
lea rsi, [0x180075c18]
mov ecx, dword [r9 + rax*4 + 0xc]
mov rdi, rcx
shr rdi, 0xe
and edi, 0x3fc
movzx edi, byte [rdi + r14 + 3]
shl edi, 0x18
movzx ebp, ch
movzx ebp, byte [rdx + rbp*4 + 2]
shl ebp, 0x10
xor ebp, r11d
xor ebp, edi
movzx r11d, cl
movzx edi, byte [r8 + r11*4 + 1]
shl edi, 8
mov rbx, rcx
shr rbx, 0x18
movzx r11d, byte [r10 + rbx*4]
xor r11d, edi
xor r11d, ebp
xor r11d, dword [rax + rsi]
mov dword [r9 + rax*4 + 0x10], r11d
mov edi, dword [r9 + rax*4 + 4]
xor edi, r11d
mov dword [r9 + rax*4 + 0x14], edi
xor edi, dword [r9 + rax*4 + 8]
mov dword [r9 + rax*4 + 0x18], edi
xor edi, ecx
mov dword [r9 + rax*4 + 0x1c], edi
add rax, 4
cmp rax, 0x28
jne 0x180004100
jmp 0x180004711
cmp rdx, 0x13
jbe 0x180004722
mov r15d, dword [rcx + 0x10]
bswap r15d
mov dword [r9 + 0x10], r15d
cmp rdx, 0x17
jbe 0x180004735
mov eax, dword [rcx + 0x14]
bswap eax
mov dword [r9 + 0x14], eax
cmp r8d, 0xc0
jne 0x1800045cf
mov ecx, eax
mov rdx, rcx
shr rdx, 0xe
and edx, 0x3fc
lea r13, [0x180074c18]
movzx edx, byte [rdx + r13 + 3]
shl edx, 0x18
movzx ebp, ch
lea r12, [0x180075018]
movzx r10d, byte [r12 + rbp*4 + 2]
shl r10d, 0x10
or r10d, edx
movzx edx, cl
lea r8, [0x180075418]
movzx edx, byte [r8 + rdx*4 + 1]
mov rbp, r8
shl edx, 8
or edx, r10d
shr rcx, 0x18
lea r10, [0x180075818]
movzx ecx, byte [r10 + rcx*4]
or ecx, edx
xor r11d, ecx
mov r14d, r11d
xor r14d, 0x1000000
mov dword [r9 + 0x18], r14d
xor r14d, edi
mov dword [r9 + 0x1c], r14d
mov r8d, r14d
xor r8d, esi
mov dword [r9 + 0x20], r8d
xor r8d, ebx
mov dword [r9 + 0x24], r8d
mov ebx, r8d
xor ebx, r15d
mov dword [r9 + 0x28], ebx
xor ebx, eax
mov dword [r9 + 0x2c], ebx
mov rax, rbx
shr rax, 0xe
and eax, 0x3fc
mov rcx, r13
movzx eax, byte [rax + r13 + 3]
shl eax, 0x18
movzx edx, bh
mov r13, r12
movzx edx, byte [r12 + rdx*4 + 2]
shl edx, 0x10
or edx, eax
movzx eax, bl
movzx edi, byte [rbp + rax*4 + 1]
shl edi, 8
or edi, edx
mov rax, rbx
shr rax, 0x18
movzx eax, byte [r10 + rax*4]
or eax, edi
xor eax, r11d
mov r11d, eax
xor r11d, 0x3000000
mov dword [r9 + 0x30], r11d
xor r14d, r11d
mov dword [r9 + 0x34], r14d
xor r11d, esi
mov dword [r9 + 0x38], r11d
mov edx, r11d
xor edx, r8d
mov dword [r9 + 0x3c], edx
mov r12d, r11d
xor r12d, r15d
mov dword [r9 + 0x40], r12d
mov edx, r12d
xor edx, ebx
mov dword [r9 + 0x44], edx
mov rsi, rdx
shr rsi, 0xe
and esi, 0x3fc
movzx esi, byte [rsi + rcx + 3]
shl esi, 0x18
movzx edi, dh
movzx edi, byte [r13 + rdi*4 + 2]
shl edi, 0x10
or edi, esi
movzx esi, dl
mov r13, rbp
movzx ebp, byte [rbp + rsi*4 + 1]
shl ebp, 8
or ebp, edi
shr rdx, 0x18
movzx esi, byte [r10 + rdx*4]
or esi, ebp
xor esi, eax
mov edi, esi
xor edi, 0x7000000
mov dword [r9 + 0x48], edi
xor edi, r14d
mov dword [r9 + 0x4c], edi
mov eax, edi
xor eax, r11d
mov dword [r9 + 0x50], eax
xor r8d, edi
mov dword [r9 + 0x54], r8d
xor r12d, r8d
mov dword [r9 + 0x58], r12d
mov ecx, r8d
xor ecx, ebx
mov dword [r9 + 0x5c], ecx
mov rdx, rcx
shr rdx, 0xe
and edx, 0x3fc
lea rax, [0x180074c18]
movzx edx, byte [rdx + rax + 3]
shl edx, 0x18
movzx ebp, ch
lea r12, [0x180075018]
movzx ebp, byte [r12 + rbp*4 + 2]
shl ebp, 0x10
or ebp, edx
movzx edx, cl
movzx edx, byte [r13 + rdx*4 + 1]
shl edx, 8
or edx, ebp
mov rax, rcx
shr rax, 0x18
movzx r14d, byte [r10 + rax*4]
or r14d, edx
xor r14d, esi
mov esi, r14d
xor esi, 0xf000000
mov dword [r9 + 0x60], esi
xor edi, esi
mov dword [r9 + 0x64], edi
xor r11d, esi
mov dword [r9 + 0x68], r11d
mov eax, r11d
xor eax, r8d
mov dword [r9 + 0x6c], eax
xor esi, r15d
mov dword [r9 + 0x70], esi
xor ecx, esi
mov dword [r9 + 0x74], ecx
mov rax, rcx
shr rax, 0xe
and eax, 0x3fc
lea r10, [0x180074c18]
movzx eax, byte [rax + r10 + 3]
shl eax, 0x18
movzx edx, ch
movzx edx, byte [r12 + rdx*4 + 2]
mov r15, r12
shl edx, 0x10
or edx, eax
movzx eax, cl
mov r12, r13
movzx ebp, byte [r13 + rax*4 + 1]
shl ebp, 8
or ebp, edx
shr rcx, 0x18
lea r13, [0x180075818]
movzx eax, byte [r13 + rcx*4]
or eax, ebp
xor eax, r14d
mov ebp, eax
xor ebp, 0x1f000000
mov dword [r9 + 0x78], ebp
xor ebp, edi
mov dword [r9 + 0x7c], ebp
mov ecx, ebp
xor ecx, r11d
mov dword [r9 + 0x80], ecx
xor r8d, ebp
mov dword [r9 + 0x84], r8d
mov ecx, r8d
xor ecx, esi
mov dword [r9 + 0x88], ecx
xor ebx, ebp
mov dword [r9 + 0x8c], ebx
mov rcx, rbx
shr rcx, 0xe
and ecx, 0x3fc
movzx ecx, byte [rcx + r10 + 3]
shl ecx, 0x18
movzx edx, bh
movzx edx, byte [r15 + rdx*4 + 2]
shl edx, 0x10
or edx, ecx
movzx ecx, bl
movzx ecx, byte [r12 + rcx*4 + 1]
shl ecx, 8
or ecx, edx
mov rdx, rbx
shr rdx, 0x18
movzx r14d, byte [r13 + rdx*4]
or r14d, ecx
xor r14d, eax
mov edi, r14d
xor edi, 0x3f000000
mov dword [r9 + 0x90], edi
xor ebp, edi
mov dword [r9 + 0x94], ebp
xor edi, r11d
mov dword [r9 + 0x98], edi
mov eax, edi
xor eax, r8d
mov dword [r9 + 0x9c], eax
xor esi, edi
mov dword [r9 + 0xa0], esi
mov eax, esi
xor eax, ebx
mov dword [r9 + 0xa4], eax
mov rcx, rax
shr rcx, 0xe
and ecx, 0x3fc
movzx ecx, byte [rcx + r10 + 3]
shl ecx, 0x18
movzx edx, ah
movzx edx, byte [r15 + rdx*4 + 2]
shl edx, 0x10
or edx, ecx
movzx ecx, al
movzx ecx, byte [r12 + rcx*4 + 1]
shl ecx, 8
or ecx, edx
shr rax, 0x18
movzx r11d, byte [r13 + rax*4]
or r11d, ecx
xor r11d, r14d
mov eax, r11d
xor eax, 0x7f000000
mov dword [r9 + 0xa8], eax
xor eax, ebp
mov dword [r9 + 0xac], eax
mov ecx, eax
xor ecx, edi
mov dword [r9 + 0xb0], ecx
xor r8d, eax
mov dword [r9 + 0xb4], r8d
xor esi, r8d
mov dword [r9 + 0xb8], esi
xor ebx, r8d
mov dword [r9 + 0xbc], ebx
mov rcx, rbx
shr rcx, 0xe
and ecx, 0x3fc
movzx ecx, byte [rcx + r10 + 3]
shl ecx, 0x18
movzx edx, bh
movzx edx, byte [r15 + rdx*4 + 2]
shl edx, 0x10
or edx, ecx
movzx ecx, bl
movzx ecx, byte [r12 + rcx*4 + 1]
shl ecx, 8
or ecx, edx
shr rbx, 0x18
movzx edx, byte [r13 + rbx*4]
or edx, ecx
xor edx, r11d
xor edx, 0xff000000
mov dword [r9 + 0xc0], edx
xor eax, edx
mov dword [r9 + 0xc4], eax
xor edx, edi
mov dword [r9 + 0xc8], edx
xor edx, r8d
mov dword [r9 + 0xcc], edx
jmp 0x180004711
cmp rdx, 0x1b
jbe 0x1800047a2
mov eax, dword [rcx + 0x18]
bswap eax
mov dword [r9 + 0x18], eax
cmp rdx, 0x1f
jbe 0x1800047b5
mov r15d, dword [rcx + 0x1c]
bswap r15d
mov dword [r9 + 0x1c], r15d
cmp r8d, 0x100
jne 0x180004711
xor ecx, ecx
lea r12, [0x180074c18]
lea r8, [0x180075018]
lea r10, [0x180075418]
lea r14, [0x180075818]
nop word cs:[rax + rax]
mov edx, r15d
mov r13, rdx
shr r13, 0xe
and r13d, 0x3fc
movzx ebp, byte [r13 + r12 + 3]
shl ebp, 0x18
movzx eax, dh
movzx eax, byte [r8 + rax*4 + 2]
shl eax, 0x10
xor eax, r11d
xor eax, ebp
movzx r11d, dl
movzx ebp, byte [r10 + r11*4 + 1]
shl ebp, 8
shr rdx, 0x18
movzx r11d, byte [r14 + rdx*4]
xor r11d, ebp
xor r11d, eax
lea rax, [0x180075c18]
xor r11d, dword [rcx + rax]
mov dword [r9 + rcx*8 + 0x20], r11d
xor edi, r11d
mov dword [r9 + rcx*8 + 0x24], edi
xor esi, edi
mov dword [r9 + rcx*8 + 0x28], esi
xor ebx, esi
mov dword [r9 + rcx*8 + 0x2c], ebx
cmp rcx, 0x18
je 0x180004711
mov edx, ebx
mov rax, rdx
movzx ebp, dh
movzx r13d, dl
shr rdx, 0x18
movzx edx, byte [r12 + rdx*4 + 3]
shl edx, 0x18
xor edx, dword [r9 + rcx*8 + 0x10]
shr rax, 0xe
and eax, 0x3fc
movzx eax, byte [rax + r8 + 2]
shl eax, 0x10
movzx ebp, byte [r10 + rbp*4 + 1]
shl ebp, 8
xor ebp, eax
movzx eax, byte [r14 + r13*4]
xor eax, ebp
xor eax, edx
mov dword [r9 + rcx*8 + 0x30], eax
xor eax, dword [r9 + rcx*8 + 0x14]
mov dword [r9 + rcx*8 + 0x34], eax
xor eax, dword [r9 + rcx*8 + 0x18]
mov dword [r9 + rcx*8 + 0x38], eax
xor r15d, eax
mov dword [r9 + rcx*8 + 0x3c], r15d
add rcx, 4
jmp 0x180004630
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov ecx, 0x14
call fcn.1800206d0
ud2
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov ecx, 0x18
call fcn.1800206d0
ud2
lea rax, [rsp + 0x26]
mov qword [rsp + 0x28], rax
lea rax, [0x18001d9f0]
mov qword [rsp + 0x30], rax
lea rax, str.wrong_value_for_bits
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], 1
mov qword [rsp + 0x58], 0
lea rax, [rsp + 0x28]
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], 1
lea rdx, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
lea rcx, [rsp + 0x38]
call fcn.1800201e0
ud2
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov ecx, 0x1c
call fcn.1800206d0
ud2
lea r8, str.C:UsersOffender.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs
mov ecx, 0x20
call fcn.1800206d0
ud2