Function at 0x14002250c
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov qword [rsp + 0x30], 0
mov r15, rcx
mov rsi, rdx
mov rbx, r8
mov qword [rsp + 0x38], 0
test r9b, r9b
jne 0x140022562
imul rax, r8, 4
jo 0x1400225d5
cqo
mov edi, 3
idiv rdi
add rax, 6
mov rcx, rax
jns 0x140022958
jmp 0x1400229d1
imul rax, r8, 4
jo 0x1400225d5
cqo
mov edi, 3
idiv rdi
add rax, 6
mov rcx, rax
js 0x1400229d1
lea r12, [rsp + 0x30]
mov rdx, rax
mov r14, rbx
xor r13d, r13d
mov rcx, r12
call fcn.140004bf7
mov rax, rbx
cqo
idiv rdi
sub r14, rdx
mov qword [rsp + 0x20], rdx
seto r13b
jo 0x1400225d5
xor r9d, r9d
lea rbp, [0x140049f20]
cmp r14, r13
je 0x1400225df
cmp rbx, r13
jle 0x1400229e4
movzx edi, byte [rsi + r13]
mov rcx, r13
mov eax, edi
shl eax, 0x10
inc rcx
jns 0x1400225f0
call fcn.140003684
jmp 0x140022dc1
cmp qword [rsp + 0x20], 1
jne 0x140022760
jmp 0x140022771
cmp rcx, r13
jb 0x1400225d5
test rcx, rcx
js 0x140022c93
cmp rcx, rbx
jge 0x140022c93
movzx edi, byte [rsi + rcx]
mov r10, rcx
shl edi, 8
or edi, eax
add r10, 1
jo 0x1400225d5
test r10, r10
js 0x140022a3e
cmp r10, rbx
jge 0x140022a3e
movzx eax, byte [rsi + r10]
mov rdx, qword [rsp + 0x30]
lea r13, [rcx + 2]
or edi, eax
test r9, r9
js 0x140022cab
cmp rdx, r9
jle 0x140022cab
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov eax, edi
mov r9, qword [rsp + 0x28]
shr eax, 0x12
mov dl, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov rcx, r9
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022b3f
cmp r9, rdx
jge 0x140022b48
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov eax, edi
mov r9, qword [rsp + 0x28]
shr eax, 0xc
and eax, 0x3f
mov dl, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov rcx, r9
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022b3f
cmp r9, rdx
jge 0x140022b48
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov eax, edi
mov r9, qword [rsp + 0x28]
shr eax, 6
and eax, 0x3f
mov dl, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov rcx, r9
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022b3f
cmp r9, rdx
jge 0x140022b48
and edi, 0x3f
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov r9, qword [rsp + 0x28]
mov dl, byte [rbp + rdi]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
jno 0x1400225b5
jmp 0x1400225d5
cmp qword [rsp + 0x20], 2
jne 0x1400229af
jmp 0x14002286f
cmp rbx, r14
jle 0x140022c68
mov rax, r14
inc rax
js 0x1400225d5
cmp rax, r14
jb 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022cab
cmp r9, rdx
jge 0x140022cab
movzx ebx, byte [rsi + r14]
mov rcx, r12
mov qword [rsp + 0x20], r9
lea rsi, [0x140049f20]
call fcn.140021bc3
mov r9, qword [rsp + 0x20]
shl ebx, 0x10
mov eax, ebx
shr eax, 0x12
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov r13, r9
jo 0x1400225d5
test r9, r9
js 0x140022d0d
cmp r9, qword [rsp + 0x30]
jge 0x140022d0d
shr ebx, 0xc
mov rcx, r12
call fcn.140021bc3
and ebx, 0x30
mov rax, qword [rsp + 0x38]
mov dl, byte [rsi + rbx]
mov byte [rax + r13 + 8], dl
add r13, 1
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r13, r13
js 0x140022d84
cmp rdx, r13
jle 0x140022d84
mov rcx, r12
call fcn.140021bc3
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], 0x3d
add r13, 1
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r13, r13
js 0x140022d84
cmp r13, rdx
jge 0x140022d84
jmp 0x140022d91
cmp rbx, r14
jle 0x140022c68
mov rcx, r13
inc rcx
js 0x1400225d5
cmp rcx, r13
jb 0x1400225d5
test rcx, rcx
js 0x140022c93
cmp rcx, rbx
jge 0x140022c93
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022cab
cmp rdx, r9
jle 0x140022cab
movzx ebx, byte [rsi + r13]
movzx eax, byte [rsi + rcx]
mov rcx, r12
mov qword [rsp + 0x20], r9
lea rsi, [0x140049f20]
shl ebx, 0x10
shl eax, 8
or eax, ebx
mov ebx, eax
call fcn.140021bc3
mov eax, ebx
mov r9, qword [rsp + 0x20]
shr eax, 0x12
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov r13, r9
jo 0x1400225d5
test r9, r9
js 0x140022d0d
cmp r9, qword [rsp + 0x30]
jge 0x140022d0d
mov rcx, r12
call fcn.140021bc3
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], dl
add r13, 1
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r13, r13
js 0x140022d84
cmp r13, rdx
jge 0x140022d84
jmp 0x140022d4e
lea r12, [rsp + 0x30]
mov rdx, rax
mov r14, rbx
xor r13d, r13d
mov rcx, r12
call fcn.140004bf7
mov rax, rbx
cqo
idiv rdi
sub r14, rdx
mov qword [rsp + 0x20], rdx
seto r13b
jo 0x1400225d5
xor r9d, r9d
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
cmp r14, r13
jne 0x1400229df
cmp qword [rsp + 0x20], 1
je 0x140022b82
cmp qword [rsp + 0x20], 2
je 0x140022c63
test r9, r9
jns 0x140022db6
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r9
call fcn.140003d34
jmp 0x140022dc1
movabs r8, 0x7fffffffffffffff
xor edx, edx
jmp 0x1400229c7
cmp rbx, r13
jg 0x1400229ed
lea rdx, [rbx - 1]
jmp 0x140022d87
movzx edi, byte [rsi + r13]
mov rcx, r13
mov eax, edi
shl eax, 0x10
inc rcx
js 0x1400225d5
cmp rcx, r13
jb 0x1400225d5
test rcx, rcx
js 0x140022c93
cmp rcx, rbx
jge 0x140022c93
movzx edi, byte [rsi + rcx]
mov r10, rcx
shl edi, 8
or edi, eax
add r10, 1
jo 0x1400225d5
test r10, r10
js 0x140022a3e
cmp r10, rbx
jl 0x140022a4a
lea rdx, [rbx - 1]
mov rcx, r10
jmp 0x140022d8a
movzx eax, byte [rsi + r10]
mov rdx, qword [rsp + 0x30]
lea r13, [rcx + 2]
or edi, eax
test r9, r9
js 0x140022cab
cmp rdx, r9
jle 0x140022cab
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov eax, edi
mov r9, qword [rsp + 0x28]
shr eax, 0x12
mov dl, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov rcx, r9
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022b3f
cmp rdx, r9
jle 0x140022b48
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov eax, edi
mov r9, qword [rsp + 0x28]
shr eax, 0xc
and eax, 0x3f
mov dl, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov rcx, r9
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022b3f
cmp rdx, r9
jle 0x140022b48
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov eax, edi
mov r9, qword [rsp + 0x28]
shr eax, 6
and eax, 0x3f
mov dl, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov rcx, r9
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022b3f
cmp rdx, r9
jg 0x140022b50
jmp 0x140022b48
mov ecx, 1
shl rcx, 0x3f
dec rdx
jmp 0x140022d8a
and edi, 0x3f
mov rcx, r12
mov qword [rsp + 0x28], r9
call fcn.140021bc3
mov r9, qword [rsp + 0x28]
mov dl, byte [rbp + rdi]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
jno 0x140022992
jmp 0x1400225d5
cmp rbx, r14
jle 0x140022c68
mov rax, r14
inc rax
js 0x1400225d5
cmp rax, r14
jb 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022cab
cmp rdx, r9
jle 0x140022cab
movzx eax, byte [rsi + r14]
mov rcx, r12
mov qword [rsp + 0x20], r9
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
shl eax, 0x10
mov ebx, eax
call fcn.140021bc3
mov eax, ebx
mov r9, qword [rsp + 0x20]
shr eax, 0x12
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov r13, r9
jo 0x1400225d5
test r9, r9
js 0x140022d0d
cmp r9, qword [rsp + 0x30]
jge 0x140022d0d
mov rcx, r12
call fcn.140021bc3
mov eax, ebx
shr eax, 0xc
and eax, 0x30
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], dl
add r13, 1
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r13, r13
js 0x140022d84
cmp rdx, r13
jle 0x140022d84
mov rcx, r12
call fcn.140021bc3
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], 0x3d
jmp 0x140022d6b
cmp rbx, r14
jg 0x140022c74
lea rdx, [rbx - 1]
mov rcx, r14
jmp 0x140022d8a
mov rcx, r13
inc rcx
js 0x1400225d5
cmp rcx, r13
jb 0x1400225d5
test rcx, rcx
js 0x140022c93
cmp rbx, rcx
jg 0x140022c9c
lea rdx, [rbx - 1]
jmp 0x140022d8a
mov rdx, qword [rsp + 0x30]
test r9, r9
js 0x140022cab
cmp rdx, r9
jg 0x140022cb6
dec rdx
mov rcx, r9
jmp 0x140022d8a
movzx ebx, byte [rsi + r13]
movzx eax, byte [rsi + rcx]
mov rcx, r12
mov qword [rsp + 0x20], r9
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
shl ebx, 0x10
shl eax, 8
or eax, ebx
mov ebx, eax
call fcn.140021bc3
mov eax, ebx
mov r9, qword [rsp + 0x20]
shr eax, 0x12
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r9 + 8], dl
add r9, 1
mov r13, r9
jo 0x1400225d5
test r9, r9
js 0x140022d0d
cmp r9, qword [rsp + 0x30]
jl 0x140022d18
mov rax, qword [rsp + 0x30]
lea rdx, [rax - 1]
jmp 0x140022d87
mov rcx, r12
call fcn.140021bc3
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], dl
add r13, 1
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r13, r13
js 0x140022d84
cmp rdx, r13
jle 0x140022d84
mov rcx, r12
call fcn.140021bc3
mov eax, ebx
shr eax, 6
and eax, 0x3c
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], dl
add r13, 1
jo 0x1400225d5
mov rdx, qword [rsp + 0x30]
test r13, r13
js 0x140022d84
cmp rdx, r13
jg 0x140022d91
dec rdx
mov rcx, r13
call fcn.140004df8
jmp 0x140022dc1
mov rcx, r12
call fcn.140021bc3
mov rax, qword [rsp + 0x38]
mov r9, r13
add r9, 1
mov byte [rax + r13 + 8], 0x3d
jno 0x1400229af
jmp 0x1400225d5
mov rdx, r9
mov rcx, r12
call fcn.140004bf7
movups xmm0, xmmword [rsp + 0x30]
mov rax, r15
movups xmmword [r15], xmm0
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret