// File: /workspace/github_cpp_makefile_star2_O1/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 0x114e(%rip), %rdi      # 0x624f
movl $0x3e8, %esi            # imm = 0x3E8
xorl %eax, %eax
callq 0x2050
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1027(%rip), %rsi      # 0x6144
leaq 0x1028(%rip), %rdx      # 0x614c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x57fa
movq %rbx, %rdi
callq 0x322a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x5150
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 0x4220
decl %ebp
jne 0x5162
callq 0x20a0
subq %rbx, %rax
cvtsi2sd %rax, %xmm0
divsd 0xeb5(%rip), %xmm0      # 0x6038
leaq 0x1112(%rip), %rdi      # 0x629c
movb $0x1, %al
callq 0x2050
movl $0x3e8, %ebp            # imm = 0x3E8
callq 0x20a0
movq %rax, %rbx
leaq 0x8c4(%rsp), %r14
movq %r14, %rdi
callq 0x52f2
decl %ebp
jne 0x51a6
callq 0x20a0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0xe6e(%rip), %xmm0      # 0x6038
leaq 0x1108(%rip), %rdi      # 0x62d9
movb $0x1, %al
callq 0x2050
movl $0x3e8, %ebp            # imm = 0x3E8
callq 0x20a0
movq %rax, %rbx
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x4264
decl %ebp
jne 0x51ea
callq 0x20a0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0xe2a(%rip), %xmm0      # 0x6038
leaq 0x1101(%rip), %rdi      # 0x6316
movb $0x1, %al
callq 0x2050
movl $0x3e8, %ebp            # imm = 0x3E8
callq 0x20a0
movq %rax, %rbx
leaq 0x8c4(%rsp), %r14
movq %r14, %rdi
callq 0x5359
decl %ebp
jne 0x5231
callq 0x20a0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0xde3(%rip), %xmm0      # 0x6038
leaq 0x10f8(%rip), %rdi      # 0x6354
movb $0x1, %al
callq 0x2050
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x4220
leaq 0x8c4(%rsp), %r14
movq %r14, %rdi
callq 0x52f2
leaq 0x110a(%rip), %rdi      # 0x6391
xorl %eax, %eax
callq 0x2050
movl 0x898(%rbx), %esi
leaq 0xe4c(%rip), %rbx       # 0x60e7
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x10ef(%rip), %rdi      # 0x639b
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 0x52ea
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2100
movq %rbx, %rdi
callq 0x21f0