// File: grmauri[P]pmm/pmm.cpp
// Function: testar_buscaLocal()
void testar_buscaLocal()
{
    Solucao sol;
    clock_t h;
    double tempo;

    lerDados("pmm3.txt");
    ordenarObjetos();

    printf("\n\n>>> TESTE - BUSCA LOCAL - PMM3\n\n");

    heuConAle(sol);
    calcFO(sol);
    printf("Solucao inicial:");
    escreverSolucao(sol, 0);

    Solucao sol2;
    memcpy(&sol2, &sol, sizeof(sol));

    Solucao sol3;
    memcpy(&sol3, &sol, sizeof(sol));

    h = clock();
    heuBLPM(sol);
    h = clock() - h;
    tempo = (double)h/CLOCKS_PER_SEC;
    escreverSolucao(sol, 0);
    printf("BL PM...: %.5f seg.\n",tempo);

    h = clock();
    heuBLMM(sol2);
    h = clock() - h;
    tempo = (double)h/CLOCKS_PER_SEC;
    escreverSolucao(sol2, 0);
    printf("BL MM...: %.5f seg.\n",tempo);

    h = clock();
    heuBLRA(sol3, (numObj * (numMoc + 1)));
    h = clock() - h;
    tempo = (double)h/CLOCKS_PER_SEC;
    escreverSolucao(sol3, 0);
    printf("BL RA...: %.5f seg.\n",tempo);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a30, %rsp           # imm = 0x1A30
leaq -0x8d1(%rbp), %rdi
movq %rdi, -0x1a28(%rbp)
callq 0x22a0
movq -0x1a28(%rbp), %rdx
leaq 0x1a1f(%rip), %rsi      # 0x71cb
leaq -0x8d0(%rbp), %rdi
callq 0x6770
jmp 0x57ba
leaq -0x8d0(%rbp), %rdi
callq 0x32b0
jmp 0x57c8
leaq -0x8d0(%rbp), %rdi
callq 0x20f0
leaq -0x8d1(%rbp), %rdi
callq 0x21a0
callq 0x33d0
leaq 0x19e8(%rip), %rdi      # 0x71d4
movb $0x0, %al
callq 0x2050
leaq -0x89c(%rbp), %rdi
callq 0x4690
leaq -0x89c(%rbp), %rdi
callq 0x46f0
leaq 0x19e5(%rip), %rdi      # 0x71f7
movb $0x0, %al
callq 0x2050
leaq -0x89c(%rbp), %rdi
xorl %esi, %esi
callq 0x5550
leaq -0x1180(%rbp), %rdi
leaq -0x89c(%rbp), %rsi
movl $0x89c, %edx            # imm = 0x89C
callq 0x2140
leaq -0x1a1c(%rbp), %rdi
leaq -0x89c(%rbp), %rsi
movl $0x89c, %edx            # imm = 0x89C
callq 0x2140
callq 0x2100
movq %rax, -0x8a8(%rbp)
leaq -0x89c(%rbp), %rdi
callq 0x4c30
callq 0x2100
subq -0x8a8(%rbp), %rax
movq %rax, -0x8a8(%rbp)
cvtsi2sdq -0x8a8(%rbp), %xmm0
movsd 0x179d(%rip), %xmm1     # 0x7030
divsd %xmm1, %xmm0
movsd %xmm0, -0x8b0(%rbp)
leaq -0x89c(%rbp), %rdi
xorl %esi, %esi
callq 0x5550
movsd -0x8b0(%rbp), %xmm0
leaq 0x194c(%rip), %rdi      # 0x7208
movb $0x1, %al
callq 0x2050
callq 0x2100
movq %rax, -0x8a8(%rbp)
leaq -0x1180(%rbp), %rdi
callq 0x5300
callq 0x2100
subq -0x8a8(%rbp), %rax
movq %rax, -0x8a8(%rbp)
cvtsi2sdq -0x8a8(%rbp), %xmm0
movsd 0x1731(%rip), %xmm1     # 0x7030
divsd %xmm1, %xmm0
movsd %xmm0, -0x8b0(%rbp)
leaq -0x1180(%rbp), %rdi
xorl %esi, %esi
callq 0x5550
movsd -0x8b0(%rbp), %xmm0
leaq 0x18f5(%rip), %rdi      # 0x721d
movb $0x1, %al
callq 0x2050
callq 0x2100
movq %rax, -0x8a8(%rbp)
movl 0x4863(%rip), %esi      # 0xa1a4
movl 0x4861(%rip), %eax      # 0xa1a8
addl $0x1, %eax
imull %eax, %esi
leaq -0x1a1c(%rbp), %rdi
callq 0x51e0
callq 0x2100
subq -0x8a8(%rbp), %rax
movq %rax, -0x8a8(%rbp)
cvtsi2sdq -0x8a8(%rbp), %xmm0
movsd 0x16b3(%rip), %xmm1     # 0x7030
divsd %xmm1, %xmm0
movsd %xmm0, -0x8b0(%rbp)
leaq -0x1a1c(%rbp), %rdi
xorl %esi, %esi
callq 0x5550
movsd -0x8b0(%rbp), %xmm0
leaq 0x188c(%rip), %rdi      # 0x7232
movb $0x1, %al
callq 0x2050
addq $0x1a30, %rsp           # imm = 0x1A30
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x8e0(%rbp)
movl %eax, -0x8e4(%rbp)
jmp 0x59e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x8e0(%rbp)
movl %eax, -0x8e4(%rbp)
leaq -0x8d0(%rbp), %rdi
callq 0x20f0
leaq -0x8d1(%rbp), %rdi
callq 0x21a0
movq -0x8e0(%rbp), %rdi
callq 0x2290