Function at 0x299ec5530
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, [0x299f2e080]
mov rsi, r8
test r9b, r9b
mov qword [rsp + 0xb0], rcx
mov r13, rdx
mov qword [rsp + 0x50], 0
lea r8, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
cmovne rax, r8
mov qword [rsp + 0x58], 0
imul rcx, rsi, 4
mov r15, rax
jo 0x299ec5800
movabs r12, 0x5555555555555556
mov rax, rcx
sar rcx, 0x3f
imul r12
sub rdx, rcx
add rdx, 6
mov rcx, rdx
js 0x299ec5860
lea rax, [rsp + 0x50]
mov rcx, rax
mov qword [rsp + 0x20], rax
call fcn.299e899d0
mov rax, rsi
mov r11, rsi
imul r12
mov rax, rsi
sar rax, 0x3f
mov r12, rdx
sub r12, rax
lea rax, [r12 + r12*2]
mov r12, rsi
sub r12, rax
sub r11, r12
seto dil
mov rbp, r11
movzx edi, dil
jo 0x299ec5800
test r11, r11
je 0x299ec5a20
test rsi, rsi
jle 0x299ec58c0
movzx eax, byte [r13]
shl eax, 0x10
cmp rsi, 1
je 0x299ec58d1
movzx ebx, byte [r13 + 1]
shl ebx, 8
or ebx, eax
cmp rsi, 2
je 0x299ec5b08
xor eax, eax
mov rbp, r15
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x28], r11
mov r15, rax
movzx eax, byte [r13 + rdi + 2]
mov r14, rdi
mov qword [rsp + 0x30], rdi
add rdi, 3
mov rdx, qword [rsp + 0x50]
or ebx, eax
cmp rdx, r15
jle 0x299ec5890
mov rcx, qword [rsp + 0x58]
lea r12, [r15 + 1]
mov r9d, ebx
shr r9d, 0x12
add r9, rbp
test rcx, rcx
je 0x299ec5830
test byte [rcx + 7], 0x40
je 0x299ec5830
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x38], r9
call fcn.299e8bff0
mov r9, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
movzx ecx, byte [r9]
mov byte [rdx + r15 + 8], cl
mov rdx, qword [rsp + 0x50]
cmp rdx, r12
jle 0x299ec5878
mov rcx, qword [rsp + 0x58]
lea r9, [r15 + 2]
mov r10d, ebx
shr r10d, 0xc
and r10d, 0x3f
add r10, rbp
test rcx, rcx
je 0x299ec5840
test byte [rcx + 7], 0x40
je 0x299ec5840
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x40], r9
mov qword [rsp + 0x38], r10
call fcn.299e8bff0
mov r10, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
mov r9, qword [rsp + 0x40]
movzx ecx, byte [r10]
mov byte [rdx + r12 + 8], cl
mov rdx, qword [rsp + 0x50]
cmp r9, rdx
jge 0x299ec58a8
mov rcx, qword [rsp + 0x58]
lea r12, [r15 + 3]
mov r10d, ebx
shr r10d, 6
and r10d, 0x3f
add r10, rbp
test rcx, rcx
je 0x299ec5850
test byte [rcx + 7], 0x40
je 0x299ec5850
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x40], r9
mov qword [rsp + 0x38], r10
call fcn.299e8bff0
mov r10, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
mov r9, qword [rsp + 0x40]
movzx ecx, byte [r10]
mov byte [rdx + r9 + 8], cl
mov rdx, qword [rsp + 0x50]
cmp r12, rdx
jge 0x299ec5878
mov rdx, qword [rsp + 0x58]
test rdx, rdx
je 0x299ec5795
test byte [rdx + 7], 0x40
je 0x299ec5795
mov rcx, qword [rsp + 0x20]
call fcn.299e8bff0
mov rdx, qword [rsp + 0x58]
and ebx, 0x3f
add r15, 4
cmp qword [rsp + 0x28], rdi
movzx ecx, byte [rbp + rbx]
mov byte [rdx + r12 + 8], cl
je 0x299ec58e8
cmp rsi, rdi
jle 0x299ec58c0
movzx eax, byte [r13 + rdi]
lea rcx, [r14 + 4]
shl eax, 0x10
cmp rsi, rcx
jle 0x299ec58d6
movzx ebx, byte [r13 + rdi + 1]
add r14, 5
shl ebx, 8
or ebx, eax
cmp rsi, r14
jg 0x299ec5636
lea rdx, [rsi - 1]
mov rcx, r14
call fcn.299e8b510
jmp 0x299ec5805
call fcn.299e88960
mov rax, qword [rsp + 0xb0]
movdqa 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 + r15 + 8], r9b
jmp 0x299ec56a5
movzx r10d, byte [r10]
mov byte [rcx + r12 + 8], r10b
jmp 0x299ec5709
movzx r10d, byte [r10]
mov byte [rcx + r9 + 8], r10b
jmp 0x299ec576d
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.299e88fc0
jmp 0x299ec5805
sub rdx, 1
mov rcx, r12
call fcn.299e8b510
jmp 0x299ec5805
sub rdx, 1
mov rcx, r15
call fcn.299e8b510
jmp 0x299ec5805
sub rdx, 1
mov rcx, r9
call fcn.299e8b510
jmp 0x299ec5805
lea rdx, [rsi - 1]
mov rcx, rdi
call fcn.299e8b510
jmp 0x299ec5805
mov ecx, 1
lea rdx, [rsi - 1]
call fcn.299e8b510
jmp 0x299ec5805
mov r12, qword [rsp + 0x48]
mov rax, r15
mov r15, rbp
mov r11, qword [rsp + 0x28]
mov rbp, rax
cmp r12, 1
je 0x299ec591d
cmp r12, 2
je 0x299ec5b24
mov rcx, qword [rsp + 0x20]
mov rdx, rbp
call fcn.299e899d0
jmp 0x299ec5805
cmp rsi, r11
jle 0x299ec5b49
add r13, r11
mov rax, qword [rsp + 0x50]
movzx edx, byte [r13]
cmp rax, rbp
jle 0x299ec5b13
mov rcx, qword [rsp + 0x58]
mov esi, edx
shr edx, 2
mov ebx, edx
shl esi, 0x10
add rbx, r15
test rcx, rcx
je 0x299ec5b61
test byte [rcx + 7], 0x40
je 0x299ec5b61
mov rcx, qword [rsp + 0x20]
call fcn.299e8bff0
mov rax, qword [rsp + 0x58]
movzx edx, byte [rbx]
mov byte [rax + rbp + 8], dl
mov rax, qword [rsp + 0x50]
lea rdi, [rbp + 1]
cmp rdi, rax
jge 0x299ec5b7e
mov rdx, qword [rsp + 0x58]
shr esi, 0xc
mov ebx, esi
and ebx, 0x30
add rbx, r15
test rdx, rdx
je 0x299ec5ba0
test byte [rdx + 7], 0x40
je 0x299ec5ba0
mov rcx, qword [rsp + 0x20]
call fcn.299e8bff0
mov rax, qword [rsp + 0x58]
movzx edx, byte [rbx]
mov byte [rax + rdi + 8], dl
mov rax, qword [rsp + 0x50]
lea rbx, [rbp + 2]
cmp rbx, rax
jge 0x299ec5af2
mov rcx, qword [rsp + 0x20]
call fcn.299ec4e30
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
mov rax, qword [rsp + 0x50]
lea rbx, [rbp + 3]
cmp rax, rbx
jle 0x299ec5af2
mov rcx, qword [rsp + 0x20]
add rbp, 4
call fcn.299ec4e30
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
jmp 0x299ec590b
cmp r12, 1
je 0x299ec5929
cmp r12, 2
jne 0x299ec5b5a
movzx eax, byte [r13]
xor ebp, ebp
mov ecx, 1
shl eax, 0x10
movzx edx, byte [r13 + rcx]
mov rcx, qword [rsp + 0x50]
cmp rcx, rbp
jle 0x299ec5b6d
mov rcx, qword [rsp + 0x20]
lea rsi, [rbp + 1]
movzx ebx, dl
shl ebx, 8
or ebx, eax
call fcn.299ec4e30
mov eax, ebx
shr eax, 0x12
movzx edx, byte [r15 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rbp + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rsi
jle 0x299ec5b8f
mov rcx, qword [rsp + 0x20]
call fcn.299ec4e30
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [r15 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rsi + 8], dl
mov rax, qword [rsp + 0x50]
lea rsi, [rbp + 2]
cmp rax, rsi
jle 0x299ec5b8f
mov rcx, qword [rsp + 0x20]
call fcn.299ec4e30
mov eax, ebx
lea rbx, [rbp + 3]
shr eax, 6
and eax, 0x3c
movzx edx, byte [r15 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rsi + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rbx
jg 0x299ec59fa
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.299e8b510
jmp 0x299ec5805
mov r14d, 2
jmp 0x299ec57e8
lea rdx, [rax - 1]
mov rcx, rbp
call fcn.299e8b510
jmp 0x299ec5805
cmp rsi, r11
jle 0x299ec5b49
mov rcx, qword [rsp + 0x30]
movzx eax, byte [r13 + r11]
add rcx, 4
shl eax, 0x10
cmp rsi, rcx
jg 0x299ec5a43
jmp 0x299ec58d6
lea rdx, [rsi - 1]
mov rcx, r11
call fcn.299e8b510
jmp 0x299ec5805
xor ebp, ebp
jmp 0x299ec590b
movzx edx, byte [rbx]
mov byte [rcx + rbp + 8], dl
jmp 0x299ec597c
lea rdx, [rcx - 1]
mov rcx, rbp
call fcn.299e8b510
jmp 0x299ec5805
lea rdx, [rax - 1]
mov rcx, rdi
call fcn.299e8b510
jmp 0x299ec5805
lea rdx, [rax - 1]
mov rcx, rsi
call fcn.299e8b510
jmp 0x299ec5805
movzx ecx, byte [rbx]
mov byte [rdx + rdi + 8], cl
jmp 0x299ec59c7