// File: /workspace/github_c_makefile_star2_O3/thegenemyers[P]DASCRUBBER/DAScover.c
// Function: main
int main(int argc, char *argv[])
{ char  *root, *dpwd;
  int64  novl, hgap64;
  int    c;

  DAZZ_EXTRA ex_covr, ex_hgap;

  //  Process arguments

  { int  i, j, k;
    int  flags[128];
    char *eptr;
    int   mmax;

    ARG_INIT("DAScover")

    HGAP_MIN = 0;
    NUM_MASK = 0;

    mmax  = 10;
    MASKS = (Mask *) Malloc(mmax*sizeof(Mask),"Allocating mask array");
    if (MASKS == NULL)
      exit (1);

    j = 1;
    for (i = 1; i < argc; i++)
      if (argv[i][0] == '-')
        switch (argv[i][1])
        { default:
            ARG_FLAGS("v")
            break;
          case 'm':
            if (NUM_MASK >= mmax)
              { mmax  = 1.2*NUM_MASK + 10;
                MASKS = (Mask *) Realloc(MASKS,mmax*sizeof(Mask),"Reallocating mask array");
                if (MASKS == NULL)
                  exit (1);
              }
            MASKS[NUM_MASK++].name = argv[i]+2;
            break;
          case 'H':
            ARG_POSITIVE(HGAP_MIN,"HGAP threshold (in bp.s)")
            break;
        }
      else
        argv[j++] = argv[i];
    argc = j;

    VERBOSE = flags['v'];

    if (argc < 3)
      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
        fprintf(stderr,"\n");
        fprintf(stderr,"      -v: Verbose mode, output statistics as proceed.\n");
        fprintf(stderr,"      -H: HGAP minimum length threshold.\n");
        fprintf(stderr,"      -m: repeat masks, stats not collected over these intervals\n");
        exit (1);
      }
  }

  //  Open trimmed DB and any mask tracks

  { DAZZ_TRACK *track;
    int64      *anno;
    int         status, kind;
    int         i, j, k;

    status = Open_DB(argv[1],DB);
    if (status < 0)
      exit (1);
    if (status == 1)
      { fprintf(stderr,"%s: Cannot be called on a .dam index: %s\n",Prog_Name,argv[1]);
        exit (1);
      }
    if (DB->part)
      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
        exit (1);
      }
    Trim_DB(DB);
    Reads = DB->reads;

    k = 0;
    for (i = 0; i < NUM_MASK; i++)
      { status = Check_Track(DB,MASKS[i].name,&kind);
        switch (status)
        { case 0:
            fprintf(stderr,"%s: [WARNING] %s track is for the *un*trimmed DB?\n",
                           Prog_Name,MASKS[i].name);
            continue;
          case -1:
            fprintf(stderr,"%s: [WARNING] %s track size not correct for trimmed DB.\n",
                           Prog_Name,MASKS[i].name);
            continue;
          case -2:
            fprintf(stderr,"%s: [WARNING] -m%s option given but no track found.\n",
                           Prog_Name,MASKS[i].name);
            continue;
          default:
            if (kind != MASK_TRACK)
              { fprintf(stderr,"%s: [WARNING] %s track is not a mask track.\n",
                               Prog_Name,MASKS[i].name);
                continue;
              }
            break;
        }

        track = Open_Track(DB,MASKS[i].name);
        Load_All_Track_Data(track);

        anno = (int64 *) (track->anno);
        for (j = 0; j <= DB->nreads; j++)
          anno[j] /= sizeof(int);

        MASKS[k].name = MASKS[i].name;
        MASKS[k].idx  = anno;
        MASKS[k].data = (int *) (track->data);
        k += 1;
      }
    NUM_MASK = k;
  }

  //  Determine if overlap block is being processed and if so get first and last read
  //    from .db file

  ex_covr.vtype = DB_INT;
  ex_covr.nelem = MAX_COVER+1;
  ex_covr.accum = DB_SUM;
  ex_covr.name  = Cov_Name;
  ex_covr.value = Cov_Hist; 

  ex_hgap.vtype = DB_INT;
  ex_hgap.nelem = 1;
  ex_hgap.accum = DB_EXACT;
  ex_hgap.name  = Hgap_Name;
  hgap64 = HGAP_MIN;
  ex_hgap.value = &hgap64;

  dpwd = PathTo(argv[1]);
  root = Root(argv[1],".db");

  for (c = 2; c < argc; c++)
    { Block_Looper *parse;
      FILE         *input;

      parse = Parse_Block_LAS_Arg(argv[c]);

      while ((input = Next_Block_Arg(parse)) != NULL)
        { DB_PART  = 0;
          DB_FIRST = 0;
          DB_LAST  = DB->nreads;

          { FILE *dbfile;
            char  buffer[2*MAX_NAME+100];
            char *p, *eptr;
            int   i, part, nfiles, nblocks, cutoff, all, oindx;
            int64 size;

            p = rindex(Block_Arg_Root(parse),'.');
            if (p != NULL)
              { part = strtol(p+1,&eptr,10);
                if (*eptr == '\0' && eptr != p+1)
                  { dbfile = Fopen(Catenate(dpwd,"/",root,".db"),"r");
                    if (dbfile == NULL)
                      exit (1);
                    if (fscanf(dbfile,DB_NFILE,&nfiles) != 1)
                      SYSTEM_READ_ERROR
                    for (i = 0; i < nfiles; i++)
                      if (fgets(buffer,2*MAX_NAME+100,dbfile) == NULL)
                        SYSTEM_READ_ERROR
                    if (fscanf(dbfile,DB_NBLOCK,&nblocks) != 1)
                      SYSTEM_READ_ERROR
                    if (fscanf(dbfile,DB_PARAMS,&size,&cutoff,&all) != 3)
                      SYSTEM_READ_ERROR
                    for (i = 1; i <= part; i++)
                      if (fscanf(dbfile,DB_BDATA,&oindx,&DB_FIRST) != 2)
                        SYSTEM_READ_ERROR
                    if (fscanf(dbfile,DB_BDATA,&oindx,&DB_LAST) != 2)
                      SYSTEM_READ_ERROR
                    fclose(dbfile);
                    DB_PART = part;
                  }
              }
          }

          //  Set up cover extra's track

          if (DB_PART > 0)
           CV_ANAME = Strdup(Catenate(dpwd,PATHSEP,root,
                           Numbered_Suffix(".",DB_PART,".covr.anno")),"Allocating cover anno name");
          else
           CV_ANAME = Strdup(Catenate(dpwd,PATHSEP,root,".covr.anno"),"Allocating cover anno name");
          CV_AFILE = Fopen(CV_ANAME,"w");
          if (CV_ANAME == NULL || CV_AFILE == NULL)
            exit (1);

          { int size, length;

            length = 0;
            size   = 1;
            fwrite(&length,sizeof(int),1,CV_AFILE);
            fwrite(&size,sizeof(int),1,CV_AFILE);
          }

          //  Get trace point spacing information

          fread(&novl,sizeof(int64),1,input);
          fread(&TRACE_SPACING,sizeof(int),1,input);

          //  Initialize statistics gathering

          if (VERBOSE)
            { nreads = 0;
              totlen = 0;
              printf("\nDAScover %s %s\n",argv[1],Block_Arg_Root(parse));
            }

          { int i;

            for (i = 0; i <= MAX_COVER; i++)
              Cov_Hist[i] = 0;
          }

          //  Process each read pile

          make_a_pass(input,HISTOGRAM_COVER,0);

          //  If verbose output statistics summary to stdout

          if (VERBOSE)
            { int   i, cover;
              int64 ssum, stotal;

              printf("\nInput:  ");
              Print_Number(nreads,7,stdout);
              printf(" reads,  ");
              Print_Number(totlen,12,stdout);
              printf(" bases");
              if (HGAP_MIN > 0)
                { printf(" (another ");
                  Print_Number((DB_LAST-DB_FIRST) - nreads,0,stdout);
                  printf(" were < H-length)");
                }
              printf("\n");
 
              stotal = 0;
              for (i = 0; i <= MAX_COVER; i++)
                stotal += Cov_Hist[i];

              printf("\nCoverage Histogram\n\n");
              ssum = Cov_Hist[MAX_COVER];
              if (ssum > 0)
                printf("    %4d:  %9lld  %5.1f%%\n\n",
                       MAX_COVER,Cov_Hist[MAX_COVER],(100.*ssum)/stotal);
              stotal -= ssum;
              ssum    = 0;
              for (i = MAX_COVER-1; i >= 0; i--) 
                if (Cov_Hist[i] > 0)
                  { ssum += Cov_Hist[i];
                    printf("    %4d:  %9lld  %5.1f%%\n",
                           i,Cov_Hist[i],(100.*ssum)/stotal);
                  }

              i = 0;
              while (Cov_Hist[i+1] < Cov_Hist[i])
                i += 1;
              for (cover = i++; i < MAX_COVER; i++)
                if (Cov_Hist[cover] < Cov_Hist[i])
                  cover = i;

              printf("\n  Coverage is estimated at %d\n\n",cover);
            }

          //  Output coverage histogram

          Write_Extra(CV_AFILE,&ex_covr);
          Write_Extra(CV_AFILE,&ex_hgap);

          fclose(CV_AFILE);
          free(CV_ANAME);
          fclose(input);
        }

      Free_Block_Arg(parse);
    }

  free(dpwd);
  free(root);

  Close_DB(DB);
  free(Prog_Name);

  exit (0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4f98, %rsp           # imm = 0x4F98
movq %rsi, 0x18(%rsp)
movl %edi, %ebp
leaq 0x18b95(%rip), %rdi     # 0x1b050
leaq 0x18f10(%rip), %rsi     # 0x1b3d2
callq 0x1262e
leaq 0x20d0a(%rip), %rcx     # 0x231d8
movq %rax, (%rcx)
leaq 0x110(%rsp), %rdi
xorl %ebx, %ebx
movl $0x200, %edx            # imm = 0x200
xorl %esi, %esi
callq 0x1140
movl %ebx, 0x1ecb3(%rip)     # 0x211a0
movl %ebx, 0x1ecb1(%rip)     # 0x211a4
leaq 0x18b5f(%rip), %rsi     # 0x1b059
movl $0xf0, %edi
callq 0x12571
movq %rax, 0x1ec9d(%rip)     # 0x211a8
testq %rax, %rax
je 0x2742
cmpl $0x1, %ebp
jle 0x2691
movl %ebp, %r14d
movl $0xa, 0x20(%rsp)
movl $0x1, %r15d
movl $0x1, %ebx
leaq 0x18b35(%rip), %r12     # 0x1b06f
movq 0x18(%rsp), %rbp
movq (%rbp,%rbx,8), %r13
cmpb $0x2d, (%r13)
jne 0x25ef
movzbl 0x1(%r13), %eax
testl %eax, %eax
je 0x25fa
cmpl $0x48, %eax
je 0x260b
cmpl $0x6d, %eax
jne 0x2654
movl 0x1ec30(%rip), %ecx     # 0x211a4
movq 0x1ec2d(%rip), %rax     # 0x211a8
cmpl 0x20(%rsp), %ecx
jl 0x25d5
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
mulsd 0x18a78(%rip), %xmm0    # 0x1b008
addsd 0x18a78(%rip), %xmm0    # 0x1b010
cvttsd2si %xmm0, %ecx
movl %ecx, 0x20(%rsp)
movslq %ecx, %rcx
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rsi
movq %rax, %rdi
leaq 0x18ada(%rip), %rdx     # 0x1b08f
callq 0x125c9
movq %rax, 0x1ebe7(%rip)     # 0x211a8
testq %rax, %rax
je 0x2742
movq (%rbp,%rbx,8), %r13
movl 0x1ebcf(%rip), %ecx     # 0x211a4
addq $0x2, %r13
leal 0x1(%rcx), %edx
movl %edx, 0x1ebc2(%rip)     # 0x211a4
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq %r13, (%rax,%rcx,8)
jmp 0x25fa
movslq %r15d, %rax
incl %r15d
movq %r13, (%rbp,%rax,8)
incq %rbx
cmpq %r14, %rbx
jne 0x253f
jmp 0x274c
addq $0x2, %r13
movq %r13, %rdi
leaq 0xc0(%rsp), %rsi
movl $0xa, %edx
callq 0x11d0
movl %eax, 0x1eb76(%rip)     # 0x211a0
movq 0xc0(%rsp), %rcx
cmpb $0x0, (%rcx)
movq (%rbp,%rbx,8), %r8
jne 0x27a4
cmpb $0x0, 0x2(%r8)
je 0x27a4
testl %eax, %eax
jg 0x25fa
jmp 0x27d4
addq $0x2, %r13
movsbl %al, %ebp
movq %r12, %rdi
movl %ebp, %esi
callq 0x1150
testq %rax, %rax
je 0x271e
movslq %ebp, %rax
movl $0x1, 0x110(%rsp,%rax,4)
movb (%r13), %al
incq %r13
testb %al, %al
jne 0x2658
movq 0x18(%rsp), %rbp
jmp 0x25fa
movl $0x0, 0x1eb15(%rip)     # 0x211b0
movq 0x1e956(%rip), %rbx     # 0x20ff8
movq (%rbx), %rdi
leaq 0x20b2c(%rip), %rax     # 0x231d8
movq (%rax), %rdx
leaq 0x18a51(%rip), %rsi     # 0x1b107
leaq 0x18d51(%rip), %rcx     # 0x1b40e
xorl %eax, %eax
callq 0x11b0
movq (%rbx), %rsi
movl $0xa, %edi
callq 0x1180
movq (%rbx), %rcx
leaq 0x18a3a(%rip), %rdi     # 0x1b115
movl $0x36, %esi
movl $0x1, %edx
callq 0x12a0
movq (%rbx), %rcx
leaq 0x18a58(%rip), %rdi     # 0x1b14c
movl $0x29, %esi
movl $0x1, %edx
callq 0x12a0
movq (%rbx), %rcx
leaq 0x18a69(%rip), %rdi     # 0x1b176
movl $0x41, %esi
movl $0x1, %edx
callq 0x12a0
jmp 0x2742
movq 0x1e8d3(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x20aa9(%rip), %rax     # 0x231d8
movq (%rax), %rdx
leaq 0x18938(%rip), %rsi     # 0x1b071
movl %ebp, %ecx
xorl %eax, %eax
callq 0x11b0
movl $0x1, %edi
callq 0x1290
movl 0x2e8(%rsp), %eax
movl %eax, 0x1ea57(%rip)     # 0x211b0
cmpl $0x2, %r15d
jle 0x269b
movq 0x8(%rbp), %rdi
leaq 0x209d2(%rip), %rsi     # 0x23140
callq 0x135f7
testl %eax, %eax
js 0x2742
cmpl $0x1, %eax
jne 0x2805
movq 0x1e871(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x20a47(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movq 0x8(%rbp), %rcx
leaq 0x18a19(%rip), %rsi     # 0x1b1b8
jmp 0x3aec
movq 0x1e84d(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x20a23(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movsbl 0x1(%r8), %ecx
addq $0x2, %r8
leaq 0x188df(%rip), %rsi     # 0x1b0a7
xorl %eax, %eax
callq 0x11b0
jmp 0x2742
movq 0x1e81d(%rip), %rcx     # 0x20ff8
movq (%rcx), %rdi
leaq 0x209f3(%rip), %rcx     # 0x231d8
movq (%rcx), %rdx
leaq 0x188e1(%rip), %rsi     # 0x1b0d0
leaq 0x188f8(%rip), %rcx     # 0x1b0ee
movl %eax, %r8d
xorl %eax, %eax
callq 0x11b0
jmp 0x2742
cmpl $0x0, 0x2096c(%rip)     # 0x23178
jne 0x3acd
leaq 0x20927(%rip), %rdi     # 0x23140
callq 0x13e00
movq 0x2097b(%rip), %rax     # 0x231a0
movq %rax, 0x1e98c(%rip)     # 0x211b8
cmpl $0x0, 0x1e971(%rip)     # 0x211a4
movl $0x0, %ebp
jle 0x29ba
leaq 0x208fb(%rip), %r14     # 0x23140
xorl %ebx, %ebx
xorl %ebp, %ebp
movq 0x1e958(%rip), %rax     # 0x211a8
leaq (%rbx,%rbx,2), %r13
movq (%rax,%r13,8), %rsi
movq %r14, %rdi
leaq 0x110(%rsp), %rdx
callq 0x1525e
cmpl $-0x2, %eax
je 0x292a
cmpl $-0x1, %eax
je 0x2902
testl %eax, %eax
je 0x2952
cmpl $0x1, 0x110(%rsp)
jne 0x297a
movq 0x1e911(%rip), %rax     # 0x211a8
movq (%rax,%r13,8), %rsi
movq %r14, %rdi
callq 0x15464
movq %rax, %r12
movq %rax, %rdi
callq 0x15d3f
movq 0x18(%r12), %rax
movl 0x208b7(%rip), %ecx     # 0x23170
testl %ecx, %ecx
js 0x28cf
incq %rcx
xorl %edx, %edx
shrq $0x2, (%rax,%rdx,8)
incq %rdx
cmpq %rdx, %rcx
jne 0x28c2
movq 0x1e8d2(%rip), %rcx     # 0x211a8
movq (%rcx,%r13,8), %rdx
movslq %ebp, %rbp
leaq (,%rbp,2), %rsi
addq %rbp, %rsi
movq %rdx, (%rcx,%rsi,8)
movq %rax, 0x8(%rcx,%rsi,8)
movq 0x28(%r12), %rax
movq %rax, 0x10(%rcx,%rsi,8)
incl %ebp
jmp 0x29a7
movq 0x1e6ef(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x208c5(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movq 0x1e88b(%rip), %rax     # 0x211a8
movq (%rax,%r13,8), %rcx
leaq 0x18912(%rip), %rsi     # 0x1b23a
jmp 0x29a0
movq 0x1e6c7(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x2089d(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movq 0x1e863(%rip), %rax     # 0x211a8
movq (%rax,%r13,8), %rcx
leaq 0x18923(%rip), %rsi     # 0x1b273
jmp 0x29a0
movq 0x1e69f(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x20875(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movq 0x1e83b(%rip), %rax     # 0x211a8
movq (%rax,%r13,8), %rcx
leaq 0x1888f(%rip), %rsi     # 0x1b207
jmp 0x29a0
movq 0x1e677(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x2084d(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movq 0x1e813(%rip), %rax     # 0x211a8
movq (%rax,%r13,8), %rcx
leaq 0x18908(%rip), %rsi     # 0x1b2a8
xorl %eax, %eax
callq 0x11b0
incq %rbx
movslq 0x1e7f3(%rip), %rax     # 0x211a4
cmpq %rax, %rbx
jl 0x2849
movl %ebp, 0x1e7e4(%rip)     # 0x211a4
movabsq $0x3e900000000, %rax    # imm = 0x3E900000000
leaq 0xc0(%rsp), %rcx
movq %rax, (%rcx)
movl $0x1, 0x8(%rcx)
leaq 0x18a66(%rip), %rax     # 0x1b449
movq %rax, 0x10(%rcx)
leaq 0x1e7d2(%rip), %r13     # 0x211c0
movq %r13, 0x18(%rcx)
movabsq $0x100000000, %rax      # imm = 0x100000000
leaq 0xf0(%rsp), %rdx
movq %rax, (%rdx)
movl $0x0, 0x8(%rdx)
leaq 0x18a47(%rip), %rax     # 0x1b45c
movq %rax, 0x10(%rdx)
movslq 0x1e780(%rip), %rax     # 0x211a0
leaq 0xe0(%rsp), %rcx
movq %rax, (%rcx)
movq %rcx, 0x18(%rdx)
movq 0x18(%rsp), %rbx
movq 0x8(%rbx), %rdi
callq 0x126f1
movq %rax, 0x40(%rsp)
movq 0x8(%rbx), %rdi
leaq 0x18888(%rip), %rsi     # 0x1b2d5
callq 0x1274b
movq %rax, 0x38(%rsp)
movl %r15d, %eax
movq %rbx, %r15
movq %rax, 0x80(%rsp)
movl $0x2, %eax
movq %rax, 0x88(%rsp)
movq (%r15,%rax,8), %rdi
callq 0x173f6
movq %rax, %rbx
movq %rax, %rdi
callq 0x17228
testq %rax, %rax
je 0x3a76
movq %rbx, 0x70(%rsp)
movq %rax, 0x10(%rsp)
xorl %eax, %eax
movl %eax, 0x20667(%rip)     # 0x23108
movl %eax, 0x20665(%rip)     # 0x2310c
movl 0x206c3(%rip), %eax     # 0x23170
movl %eax, 0x2065d(%rip)     # 0x23110
movq %rbx, %rdi
callq 0x172dc
movq %rax, %rdi
movl $0x2e, %esi
callq 0x1270
testq %rax, %rax
je 0x2c44
movq %rax, %r12
incq %r12
movq %r12, %rdi
leaq 0x58(%rsp), %rsi
movl $0xa, %edx
callq 0x11d0
movq %rax, %r14
movq 0x58(%rsp), %rax
cmpq %r12, %rax
je 0x2c44
cmpb $0x0, (%rax)
jne 0x2c44
movq 0x40(%rsp), %rdi
leaq 0x187ca(%rip), %rsi     # 0x1b2d9
movq 0x38(%rsp), %rdx
leaq 0x187ba(%rip), %rcx     # 0x1b2d5
callq 0x12813
movq %rax, %rdi
leaq 0x198d2(%rip), %rsi     # 0x1c3fc
callq 0x12691
testq %rax, %rax
je 0x2742
movq %rax, %r12
movq %rax, %rdi
leaq 0x18796(%rip), %rsi     # 0x1b2db
leaq 0x34(%rsp), %rdx
xorl %eax, %eax
callq 0x1090
cmpl $0x1, %eax
jne 0x3af8
cmpl $0x0, 0x34(%rsp)
jle 0x2b89
xorl %ebx, %ebx
leaq 0x110(%rsp), %rdi
movl $0x4e84, %esi           # imm = 0x4E84
movq %r12, %rdx
callq 0x1190
testq %rax, %rax
je 0x3af8
incl %ebx
cmpl 0x34(%rsp), %ebx
jl 0x2b63
movq %r12, %rdi
leaq 0x18775(%rip), %rsi     # 0x1b308
leaq 0xb4(%rsp), %rdx
xorl %eax, %eax
callq 0x1090
cmpl $0x1, %eax
jne 0x3af8
movq %r12, %rdi
leaq 0x18761(%rip), %rsi     # 0x1b316
leaq 0xb8(%rsp), %rdx
leaq 0xb0(%rsp), %rcx
leaq 0xac(%rsp), %r8
xorl %eax, %eax
callq 0x1090
cmpl $0x3, %eax
jne 0x3af8
movl %r14d, %ebx
testl %r14d, %r14d
jle 0x2c0f
movq %r12, %rdi
leaq 0x1874d(%rip), %rsi     # 0x1b33c
leaq 0x6c(%rsp), %rdx
leaq 0x20511(%rip), %rcx     # 0x2310c
xorl %eax, %eax
callq 0x1090
cmpl $0x2, %eax
jne 0x3af8
decl %ebx
jne 0x2be5
movq %r12, %rdi
leaq 0x18723(%rip), %rsi     # 0x1b33c
leaq 0x6c(%rsp), %rdx
leaq 0x204eb(%rip), %rcx     # 0x23110
xorl %eax, %eax
callq 0x1090
cmpl $0x2, %eax
jne 0x3af8
movq %r12, %rdi
callq 0x10d0
movl %r14d, 0x204c4(%rip)    # 0x23108
movl 0x204be(%rip), %esi     # 0x23108
testl %esi, %esi
jle 0x2c77
leaq 0x187f2(%rip), %rdi     # 0x1b447
leaq 0x186ed(%rip), %rdx     # 0x1b349
callq 0x1291a
movq 0x40(%rsp), %rdi
leaq 0x186d9(%rip), %rsi     # 0x1b346
movq 0x38(%rsp), %rdx
movq %rax, %rcx
jmp 0x2c8f
movq 0x40(%rsp), %rdi
leaq 0x186c3(%rip), %rsi     # 0x1b346
movq 0x38(%rsp), %rdx
leaq 0x186ba(%rip), %rcx     # 0x1b349
callq 0x12813
movq 0x1e33d(%rip), %rbx     # 0x20fd8
movq %rax, %rdi
leaq 0x186af(%rip), %rsi     # 0x1b354
callq 0x1262e
movq %rax, 0x20467(%rip)     # 0x23118
movq %rax, %rdi
leaq 0x19161(%rip), %rsi     # 0x1be1c
callq 0x12691
movq %rax, 0x20459(%rip)     # 0x23120
cmpq $0x0, 0x20449(%rip)     # 0x23118
je 0x2742
testq %rax, %rax
je 0x2742
movl $0x0, 0x58(%rsp)
movl $0x1, 0x110(%rsp)
movl $0x4, %esi
movl $0x1, %edx
leaq 0x58(%rsp), %rdi
movq %rax, %rcx
callq 0x12a0
movq 0x20411(%rip), %rcx     # 0x23120
movl $0x4, %esi
movl $0x1, %edx
leaq 0x110(%rsp), %rdi
callq 0x12a0
movl $0x8, %esi
movl $0x1, %edx
leaq 0xe8(%rsp), %rdi
movq 0x10(%rsp), %r14
movq %r14, %rcx
callq 0x10c0
movl $0x4, %esi
movl $0x1, %edx
leaq 0x203d2(%rip), %rdi     # 0x23128
movq %r14, %rcx
callq 0x10c0
cmpl $0x0, 0x1e44b(%rip)     # 0x211b0
je 0x2d99
xorl %eax, %eax
movq %rax, 0x203c0(%rip)     # 0x23130
movq %rax, 0x203c1(%rip)     # 0x23138
movq 0x8(%r15), %r14
movq 0x70(%rsp), %rdi
callq 0x172dc
leaq 0x185e3(%rip), %rdi     # 0x1b36f
movq %r14, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1110
movl $0x1f48, %edx           # imm = 0x1F48
movq %r13, %rdi
xorl %esi, %esi
callq 0x1140
cmpq $0x0, 0x20400(%rip)     # 0x231b0
jne 0x2ddd
movslq 0x1e3bf(%rip), %rax     # 0x21178
shlq $0x4, %rax
leaq (%rax,%rax,2), %rdi
leaq 0x186a3(%rip), %rsi     # 0x1b46b
callq 0x12571
movq %rax, 0x203dc(%rip)     # 0x231b0
testq %rax, %rax
je 0x2742
movq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x1120
movl $0x8, %esi
movl $0x1, %edx
leaq 0x110(%rsp), %rdi
movq %r14, %rcx
callq 0x10c0
movl $0x4, %esi
movl $0x1, %edx
leaq 0x20313(%rip), %rdi     # 0x23128
movq %r14, %rcx
callq 0x10c0
xorl %eax, %eax
cmpl $0x7e, 0x20302(%rip)    # 0x23128
setge %al
incl %eax
movl %eax, 0x20387(%rip)     # 0x231b8
movq 0x20378(%rip), %rsi     # 0x231b0
movq %r14, %rdi
callq 0x9943
testl %eax, %eax
je 0x2e5c
movq 0x20365(%rip), %r12     # 0x231b0
movl $0x7fffffff, 0x24(%r12) # imm = 0x7FFFFFFF
movl 0x202b2(%rip), %esi     # 0x2310c
jmp 0x2e97
movslq 0x20355(%rip), %rax     # 0x231b8
movq 0x20346(%rip), %rcx     # 0x231b0
movslq 0x8(%rcx), %rsi
imulq %rax, %rsi
movq %r14, %rdi
movl $0x1, %edx
callq 0x1220
movq 0x2032a(%rip), %r12     # 0x231b0
movl 0x20280(%rip), %esi     # 0x2310c
cmpl %esi, 0x24(%r12)
jl 0x3b24
cmpl 0x20273(%rip), %esi     # 0x23110
movdqa 0x1817b(%rip), %xmm6    # 0x1b020
movdqa 0x18183(%rip), %xmm7    # 0x1b030
movdqa 0x1818a(%rip), %xmm8    # 0x1b040
pcmpeqd %xmm9, %xmm9
jge 0x3836
movslq %esi, %r13
incl %esi
movl $0x0, 0xc(%rsp)
movslq 0xc(%rsp), %rax
leaq (%rax,%rax,2), %rax
shlq $0x4, %rax
movupd (%r12,%rax), %xmm0
movdqu 0x10(%r12,%rax), %xmm1
movdqu 0x20(%r12,%rax), %xmm2
movdqu %xmm2, 0x20(%r12)
movdqu %xmm1, 0x10(%r12)
movupd %xmm0, (%r12)
movslq 0x24(%r12), %r14
cmpq %r14, %r13
jne 0x2f5b
movq %r13, %rbp
movl %esi, %r13d
addq $0x30, %r12
movq 0x10(%rsp), %rdi
movq %r12, %rsi
callq 0x9943
movl $0x1, %ebx
testl %eax, %eax
je 0x2f68
movl $0x1, 0xc(%rsp)
movdqa 0x180e3(%rip), %xmm6    # 0x1b020
movdqa 0x180eb(%rip), %xmm7    # 0x1b030
movdqa 0x180f2(%rip), %xmm8    # 0x1b040
pcmpeqd %xmm9, %xmm9
movl %r13d, %esi
jmp 0x3051
movl $0x0, 0xc(%rsp)
jmp 0x3089
movl $0x60, %r15d
movq 0x10(%rsp), %r12
movslq 0x2023e(%rip), %rax     # 0x231b8
movq 0x2022f(%rip), %rcx     # 0x231b0
movslq -0x28(%rcx,%r15), %rsi
imulq %rax, %rsi
movq %r12, %rdi
movl $0x1, %edx
callq 0x1220
movq 0x20212(%rip), %r12     # 0x231b0
cmpl %r14d, -0xc(%r12,%r15)
jne 0x31c0
incq %rbx
cmpl %ebx, 0x1e1c6(%rip)     # 0x21178
jle 0x2fbb
movq 0x10(%rsp), %rdi
jmp 0x300d
xorps %xmm0, %xmm0
cvtsi2sd %ebx, %xmm0
mulsd 0x1803e(%rip), %xmm0    # 0x1b008
addsd 0x18046(%rip), %xmm0    # 0x1b018
cvttsd2si %xmm0, %eax
movl %eax, 0x1e19c(%rip)     # 0x21178
cltq
shlq $0x4, %rax
leaq (%rax,%rax,2), %rsi
movq %r12, %rdi
leaq 0x184d9(%rip), %rdx     # 0x1b4c9
callq 0x125c9
movq %rax, %r12
movq %rax, 0x201b1(%rip)     # 0x231b0
testq %rax, %rax
movq 0x10(%rsp), %rdi
je 0x2742
addq %r15, %r12
movq %r12, %rsi
movq %rdi, %r12
callq 0x9943
addq $0x30, %r15
testl %eax, %eax
je 0x2f73
movl %ebx, 0xc(%rsp)
movdqa 0x17fed(%rip), %xmm6    # 0x1b020
movdqa 0x17ff5(%rip), %xmm7    # 0x1b030
movdqa 0x17ffc(%rip), %xmm8    # 0x1b040
pcmpeqd %xmm9, %xmm9
movl %r13d, %esi
movq 0x18(%rsp), %r15
movq 0x20158(%rip), %r12     # 0x231b0
leaq (%rbx,%rbx,2), %rax
shlq $0x4, %rax
movl $0x7fffffff, 0x24(%r12,%rax) # imm = 0x7FFFFFFF
movq %rbp, %r13
leaq 0x8(%r12), %rax
xorl %ecx, %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx), %rdx
movq %rdx, -0x8(%rax)
addl (%rax), %ecx
addq $0x30, %rax
decq %rbx
jne 0x3073
movq 0x20110(%rip), %rax     # 0x231a0
movslq %r13d, %rcx
movq %rcx, 0x20(%rsp)
leaq (%rcx,%rcx,4), %rcx
movslq 0x4(%rax,%rcx,8), %rdi
movl 0x20081(%rip), %ecx     # 0x23128
leal (%rcx,%rdi), %eax
decl %eax
cltd
idivl %ecx
cmpl 0x1e0eb(%rip), %edi     # 0x211a0
jge 0x30c3
movq 0x1df1a(%rip), %rbx     # 0x20fd8
jmp 0x3813
movl %eax, 0x68(%rsp)
cmpl $0x0, 0x200ee(%rip)     # 0x231bc
movq %r12, 0x50(%rsp)
jne 0x3212
movq %rdi, %r14
movl %esi, %ebp
leal -0x1(%rcx), %eax
addl 0x20079(%rip), %eax     # 0x23160
cltd
idivl %ecx
movl %eax, 0x200cc(%rip)     # 0x231bc
movslq %eax, %rdi
shlq $0x2, %rdi
leaq 0x183e4(%rip), %rsi     # 0x1b4e2
callq 0x12571
movq %rax, 0x200b6(%rip)     # 0x231c0
movslq 0x200ab(%rip), %rdi     # 0x231bc
shlq $0x2, %rdi
leaq 0x183dd(%rip), %rbx     # 0x1b4f9
movq %rbx, %rsi
callq 0x12571
movq %rax, 0x2009d(%rip)     # 0x231c8
movslq 0x2008a(%rip), %rdi     # 0x231bc
shlq $0x2, %rdi
movq %rbx, %rsi
callq 0x12571
movq %rax, 0x2008b(%rip)     # 0x231d0
movq 0x20074(%rip), %rcx     # 0x231c0
testq %rcx, %rcx
je 0x2742
movq 0x2006c(%rip), %rdx     # 0x231c8
testq %rdx, %rdx
je 0x2742
testq %rax, %rax
je 0x2742
movq 0x2003b(%rip), %rsi     # 0x231b0
movq %rsi, 0x50(%rsp)
movslq 0x2003b(%rip), %rsi     # 0x231bc
testq %rsi, %rsi
jle 0x31ef
incq %rsi
xorl %edi, %edi
movdqa 0x17e8d(%rip), %xmm6    # 0x1b020
movdqa 0x17e95(%rip), %xmm7    # 0x1b030
movdqa 0x17e9c(%rip), %xmm8    # 0x1b040
pcmpeqd %xmm9, %xmm9
movl %edi, -0x8(%rax,%rsi,4)
movl %edi, -0x8(%rdx,%rsi,4)
movl %edi, -0x8(%rcx,%rsi,4)
decq %rsi
cmpq $0x1, %rsi
ja 0x31a9
jmp 0x320d
movl %ebx, 0xc(%rsp)
movdqa 0x17e54(%rip), %xmm6    # 0x1b020
movdqa 0x17e5c(%rip), %xmm7    # 0x1b030
movdqa 0x17e63(%rip), %xmm8    # 0x1b040
pcmpeqd %xmm9, %xmm9
movl %r13d, %esi
movq 0x18(%rsp), %r15
jmp 0x3069
movdqa 0x17e29(%rip), %xmm6    # 0x1b020
movdqa 0x17e31(%rip), %xmm7    # 0x1b030
movdqa 0x17e38(%rip), %xmm8    # 0x1b040
pcmpeqd %xmm9, %xmm9
movl %ebp, %esi
movq %r14, %rdi
movl 0x1ff10(%rip), %eax     # 0x23128
movl 0x1ff51(%rip), %r15d    # 0x23170
leal 0x1(%r13), %ecx
movl %ecx, %r8d
movl %ecx, 0x64(%rsp)
cmpl %r15d, %ecx
jge 0x3260
movslq %esi, %rcx
shlq $0x3, %rcx
leaq (%rcx,%rcx,4), %rcx
movq 0x1df77(%rip), %rdx     # 0x211b8
addq %rdx, %rcx
addq $0x20, %rcx
movl %esi, %r8d
testb $0x4, 0x1(%rcx)
je 0x3260
incl %r8d
addq $0x28, %rcx
cmpl %r8d, %r15d
jne 0x324b
movl %r15d, %r8d
testq %r13, %r13
movl %esi, 0x30(%rsp)
movq %r13, 0x78(%rsp)
movq %rdi, 0x90(%rsp)
js 0x32a2
movq 0x1df3b(%rip), %rcx     # 0x211b8
movl %r13d, %r9d
movl %r9d, %edx
leaq (%rdx,%rdx,4), %rdx
testb $0x4, 0x21(%rcx,%rdx,8)
je 0x32a5
leal -0x1(%r9), %edx
testl %r9d, %r9d
movl %edx, %r9d
jg 0x3280
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
jmp 0x32a5
movl %r13d, %r9d
cmpl $0x0, 0xc(%rsp)
jle 0x3529
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
leal -0x1(%r10), %eax
movl %eax, 0x28(%rsp)
movslq %r15d, %rsi
movq 0x1dee9(%rip), %rax     # 0x211b8
movq 0x1feea(%rip), %r13     # 0x231c0
movq 0x1feeb(%rip), %r14     # 0x231c8
movl 0xc(%rsp), %ecx
movq %rcx, 0x48(%rsp)
addq $0x48, %rax
movq %rax, 0x98(%rsp)
leaq 0xc(%r13), %rax
movq %rax, 0xa0(%rsp)
xorl %eax, %eax
movl %r9d, %ecx
movl %r15d, 0x60(%rsp)
movslq %eax, %rdi
leaq (%rdi,%rdi,2), %rdx
shlq $0x4, %rdx
movl 0x28(%r12,%rdx), %ebp
cmpl %ebp, %r9d
jg 0x332b
cmpl %r8d, %ebp
jge 0x332b
incl %ecx
movl %ecx, %eax
jmp 0x351d
movslq %ebp, %rcx
leal 0x1(%rbp), %edx
cmpl %edx, %r15d
cmovgl %r15d, %edx
decl %edx
decl %ebp
leaq (%rcx,%rcx,4), %rbx
movq 0x98(%rsp), %r11
leaq (%r11,%rbx,8), %rbx
incq %rcx
cmpq %rsi, %rcx
jge 0x3365
incl %ebp
incq %rcx
testb $0x4, 0x1(%rbx)
leaq 0x28(%rbx), %rbx
jne 0x334f
jmp 0x3367
movl %edx, %ebp
cmpl 0xc(%rsp), %eax
jge 0x351d
movq %rdi, %rbx
leaq (%rbx,%rbx,2), %r15
shlq $0x4, %r15
cmpl %ebp, 0x28(%r12,%r15)
jg 0x34b4
addq %r12, %r15
movl 0x18(%r15), %eax
addl %r10d, %eax
movl 0x1fd90(%rip), %r11d    # 0x23128
cltd
idivl %r11d
movl %eax, %ecx
movl 0x10(%r15), %eax
addl 0x28(%rsp), %eax
cltd
idivl %r11d
cmpl %ecx, %eax
jge 0x34a7
movslq %eax, %rdx
movslq %ecx, %rcx
subq %rdx, %rcx
leaq 0x3(%rcx), %rax
andq $-0x4, %rax
decq %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movq 0xa0(%rsp), %rcx
leaq (%rcx,%rdx,4), %rcx
pxor %xmm8, %xmm0
xorl %edx, %edx
movq %rdx, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm2
por %xmm7, %xmm2
pxor %xmm8, %xmm2
movdqa %xmm2, %xmm3
pcmpgtd %xmm0, %xmm3
pcmpeqd %xmm0, %xmm2
pshufd $0xf5, %xmm2, %xmm4     # xmm4 = xmm2[1,1,3,3]
pand %xmm3, %xmm4
pshufd $0xf5, %xmm3, %xmm2     # xmm2 = xmm3[1,1,3,3]
por %xmm4, %xmm2
movd %xmm2, %r11d
notl %r11d
testb $0x1, %r11b
je 0x342e
movl $0x1, -0xc(%rcx,%rdx,4)
pxor %xmm9, %xmm2
pextrw $0x4, %xmm2, %r11d
testb $0x1, %r11b
je 0x3447
movl $0x1, -0x8(%rcx,%rdx,4)
por %xmm6, %xmm1
pxor %xmm8, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm0, %xmm2
pcmpeqd %xmm0, %xmm1
pshufd $0xf5, %xmm1, %xmm3     # xmm3 = xmm1[1,1,3,3]
pand %xmm2, %xmm3
pshufd $0xf5, %xmm2, %xmm1     # xmm1 = xmm2[1,1,3,3]
por %xmm3, %xmm1
pxor %xmm9, %xmm1
pextrw $0x0, %xmm1, %r11d
testb $0x1, %r11b
je 0x3487
movl $0x1, -0x4(%rcx,%rdx,4)
pextrw $0x4, %xmm1, %r11d
testb $0x1, %r11b
je 0x349a
movl $0x1, (%rcx,%rdx,4)
addq $0x4, %rdx
cmpq %rdx, %rax
jne 0x33e3
incq %rbx
cmpl %ebx, 0xc(%rsp)
jne 0x3374
movl 0x60(%rsp), %r15d
leaq (%rdi,%rdi,2), %rbx
shlq $0x4, %rbx
cmpl %ebp, 0x28(%r12,%rbx)
jg 0x351b
addq %r12, %rbx
movl 0x18(%rbx), %eax
addl %r10d, %eax
movl 0x1fc50(%rip), %r11d    # 0x23128
cltd
idivl %r11d
movl %eax, %ecx
movl 0x10(%rbx), %eax
addl 0x28(%rsp), %eax
cltd
idivl %r11d
cmpl %ecx, %eax
jge 0x350f
cltq
movslq %ecx, %rcx
cmpl $0x0, (%r13,%rax,4)
jle 0x3507
movl $0x0, (%r13,%rax,4)
incl (%r14,%rax,4)
incq %rax
cmpq %rax, %rcx
jne 0x34f2
incq %rdi
cmpq 0x48(%rsp), %rdi
jne 0x34b9
jmp 0x3529
movl %edi, %eax
movl %eax, %ecx
cmpl 0xc(%rsp), %eax
jl 0x3308
movslq 0x1dc74(%rip), %r12     # 0x211a4
movslq 0x64(%rsp), %rax
movq %rax, 0x28(%rsp)
testq %r12, %r12
leaq 0x1dc7c(%rip), %r15     # 0x211c0
jle 0x36b9
movq 0x1dc57(%rip), %rdi     # 0x211a8
movq 0x1fc78(%rip), %r8      # 0x231d0
addq $0xc, %r8
xorl %r9d, %r9d
leaq (%r9,%r9,2), %rax
movq 0x8(%rdi,%rax,8), %rcx
movq 0x20(%rsp), %rdx
movslq (%rcx,%rdx,8), %r10
movq 0x28(%rsp), %rdx
movq (%rcx,%rdx,8), %r11
cmpq %r10, %r11
jle 0x36ad
leaq (%rdi,%rax,8), %rax
movq 0x10(%rax), %rbx
movl (%rbx,%r10,4), %esi
movl 0x4(%rbx,%r10,4), %eax
movl 0x1fb8d(%rip), %r14d    # 0x23128
addl %r14d, %eax
decl %eax
cltd
idivl %r14d
movl %eax, %ecx
movl %esi, %eax
cltd
idivl %r14d
cmpl %ecx, %eax
jge 0x36a0
movslq %eax, %rdx
movslq %ecx, %rcx
subq %rdx, %rcx
leaq 0x3(%rcx), %rax
andq $-0x4, %rax
decq %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
leaq (%r8,%rdx,4), %rcx
xorl %edx, %edx
movq %rdx, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm3
por %xmm7, %xmm3
movdqa %xmm0, %xmm2
pxor %xmm8, %xmm2
pxor %xmm8, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm2, %xmm4
pcmpeqd %xmm2, %xmm3
pshufd $0xf5, %xmm3, %xmm5     # xmm5 = xmm3[1,1,3,3]
pand %xmm4, %xmm5
pshufd $0xf5, %xmm4, %xmm3     # xmm3 = xmm4[1,1,3,3]
por %xmm5, %xmm3
movd %xmm3, %esi
notl %esi
testb $0x1, %sil
je 0x362a
movl $0x1, -0xc(%rcx,%rdx,4)
pxor %xmm9, %xmm3
pextrw $0x4, %xmm3, %esi
testb $0x1, %sil
je 0x3642
movl $0x1, -0x8(%rcx,%rdx,4)
por %xmm6, %xmm1
pxor %xmm8, %xmm1
movdqa %xmm1, %xmm3
pcmpgtd %xmm2, %xmm3
pcmpeqd %xmm2, %xmm1
pshufd $0xf5, %xmm1, %xmm2     # xmm2 = xmm1[1,1,3,3]
pand %xmm3, %xmm2
pshufd $0xf5, %xmm3, %xmm1     # xmm1 = xmm3[1,1,3,3]
por %xmm2, %xmm1
pxor %xmm9, %xmm1
pextrw $0x0, %xmm1, %esi
testb $0x1, %sil
je 0x3681
movl $0x1, -0x4(%rcx,%rdx,4)
pextrw $0x4, %xmm1, %esi
testb $0x1, %sil
je 0x3693
movl $0x1, (%rcx,%rdx,4)
addq $0x4, %rdx
cmpq %rdx, %rax
jne 0x35d8
addq $0x2, %r10
cmpq %r10, %r11
jg 0x358b
incq %r9
cmpq %r12, %r9
jne 0x355f
movl 0x68(%rsp), %edx
testl %edx, %edx
jle 0x3702
movq 0x1fb08(%rip), %rax     # 0x231d0
movq 0x1faf9(%rip), %rcx     # 0x231c8
movl %edx, %edx
xorl %esi, %esi
cmpl $0x0, (%rax,%rsi,4)
jne 0x36f3
movslq (%rcx,%rsi,4), %rdi
cmpq $0x3e8, %rdi            # imm = 0x3E8
jl 0x36ef
incq 0x1fa13(%rip)           # 0x23100
jmp 0x36f3
incq (%r15,%rdi,8)
movl $0x0, (%rcx,%rsi,4)
incq %rsi
cmpq %rsi, %rdx
jne 0x36d3
testl %r12d, %r12d
jle 0x37da
movq 0x1da96(%rip), %rax     # 0x211a8
movq %rax, 0x48(%rsp)
movq 0x1fab2(%rip), %r13     # 0x231d0
xorl %ebp, %ebp
movq %r12, %rbx
leaq (,%rbp,2), %rax
addq %rbp, %rax
movq 0x48(%rsp), %rcx
movq 0x8(%rcx,%rax,8), %rcx
movq 0x20(%rsp), %rdx
movslq (%rcx,%rdx,8), %r15
movq 0x28(%rsp), %rdx
movq (%rcx,%rdx,8), %r12
cmpq %r15, %r12
jle 0x37cb
movq 0x48(%rsp), %rcx
leaq (%rcx,%rax,8), %rax
movq 0x10(%rax), %r14
movl 0x1f9c6(%rip), %edi     # 0x23128
movl (%r14,%r15,4), %esi
movl 0x4(%r14,%r15,4), %eax
addl %edi, %eax
decl %eax
cltd
idivl %edi
movl %eax, %ecx
movl %esi, %eax
cltd
idivl %edi
cmpl %ecx, %eax
jge 0x37c2
movslq %eax, %rdx
leaq (,%rdx,4), %rdi
addq %r13, %rdi
notl %eax
addl %eax, %ecx
leaq 0x4(,%rcx,4), %rdx
xorl %esi, %esi
callq 0x1140
pcmpeqd %xmm9, %xmm9
movdqa 0x17894(%rip), %xmm8    # 0x1b040
movdqa 0x1787c(%rip), %xmm7    # 0x1b030
movdqa 0x17864(%rip), %xmm6    # 0x1b020
movl 0x1f966(%rip), %edi     # 0x23128
addq $0x2, %r15
cmpq %r15, %r12
jg 0x3762
incq %rbp
movq %rbx, %r12
cmpq %rbx, %rbp
jne 0x3720
cmpl $0x0, 0x1d9cf(%rip)     # 0x211b0
je 0x37f9
incq 0x1f946(%rip)           # 0x23130
movq 0x90(%rsp), %rax
addq %rax, 0x1f93f(%rip)     # 0x23138
movq 0x18(%rsp), %r15
movq 0x1d7d3(%rip), %rbx     # 0x20fd8
movl 0x30(%rsp), %esi
movq 0x78(%rsp), %r13
movq 0x50(%rsp), %r12
incq %r13
movslq 0x1f8f3(%rip), %rax     # 0x23110
incl %esi
cmpq %rax, %r13
jl 0x2ece
movslq 0xc(%rsp), %rax
leaq 0x1d98c(%rip), %r13     # 0x211c0
jmp 0x3838
xorl %eax, %eax
leaq (%rax,%rax,2), %rax
shlq $0x4, %rax
cmpl $0x7fffffff, 0x24(%r12,%rax) # imm = 0x7FFFFFFF
jne 0x3b24
cmpl $0x0, 0x1d95a(%rip)     # 0x211b0
je 0x3a16
leaq 0x17b1d(%rip), %rdi     # 0x1b380
xorl %eax, %eax
callq 0x1110
movq 0x1f8bf(%rip), %rdi     # 0x23130
movq (%rbx), %rdx
movl $0x7, %esi
callq 0x129c9
leaq 0x17b05(%rip), %rdi     # 0x1b38a
xorl %eax, %eax
callq 0x1110
movq 0x1f8a5(%rip), %rdi     # 0x23138
movq (%rbx), %rdx
movl $0xc, %esi
callq 0x129c9
leaq 0x17aed(%rip), %rdi     # 0x1b394
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x1d8eb(%rip)     # 0x211a0
jle 0x38f5
leaq 0x17add(%rip), %rdi     # 0x1b39b
xorl %eax, %eax
callq 0x1110
movslq 0x1f844(%rip), %rdi     # 0x23110
movslq 0x1f839(%rip), %rax     # 0x2310c
subq %rax, %rdi
subq 0x1f853(%rip), %rdi     # 0x23130
movq (%rbx), %rdx
xorl %esi, %esi
callq 0x129c9
leaq 0x17ab8(%rip), %rdi     # 0x1b3a6
xorl %eax, %eax
callq 0x1110
movl $0xa, %edi
callq 0x1040
xorl %eax, %eax
xorl %ebx, %ebx
addq (%rax,%r13), %rbx
addq $0x8, %rax
cmpq $0x1f48, %rax           # imm = 0x1F48
jne 0x3903
leaq 0x17bf6(%rip), %rdi     # 0x1b510
callq 0x10a0
movq 0x1f7da(%rip), %r14     # 0x23100
testq %r14, %r14
jle 0x3957
cvtsi2sd %r14, %xmm0
mulsd 0x176e0(%rip), %xmm0    # 0x1b018
cvtsi2sd %rbx, %xmm1
divsd %xmm1, %xmm0
leaq 0x17a70(%rip), %rdi     # 0x1b3b8
movl $0x3e8, %esi            # imm = 0x3E8
movq %r14, %rdx
movb $0x1, %al
callq 0x1110
subq %r14, %rbx
xorps %xmm0, %xmm0
cvtsi2sd %rbx, %xmm0
movsd %xmm0, 0x20(%rsp)
movl $0x3e7, %r14d           # imm = 0x3E7
xorl %ebx, %ebx
movq (%r13,%r14,8), %rdx
testq %rdx, %rdx
jle 0x39a4
addq %rdx, %rbx
xorps %xmm0, %xmm0
cvtsi2sd %rbx, %xmm0
mulsd 0x1768b(%rip), %xmm0    # 0x1b018
divsd 0x20(%rsp), %xmm0
leaq 0x17a39(%rip), %rdi     # 0x1b3d3
movl %r14d, %esi
movb $0x1, %al
callq 0x1110
addq $-0x1, %r14
jb 0x3970
movq $-0x1, %rsi
movq 0x1d808(%rip), %rcx     # 0x211c0
leaq 0x1d809(%rip), %rdx     # 0x211c8
movq %rdx, %rax
movq 0x10(%r13,%rsi,8), %rdi
incq %rsi
addq $0x8, %rdx
cmpq %rcx, %rdi
movq %rdi, %rcx
jl 0x39bf
cmpq $0x3e7, %rsi            # imm = 0x3E7
jae 0x3a08
leaq 0x1(%rsi), %rcx
movl %esi, %edx
movslq %edx, %rsi
movq (%r13,%rsi,8), %rdi
movl %ecx, %esi
cmpq (%rax), %rdi
jl 0x39f6
movl %edx, %esi
incq %rcx
addq $0x8, %rax
movl %esi, %edx
cmpq $0x3e8, %rcx            # imm = 0x3E8
jne 0x39e5
leaq 0x179de(%rip), %rdi     # 0x1b3ed
xorl %eax, %eax
callq 0x1110
movq 0x1f703(%rip), %rdi     # 0x23120
leaq 0xc0(%rsp), %rsi
callq 0x162b0
movq 0x1f6ef(%rip), %rdi     # 0x23120
leaq 0xf0(%rsp), %rsi
callq 0x162b0
movq 0x1f6db(%rip), %rdi     # 0x23120
callq 0x10d0
movq 0x1f6c7(%rip), %rdi     # 0x23118
callq 0x1030
movq 0x10(%rsp), %rdi
callq 0x10d0
movq 0x70(%rsp), %rbx
movq %rbx, %rdi
callq 0x17228
testq %rax, %rax
jne 0x2a94
movq %rbx, %rdi
callq 0x17307
movq 0x88(%rsp), %rax
incq %rax
cmpq 0x80(%rsp), %rax
jne 0x2a6a
movq 0x40(%rsp), %rdi
callq 0x1030
movq 0x38(%rsp), %rdi
callq 0x1030
leaq 0x1f68e(%rip), %rdi     # 0x23140
callq 0x145de
leaq 0x1f71a(%rip), %rax     # 0x231d8
movq (%rax), %rdi
callq 0x1030
xorl %edi, %edi
callq 0x1290
movq 0x1d524(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x1f6fa(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movq 0x8(%rbp), %rcx
leaq 0x176f6(%rip), %rsi     # 0x1b1e2
xorl %eax, %eax
callq 0x11b0
jmp 0x2742
movq 0x1d4f9(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x1f6cf(%rip), %rax     # 0x231d8
movq (%rax), %rdx
leaq 0x177d5(%rip), %rsi     # 0x1b2e8
xorl %eax, %eax
callq 0x11b0
movl $0x2, %edi
callq 0x1290
movq 0x1d4cd(%rip), %rax     # 0x20ff8
movq (%rax), %rdi
leaq 0x1f6a3(%rip), %rax     # 0x231d8
movq (%rax), %rdx
movl 0x1f5ca(%rip), %ecx     # 0x23108
leaq 0x17940(%rip), %rsi     # 0x1b485
jmp 0x273b
nop