Function at 0x31eee939c
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 0x31eee93f7
imul rax, r8, 4
jo 0x31eee9466
cqo
mov edi, 3
idiv rdi
add rax, 6
mov rcx, rax
jns 0x31eee96f9
jmp 0x31eee9771
imul rax, r8, 4
jo 0x31eee9466
cqo
mov edi, 3
idiv rdi
add rax, 6
mov rcx, rax
js 0x31eee9771
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 0x31eee9466
xor r12d, r12d
lea r15, [0x31ef37300]
cmp r13, rbp
je 0x31eee9470
cmp rbx, rbp
jle 0x31eee9784
movzx eax, byte [rsi + rbp]
mov rcx, rbp
shl eax, 0x10
inc rcx
jns 0x31eee9481
call fcn.31eec4641
jmp 0x31eee9afd
cmp qword [rsp + 0x28], 1
jne 0x31eee95bb
jmp 0x31eee95cc
cmp rcx, rbp
jb 0x31eee9466
test rcx, rcx
js 0x31eee97c6
cmp rcx, rbx
jge 0x31eee97c6
movzx edx, byte [rsi + rcx]
lea rcx, [rbp + 2]
shl edx, 8
cmp rcx, rbx
jge 0x31eee97c6
movzx edi, byte [rsi + rbp + 2]
add rbp, 3
or edi, edx
mov rdx, qword [rsp + 0x30]
or edi, eax
test r12, r12
js 0x31eee9ac3
cmp r12, rdx
jge 0x31eee9ac3
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee98a0
cmp r12, rdx
jge 0x31eee98a9
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee98a0
cmp r12, rdx
jge 0x31eee98a9
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee98a0
cmp r12, rdx
jge 0x31eee98a9
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 0x31eee9449
jmp 0x31eee9466
cmp qword [rsp + 0x28], 2
jne 0x31eee974f
jmp 0x31eee9689
cmp rbx, r13
jle 0x31eee99b2
mov rax, r13
movzx ebx, byte [rsi + r13]
inc rax
js 0x31eee9466
cmp rax, r13
jb 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jle 0x31eee9ac3
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 0x31eee9466
test r12, r12
js 0x31eee9a4c
cmp r12, qword [rsp + 0x30]
jge 0x31eee9a4c
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp r12, rdx
jge 0x31eee9ac3
jmp 0x31eee9995
cmp rbx, r13
jle 0x31eee99b2
mov r9, r13
movzx ecx, byte [rsi + r13]
inc r9
js 0x31eee9466
cmp r9, r13
jb 0x31eee9466
test r9, r9
js 0x31eee99e2
cmp r9, rbx
jge 0x31eee99e2
movzx eax, byte [rsi + r13 + 1]
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jle 0x31eee9ac3
shl ecx, 0x10
shl eax, 8
lea rsi, [0x31ef37300]
or eax, ecx
mov rcx, r14
mov ebx, eax
call fcn.31eee8ba3
jmp 0x31eee9a24
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 0x31eee9466
xor r12d, r12d
lea r15, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
cmp r13, rbp
jne 0x31eee977f
cmp qword [rsp + 0x28], 1
je 0x31eee98d9
cmp qword [rsp + 0x28], 2
je 0x31eee99ad
test r12, r12
jns 0x31eee9af2
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r12
call fcn.31eec4cef
jmp 0x31eee9afd
movabs r8, 0x7fffffffffffffff
xor edx, edx
jmp 0x31eee9767
cmp rbx, rbp
jg 0x31eee9790
lea rdx, [rbx - 1]
mov rcx, rbp
jmp 0x31eee9ac9
movzx edx, byte [rsi + rbp]
mov rcx, rbp
shl edx, 0x10
inc rcx
js 0x31eee9466
cmp rcx, rbp
jb 0x31eee9466
test rcx, rcx
js 0x31eee97c6
cmp rcx, rbx
jge 0x31eee97c6
movzx eax, byte [rsi + rcx]
lea rcx, [rbp + 2]
shl eax, 8
cmp rcx, rbx
jl 0x31eee97cf
lea rdx, [rbx - 1]
jmp 0x31eee9ac9
movzx edi, byte [rsi + rbp + 2]
add rbp, 3
or edi, eax
or edi, edx
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jle 0x31eee9ac3
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee98a0
cmp rdx, r12
jle 0x31eee98a9
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee98a0
cmp r12, rdx
jge 0x31eee98a9
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee98a0
cmp r12, rdx
jl 0x31eee98b1
jmp 0x31eee98a9
mov ecx, 1
shl rcx, 0x3f
dec rdx
jmp 0x31eee9ac9
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 0x31eee9732
jmp 0x31eee9466
cmp rbx, r13
jle 0x31eee99b2
mov rdx, r13
movzx eax, byte [rsi + r13]
inc rdx
js 0x31eee9466
cmp rdx, r13
jb 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jle 0x31eee9ac3
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 0x31eee9466
test r12, r12
js 0x31eee9a4c
cmp r12, qword [rsp + 0x30]
jge 0x31eee9a4c
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jle 0x31eee9ac3
mov rcx, r14
call fcn.31eee8ba3
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], 0x3d
jmp 0x31eee9aaa
cmp rbx, r13
jg 0x31eee99be
lea rdx, [rbx - 1]
mov rcx, r13
jmp 0x31eee9ac9
mov r9, r13
movzx ecx, byte [rsi + r13]
inc r9
js 0x31eee9466
cmp r9, r13
jb 0x31eee9466
test r9, r9
js 0x31eee99e2
cmp rbx, r9
jg 0x31eee99ee
lea rdx, [rbx - 1]
mov rcx, r9
jmp 0x31eee9ac9
movzx eax, byte [rsi + r13 + 1]
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jle 0x31eee9ac3
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 0x31eee9466
test r12, r12
js 0x31eee9a4c
cmp r12, qword [rsp + 0x30]
jl 0x31eee9a57
mov rax, qword [rsp + 0x30]
lea rdx, [rax - 1]
jmp 0x31eee9ac6
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jle 0x31eee9ac3
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 0x31eee9466
mov rdx, qword [rsp + 0x30]
test r12, r12
js 0x31eee9ac3
cmp rdx, r12
jg 0x31eee9ad0
dec rdx
mov rcx, r12
call fcn.31eec5dc5
jmp 0x31eee9afd
mov rcx, r14
call fcn.31eee8ba3
mov rax, qword [rsp + 0x38]
mov byte [rax + r12 + 8], 0x3d
add r12, 1
jno 0x31eee974f
jmp 0x31eee9466
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