// File: /workspace/github_c_makefile_star2_O0/thegenemyers[P]DASCRUBBER/DASrealign.c
// Function: main
int main(int argc, char *argv[])
{ DAZZ_TRACK *map1, *map2;

  //  Process arguments

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

    ARG_INIT("DASrealign")

    MIN_LEN = 800;

    j = 1;
    for (i = 1; i < argc; i++)
      if (argv[i][0] == '-')
        switch (argv[i][1])
        { default:
            ARG_FLAGS("v")
            break;
          case 'l':
            ARG_POSITIVE(MIN_LEN,"Minimum piece length to recompute")
            break;
        }
      else
        argv[j++] = argv[i];
    argc = j;

    VERBOSE = flags['v'];

    if (argc != 5)
      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
        fprintf(stderr,"\n");
        fprintf(stderr,"      -v: Verbose mode, output statistics as proceed.\n");
        fprintf(stderr,"      -l: minimum length alignment length.\n");
        exit (1);
      }
  }

  { int status;

    status = Open_DB(argv[1],ADB);
    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 ( ! ADB->part)
      { fprintf(stderr,"%s: Must be called on a block: %s\n",Prog_Name,argv[1]);
        exit (1);
      }
    Trim_DB(ADB);

    Load_All_Reads(ADB,0);
  }

  if (strcmp(argv[1],argv[2]) == 0)
    BDB = ADB;
  else
    { int status;

      status = Open_DB(argv[2],BDB);
      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 ( ! BDB->part)
        { fprintf(stderr,"%s: Must be called on a block: %s\n",Prog_Name,argv[1]);
          exit (1);
        }
      Trim_DB(BDB);

      Load_All_Reads(BDB,0);
    }
  AFIRST = ADB->tfirst;
  BFIRST = BDB->tfirst;

  map1 = Open_Track(ADB,"map");
  if (map1 != NULL)
    { int i, o, q, n; 

      Load_All_Track_Data(map1);
 
      AMAP_IDX = (int64 *) map1->anno;
      AMAP     = (int *) map1->data;
      for (i = 0; i <= ADB->nreads; i++)
        AMAP_IDX[i] /= sizeof(int);

      ADB_ofirst = AMAP[AMAP_IDX[0]];
      ADB_olast  = AMAP[AMAP_IDX[ADB->nreads-1]]+1;
      IAMAP = (int *) Malloc(sizeof(int)*((ADB_olast-ADB_ofirst)+1),"Inverse map") - ADB_ofirst;

      IAMAP[q = ADB_olast] = n = ADB->nreads;
      for (i = ADB->nreads-1; i >= 0; i--)
        { o = AMAP[AMAP_IDX[i]];
          if (q > o)
            while (--q > o)
              IAMAP[q] = n;
          IAMAP[o] = n = i;
        }
    }
  else
    { fprintf(stderr,"%s: Must have a 'map' track, run DASedit\n",Prog_Name);
      exit (1);
    }

  if (BDB == ADB)
    { map2 = map1;
      BMAP_IDX = AMAP_IDX;
      BMAP = AMAP;
      BDB_ofirst = ADB_ofirst;
      BDB_olast  = ADB_olast ;
      IBMAP = IAMAP;
    }
  else
    { map2 = Open_Track(BDB,"map");
      if (map2 != NULL)
        { int i, o, q, n; 

          Load_All_Track_Data(map2);
     
          BMAP_IDX = (int64 *) map2->anno;
          BMAP     = (int *) map2->data;
          for (i = 0; i <= BDB->nreads; i++)
            BMAP_IDX[i] /= sizeof(int);

          BDB_ofirst = BMAP[BMAP_IDX[0]];
          BDB_olast  = BMAP[BMAP_IDX[BDB->nreads-1]]+1;
          IBMAP = (int *) Malloc(sizeof(int)*((BDB_olast-BDB_ofirst)+1),"Inverse map") - BDB_ofirst;

          IBMAP[q = BDB_olast] = n = BDB->nreads;
          for (i = BDB->nreads-1; i >= 0; i--)
            { o = BMAP[BMAP_IDX[i]];
              if (q > o)
                while (--q > o)
                  IBMAP[q] = n;
              IBMAP[o] = n = i;
            }
        }
      else
        { fprintf(stderr,"%s: Must have a 'map' track, run DASedit\n",Prog_Name);
          exit (1);
        }
    }

  ADB_ofirst = AMAP[AMAP_IDX[0]];
  BDB_ofirst = BMAP[BMAP_IDX[0]];
  ADB_olast  = AMAP[AMAP_IDX[ADB->nreads-1]]+1;
  BDB_olast  = BMAP[BMAP_IDX[BDB->nreads-1]]+1;

  //  Open .las and process piles therein output new piles to F.las

  { FILE *input;
    char *las, *pwd;
    char *lasT, *pwdT;
    int64 novl;

    las = Root(argv[3],".las");
    pwd = PathTo(argv[3]);

    lasT = Root(argv[4],".las");
    pwdT = PathTo(argv[4]);

    if (strcmp(las,lasT) == 0 && strcmp(pwd,pwdT) == 0)
      { fprintf(stderr,"%s: source and target are the same !\n",Prog_Name);
        exit (1);
      }

    input  = Fopen(Catenate(pwd,"/",las,".las"),"r");
    OUTPUT = Fopen(Catenate(pwdT,"/",lasT,".las"),"w");
    if (input == NULL || OUTPUT == NULL)
      exit (1);
    free(pwd);
    free(las);

    WOVLS = 0;
    TRACE_SPACING = 0;
    fwrite(&WOVLS,sizeof(int64),1,OUTPUT);
    fwrite(&TRACE_SPACING,sizeof(int),1,OUTPUT);

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

    make_a_pass(input,EXTENDER,1);

    rewind(OUTPUT);
    fwrite(&WOVLS,sizeof(int64),1,OUTPUT);
    fclose(OUTPUT);
  }

  exit (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x290, %rsp            # imm = 0x290
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0x24c00(%rip), %rdi     # 0x27040
leaq 0x25959(%rip), %rsi     # 0x27da0
callq 0x1b8e0
movq %rax, %rcx
leaq 0x2a20a(%rip), %rax     # 0x2c660
movq %rcx, (%rax)
movl $0x0, -0x24(%rbp)
cmpl $0x80, -0x24(%rbp)
jge 0x2483
movslq -0x24(%rbp), %rax
movl $0x0, -0x230(%rbp,%rax,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2460
movl $0x320, 0x29f8f(%rip)   # imm = 0x320
movl $0x1, -0x28(%rbp)
movl $0x1, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x26a6
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x2674
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movb 0x1(%rax), %al
subb $0x6c, %al
je 0x2596
jmp 0x24d8
movl $0x1, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x2591
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %esi
leaq 0x24b34(%rip), %rdi     # 0x2704b
callq 0x2130
cmpq $0x0, %rax
jne 0x2562
movq 0x29acf(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2a12d(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
leaq 0x24afc(%rip), %rsi     # 0x2704d
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cltq
movl $0x1, -0x230(%rbp,%rax,4)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x24df
jmp 0x2672
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x2, %rdi
leaq -0x238(%rbp), %rsi
movl $0xa, %edx
callq 0x21b0
movl %eax, 0x29e5f(%rip)     # 0x2c41c
movq -0x238(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x25e1
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x2(%rax), %eax
cmpl $0x0, %eax
jne 0x262d
movq 0x29a10(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2a06e(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rsi
movq (%rax,%rsi,8), %r8
addq $0x2, %r8
leaq 0x24a4f(%rip), %rsi     # 0x2706b
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
cmpl $0x0, 0x29de8(%rip)     # 0x2c41c
jg 0x2670
movq 0x299bb(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2a019(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movl 0x29dcb(%rip), %r8d     # 0x2c41c
leaq 0x24a3c(%rip), %rsi     # 0x27094
leaq 0x24a53(%rip), %rcx     # 0x270b2
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
jmp 0x2672
jmp 0x2696
movq -0x10(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x10(%rbp), %rax
movl -0x28(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x28(%rbp)
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x2698
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x249b
movl -0x28(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x58(%rbp), %eax
movl %eax, 0x29d6b(%rip)     # 0x2c420
cmpl $0x5, -0x8(%rbp)
je 0x2736
movq 0x29936(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x29f94(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movq 0x29a9a(%rip), %rcx     # 0x2c170
leaq 0x249f7(%rip), %rsi     # 0x270d4
movb $0x0, %al
callq 0x2190
movq 0x2990d(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x256aa(%rip), %rsi     # 0x27d9f
movb $0x0, %al
callq 0x2190
movq 0x298f5(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x249d5(%rip), %rsi     # 0x270e2
movb $0x0, %al
callq 0x2190
movq 0x298dd(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x249f4(%rip), %rsi     # 0x27119
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq 0x29a33(%rip), %rsi     # 0x2c178
callq 0x1cf70
movl %eax, -0x23c(%rbp)
cmpl $0x0, -0x23c(%rbp)
jge 0x2763
movl $0x1, %edi
callq 0x2280
cmpl $0x1, -0x23c(%rbp)
jne 0x27a0
movq 0x29885(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x29ee3(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x249b6(%rip), %rsi     # 0x27145
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq 0x299d1(%rip), %rax     # 0x2c178
cmpl $0x0, 0x38(%rax)
jne 0x27e1
movq 0x29844(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x29ea2(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x2499f(%rip), %rsi     # 0x2716f
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq 0x29990(%rip), %rdi     # 0x2c178
callq 0x1dba0
movq 0x29984(%rip), %rdi     # 0x2c178
xorl %esi, %esi
callq 0x1f190
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2180
cmpl $0x0, %eax
jne 0x2828
movq 0x2995c(%rip), %rax     # 0x2c178
movq %rax, 0x2995d(%rip)     # 0x2c180
jmp 0x28ed
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x29949(%rip), %rsi     # 0x2c180
callq 0x1cf70
movl %eax, -0x240(%rbp)
cmpl $0x0, -0x240(%rbp)
jge 0x2855
movl $0x1, %edi
callq 0x2280
cmpl $0x1, -0x240(%rbp)
jne 0x2892
movq 0x29793(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x29df1(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x248c4(%rip), %rsi     # 0x27145
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq 0x298e7(%rip), %rax     # 0x2c180
cmpl $0x0, 0x38(%rax)
jne 0x28d3
movq 0x29752(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x29db0(%rip), %rax     # 0x2c660
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x248ad(%rip), %rsi     # 0x2716f
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq 0x298a6(%rip), %rdi     # 0x2c180
callq 0x1dba0
movq 0x2989a(%rip), %rdi     # 0x2c180
xorl %esi, %esi
callq 0x1f190
movq 0x29884(%rip), %rax     # 0x2c178
movl 0x40(%rax), %eax
movl %eax, 0x29b27(%rip)     # 0x2c424
movq 0x2987c(%rip), %rax     # 0x2c180
movl 0x40(%rax), %eax
movl %eax, 0x29b1b(%rip)     # 0x2c428
movq 0x29864(%rip), %rdi     # 0x2c178
leaq 0x2487f(%rip), %rsi     # 0x2719a
callq 0x1fd20
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x2b01
movq -0x18(%rbp), %rdi
callq 0x20c40
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x29ae9(%rip)     # 0x2c430
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x29ae2(%rip)     # 0x2c438
movl $0x0, -0x244(%rbp)
movl -0x244(%rbp), %eax
movq 0x2980b(%rip), %rcx     # 0x2c178
cmpl 0x30(%rcx), %eax
jg 0x299d
movq 0x29ab7(%rip), %rax     # 0x2c430
movslq -0x244(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
shrq $0x2, %rdx
movq %rdx, (%rax,%rcx,8)
movl -0x244(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x244(%rbp)
jmp 0x2960
movq 0x29a94(%rip), %rax     # 0x2c438
movq 0x29a85(%rip), %rcx     # 0x2c430
movq (%rcx), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x29a89(%rip)     # 0x2c440
movq 0x29a7a(%rip), %rax     # 0x2c438
movq 0x29a6b(%rip), %rcx     # 0x2c430
movq 0x297ac(%rip), %rdx     # 0x2c178
movl 0x30(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,4), %eax
addl $0x1, %eax
movl %eax, 0x29a5f(%rip)     # 0x2c444
movl 0x29a59(%rip), %eax     # 0x2c444
subl 0x29a4f(%rip), %eax     # 0x2c440
addl $0x1, %eax
movslq %eax, %rdi
shlq $0x2, %rdi
leaq 0x24790(%rip), %rsi     # 0x27192
callq 0x1b7c0
movslq 0x29a32(%rip), %rdx     # 0x2c440
xorl %ecx, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, 0x29a27(%rip)     # 0x2c448
movq 0x29750(%rip), %rax     # 0x2c178
movl 0x30(%rax), %edx
movl %edx, -0x250(%rbp)
movq 0x29a10(%rip), %rax     # 0x2c448
movl 0x29a06(%rip), %ecx     # 0x2c444
movl %ecx, -0x24c(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq 0x29727(%rip), %rax     # 0x2c178
movl 0x30(%rax), %eax
subl $0x1, %eax
movl %eax, -0x244(%rbp)
cmpl $0x0, -0x244(%rbp)
jl 0x2aff
movq 0x299c7(%rip), %rax     # 0x2c438
movq 0x299b8(%rip), %rcx     # 0x2c430
movslq -0x244(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x248(%rbp)
movl -0x24c(%rbp), %eax
cmpl -0x248(%rbp), %eax
jle 0x2ace
jmp 0x2a9c
movl -0x24c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24c(%rbp)
cmpl -0x248(%rbp), %eax
jle 0x2acc
movl -0x250(%rbp), %edx
movq 0x29988(%rip), %rax     # 0x2c448
movslq -0x24c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
jmp 0x2a9c
jmp 0x2ace
movl -0x244(%rbp), %edx
movl %edx, -0x250(%rbp)
movq 0x29967(%rip), %rax     # 0x2c448
movslq -0x248(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x244(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x244(%rbp)
jmp 0x2a5d
jmp 0x2b2d
movq 0x294f0(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x29b4e(%rip), %rax     # 0x2c660
movq (%rax), %rdx
leaq 0x24682(%rip), %rsi     # 0x2719e
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq 0x2964c(%rip), %rax     # 0x2c180
cmpq 0x2963d(%rip), %rax     # 0x2c178
jne 0x2b8c
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq 0x298e4(%rip), %rax     # 0x2c430
movq %rax, 0x298fd(%rip)     # 0x2c450
movq 0x298de(%rip), %rax     # 0x2c438
movq %rax, 0x298f7(%rip)     # 0x2c458
movl 0x298d9(%rip), %eax     # 0x2c440
movl %eax, 0x298f3(%rip)     # 0x2c460
movl 0x298d1(%rip), %eax     # 0x2c444
movl %eax, 0x298eb(%rip)     # 0x2c464
movq 0x298c8(%rip), %rax     # 0x2c448
movq %rax, 0x298e1(%rip)     # 0x2c468
jmp 0x2dae
movq 0x295ed(%rip), %rdi     # 0x2c180
leaq 0x24600(%rip), %rsi     # 0x2719a
callq 0x1fd20
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x2d80
movq -0x20(%rbp), %rdi
callq 0x20c40
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x2988a(%rip)     # 0x2c450
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x29883(%rip)     # 0x2c458
movl $0x0, -0x254(%rbp)
movl -0x254(%rbp), %eax
movq 0x29594(%rip), %rcx     # 0x2c180
cmpl 0x30(%rcx), %eax
jg 0x2c1c
movq 0x29858(%rip), %rax     # 0x2c450
movslq -0x254(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
shrq $0x2, %rdx
movq %rdx, (%rax,%rcx,8)
movl -0x254(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x254(%rbp)
jmp 0x2bdf
movq 0x29835(%rip), %rax     # 0x2c458
movq 0x29826(%rip), %rcx     # 0x2c450
movq (%rcx), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x2982a(%rip)     # 0x2c460
movq 0x2981b(%rip), %rax     # 0x2c458
movq 0x2980c(%rip), %rcx     # 0x2c450
movq 0x29535(%rip), %rdx     # 0x2c180
movl 0x30(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,4), %eax
addl $0x1, %eax
movl %eax, 0x29800(%rip)     # 0x2c464
movl 0x297fa(%rip), %eax     # 0x2c464
subl 0x297f0(%rip), %eax     # 0x2c460
addl $0x1, %eax
movslq %eax, %rdi
shlq $0x2, %rdi
leaq 0x24511(%rip), %rsi     # 0x27192
callq 0x1b7c0
movslq 0x297d3(%rip), %rdx     # 0x2c460
xorl %ecx, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, 0x297c8(%rip)     # 0x2c468
movq 0x294d9(%rip), %rax     # 0x2c180
movl 0x30(%rax), %edx
movl %edx, -0x260(%rbp)
movq 0x297b1(%rip), %rax     # 0x2c468
movl 0x297a7(%rip), %ecx     # 0x2c464
movl %ecx, -0x25c(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq 0x294b0(%rip), %rax     # 0x2c180
movl 0x30(%rax), %eax
subl $0x1, %eax
movl %eax, -0x254(%rbp)
cmpl $0x0, -0x254(%rbp)
jl 0x2d7e
movq 0x29768(%rip), %rax     # 0x2c458
movq 0x29759(%rip), %rcx     # 0x2c450
movslq -0x254(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x258(%rbp)
movl -0x25c(%rbp), %eax
cmpl -0x258(%rbp), %eax
jle 0x2d4d
jmp 0x2d1b
movl -0x25c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x25c(%rbp)
cmpl -0x258(%rbp), %eax
jle 0x2d4b
movl -0x260(%rbp), %edx
movq 0x29729(%rip), %rax     # 0x2c468
movslq -0x25c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
jmp 0x2d1b
jmp 0x2d4d
movl -0x254(%rbp), %edx
movl %edx, -0x260(%rbp)
movq 0x29708(%rip), %rax     # 0x2c468
movslq -0x258(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x254(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x254(%rbp)
jmp 0x2cdc
jmp 0x2dac
movq 0x29271(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x298cf(%rip), %rax     # 0x2c660
movq (%rax), %rdx
leaq 0x24403(%rip), %rsi     # 0x2719e
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
jmp 0x2dae
movq 0x29683(%rip), %rax     # 0x2c438
movq 0x29674(%rip), %rcx     # 0x2c430
movq (%rcx), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x29678(%rip)     # 0x2c440
movq 0x29689(%rip), %rax     # 0x2c458
movq 0x2967a(%rip), %rcx     # 0x2c450
movq (%rcx), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x2967e(%rip)     # 0x2c460
movq 0x2964f(%rip), %rax     # 0x2c438
movq 0x29640(%rip), %rcx     # 0x2c430
movq 0x29381(%rip), %rdx     # 0x2c178
movl 0x30(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,4), %eax
addl $0x1, %eax
movl %eax, 0x29634(%rip)     # 0x2c444
movq 0x29641(%rip), %rax     # 0x2c458
movq 0x29632(%rip), %rcx     # 0x2c450
movq 0x2935b(%rip), %rdx     # 0x2c180
movl 0x30(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movq (%rcx,%rdx,8), %rcx
movl (%rax,%rcx,4), %eax
addl $0x1, %eax
movl %eax, 0x29626(%rip)     # 0x2c464
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x2437b(%rip), %rsi     # 0x271c8
callq 0x1ba90
movq %rax, -0x270(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x1ba00
movq %rax, -0x278(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
leaq 0x2434c(%rip), %rsi     # 0x271c8
callq 0x1ba90
movq %rax, -0x280(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x1ba00
movq %rax, -0x288(%rbp)
movq -0x270(%rbp), %rdi
movq -0x280(%rbp), %rsi
callq 0x2180
cmpl $0x0, %eax
jne 0x2ef8
movq -0x278(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x2180
cmpl $0x0, %eax
jne 0x2ef8
movq 0x29125(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x29783(%rip), %rax     # 0x2c660
movq (%rax), %rdx
leaq 0x242e6(%rip), %rsi     # 0x271cd
movb $0x0, %al
callq 0x2190
movl $0x1, %edi
callq 0x2280
movq -0x278(%rbp), %rdi
movq -0x270(%rbp), %rdx
leaq 0x242e6(%rip), %rsi     # 0x271f3
leaq 0x242b4(%rip), %rcx     # 0x271c8
callq 0x1bbd0
movq %rax, %rdi
leaq 0x25294(%rip), %rsi     # 0x281b7
callq 0x1b980
movq %rax, -0x268(%rbp)
movq -0x288(%rbp), %rdi
movq -0x280(%rbp), %rdx
leaq 0x242af(%rip), %rsi     # 0x271f3
leaq 0x2427d(%rip), %rcx     # 0x271c8
callq 0x1bbd0
movq %rax, %rdi
leaq 0x24c57(%rip), %rsi     # 0x27bb1
callq 0x1b980
movq %rax, 0x2950a(%rip)     # 0x2c470
cmpq $0x0, -0x268(%rbp)
je 0x2f7a
cmpq $0x0, 0x294f8(%rip)     # 0x2c470
jne 0x2f84
movl $0x1, %edi
callq 0x2280
movq -0x278(%rbp), %rdi
callq 0x2030
movq -0x270(%rbp), %rdi
callq 0x2030
movq $0x0, 0x294d1(%rip) # 0x2c478
movl $0x0, 0x29467(%rip)     # 0x2c418
movq 0x294b8(%rip), %rcx     # 0x2c470
leaq 0x294b9(%rip), %rdi     # 0x2c478
movl $0x8, %esi
movl $0x1, %edx
callq 0x2290
movq 0x2949b(%rip), %rcx     # 0x2c470
leaq 0x2943c(%rip), %rdi     # 0x2c418
movl $0x4, %esi
movl $0x1, %edx
callq 0x2290
movq -0x268(%rbp), %rcx
leaq -0x290(%rbp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x20a0
movq -0x268(%rbp), %rcx
leaq 0x29402(%rip), %rdi     # 0x2c418
movl $0x4, %esi
movl $0x1, %edx
callq 0x20a0
movq -0x268(%rbp), %rdi
leaq 0x67d(%rip), %rsi       # 0x36b0
movl $0x1, %edx
callq 0x3080
movq 0x2942c(%rip), %rdi     # 0x2c470
callq 0x2100
movq 0x29420(%rip), %rcx     # 0x2c470
leaq 0x29421(%rip), %rdi     # 0x2c478
movl $0x8, %esi
movl $0x1, %edx
callq 0x2290
movq 0x29403(%rip), %rdi     # 0x2c470
callq 0x20b0
xorl %edi, %edi
callq 0x2280
nopl (%rax)