// File: /workspace/github_cpp_makefile_star2_O3/WShabti-Team[P]WShabtiPict/wshabtilib/api/model.cpp
// Function: pictcore::Model::generateFlat()
void Model::generateFlat()
{
    // no support for result rows in this generation mode
    assert( 0 == GetResultParameterCount() );
    // no user-defined seeds allowed in this generation mode
    assert( m_rowSeeds.empty() );

    // seeds will ensure values in test cases proceed in the same order as in parameter definitions

    int maxValues = 0;
    for( vector<Parameter*>::iterator ip = m_parameters.begin(); ip != m_parameters.end(); ++ip )
    {
        maxValues = max( maxValues, static_cast<int>( ( *ip )->GetValueCount() ) );
    }

    int curVal = 0;
    while( curVal < maxValues )
    {
        RowSeed seed;

        for( vector<Parameter*>::iterator ip = m_parameters.begin(); ip != m_parameters.end(); ++ip )
        {
            if( curVal < ( *ip )->GetValueCount() )
            {
                seed.insert( make_pair( *ip, curVal ) );
            }
        }

        m_rowSeeds.push_back( seed );
        ++curVal;
    };

    // order is always 1 across all params
    m_order = 1;
    generateFixedOrder();

    // trim the output if necessary
    if( m_maxRows > 0 && m_maxRows < static_cast<long>( m_results.size() ) )
    {
        m_results.erase( m_results.begin() + m_maxRows, m_results.end() );
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
movq 0x8(%rdi), %rax
movq 0x10(%rdi), %rcx
cmpq %rcx, %rax
je 0xaf13
xorl %edx, %edx
movq %rax, %rsi
movq (%rsi), %rdi
movzbl 0x3c(%rdi), %edi
addq %rdi, %rdx
addq $0x8, %rsi
cmpq %rcx, %rsi
jne 0xae23
testq %rdx, %rdx
jne 0xafae
leaq 0x68(%rbx), %r14
cmpq %r14, 0x68(%rbx)
jne 0xaf8f
cmpq %rcx, %rax
je 0xaf1d
xorl %ebp, %ebp
movl %ebp, %edx
movq (%rax), %rsi
movl 0x38(%rsi), %ebp
cmpl %ebp, %edx
cmovgl %edx, %ebp
addq $0x8, %rax
cmpq %rcx, %rax
jne 0xae58
testl %ebp, %ebp
jle 0xaf1d
leaq 0x18(%rsp), %r15
leaq 0x8(%rsp), %r12
xorl %r13d, %r13d
movq %r14, (%rsp)
movl $0x0, 0x20(%rsp)
xorl %eax, %eax
movq %rax, 0x28(%rsp)
leaq 0x20(%rsp), %rcx
movq %rcx, 0x30(%rsp)
movq %rcx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq 0x8(%rbx), %r14
movq 0x10(%rbx), %rax
cmpq %rax, %r14
je 0xaedf
movq (%r14), %rcx
cmpl 0x38(%rcx), %r13d
jge 0xaed9
movq %rcx, 0x8(%rsp)
movl %r13d, 0x10(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0xe9ce
movq 0x10(%rbx), %rax
addq $0x8, %r14
jmp 0xaeb2
movq (%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0xd39c
movq %rax, %rdi
movq %r14, %rsi
callq 0x5080
incq 0x78(%rbx)
incl %r13d
movq %r15, %rdi
callq 0xcb10
cmpl %ebp, %r13d
jne 0xae87
jmp 0xaf1d
leaq 0x68(%rbx), %rax
cmpq %rax, 0x68(%rbx)
jne 0xaf8f
movl $0x1, 0x108(%rbx)
movq %rbx, %rdi
callq 0xa9fc
movq 0x118(%rbx), %rax
testq %rax, %rax
jle 0xaf80
movq 0xd0(%rbx), %rcx
movq 0xd8(%rbx), %rdx
subq %rcx, %rdx
movq %rdx, %rsi
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %rdi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rdi
cmpq %rdi, %rax
jge 0xaf80
addq $0xd0, %rbx
leaq (%rax,%rax,2), %rax
leaq (%rcx,%rax,8), %rsi
addq %rcx, %rdx
movq %rbx, %rdi
callq 0xe8c0
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1b8f0(%rip), %rdi     # 0x26886
leaq 0x1b6a0(%rip), %rsi     # 0x2663d
leaq 0x1b8bd(%rip), %rcx     # 0x26861
movl $0x3a8, %edx            # imm = 0x3A8
callq 0x52c0
leaq 0x1b815(%rip), %rdi     # 0x267ca
leaq 0x1b681(%rip), %rsi     # 0x2663d
leaq 0x1b89e(%rip), %rcx     # 0x26861
movl $0x3a6, %edx            # imm = 0x3A6
callq 0x52c0
jmp 0xafcf
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0xcb10
movq %rbx, %rdi
callq 0x56a0