// File: /workspace/github_c_makefile_star2_O3/nh13[P]ksw/src/parasail/tests/test_verify_cigars.c
// Function: main
int main(int argc, char **argv)
{
    unsigned long seq_count = 0;
    unsigned long limit = 0;
    parasail_sequences_t *sequences = NULL;
    char *endptr = NULL;
    char *filename = NULL;
    int c = 0;
    int test_scores = 1;
    char *matrixname = NULL;
    const parasail_matrix_t *matrix = NULL;
    gap_score_t gap = {INT_MIN,INT_MIN};
    int do_sse2 = 1;
    int do_sse41 = 1;
    int do_avx2 = 1;
    int do_altivec = 1;
    int do_neon = 1;
    int do_disp = 1;
    int do_nw = 1;
    int do_sg = 1;
    int do_sw = 1;

    while ((c = getopt(argc, argv, "f:m:n:o:e:vSi:")) != -1) {
        switch (c) {
            case 'f':
                filename = optarg;
                break;
            case 'm':
                matrixname = optarg;
                break;
            case 'n':
                errno = 0;
                seq_count = strtol(optarg, &endptr, 10);
                if (errno) {
                    perror("strtol");
                    exit(1);
                }
                break;
            case 'o':
                errno = 0;
                gap.open = strtol(optarg, &endptr, 10);
                if (errno) {
                    perror("strtol gap.open");
                    exit(1);
                }
                break;
            case 'e':
                errno = 0;
                gap.extend = strtol(optarg, &endptr, 10);
                if (errno) {
                    perror("strtol gap.extend");
                    exit(1);
                }
                break;
            case 'v':
                verbose = 1;
                break;
            case 'S':
                test_scores = 0;
                break;
            case 'i':
                do_sse2 = (NULL == strstr(optarg, "sse2"));
                do_sse41 = (NULL == strstr(optarg, "sse41"));
                do_avx2 = (NULL == strstr(optarg, "avx2"));
                do_altivec = (NULL == strstr(optarg, "altivec"));
                do_neon = (NULL == strstr(optarg, "neon"));
                do_disp = (NULL == strstr(optarg, "disp"));
                do_nw = (NULL == strstr(optarg, "nw"));
                do_sg = (NULL == strstr(optarg, "sg"));
                do_sw = (NULL == strstr(optarg, "sw"));
                break;
            case '?':
                if (optopt == 'f' || optopt == 'n') {
                    fprintf(stderr,
                            "Option -%c requires an argument.\n",
                            optopt);
                }
                else if (isprint(optopt)) {
                    fprintf(stderr, "Unknown option `-%c'.\n",
                            optopt);
                }
                else {
                    fprintf(stderr,
                            "Unknown option character `\\x%x'.\n",
                            optopt);
                }
                exit(1);
            default:
                fprintf(stderr, "default case in getopt\n");
                exit(1);
        }
    }

    if (filename) {
        sequences = parasail_sequences_from_file(filename);
        if (0 == seq_count) {
            seq_count = sequences->l;
        }
    }
    else {
        fprintf(stderr, "no filename specified\n");
        exit(1);
    }

    /* select the matrix */
    if (matrixname) {
        matrix = parasail_matrix_lookup(matrixname);
        if (NULL == matrix) {
            fprintf(stderr, "Specified substitution matrix not found.\n");
            exit(1);
        }
    }

    limit = binomial_coefficient(seq_count, 2);
    printf("%lu choose 2 is %lu\n", seq_count, limit);


#if HAVE_SSE2
    if (do_sse2 && parasail_can_use_sse2()) {
        if (test_scores) {
            if (do_nw) check_functions(parasail_nw_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qx_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_db_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_de_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_dx_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_de_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_db_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_db_trace_sse2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_de_trace_sse2, sequences, limit, matrix, gap);
            if (do_sw) check_functions(parasail_sw_trace_sse2, sequences, limit, matrix, gap);
        }
    }
#endif

#if HAVE_SSE41
    if (do_sse41 && parasail_can_use_sse41()) {
        if (test_scores) {
            if (do_nw) check_functions(parasail_nw_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qx_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_db_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_de_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_dx_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_de_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_db_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_db_trace_sse41, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_de_trace_sse41, sequences, limit, matrix, gap);
            if (do_sw) check_functions(parasail_sw_trace_sse41, sequences, limit, matrix, gap);
        }
    }
#endif

#if HAVE_AVX2
    if (do_avx2 && parasail_can_use_avx2()) {
        if (test_scores) {
            if (do_nw) check_functions(parasail_nw_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qx_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_db_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_de_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_dx_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_de_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_db_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_db_trace_avx2, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_de_trace_avx2, sequences, limit, matrix, gap);
            if (do_sw) check_functions(parasail_sw_trace_avx2, sequences, limit, matrix, gap);
        }
    }
#endif

#if HAVE_ALTIVEC
    if (do_altivec && parasail_can_use_altivec()) {
        if (test_scores) {
            if (do_nw) check_functions(parasail_nw_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qx_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_db_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_de_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_dx_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_de_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_db_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_db_trace_altivec, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_de_trace_altivec, sequences, limit, matrix, gap);
            if (do_sw) check_functions(parasail_sw_trace_altivec, sequences, limit, matrix, gap);
        }
    }
#endif

#if HAVE_NEON
    if (do_neon && parasail_can_use_neon()) {
        if (test_scores) {
            if (do_nw) check_functions(parasail_nw_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qx_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_db_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_de_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_dx_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_de_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_db_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_db_trace_neon, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_de_trace_neon, sequences, limit, matrix, gap);
            if (do_sw) check_functions(parasail_sw_trace_neon, sequences, limit, matrix, gap);
        }
    }
#endif

    if (do_disp) {
        if (test_scores) {
            if (do_nw) check_functions(parasail_nw_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qx_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_db_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_de_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_dx_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_de_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_db_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qb_db_trace_disp, sequences, limit, matrix, gap);
            if (do_sg) check_functions(parasail_sg_qe_de_trace_disp, sequences, limit, matrix, gap);
            if (do_sw) check_functions(parasail_sw_trace_disp, sequences, limit, matrix, gap);
        }
    }
    
    parasail_sequences_free(sequences);

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, %r15
movl %edi, %r13d
leaq 0x38(%rsp), %rax
movq $0x0, (%rax)
movl $0x80000000, %eax       # imm = 0x80000000
movq %rax, 0x8(%rsp)
movl $0x1, %ecx
movq $0x0, 0x50(%rsp)
leaq 0x3db59d(%rip), %r14    # 0x55fa68
leaq 0x3b4b3e(%rip), %rbp    # 0x539010
movl $0x0, %eax
movq %rax, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movl $0x80000000, %eax       # imm = 0x80000000
movq %rax, 0x10(%rsp)
movl $0x1, 0x28(%rsp)
movl $0x1, 0x2c(%rsp)
movl $0x1, 0x30(%rsp)
movl $0x1, 0x34(%rsp)
movl $0x1, 0x1c(%rsp)
movl $0x1, 0x20(%rsp)
movl $0x1, 0x24(%rsp)
movl %ecx, %ebx
movl %r13d, %edi
movq %r15, %rsi
movq %r14, %rdx
callq 0x129080
cmpl $0x64, %eax
jle 0x184588
leal -0x65(%rax), %ecx
cmpl $0xa, %ecx
ja 0x184597
movslq (%rbp,%rcx,4), %rax
addq %rbp, %rax
jmpq *%rax
callq 0x129030
movq %rax, %r12
movl $0x0, (%rax)
movq 0x512a5d(%rip), %rax    # 0x696fc0
movq (%rax), %rdi
leaq 0x38(%rsp), %rsi
movl $0xa, %edx
callq 0x1291b0
movq %rax, 0x8(%rsp)
cmpl $0x0, (%r12)
movl %ebx, %ecx
je 0x184527
jmp 0x18500d
movl $0x0, %ecx
cmpl $0x53, %eax
je 0x184527
jmp 0x184724
cmpl $0x76, %eax
jne 0x185003
movb $0x1, 0x524c45(%rip)    # 0x6a91ec
movl %ebx, %ecx
jmp 0x184527
movq 0x512a0b(%rip), %rax    # 0x696fc0
movq (%rax), %r12
movq %r12, %rdi
leaq 0x3dcf3f(%rip), %rsi    # 0x561501
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x28(%rsp)
movq %r12, %rdi
leaq 0x3de961(%rip), %rsi    # 0x562f3e
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x2c(%rsp)
movq %r12, %rdi
leaq 0x3e0283(%rip), %rsi    # 0x56487b
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x30(%rsp)
movq %r12, %rdi
leaq 0x3e1ae8(%rip), %rsi    # 0x5660fb
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x34(%rsp)
movq %r12, %rdi
leaq 0x40960f(%rip), %rsi    # 0x58dc3d
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x1c(%rsp)
movq %r12, %rdi
leaq 0x408fe3(%rip), %rsi    # 0x58d62c
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x20(%rsp)
movq %r12, %rdi
leaq 0x409639(%rip), %rsi    # 0x58dc9d
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x24(%rsp)
movl %ebx, %ecx
jmp 0x184527
movq 0x51293d(%rip), %rax    # 0x696fc0
movq (%rax), %rax
movq %rax, 0x40(%rsp)
movl %ebx, %ecx
jmp 0x184527
callq 0x129030
movq %rax, %r12
movl $0x0, (%rax)
movq 0x512919(%rip), %rax    # 0x696fc0
movq (%rax), %rdi
leaq 0x38(%rsp), %rsi
movl $0xa, %edx
callq 0x1291b0
movq %rax, 0x10(%rsp)
cmpl $0x0, (%r12)
movl %ebx, %ecx
je 0x184527
jmp 0x185008
movq 0x5128e9(%rip), %rax    # 0x696fc0
movq (%rax), %rax
movq %rax, 0x48(%rsp)
movl %ebx, %ecx
jmp 0x184527
callq 0x129030
movq %rax, %r12
movl $0x0, (%rax)
movq 0x5128c5(%rip), %rax    # 0x696fc0
movq (%rax), %rdi
leaq 0x38(%rsp), %rsi
movl $0xa, %edx
callq 0x1291b0
movq %rax, 0x50(%rsp)
cmpl $0x0, (%r12)
movl %ebx, %ecx
je 0x184527
callq 0x1292c2
cmpl $-0x1, %eax
jne 0x184ff9
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
movq 0x50(%rsp), %r14
je 0x185012
callq 0x18c288
movq %rax, %r15
testq %r14, %r14
jne 0x184751
movq 0x8(%r15), %r14
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x18476d
callq 0x18a4e0
movq %rax, %r12
testq %rax, %rax
jne 0x184770
callq 0x1292d7
xorl %r12d, %r12d
leaq -0x1(%r14), %rax
imulq %r14, %rax
shrq %rax
cmpq $0x2, %r14
movl $0x0, %r13d
cmovaeq %rax, %r13
leaq 0x3db3c4(%rip), %rdi    # 0x55fb54
movq %r14, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x129040
cmpl $0x0, 0x28(%rsp)
je 0x184997
xorl %eax, %eax
callq 0x18a4a4
testl %eax, %eax
setne %al
testl %ebx, %ebx
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x184997
movl 0x10(%rsp), %ebp
cmpl $0x0, 0x1c(%rsp)
je 0x1847f8
movq 0x8(%rsp), %rax
shlq $0x20, %rax
leaq (%rax,%rbp), %r9
leaq 0x3db7bb(%rip), %rdi    # 0x55ff9e
leaq 0x512976(%rip), %rsi    # 0x697160
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
callq 0x185017
cmpl $0x0, 0x20(%rsp)
je 0x184965
movq 0x8(%rsp), %rax
shlq $0x20, %rax
leaq (%rax,%rbp), %r14
leaq 0x3db985(%rip), %rdi    # 0x56019c
leaq 0x512d82(%rip), %rsi    # 0x6975a0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dbb53(%rip), %rdi    # 0x560389
leaq 0x5131a3(%rip), %rsi    # 0x6979e0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dbd54(%rip), %rdi    # 0x5605a9
leaq 0x5135c4(%rip), %rsi    # 0x697e20
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dbf55(%rip), %rdi    # 0x5607c9
leaq 0x5139e5(%rip), %rsi    # 0x698260
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dc156(%rip), %rdi    # 0x5609e9
leaq 0x513e06(%rip), %rsi    # 0x6986a0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dc357(%rip), %rdi    # 0x560c09
leaq 0x514227(%rip), %rsi    # 0x698ae0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dc558(%rip), %rdi    # 0x560e29
leaq 0x514648(%rip), %rsi    # 0x698f20
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dc759(%rip), %rdi    # 0x561049
leaq 0x514a69(%rip), %rsi    # 0x699360
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dc98a(%rip), %rdi    # 0x561299
leaq 0x514e8a(%rip), %rsi    # 0x6997a0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dcbbb(%rip), %rdi    # 0x5614e9
leaq 0x5152ab(%rip), %rsi    # 0x699be0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dcdec(%rip), %rdi    # 0x561739
leaq 0x5156cc(%rip), %rsi    # 0x69a020
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
cmpl $0x0, 0x24(%rsp)
je 0x184997
movq 0x8(%rsp), %rax
shlq $0x20, %rax
orq %rax, %rbp
leaq 0x3dd00a(%rip), %rdi    # 0x561989
leaq 0x515ada(%rip), %rsi    # 0x69a460
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbp, %r9
callq 0x185017
cmpl $0x0, 0x2c(%rsp)
je 0x184bb5
xorl %eax, %eax
callq 0x18a46e
testl %eax, %eax
setne %al
testl %ebx, %ebx
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x184bb5
cmpl $0x0, 0x1c(%rsp)
je 0x1849f2
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r9d
orq %rax, %r9
leaq 0x3dd199(%rip), %rdi    # 0x561b76
leaq 0x515ebc(%rip), %rsi    # 0x69a8a0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
callq 0x185017
cmpl $0x0, 0x20(%rsp)
je 0x184b81
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r14d
orq %rax, %r14
leaq 0x3dd332(%rip), %rdi    # 0x561d47
leaq 0x5162c4(%rip), %rbp    # 0x69ace0
movq %rbp, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dd310(%rip), %rdi    # 0x561d47
movq %rbp, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dd4c6(%rip), %rdi    # 0x561f18
leaq 0x5166c7(%rip), %rsi    # 0x69b120
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dd69f(%rip), %rdi    # 0x562110
leaq 0x516ae8(%rip), %rsi    # 0x69b560
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dd878(%rip), %rdi    # 0x562308
leaq 0x516f09(%rip), %rsi    # 0x69b9a0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dda51(%rip), %rdi    # 0x562500
leaq 0x51732a(%rip), %rsi    # 0x69bde0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3ddc2a(%rip), %rdi    # 0x5626f8
leaq 0x51774b(%rip), %rsi    # 0x69c220
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dde03(%rip), %rdi    # 0x5628f0
leaq 0x517b6c(%rip), %rsi    # 0x69c660
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3ddfdc(%rip), %rdi    # 0x562ae8
leaq 0x517f8d(%rip), %rsi    # 0x69caa0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3de1dc(%rip), %rdi    # 0x562d07
leaq 0x5183ae(%rip), %rsi    # 0x69cee0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3de3dc(%rip), %rdi    # 0x562f26
leaq 0x5187cf(%rip), %rsi    # 0x69d320
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3de5dc(%rip), %rdi    # 0x563145
leaq 0x518bf0(%rip), %rsi    # 0x69d760
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
cmpl $0x0, 0x24(%rsp)
je 0x184bb5
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r9d
orq %rax, %r9
leaq 0x3de7c4(%rip), %rdi    # 0x563364
leaq 0x518ff9(%rip), %rsi    # 0x69dba0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
callq 0x185017
cmpl $0x0, 0x30(%rsp)
je 0x184dd3
xorl %eax, %eax
callq 0x18a447
testl %eax, %eax
setne %al
testl %ebx, %ebx
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x184dd3
cmpl $0x0, 0x1c(%rsp)
je 0x184c10
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r9d
orq %rax, %r9
leaq 0x3de93a(%rip), %rdi    # 0x563535
leaq 0x5193de(%rip), %rsi    # 0x69dfe0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
callq 0x185017
cmpl $0x0, 0x20(%rsp)
je 0x184d9f
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r14d
orq %rax, %r14
leaq 0x3deac6(%rip), %rdi    # 0x5636f9
leaq 0x5197e6(%rip), %rbp    # 0x69e420
movq %rbp, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3deaa4(%rip), %rdi    # 0x5636f9
movq %rbp, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dec4d(%rip), %rdi    # 0x5638bd
leaq 0x519be9(%rip), %rsi    # 0x69e860
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dee19(%rip), %rdi    # 0x563aa8
leaq 0x51a00a(%rip), %rsi    # 0x69eca0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3defe5(%rip), %rdi    # 0x563c93
leaq 0x51a42b(%rip), %rsi    # 0x69f0e0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3df1b1(%rip), %rdi    # 0x563e7e
leaq 0x51a84c(%rip), %rsi    # 0x69f520
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3df37d(%rip), %rdi    # 0x564069
leaq 0x51ac6d(%rip), %rsi    # 0x69f960
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3df549(%rip), %rdi    # 0x564254
leaq 0x51b08e(%rip), %rsi    # 0x69fda0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3df715(%rip), %rdi    # 0x56443f
leaq 0x51b4af(%rip), %rsi    # 0x6a01e0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3df908(%rip), %rdi    # 0x564651
leaq 0x51b8d0(%rip), %rsi    # 0x6a0620
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dfafb(%rip), %rdi    # 0x564863
leaq 0x51bcf1(%rip), %rsi    # 0x6a0a60
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
leaq 0x3dfcee(%rip), %rdi    # 0x564a75
leaq 0x51c112(%rip), %rsi    # 0x6a0ea0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %r14, %r9
callq 0x185017
cmpl $0x0, 0x24(%rsp)
je 0x184dd3
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r9d
orq %rax, %r9
leaq 0x3dfec9(%rip), %rdi    # 0x564c87
leaq 0x51c51b(%rip), %rsi    # 0x6a12e0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
callq 0x185017
cmpl $0x0, 0x34(%rsp)
setne %al
testl %ebx, %ebx
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x184fe0
cmpl $0x0, 0x1c(%rsp)
je 0x184e1f
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r9d
orq %rax, %r9
leaq 0x3e0041(%rip), %rdi    # 0x564e4b
leaq 0x51c90f(%rip), %rsi    # 0x6a1720
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
callq 0x185017
cmpl $0x0, 0x20(%rsp)
je 0x184fac
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %ebx
orq %rax, %rbx
leaq 0x3e01b6(%rip), %r14    # 0x564ff7
leaq 0x51cde8(%rip), %rbp    # 0x6a1c30
movq %r14, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
movq %r14, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e0326(%rip), %rdi    # 0x5651a3
leaq 0x51d2bc(%rip), %rsi    # 0x6a2140
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e04e3(%rip), %rdi    # 0x56537f
leaq 0x51d7ad(%rip), %rsi    # 0x6a2650
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e06a0(%rip), %rdi    # 0x56555b
leaq 0x51dc9e(%rip), %rsi    # 0x6a2b60
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e085d(%rip), %rdi    # 0x565737
leaq 0x51e18f(%rip), %rsi    # 0x6a3070
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e0a1a(%rip), %rdi    # 0x565913
leaq 0x51e680(%rip), %rsi    # 0x6a3580
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e0bd7(%rip), %rdi    # 0x565aef
leaq 0x51eb71(%rip), %rsi    # 0x6a3a90
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e0d94(%rip), %rdi    # 0x565ccb
leaq 0x51f062(%rip), %rsi    # 0x6a3fa0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e0f81(%rip), %rdi    # 0x565ed7
leaq 0x51f553(%rip), %rsi    # 0x6a44b0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e116e(%rip), %rdi    # 0x5660e3
leaq 0x51fa44(%rip), %rsi    # 0x6a49c0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
leaq 0x3e135b(%rip), %rdi    # 0x5662ef
leaq 0x51ff35(%rip), %rsi    # 0x6a4ed0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x185017
cmpl $0x0, 0x24(%rsp)
je 0x184fe0
movq 0x8(%rsp), %rax
shlq $0x20, %rax
movl 0x10(%rsp), %r9d
orq %rax, %r9
leaq 0x3e1530(%rip), %rdi    # 0x5664fb
leaq 0x52040e(%rip), %rsi    # 0x6a53e0
movq %r15, %rdx
movq %r13, %rcx
movq %r12, %r8
callq 0x185017
movq %r15, %rdi
callq 0x18cb7b
xorl %eax, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x3f, %eax
jne 0x185003
callq 0x129240
callq 0x129321
callq 0x1292ad
callq 0x129298
callq 0x1292fc