// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x988, %rsp            # imm = 0x988
movq %rsi, %rbp
movl %edi, %ebx
leaq 0x98(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x3d0b(%rip), %rsi      # 0x6090
leaq 0x3d0c(%rip), %rdx      # 0x6098
leaq 0x88(%rsp), %rdi
callq 0x57fa
leaq 0xb8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x3ced(%rip), %rsi      # 0x6099
leaq 0x3cef(%rip), %rdx      # 0x60a2
leaq 0xa8(%rsp), %rdi
callq 0x57fa
movsd 0x3c40(%rip), %xmm0     # 0x6008
movsd %xmm0, 0x30(%rsp)
movsd 0x3c3a(%rip), %xmm0     # 0x6010
movsd %xmm0, 0x78(%rsp)
movl $0xf, %eax
movq %rax, 0x80(%rsp)
movsd 0x3c27(%rip), %xmm0     # 0x6018
movsd %xmm0, 0x48(%rsp)
movsd 0x3c21(%rip), %xmm0     # 0x6020
movsd %xmm0, 0x40(%rsp)
movsd 0x3c1b(%rip), %xmm0     # 0x6028
movsd %xmm0, 0x38(%rsp)
movl $0x2, %eax
cmpl $0x2, %ebx
jl 0x25e3
movq %rax, 0x50(%rsp)
movl $0x1, %eax
movq %rax, 0x28(%rsp)
movq 0x8(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %r15
callq 0x2040
movq %rax, %r14
movl (%rax), %r13d
movl $0x0, (%rax)
leaq 0x58(%rsp), %r12
movq %r15, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x2180
cmpq %r15, (%r12)
je 0x2fea
movslq %eax, %rcx
cmpq %rax, %rcx
jne 0x2ff6
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x2ff6
movq %rax, 0x20(%rsp)
testl %ecx, %ecx
jne 0x24a2
movl %r13d, (%r14)
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x24c3
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x10(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %r12
movl (%r14), %ebx
movl $0x0, (%r14)
leaq 0x58(%rsp), %r13
movq %r12, %rdi
movq %r13, %rsi
movl $0xa, %edx
callq 0x2180
cmpq %r12, (%r13)
je 0x3002
movq %rax, %r15
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
addq $-0x80000000, %rax      # imm = 0x80000000
cmpq %rcx, %rax
jb 0x300e
movl (%r14), %eax
cmpl $0x22, %eax
je 0x300e
testl %eax, %eax
jne 0x2539
movl %ebx, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x255e
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x18(%rbp), %r12
leaq 0x88(%rsp), %r13
movq 0x8(%r13), %rbx
movq %r12, %rdi
callq 0x2070
movq %r13, %rdi
xorl %esi, %esi
movq %rbx, %rdx
movq %r12, %rcx
movq %rax, %r8
callq 0x21d0
movq 0x20(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r13d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2160
cmpq %rbx, (%r12)
je 0x301a
movl (%r14), %eax
testl %eax, %eax
je 0x2618
cmpl $0x22, %eax
jne 0x261b
leaq 0x3f31(%rip), %rdi      # 0x650f
callq 0x21a0
movq %rax, 0x50(%rsp)
movl $0x1, %eax
movq %rax, 0x28(%rsp)
movsd 0x3a36(%rip), %xmm0     # 0x6030
movsd %xmm0, 0x10(%rsp)
xorl %edi, %edi
movl $0x1, %r15d
movl $0x2, %r12d
movl $0x1, %ebp
jmp 0x2d0e
movl %r13d, (%r14)
movss %xmm0, 0x10(%rsp)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x2646
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x28(%rbp), %rbx
leaq 0xa8(%rsp), %r12
movq 0x8(%r12), %r13
movq %rbx, %rdi
callq 0x2070
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0x21d0
xorps %xmm0, %xmm0
cvtss2sd 0x10(%rsp), %xmm0
cmpl $0x3, %r15d
movsd %xmm0, 0x10(%rsp)
ja 0x2cfe
movl %r15d, %eax
leaq 0x39bb(%rip), %rcx      # 0x6050
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x30(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r12d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2160
movss %xmm0, 0x48(%rsp)
cmpq %rbx, (%r15)
je 0x303e
movl (%r14), %eax
testl %eax, %eax
je 0x2a0e
cmpl $0x22, %eax
jne 0x2a11
leaq 0x3e0f(%rip), %rdi      # 0x650f
callq 0x21a0
movq 0x30(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %ebp
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2180
cmpq %rbx, (%r15)
je 0x3026
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x3056
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x3056
movq %rax, 0x80(%rsp)
testl %ecx, %ecx
jne 0x2780
movl %ebp, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x27a5
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movl $0x2, %r15d
movl $0x2, %r12d
movl $0x1, %ebp
movl $0x2, %eax
movq %rax, 0x50(%rsp)
jmp 0x2d09
movq 0x30(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r12d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2180
cmpq %rbx, (%r15)
je 0x3032
movq %rax, %r13
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x3062
movl (%r14), %eax
cmpl $0x22, %eax
je 0x3062
testl %eax, %eax
jne 0x283a
movl %r12d, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x285f
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x38(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r12d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2180
cmpq %rbx, (%r15)
je 0x3086
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x309e
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x309e
movq %rax, 0x50(%rsp)
testl %ecx, %ecx
jne 0x28d7
movl %r12d, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x28fc
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x40(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r12d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2160
movss %xmm0, 0x30(%rsp)
cmpq %rbx, (%r15)
je 0x30b6
movl (%r14), %eax
testl %eax, %eax
je 0x2bbb
cmpl $0x22, %eax
jne 0x2bbe
leaq 0x3bb1(%rip), %rdi      # 0x650f
callq 0x21a0
movq 0x30(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r12d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2180
cmpq %rbx, (%r15)
je 0x304a
movq %rax, %rbp
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x306e
movl (%r14), %eax
cmpl $0x22, %eax
je 0x306e
testl %eax, %eax
jne 0x29d8
movl %r12d, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x29fd
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movl $0x1, %r15d
movl $0x2, %r12d
jmp 0x2d09
movl %r12d, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x2a36
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x38(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r13d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2180
cmpq %rbx, (%r15)
je 0x307a
movq %rax, %r12
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x3092
movl (%r14), %eax
cmpl $0x22, %eax
je 0x3092
testl %eax, %eax
jne 0x2aab
movl %r13d, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x2ad0
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x40(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %r13d
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2160
cmpq %rbx, (%r15)
je 0x30aa
movl (%r14), %eax
testl %eax, %eax
movss %xmm0, 0x40(%rsp)
je 0x2b2f
cmpl $0x22, %eax
jne 0x2b32
leaq 0x39e5(%rip), %rdi      # 0x650f
callq 0x21a0
movl %r13d, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x2b57
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x48(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %ebp
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2160
cmpq %rbx, (%r15)
je 0x30c2
movaps %xmm0, %xmm1
movl (%r14), %eax
testl %eax, %eax
je 0x2c3f
cmpl $0x22, %eax
jne 0x2c42
leaq 0x3959(%rip), %rdi      # 0x650f
callq 0x21a0
movl %r12d, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x2be3
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x48(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x572c
movq 0xe8(%rsp), %rbx
movl (%r14), %ebp
movl $0x0, (%r14)
leaq 0x58(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2160
cmpq %rbx, (%r15)
je 0x30ce
movaps %xmm0, %xmm1
movl (%r14), %eax
testl %eax, %eax
je 0x2ca3
cmpl $0x22, %eax
jne 0x2ca6
leaq 0x38d5(%rip), %rdi      # 0x650f
callq 0x21a0
movl %ebp, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x2c73
movq 0xf8(%rsp), %rsi
incq %rsi
movss %xmm1, 0x38(%rsp)
callq 0x2100
movss 0x38(%rsp), %xmm1
xorps %xmm0, %xmm0
cvtss2sd 0x48(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x40(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
movsd %xmm0, 0x48(%rsp)
xorl %r15d, %r15d
jmp 0x2d04
movl %ebp, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x2cd7
movq 0xf8(%rsp), %rsi
incq %rsi
movss %xmm1, 0x28(%rsp)
callq 0x2100
movss 0x28(%rsp), %xmm1
movq %r13, 0x28(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x30(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movl $0x3, %r15d
movl $0x2, %r12d
movl $0x1, %ebp
movq 0x20(%rsp), %rdi
movq %rdi, %r13
callq 0x20e0
leaq 0xd8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0xc8(%rsp), %rdi
callq 0x576a
leaq 0xc8(%rsp), %rdi
callq 0x322a
movq 0xc8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2d6c
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x2100
callq 0x332d
leaq 0x68(%rsp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
cmpl $0x5, %r15d
ja 0x2f29
movl %r15d, %eax
leaq 0x32c6(%rip), %rcx      # 0x6060
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x639f(%rip), %eax      # 0x9148
incl %eax
imull 0x6391(%rip), %r12d     # 0x9144
imull %eax, %r12d
leaq 0xe8(%rsp), %rsi
leaq 0x8(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movsd 0x38(%rsp), %xmm0
movl %r12d, %edi
movsd 0x40(%rsp), %xmm1
movsd 0x48(%rsp), %xmm2
movsd 0x10(%rsp), %xmm3
callq 0x33d6
movl $0x2, %r8d
leaq 0x32ad(%rip), %rcx      # 0x60a3
jmp 0x2f19
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movsd 0x10(%rsp), %xmm0
callq 0x3f72
movl $0x3, %r8d
leaq 0x328d(%rip), %rcx      # 0x60b2
jmp 0x2f19
leaq 0xe8(%rsp), %rsi
leaq 0x8(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq 0x80(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
callq 0x3ab0
movl $0x5, %r8d
leaq 0x324d(%rip), %rcx      # 0x60a9
jmp 0x2f19
movl 0x62dd(%rip), %eax      # 0x9144
movq 0x28(%rsp), %rdi
imull %eax, %edi
movq 0x50(%rsp), %rsi
imull %eax, %esi
leaq 0xe8(%rsp), %rdx
leaq 0x8(%rsp), %rcx
leaq 0x18(%rsp), %r8
movsd 0x78(%rsp), %xmm0
movsd 0x30(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
callq 0x3bb5
movl $0x2, %r8d
leaq 0x3202(%rip), %rcx      # 0x60af
jmp 0x2f19
movl 0x6293(%rip), %eax      # 0x9148
incl %eax
imull 0x6286(%rip), %ebp      # 0x9144
imull %eax, %ebp
leaq 0xe8(%rsp), %rsi
leaq 0x8(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movl %ebp, %edi
movsd 0x10(%rsp), %xmm0
callq 0x3662
movl $0x2, %r8d
leaq 0x31b9(%rip), %rcx      # 0x60a6
jmp 0x2f19
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movsd 0x10(%rsp), %xmm0
callq 0x40d4
movl $0x3, %r8d
leaq 0x319d(%rip), %rcx      # 0x60b6
leaq 0x58(%rsp), %rdi
movq 0x8(%rdi), %rdx
xorl %esi, %esi
callq 0x21d0
movq 0xa8(%rsp), %rdi
leaq 0x3182(%rip), %rsi      # 0x60ba
callq 0x2110
movq %rax, %rbx
movq 0x58(%rsp), %rdx
movl 0x980(%rsp), %r8d
movsd 0x8(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
leaq 0x315d(%rip), %rsi      # 0x60bd
movq %rax, %rdi
movl %r13d, %ecx
movb $0x2, %al
callq 0x2190
movq %rbx, %rdi
callq 0x20f0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x2f8c
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x2fb1
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x2fd6
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x2100
xorl %eax, %eax
addq $0x988, %rsp            # imm = 0x988
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3519(%rip), %rdi      # 0x650a
callq 0x2090
leaq 0x350d(%rip), %rdi      # 0x650a
callq 0x21a0
leaq 0x3501(%rip), %rdi      # 0x650a
callq 0x2090
leaq 0x34f5(%rip), %rdi      # 0x650a
callq 0x21a0
leaq 0x34ee(%rip), %rdi      # 0x650f
callq 0x2090
leaq 0x34dd(%rip), %rdi      # 0x650a
callq 0x2090
leaq 0x34d1(%rip), %rdi      # 0x650a
callq 0x2090
leaq 0x34ca(%rip), %rdi      # 0x650f
callq 0x2090
leaq 0x34b9(%rip), %rdi      # 0x650a
callq 0x2090
leaq 0x34ad(%rip), %rdi      # 0x650a
callq 0x21a0
leaq 0x34a1(%rip), %rdi      # 0x650a
callq 0x21a0
leaq 0x3495(%rip), %rdi      # 0x650a
callq 0x21a0
leaq 0x3489(%rip), %rdi      # 0x650a
callq 0x2090
leaq 0x347d(%rip), %rdi      # 0x650a
callq 0x2090
leaq 0x3471(%rip), %rdi      # 0x650a
callq 0x21a0
leaq 0x3465(%rip), %rdi      # 0x650a
callq 0x21a0
leaq 0x345e(%rip), %rdi      # 0x650f
callq 0x2090
leaq 0x3452(%rip), %rdi      # 0x650f
callq 0x2090
leaq 0x3446(%rip), %rdi      # 0x650f
callq 0x2090
leaq 0x343a(%rip), %rdi      # 0x650f
callq 0x2090
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
jmp 0x312a
jmp 0x312a
jmp 0x311c
jmp 0x3147
jmp 0x311c
jmp 0x311c
jmp 0x3147
jmp 0x311c
movq %rax, %r15
cmpl $0x0, (%r14)
jne 0x318f
movl %r12d, (%r14)
jmp 0x318f
movq %rax, %r15
cmpl $0x0, (%r14)
jne 0x318f
movl %ebp, (%r14)
jmp 0x318f
jmp 0x31d5
jmp 0x31d5
jmp 0x31d5
movq %rax, %r15
cmpl $0x0, (%r14)
jne 0x318f
movl %r13d, (%r14)
jmp 0x318f
movq %rax, %r15
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x31d8
movq 0x68(%rsp), %rsi
jmp 0x31c6
movq %rax, %r15
movq 0xc8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x31d8
movq 0xd8(%rsp), %rsi
jmp 0x31c6
movq %rax, %r15
cmpl $0x0, (%r14)
jne 0x318f
movl %ebx, (%r14)
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
jmp 0x31b9
movq %rax, %r15
cmpl $0x0, (%r14)
jne 0x31ad
movl %r13d, (%r14)
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x31d8
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2100
jmp 0x31d8
movq %rax, %r15
jmp 0x31fd
movq %rax, %r15
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x31fd
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x2100
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x3222
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x2100
movq %r15, %rdi
callq 0x21f0