Function at 0x140016890
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov r9, r8
mov r8, qword [rdx]
test r8, r8
je 0x140016cda
mov rax, qword [rdx + 8]
test rax, rax
je 0x140016cda
mov r14, rcx
mov rcx, qword [rdx + 0x10]
test rcx, rcx
je 0x140016cda
add rcx, r8
jb 0x140016cda
mov rsi, r8
sub rsi, rax
jb 0x140016cda
mov rax, rcx
shr rax, 0x3d
jne 0x140016cda
mov eax, dword [rdx + 0x18]
mov rdx, rcx
shr rdx, 0x20
mov rdi, rcx
shl rdi, 0x20
lea r10d, [rax - 0x20]
test rdx, rdx
cmovne r10d, eax
cmovne rdi, rcx
mov rcx, rdi
shr rcx, 0x30
mov rdx, rdi
shl rdx, 0x10
lea r11d, [r10 - 0x10]
test rcx, rcx
cmovne r11d, r10d
cmovne rdx, rdi
mov rcx, rdx
shr rcx, 0x38
mov rdi, rdx
shl rdi, 8
lea r10d, [r11 - 8]
test rcx, rcx
cmovne r10d, r11d
cmovne rdi, rdx
mov rcx, rdi
shr rcx, 0x3c
mov rdx, rdi
shl rdx, 4
lea r11d, [r10 - 4]
test rcx, rcx
cmovne r11d, r10d
cmovne rdx, rdi
mov rcx, rdx
shr rcx, 0x3e
lea ebx, [r11 - 2]
test rcx, rcx
cmovne ebx, r11d
lea rdi, [rdx*4]
cmovne rdi, rdx
xor ecx, ecx
test rdi, rdi
setns cl
sub ebx, ecx
shl rdi, cl
sub ax, bx
js 0x140016cda
and eax, 0x3f
mov r12, rsi
mov ecx, eax
shl r12, cl
mov rdx, r12
shr rdx, cl
cmp rdx, rsi
jne 0x140016cda
mov rdx, r8
mov ecx, eax
shl rdx, cl
mov r10, rdx
shr r10, cl
cmp r10, r8
jne 0x140016cda
mov qword [rsp + 8], r14
mov eax, 0xffffffa0
sub eax, ebx
cwde
lea eax, [rax + rax*4]
shl eax, 4
add eax, 0x153b0
cdqe
imul rax, rax, 0x7b4dc993
mov rcx, rax
shr rcx, 0x3f
sar rax, 0x2a
add eax, ecx
cmp eax, 0x51
jae 0x140016cda
mov r8d, eax
shl r8, 4
lea r11, [0x1400db318]
mov r13, qword [r8 + r11]
movzx eax, word [r8 + r11 + 0xa]
mov dword [rsp], eax
mov rax, rdi
shr rax, 0x20
mov qword [rsp + 0x48], rax
mov r10d, edi
mov ecx, r13d
shr r13, 0x20
mov rbp, r13
imul rbp, r10
mov r15, rcx
imul r15, rax
imul r10, rcx
shr r10, 0x20
mov edi, r15d
add rdi, r10
mov r14d, ebp
add r14, rdi
add bx, word [r8 + r11 + 8]
mov r11, r12
shr r11, 0x20
mov r10d, r12d
mov r8, r13
imul r8, r11
mov qword [rsp + 0x28], r8
mov rax, r13
imul rax, r10
imul r11, rcx
imul r10, rcx
shr r10, 0x20
mov r8d, r11d
add r8, r10
mov r12d, eax
add r12, r8
mov r8, rdx
shr r8, 0x20
mov edx, edx
mov rsi, r13
imul rsi, rdx
mov rdi, rcx
imul rdi, r8
imul rcx, rdx
shr rcx, 0x20
mov edx, edi
add rdx, rcx
mov r10d, esi
add r10, rdx
mov rcx, r13
imul rcx, qword [rsp + 0x48]
sub r14, 0xffffffff80000000
shr r15, 0x20
shr rbp, 0x20
shr r14, 0x20
neg ebx
sub r12, 0xffffffff80000000
shr r11, 0x20
mov rdx, r11
shr rax, 0x20
mov qword [rsp + 0x18], rax
shr r12, 0x20
mov qword [rsp + 0x20], r12
mov qword [rsp + 0x88], r13
mov qword [rsp + 0x70], r8
imul r13, r8
sub r10, 0xffffffff80000000
mov qword [rsp + 0x78], r15
mov qword [rsp + 0x58], rcx
add rcx, r15
mov qword [rsp + 0x80], rbp
add rcx, rbp
mov qword [rsp + 0x30], r14
add r14, rcx
inc r14
and ebx, 0x3f
mov r11, r14
mov ecx, ebx
shr r11, cl
shr rdi, 0x20
shr rsi, 0x20
mov eax, 1
shl rax, cl
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x50], r13
lea r8, [rdi + r13]
mov qword [rsp + 0x60], rsi
add r8, rsi
shr r10, 0x20
mov qword [rsp + 0x40], r10
lea rsi, [rax - 1]
cmp r11d, 0x2710
mov qword [rsp + 0x90], rax
jae 0x140016b9f
cmp r11d, 0x64
jae 0x140016bc6
xor ecx, ecx
cmp r11d, 0xa
setae cl
lea r15d, [rcx + rcx*8]
inc r15d
jmp 0x140016c27
cmp r11d, 0xf4240
jae 0x140016be4
cmp r11d, 0x186a0
setb cl
mov eax, 0x2710
mov r15d, 0x186a0
cmovb r15d, eax
xor cl, 5
jmp 0x140016c27
cmp r11d, 0x3e8
setb cl
mov eax, 0x64
mov r15d, 0x3e8
cmovb r15d, eax
xor cl, 3
jmp 0x140016c27
cmp r11d, 0x5f5e100
jae 0x140016c0b
cmp r11d, 0x989680
setb cl
mov eax, 0xf4240
mov r15d, 0x989680
cmovb r15d, eax
xor cl, 7
jmp 0x140016c27
cmp r11d, 0x3b9aca00
setb cl
mov eax, 0x5f5e100
mov r15d, 0x3b9aca00
cmovb r15d, eax
xor cl, 9
add r8, qword [rsp + 0x40]
mov qword [rsp + 0x38], r8
mov rdi, r14
and rdi, rsi
movzx r8d, cl
mov ecx, r8d
sub ecx, dword [rsp]
inc ecx
mov dword [rsp + 0x14], ecx
mov rax, qword [rsp + 0x28]
add rax, rdx
add rax, qword [rsp + 0x18]
add rax, qword [rsp + 0x20]
mov qword [rsp], r14
mov qword [rsp + 0x28], rax
sub r14, rax
mov qword [rsp + 0x18], r14
lea r10, [r14 + 1]
mov r12, r10
mov qword [rsp + 0x20], rsi
and r12, rsi
xor r13d, r13d
nop dword [rax]
mov eax, r11d
xor edx, edx
div r15d
add al, 0x30
mov rsi, r9
mov byte [r9 + r13], al
mov r11d, edx
mov rdx, r11
mov rbp, rbx
mov ecx, ebx
shl rdx, cl
lea rbx, [r13 + 1]
lea r14, [rdx + rdi]
mov r9, r10
sub r9, r14
ja 0x140016cdc
cmp r8, r13
je 0x140016dd2
mov eax, r15d
mov ecx, 0xcccccccd
imul rax, rcx
shr rax, 0x23
mov r13, rbx
cmp r15d, 0xa
mov r15d, eax
mov r9, rsi
mov rbx, rbp
jae 0x140016c80
ud2
mov r11d, r15d
mov ecx, ebp
shl r11, cl
mov rcx, qword [rsp]
sub rcx, qword [rsp + 0x38]
lea r10, [rcx + 1]
dec rcx
cmp r9, r11
setb r15b
cmp rcx, r14
jbe 0x140016ea6
cmp r9, r11
mov r8, qword [rsp + 8]
jb 0x140016ebf
mov qword [rsp], r10
mov rbp, qword [rsp + 0x80]
mov r15, qword [rsp + 0x78]
lea r10, [r15 + rbp]
add r10, qword [rsp + 0x30]
add r10, qword [rsp + 0x58]
mov r9, qword [rsp + 0x68]
add r9, qword [rsp + 0x60]
add r9, qword [rsp + 0x40]
mov r12, qword [rsp + 0x50]
add r12, r9
mov r8, r10
sub r8, r12
sub r8, r14
mov r14, qword [rsp + 0x70]
sub r14, qword [rsp + 0x48]
mov r12, qword [rsp + 0x88]
imul r12, r14
add r12, r9
lea r14, [rdi + r11]
add r12, r14
sub r12, r15
sub r12, rbp
sub r12, qword [rsp + 0x30]
sub r10, qword [rsp + 0x28]
sub r10, r14
sub r10, rdx
add r10, 2
mov rbp, rsi
nop
lea r9, [rdx + r14]
cmp r9, rcx
jb 0x140016da6
lea r15, [rdx + r12]
cmp r8, r15
jb 0x140016ead
dec al
mov byte [rbp + r13], al
sub r10, r11
setb r15b
add rdi, r11
cmp r9, rcx
jae 0x140016dca
sub r8, r11
add r12, r11
add r14, r11
test r15b, r15b
je 0x140016d90
add rdx, rdi
jmp 0x140016eb3
inc r13
mov r8d, 1
mov rbx, rsi
mov r14, qword [rsp]
mov r15, qword [rsp + 0x90]
mov r10, qword [rsp + 0x20]
nop
cmp r13, 0x10
ja 0x140016cda
mov rax, r8
add rdi, rdi
lea rdx, [rdi + rdi*4]
mov rdi, rdx
and rdi, r10
add r8, r8
lea r8, [r8 + r8*4]
add r12, r12
lea r12, [r12 + r12*4]
mov ecx, ebp
shr rdx, cl
lea r9d, [rdx + 0x30]
mov byte [rbx + r13], r9b
inc r13
mov r9, r12
sub r9, rdi
jbe 0x140016df0
sub r14, qword [rsp + 0x38]
imul r14, r8
lea rcx, [r14 + r8]
cmp r9, r15
setb r9b
jb 0x140016f0b
sub r14, r8
mov r8, r14
sub r8, rdi
jbe 0x140016f0b
add dl, 0x2f
mov r11, r15
sub r11, r14
mov rsi, r12
sub rsi, r15
sub rsi, rdi
nop dword [rax + rax]
lea r10, [rdi + r15]
cmp r10, r14
jb 0x140016e86
lea r9, [r11 + rdi]
cmp r8, r9
jb 0x140016f08
mov byte [rbx + r13 - 1], dl
sub rsi, r15
setb r9b
cmp r10, r14
jae 0x140016f0e
dec dl
sub r8, r15
mov rdi, r10
test r9b, r9b
je 0x140016e70
jmp 0x140016f0e
mov r8, qword [rsp + 8]
jmp 0x140016ebf
add rdx, rdi
xor r15d, r15d
mov r14, rdx
mov r8, qword [rsp + 8]
mov r10, qword [rsp]
mov rax, r10
sub rax, r14
jbe 0x140016ed9
test r15b, r15b
jne 0x140016ed9
add r11, r14
sub r11, r10
jb 0x140016eff
cmp rax, r11
jae 0x140016eff
cmp r14, 2
jb 0x140016eff
mov rax, qword [rsp + 0x18]
add rax, 0xfffffffffffffffd
cmp r14, rax
ja 0x140016eff
mov qword [r8], rsi
mov qword [r8 + 8], rbx
mov eax, dword [rsp + 0x14]
mov word [r8 + 0x10], ax
jmp 0x140016f55
mov qword [r8], 0
jmp 0x140016f55
xor r9d, r9d
mov r10, rdi
mov rdx, rcx
sub rdx, r10
jbe 0x140016f28
test r9b, r9b
jne 0x140016f28
add r15, r10
sub r15, rcx
jb 0x140016f49
cmp rdx, r15
jae 0x140016f49
lea rcx, [rax*4]
lea rcx, [rcx + rcx*4]
cmp rcx, r10
ja 0x140016f49
shl rax, 3
lea rax, [rax + rax*4]
sub r12, rax
cmp r10, r12
jbe 0x140016f69
mov rax, qword [rsp + 8]
mov qword [rax], 0
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsp + 8]
mov qword [rax], rbx
mov qword [rax + 8], r13
mov ecx, dword [rsp + 0x14]
mov word [rax + 0x10], cx
jmp 0x140016f55