// File: nikolausmayer[P]SimplePlot/./Sparkline.h
// Function: Sparkline::ShowExamples[abi:cxx11]()
std::string ShowExamples()
  {
    std::ostringstream oss;
    oss << "\n"
        << "############################################################\n"
        << "#                Sparklines: Showcase examples             #\n"
        << "############################################################\n"
        << "\n\n";

    /// Generate two cycles of a sine wave
    std::vector<float> data_vec;
    for ( size_t i = 0; i <= 100; ++i ) {
      data_vec.push_back( sin((i*7.2)*3.14/180.) );
    }

    /// 40x10, box
    Configuration<float> config;
    config.setHeight(10);                    /// Make the plot 10 lines high
    config.setWidth(40);                     /// and 80 characters wide,
    config.setBox(true);                     /// surround it with a box
    config.setTitle("Showcase: With box, size 40x10");   /// and add a caption
    oss << Sparkline(data_vec, config) << '\n';

    /// 40x3, box
    config.setHeight(3);
    config.setTitle("Showcase: With box, size 40x3");
    oss << Sparkline(data_vec, config) << '\n';

    /// 40x1, no box
    config.setHeight(1);
    config.setBox(false);
    oss << "Showcase: Without box, size 40x1 (the original 'sparkline')\n"
        << Sparkline(data_vec, config) << "\n\n";

    /// 80x10, no box
    config.setHeight(10);
    config.setWidth(80);
    oss << "Showcase: Without box, size 80x10\n"
        << Sparkline(data_vec, config) << '\n';

    /// 80x10, box
    config.setHeight(10);
    config.setWidth(80);
    config.setBox(true);
    config.setTitle("Showcase: With box, size 80x10");
    oss << '\n' << Sparkline(data_vec, config) << '\n';

    /// 80x10, box, with artificial range limits
    config.setHeight(10);
    config.setWidth(80);
    config.setMin(-2.);
    config.setMax(4.);
    config.setBox(true);
    config.setTitle("Showcase: With box, size 80x10, y-range [-2,4]");
    oss << Sparkline(data_vec, config) << '\n';

    /// 80x10, box, with artificial range limits
    config.setHeight(10);
    config.setWidth(80);
    config.setMin(-.25);
    config.setMax(1.25);
    config.setBox(true);
    config.setTitle("Showcase: With box, size 80x10, y-range [-0.25,1.25]");
    oss << Sparkline(data_vec, config) << '\n';

    /// 80x10, box, no colors
    config.setColor(false);
    config.setTitle("Showcase: With box, size 80x10, no colors");
    oss << '\n' << Sparkline(data_vec, config) << '\n';


    return oss.str();
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4f0, %rsp            # imm = 0x4F0
movq %rdi, -0x430(%rbp)
movq %rdi, %rax
movq %rax, -0x428(%rbp)
movq %rdi, -0x8(%rbp)
leaq -0x180(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x22e0
movq -0x420(%rbp), %rdi
leaq 0x4db1(%rip), %rsi      # 0x8142
callq 0x2210
movq %rax, -0x418(%rbp)
jmp 0x339f
movq -0x418(%rbp), %rdi
leaq 0x4d18(%rip), %rsi      # 0x80c5
callq 0x2210
movq %rax, -0x438(%rbp)
jmp 0x33bb
movq -0x438(%rbp), %rdi
leaq 0x4d3a(%rip), %rsi      # 0x8103
callq 0x2210
movq %rax, -0x440(%rbp)
jmp 0x33d7
movq -0x440(%rbp), %rdi
leaq 0x4ce0(%rip), %rsi      # 0x80c5
callq 0x2210
movq %rax, -0x448(%rbp)
jmp 0x33f3
movq -0x448(%rbp), %rdi
leaq 0x4d40(%rip), %rsi      # 0x8141
callq 0x2210
jmp 0x3408
leaq -0x1a8(%rbp), %rdi
callq 0x6380
movq $0x0, -0x1b0(%rbp)
cmpq $0x64, -0x1b0(%rbp)
ja 0x34e8
movaps 0x4bdc(%rip), %xmm1     # 0x8010
movq -0x1b0(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x4bd8(%rip), %xmm1     # 0x8020
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x4be1(%rip), %xmm1     # 0x8040
mulsd %xmm1, %xmm0
movsd 0x4bdd(%rip), %xmm1     # 0x8048
mulsd %xmm1, %xmm0
movsd 0x4bd9(%rip), %xmm1     # 0x8050
divsd %xmm1, %xmm0
callq 0x2080
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1b4(%rbp)
leaq -0x1a8(%rbp), %rdi
leaq -0x1b4(%rbp), %rsi
callq 0x63a0
jmp 0x34a1
jmp 0x34a3
movq -0x1b0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1b0(%rbp)
jmp 0x341f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3fbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3fb1
leaq -0x219(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0x23b0
movq -0x450(%rbp), %rdx
leaq 0x4c3a(%rip), %rsi      # 0x8143
leaq -0x218(%rbp), %rdi
callq 0x49c0
jmp 0x3517
callq 0x60a0
movss %xmm0, -0x454(%rbp)
callq 0x60b0
movaps %xmm0, %xmm1
movss -0x454(%rbp), %xmm0
xorl %ecx, %ecx
movl %ecx, %edx
leaq -0x1f8(%rbp), %rdi
movl $0x1, %esi
movl $0x1, %r8d
leaq -0x218(%rbp), %r9
callq 0x60c0
jmp 0x3558
leaq -0x218(%rbp), %rdi
callq 0x23f8
leaq -0x219(%rbp), %rdi
callq 0x2270
leaq -0x1f8(%rbp), %rdi
movl $0xa, %esi
callq 0x6150
jmp 0x3583
leaq -0x1f8(%rbp), %rdi
movl $0x28, %esi
callq 0x63d0
jmp 0x3596
leaq -0x1f8(%rbp), %rdi
movl $0x1, %esi
callq 0x61b0
jmp 0x35a9
leaq -0x241(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0x23b0
movq -0x460(%rbp), %rdx
leaq 0x4b7a(%rip), %rsi      # 0x8144
leaq -0x240(%rbp), %rdi
callq 0x49c0
jmp 0x35d8
leaq -0x1f8(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x61d0
jmp 0x35ed
leaq -0x240(%rbp), %rdi
callq 0x23f8
leaq -0x241(%rbp), %rdi
callq 0x2270
leaq -0x268(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x3621
leaq -0x180(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x2200
movq %rax, -0x468(%rbp)
jmp 0x363d
movq -0x468(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
jmp 0x3650
leaq -0x268(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
movl $0x3, %esi
callq 0x6150
jmp 0x366f
leaq -0x289(%rbp), %rdi
movq %rdi, -0x470(%rbp)
callq 0x23b0
movq -0x470(%rbp), %rdx
leaq 0x4ad3(%rip), %rsi      # 0x8163
leaq -0x288(%rbp), %rdi
callq 0x49c0
jmp 0x369e
leaq -0x1f8(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x61d0
jmp 0x36b3
leaq -0x288(%rbp), %rdi
callq 0x23f8
leaq -0x289(%rbp), %rdi
callq 0x2270
leaq -0x2b0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x36e7
leaq -0x180(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x2200
movq %rax, -0x478(%rbp)
jmp 0x3703
movq -0x478(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
jmp 0x3716
leaq -0x2b0(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
movl $0x1, %esi
callq 0x6150
jmp 0x3735
leaq -0x1f8(%rbp), %rdi
xorl %esi, %esi
callq 0x61b0
jmp 0x3745
leaq 0x4a35(%rip), %rsi      # 0x8181
leaq -0x180(%rbp), %rdi
callq 0x2210
movq %rax, -0x480(%rbp)
jmp 0x3761
leaq -0x2d0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x377d
movq -0x480(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x2200
movq %rax, -0x488(%rbp)
jmp 0x3799
movq -0x488(%rbp), %rdi
leaq 0x499a(%rip), %rsi      # 0x8141
callq 0x2210
jmp 0x37ae
leaq -0x2d0(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
movl $0xa, %esi
callq 0x6150
jmp 0x37cd
leaq -0x1f8(%rbp), %rdi
movl $0x50, %esi
callq 0x63d0
jmp 0x37e0
leaq 0x49d7(%rip), %rsi      # 0x81be
leaq -0x180(%rbp), %rdi
callq 0x2210
movq %rax, -0x490(%rbp)
jmp 0x37fc
leaq -0x2f0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x3818
movq -0x490(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x2200
movq %rax, -0x498(%rbp)
jmp 0x3834
movq -0x498(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
jmp 0x3847
leaq -0x2f0(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
movl $0xa, %esi
callq 0x6150
jmp 0x3866
leaq -0x1f8(%rbp), %rdi
movl $0x50, %esi
callq 0x63d0
jmp 0x3879
leaq -0x1f8(%rbp), %rdi
movl $0x1, %esi
callq 0x61b0
jmp 0x388c
leaq -0x311(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0x23b0
movq -0x4a0(%rbp), %rdx
leaq 0x4934(%rip), %rsi      # 0x81e1
leaq -0x310(%rbp), %rdi
callq 0x49c0
jmp 0x38bb
leaq -0x1f8(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x61d0
jmp 0x38d0
leaq -0x310(%rbp), %rdi
callq 0x23f8
leaq -0x311(%rbp), %rdi
callq 0x2270
leaq -0x180(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
movq %rax, -0x4a8(%rbp)
jmp 0x3902
leaq -0x338(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x391e
movq -0x4a8(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x2200
movq %rax, -0x4b0(%rbp)
jmp 0x393a
movq -0x4b0(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
jmp 0x394d
leaq -0x338(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
movl $0xa, %esi
callq 0x6150
jmp 0x396c
leaq -0x1f8(%rbp), %rdi
movl $0x50, %esi
callq 0x63d0
jmp 0x397f
leaq -0x1f8(%rbp), %rdi
movss 0x46de(%rip), %xmm0     # 0x806c
callq 0x6170
jmp 0x3995
leaq -0x1f8(%rbp), %rdi
movss 0x46cc(%rip), %xmm0     # 0x8070
callq 0x6190
jmp 0x39ab
leaq -0x1f8(%rbp), %rdi
movl $0x1, %esi
callq 0x61b0
jmp 0x39be
leaq -0x359(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x23b0
movq -0x4b8(%rbp), %rdx
leaq 0x4821(%rip), %rsi      # 0x8200
leaq -0x358(%rbp), %rdi
callq 0x49c0
jmp 0x39ed
leaq -0x1f8(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x61d0
jmp 0x3a02
leaq -0x358(%rbp), %rdi
callq 0x23f8
leaq -0x359(%rbp), %rdi
callq 0x2270
leaq -0x380(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x3a36
leaq -0x180(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x2200
movq %rax, -0x4c0(%rbp)
jmp 0x3a52
movq -0x4c0(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
jmp 0x3a65
leaq -0x380(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
movl $0xa, %esi
callq 0x6150
jmp 0x3a84
leaq -0x1f8(%rbp), %rdi
movl $0x50, %esi
callq 0x63d0
jmp 0x3a97
leaq -0x1f8(%rbp), %rdi
movss 0x45ce(%rip), %xmm0     # 0x8074
callq 0x6170
jmp 0x3aad
leaq -0x1f8(%rbp), %rdi
movss 0x45bc(%rip), %xmm0     # 0x8078
callq 0x6190
jmp 0x3ac3
leaq -0x1f8(%rbp), %rdi
movl $0x1, %esi
callq 0x61b0
jmp 0x3ad6
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x23b0
movq -0x4c8(%rbp), %rdx
leaq 0x4738(%rip), %rsi      # 0x822f
leaq -0x3a0(%rbp), %rdi
callq 0x49c0
jmp 0x3b05
leaq -0x1f8(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x61d0
jmp 0x3b1a
leaq -0x3a0(%rbp), %rdi
callq 0x23f8
leaq -0x3a1(%rbp), %rdi
callq 0x2270
leaq -0x3c8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x3b4e
leaq -0x180(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x2200
movq %rax, -0x4d0(%rbp)
jmp 0x3b6a
movq -0x4d0(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
jmp 0x3b7d
leaq -0x3c8(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
xorl %esi, %esi
callq 0x6200
jmp 0x3b99
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x23b0
movq -0x4d8(%rbp), %rdx
leaq 0x46aa(%rip), %rsi      # 0x8264
leaq -0x3e8(%rbp), %rdi
callq 0x49c0
jmp 0x3bc8
leaq -0x1f8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x61d0
jmp 0x3bdd
leaq -0x3e8(%rbp), %rdi
callq 0x23f8
leaq -0x3e9(%rbp), %rdi
callq 0x2270
leaq -0x180(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
movq %rax, -0x4e0(%rbp)
jmp 0x3c0f
leaq -0x410(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x6220
jmp 0x3c2b
movq -0x4e0(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x2200
movq %rax, -0x4e8(%rbp)
jmp 0x3c47
movq -0x4e8(%rbp), %rdi
movl $0xa, %esi
callq 0x22b0
jmp 0x3c5a
leaq -0x410(%rbp), %rdi
callq 0x23f8
movq -0x430(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x2240
jmp 0x3c7b
leaq -0x1f8(%rbp), %rdi
callq 0x6300
leaq -0x1a8(%rbp), %rdi
callq 0x6320
leaq -0x180(%rbp), %rdi
callq 0x20a0
movq -0x428(%rbp), %rax
addq $0x4f0, %rsp            # imm = 0x4F0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3ce1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x23f8
leaq -0x219(%rbp), %rdi
callq 0x2270
jmp 0x3fb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3d3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x23f8
leaq -0x241(%rbp), %rdi
callq 0x2270
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x23f8
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3da1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x23f8
leaq -0x289(%rbp), %rdi
callq 0x2270
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x23f8
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x23f8
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x23f8
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3e4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x23f8
leaq -0x311(%rbp), %rdi
callq 0x2270
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x23f8
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3eb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x23f8
leaq -0x359(%rbp), %rdi
callq 0x2270
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x23f8
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3f19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x23f8
leaq -0x3a1(%rbp), %rdi
callq 0x2270
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x23f8
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x3f79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x23f8
leaq -0x3e9(%rbp), %rdi
callq 0x2270
jmp 0x3fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x23f8
leaq -0x1f8(%rbp), %rdi
callq 0x6300
leaq -0x1a8(%rbp), %rdi
callq 0x6320
leaq -0x180(%rbp), %rdi
callq 0x20a0
movq -0x188(%rbp), %rdi
callq 0x23a0
nopw %cs:(%rax,%rax)