Function at 0x31eee8c1a
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 + 0x90], rcx
mov rsi, rdx
mov rbx, r8
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x38], 0
test r9b, r9b
jne 0x31eee8c75
imul rax, r8, 4
jo 0x31eee8ce4
cqo
mov edi, 3
idiv rdi
add rax, 6
mov rcx, rax
jns 0x31eee8f77
jmp 0x31eee8fef
imul rax, r8, 4
jo 0x31eee8ce4
cqo
mov edi, 3
idiv rdi
add rax, 6
mov rcx, rax
js 0x31eee8fef
lea r14, [rsp + 0x30]
mov rdx, rax
mov r13, rbx
xor ebp, ebp
mov rcx, r14
call fcn.31eec5bc4
mov rax, rbx
cqo
idiv rdi
sub r13, rdx
mov qword [rsp + 0x28], rdx
seto bpl
jo 0x31eee8ce4
xor r12d, r12d
lea r15, [0x31ef37300]
cmp r13, rbp
je 0x31eee8cee
cmp rbx, rbp
jle 0x31eee9002
movzx eax, byte [rsi + rbp]
mov rcx, rbp
shl eax, 0x10
inc rcx
jns 0x31eee8cff
call fcn.31eec4641
jmp 0x31eee937b
cmp qword [rsp + 0x28], 1
jne 0x31eee8e39
jmp 0x31eee8e4a
cmp rcx, rbp
jb 0x31eee8ce4
test rcx, rcx
js 0x31eee9044
cmp rcx, rbx
jge 0x31eee9044
movzx edx, byte [rsi + rcx]
lea rcx, [rbp + 2]
shl edx, 8
cmp rcx, rbx
jge 0x31eee9044
movzx edi, byte [rsi + rbp + 2]
add rbp, 3
or edi, edx
mov rdx, qword [rsp + 0x30]
or edi, eax
test r12, r12
js 0x31eee9341
cmp r12, rdx
jge 0x31eee9341
mov rcx, r14
call fcn.31eee8ba3
mov eax, edi
shr eax, 0x12
mov dl, byte [r15 + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
mov rcx, r12
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee911e
cmp r12, rdx
jge 0x31eee9127
mov rcx, r14
call fcn.31eee8ba3
mov eax, edi
shr eax, 0xc
and eax, 0x3f
mov dl, byte [r15 + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
mov rcx, r12
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee911e
cmp r12, rdx
jge 0x31eee9127
mov rcx, r14
call fcn.31eee8ba3
mov eax, edi
shr eax, 6
and eax, 0x3f
mov dl, byte [r15 + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
mov rcx, r12
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee911e
cmp r12, rdx
jge 0x31eee9127
and edi, 0x3f
mov rcx, r14
call fcn.31eee8ba3
mov dl, byte [r15 + rdi]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
jno 0x31eee8cc7
jmp 0x31eee8ce4
cmp qword [rsp + 0x28], 2
jne 0x31eee8fcd
jmp 0x31eee8f07
cmp rbx, r13
jle 0x31eee9230
mov rax, r13
movzx ebx, byte [rsi + r13]
inc rax
js 0x31eee8ce4
cmp rax, r13
jb 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jle 0x31eee9341
shl ebx, 0x10
mov rcx, r14
lea rsi, [0x31ef37300]
call fcn.31eee8ba3
mov eax, ebx
shr eax, 0x12
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
jo 0x31eee8ce4
test r12, r12
js 0x31eee92ca
cmp r12, qword [rsp + 0x30]
jge 0x31eee92ca
shr ebx, 0xc
mov rcx, r14
call fcn.31eee8ba3
and ebx, 0x30
mov rax, qword [rsp + 0x38]
mov dl, byte [rsi + rbx]
mov byte [rax + r12 + 8], dl
add r12, 1
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp r12, rdx
jge 0x31eee9341
jmp 0x31eee9213
cmp rbx, r13
jle 0x31eee9230
mov r9, r13
movzx ecx, byte [rsi + r13]
inc r9
js 0x31eee8ce4
cmp r9, r13
jb 0x31eee8ce4
test r9, r9
js 0x31eee9260
cmp r9, rbx
jge 0x31eee9260
movzx eax, byte [rsi + r13 + 1]
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jle 0x31eee9341
shl ecx, 0x10
shl eax, 8
lea rsi, [0x31ef37300]
or eax, ecx
mov rcx, r14
mov ebx, eax
call fcn.31eee8ba3
jmp 0x31eee92a2
lea r14, [rsp + 0x30]
mov rdx, rax
mov r13, rbx
xor ebp, ebp
mov rcx, r14
call fcn.31eec5bc4
mov rax, rbx
cqo
idiv rdi
sub r13, rdx
mov qword [rsp + 0x28], rdx
seto bpl
jo 0x31eee8ce4
xor r12d, r12d
lea r15, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
cmp r13, rbp
jne 0x31eee8ffd
cmp qword [rsp + 0x28], 1
je 0x31eee9157
cmp qword [rsp + 0x28], 2
je 0x31eee922b
test r12, r12
jns 0x31eee9370
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r12
call fcn.31eec4cef
jmp 0x31eee937b
movabs r8, 0x7fffffffffffffff
xor edx, edx
jmp 0x31eee8fe5
cmp rbx, rbp
jg 0x31eee900e
lea rdx, [rbx - 1]
mov rcx, rbp
jmp 0x31eee9347
movzx edx, byte [rsi + rbp]
mov rcx, rbp
shl edx, 0x10
inc rcx
js 0x31eee8ce4
cmp rcx, rbp
jb 0x31eee8ce4
test rcx, rcx
js 0x31eee9044
cmp rcx, rbx
jge 0x31eee9044
movzx eax, byte [rsi + rcx]
lea rcx, [rbp + 2]
shl eax, 8
cmp rcx, rbx
jl 0x31eee904d
lea rdx, [rbx - 1]
jmp 0x31eee9347
movzx edi, byte [rsi + rbp + 2]
add rbp, 3
or edi, eax
or edi, edx
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jle 0x31eee9341
mov rcx, r14
call fcn.31eee8ba3
mov eax, edi
shr eax, 0x12
mov dl, byte [r15 + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
mov rcx, r12
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee911e
cmp rdx, r12
jle 0x31eee9127
mov rcx, r14
call fcn.31eee8ba3
mov eax, edi
shr eax, 0xc
and eax, 0x3f
mov dl, byte [r15 + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
mov rcx, r12
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee911e
cmp r12, rdx
jge 0x31eee9127
mov rcx, r14
call fcn.31eee8ba3
mov eax, edi
shr eax, 6
and eax, 0x3f
mov dl, byte [r15 + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
mov rcx, r12
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee911e
cmp r12, rdx
jl 0x31eee912f
jmp 0x31eee9127
mov ecx, 1
shl rcx, 0x3f
dec rdx
jmp 0x31eee9347
and edi, 0x3f
mov rcx, r14
call fcn.31eee8ba3
mov dl, byte [r15 + rdi]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
jno 0x31eee8fb0
jmp 0x31eee8ce4
cmp rbx, r13
jle 0x31eee9230
mov rdx, r13
movzx eax, byte [rsi + r13]
inc rdx
js 0x31eee8ce4
cmp rdx, r13
jb 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jle 0x31eee9341
shl eax, 0x10
mov rcx, r14
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
mov ebx, eax
call fcn.31eee8ba3
mov edx, ebx
mov rax, qword [rsp + 0x38]
shr edx, 0x12
mov dl, byte [rsi + rdx]
mov byte [rax + r12 + 8], dl
add r12, 1
jo 0x31eee8ce4
test r12, r12
js 0x31eee92ca
cmp r12, qword [rsp + 0x30]
jge 0x31eee92ca
mov rcx, r14
call fcn.31eee8ba3
mov eax, ebx
shr eax, 0xc
and eax, 0x30
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jle 0x31eee9341
mov rcx, r14
call fcn.31eee8ba3
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], 0x3d
jmp 0x31eee9328
cmp rbx, r13
jg 0x31eee923c
lea rdx, [rbx - 1]
mov rcx, r13
jmp 0x31eee9347
mov r9, r13
movzx ecx, byte [rsi + r13]
inc r9
js 0x31eee8ce4
cmp r9, r13
jb 0x31eee8ce4
test r9, r9
js 0x31eee9260
cmp rbx, r9
jg 0x31eee926c
lea rdx, [rbx - 1]
mov rcx, r9
jmp 0x31eee9347
movzx eax, byte [rsi + r13 + 1]
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jle 0x31eee9341
shl ecx, 0x10
shl eax, 8
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
or eax, ecx
mov rcx, r14
mov ebx, eax
call fcn.31eee8ba3
mov eax, ebx
shr eax, 0x12
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
jo 0x31eee8ce4
test r12, r12
js 0x31eee92ca
cmp r12, qword [rsp + 0x30]
jl 0x31eee92d5
mov rax, qword [rsp + 0x30]
lea rdx, [rax - 1]
jmp 0x31eee9344
mov rcx, r14
call fcn.31eee8ba3
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jle 0x31eee9341
mov rcx, r14
call fcn.31eee8ba3
mov eax, ebx
shr eax, 6
and eax, 0x3c
mov dl, byte [rsi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], dl
add r12, 1
jo 0x31eee8ce4
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9341
cmp rdx, r12
jg 0x31eee934e
dec rdx
mov rcx, r12
call fcn.31eec5dc5
jmp 0x31eee937b
mov rcx, r14
call fcn.31eee8ba3
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], 0x3d
add r12, 1
jno 0x31eee8fcd
jmp 0x31eee8ce4
mov rdx, r12
mov rcx, r14
call fcn.31eec5bc4
mov rax, qword [rsp + 0x90]
movaps xmm0, xmmword [rsp + 0x30]
movups xmmword [rax], xmm0
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret