// File: grmauri[P]pmm/pmm.cpp
// Function: main
int main(int argc, char *argv[])
{
    #ifdef MODO_TESTE
        testar_alocacao();
        testar_estruturas();
        testar_heuConstrutivas();
        testar_buscaLocal();
    #else
        //---
        // parametros do executavel
        int seed = 0;
        int metodo = 1; // 0: SA; 1: BT; 2: GRASP; 3: AG; 4: VNS; 5: ILS
        string instancia = "pmm1.txt";
        double tempo_limite = 5;
        string saida = "saida.txt";
        // SA
        double alfa = 0.975;
        int sa_max = 2;
        double t_0 = 1000;
        double t_c = 0.01;
        // BT
        int tam_lista = 1;
        // GRASP
        int LRC = 15;
        // AG
        int pop = 1;
        int cro = 2;
        double mut = 7;
        double eli = 15;
        // VNS e ILS sem parametros especificos
        //---
        // usar os valores passados por parametro; caso contrario, usara os valores definidos acima
        if (argc > 1)
        {
            seed = stoi(argv[1]);
            metodo = stoi(argv[2]);
            instancia = argv[3];
            tempo_limite = stof(argv[4]);
            saida = argv[5];
            switch(metodo)
            {
                case 0:
                    alfa = stof(argv[6]);
                    sa_max = stoi(argv[7]);
                    t_0 = stof(argv[8]);
                    t_c = stof(argv[9]);
                    break;
                case 1:
                    tam_lista = stoi(argv[6]);
                    break;
                case 2:
                    LRC = stoi(argv[6]);
                    break;
                case 3:
                    pop = stoi(argv[6]);
                    cro = stoi(argv[7]);
                    mut = stof(argv[8]);
                    eli = stof(argv[9]);
                    break;
            }
        }
        //---
        srand(seed);

        lerDados(instancia);
        //testarDados("");
        ordenarObjetos();

        Solucao sol;
        string aux;
        double tempo_melhor, tempo_total;

        switch(metodo)
        {
            case 0:
                simulated_annealing(alfa, sa_max*(numObj*(numMoc+1)), t_0, t_c, tempo_limite, sol, tempo_melhor, tempo_total);
                aux = "SA";
                break;
            case 1:
                busca_tabu(tam_lista * (numObj*(numMoc+1)), tempo_limite, sol, tempo_melhor, tempo_total);
                aux = "BT";
                break;
            case 2:
                grasp(LRC, tempo_limite, sol, tempo_melhor, tempo_total);
                aux = "GRASP";
                break;
            case 3:
                algoritmo_genetico(pop * numObj, cro * numObj, mut, eli, tempo_limite, sol, tempo_melhor, tempo_total);
                aux = "AG";
                break;
            case 4:
                vns(tempo_limite, sol, tempo_melhor, tempo_total);
                aux = "VNS";
                break;
            case 5:
                ils(tempo_limite, sol, tempo_melhor, tempo_total);
                aux = "ILS";
                break;
        }

        //---
        // atualizar o arquivo de saida
        FILE *f = fopen(saida.c_str(),"at");
        fprintf(f, "%s\t%d\t\t%d\t%.5f\t\t%.5f\n", aux.c_str(), seed, sol.funObj, tempo_melhor, tempo_total);
        fclose(f);
    #endif

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd30, %rsp            # imm = 0xD30
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movl $0x1, -0x18(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0xbc8(%rbp)
callq 0x22a0
movq -0xbc8(%rbp), %rdx
leaq 0x4bfb(%rip), %rsi      # 0x7070
leaq -0x38(%rbp), %rdi
callq 0x6770
jmp 0x2480
leaq -0x39(%rbp), %rdi
callq 0x21a0
movabsq $0x4014000000000000, %rax # imm = 0x4014000000000000
movq %rax, -0x58(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0xbd0(%rbp)
callq 0x22a0
movq -0xbd0(%rbp), %rdx
leaq 0x4bc4(%rip), %rsi      # 0x7079
leaq -0x78(%rbp), %rdi
callq 0x6770
jmp 0x24c0
leaq -0x79(%rbp), %rdi
callq 0x21a0
movsd 0x4b57(%rip), %xmm0     # 0x7028
movsd %xmm0, -0x88(%rbp)
movl $0x2, -0x8c(%rbp)
movsd 0x4b35(%rip), %xmm0     # 0x7020
movsd %xmm0, -0x98(%rbp)
movsd 0x4b1d(%rip), %xmm0     # 0x7018
movsd %xmm0, -0xa0(%rbp)
movl $0x1, -0xa4(%rbp)
movl $0xf, -0xa8(%rbp)
movl $0x1, -0xac(%rbp)
movl $0x2, -0xb0(%rbp)
movsd 0x4add(%rip), %xmm0     # 0x7010
movsd %xmm0, -0xb8(%rbp)
movsd 0x4ac5(%rip), %xmm0     # 0x7008
movsd %xmm0, -0xc0(%rbp)
cmpl $0x1, -0x8(%rbp)
jle 0x2f54
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xbe0(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0xbd8(%rbp)
callq 0x22a0
movq -0xbe0(%rbp), %rsi
movq -0xbd8(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
callq 0x6770
jmp 0x2593
xorl %eax, %eax
movl %eax, %esi
leaq -0xe0(%rbp), %rdi
movl $0xa, %edx
callq 0x6820
movl %eax, -0xbe4(%rbp)
jmp 0x25b0
movl -0xbe4(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x20f0
leaq -0xe1(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xbf8(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0xbf0(%rbp)
callq 0x22a0
movq -0xbf8(%rbp), %rsi
movq -0xbf0(%rbp), %rdx
leaq -0x108(%rbp), %rdi
callq 0x6770
jmp 0x260f
xorl %eax, %eax
movl %eax, %esi
leaq -0x108(%rbp), %rdi
movl $0xa, %edx
callq 0x6820
movl %eax, -0xbfc(%rbp)
jmp 0x262c
movl -0xbfc(%rbp), %eax
movl %eax, -0x18(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x20f0
leaq -0x109(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0x38(%rbp), %rdi
callq 0x2220
jmp 0x2660
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0xc10(%rbp)
leaq -0x131(%rbp), %rdi
movq %rdi, -0xc08(%rbp)
callq 0x22a0
movq -0xc10(%rbp), %rsi
movq -0xc08(%rbp), %rdx
leaq -0x130(%rbp), %rdi
callq 0x6770
jmp 0x269e
xorl %eax, %eax
movl %eax, %esi
leaq -0x130(%rbp), %rdi
callq 0x6860
movss %xmm0, -0xc14(%rbp)
jmp 0x26b8
movss -0xc14(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20f0
leaq -0x131(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
leaq -0x78(%rbp), %rdi
callq 0x2220
jmp 0x26f4
movl -0x18(%rbp), %eax
movq %rax, -0xc20(%rbp)
subq $0x3, %rax
ja 0x2f52
movq -0xc20(%rbp), %rax
leaq 0x4932(%rip), %rcx      # 0x7048
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x21a0
jmp 0x329f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x79(%rbp), %rdi
callq 0x21a0
jmp 0x3296
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2779
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x20f0
leaq -0xe1(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x27b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x20f0
leaq -0x109(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x27f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20f0
leaq -0x131(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0xc30(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0xc28(%rbp)
callq 0x22a0
movq -0xc30(%rbp), %rsi
movq -0xc28(%rbp), %rdx
leaq -0x158(%rbp), %rdi
callq 0x6770
jmp 0x2847
xorl %eax, %eax
movl %eax, %esi
leaq -0x158(%rbp), %rdi
callq 0x6860
movss %xmm0, -0xc34(%rbp)
jmp 0x2861
movss -0xc34(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x88(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x20f0
leaq -0x159(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0xc48(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0xc40(%rbp)
callq 0x22a0
movq -0xc48(%rbp), %rsi
movq -0xc40(%rbp), %rdx
leaq -0x180(%rbp), %rdi
callq 0x6770
jmp 0x28cb
xorl %eax, %eax
movl %eax, %esi
leaq -0x180(%rbp), %rdi
movl $0xa, %edx
callq 0x6820
movl %eax, -0xc4c(%rbp)
jmp 0x28e8
movl -0xc4c(%rbp), %eax
movl %eax, -0x8c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x181(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0xc60(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0xc58(%rbp)
callq 0x22a0
movq -0xc60(%rbp), %rsi
movq -0xc58(%rbp), %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x6770
jmp 0x294a
xorl %eax, %eax
movl %eax, %esi
leaq -0x1a8(%rbp), %rdi
callq 0x6860
movss %xmm0, -0xc64(%rbp)
jmp 0x2964
movss -0xc64(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x98(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x20f0
leaq -0x1a9(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0xc78(%rbp)
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0xc70(%rbp)
callq 0x22a0
movq -0xc78(%rbp), %rsi
movq -0xc70(%rbp), %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x6770
jmp 0x29ce
xorl %eax, %eax
movl %eax, %esi
leaq -0x1d0(%rbp), %rdi
callq 0x6860
movss %xmm0, -0xc7c(%rbp)
jmp 0x29e8
movss -0xc7c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xa0(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x20f0
leaq -0x1d1(%rbp), %rdi
callq 0x21a0
jmp 0x2f52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2a3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x20f0
leaq -0x159(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2a76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x181(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2aad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x20f0
leaq -0x1a9(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x20f0
leaq -0x1d1(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0xc90(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0xc88(%rbp)
callq 0x22a0
movq -0xc90(%rbp), %rsi
movq -0xc88(%rbp), %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x6770
jmp 0x2b33
xorl %eax, %eax
movl %eax, %esi
leaq -0x1f8(%rbp), %rdi
movl $0xa, %edx
callq 0x6820
movl %eax, -0xc94(%rbp)
jmp 0x2b50
movl -0xc94(%rbp), %eax
movl %eax, -0xa4(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x20f0
leaq -0x1f9(%rbp), %rdi
callq 0x21a0
jmp 0x2f52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x20f0
leaq -0x1f9(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0xca8(%rbp)
leaq -0x221(%rbp), %rdi
movq %rdi, -0xca0(%rbp)
callq 0x22a0
movq -0xca8(%rbp), %rsi
movq -0xca0(%rbp), %rdx
leaq -0x220(%rbp), %rdi
callq 0x6770
jmp 0x2bee
xorl %eax, %eax
movl %eax, %esi
leaq -0x220(%rbp), %rdi
movl $0xa, %edx
callq 0x6820
movl %eax, -0xcac(%rbp)
jmp 0x2c0b
movl -0xcac(%rbp), %eax
movl %eax, -0xa8(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x20f0
leaq -0x221(%rbp), %rdi
callq 0x21a0
jmp 0x2f52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x20f0
leaq -0x221(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0xcc0(%rbp)
leaq -0x249(%rbp), %rdi
movq %rdi, -0xcb8(%rbp)
callq 0x22a0
movq -0xcc0(%rbp), %rsi
movq -0xcb8(%rbp), %rdx
leaq -0x248(%rbp), %rdi
callq 0x6770
jmp 0x2ca9
xorl %eax, %eax
movl %eax, %esi
leaq -0x248(%rbp), %rdi
movl $0xa, %edx
callq 0x6820
movl %eax, -0xcc4(%rbp)
jmp 0x2cc6
movl -0xcc4(%rbp), %eax
movl %eax, -0xac(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x20f0
leaq -0x249(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0xcd8(%rbp)
leaq -0x271(%rbp), %rdi
movq %rdi, -0xcd0(%rbp)
callq 0x22a0
movq -0xcd8(%rbp), %rsi
movq -0xcd0(%rbp), %rdx
leaq -0x270(%rbp), %rdi
callq 0x6770
jmp 0x2d28
xorl %eax, %eax
movl %eax, %esi
leaq -0x270(%rbp), %rdi
movl $0xa, %edx
callq 0x6820
movl %eax, -0xcdc(%rbp)
jmp 0x2d45
movl -0xcdc(%rbp), %eax
movl %eax, -0xb0(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x20f0
leaq -0x271(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0xcf0(%rbp)
leaq -0x299(%rbp), %rdi
movq %rdi, -0xce8(%rbp)
callq 0x22a0
movq -0xcf0(%rbp), %rsi
movq -0xce8(%rbp), %rdx
leaq -0x298(%rbp), %rdi
callq 0x6770
jmp 0x2da7
xorl %eax, %eax
movl %eax, %esi
leaq -0x298(%rbp), %rdi
callq 0x6860
movss %xmm0, -0xcf4(%rbp)
jmp 0x2dc1
movss -0xcf4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xb8(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x20f0
leaq -0x299(%rbp), %rdi
callq 0x21a0
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0xd08(%rbp)
leaq -0x2c1(%rbp), %rdi
movq %rdi, -0xd00(%rbp)
callq 0x22a0
movq -0xd08(%rbp), %rsi
movq -0xd00(%rbp), %rdx
leaq -0x2c0(%rbp), %rdi
callq 0x6770
jmp 0x2e2b
xorl %eax, %eax
movl %eax, %esi
leaq -0x2c0(%rbp), %rdi
callq 0x6860
movss %xmm0, -0xd0c(%rbp)
jmp 0x2e45
movss -0xd0c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xc0(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x20f0
leaq -0x2c1(%rbp), %rdi
callq 0x21a0
jmp 0x2f52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2e9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x20f0
leaq -0x249(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ed3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x20f0
leaq -0x271(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2f0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x20f0
leaq -0x299(%rbp), %rdi
callq 0x21a0
jmp 0x328d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2f41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x20f0
leaq -0x2c1(%rbp), %rdi
callq 0x21a0
jmp 0x328d
jmp 0x2f54
movl -0x14(%rbp), %edi
callq 0x2170
leaq -0x2e8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x20b0
jmp 0x2f6e
leaq -0x2e8(%rbp), %rdi
callq 0x32b0
jmp 0x2f7c
leaq -0x2e8(%rbp), %rdi
callq 0x20f0
callq 0x33d0
jmp 0x2f8f
leaq -0xba8(%rbp), %rdi
callq 0x2230
movl -0x18(%rbp), %eax
movq %rax, -0xd18(%rbp)
subq $0x5, %rax
ja 0x31d3
movq -0xd18(%rbp), %rax
leaq 0x409b(%rip), %rcx      # 0x7058
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x20f0
jmp 0x328d
movsd -0x88(%rbp), %xmm0
movl -0x8c(%rbp), %edi
movl 0x71ad(%rip), %eax      # 0xa1a4
movl 0x71ab(%rip), %ecx      # 0xa1a8
incl %ecx
imull %ecx, %eax
imull %eax, %edi
movsd -0x98(%rbp), %xmm1
movsd -0xa0(%rbp), %xmm2
movsd -0x58(%rbp), %xmm3
leaq -0xb84(%rbp), %rsi
leaq -0xbb0(%rbp), %rdx
leaq -0xbb8(%rbp), %rcx
callq 0x3520
jmp 0x3036
leaq 0x4046(%rip), %rsi      # 0x7083
leaq -0xba8(%rbp), %rdi
callq 0x2220
jmp 0x304b
jmp 0x31d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xba8(%rbp), %rdi
callq 0x20f0
jmp 0x328d
movl -0xa4(%rbp), %edi
movl 0x712b(%rip), %eax      # 0xa1a4
movl 0x7129(%rip), %ecx      # 0xa1a8
incl %ecx
imull %ecx, %eax
imull %eax, %edi
movsd -0x58(%rbp), %xmm0
leaq -0xb84(%rbp), %rsi
leaq -0xbb0(%rbp), %rdx
leaq -0xbb8(%rbp), %rcx
callq 0x3820
jmp 0x30a8
leaq 0x3fd7(%rip), %rsi      # 0x7086
leaq -0xba8(%rbp), %rdi
callq 0x2220
jmp 0x30bd
jmp 0x31d3
movl -0xa8(%rbp), %edi
movsd -0x58(%rbp), %xmm0
leaq -0xb84(%rbp), %rsi
leaq -0xbb0(%rbp), %rdx
leaq -0xbb8(%rbp), %rcx
callq 0x3cd0
jmp 0x30e9
leaq 0x3f99(%rip), %rsi      # 0x7089
leaq -0xba8(%rbp), %rdi
callq 0x2220
jmp 0x30fe
jmp 0x31d3
movl -0xac(%rbp), %edi
movl 0x7095(%rip), %eax      # 0xa1a4
imull %eax, %edi
movl -0xb0(%rbp), %esi
imull %eax, %esi
movsd -0xb8(%rbp), %xmm0
movsd -0xc0(%rbp), %xmm1
movsd -0x58(%rbp), %xmm2
leaq -0xb84(%rbp), %rdx
leaq -0xbb0(%rbp), %rcx
leaq -0xbb8(%rbp), %r8
callq 0x3e10
jmp 0x314c
leaq 0x3f3c(%rip), %rsi      # 0x708f
leaq -0xba8(%rbp), %rdi
callq 0x2220
jmp 0x3161
jmp 0x31d3
movsd -0x58(%rbp), %xmm0
leaq -0xb84(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
leaq -0xbb8(%rbp), %rdx
callq 0x4320
jmp 0x3184
leaq 0x3f07(%rip), %rsi      # 0x7092
leaq -0xba8(%rbp), %rdi
callq 0x2220
jmp 0x3199
jmp 0x31d3
movsd -0x58(%rbp), %xmm0
leaq -0xb84(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
leaq -0xbb8(%rbp), %rdx
callq 0x44f0
jmp 0x31bc
leaq 0x3ed3(%rip), %rsi      # 0x7096
leaq -0xba8(%rbp), %rdi
callq 0x2220
jmp 0x31d1
jmp 0x31d3
leaq -0x78(%rbp), %rdi
callq 0x20a0
movq %rax, %rdi
leaq 0x3eb4(%rip), %rsi      # 0x709a
callq 0x21d0
movq %rax, -0xd20(%rbp)
jmp 0x31f4
movq -0xd20(%rbp), %rax
movq %rax, -0xbc0(%rbp)
movq -0xbc0(%rbp), %rax
movq %rax, -0xd28(%rbp)
leaq -0xba8(%rbp), %rdi
callq 0x20a0
movq -0xd28(%rbp), %rdi
movq %rax, %rdx
movl -0x14(%rbp), %ecx
movl -0x2ec(%rbp), %r8d
movsd -0xbb0(%rbp), %xmm0
movsd -0xbb8(%rbp), %xmm1
leaq 0x3e56(%rip), %rsi      # 0x709d
movb $0x2, %al
callq 0x2240
movq -0xbc0(%rbp), %rdi
callq 0x2180
jmp 0x325c
movl $0x0, -0x4(%rbp)
leaq -0xba8(%rbp), %rdi
callq 0x20f0
leaq -0x78(%rbp), %rdi
callq 0x20f0
leaq -0x38(%rbp), %rdi
callq 0x20f0
movl -0x4(%rbp), %eax
addq $0xd30, %rsp            # imm = 0xD30
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x20f0
leaq -0x38(%rbp), %rdi
callq 0x20f0
movq -0x48(%rbp), %rdi
callq 0x2290
nopl (%rax,%rax)