// File: /workspace/github_cpp_makefile_star2_O3/grmauri[P]pmm/pmm.cpp
// Function: testar_estruturas()
void testar_estruturas()
{
    const int repeticoes = 1000;

    //---
    clock_t h;
    double tempo;
    Solucao sol;
    SolucaoBIN solB;

    //---
    printf("\n\n>>> TESTE DE COMPARACAO DAS ESTRUTURAS DA SOLUCAO - PMM3 - %d REPETICOES\n\n", repeticoes);
    lerDados("pmm3.txt");

    //---
    h = clock();
    for(int r = 0; r < repeticoes; r++)
        heuConAle(sol);
    h = clock() - h;
    tempo = (double)h/CLOCKS_PER_SEC;
    printf("Heuristica construtiva aleatoria................: %.5f seg.\n",tempo);

    //---
    h = clock();
    for(int r = 0; r < repeticoes; r++)
        heuConAleBIN(solB);
    h = clock() - h;
    tempo = (double)h/CLOCKS_PER_SEC;
    printf("Heuristica construtiva aleatoria (BINARIA)......: %.5f seg.\n",tempo);

    //---
    h = clock();
    for(int r = 0; r < repeticoes; r++)
        calcFO(sol);
    h = clock() - h;
    tempo = (double)h/CLOCKS_PER_SEC;
    printf("\nCalculo da FO...................................: %.5f seg.\n",tempo);

    //---
    h = clock();
    for(int r = 0; r < repeticoes; r++)
        calcFOBIN(solB);
    h = clock() - h;
    tempo = (double)h/CLOCKS_PER_SEC;
    printf("Calculo da FO (BINARIA).........................: %.5f seg.\n",tempo);

    //---
    heuConAle(sol);
    heuConAleBIN(solB);
    printf("\nSolucao:");
    escreverSolucao(sol, 0);
    printf("\nSolucao BINARIA:");
    escreverSolucaoBIN(solB, 0);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x19800, %rsp          # imm = 0x19800
leaq 0x1094(%rip), %rdi      # 0x627f
movl $0x3e8, %esi            # imm = 0x3E8
xorl %eax, %eax
callq 0x2050
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xf6d(%rip), %rsi       # 0x6174
leaq 0xf6e(%rip), %rdx       # 0x617c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x58e6
movq %rbx, %rdi
callq 0x322a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x523a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2100
movl $0x3e8, %ebp            # imm = 0x3E8
callq 0x20a0
movq %rax, %rbx
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x42bb
decl %ebp
jne 0x524c
callq 0x20a0
subq %rbx, %rax
cvtsi2sd %rax, %xmm0
divsd 0xdcb(%rip), %xmm0      # 0x6038
leaq 0x1058(%rip), %rdi      # 0x62cc
movb $0x1, %al
callq 0x2050
movl $0x3e8, %ebp            # imm = 0x3E8
callq 0x20a0
movq %rax, %rbx
leaq 0x8c4(%rsp), %r14
movq %r14, %rdi
callq 0x53dc
decl %ebp
jne 0x5290
callq 0x20a0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0xd84(%rip), %xmm0      # 0x6038
leaq 0x104e(%rip), %rdi      # 0x6309
movb $0x1, %al
callq 0x2050
movl $0x3e8, %ebp            # imm = 0x3E8
callq 0x20a0
movq %rax, %rbx
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x42ff
decl %ebp
jne 0x52d4
callq 0x20a0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0xd40(%rip), %xmm0      # 0x6038
leaq 0x1047(%rip), %rdi      # 0x6346
movb $0x1, %al
callq 0x2050
movl $0x3e8, %ebp            # imm = 0x3E8
callq 0x20a0
movq %rax, %rbx
leaq 0x8c4(%rsp), %r14
movq %r14, %rdi
callq 0x5447
decl %ebp
jne 0x531b
callq 0x20a0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0xcf9(%rip), %xmm0      # 0x6038
leaq 0x103e(%rip), %rdi      # 0x6384
movb $0x1, %al
callq 0x2050
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x42bb
leaq 0x8c4(%rsp), %r14
movq %r14, %rdi
callq 0x53dc
leaq 0x1050(%rip), %rdi      # 0x63c1
xorl %eax, %eax
callq 0x2050
movl 0x898(%rbx), %esi
leaq 0xd92(%rip), %rbx       # 0x6117
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x1035(%rip), %rdi      # 0x63cb
xorl %eax, %eax
callq 0x2050
movl 0x18f38(%r14), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2050
addq $0x19800, %rsp          # imm = 0x19800
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x53d4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2100
movq %rbx, %rdi
callq 0x21f0