// File: /workspace/github_c_makefile_star2_O2/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, %r14
movl %edi, %r12d
leaq 0x38(%rsp), %rax
andq $0x0, (%rax)
movl $0x80000000, %eax       # imm = 0x80000000
movq %rax, 0x20(%rsp)
pushq $0x1
popq %rcx
movq $0x0, 0x8(%rsp)
leaq 0x3d7702(%rip), %r15    # 0x500a68
leaq 0x3b0ca3(%rip), %r13    # 0x4da010
movl $0x0, %eax
movq %rax, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movl $0x80000000, %eax       # imm = 0x80000000
movq %rax, 0x50(%rsp)
movl %ecx, 0x28(%rsp)
movl %ecx, 0x2c(%rsp)
movl %ecx, 0x30(%rsp)
movl %ecx, 0x34(%rsp)
movl %ecx, 0x14(%rsp)
movl %ecx, 0x18(%rsp)
movl %ecx, 0x1c(%rsp)
movl %ecx, %ebp
movl %r12d, %edi
movq %r14, %rsi
movq %r15, %rdx
callq 0x129080
leal -0x65(%rax), %ecx
cmpl $0xa, %ecx
ja 0x1293fb
movslq (%r13,%rcx,4), %rax
addq %r13, %rax
jmpq *%rax
callq 0x129030
movq %rax, %rbx
andl $0x0, (%rax)
movq 0x4d4be6(%rip), %rax    # 0x5fdfc0
movq (%rax), %rdi
leaq 0x38(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x1291b0
movq %rax, 0x20(%rsp)
cmpl $0x0, (%rbx)
movl %ebp, %ecx
je 0x1293a6
jmp 0x129ebb
movl $0x0, %ecx
cmpl $0x53, %eax
je 0x1293a6
cmpl $0x76, %eax
jne 0x129581
movb $0x1, 0x4e6dd7(%rip)    # 0x6101ec
movl %ebp, %ecx
jmp 0x1293a6
movq 0x4d4ba0(%rip), %rax    # 0x5fdfc0
movq (%rax), %rax
movq %rax, 0x40(%rsp)
movl %ebp, %ecx
jmp 0x1293a6
movq 0x4d4b8a(%rip), %rax    # 0x5fdfc0
movq (%rax), %rbx
movq %rbx, %rdi
leaq 0x3d90be(%rip), %rsi    # 0x502501
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x28(%rsp)
movq %rbx, %rdi
leaq 0x3daae0(%rip), %rsi    # 0x503f3e
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x2c(%rsp)
movq %rbx, %rdi
leaq 0x3dc402(%rip), %rsi    # 0x50587b
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x30(%rsp)
movq %rbx, %rdi
leaq 0x3ddc67(%rip), %rsi    # 0x5070fb
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x34(%rsp)
movq %rbx, %rdi
leaq 0x40570e(%rip), %rsi    # 0x52ebbd
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x14(%rsp)
movq %rbx, %rdi
leaq 0x4050e2(%rip), %rsi    # 0x52e5ac
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x18(%rsp)
movq %rbx, %rdi
leaq 0x405738(%rip), %rsi    # 0x52ec1d
callq 0x129070
xorl %ecx, %ecx
testq %rax, %rax
sete %cl
movl %ecx, 0x1c(%rsp)
movl %ebp, %ecx
jmp 0x1293a6
callq 0x129030
movq %rax, %rbx
andl $0x0, (%rax)
movq 0x4d4ab1(%rip), %rax    # 0x5fdfc0
movq (%rax), %rdi
leaq 0x38(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x1291b0
movq %rax, 0x8(%rsp)
cmpl $0x0, (%rbx)
movl %ebp, %ecx
je 0x1293a6
jmp 0x129ec4
callq 0x129030
movq %rax, %rbx
andl $0x0, (%rax)
movq 0x4d4a7a(%rip), %rax    # 0x5fdfc0
movq (%rax), %rdi
leaq 0x38(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x1291b0
movq %rax, 0x50(%rsp)
cmpl $0x0, (%rbx)
movl %ebp, %ecx
je 0x1293a6
jmp 0x129ecd
movq 0x4d4a4e(%rip), %rax    # 0x5fdfc0
movq (%rax), %rax
movq %rax, 0x48(%rsp)
movl %ebp, %ecx
jmp 0x1293a6
cmpl $-0x1, %eax
jne 0x129e7b
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
movq 0x20(%rsp), %r13
movq 0x8(%rsp), %rbx
je 0x129f15
callq 0x1308e8
movq %rax, %r14
testq %rbx, %rbx
jne 0x1295b3
movq 0x8(%r14), %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1295e2
callq 0x12e60c
movq %rax, %r15
testq %rax, %rax
jne 0x1295e5
movq 0x4d4a0f(%rip), %rax    # 0x5fdfe0
movq (%rax), %rcx
leaq 0x3d754f(%rip), %rdi    # 0x500b2a
pushq $0x29
jmp 0x129eb0
xorl %r15d, %r15d
leaq -0x1(%rbx), %rax
imulq %rbx, %rax
shrq %rax
cmpq $0x2, %rbx
movl $0x0, %r12d
cmovaeq %rax, %r12
leaq 0x3d754f(%rip), %rdi    # 0x500b54
movq %rbx, %rsi
movq %r12, %rdx
xorl %eax, %eax
callq 0x129040
movl 0x50(%rsp), %ebx
cmpl $0x0, 0x28(%rsp)
je 0x129813
xorl %eax, %eax
callq 0x12e5d0
testl %eax, %eax
setne %al
testl %ebp, %ebp
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x129813
cmpl $0x0, 0x14(%rsp)
je 0x12966b
movq %r13, %rax
shlq $0x20, %rax
leaq (%rbx,%rax), %r9
leaq 0x3d7948(%rip), %rdi    # 0x500f9e
leaq 0x4d4b03(%rip), %rsi    # 0x5fe160
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
callq 0x129f2a
cmpl $0x0, 0x18(%rsp)
je 0x1297e5
movq %r13, %rax
shlq $0x20, %rax
movq %rbx, 0x8(%rsp)
movq 0x8(%rsp), %rcx
leaq (%rcx,%rax), %rbx
leaq 0x3d7b0a(%rip), %rdi    # 0x50119c
leaq 0x4d4f07(%rip), %rsi    # 0x5fe5a0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d7cd8(%rip), %rdi    # 0x501389
leaq 0x4d5328(%rip), %rsi    # 0x5fe9e0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d7ed9(%rip), %rdi    # 0x5015a9
leaq 0x4d5749(%rip), %rsi    # 0x5fee20
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d80da(%rip), %rdi    # 0x5017c9
leaq 0x4d5b6a(%rip), %rsi    # 0x5ff260
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d82db(%rip), %rdi    # 0x5019e9
leaq 0x4d5f8b(%rip), %rsi    # 0x5ff6a0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d84dc(%rip), %rdi    # 0x501c09
leaq 0x4d63ac(%rip), %rsi    # 0x5ffae0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d86dd(%rip), %rdi    # 0x501e29
leaq 0x4d67cd(%rip), %rsi    # 0x5fff20
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d88de(%rip), %rdi    # 0x502049
leaq 0x4d6bee(%rip), %rsi    # 0x600360
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d8b0f(%rip), %rdi    # 0x502299
leaq 0x4d700f(%rip), %rsi    # 0x6007a0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d8d40(%rip), %rdi    # 0x5024e9
leaq 0x4d7430(%rip), %rsi    # 0x600be0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d8f71(%rip), %rdi    # 0x502739
leaq 0x4d7851(%rip), %rsi    # 0x601020
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
movq 0x8(%rsp), %rbx
callq 0x129f2a
cmpl $0x0, 0x1c(%rsp)
je 0x129813
movq %r13, %rax
shlq $0x20, %rax
leaq (%rbx,%rax), %r9
leaq 0x3d918b(%rip), %rdi    # 0x502989
leaq 0x4d7c5b(%rip), %rsi    # 0x601460
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
callq 0x129f2a
cmpl $0x0, 0x2c(%rsp)
je 0x129a33
xorl %eax, %eax
callq 0x12e59a
testl %eax, %eax
setne %al
testl %ebp, %ebp
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x129a33
cmpl $0x0, 0x14(%rsp)
je 0x129868
movq %r13, %rax
shlq $0x20, %rax
leaq (%rbx,%rax), %r9
leaq 0x3d9323(%rip), %rdi    # 0x502b76
leaq 0x4d8046(%rip), %rsi    # 0x6018a0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
callq 0x129f2a
cmpl $0x0, 0x18(%rsp)
je 0x129a05
movq %r13, %rax
shlq $0x20, %rax
movq %rbx, 0x8(%rsp)
movq 0x8(%rsp), %rcx
leaq (%rcx,%rax), %rbx
leaq 0x3d94b8(%rip), %rdi    # 0x502d47
leaq 0x4d844a(%rip), %r13    # 0x601ce0
movq %r13, %rsi
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d9496(%rip), %rdi    # 0x502d47
movq %r13, %rsi
movq 0x20(%rsp), %r13
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d9647(%rip), %rdi    # 0x502f18
leaq 0x4d8848(%rip), %rsi    # 0x602120
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d9820(%rip), %rdi    # 0x503110
leaq 0x4d8c69(%rip), %rsi    # 0x602560
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d99f9(%rip), %rdi    # 0x503308
leaq 0x4d908a(%rip), %rsi    # 0x6029a0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d9bd2(%rip), %rdi    # 0x503500
leaq 0x4d94ab(%rip), %rsi    # 0x602de0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d9dab(%rip), %rdi    # 0x5036f8
leaq 0x4d98cc(%rip), %rsi    # 0x603220
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3d9f84(%rip), %rdi    # 0x5038f0
leaq 0x4d9ced(%rip), %rsi    # 0x603660
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3da15d(%rip), %rdi    # 0x503ae8
leaq 0x4da10e(%rip), %rsi    # 0x603aa0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3da35d(%rip), %rdi    # 0x503d07
leaq 0x4da52f(%rip), %rsi    # 0x603ee0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3da55d(%rip), %rdi    # 0x503f26
leaq 0x4da950(%rip), %rsi    # 0x604320
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3da75d(%rip), %rdi    # 0x504145
leaq 0x4dad71(%rip), %rsi    # 0x604760
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
movq 0x8(%rsp), %rbx
callq 0x129f2a
cmpl $0x0, 0x1c(%rsp)
je 0x129a33
movq %r13, %rax
shlq $0x20, %rax
leaq (%rbx,%rax), %r9
leaq 0x3da946(%rip), %rdi    # 0x504364
leaq 0x4db17b(%rip), %rsi    # 0x604ba0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
callq 0x129f2a
cmpl $0x0, 0x30(%rsp)
je 0x129c53
xorl %eax, %eax
callq 0x12e573
testl %eax, %eax
setne %al
testl %ebp, %ebp
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x129c53
cmpl $0x0, 0x14(%rsp)
je 0x129a88
movq %r13, %rax
shlq $0x20, %rax
leaq (%rbx,%rax), %r9
leaq 0x3daac2(%rip), %rdi    # 0x504535
leaq 0x4db566(%rip), %rsi    # 0x604fe0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
callq 0x129f2a
cmpl $0x0, 0x18(%rsp)
je 0x129c25
movq %r13, %rax
shlq $0x20, %rax
movq %rbx, 0x8(%rsp)
movq 0x8(%rsp), %rcx
leaq (%rcx,%rax), %rbx
leaq 0x3dac4a(%rip), %r13    # 0x5046f9
leaq 0x4db96a(%rip), %rsi    # 0x605420
movq %r13, %rdi
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
movq %r13, %rdi
movq 0x20(%rsp), %r13
leaq 0x4db947(%rip), %rsi    # 0x605420
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dadcc(%rip), %rdi    # 0x5048bd
leaq 0x4dbd68(%rip), %rsi    # 0x605860
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3daf98(%rip), %rdi    # 0x504aa8
leaq 0x4dc189(%rip), %rsi    # 0x605ca0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3db164(%rip), %rdi    # 0x504c93
leaq 0x4dc5aa(%rip), %rsi    # 0x6060e0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3db330(%rip), %rdi    # 0x504e7e
leaq 0x4dc9cb(%rip), %rsi    # 0x606520
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3db4fc(%rip), %rdi    # 0x505069
leaq 0x4dcdec(%rip), %rsi    # 0x606960
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3db6c8(%rip), %rdi    # 0x505254
leaq 0x4dd20d(%rip), %rsi    # 0x606da0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3db894(%rip), %rdi    # 0x50543f
leaq 0x4dd62e(%rip), %rsi    # 0x6071e0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dba87(%rip), %rdi    # 0x505651
leaq 0x4dda4f(%rip), %rsi    # 0x607620
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dbc7a(%rip), %rdi    # 0x505863
leaq 0x4dde70(%rip), %rsi    # 0x607a60
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dbe6d(%rip), %rdi    # 0x505a75
leaq 0x4de291(%rip), %rsi    # 0x607ea0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
movq 0x8(%rsp), %rbx
callq 0x129f2a
cmpl $0x0, 0x1c(%rsp)
je 0x129c53
movq %r13, %rax
shlq $0x20, %rax
leaq (%rbx,%rax), %r9
leaq 0x3dc049(%rip), %rdi    # 0x505c87
leaq 0x4de69b(%rip), %rsi    # 0x6082e0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
callq 0x129f2a
cmpl $0x0, 0x34(%rsp)
setne %al
testl %ebp, %ebp
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x129e62
cmpl $0x0, 0x14(%rsp)
je 0x129c99
movq %r13, %rax
shlq $0x20, %rax
leaq (%rbx,%rax), %r9
leaq 0x3dc1c7(%rip), %rdi    # 0x505e4b
leaq 0x4dea95(%rip), %rsi    # 0x608720
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
callq 0x129f2a
cmpl $0x0, 0x18(%rsp)
je 0x129e35
movq %r13, %rax
shlq $0x20, %rax
movq %rbx, 0x8(%rsp)
movq 0x8(%rsp), %rcx
leaq (%rcx,%rax), %rbx
leaq 0x3dc337(%rip), %r13    # 0x505ff7
leaq 0x4def69(%rip), %rbp    # 0x608c30
movq %r13, %rdi
movq %rbp, %rsi
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
movq %r13, %rdi
movq 0x20(%rsp), %r13
movq %rbp, %rsi
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dc4a2(%rip), %rdi    # 0x5061a3
leaq 0x4df438(%rip), %rsi    # 0x609140
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dc65f(%rip), %rdi    # 0x50637f
leaq 0x4df929(%rip), %rsi    # 0x609650
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dc81c(%rip), %rdi    # 0x50655b
leaq 0x4dfe1a(%rip), %rsi    # 0x609b60
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dc9d9(%rip), %rdi    # 0x506737
leaq 0x4e030b(%rip), %rsi    # 0x60a070
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dcb96(%rip), %rdi    # 0x506913
leaq 0x4e07fc(%rip), %rsi    # 0x60a580
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dcd53(%rip), %rdi    # 0x506aef
leaq 0x4e0ced(%rip), %rsi    # 0x60aa90
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dcf10(%rip), %rdi    # 0x506ccb
leaq 0x4e11de(%rip), %rsi    # 0x60afa0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dd0fd(%rip), %rdi    # 0x506ed7
leaq 0x4e16cf(%rip), %rsi    # 0x60b4b0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dd2ea(%rip), %rdi    # 0x5070e3
leaq 0x4e1bc0(%rip), %rsi    # 0x60b9c0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
leaq 0x3dd4d7(%rip), %rdi    # 0x5072ef
leaq 0x4e20b1(%rip), %rsi    # 0x60bed0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
movq 0x8(%rsp), %rbx
callq 0x129f2a
cmpl $0x0, 0x1c(%rsp)
je 0x129e62
shlq $0x20, %r13
orq %r13, %rbx
leaq 0x3dd6b1(%rip), %rdi    # 0x5074fb
leaq 0x4e258f(%rip), %rsi    # 0x60c3e0
movq %r14, %rdx
movq %r12, %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x129f2a
movq %r14, %rdi
callq 0x1310d8
xorl %eax, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x3f, %eax
jne 0x129e9d
movq 0x4d4151(%rip), %rax    # 0x5fdfd8
movslq (%rax), %rbx
movl %ebx, %eax
andl $-0x9, %eax
cmpl $0x66, %eax
jne 0x129edb
leaq 0x3d6c05(%rip), %rsi    # 0x500aa0
jmp 0x129efa
movq 0x4d413c(%rip), %rax    # 0x5fdfe0
movq (%rax), %rcx
leaq 0x3d6c4d(%rip), %rdi    # 0x500afb
pushq $0x17
popq %rsi
pushq $0x1
popq %rdx
callq 0x129220
jmp 0x129f0d
leaq 0x3d6bcc(%rip), %rdi    # 0x500a8e
jmp 0x129ed4
leaq 0x3d6bac(%rip), %rdi    # 0x500a77
jmp 0x129ed4
leaq 0x3d6baa(%rip), %rdi    # 0x500a7e
callq 0x129110
jmp 0x129f0d
callq 0x129150
movq (%rax), %rax
testb $0x40, 0x1(%rax,%rbx,2)
leaq 0x3d6bea(%rip), %rax    # 0x500ad9
leaq 0x3d6bcc(%rip), %rsi    # 0x500ac2
cmoveq %rax, %rsi
movq 0x4d40df(%rip), %rax    # 0x5fdfe0
movq (%rax), %rdi
movl %ebx, %edx
xorl %eax, %eax
callq 0x1291c0
pushq $0x1
popq %rdi
callq 0x129180
movq 0x4d40c4(%rip), %rax    # 0x5fdfe0
movq (%rax), %rcx
leaq 0x3d6bed(%rip), %rdi    # 0x500b13
pushq $0x16
jmp 0x129eb0