Function at 0x140154ad0
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
xor ebp, ebp
mov qword [rsp + 0x90], r8
mov r8d, dword [rcx]
mov r13, rcx
lea r14, [rcx + 8]
mov qword [rsp + 0x88], rdx
test r8d, r8d
jle 0x140154b10
movsxd rax, r8d
cmp byte [r14 + rax - 1], 0x3d
je 0x140154e08
mov eax, dword [rsp + 0xa0]
xor r12d, r12d
test eax, eax
je 0x140154d89
jle 0x140154eb0
mov eax, dword [rsp + 0xa0]
lea r11, [0x1404c9040]
mov dword [rsp + 0xa0], 0
sub eax, 1
lea rax, [r9 + rax + 1]
mov qword [rsp + 0x20], rax
jmp 0x140154b7c
test ebp, ebp
je 0x140154bb4
or eax, 0x13
cmp al, 0xf3
jne 0x140154d83
cmp ecx, 0xf2
je 0x140154e40
cmp r8d, 0x40
je 0x140154be2
cmp r9, qword [rsp + 0x20]
je 0x140154de0
movzx eax, byte [r9]
add r9, 1
mov edx, eax
test al, al
js 0x140154d83
cdqe
movzx ecx, byte [r11 + rax]
mov eax, ecx
cmp ecx, 0xff
je 0x140154d83
cmp dl, 0x3d
jne 0x140154b50
add ebp, 1
cmp ebp, 3
je 0x140154d83
cmp ecx, 0xf2
je 0x140154e40
or eax, 0x13
cmp al, 0xf3
je 0x140154b6b
cmp r8d, 0x3f
jg 0x140154d83
movsxd rax, r8d
add r8d, 1
mov byte [r14 + rax], dl
cmp r8d, 0x40
jne 0x140154b71
movzx eax, byte [r13 + 8]
mov rdx, r14
test al, al
js 0x140154c16
cdqe
cmp byte [r11 + rax], 0xe0
jne 0x140154c10
test r8d, r8d
je 0x140154db8
movzx eax, byte [rdx + 1]
add rdx, 1
sub r8d, 1
test al, al
jns 0x140154bee
cmp r8d, 3
jle 0x140154c47
movsxd rax, r8d
lea rcx, [rdx + rax - 1]
jmp 0x140154c40
cdqe
movzx eax, byte [r11 + rax]
or eax, 0x13
cmp al, 0xf3
jne 0x140154c47
sub r8d, 1
sub rcx, 1
cmp r8d, 3
je 0x140154d80
movzx eax, byte [rcx]
test al, al
jns 0x140154c20
test r8b, 3
jne 0x140154d80
test r8d, r8d
jle 0x140154db8
mov qword [rsp + 0x28], r14
mov rbx, qword [rsp + 0x88]
xor r12d, r12d
xor edi, edi
jmp 0x140154d1a
cdqe
movzx ecx, byte [rdx + 1]
movzx eax, byte [r11 + rax]
mov r15d, eax
test cl, cl
js 0x140154d40
movsxd rcx, ecx
movzx r10d, byte [r11 + rcx]
movzx ecx, byte [rdx + 2]
test cl, cl
js 0x140154d58
movzx esi, byte [rdx + 3]
movsxd rcx, ecx
add rdx, 4
movzx ecx, byte [r11 + rcx]
test sil, sil
js 0x140154d70
movsxd rsi, esi
movzx esi, byte [r11 + rsi]
test r15b, r15b
js 0x140154d80
test r10b, r10b
js 0x140154d80
test cl, cl
js 0x140154d80
test sil, sil
js 0x140154d80
shl eax, 0x12
shl r10d, 0xc
add rbx, 3
add r12d, 4
or eax, r10d
shl ecx, 6
add edi, 3
or ecx, eax
mov byte [rbx - 2], ch
mov eax, ecx
or esi, ecx
shr eax, 0x10
mov byte [rbx - 3], al
mov byte [rbx - 1], sil
cmp r12d, r8d
jge 0x140154e30
movzx eax, byte [rdx]
test al, al
jns 0x140154c78
movzx ecx, byte [rdx + 1]
mov r15d, 0xffffffff
mov eax, 0xff
test cl, cl
jns 0x140154c8e
nop dword [rax]
movzx ecx, byte [rdx + 2]
mov r10d, 0xff
test cl, cl
jns 0x140154ca2
nop word [rax + rax]
movzx esi, byte [rdx + 3]
add rdx, 4
mov ecx, 0xff
test sil, sil
jns 0x140154cbb
nop
mov esi, 0xff
test r15b, r15b
jns 0x140154ccc
nop
xor r8d, r8d
mov r12d, 0xffffffff
mov rax, qword [rsp + 0x90]
mov edi, dword [rsp + 0xa0]
mov dword [rax], edi
mov eax, r12d
mov dword [r13], r8d
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test ebp, ebp
jne 0x140154d80
xor edi, edi
sub edi, ebp
xor r8d, r8d
add dword [rsp + 0xa0], edi
movsxd rdi, edi
add qword [rsp + 0x88], rdi
cmp r9, qword [rsp + 0x20]
jne 0x140154b7c
test r8d, r8d
jle 0x140154def
test r8b, 3
je 0x140154e82
test r8d, r8d
setne r12b
test ebp, ebp
sete al
or r12d, eax
movzx r12d, r12b
jmp 0x140154d89
mov ebp, 1
cmp r8d, 1
je 0x140154b10
xor ebp, ebp
cmp byte [r14 + rax - 2], 0x3d
sete bpl
add ebp, 1
jmp 0x140154b10
mov r14, qword [rsp + 0x28]
jmp 0x140154dbe
xor r12d, r12d
test r8d, r8d
jle 0x140154d89
mov r12d, r8d
and r12d, 3
jne 0x140154d83
mov rcx, qword [rsp + 0x88]
mov rdx, r14
call fcn.1401548f0
cmp eax, ebp
jl 0x140154d80
sub eax, ebp
xor r8d, r8d
add dword [rsp + 0xa0], eax
jmp 0x140154d89
mov rcx, qword [rsp + 0x88]
mov rdx, r14
call fcn.1401548f0
cmp ebp, eax
jg 0x140154d80
sub eax, ebp
xor r8d, r8d
add dword [rsp + 0xa0], eax
jmp 0x140154def
mov dword [rsp + 0xa0], 0
jmp 0x140154de0