Function at 0x180002150
Capabilities:
Encode data using base64

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov qword [rbp - 0x48], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1800140a0]
xor rax, rsp
mov qword [rbp - 0x10], rax
mov r12, rdx
mov qword [rbp - 0x50], rdx
mov rbx, rcx
mov qword [rbp - 0x40], rcx
xor eax, eax
mov dword [rbp - 0x54], eax
mov qword [rbp - 0x20], 0xf
mov qword [rbp - 0x28], rax
mov byte [rbp - 0x38], al
lea edx, [rax + 0x40]
lea rcx, [rbp - 0x38]
call fcn.180002600
nop
mov qword [rbx + 0x18], 0xf
mov qword [rbx + 0x10], 0
mov byte [rbx], 0
mov dword [rbp - 0x54], 1
xor esi, esi
xor r9d, r9d
mov dword [rbp - 0x58], r9d
xor edx, edx
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, r12
repne scasb al, byte [rdi]
not rcx
dec rcx
je 0x180002571
mov r13, r12
nop word [rax + rax]
movzx eax, byte [r13]
mov byte [rbp + rdx - 0x60], al
inc esi
inc rdx
movzx r8d, byte [rbp - 0x5e]
movzx r14d, byte [rbp - 0x5f]
movzx r15d, byte [rbp - 0x60]
cmp rdx, 3
jne 0x180002331
movzx eax, r15b
shr al, 2
mov byte [rbp - 0x5c], al
movzx ecx, r15b
and cl, dl
shl cl, 4
movzx eax, r14b
shr al, 4
add cl, al
mov byte [rbp - 0x5b], cl
movzx ecx, r14b
and cl, 0xf
shl cl, 2
movzx eax, r8b
shr al, 6
add cl, al
mov byte [rbp - 0x5a], cl
movzx eax, r8b
and al, 0x3f
mov byte [rbp - 0x59], al
xor esi, esi
nop word [rax + rax]
lea rcx, [rbp - 0x38]
cmp qword [rbp - 0x20], 0x10
cmovae rcx, qword [rbp - 0x38]
movzx eax, byte [rbp + rsi - 0x5c]
movzx r12d, byte [rax + rcx]
mov r8, qword [rbx + 0x10]
or rax, 0xffffffffffffffff
sub rax, r8
cmp rax, 1
jbe 0x180002366
lea rdi, [r8 + 1]
cmp rdi, 0xfffffffffffffffe
ja 0x180002359
mov rax, qword [rbx + 0x18]
cmp rax, rdi
jae 0x1800022c1
mov rdx, rdi
mov rcx, rbx
call fcn.180002860
jmp 0x1800022db
test rdi, rdi
jne 0x1800022de
mov qword [rbx + 0x10], rdi
cmp rax, 0x10
jb 0x1800022d5
mov rax, qword [rbx]
jmp 0x1800022d8
mov rax, rbx
mov byte [rax], 0
test rdi, rdi
setne al
test al, al
je 0x180002313
mov rcx, qword [rbx + 0x10]
cmp qword [rbx + 0x18], 0x10
jb 0x1800022f5
mov rax, qword [rbx]
jmp 0x1800022f8
mov rax, rbx
mov byte [rax + rcx], r12b
mov qword [rbx + 0x10], rdi
cmp qword [rbx + 0x18], 0x10
jb 0x18000230c
mov rax, qword [rbx]
jmp 0x18000230f
mov rax, rbx
mov byte [rax + rdi], 0
inc rsi
cmp rsi, 4
jl 0x180002270
xor esi, esi
xor edx, edx
movzx r8d, byte [rbp - 0x5e]
mov r9d, dword [rbp - 0x58]
mov r12, qword [rbp - 0x50]
inc r9d
mov dword [rbp - 0x58], r9d
inc r13
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, r12
repne scasb al, byte [rdi]
not rcx
dec rcx
movsxd rax, r9d
cmp rax, rcx
jae 0x180002373
jmp 0x180002200
lea rcx, str.string_too_long
call fcn.180004874
int3
lea rcx, str.string_too_long
call fcn.180004874
int3
test esi, esi
je 0x180002571
movsxd rax, esi
cmp rax, 3
jge 0x1800023a8
lea rcx, [rbp + rax - 0x60]
mov r8d, 3
sub r8, rax
xor edx, edx
call fcn.1800062a0
movzx r8d, byte [rbp - 0x5e]
movzx r14d, byte [rbp - 0x5f]
movzx r15d, byte [rbp - 0x60]
movzx eax, r15b
shr al, 2
mov byte [rbp - 0x5c], al
and r15b, 3
shl r15b, 4
movzx eax, r14b
shr al, 4
add r15b, al
mov byte [rbp - 0x5b], r15b
and r14b, 0xf
shl r14b, 2
shr r8b, 6
add r14b, r8b
mov byte [rbp - 0x5a], r14b
xor r12d, r12d
lea r15d, [rsi + 1]
test r15d, r15d
jle 0x1800024ba
lea r13, [rbp - 0x5c]
nop
lea rcx, [rbp - 0x38]
cmp qword [rbp - 0x20], 0x10
cmovae rcx, qword [rbp - 0x38]
movzx eax, byte [r13]
movzx r14d, byte [rax + rcx]
mov r8, qword [rbx + 0x10]
or rax, 0xffffffffffffffff
sub rax, r8
cmp rax, 1
jbe 0x1800024ad
lea rdi, [r8 + 1]
cmp rdi, 0xfffffffffffffffe
ja 0x1800024a0
mov rax, qword [rbx + 0x18]
cmp rax, rdi
jae 0x18000243d
mov rdx, rdi
mov rcx, rbx
call fcn.180002860
jmp 0x180002457
test rdi, rdi
jne 0x18000245a
mov qword [rbx + 0x10], rdi
cmp rax, 0x10
jb 0x180002451
mov rax, qword [rbx]
jmp 0x180002454
mov rax, rbx
mov byte [rax], 0
test rdi, rdi
setne al
test al, al
je 0x18000248f
mov rcx, qword [rbx + 0x10]
cmp qword [rbx + 0x18], 0x10
jb 0x180002471
mov rax, qword [rbx]
jmp 0x180002474
mov rax, rbx
mov byte [rax + rcx], r14b
mov qword [rbx + 0x10], rdi
cmp qword [rbx + 0x18], 0x10
jb 0x180002488
mov rax, qword [rbx]
jmp 0x18000248b
mov rax, rbx
mov byte [rax + rdi], 0
inc r12d
inc r13
cmp r12d, r15d
jl 0x1800023f0
jmp 0x1800024ba
lea rcx, str.string_too_long
call fcn.180004874
int3
lea rcx, str.string_too_long
call fcn.180004874
int3
cmp esi, 3
jge 0x180002571
inc esi
mov r8, qword [rbx + 0x10]
or rax, 0xffffffffffffffff
sub rax, r8
cmp rax, 1
jbe 0x180002564
lea rdi, [r8 + 1]
cmp rdi, 0xfffffffffffffffe
ja 0x180002557
mov rax, qword [rbx + 0x18]
cmp rax, rdi
jae 0x1800024fa
mov rdx, rdi
mov rcx, rbx
call fcn.180002860
jmp 0x180002514
test rdi, rdi
jne 0x180002517
mov qword [rbx + 0x10], rdi
cmp rax, 0x10
jb 0x18000250e
mov rax, qword [rbx]
jmp 0x180002511
mov rax, rbx
mov byte [rax], 0
test rdi, rdi
setne al
test al, al
je 0x18000254c
mov rcx, qword [rbx + 0x10]
cmp qword [rbx + 0x18], 0x10
jb 0x18000252e
mov rax, qword [rbx]
jmp 0x180002531
mov rax, rbx
mov byte [rcx + rax], 0x3d
mov qword [rbx + 0x10], rdi
cmp qword [rbx + 0x18], 0x10
jb 0x180002545
mov rax, qword [rbx]
jmp 0x180002548
mov rax, rbx
mov byte [rdi + rax], 0
cmp esi, 3
jl 0x1800024c3
jmp 0x180002571
lea rcx, str.string_too_long
call fcn.180004874
int3
lea rcx, str.string_too_long
call fcn.180004874
nop
cmp qword [rbp - 0x20], 0x10
jb 0x180002581
mov rcx, qword [rbp - 0x38]
call fcn.180004ce8
mov rax, rbx
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.180004970
lea r11, [rsp + 0x80]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret