Function at 0x180005a50
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 0x180005a91
cmp r8d, 0xc0
je 0x180005a8d
cmp r8d, 0x100
jne 0x180006116
mov al, 0xe
jmp 0x180005a93
mov al, 0xc
jmp 0x180005a93
mov al, 0xa
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 r15d, dword [rcx + 8]
bswap r15d
mov dword [r9 + 8], r15d
mov ebx, dword [rcx + 0xc]
bswap ebx
mov dword [r9 + 0xc], ebx
cmp r8d, 0x80
jne 0x180005b7d
xor eax, eax
lea rcx, [0x1800289b8]
lea rdx, [0x180028db8]
lea r8, [0x1800291b8]
lea r10, [0x1800295b8]
lea rsi, [0x1800299b8]
nop word cs:[rax + rax]
mov ebx, dword [r9 + rax*4 + 0xc]
mov edi, ebx
shr edi, 0xe
and edi, 0x3fc
movzx edi, byte [rdi + rcx + 3]
shl edi, 0x18
movzx ebp, bh
movzx ebp, byte [rdx + rbp*4 + 2]
shl ebp, 0x10
xor ebp, r11d
xor ebp, edi
movzx r11d, bl
movzx edi, byte [r8 + r11*4 + 1]
shl edi, 8
mov r11d, ebx
shr r11d, 0x18
movzx r11d, byte [r10 + r11*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, ebx
mov dword [r9 + rax*4 + 0x1c], edi
add rax, 4
cmp rax, 0x28
jne 0x180005b00
jmp 0x1800060e3
cmp rdx, 0x13
jbe 0x1800060f4
mov r13d, dword [rcx + 0x10]
bswap r13d
mov dword [r9 + 0x10], r13d
cmp rdx, 0x17
jbe 0x180006105
mov eax, dword [rcx + 0x14]
bswap eax
mov dword [r9 + 0x14], eax
cmp r8d, 0xc0
jne 0x180005fad
mov ecx, eax
shr ecx, 0xe
and ecx, 0x3fc
lea rdx, [0x1800289b8]
movzx ecx, byte [rcx + rdx + 3]
mov r10, rdx
shl ecx, 0x18
movzx edx, ah
lea r8, [0x180028db8]
movzx edx, byte [r8 + rdx*4 + 2]
mov rbp, r8
shl edx, 0x10
or edx, ecx
movzx ecx, al
lea r8, [0x1800291b8]
movzx ecx, byte [r8 + rcx*4 + 1]
mov r12, r8
shl ecx, 8
or ecx, edx
mov edx, eax
shr edx, 0x18
lea rsi, [0x1800295b8]
movzx edx, byte [rsi + rdx*4]
or edx, ecx
xor r11d, edx
mov r14d, r11d
xor r14d, 0x1000000
mov dword [r9 + 0x18], r14d
xor r14d, edi
mov dword [r9 + 0x1c], r14d
mov r8d, r14d
xor r8d, r15d
mov dword [r9 + 0x20], r8d
xor r8d, ebx
mov dword [r9 + 0x24], r8d
mov ebx, r8d
xor ebx, r13d
mov dword [r9 + 0x28], ebx
xor ebx, eax
mov dword [r9 + 0x2c], ebx
mov eax, ebx
shr eax, 0xe
and eax, 0x3fc
mov rcx, r10
movzx eax, byte [rax + r10 + 3]
shl eax, 0x18
movzx edx, bh
movzx edx, byte [rbp + rdx*4 + 2]
shl edx, 0x10
or edx, eax
movzx eax, bl
movzx edi, byte [r12 + rax*4 + 1]
mov r10, r12
shl edi, 8
or edi, edx
mov eax, ebx
shr eax, 0x18
movzx eax, byte [rsi + 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, r15d
mov dword [r9 + 0x38], r11d
mov edx, r11d
xor edx, r8d
mov dword [r9 + 0x3c], edx
mov r12d, r11d
xor r12d, r13d
mov dword [r9 + 0x40], r12d
mov edx, r12d
xor edx, ebx
mov dword [r9 + 0x44], edx
mov esi, edx
shr esi, 0xe
and esi, 0x3fc
movzx esi, byte [rsi + rcx + 3]
shl esi, 0x18
movzx edi, dh
mov rcx, rbp
movzx edi, byte [rbp + rdi*4 + 2]
shl edi, 0x10
or edi, esi
movzx esi, dl
movzx ebp, byte [r10 + rsi*4 + 1]
shl ebp, 8
or ebp, edi
shr edx, 0x18
lea r15, [0x1800295b8]
movzx esi, byte [r15 + 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 eax, r8d
xor eax, ebx
mov dword [r9 + 0x5c], eax
mov edx, eax
shr edx, 0xe
and edx, 0x3fc
lea r12, [0x1800289b8]
movzx edx, byte [rdx + r12 + 3]
shl edx, 0x18
movzx ebp, ah
movzx ebp, byte [rcx + rbp*4 + 2]
shl ebp, 0x10
or ebp, edx
movzx edx, al
movzx edx, byte [r10 + rdx*4 + 1]
mov rcx, r10
shl edx, 8
or edx, ebp
mov r14d, eax
shr r14d, 0x18
movzx r14d, byte [r15 + r14*4]
mov r10, r15
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 edx, r11d
xor edx, r8d
mov dword [r9 + 0x6c], edx
xor esi, r13d
mov dword [r9 + 0x70], esi
xor eax, esi
mov dword [r9 + 0x74], eax
mov edx, eax
shr edx, 0xe
and edx, 0x3fc
mov r15, r12
movzx edx, byte [rdx + r12 + 3]
shl edx, 0x18
movzx ebp, ah
lea r12, [0x180028db8]
movzx ebp, byte [r12 + rbp*4 + 2]
shl ebp, 0x10
or ebp, edx
movzx edx, al
mov r13, rcx
movzx edx, byte [rcx + rdx*4 + 1]
shl edx, 8
or edx, ebp
shr eax, 0x18
movzx eax, byte [r10 + rax*4]
or eax, edx
xor eax, r14d
mov ebp, eax
xor ebp, 0x1f000000
mov dword [r9 + 0x78], ebp
xor ebp, edi
mov dword [r9 + 0x7c], ebp
mov edx, ebp
xor edx, r11d
mov dword [r9 + 0x80], edx
xor r8d, ebp
mov dword [r9 + 0x84], r8d
mov edx, r8d
xor edx, esi
mov dword [r9 + 0x88], edx
xor ebx, ebp
mov dword [r9 + 0x8c], ebx
mov edx, ebx
shr edx, 0xe
and edx, 0x3fc
movzx edx, byte [rdx + r15 + 3]
shl edx, 0x18
movzx edi, bh
movzx edi, byte [r12 + rdi*4 + 2]
shl edi, 0x10
or edi, edx
movzx edx, bl
movzx edx, byte [rcx + rdx*4 + 1]
shl edx, 8
or edx, edi
mov edi, ebx
shr edi, 0x18
movzx r14d, byte [r10 + rdi*4]
or r14d, edx
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 edx, eax
shr edx, 0xe
and edx, 0x3fc
movzx edx, byte [rdx + r15 + 3]
shl edx, 0x18
movzx ecx, ah
movzx ecx, byte [r12 + rcx*4 + 2]
shl ecx, 0x10
or ecx, edx
movzx edx, al
movzx edx, byte [r13 + rdx*4 + 1]
shl edx, 8
or edx, ecx
shr eax, 0x18
movzx r11d, byte [r10 + rax*4]
or r11d, edx
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 ecx, ebx
shr ecx, 0xe
and ecx, 0x3fc
movzx ecx, byte [rcx + r15 + 3]
shl ecx, 0x18
movzx edx, bh
movzx edx, byte [r12 + rdx*4 + 2]
shl edx, 0x10
or edx, ecx
movzx ecx, bl
movzx ecx, byte [r13 + rcx*4 + 1]
shl ecx, 8
or ecx, edx
shr ebx, 0x18
movzx edx, byte [r10 + 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 0x1800060e3
cmp rdx, 0x1b
jbe 0x18000616e
mov eax, dword [rcx + 0x18]
bswap eax
mov dword [r9 + 0x18], eax
cmp rdx, 0x1f
jbe 0x18000617f
mov eax, dword [rcx + 0x1c]
bswap eax
mov dword [r9 + 0x1c], eax
cmp r8d, 0x100
jne 0x1800060e3
xor ecx, ecx
lea r13, [0x1800289b8]
lea r8, [0x180028db8]
lea r10, [0x1800291b8]
lea r14, [0x1800295b8]
nop
mov r12d, eax
shr r12d, 0xe
and r12d, 0x3fc
movzx ebp, byte [r12 + r13 + 3]
shl ebp, 0x18
movzx edx, ah
movzx edx, byte [r8 + rdx*4 + 2]
shl edx, 0x10
xor edx, r11d
xor edx, ebp
movzx r11d, al
movzx ebp, byte [r10 + r11*4 + 1]
shl ebp, 8
mov r11d, eax
shr r11d, 0x18
movzx r11d, byte [r14 + r11*4]
xor r11d, ebp
xor r11d, edx
lea rdx, [0x1800299b8]
xor r11d, dword [rcx + rdx]
mov dword [r9 + rcx*8 + 0x20], r11d
xor edi, r11d
mov dword [r9 + rcx*8 + 0x24], edi
xor r15d, edi
mov dword [r9 + rcx*8 + 0x28], r15d
xor ebx, r15d
mov dword [r9 + rcx*8 + 0x2c], ebx
cmp rcx, 0x18
je 0x1800060e3
mov edx, ebx
shr edx, 0x18
movzx edx, byte [r13 + rdx*4 + 3]
shl edx, 0x18
xor edx, dword [r9 + rcx*8 + 0x10]
mov r12d, ebx
shr r12d, 0xe
and r12d, 0x3fc
movzx ebp, byte [r12 + r8 + 2]
shl ebp, 0x10
movzx esi, bh
movzx esi, byte [r10 + rsi*4 + 1]
shl esi, 8
xor esi, ebp
movzx r12d, bl
movzx ebp, byte [r14 + r12*4]
xor ebp, esi
xor ebp, edx
mov dword [r9 + rcx*8 + 0x30], ebp
xor ebp, dword [r9 + rcx*8 + 0x14]
mov dword [r9 + rcx*8 + 0x34], ebp
xor ebp, dword [r9 + rcx*8 + 0x18]
mov dword [r9 + rcx*8 + 0x38], ebp
xor eax, ebp
mov dword [r9 + rcx*8 + 0x3c], eax
add rcx, 4
jmp 0x180006000
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea r8, str.C:Users0xaced0005.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs_
mov ecx, 0x14
call fcn.1800264d0
lea r8, str.C:Users0xaced0005.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs_
mov ecx, 0x18
call fcn.1800264d0
lea rax, [rsp + 0x26]
mov qword [rsp + 0x28], rax
lea rax, [0x180023940]
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:Users0xaced0005.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs_
lea rcx, [rsp + 0x38]
call fcn.180026020
lea r8, str.C:Users0xaced0005.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs_
mov ecx, 0x1c
call fcn.1800264d0
lea r8, str.C:Users0xaced0005.cargo_registry_srcindex.crates.io_6f17d22bba15001flibaes_0.6.5_srclib.rs_
mov ecx, 0x20
call fcn.1800264d0
int3