Function at 0x140015570
Capabilities:
Encode data using base64

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov qword [rbp - 0x38], 0xfffffffffffffffe
mov qword [rsp + 0xb0], rbx
mov rax, qword [0x1402d9850]
xor rax, rsp
mov qword [rbp - 0x10], rax
movsxd r14, r9d
mov rsi, r8
mov r12, rdx
mov rbx, rcx
xor edi, edi
mov dword [rbp - 0x40], edi
mov qword [rbp - 0x18], 7
mov qword [rbp - 0x20], rdi
mov word [rbp - 0x30], di
xor r8d, r8d
lea rdx, [0x14025d868]
lea rcx, [rbp - 0x30]
call fcn.140007090
nop
mov r8d, edi
test rsi, rsi
jne 0x14001562f
lea rdx, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rdx, qword [rbp - 0x30]
mov qword [r12 + 0x18], 7
mov qword [r12 + 0x10], rdi
cmp qword [r12 + 0x18], 8
jb 0x140015608
mov rax, qword [r12]
jmp 0x14001560b
mov rax, r12
mov word [rax], di
cmp word [rdx], di
je 0x14001590b
or rdi, 0xffffffffffffffff
nop dword [rax + rax]
inc rdi
cmp word [rdx + rdi*2], r8w
jne 0x140015620
jmp 0x14001590b
mov qword [rbx + 0x18], rsi
mov dword [rbx + 8], r14d
mov dword [rbx + 0xc], edi
mov rdx, rdi
nop dword [rax]
cmp rdx, r14
jge 0x140015667
movzx eax, word [rsi + rdx*2]
inc r8d
inc rdx
mov ecx, dword [rbx + 0x10]
shl ecx, 8
movzx eax, al
or ecx, eax
mov dword [rbx + 0x10], ecx
add dword [rbx + 0xc], 8
cmp dword [rbx + 0xc], 6
jl 0x140015640
mov esi, dword [rbx + 0xc]
mov eax, dword [rbx + 0x10]
cmp esi, 6
jge 0x140015680
mov ecx, 6
sub ecx, esi
shl eax, cl
mov dword [rbx + 0xc], edi
jmp 0x14001568d
lea ecx, [rsi - 6]
shr eax, cl
mov esi, 6
mov dword [rbx + 0xc], ecx
and eax, 0x3f
movabs rdx, 0x7ffffffffffffffe
test esi, esi
jle 0x140015802
movsxd r14, r8d
lea r11, [0x14025d8e8]
mov r8, qword [rbp - 0x20]
movsxd rcx, eax
cmp qword [0x1402e1888], rcx
jbe 0x1400157f5
lea rax, [0x1402e1878]
cmp qword [0x1402e1890], 8
cmovae rax, qword [0x1402e1878]
movzx r13d, word [rax + rcx*2]
or rax, 0xffffffffffffffff
sub rax, r8
cmp rax, 1
jbe 0x1400157e8
lea r15, [r8 + 1]
cmp r15, rdx
ja 0x1400157db
cmp qword [rbp - 0x18], r15
jae 0x140015715
mov rdx, r15
lea rcx, [rbp - 0x30]
call fcn.140007b40
lea r11, [0x14025d8e8]
jmp 0x14001572f
test r15, r15
jne 0x140015738
mov qword [rbp - 0x20], rdi
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rax, qword [rbp - 0x30]
mov word [rax], di
mov r8, qword [rbp - 0x20]
test r15, r15
je 0x140015766
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rax, qword [rbp - 0x30]
mov word [rax + r8*2], r13w
mov qword [rbp - 0x20], r15
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rax, qword [rbp - 0x30]
mov word [rax + r15*2], di
mov r8, qword [rbp - 0x20]
movsxd r10, esi
mov eax, dword [rbx + 0xc]
cmp eax, esi
jge 0x1400157b5
movsxd r9, dword [rbx + 8]
cmp r14, r9
jge 0x14001579c
mov rax, qword [rbx + 0x18]
movzx ecx, word [rax + r14*2]
inc r14
movzx edx, cl
mov eax, dword [rbx + 0x10]
shl eax, 8
or edx, eax
mov dword [rbx + 0x10], edx
add dword [rbx + 0xc], 8
cmp dword [rbx + 0xc], esi
jl 0x140015774
mov eax, dword [rbx + 0xc]
cmp eax, esi
jge 0x1400157b5
sub esi, eax
movzx ecx, sil
mov edx, dword [rbx + 0x10]
shl edx, cl
mov esi, eax
mov dword [rbx + 0xc], edi
jmp 0x1400157c1
sub eax, esi
mov edx, dword [rbx + 0x10]
mov ecx, eax
shr edx, cl
mov dword [rbx + 0xc], eax
mov eax, dword [r11 + r10*4]
and eax, edx
test esi, esi
movabs rdx, 0x7ffffffffffffffe
jg 0x1400156b0
jmp 0x140015806
lea rcx, str.string_too_long
call fcn.14010a124
int3
lea rcx, str.string_too_long
call fcn.14010a124
int3
lea rcx, str.invalid_string_position
call fcn.14010a148
int3
mov r8, qword [rbp - 0x20]
test byte [rbp - 0x20], 3
je 0x1400158c7
mov esi, 0x3d
or rax, 0xffffffffffffffff
sub rax, r8
cmp rax, 1
jbe 0x1400158ba
lea rbx, [r8 + 1]
cmp rbx, rdx
ja 0x1400158ad
cmp qword [rbp - 0x18], rbx
jae 0x140015851
mov rdx, rbx
lea rcx, [rbp - 0x30]
call fcn.140007b40
movabs rdx, 0x7ffffffffffffffe
jmp 0x14001586b
test rbx, rbx
jne 0x140015874
mov qword [rbp - 0x20], rdi
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rax, qword [rbp - 0x30]
mov word [rax], di
mov r8, qword [rbp - 0x20]
test rbx, rbx
je 0x1400158a1
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rax, qword [rbp - 0x30]
mov word [rax + r8*2], si
mov qword [rbp - 0x20], rbx
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rax, qword [rbp - 0x30]
mov word [rax + rbx*2], di
mov r8, qword [rbp - 0x20]
test byte [rbp - 0x20], 3
jne 0x140015815
jmp 0x1400158c7
lea rcx, str.string_too_long
call fcn.14010a124
int3
lea rcx, str.string_too_long
call fcn.14010a124
int3
lea rdx, [rbp - 0x30]
cmp qword [rbp - 0x18], 8
cmovae rdx, qword [rbp - 0x30]
mov qword [r12 + 0x18], 7
mov qword [r12 + 0x10], rdi
cmp qword [r12 + 0x18], 8
jb 0x1400158f1
mov rax, qword [r12]
jmp 0x1400158f4
mov rax, r12
mov word [rax], di
cmp word [rdx], 0
je 0x14001590b
or rdi, 0xffffffffffffffff
inc rdi
cmp word [rdx + rdi*2], 0
jne 0x140015901
mov r8, rdi
mov rcx, r12
call fcn.140007090
nop
mov r8, qword [rbp - 0x18]
cmp r8, 8
jb 0x140015931
inc r8
mov rdx, qword [rbp - 0x30]
lea rcx, [rbp - 0x30]
call fcn.140007540
mov rax, r12
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.14012a1e0
mov rbx, qword [rsp + 0xb0]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret