// File: /workspace/github_c_makefile_star2_O0/icebert[P]pblat/blatSrc/blat.c
// Function: main
int main(int argc, char *argv[])
/* Process command line into global variables and call blat. */
{
    boolean tIsProtLike, qIsProtLike;
    char buf[1024];
    char **queryFiles;
    FILE **out;
    struct lineFile **lf;
    int  queryCount;
    int  i, cnt, tmp;

    unsigned faFastBufSize = 0;
    DNA      *faFastBuf = NULL;

#ifdef DEBUG
    {
        char *cmd = "blat hCrea.geno hCrea.mrna foo.psl -t=dnax -q=rnax";
        char *words[16];

        printf("Debugging parameters\n");
        cmd = cloneString(cmd);
        argc = chopLine(cmd, words);
        argv = words;
    }
#endif /* DEBUG */

    optionInit(&argc, argv, options);
    if (argc != 4)
        usage();

    /* Get database and query sequence types and make sure they are
     * legal and compatable. */
    if (optionExists("prot"))
        qType = tType = gftProt;
    if (optionExists("t"))
        tType = gfTypeFromName(optionVal("t", NULL));
    trimA = optionExists("trimA") || optionExists("trima");
    trimT = optionExists("trimT") || optionExists("trimt");
    trimHardA = optionExists("trimHardA");
    switch (tType)
    {
    case gftProt:
    case gftDnaX:
        tIsProtLike = TRUE;
        break;
    case gftDna:
        tIsProtLike = FALSE;
        break;
    default:
        tIsProtLike = FALSE;
        errAbort("Illegal value for 't' parameter");
        break;
    }
    if (optionExists("q"))
        qType = gfTypeFromName(optionVal("q", NULL));
    if (qType == gftRnaX || qType == gftRna)
        trimA = TRUE;
    if (optionExists("noTrimA"))
        trimA = FALSE;
    switch (qType)
    {
    case gftProt:
    case gftDnaX:
    case gftRnaX:
        minIdentity = 25;
        qIsProtLike = TRUE;
        break;
    default:
        qIsProtLike = FALSE;
        break;
    }
    if ((tIsProtLike ^ qIsProtLike) != 0)
        errAbort("t and q must both be either protein or dna");

    /* Set default tile size for protein-based comparisons. */
    if (tIsProtLike)
    {
        tileSize = 5;
        minMatch = 1;
        oneOff = FALSE;
        maxGap = 0;
    }

    /* Get tile size and related parameters from user and make sure
     * they are within range. */
    tileSize = optionInt("tileSize", tileSize);
    stepSize = optionInt("stepSize", tileSize);
    minMatch = optionInt("minMatch", minMatch);
    oneOff = optionExists("oneOff");
    fastMap = optionExists("fastMap");
    minScore = optionInt("minScore", minScore);
    maxGap = optionInt("maxGap", maxGap);
    minRepDivergence = optionFloat("minRepDivergence", minRepDivergence);
    minIdentity = optionFloat("minIdentity", minIdentity);
    gfCheckTileSize(tileSize, tIsProtLike);
    if (minMatch < 0)
        errAbort("minMatch must be at least 1");
    if (maxGap > 100)
        errAbort("maxGap must be less than 100");


    /* Set repMatch parameter from command line, or
     * to reasonable value that depends on tile size. */
    if (optionExists("repMatch"))
        repMatch = optionInt("repMatch", repMatch);
    else
        repMatch = gfDefaultRepMatch(tileSize, stepSize, tIsProtLike);

    /* Gather last few command line options. */
    noHead = optionExists("noHead");
    ooc = optionVal("ooc", NULL);
    makeOoc = optionVal("makeOoc", NULL);
    mask = optionVal("mask", NULL);
    qMask = optionVal("qMask", NULL);
    repeats = optionVal("repeats", NULL);
    if (repeats != NULL && mask != NULL && differentString(repeats, mask))
        errAbort("The -mask and -repeat settings disagree.  "
                 "You can just omit -repeat if -mask is on");
    if (mask != NULL)	/* Mask setting will also set repeats. */
        repeats = mask;
    outputFormat = optionVal("out", outputFormat);
    dotEvery = optionInt("dots", 0);
    /* set global for fuzzy find functions */
    setFfIntronMax(optionInt("maxIntron", ffIntronMaxDefault));
    setFfExtendThroughN(optionExists("extendThroughN"));


    /* Get threads number */
    threads = optionInt("threads", threads);
    if (threads <= 0)
        errAbort("threads must be at least 1");
    if (threads > 1 && (argv[3]==NULL || strcmp(argv[3],"")==0 || strcmp(argv[3], "stdin")==0))
        errAbort("Output name must be specified when using multi-threads");


    gfClientFileArray(argv[2], &queryFiles, &queryCount);
    if (queryCount > 1)
        errAbort("pblat does not support using list of file names as query. Please query each of the input files separately.");

    lf=(struct lineFile **)malloc(sizeof(struct lineFile *) * threads);
    for (i=0; i<threads; i++)
    {
        lf[i] = lineFileOpen(queryFiles[0], TRUE);
    }


    queryCount=0;
    struct lineFile *tlf = lineFileOpen(queryFiles[0], TRUE);
    while (faMixedSpeedReadNext(tlf, NULL, NULL, NULL, &faFastBuf, &faFastBufSize))
        queryCount++;
    if (threads > 1)
        queryCount=queryCount/threads+1;

    lineFileRewind(tlf);
    for (i=1; i<threads; i++)
    {
        cnt=queryCount;
        while (cnt-- && faMixedSpeedReadNext(tlf, NULL, NULL, NULL, &faFastBuf, &faFastBufSize));
        lineFileSeek(lf[i], tlf->bufOffsetInFile + tlf->lineStart, SEEK_SET);
    }
    lineFileClose(&tlf);
    faFreeFastBuf(&faFastBuf, &faFastBufSize);


    out=(FILE**)malloc(sizeof(FILE*) * threads);
    out[0]=mustOpen(argv[3], "w");
    for (i=1; i<threads; i++)
    {
        sprintf(buf, "%s.tmp.%d", argv[3], i);
        out[i] = mustOpen(buf, "w+");
    }
    


    /* Call routine that does the work. */
    blat(argv[1], queryCount, queryFiles, lf, out);
    

    for (i=0; i<threads; i++)
        lineFileClose(&(lf[i]));
    free(lf);

    if (threads>1)
    {
        for (i=1; i<threads; i++)
        {
            rewind(out[i]);
            while((cnt=fread(buf, 1, 1024, out[i]))>0)
            {
                tmp=fwrite(buf, 1, cnt, out[0]);
                if (tmp!=cnt)
                {
                    free(out);
                    errAbort("Merge files failed\n");
                }
            }
            carefulClose(&(out[i]));
            sprintf(buf, "%s.tmp.%d", argv[3], i);
            remove(buf);
        }
    }
    carefulClose(&(out[0]));
    free(out);

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x470, %rsp            # imm = 0x470
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x44c(%rbp)
movq $0x0, -0x458(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x8(%rbp), %rdi
leaq 0xfca93(%rip), %rdx     # 0x105790
callq 0x498d0
cmpl $0x4, -0x8(%rbp)
je 0x8d0d
callq 0x6fa0
leaq 0xce6d5(%rip), %rdi     # 0xd73e9
callq 0x49d80
cmpl $0x0, %eax
je 0x8d32
movl $0x2, 0xfe5b4(%rip)     # 0x1072dc
movl $0x2, 0xfe5a6(%rip)     # 0x1072d8
leaq 0xdab0c(%rip), %rdi     # 0xe3845
callq 0x49d80
cmpl $0x0, %eax
je 0x8d61
leaq 0xdaafb(%rip), %rdi     # 0xe3845
xorl %eax, %eax
movl %eax, %esi
callq 0x49940
movq %rax, %rdi
callq 0x20970
movl %eax, 0xfe57b(%rip)     # 0x1072dc
leaq 0xce96a(%rip), %rdi     # 0xd76d2
callq 0x49d80
movl %eax, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x461(%rbp)
jne 0x8d94
leaq 0xce955(%rip), %rdi     # 0xd76d8
callq 0x49d80
cmpl $0x0, %eax
setne %al
movb %al, -0x461(%rbp)
movb -0x461(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0xfe513(%rip)     # 0x1072b8
leaq 0xce6b8(%rip), %rdi     # 0xd7464
callq 0x49d80
movl %eax, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x462(%rbp)
jne 0x8dd8
leaq 0xce917(%rip), %rdi     # 0xd76de
callq 0x49d80
cmpl $0x0, %eax
setne %al
movb %al, -0x462(%rbp)
movb -0x462(%rbp), %al
movzbl %al, %eax
andl $0x1, %eax
movl %eax, 0xfe4d6(%rip)     # 0x1072c0
leaq 0xce681(%rip), %rdi     # 0xd7472
callq 0x49d80
movl %eax, 0xfe4c0(%rip)     # 0x1072bc
movl 0xfe4da(%rip), %eax     # 0x1072dc
movl %eax, -0x468(%rbp)
testl %eax, %eax
je 0x8e27
jmp 0x8e0e
movl -0x468(%rbp), %eax
addl $-0x2, %eax
subl $0x1, %eax
ja 0x8e30
jmp 0x8e1e
movl $0x1, -0x14(%rbp)
jmp 0x8e45
movl $0x0, -0x14(%rbp)
jmp 0x8e45
movl $0x0, -0x14(%rbp)
leaq 0xce8a6(%rip), %rdi     # 0xd76e4
movb $0x0, %al
callq 0x35d40
leaq 0xcf58d(%rip), %rdi     # 0xd83d9
callq 0x49d80
cmpl $0x0, %eax
je 0x8e74
leaq 0xcf57c(%rip), %rdi     # 0xd83d9
xorl %eax, %eax
movl %eax, %esi
callq 0x49940
movq %rax, %rdi
callq 0x20970
movl %eax, 0xfe464(%rip)     # 0x1072d8
cmpl $0x4, 0xfe45d(%rip)     # 0x1072d8
je 0x8e86
cmpl $0x1, 0xfe454(%rip)     # 0x1072d8
jne 0x8e90
movl $0x1, 0xfe428(%rip)     # 0x1072b8
leaq 0xce5d3(%rip), %rdi     # 0xd746a
callq 0x49d80
cmpl $0x0, %eax
je 0x8eab
movl $0x0, 0xfe40d(%rip)     # 0x1072b8
movl 0xfe427(%rip), %eax     # 0x1072d8
addl $-0x2, %eax
subl $0x2, %eax
ja 0x8ed4
jmp 0x8ebb
movsd 0xcd14d(%rip), %xmm0    # 0xd6010
movsd %xmm0, 0xfc8b5(%rip)    # 0x105780
movl $0x1, -0x18(%rbp)
jmp 0x8edb
movl $0x0, -0x18(%rbp)
movl -0x14(%rbp), %eax
xorl -0x18(%rbp), %eax
cmpl $0x0, %eax
je 0x8ef4
leaq 0xce817(%rip), %rdi     # 0xd7704
movb $0x0, %al
callq 0x35d40
cmpl $0x0, -0x14(%rbp)
je 0x8f22
movl $0x5, 0xfc860(%rip)     # 0x105764
movl $0x1, 0xfc85a(%rip)     # 0x105768
movl $0x0, 0xfe398(%rip)     # 0x1072b0
movl $0x0, 0xfc84e(%rip)     # 0x105770
movl 0xfc83c(%rip), %esi     # 0x105764
leaq 0xce4c3(%rip), %rdi     # 0xd73f2
callq 0x49a60
movl %eax, 0xfc82a(%rip)     # 0x105764
movl 0xfc824(%rip), %esi     # 0x105764
leaq 0xce4b4(%rip), %rdi     # 0xd73fb
callq 0x49a60
movl %eax, 0xfe356(%rip)     # 0x1072a8
movl 0xfc810(%rip), %esi     # 0x105768
leaq 0xce4ac(%rip), %rdi     # 0xd740b
callq 0x49a60
movl %eax, 0xfc7fe(%rip)     # 0x105768
leaq 0xce493(%rip), %rdi     # 0xd7404
callq 0x49d80
movl %eax, 0xfe334(%rip)     # 0x1072b0
leaq 0xce4f9(%rip), %rdi     # 0xd747c
callq 0x49d80
movl %eax, 0xfe336(%rip)     # 0x1072c4
movl 0xfc7d8(%rip), %esi     # 0x10576c
leaq 0xce479(%rip), %rdi     # 0xd7414
callq 0x49a60
movl %eax, 0xfc7c6(%rip)     # 0x10576c
movl 0xfc7c4(%rip), %esi     # 0x105770
leaq 0xce476(%rip), %rdi     # 0xd7429
callq 0x49a60
movl %eax, 0xfc7b2(%rip)     # 0x105770
movsd 0xfc7b2(%rip), %xmm0    # 0x105778
cvtsd2ss %xmm0, %xmm0
leaq 0xce47d(%rip), %rdi     # 0xd744e
callq 0x49c00
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0xfc796(%rip)    # 0x105778
movsd 0xfc796(%rip), %xmm0    # 0x105780
cvtsd2ss %xmm0, %xmm0
leaq 0xce428(%rip), %rdi     # 0xd741d
callq 0x49c00
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0xfc77a(%rip)    # 0x105780
movl 0xfc758(%rip), %edi     # 0x105764
movl -0x14(%rbp), %esi
callq 0xcbf0
cmpl $0x0, 0xfc74d(%rip)     # 0x105768
jge 0x902b
leaq 0xce70b(%rip), %rdi     # 0xd772f
movb $0x0, %al
callq 0x35d40
cmpl $0x64, 0xfc73e(%rip)    # 0x105770
jle 0x9042
leaq 0xce710(%rip), %rdi     # 0xd774b
movb $0x0, %al
callq 0x35d40
leaq 0xce3f6(%rip), %rdi     # 0xd743f
callq 0x49d80
cmpl $0x0, %eax
je 0x906d
movl 0xfc71b(%rip), %esi     # 0x105774
leaq 0xce3df(%rip), %rdi     # 0xd743f
callq 0x49a60
movl %eax, 0xfc709(%rip)     # 0x105774
jmp 0x9087
movl 0xfc6f1(%rip), %edi     # 0x105764
movl 0xfe22f(%rip), %esi     # 0x1072a8
movl -0x14(%rbp), %edx
callq 0xfc20
movl %eax, 0xfc6ed(%rip)     # 0x105774
leaq 0xce3a2(%rip), %rdi     # 0xd7430
callq 0x49d80
movl %eax, 0xfe21b(%rip)     # 0x1072b4
leaq 0xce34e(%rip), %rdi     # 0xd73ee
xorl %eax, %eax
movl %eax, %esi
callq 0x49940
movq %rax, 0xfe220(%rip)     # 0x1072d0
leaq 0xce380(%rip), %rdi     # 0xd7437
xorl %eax, %eax
movl %eax, %esi
callq 0x49940
movq %rax, 0xfe201(%rip)     # 0x1072c8
leaq 0xd8951(%rip), %rdi     # 0xe1a1f
xorl %eax, %eax
movl %eax, %esi
callq 0x49940
movq %rax, 0xfe202(%rip)     # 0x1072e0
leaq 0xce363(%rip), %rdi     # 0xd7448
xorl %eax, %eax
movl %eax, %esi
callq 0x49940
movq %rax, 0xfe1fb(%rip)     # 0x1072f0
leaq 0xd4b7e(%rip), %rdi     # 0xddc7a
xorl %eax, %eax
movl %eax, %esi
callq 0x49940
movq %rax, 0xfe1dc(%rip)     # 0x1072e8
cmpq $0x0, 0xfe1d4(%rip)     # 0x1072e8
je 0x9146
cmpq $0x0, 0xfe1c2(%rip)     # 0x1072e0
je 0x9146
movq 0xfe1c1(%rip), %rdi     # 0x1072e8
movq 0xfe1b2(%rip), %rsi     # 0x1072e0
callq 0x6a40
cmpl $0x0, %eax
je 0x9146
leaq 0xce629(%rip), %rdi     # 0xd7768
movb $0x0, %al
callq 0x35d40
cmpq $0x0, 0xfe192(%rip)     # 0x1072e0
je 0x915e
movq 0xfe189(%rip), %rax     # 0x1072e0
movq %rax, 0xfe18a(%rip)     # 0x1072e8
movq 0xfc623(%rip), %rsi     # 0x105788
leaq 0xcee6c(%rip), %rdi     # 0xd7fd8
callq 0x49940
movq %rax, 0xfc610(%rip)     # 0x105788
leaq 0xce2e0(%rip), %rdi     # 0xd745f
xorl %esi, %esi
callq 0x49a60
movl %eax, 0xfe120(%rip)     # 0x1072ac
leaq 0xce2f6(%rip), %rdi     # 0xd7489
movl $0xb71b0, %esi          # imm = 0xB71B0
callq 0x49a60
movl %eax, %edi
callq 0x37f50
leaq 0xce2e8(%rip), %rdi     # 0xd7493
callq 0x49d80
movl %eax, %edi
callq 0x96c0
movl 0xfc5a3(%rip), %esi     # 0x105760
leaq 0xce641(%rip), %rdi     # 0xd7805
callq 0x49a60
movl %eax, 0xfc591(%rip)     # 0x105760
cmpl $0x0, 0xfc58a(%rip)     # 0x105760
jg 0x91e6
leaq 0xce5dc(%rip), %rdi     # 0xd77bb
movb $0x0, %al
callq 0x35d40
cmpl $0x1, 0xfc573(%rip)     # 0x105760
jle 0x923a
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x922c
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xdc1fd(%rip), %rsi     # 0xe5406
callq 0x6a40
cmpl $0x0, %eax
je 0x922c
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xd4695(%rip), %rsi     # 0xdd8b7
callq 0x6a40
cmpl $0x0, %eax
jne 0x923a
leaq 0xce5a3(%rip), %rdi     # 0xd77d6
movb $0x0, %al
callq 0x35d40
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x428(%rbp), %rsi
leaq -0x43c(%rbp), %rdx
callq 0x15a40
cmpl $0x1, -0x43c(%rbp)
jle 0x926c
leaq 0xce5a8(%rip), %rdi     # 0xd780d
movb $0x0, %al
callq 0x35d40
movslq 0xfc4ed(%rip), %rdi     # 0x105760
shlq $0x3, %rdi
callq 0x69c0
movq %rax, -0x438(%rbp)
movl $0x0, -0x440(%rbp)
movl -0x440(%rbp), %eax
cmpl 0xfc4c7(%rip), %eax     # 0x105760
jge 0x92d5
movq -0x428(%rbp), %rax
movq (%rax), %rdi
movl $0x1, %esi
callq 0x3b290
movq %rax, %rdx
movq -0x438(%rbp), %rax
movslq -0x440(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x440(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x440(%rbp)
jmp 0x928d
movl $0x0, -0x43c(%rbp)
movq -0x428(%rbp), %rax
movq (%rax), %rdi
movl $0x1, %esi
callq 0x3b290
movq %rax, -0x460(%rbp)
movq -0x460(%rbp), %rdi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x458(%rbp), %r8
leaq -0x44c(%rbp), %r9
movq %rcx, %rsi
movq %rcx, %rdx
callq 0x37230
cmpl $0x0, %eax
je 0x9334
movl -0x43c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x43c(%rbp)
jmp 0x92fa
cmpl $0x1, 0xfc425(%rip)     # 0x105760
jle 0x9353
movl -0x43c(%rbp), %eax
cltd
idivl 0xfc416(%rip)           # 0x105760
addl $0x1, %eax
movl %eax, -0x43c(%rbp)
movq -0x460(%rbp), %rdi
callq 0x3b5a0
movl $0x1, -0x440(%rbp)
movl -0x440(%rbp), %eax
cmpl 0xfc3eb(%rip), %eax     # 0x105760
jge 0x9429
movl -0x43c(%rbp), %eax
movl %eax, -0x444(%rbp)
movl -0x444(%rbp), %ecx
movl %ecx, %eax
addl $-0x1, %eax
movl %eax, -0x444(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x469(%rbp)
je 0x93d5
movq -0x460(%rbp), %rdi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x458(%rbp), %r8
leaq -0x44c(%rbp), %r9
movq %rcx, %rsi
movq %rcx, %rdx
callq 0x37230
cmpl $0x0, %eax
setne %al
movb %al, -0x469(%rbp)
movb -0x469(%rbp), %al
testb $0x1, %al
jne 0x93e1
jmp 0x93e3
jmp 0x9387
movq -0x438(%rbp), %rax
movslq -0x440(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x460(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x460(%rbp), %rax
movslq 0x2c(%rax), %rax
addq %rax, %rsi
xorl %edx, %edx
callq 0x3b460
movl -0x440(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x440(%rbp)
jmp 0x9369
leaq -0x460(%rbp), %rdi
callq 0x3c110
leaq -0x458(%rbp), %rdi
leaq -0x44c(%rbp), %rsi
callq 0x36da0
movslq 0xfc311(%rip), %rdi     # 0x105760
shlq $0x3, %rdi
callq 0x69c0
movq %rax, -0x430(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xcf6e0(%rip), %rsi     # 0xd8b4e
callq 0x2f780
movq %rax, %rcx
movq -0x430(%rbp), %rax
movq %rcx, (%rax)
movl $0x1, -0x440(%rbp)
movl -0x440(%rbp), %eax
cmpl 0xfc2ca(%rip), %eax     # 0x105760
jge 0x94f4
leaq -0x420(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
movl -0x440(%rbp), %ecx
leaq 0xce3c4(%rip), %rsi     # 0xd7878
movb $0x0, %al
callq 0x6160
leaq -0x420(%rbp), %rdi
leaq 0xce1c2(%rip), %rsi     # 0xd768b
callq 0x2f780
movq %rax, %rdx
movq -0x430(%rbp), %rax
movslq -0x440(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x440(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x440(%rbp)
jmp 0x948a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x43c(%rbp), %esi
movq -0x428(%rbp), %rdx
movq -0x438(%rbp), %rcx
movq -0x430(%rbp), %r8
callq 0x87f0
movl $0x0, -0x440(%rbp)
movl -0x440(%rbp), %eax
cmpl 0xfc22e(%rip), %eax     # 0x105760
jge 0x955f
movq -0x438(%rbp), %rdi
movslq -0x440(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
callq 0x3c110
movl -0x440(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x440(%rbp)
jmp 0x9526
movq -0x438(%rbp), %rdi
callq 0x6880
cmpl $0x1, 0xfc1ee(%rip)     # 0x105760
jle 0x9692
movl $0x1, -0x440(%rbp)
movl -0x440(%rbp), %eax
cmpl 0xfc1d2(%rip), %eax     # 0x105760
jge 0x9690
movq -0x430(%rbp), %rax
movslq -0x440(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x6110
leaq -0x420(%rbp), %rdi
movq -0x430(%rbp), %rax
movslq -0x440(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movl $0x1, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x6b20
movl %eax, -0x444(%rbp)
cmpl $0x0, %eax
jle 0x9633
leaq -0x420(%rbp), %rdi
movslq -0x444(%rbp), %rdx
movq -0x430(%rbp), %rax
movq (%rax), %rcx
movl $0x1, %esi
callq 0x6e80
movl %eax, -0x448(%rbp)
movl -0x448(%rbp), %eax
cmpl -0x444(%rbp), %eax
je 0x962e
movq -0x430(%rbp), %rdi
callq 0x6880
leaq 0xce050(%rip), %rdi     # 0xd7677
movb $0x0, %al
callq 0x35d40
jmp 0x95ab
movq -0x430(%rbp), %rdi
movslq -0x440(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
callq 0x301d0
leaq -0x420(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
movl -0x440(%rbp), %ecx
leaq 0xce20f(%rip), %rsi     # 0xd7878
movb $0x0, %al
callq 0x6160
leaq -0x420(%rbp), %rdi
callq 0x6da0
movl -0x440(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x440(%rbp)
jmp 0x9582
jmp 0x9692
movq -0x430(%rbp), %rdi
callq 0x301d0
movq -0x430(%rbp), %rdi
callq 0x6880
xorl %eax, %eax
addq $0x470, %rsp            # imm = 0x470
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop