// File: /workspace/github_cpp_makefile_star2_O3/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 0x3d3b(%rip), %rsi      # 0x60c0
leaq 0x3d3c(%rip), %rdx      # 0x60c8
leaq 0x88(%rsp), %rdi
callq 0x58e6
leaq 0xb8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x3d1d(%rip), %rsi      # 0x60c9
leaq 0x3d1f(%rip), %rdx      # 0x60d2
leaq 0xa8(%rsp), %rdi
callq 0x58e6
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 0x5812
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 0x5812
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 0x5812
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 0x3f61(%rip), %rdi      # 0x653f
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 0x5812
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 0x3e3f(%rip), %rdi      # 0x653f
callq 0x21a0
movq 0x30(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x5812
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 0x5812
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 0x5812
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 0x5812
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 0x3be1(%rip), %rdi      # 0x653f
callq 0x21a0
movq 0x30(%rbp), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x5812
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 0x5812
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 0x5812
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 0x3a15(%rip), %rdi      # 0x653f
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 0x5812
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 0x3989(%rip), %rdi      # 0x653f
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 0x5812
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 0x3905(%rip), %rdi      # 0x653f
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 0x5850
leaq 0xc8(%rsp), %rdi
callq 0x322a
movq 0xc8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2d6c
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x2100
callq 0x3328
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 0x3463
movl $0x2, %r8d
leaq 0x32dd(%rip), %rcx      # 0x60d3
jmp 0x2f19
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movsd 0x10(%rsp), %xmm0
callq 0x400d
movl $0x3, %r8d
leaq 0x32bd(%rip), %rcx      # 0x60e2
jmp 0x2f19
leaq 0xe8(%rsp), %rsi
leaq 0x8(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq 0x80(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
callq 0x3b4b
movl $0x5, %r8d
leaq 0x327d(%rip), %rcx      # 0x60d9
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 0x3c50
movl $0x2, %r8d
leaq 0x3232(%rip), %rcx      # 0x60df
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 0x36f1
movl $0x2, %r8d
leaq 0x31e9(%rip), %rcx      # 0x60d6
jmp 0x2f19
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movsd 0x10(%rsp), %xmm0
callq 0x416f
movl $0x3, %r8d
leaq 0x31cd(%rip), %rcx      # 0x60e6
leaq 0x58(%rsp), %rdi
movq 0x8(%rdi), %rdx
xorl %esi, %esi
callq 0x21d0
movq 0xa8(%rsp), %rdi
leaq 0x31b2(%rip), %rsi      # 0x60ea
callq 0x2110
movq %rax, %rbx
movq 0x58(%rsp), %rdx
movl 0x980(%rsp), %r8d
movsd 0x8(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
leaq 0x318d(%rip), %rsi      # 0x60ed
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 0x3549(%rip), %rdi      # 0x653a
callq 0x2090
leaq 0x353d(%rip), %rdi      # 0x653a
callq 0x21a0
leaq 0x3531(%rip), %rdi      # 0x653a
callq 0x2090
leaq 0x3525(%rip), %rdi      # 0x653a
callq 0x21a0
leaq 0x351e(%rip), %rdi      # 0x653f
callq 0x2090
leaq 0x350d(%rip), %rdi      # 0x653a
callq 0x2090
leaq 0x3501(%rip), %rdi      # 0x653a
callq 0x2090
leaq 0x34fa(%rip), %rdi      # 0x653f
callq 0x2090
leaq 0x34e9(%rip), %rdi      # 0x653a
callq 0x2090
leaq 0x34dd(%rip), %rdi      # 0x653a
callq 0x21a0
leaq 0x34d1(%rip), %rdi      # 0x653a
callq 0x21a0
leaq 0x34c5(%rip), %rdi      # 0x653a
callq 0x21a0
leaq 0x34b9(%rip), %rdi      # 0x653a
callq 0x2090
leaq 0x34ad(%rip), %rdi      # 0x653a
callq 0x2090
leaq 0x34a1(%rip), %rdi      # 0x653a
callq 0x21a0
leaq 0x3495(%rip), %rdi      # 0x653a
callq 0x21a0
leaq 0x348e(%rip), %rdi      # 0x653f
callq 0x2090
leaq 0x3482(%rip), %rdi      # 0x653f
callq 0x2090
leaq 0x3476(%rip), %rdi      # 0x653f
callq 0x2090
leaq 0x346a(%rip), %rdi      # 0x653f
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