// File: UCBASiCS[P]SPRIGHT/src/config.cpp
// Function: Config::display() const
void Config::display() const
{
    std::cout << std::endl << "<=======================>" << std::endl;
    
    if( isExperimentMode() )
    {

       std::cout << "Running experiment mode" << std::endl;
   }

   std::cout << std::endl << "<===== INPUT PROFILE =====>" << std::endl;

   std::cout << signalLength << " -> signal length" << std::endl;
   std::cout << signalSparsity << " -> signal sparsity" << std::endl;
   if (noisy)
   {
    std::cout << SNRdB << " dB" << " -> signal-to-noise ratio (SNR)" << std::endl;
}
else
{
    std::cout << "Noiseless signal" << std::endl;
}
if (phasesNb == 0)
{
    std::cout << "Random phase"  << std::endl;
}
else
{
    std::cout << phasesNb << " -> possible phase";

    if (phasesNb > 1)
    {
        std::cout << "s";
    }

    std::cout << " for the non-zero frequencies in the input signal" << std::endl;
}

std::cout << std::endl << "<===== SPRIGHT CONFIG =====>" << std::endl;

std::cout << chainsNb << " -> delay chain(s)" << std::endl;

if( signalLengthOriginal != signalLength )
{
	std::cout << "The signal length is not a power of 2." << std::endl; 
	std::cout << "The last " << (signalLengthOriginal - signalLength) << " samples will be deleted" << std::endl;
}

for (unsigned int stage=0; stage<bins.size(); stage++)
{
    std::cout << bins[stage] << " ";
}
std::cout << "-> bins" << std::endl;

if (iterations > 1)
{
    std::cout << iterations << " -> iterations"  << std::endl;
}





if (maximumLikelihood)
{
    std::cout << "Maximum likelihood detection enabled"  << std::endl;
}

if (reconstructSignalInBackEnd)
{
    std::cout << "The back-end will reconstruct the full length frequency signal" << std::endl;
}

if (verbose)
{
    std::cout << "Verbose mode enabled" << std::endl;

    if (displayIterationTime)
    {
        std::cout << "Prompting execution time for each iteration" << std::endl;
    }
}

if(distribution.size() > 2) 
{
    std::cout << "Non uniform distribution -> ";

    for (unsigned int i = 0; i < distribution.size(); ++i)
    {
        std::cout << " " << distribution[i];
    }

    std::cout << std::endl;
}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq 0x212ed(%rip), %rdi     # 0x2ffc8
movq 0x212ce(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq %rax, %rdi
leaq 0x1152a(%rip), %rsi     # 0x2021b
callq 0x42b0
movq %rax, %rdi
movq 0x212b0(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rdi
callq 0xe960
testb $0x1, %al
jne 0xed14
jmp 0xed36
movq 0x212ad(%rip), %rdi     # 0x2ffc8
leaq 0x11513(%rip), %rsi     # 0x20235
callq 0x42b0
movq %rax, %rdi
movq 0x2127f(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq 0x2128b(%rip), %rdi     # 0x2ffc8
movq 0x2126c(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq %rax, %rdi
leaq 0x114fa(%rip), %rsi     # 0x2024d
callq 0x42b0
movq %rax, %rdi
movq 0x2124e(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
movl 0x18(%rax), %esi
movq 0x21253(%rip), %rdi     # 0x2ffc8
callq 0x4520
movq %rax, %rdi
leaq 0x114e5(%rip), %rsi     # 0x20269
callq 0x42b0
movq %rax, %rdi
movq 0x2121d(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
movl 0x24(%rax), %esi
movq 0x21222(%rip), %rdi     # 0x2ffc8
callq 0x4520
movq %rax, %rdi
leaq 0x114c6(%rip), %rsi     # 0x2027b
callq 0x42b0
movq %rax, %rdi
movq 0x211ec(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
testb $0x1, 0x68(%rax)
je 0xee17
movq -0x18(%rbp), %rax
movss 0x6c(%rax), %xmm0
movq 0x211e5(%rip), %rdi     # 0x2ffc8
callq 0x41e0
movq %rax, %rdi
leaq 0x1149d(%rip), %rsi     # 0x2028f
callq 0x42b0
movq %rax, %rdi
leaq 0x11492(%rip), %rsi     # 0x20293
callq 0x42b0
movq %rax, %rdi
movq 0x211a0(%rip), %rsi     # 0x2ffb0
callq 0x42f0
jmp 0xee39
movq 0x211aa(%rip), %rdi     # 0x2ffc8
leaq 0x1148e(%rip), %rsi     # 0x202b3
callq 0x42b0
movq %rax, %rdi
movq 0x2117c(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
cmpl $0x0, 0x70(%rax)
jne 0xee67
movq 0x2117e(%rip), %rdi     # 0x2ffc8
leaq 0x11473(%rip), %rsi     # 0x202c4
callq 0x42b0
movq %rax, %rdi
movq 0x21150(%rip), %rsi     # 0x2ffb0
callq 0x42f0
jmp 0xeec8
movq -0x18(%rbp), %rax
movl 0x70(%rax), %esi
movq 0x21153(%rip), %rdi     # 0x2ffc8
callq 0x4520
movq %rax, %rdi
leaq 0x1144d(%rip), %rsi     # 0x202d1
callq 0x42b0
movq -0x18(%rbp), %rax
cmpl $0x1, 0x70(%rax)
jle 0xeea6
movq 0x2112e(%rip), %rdi     # 0x2ffc8
leaq 0x1212c(%rip), %rsi     # 0x20fcd
callq 0x42b0
movq 0x2111b(%rip), %rdi     # 0x2ffc8
leaq 0x11430(%rip), %rsi     # 0x202e4
callq 0x42b0
movq %rax, %rdi
movq 0x210ed(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq 0x210f9(%rip), %rdi     # 0x2ffc8
movq 0x210da(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq %rax, %rdi
leaq 0x11431(%rip), %rsi     # 0x20316
callq 0x42b0
movq %rax, %rdi
movq 0x210bc(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
movl 0x60(%rax), %esi
movq 0x210c1(%rip), %rdi     # 0x2ffc8
callq 0x4520
movq %rax, %rdi
leaq 0x1141d(%rip), %rsi     # 0x20333
callq 0x42b0
movq %rax, %rdi
movq 0x2108b(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rcx
movl 0x1c(%rcx), %eax
cmpl 0x18(%rcx), %eax
je 0xef9b
movq 0x2108b(%rip), %rdi     # 0x2ffc8
leaq 0x11402(%rip), %rsi     # 0x20346
callq 0x42b0
movq %rax, %rdi
movq 0x2105d(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq 0x21069(%rip), %rdi     # 0x2ffc8
leaq 0x11407(%rip), %rsi     # 0x2036d
callq 0x42b0
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x1c(%rax), %esi
subl 0x18(%rax), %esi
callq 0x4520
movq %rax, %rdi
leaq 0x113f0(%rip), %rsi     # 0x20377
callq 0x42b0
movq %rax, %rdi
movq 0x2101a(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movl $0x0, -0xc(%rbp)
movq -0x18(%rbp), %rdi
movl -0xc(%rbp), %eax
movq %rax, -0x20(%rbp)
addq $0x28, %rdi
callq 0xa5e0
movq %rax, %rcx
movq -0x20(%rbp), %rax
cmpq %rcx, %rax
jae 0xeffc
movq -0x18(%rbp), %rdi
addq $0x28, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0xf9e0
movl (%rax), %esi
movq 0x20feb(%rip), %rdi     # 0x2ffc8
callq 0x4520
movq %rax, %rdi
leaq 0x11ecc(%rip), %rsi     # 0x20eb8
callq 0x42b0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0xefa2
movq 0x20fc5(%rip), %rdi     # 0x2ffc8
leaq 0x11386(%rip), %rsi     # 0x20390
callq 0x42b0
movq %rax, %rdi
movq 0x20f97(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
cmpl $0x1, 0x14(%rax)
jle 0xf059
movq -0x18(%rbp), %rax
movl 0x14(%rax), %esi
movq 0x20f92(%rip), %rdi     # 0x2ffc8
callq 0x4520
movq %rax, %rdi
leaq 0x11353(%rip), %rsi     # 0x20398
callq 0x42b0
movq %rax, %rdi
movq 0x20f5c(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
testb $0x1, 0x20(%rax)
je 0xf085
movq 0x20f5e(%rip), %rdi     # 0x2ffc8
leaq 0x11336(%rip), %rsi     # 0x203a7
callq 0x42b0
movq %rax, %rdi
movq 0x20f30(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
testb $0x1, 0x76(%rax)
je 0xf0b1
movq 0x20f32(%rip), %rdi     # 0x2ffc8
leaq 0x1132f(%rip), %rsi     # 0x203cc
callq 0x42b0
movq %rax, %rdi
movq 0x20f04(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0xf10b
movq 0x20f06(%rip), %rdi     # 0x2ffc8
leaq 0x11342(%rip), %rsi     # 0x2040b
callq 0x42b0
movq %rax, %rdi
movq 0x20ed8(%rip), %rsi     # 0x2ffb0
callq 0x42f0
movq -0x18(%rbp), %rax
testb $0x1, 0x75(%rax)
je 0xf109
movq 0x20eda(%rip), %rdi     # 0x2ffc8
leaq 0x1132b(%rip), %rsi     # 0x20420
callq 0x42b0
movq %rax, %rdi
movq 0x20eac(%rip), %rsi     # 0x2ffb0
callq 0x42f0
jmp 0xf10b
movq -0x18(%rbp), %rdi
addq $0x78, %rdi
callq 0x88d0
cmpq $0x2, %rax
jbe 0xf1b0
movq 0x20e9f(%rip), %rdi     # 0x2ffc8
leaq 0x1131c(%rip), %rsi     # 0x2044c
callq 0x42b0
movl $0x0, -0x10(%rbp)
movq -0x18(%rbp), %rdi
movl -0x10(%rbp), %eax
movq %rax, -0x28(%rbp)
addq $0x78, %rdi
callq 0x88d0
movq %rax, %rcx
movq -0x28(%rbp), %rax
cmpq %rcx, %rax
jae 0xf19d
movq 0x20e65(%rip), %rdi     # 0x2ffc8
leaq 0x11d4e(%rip), %rsi     # 0x20eb8
callq 0x42b0
movq -0x18(%rbp), %rdi
movq %rax, -0x30(%rbp)
addq $0x78, %rdi
movl -0x10(%rbp), %eax
movl %eax, %esi
callq 0xfa20
movq -0x30(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x45b0
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xf13c
movq 0x20e24(%rip), %rdi     # 0x2ffc8
movq 0x20e05(%rip), %rsi     # 0x2ffb0
callq 0x42f0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)