// File: /workspace/github_c_makefile_star2_O0/thegenemyers[P]DAMASKER/REPmask.c
// Function: main
int main(int argc, char *argv[])
{ char  *root, *dpwd;
  int    status;
  int64  novl;
  int    c;
  char  *MASK_NAME;

  //  Process arguments

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

    ARG_INIT("REPmask")

    MIN_COVER = -1;
    MASK_NAME = "rep";

    j = 1;
    for (i = 1; i < argc; i++)
      if (argv[i][0] == '-')
        switch (argv[i][1])
        { default:
            ARG_FLAGS("v")
            break;
          case 'c':
            ARG_POSITIVE(MIN_COVER,"Repeat coverage threshold")
            break;
          case 'n':
            MASK_NAME = argv[i]+2;
            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,"      -c: cutoff depth for declaring an interval repetitive.\n");
        fprintf(stderr,"      -n: use this name as for the repeat mask track\n");
        exit (1);
      }
    if (MIN_COVER <= 0)
      { fprintf(stderr,"%s: Must supply -c parameter for repeat threshold\n",Prog_Name);
        exit (1);
      }
  }

  //  Open trimmed DB

  { status = Open_DB(argv[1],DB);
    if (status < 0)
      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;
  }

  //  Initialize statistics gathering

  if (VERBOSE)
    { int i;

      nreads = 0;
      totlen = 0;
      masked = 0;
      nmasks = 0;

      printf("\nREPmask -c%d -n%s %s",MIN_COVER,MASK_NAME,argv[1]);
      for (i = 2; i < argc; i++)
        printf(" %s",argv[i]);
      printf("\n");
    }

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

  dpwd = PathTo(argv[1]);
  if (status)
    root = Root(argv[1],".dam");
  else
    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)
                  { if (status)
                      dbfile = Fopen(Catenate(dpwd,"/",root,".dam"),"r");
                    else
                      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 preliminary trimming track

          { int   len, size;
            char  ans[strlen(MASK_NAME)+7];
            char  dts[strlen(MASK_NAME)+7];

            strcpy(ans,Catenate(".",MASK_NAME,".","anno"));
            strcpy(dts,Catenate(".",MASK_NAME,".","data"));
            if (DB_PART > 0)
              { MSK_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,
                                       Numbered_Suffix(".",DB_PART,ans)),"w");
                MSK_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,
                                       Numbered_Suffix(".",DB_PART,dts)),"w");
              }
            else
              { MSK_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,ans),"w");
                MSK_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,dts),"w");
              }
            if (MSK_AFILE == NULL || MSK_DFILE == NULL)
              exit (1);

            len  = DB_LAST - DB_FIRST;
            size = 0;
            fwrite(&len,sizeof(int),1,MSK_AFILE);
            fwrite(&size,sizeof(int),1,MSK_AFILE);
            MSK_INDEX = 0;
            fwrite(&MSK_INDEX,sizeof(int64),1,MSK_AFILE);
          }

          //  Get trace point spacing information

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

          //  Process each read pile

          make_a_pass(input,PARTITION,1);

          fclose(MSK_AFILE);
          fclose(MSK_DFILE);
          fclose(input);
        }

      Free_Block_Arg(parse);
    }

  if (VERBOSE)
    { printf("\nInput:    ");
      Print_Number((int64) nreads,7,stdout);
      printf(" (100.0%%) reads     ");
      Print_Number(totlen,12,stdout);
      printf(" (100.0%%) bases\n");

      printf("Masks:    ");
      Print_Number(nmasks,7,stdout);
      printf(" (%5.1f%%) masks     ",(100.*nmasks)/nreads);
      Print_Number(masked,12,stdout);
      printf(" (%5.1f%%) bases\n",(100.*masked)/totlen);
    }

  free(dpwd);
  free(root);

  Close_DB(DB);
  free(Prog_Name);

  exit (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5190, %rsp           # imm = 0x5190
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0x23c38(%rip), %rdi     # 0x26038
leaq 0x24a0a(%rip), %rsi     # 0x26e11
callq 0x1aa20
movq %rax, %rcx
leaq 0x290e2(%rip), %rax     # 0x2b4f8
movq %rcx, (%rax)
movl $0x0, -0x44(%rbp)
cmpl $0x80, -0x44(%rbp)
jge 0x2443
movslq -0x44(%rbp), %rax
movl $0x0, -0x250(%rbp,%rax,4)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x2420
movl $0xffffffff, 0x28fab(%rip) # imm = 0xFFFFFFFF
leaq 0x23bec(%rip), %rax     # 0x26040
movq %rax, -0x40(%rbp)
movl $0x1, -0x48(%rbp)
movl $0x1, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x269e
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x266c
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x515c(%rbp)
subl $0x63, %eax
je 0x257a
jmp 0x24ab
movl -0x515c(%rbp), %eax
subl $0x6e, %eax
je 0x2656
jmp 0x24bc
movl $0x1, -0x4c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x4c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x2575
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x4c(%rbp), %rcx
movsbl (%rax,%rcx), %esi
leaq 0x23b49(%rip), %rdi     # 0x26044
callq 0x2150
cmpq $0x0, %rax
jne 0x2546
movq 0x28aeb(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28fe1(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x4c(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
leaq 0x23b11(%rip), %rsi     # 0x26046
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x4c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cltq
movl $0x1, -0x250(%rbp,%rax,4)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x24c3
jmp 0x266a
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x2, %rdi
leaq -0x258(%rbp), %rsi
movl $0xa, %edx
callq 0x21d0
movl %eax, 0x28e57(%rip)     # 0x2b3f8
movq -0x258(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x25c5
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x2(%rax), %eax
cmpl $0x0, %eax
jne 0x2611
movq 0x28a2c(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28f22(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rsi
movq (%rax,%rsi,8), %r8
addq $0x2, %r8
leaq 0x23a64(%rip), %rsi     # 0x26064
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
cmpl $0x0, 0x28de0(%rip)     # 0x2b3f8
jg 0x2654
movq 0x289d7(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28ecd(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
movl 0x28dc3(%rip), %r8d     # 0x2b3f8
leaq 0x23a51(%rip), %rsi     # 0x2608d
leaq 0x23a68(%rip), %rcx     # 0x260ab
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
jmp 0x266a
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x2, %rax
movq %rax, -0x40(%rbp)
jmp 0x268e
movq -0x10(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x10(%rbp), %rax
movl -0x48(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x48(%rbp)
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x2690
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x2466
movl -0x48(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x78(%rbp), %eax
movl %eax, 0x28d4f(%rip)     # 0x2b3fc
cmpl $0x3, -0x8(%rbp)
jge 0x274a
movq 0x2893a(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28e30(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
movq 0x28aae(%rip), %rcx     # 0x2b180
leaq 0x239ec(%rip), %rsi     # 0x260c5
movb $0x0, %al
callq 0x21b0
movq 0x28911(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x2471f(%rip), %rsi     # 0x26e10
movb $0x0, %al
callq 0x21b0
movq 0x288f9(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x239ca(%rip), %rsi     # 0x260d3
movb $0x0, %al
callq 0x21b0
movq 0x288e1(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x239e9(%rip), %rsi     # 0x2610a
movb $0x0, %al
callq 0x21b0
movq 0x288c9(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x23a0f(%rip), %rsi     # 0x26148
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
cmpl $0x0, 0x28ca7(%rip)     # 0x2b3f8
jg 0x277f
movq 0x2889e(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28d94(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
leaq 0x23a10(%rip), %rsi     # 0x2617e
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq 0x289fa(%rip), %rsi     # 0x2b188
callq 0x1c0b0
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x27a6
movl $0x1, %edi
callq 0x22a0
movq 0x289db(%rip), %rax     # 0x2b188
cmpl $0x0, 0x38(%rax)
je 0x27e7
movq 0x2883e(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28d34(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x239db(%rip), %rsi     # 0x261b1
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
movq 0x2899a(%rip), %rdi     # 0x2b188
callq 0x1cce0
movq 0x2898e(%rip), %rax     # 0x2b188
movq 0x60(%rax), %rax
movq %rax, 0x28bfb(%rip)     # 0x2b400
cmpl $0x0, 0x28bf0(%rip)     # 0x2b3fc
je 0x28af
movq $0x0, 0x28beb(%rip) # 0x2b408
movq $0x0, 0x28be8(%rip) # 0x2b410
movq $0x0, 0x28be5(%rip) # 0x2b418
movq $0x0, 0x28be2(%rip) # 0x2b420
movl 0x28bb4(%rip), %esi     # 0x2b3f8
movq -0x40(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x2397f(%rip), %rdi     # 0x261d6
movb $0x0, %al
callq 0x2110
movl $0x2, -0x25c(%rbp)
movl -0x25c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x28a1
movq -0x10(%rbp), %rax
movslq -0x25c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0x2395f(%rip), %rdi     # 0x261e8
movb $0x0, %al
callq 0x2110
movl -0x25c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x25c(%rbp)
jmp 0x2868
leaq 0x24568(%rip), %rdi     # 0x26e10
movb $0x0, %al
callq 0x2110
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1ab40
movq %rax, -0x20(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x28e0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x23917(%rip), %rsi     # 0x261ec
callq 0x1abd0
movq %rax, -0x18(%rbp)
jmp 0x28f8
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x23902(%rip), %rsi     # 0x261f1
callq 0x1abd0
movq %rax, -0x18(%rbp)
movl $0x2, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x2fe4
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x21ac0
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rdi
callq 0x21690
movq %rax, -0x270(%rbp)
cmpq $0x0, %rax
je 0x2fca
movl $0x0, 0x28ade(%rip)     # 0x2b428
movl $0x0, 0x28ad8(%rip)     # 0x2b42c
movq 0x2882d(%rip), %rax     # 0x2b188
movl 0x30(%rax), %eax
movl %eax, 0x28acc(%rip)     # 0x2b430
movq -0x268(%rbp), %rdi
callq 0x21880
movq %rax, %rdi
movl $0x2e, %esi
callq 0x2280
movq %rax, -0x5108(%rbp)
cmpq $0x0, -0x5108(%rbp)
je 0x2cb7
movq -0x5108(%rbp), %rdi
addq $0x1, %rdi
leaq -0x5110(%rbp), %rsi
movl $0xa, %edx
callq 0x21d0
movl %eax, -0x5118(%rbp)
movq -0x5110(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x2cb5
movq -0x5110(%rbp), %rax
movq -0x5108(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
je 0x2cb5
cmpl $0x0, -0x24(%rbp)
je 0x2a1b
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x237fe(%rip), %rsi     # 0x261f5
leaq 0x237ee(%rip), %rcx     # 0x261ec
callq 0x1ad10
movq %rax, %rdi
leaq 0x247fb(%rip), %rsi     # 0x27208
callq 0x1aac0
movq %rax, -0x278(%rbp)
jmp 0x2a4c
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x237cb(%rip), %rsi     # 0x261f5
leaq 0x237c0(%rip), %rcx     # 0x261f1
callq 0x1ad10
movq %rax, %rdi
leaq 0x247c8(%rip), %rsi     # 0x27208
callq 0x1aac0
movq %rax, -0x278(%rbp)
cmpq $0x0, -0x278(%rbp)
jne 0x2a60
movl $0x1, %edi
callq 0x22a0
movq -0x278(%rbp), %rdi
leaq 0x23789(%rip), %rsi     # 0x261f7
leaq -0x511c(%rbp), %rdx
movb $0x0, %al
callq 0x2090
cmpl $0x1, %eax
je 0x2aad
movq 0x28570(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28a66(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
leaq 0x23768(%rip), %rsi     # 0x26204
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movl $0x0, -0x5114(%rbp)
movl -0x5114(%rbp), %eax
cmpl -0x511c(%rbp), %eax
jge 0x2b22
leaq -0x5100(%rbp), %rdi
movq -0x278(%rbp), %rdx
movl $0x4e84, %esi           # imm = 0x4E84
callq 0x2190
cmpq $0x0, %rax
jne 0x2b0f
movq 0x2850e(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28a04(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
leaq 0x23706(%rip), %rsi     # 0x26204
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
jmp 0x2b11
movl -0x5114(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5114(%rbp)
jmp 0x2ab7
movq -0x278(%rbp), %rdi
leaq 0x236f4(%rip), %rsi     # 0x26224
leaq -0x5120(%rbp), %rdx
movb $0x0, %al
callq 0x2090
cmpl $0x1, %eax
je 0x2b6f
movq 0x284ae(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x289a4(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
leaq 0x236a6(%rip), %rsi     # 0x26204
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movq -0x278(%rbp), %rdi
leaq 0x236b5(%rip), %rsi     # 0x26232
leaq -0x5138(%rbp), %rdx
leaq -0x5124(%rbp), %rcx
leaq -0x5128(%rbp), %r8
movb $0x0, %al
callq 0x2090
cmpl $0x3, %eax
je 0x2bca
movq 0x28453(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28949(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
leaq 0x2364b(%rip), %rsi     # 0x26204
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movl $0x1, -0x5114(%rbp)
movl -0x5114(%rbp), %eax
cmpl -0x5118(%rbp), %eax
jg 0x2c49
movq -0x278(%rbp), %rdi
leaq 0x23668(%rip), %rsi     # 0x26258
leaq -0x512c(%rbp), %rdx
leaq 0x2882e(%rip), %rcx     # 0x2b42c
movb $0x0, %al
callq 0x2090
cmpl $0x2, %eax
je 0x2c36
movq 0x283e7(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x288dd(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
leaq 0x235df(%rip), %rsi     # 0x26204
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
jmp 0x2c38
movl -0x5114(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5114(%rbp)
jmp 0x2bd4
movq -0x278(%rbp), %rdi
leaq 0x23601(%rip), %rsi     # 0x26258
leaq -0x512c(%rbp), %rdx
leaq 0x287cb(%rip), %rcx     # 0x2b430
movb $0x0, %al
callq 0x2090
cmpl $0x2, %eax
je 0x2c9d
movq 0x28380(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28876(%rip), %rax     # 0x2b4f8
movq (%rax), %rdx
leaq 0x23578(%rip), %rsi     # 0x26204
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movq -0x278(%rbp), %rdi
callq 0x20d0
movl -0x5118(%rbp), %eax
movl %eax, 0x28773(%rip)     # 0x2b428
jmp 0x2cb7
movq -0x40(%rbp), %rdi
callq 0x20f0
movq %rax, %rdx
movq %rdx, %rax
addq $0x7, %rax
movq %rsp, %rcx
movq %rcx, -0x5148(%rbp)
addq $0x16, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x5170(%rbp)
movq %rcx, %rsp
movq %rax, -0x5150(%rbp)
movq -0x40(%rbp), %rdi
callq 0x20f0
movq %rax, %rdx
movq %rdx, %rax
addq $0x7, %rax
addq $0x16, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x5168(%rbp)
movq %rcx, %rsp
movq %rax, -0x5158(%rbp)
movq -0x40(%rbp), %rsi
leaq 0x235d6(%rip), %rdx     # 0x26306
leaq 0x23fe4(%rip), %rcx     # 0x26d1b
movq %rdx, %rdi
callq 0x1ad10
movq -0x5170(%rbp), %rdi
movq %rax, %rsi
callq 0x2070
movq -0x40(%rbp), %rsi
leaq 0x235ad(%rip), %rdx     # 0x26306
leaq 0x24033(%rip), %rcx     # 0x26d93
movq %rdx, %rdi
callq 0x1ad10
movq -0x5168(%rbp), %rdi
movq %rax, %rsi
callq 0x2070
cmpl $0x0, 0x286aa(%rip)     # 0x2b428
jle 0x2e4a
movq -0x5170(%rbp), %rdx
movq -0x20(%rbp), %rax
movq %rax, -0x5190(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x5188(%rbp)
movl 0x28681(%rip), %esi     # 0x2b428
leaq 0x23558(%rip), %rdi     # 0x26306
callq 0x1ae60
movq -0x5190(%rbp), %rdi
movq -0x5188(%rbp), %rdx
movq %rax, %rcx
leaq 0x23497(%rip), %rsi     # 0x26262
callq 0x1ad10
movq %rax, %rdi
leaq 0x23e48(%rip), %rsi     # 0x26c22
callq 0x1aac0
movq -0x5168(%rbp), %rdx
movq %rax, 0x2864b(%rip)     # 0x2b438
movq -0x20(%rbp), %rax
movq %rax, -0x5180(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x5178(%rbp)
movl 0x2861f(%rip), %esi     # 0x2b428
leaq 0x234f6(%rip), %rdi     # 0x26306
callq 0x1ae60
movq -0x5180(%rbp), %rdi
movq -0x5178(%rbp), %rdx
movq %rax, %rcx
leaq 0x23435(%rip), %rsi     # 0x26262
callq 0x1ad10
movq %rax, %rdi
leaq 0x23de6(%rip), %rsi     # 0x26c22
callq 0x1aac0
movq %rax, 0x285f8(%rip)     # 0x2b440
jmp 0x2eac
movq -0x5170(%rbp), %rcx
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x23402(%rip), %rsi     # 0x26262
callq 0x1ad10
movq %rax, %rdi
leaq 0x23db3(%rip), %rsi     # 0x26c22
callq 0x1aac0
movq -0x5168(%rbp), %rcx
movq %rax, 0x285b6(%rip)     # 0x2b438
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x233d1(%rip), %rsi     # 0x26262
callq 0x1ad10
movq %rax, %rdi
leaq 0x23d82(%rip), %rsi     # 0x26c22
callq 0x1aac0
movq %rax, 0x28594(%rip)     # 0x2b440
cmpq $0x0, 0x28584(%rip)     # 0x2b438
je 0x2ec0
cmpq $0x0, 0x28582(%rip)     # 0x2b440
jne 0x2eca
movl $0x1, %edi
callq 0x22a0
movl 0x28560(%rip), %eax     # 0x2b430
subl 0x28556(%rip), %eax     # 0x2b42c
movl %eax, -0x513c(%rbp)
movl $0x0, -0x5140(%rbp)
movq 0x2854b(%rip), %rcx     # 0x2b438
leaq -0x513c(%rbp), %rdi
movl $0x4, %esi
movl $0x1, %edx
callq 0x22b0
movq 0x2852e(%rip), %rcx     # 0x2b438
leaq -0x5140(%rbp), %rdi
movl $0x4, %esi
movl $0x1, %edx
callq 0x22b0
movq $0x0, 0x2851d(%rip) # 0x2b448
movq 0x28506(%rip), %rcx     # 0x2b438
leaq 0x2850f(%rip), %rdi     # 0x2b448
movl $0x8, %esi
movl $0x1, %edx
callq 0x22b0
movq -0x5148(%rbp), %rax
movq %rax, %rsp
movq -0x270(%rbp), %rcx
leaq -0x30(%rbp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x20c0
movq -0x270(%rbp), %rcx
leaq 0x284d6(%rip), %rdi     # 0x2b450
movl $0x4, %esi
movl $0x1, %edx
callq 0x20c0
movq -0x270(%rbp), %rdi
leaq 0x7d9(%rip), %rsi       # 0x3770
movl $0x1, %edx
callq 0x3130
movq 0x28490(%rip), %rdi     # 0x2b438
callq 0x20d0
movq 0x2848c(%rip), %rdi     # 0x2b440
callq 0x20d0
movq -0x270(%rbp), %rdi
callq 0x20d0
jmp 0x2923
movq -0x268(%rbp), %rdi
callq 0x218f0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x28ff
cmpl $0x0, 0x28411(%rip)     # 0x2b3fc
je 0x30f5
leaq 0x2326d(%rip), %rdi     # 0x26265
movb $0x0, %al
callq 0x2110
movq 0x28402(%rip), %rdi     # 0x2b408
movq 0x27fcb(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0x7, %esi
callq 0x1af70
leaq 0x23250(%rip), %rdi     # 0x26271
movb $0x0, %al
callq 0x2110
movq 0x283e1(%rip), %rdi     # 0x2b410
movq 0x27fa2(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0xc, %esi
callq 0x1af70
leaq 0x2323d(%rip), %rdi     # 0x26287
movb $0x0, %al
callq 0x2110
leaq 0x23241(%rip), %rdi     # 0x26299
movb $0x0, %al
callq 0x2110
movq 0x283ba(%rip), %rdi     # 0x2b420
movq 0x27f6b(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0x7, %esi
callq 0x1af70
cvtsi2sdq 0x2839d(%rip), %xmm1 # 0x2b420
movsd 0x22f7d(%rip), %xmm0    # 0x26008
mulsd %xmm1, %xmm0
cvtsi2sdq 0x28370(%rip), %xmm1 # 0x2b408
divsd %xmm1, %xmm0
leaq 0x23201(%rip), %rdi     # 0x262a4
movb $0x1, %al
callq 0x2110
movq 0x28367(%rip), %rdi     # 0x2b418
movq 0x27f20(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0xc, %esi
callq 0x1af70
cvtsi2sdq 0x2834a(%rip), %xmm1 # 0x2b418
movsd 0x22f32(%rip), %xmm0    # 0x26008
mulsd %xmm1, %xmm0
cvtsi2sdq 0x2832d(%rip), %xmm1 # 0x2b410
divsd %xmm1, %xmm0
leaq 0x231cc(%rip), %rdi     # 0x262ba
movb $0x1, %al
callq 0x2110
movq -0x20(%rbp), %rdi
callq 0x2030
movq -0x18(%rbp), %rdi
callq 0x2030
movq 0x2807a(%rip), %rdi     # 0x2b188
callq 0x1da00
leaq 0x283de(%rip), %rax     # 0x2b4f8
movq (%rax), %rdi
callq 0x2030
xorl %edi, %edi
callq 0x22a0
nopl (%rax)