Function at 0x5a6d10
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
xor ebp, ebp
mov qword [rsp + 0x98], rdx
mov edx, dword [rcx]
mov qword [rsp + 0xa0], r8
lea r8, [rcx + 8]
mov qword [rsp + 0x90], rcx
test edx, edx
jle 0x5a6d53
movsxd rax, edx
cmp byte [r8 + rax - 1], 0x3d
je 0x5a70a8
mov r11d, dword [rsp + 0xb0]
xor r12d, r12d
test r11d, r11d
je 0x5a7018
mov rdi, qword [rsp + 0x90]
lea rax, [0x00616a40]
mov r10d, dword [rsp + 0xb0]
lea rcx, [0x006169c0]
mov r15, rax
test byte [rdi + 0x5c], 2
cmovne r15, rcx
test r10d, r10d
jle 0x5a7150
mov edi, dword [rsp + 0xb0]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0xb0], 0
lea r10d, [rdi - 1]
mov qword [rsp + 0x38], rax
lea rdi, [r9 + r10 + 1]
mov qword [rsp + 0x28], rdi
jmp 0x5a6df4
test ebp, ebp
je 0x5a6e2d
or eax, 0x13
cmp al, 0xf3
jne 0x5a7012
cmp r10d, 0xf2
je 0x5a70d0
cmp edx, 0x40
je 0x5a6e59
cmp r9, qword [rsp + 0x28]
je 0x5a7080
movzx ecx, byte [r9]
add r9, 1
test cl, cl
js 0x5a7012
movzx eax, cl
movzx r10d, byte [r15 + rax]
mov eax, r10d
cmp r10d, 0xff
je 0x5a7012
cmp cl, 0x3d
jne 0x5a6dc8
add ebp, 1
cmp ebp, 3
je 0x5a7012
cmp r10d, 0xf2
je 0x5a70d0
or eax, 0x13
cmp al, 0xf3
je 0x5a6de4
cmp edx, 0x3f
jg 0x5a7012
movsxd rax, edx
add edx, 1
mov byte [r8 + rax], cl
cmp edx, 0x40
jne 0x5a6de9
mov rax, qword [rsp + 0x90]
mov rsi, qword [rsp + 0x38]
mov rcx, r8
test byte [rax + 0x5c], 2
movzx eax, byte [rax + 8]
cmovne rsi, qword [rsp + 0x30]
test al, al
js 0x5a6ea2
nop dword [rax + rax]
cmp byte [rsi + rax], 0xe0
jne 0x5a6e9d
test edx, edx
je 0x5a7050
movzx eax, byte [rcx + 1]
add rcx, 1
sub edx, 1
test al, al
jns 0x5a6e80
cmp edx, 3
jle 0x5a6ed3
movsxd rax, edx
lea r10, [rcx + rax - 1]
jmp 0x5a6ecb
movzx eax, byte [rsi + rax]
or eax, 0x13
cmp al, 0xf3
jne 0x5a6ed3
sub edx, 1
sub r10, 1
cmp edx, 3
je 0x5a7010
movzx eax, byte [r10]
test al, al
jns 0x5a6eb0
test dl, 3
jne 0x5a7010
test edx, edx
jle 0x5a7050
mov rdi, qword [rsp + 0x98]
xor r13d, r13d
xor r12d, r12d
jmp 0x5a6fa0
movzx eax, byte [rsi + rax]
movzx r10d, byte [rcx + 1]
mov r14d, eax
test r10b, r10b
js 0x5a6fc8
movzx ebx, byte [rsi + r10]
movzx r10d, byte [rcx + 2]
test r10b, r10b
js 0x5a6fe0
add rcx, 4
movzx r11d, byte [rsi + r10]
movzx r10d, byte [rcx - 1]
test r10b, r10b
js 0x5a7000
movzx r10d, byte [rsi + r10]
test r14b, r14b
js 0x5a7010
test bl, bl
js 0x5a7010
test r11b, r11b
js 0x5a7010
test r10b, r10b
js 0x5a7010
shl eax, 0x12
shl ebx, 0xc
add rdi, 3
add r13d, 4
shl r11d, 6
or eax, ebx
add r12d, 3
or eax, r11d
mov byte [rdi - 2], ah
mov r11d, eax
or r10d, eax
shr r11d, 0x10
mov byte [rdi - 3], r11b
mov byte [rdi - 1], r10b
cmp r13d, edx
jge 0x5a7057
movzx eax, byte [rcx]
test al, al
jns 0x5a6f00
movzx r10d, byte [rcx + 1]
mov r14d, 0xffffffff
mov eax, 0xff
test r10b, r10b
jns 0x5a6f15
nop dword [rax]
movzx r10d, byte [rcx + 2]
mov ebx, 0xff
test r10b, r10b
jns 0x5a6f28
nop dword [rax + rax]
movzx r10d, byte [rcx + 3]
add rcx, 4
mov r11d, 0xff
test r10b, r10b
jns 0x5a6f3f
nop dword [rax + rax]
mov r10d, 0xff
test r14b, r14b
jns 0x5a6f4d
nop
xor edx, edx
mov r12d, 0xffffffff
mov rax, qword [rsp + 0xa0]
mov edi, dword [rsp + 0xb0]
mov dword [rax], edi
mov rax, qword [rsp + 0x90]
mov dword [rax], edx
mov eax, r12d
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test ebp, ebp
jne 0x5a7010
xor r12d, r12d
sub r12d, ebp
xor edx, edx
add dword [rsp + 0xb0], r12d
movsxd r12, r12d
add qword [rsp + 0x98], r12
cmp r9, qword [rsp + 0x28]
jne 0x5a6df4
nop word [rax + rax]
test edx, edx
jle 0x5a708d
test dl, 3
je 0x5a7118
test edx, edx
setne r12b
test ebp, ebp
sete al
or r12d, eax
movzx r12d, r12b
jmp 0x5a7018
mov ebp, 1
cmp edx, 1
je 0x5a6d53
xor ebp, ebp
cmp byte [r8 + rax - 2], 0x3d
sete bpl
add ebp, 1
jmp 0x5a6d53
xor r12d, r12d
test edx, edx
jle 0x5a7018
mov r12d, edx
and r12d, 3
jne 0x5a7012
mov r9d, edx
mov rcx, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
call sym.evp_decodeblock_int
cmp ebp, eax
jg 0x5a7010
sub eax, ebp
xor edx, edx
add dword [rsp + 0xb0], eax
jmp 0x5a7018
mov r9d, edx
mov rcx, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
call sym.evp_decodeblock_int
cmp ebp, eax
jg 0x5a7010
sub eax, ebp
xor edx, edx
add dword [rsp + 0xb0], eax
jmp 0x5a708d
mov dword [rsp + 0xb0], 0
jmp 0x5a7080