// File: Barath-Kannan[P]SignalsAndSlots/test/SignalTest_Parametrized.cpp
// Function: SignalTestParametrized::SetUp()
void SignalTestParametrized::SetUp() {
    auto tupleParams = GetParam();
    params = {::testing::get<0>(tupleParams), ::testing::get<1>(tupleParams), ::testing::get<2>(tupleParams), ::testing::get<3>(tupleParams), ::testing::get<4>(tupleParams), ::testing::get<5>(tupleParams)};
    
    cout << "Test for signal type: ";
    switch (params.scheme) {
        case (ExecutorScheme::DEFERRED_SYNCHRONOUS):
            return;
        case(ExecutorScheme::ASYNCHRONOUS):
            cout << "Asynchronous";
            break;
        case(ExecutorScheme::STRAND):
            cout << "Strand";
            break;
        case(ExecutorScheme::SYNCHRONOUS):
            cout << "Synchronous";
            break;
        case (ExecutorScheme::THREAD_POOLED):
            cout << "Thread Pooled";
            break;
    }
    cout << endl;
        
    cout << "Emissions: " << params.nEmissions << ", Connections: " << params.nConnections <<
            ", Operations: " << params.nOperations << ", Emitters: " << params.nEmitters <<
            ", Thread Safe: " << params.threadSafe << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x48(%rbp)
addq $0x10, %rdi
callq 0x52c30
movq 0x10(%rax), %rcx
movq %rcx, -0x10(%rbp)
movups (%rax), %xmm0
movaps %xmm0, -0x20(%rbp)
leaq -0x20(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x52d00
movq -0x50(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x38(%rbp)
callq 0x52d20
movq -0x50(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x34(%rbp)
callq 0x52d40
movq -0x50(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x30(%rbp)
callq 0x52d60
movq -0x50(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
callq 0x52d80
movq -0x50(%rbp), %rdi
movb (%rax), %al
andb $0x1, %al
movb %al, -0x28(%rbp)
callq 0x52da0
movq %rax, %rcx
movq -0x48(%rbp), %rax
movl (%rcx), %ecx
movl %ecx, -0x24(%rbp)
movq -0x28(%rbp), %rcx
movq %rcx, 0x28(%rax)
movups -0x38(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq 0xad994(%rip), %rdi     # 0xfafb8
leaq 0x59af1(%rip), %rsi     # 0xa711c
callq 0xd640
movq -0x48(%rbp), %rax
movl 0x2c(%rax), %eax
movq %rax, -0x40(%rbp)
subq $0x4, %rax
ja 0x4d6ac
movq -0x40(%rbp), %rax
leaq 0x59540(%rip), %rcx     # 0xa6b8c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x4d76d
movq 0xad957(%rip), %rdi     # 0xfafb8
leaq 0x59cdb(%rip), %rsi     # 0xa7343
callq 0xd640
jmp 0x4d6ac
movq 0xad942(%rip), %rdi     # 0xfafb8
leaq 0x59ce8(%rip), %rsi     # 0xa7365
callq 0xd640
jmp 0x4d6ac
movq 0xad92d(%rip), %rdi     # 0xfafb8
leaq 0x59c90(%rip), %rsi     # 0xa7322
callq 0xd640
jmp 0x4d6ac
movq 0xad918(%rip), %rdi     # 0xfafb8
leaq 0x59a8c(%rip), %rsi     # 0xa7133
callq 0xd640
movq 0xad905(%rip), %rdi     # 0xfafb8
movq 0xad8d6(%rip), %rsi     # 0xfaf90
callq 0xd6e0
movq 0xad8f2(%rip), %rdi     # 0xfafb8
leaq 0x59a74(%rip), %rsi     # 0xa7141
callq 0xd640
movq %rax, %rdi
movq -0x48(%rbp), %rax
movl 0x1c(%rax), %esi
callq 0xd9b0
movq %rax, %rdi
leaq 0x59a62(%rip), %rsi     # 0xa714d
callq 0xd640
movq %rax, %rdi
movq -0x48(%rbp), %rax
movl 0x18(%rax), %esi
callq 0xd9b0
movq %rax, %rdi
leaq 0x59a54(%rip), %rsi     # 0xa715d
callq 0xd640
movq %rax, %rdi
movq -0x48(%rbp), %rax
movl 0x20(%rax), %esi
callq 0xd9b0
movq %rax, %rdi
leaq 0x59a45(%rip), %rsi     # 0xa716c
callq 0xd640
movq %rax, %rdi
movq -0x48(%rbp), %rax
movl 0x24(%rax), %esi
callq 0xd9b0
movq %rax, %rdi
leaq 0x59a34(%rip), %rsi     # 0xa7179
callq 0xd640
movq %rax, %rdi
movq -0x48(%rbp), %rax
movb 0x28(%rax), %al
andb $0x1, %al
movzbl %al, %esi
callq 0xdce0
movq %rax, %rdi
movq 0xad828(%rip), %rsi     # 0xfaf90
callq 0xd6e0
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)