Function at 0x18002ca80
Capabilities:
Encode data using base64

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov qword [rax - 0x40], 0xfffffffffffffffe
mov qword [rax + 0x20], rbx
mov rax, rdx
mov rdi, rcx
mov dword [rsp + 0x20], 0
mov qword [rcx + 0x18], 0xf
mov qword [rcx + 0x10], 0
mov byte [rcx], 0
mov dword [rsp + 0x20], 1
xor esi, esi
movsxd r13, r8d
test r8d, r8d
jle 0x18002d08a
lea rdx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
or r12, 0xffffffffffffffff
nop dword [rax + rax]
movzx r14d, byte [rsi + rax]
inc rsi
cmp rsi, r13
je 0x18002cf18
movzx r15d, byte [rsi + rax]
inc rsi
cmp rsi, r13
je 0x18002ce24
movzx eax, byte [rsi + rax]
mov byte [rsp + 0x80], al
inc rsi
movzx eax, r14b
shr rax, 2
movzx ebp, byte [rax + rdx]
mov r8, qword [rdi + 0x10]
mov rax, r12
sub rax, r8
cmp rax, 1
jbe 0x18002ce17
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
ja 0x18002ce0a
mov rax, qword [rdi + 0x18]
cmp rax, rbx
jae 0x18002cb6b
mov rdx, rbx
mov rcx, rdi
call fcn.180018170
lea rdx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
jmp 0x18002cb87
test rbx, rbx
jne 0x18002cb8c
mov qword [rdi + 0x10], rbx
cmp rax, 0x10
jb 0x18002cb7f
mov rax, qword [rdi]
jmp 0x18002cb82
mov rax, rdi
mov byte [rax], 0
jmp 0x18002cbba
test rbx, rbx
je 0x18002cbba
mov rcx, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0x10
jb 0x18002cb9c
mov rax, qword [rdi]
jmp 0x18002cb9f
mov rax, rdi
mov byte [rcx + rax], bpl
mov qword [rdi + 0x10], rbx
cmp qword [rdi + 0x18], 0x10
jb 0x18002cbb3
mov rax, qword [rdi]
jmp 0x18002cbb6
mov rax, rdi
mov byte [rbx + rax], 0
movzx ebp, r15b
movzx eax, r14b
and eax, 3
shl eax, 4
movsxd rcx, eax
mov eax, ebp
shr eax, 4
or rcx, rax
movzx r14d, byte [rcx + rdx]
mov r8, qword [rdi + 0x10]
mov rax, r12
sub rax, r8
cmp rax, 1
jbe 0x18002cdfd
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
ja 0x18002cdf0
mov rax, qword [rdi + 0x18]
cmp rax, rbx
jae 0x18002cc17
mov rdx, rbx
mov rcx, rdi
call fcn.180018170
lea rdx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
jmp 0x18002cc33
test rbx, rbx
jne 0x18002cc38
mov qword [rdi + 0x10], rbx
cmp rax, 0x10
jb 0x18002cc2b
mov rax, qword [rdi]
jmp 0x18002cc2e
mov rax, rdi
mov byte [rax], 0
jmp 0x18002cc66
test rbx, rbx
je 0x18002cc66
mov rcx, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0x10
jb 0x18002cc48
mov rax, qword [rdi]
jmp 0x18002cc4b
mov rax, rdi
mov byte [rcx + rax], r14b
mov qword [rdi + 0x10], rbx
cmp qword [rdi + 0x18], 0x10
jb 0x18002cc5f
mov rax, qword [rdi]
jmp 0x18002cc62
mov rax, rdi
mov byte [rax + rbx], 0
and ebp, 0xf
shl ebp, 2
movsxd rcx, ebp
movzx r14d, byte [rsp + 0x80]
mov eax, r14d
shr rax, 6
or rcx, rax
movzx ebp, byte [rcx + rdx]
mov r8, qword [rdi + 0x10]
mov rax, r12
sub rax, r8
cmp rax, 1
jbe 0x18002cde3
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
ja 0x18002cdd6
mov rax, qword [rdi + 0x18]
cmp rax, rbx
jae 0x18002ccc5
mov rdx, rbx
mov rcx, rdi
call fcn.180018170
lea rdx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
jmp 0x18002cce1
test rbx, rbx
jne 0x18002cce6
mov qword [rdi + 0x10], rbx
cmp rax, 0x10
jb 0x18002ccd9
mov rax, qword [rdi]
jmp 0x18002ccdc
mov rax, rdi
mov byte [rax], 0
jmp 0x18002cd14
test rbx, rbx
je 0x18002cd14
mov rcx, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0x10
jb 0x18002ccf6
mov rax, qword [rdi]
jmp 0x18002ccf9
mov rax, rdi
mov byte [rax + rcx], bpl
mov qword [rdi + 0x10], rbx
cmp qword [rdi + 0x18], 0x10
jb 0x18002cd0d
mov rax, qword [rdi]
jmp 0x18002cd10
mov rax, rdi
mov byte [rax + rbx], 0
movzx eax, r14b
and eax, 0x3f
movzx ebp, byte [rax + rdx]
mov r8, qword [rdi + 0x10]
mov rax, r12
sub rax, r8
cmp rax, 1
jbe 0x18002cdc9
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
ja 0x18002cdbc
mov rax, qword [rdi + 0x18]
cmp rax, rbx
jae 0x18002cd5a
mov rdx, rbx
mov rcx, rdi
call fcn.180018170
lea rdx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
jmp 0x18002cd76
test rbx, rbx
jne 0x18002cd7b
mov qword [rdi + 0x10], rbx
cmp rax, 0x10
jb 0x18002cd6e
mov rax, qword [rdi]
jmp 0x18002cd71
mov rax, rdi
mov byte [rax], 0
jmp 0x18002cda9
test rbx, rbx
je 0x18002cda9
mov rcx, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0x10
jb 0x18002cd8b
mov rax, qword [rdi]
jmp 0x18002cd8e
mov rax, rdi
mov byte [rcx + rax], bpl
mov qword [rdi + 0x10], rbx
cmp qword [rdi + 0x18], 0x10
jb 0x18002cda2
mov rax, qword [rdi]
jmp 0x18002cda5
mov rax, rdi
mov byte [rbx + rax], 0
cmp rsi, r13
mov rax, qword [rsp + 0x78]
jl 0x18002caf0
jmp 0x18002d08a
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
movzx eax, r14b
shr rax, 2
movzx r8d, byte [rax + rdx]
mov edx, 1
mov rcx, rdi
call fcn.180015ac0
movzx ebx, r15b
movzx eax, r14b
and eax, 3
shl eax, 4
movsxd rcx, eax
mov eax, ebx
shr eax, 4
or rcx, rax
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
movzx r8d, byte [rcx + rsi]
mov edx, 1
mov rcx, rdi
call fcn.180015ac0
and ebx, 0xf
shl ebx, 2
movsxd rax, ebx
movzx r8d, byte [rax + rsi]
mov edx, 1
mov rcx, rdi
call fcn.180015ac0
mov r8, qword [rdi + 0x10]
sub r12, r8
cmp r12, 1
ja 0x18002cea5
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
jbe 0x18002cebc
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
mov rax, qword [rdi + 0x18]
cmp rax, rbx
jae 0x18002ced2
mov rdx, rbx
mov rcx, rdi
call fcn.180018170
jmp 0x18002cedc
test rbx, rbx
jne 0x18002cee5
jmp 0x18002d03c
test rbx, rbx
je 0x18002d08a
mov rcx, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0x10
jb 0x18002cef5
mov rax, qword [rdi]
jmp 0x18002cef8
mov rax, rdi
mov byte [rcx + rax], 0x3d
mov qword [rdi + 0x10], rbx
cmp qword [rdi + 0x18], 0x10
jb 0x18002cf0c
mov rax, qword [rdi]
jmp 0x18002cf0f
mov rax, rdi
mov byte [rbx + rax], 0
jmp 0x18002d08a
movzx eax, r14b
shr rax, 2
movzx r8d, byte [rax + rdx]
mov edx, 1
mov rcx, rdi
call fcn.180015ac0
movzx eax, r14b
and eax, 3
shl eax, 4
cdqe
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
movzx r8d, byte [rax + rsi]
mov edx, 1
mov rcx, rdi
call fcn.180015ac0
mov r8, qword [rdi + 0x10]
mov rax, r12
sub rax, r8
cmp rax, 1
ja 0x18002cf74
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
jbe 0x18002cf8b
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
mov rax, qword [rdi + 0x18]
cmp rax, rbx
jae 0x18002cfa1
mov rdx, rbx
mov rcx, rdi
call fcn.180018170
jmp 0x18002cfbd
test rbx, rbx
jne 0x18002cfc2
mov qword [rdi + 0x10], rbx
cmp rax, 0x10
jb 0x18002cfb5
mov rax, qword [rdi]
jmp 0x18002cfb8
mov rax, rdi
mov byte [rax], 0
jmp 0x18002cff0
test rbx, rbx
je 0x18002cff0
mov rcx, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0x10
jb 0x18002cfd2
mov rax, qword [rdi]
jmp 0x18002cfd5
mov rax, rdi
mov byte [rax + rcx], 0x3d
mov qword [rdi + 0x10], rbx
cmp qword [rdi + 0x18], 0x10
jb 0x18002cfe9
mov rax, qword [rdi]
jmp 0x18002cfec
mov rax, rdi
mov byte [rax + rbx], 0
mov r8, qword [rdi + 0x10]
sub r12, r8
cmp r12, 1
ja 0x18002d00a
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
jbe 0x18002d021
lea rcx, str.string_too_long
call fcn.1800b0d28
int3
mov rax, qword [rdi + 0x18]
cmp rax, rbx
jae 0x18002d037
mov rdx, rbx
mov rcx, rdi
call fcn.180018170
jmp 0x18002d057
test rbx, rbx
jne 0x18002d05c
mov qword [rdi + 0x10], 0
cmp rax, 0x10
jb 0x18002d04f
mov rax, qword [rdi]
jmp 0x18002d052
mov rax, rdi
mov byte [rax], 0
jmp 0x18002d08a
test rbx, rbx
je 0x18002d08a
mov rcx, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0x10
jb 0x18002d06c
mov rax, qword [rdi]
jmp 0x18002d06f
mov rax, rdi
mov byte [rax + rcx], 0x3d
mov qword [rdi + 0x10], rbx
cmp qword [rdi + 0x18], 0x10
jb 0x18002d083
mov rax, qword [rdi]
jmp 0x18002d086
mov rax, rdi
mov byte [rax + rbx], 0
mov rax, rdi
mov rbx, qword [rsp + 0x88]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret