Function at 0x1800128c0
Capabilities:
Encode data using base64
Encrypt data using aes
Reference aes constants

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
mov dword [rsp + 0x18], r8d
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
movzx ebx, byte [rsp + 0x80]
mov r12, rdx
lea edx, [r8 + 0x6c]
mov r13, r9
mov dword [rsp + 0x24], edx
mov eax, r8d
mov r9, rcx
cmp r8d, edx
jae 0x180012950
movzx edi, byte [rsp + 0x80]
movzx ebp, byte [rsp + 0x80]
movzx r14d, byte [rsp + 0x80]
movzx r15d, byte [rsp + 0x80]
movzx esi, byte [rsp + 0x80]
nop
sub eax, 0x3d
je 0x180012b5e
sub eax, 0x37
je 0x180012b03
sub eax, 0x1b
je 0x180012968
cmp eax, 0x1b
jne 0x180012b7b
movzx eax, bl
mov rbx, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
movzx ecx, byte [r12]
mov r8b, 1
add cl, 0x1c
shl cl, 2
movzx eax, cl
mov byte [rsp + 0x20], cl
shr al, 4
dec al
mov byte [r13 + 0xf0], al
movzx r11d, byte [r12]
cmp r11b, cl
jae 0x180012aff
nop word [rax + rax]
movzx ebx, r11b
mov r10d, 0x40
add rbx, r13
movzx r9d, r11b
add r9, r13
mov eax, r10d
sub eax, 0x40
je 0x180012a24
sub eax, 0x6a
je 0x1800129fb
sub eax, 0x6a
je 0x1800129e5
cmp eax, 0x6a
jne 0x180012adb
movzx eax, sil
movzx ecx, byte [rax + r13 + 3]
xor cl, r15b
mov byte [r9 + 3], cl
jmp 0x180012adb
movzx eax, sil
movzx ecx, byte [rax + r13 + 2]
xor cl, r14b
mov byte [r9 + 2], cl
jmp 0x180012adb
movzx esi, r11b
sub sil, byte [r12]
movzx ecx, sil
movzx eax, byte [rcx + r13]
xor al, dil
mov byte [r9], al
movzx eax, byte [rcx + r13 + 1]
xor al, bpl
mov byte [r9 + 1], al
jmp 0x180012adb
movzx ecx, byte [r12]
xor edx, edx
movzx edi, byte [rbx - 4]
movzx ebp, byte [rbx - 3]
movzx r14d, byte [rbx - 2]
movzx r15d, byte [r9 - 1]
movzx eax, r11b
div ecx
test edx, edx
jne 0x180012ab7
mov edx, 0x41
lea r13, str.cw
mov eax, edx
sub eax, 0x3f
je 0x180012a93
sub eax, 1
je 0x180012a76
cmp eax, 1
jne 0x180012aa6
movzx esi, dil
movzx eax, bpl
movzx edi, byte [rax + r13]
xor dil, r8b
jmp 0x180012aa6
movzx eax, r14b
movzx ebp, byte [rax + r13]
movzx eax, r15b
movzx r14d, byte [rax + r13]
movzx eax, sil
movzx r15d, byte [rax + r13]
jmp 0x180012aa6
movzx eax, r8b
add r8b, r8b
shr al, 7
movzx eax, al
imul ecx, eax, 0x1b
xor r8b, cl
dec edx
cmp edx, 0x3e
ja 0x180012a53
mov r13, qword [rsp + 0x88]
jmp 0x180012adb
cmp cl, 0x18
jbe 0x180012adb
cmp edx, 0x10
jne 0x180012adb
lea rcx, str.cw
movzx edi, byte [rdi + rcx]
movzx ebp, byte [rbp + rcx]
movzx r14d, byte [r14 + rcx]
movzx r15d, byte [r15 + rcx]
add r10d, 0x6a
cmp r10d, 0x1e8
jb 0x1800129b4
add r11b, 4
cmp r11b, byte [rsp + 0x20]
jb 0x1800129a0
mov edx, dword [rsp + 0x24]
xor bl, bl
jmp 0x180012b7b
movzx ecx, byte [r12]
sub ecx, 0x10
je 0x180012b3b
sub ecx, 8
je 0x180012b21
sub ecx, 8
je 0x180012b2e
sub ecx, 0x60
je 0x180012b3b
cmp ecx, 0x40
jne 0x180012b9e
mov byte [r12], 0x18
mov r8d, 0x18
jmp 0x180012b46
mov byte [r12], 0x20
mov r8d, 0x20
jmp 0x180012b46
mov byte [r12], 0x10
mov r8d, 0x10
mov rdx, r9
mov dword [rsp + 0x80], 0x74
mov rcx, r13
call sub.VCRUNTIME140.dll_memcpy
jmp 0x180012b77
mov rax, qword [0x18008b198]
test rax, rax
je 0x180012b7b
mov rcx, qword [r9]
xor edx, edx
mov r8d, 0x8000
call rax
mov edx, dword [rsp + 0x24]
mov eax, dword [rsp + 0x80]
add eax, 0x1b
mov dword [rsp + 0x80], eax
cmp eax, edx
jae 0x180012950
mov r9, qword [rsp + 0x70]
jmp 0x180012930
mov byte [r13 + 0xf0], 0
mov al, 0xff
jmp 0x180012953