Function at 0x2d9381640
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
lea rax, [0x2d93e1b80]
mov rsi, qword [rdx]
mov r15, qword [rdx + 8]
test r8b, r8b
lea r8, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0x50], 0
cmovne rax, r8
imul rcx, rsi, 4
mov qword [rsp + 0x58], 0
mov r13, rax
jo 0x2d9381910
movabs rbp, 0x5555555555555556
mov rax, rcx
sar rcx, 0x3f
imul rbp
sub rdx, rcx
add rdx, 6
mov rcx, rdx
js 0x2d9381970
lea rax, [rsp + 0x50]
mov rcx, rax
mov qword [rsp + 0x20], rax
call fcn.2d93475d0
mov rax, rsi
mov r11, rsi
imul rbp
mov rax, rsi
sar rax, 0x3f
mov rbp, rdx
sub rbp, rax
lea rax, [rbp + rbp*2]
mov rbp, rsi
sub rbp, rax
sub r11, rbp
seto dil
mov r12, r11
movzx edi, dil
jo 0x2d9381910
test r11, r11
je 0x2d9381a25
test rsi, rsi
jle 0x2d93819a0
movzx eax, byte [r15 + 8]
shl eax, 0x10
cmp rsi, 1
je 0x2d93819b1
movzx ebx, byte [r15 + 9]
shl ebx, 8
or ebx, eax
cmp rsi, 2
je 0x2d9381c08
mov qword [rsp + 0x28], r11
xor r12d, r12d
mov qword [rsp + 0x48], rbp
mov rbp, r13
movzx eax, byte [r15 + rdi + 0xa]
mov rdx, qword [rsp + 0x50]
mov qword [rsp + 0x30], rdi
mov r14, rdi
add rdi, 3
or ebx, eax
cmp rdx, r12
jle 0x2d93819c8
mov r9d, ebx
mov rcx, qword [rsp + 0x58]
lea r13, [r12 + 1]
shr r9d, 0x12
add r9, rbp
test rcx, rcx
je 0x2d9381940
test byte [rcx + 7], 0x40
je 0x2d9381940
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x38], r9
call fcn.2d93476e0
mov r9, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
movzx ecx, byte [r9]
mov byte [rdx + r12 + 8], cl
mov rdx, qword [rsp + 0x50]
cmp r13, rdx
jge 0x2d9381988
mov r9d, ebx
mov rcx, qword [rsp + 0x58]
lea r10, [r12 + 2]
shr r9d, 0xc
and r9d, 0x3f
add r9, rbp
test rcx, rcx
je 0x2d9381950
test byte [rcx + 7], 0x40
je 0x2d9381950
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r9
call fcn.2d93476e0
mov r9, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
mov r10, qword [rsp + 0x40]
movzx ecx, byte [r9]
mov byte [rdx + r13 + 8], cl
mov rdx, qword [rsp + 0x50]
cmp r10, rdx
jge 0x2d93819e0
mov r9d, ebx
mov rcx, qword [rsp + 0x58]
lea r13, [r12 + 3]
shr r9d, 6
and r9d, 0x3f
add r9, rbp
test rcx, rcx
je 0x2d9381960
test byte [rcx + 7], 0x40
je 0x2d9381960
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r9
call fcn.2d93476e0
mov r9, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
mov r10, qword [rsp + 0x40]
movzx ecx, byte [r9]
mov byte [rdx + r10 + 8], cl
mov rdx, qword [rsp + 0x50]
cmp r13, rdx
jge 0x2d9381988
mov rdx, qword [rsp + 0x58]
test rdx, rdx
je 0x2d93818a8
test byte [rdx + 7], 0x40
je 0x2d93818a8
mov rcx, qword [rsp + 0x20]
call fcn.2d93476e0
mov rdx, qword [rsp + 0x58]
and ebx, 0x3f
add r12, 4
movzx ecx, byte [rbp + rbx]
mov byte [rdx + r13 + 8], cl
cmp qword [rsp + 0x28], rdi
je 0x2d93819f8
cmp rsi, rdi
jle 0x2d93819a0
movzx eax, byte [r15 + rdi + 8]
lea rcx, [r14 + 4]
shl eax, 0x10
cmp rcx, rsi
jge 0x2d93819b6
movzx ebx, byte [r15 + rdi + 9]
add r14, 5
shl ebx, 8
or ebx, eax
cmp rsi, r14
jg 0x2d9381746
lea rdx, [rsi - 1]
mov rcx, r14
call fcn.2d934b440
jmp 0x2d9381915
call fcn.2d9346660
mov rax, qword [rsp + 0xb0]
movdqu xmm0, xmmword [rsp + 0x50]
movups xmmword [rax], xmm0
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx r9d, byte [r9]
mov byte [rcx + r12 + 8], r9b
jmp 0x2d93817b6
movzx r9d, byte [r9]
mov byte [rcx + r13 + 8], r9b
jmp 0x2d938181b
movzx r9d, byte [r9]
mov byte [rcx + r10 + 8], r9b
jmp 0x2d9381880
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.2d9346cf0
jmp 0x2d9381915
sub rdx, 1
mov rcx, r13
call fcn.2d934b440
jmp 0x2d9381915
lea rdx, [rsi - 1]
mov rcx, rdi
call fcn.2d934b440
jmp 0x2d9381915
mov ecx, 1
lea rdx, [rsi - 1]
call fcn.2d934b440
jmp 0x2d9381915
sub rdx, 1
mov rcx, r12
call fcn.2d934b440
jmp 0x2d9381915
sub rdx, 1
mov rcx, r10
call fcn.2d934b440
jmp 0x2d9381915
mov r13, rbp
mov rbp, qword [rsp + 0x48]
mov r11, qword [rsp + 0x28]
cmp rbp, 1
jne 0x2d9381b1a
cmp rsi, r11
jg 0x2d9381a32
lea rdx, [rsi - 1]
mov rcx, r11
call fcn.2d934b440
jmp 0x2d9381915
cmp rbp, 1
jne 0x2d9381c13
xor r12d, r12d
mov rax, qword [rsp + 0x50]
movzx edx, byte [r11 + r15 + 8]
cmp rax, r12
jle 0x2d9381c21
mov esi, edx
mov rcx, qword [rsp + 0x58]
shr edx, 2
mov ebx, edx
shl esi, 0x10
add rbx, r13
test rcx, rcx
je 0x2d9381c44
test byte [rcx + 7], 0x40
je 0x2d9381c44
mov rcx, qword [rsp + 0x20]
call fcn.2d93476e0
mov rax, qword [rsp + 0x58]
movzx edx, byte [rbx]
mov byte [rax + r12 + 8], dl
mov rax, qword [rsp + 0x50]
lea rbx, [r12 + 1]
cmp rax, rbx
jle 0x2d9381bf7
mov rcx, qword [rsp + 0x20]
call fcn.2d93815a0
mov eax, esi
shr eax, 0xc
and eax, 0x30
movzx edx, byte [r13 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], dl
mov rax, qword [rsp + 0x50]
lea rbx, [r12 + 2]
cmp rbx, rax
jge 0x2d9381bf7
mov rcx, qword [rsp + 0x20]
call fcn.2d93815a0
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
mov rax, qword [rsp + 0x50]
lea rbx, [r12 + 3]
cmp rax, rbx
jle 0x2d9381bf7
mov rcx, qword [rsp + 0x20]
add r12, 4
call fcn.2d93815a0
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
mov rcx, qword [rsp + 0x20]
mov rdx, r12
call fcn.2d93475d0
jmp 0x2d9381915
cmp rbp, 2
jne 0x2d9381b08
cmp rsi, r11
jle 0x2d9381a14
mov rcx, qword [rsp + 0x30]
movzx ebx, byte [r11 + r15 + 8]
add rcx, 4
cmp rcx, rsi
jge 0x2d93819b6
shl ebx, 0x10
mov rdx, qword [rsp + 0x50]
movzx eax, byte [rcx + r15 + 8]
cmp rdx, r12
jle 0x2d93819c8
shl eax, 8
mov rcx, qword [rsp + 0x20]
lea rsi, [r12 + 1]
or ebx, eax
call fcn.2d93815a0
mov eax, ebx
shr eax, 0x12
movzx edx, byte [r13 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + r12 + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rsi
jle 0x2d9381c51
mov rcx, qword [rsp + 0x20]
call fcn.2d93815a0
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [r13 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rsi + 8], dl
mov rax, qword [rsp + 0x50]
lea rsi, [r12 + 2]
cmp rax, rsi
jle 0x2d9381c51
mov rcx, qword [rsp + 0x20]
call fcn.2d93815a0
mov eax, ebx
lea rbx, [r12 + 3]
shr eax, 6
and eax, 0x3c
movzx edx, byte [r13 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rsi + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rbx
jg 0x2d9381af0
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.2d934b440
jmp 0x2d9381915
mov r14d, 2
jmp 0x2d93818fb
cmp rbp, 2
je 0x2d9381c32
xor r12d, r12d
jmp 0x2d9381b08
lea rdx, [rax - 1]
mov rcx, r12
call fcn.2d934b440
jmp 0x2d9381915
movzx ebx, byte [r15 + 8]
mov ecx, 1
shl ebx, 0x10
jmp 0x2d9381b44
movzx edx, byte [rbx]
mov byte [rcx + r12 + 8], dl
jmp 0x2d9381a87
lea rdx, [rax - 1]
mov rcx, rsi
call fcn.2d934b440
jmp 0x2d9381915