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

  //  Process arguments

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

    ARG_INIT("TANmask")

    MIN_LEN   = 500;
    MASK_NAME = "tan";

    j = 1;
    for (i = 1; i < argc; i++)
      if (argv[i][0] == '-')
        switch (argv[i][1])
        { default:
            ARG_FLAGS("v")
            break;
          case 'n':
            MASK_NAME = argv[i]+2;
            break;
          case 'l':
            ARG_POSITIVE(MIN_LEN,"Minimum retained segment length")
            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,"      -l: shortest tandem interval to report.\n");
        fprintf(stderr,"      -n: use this name as for the tandem mask track\n");
        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);
  }

  //  Initialize statistics gathering

  if (VERBOSE)
    { int i;

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

      printf("\nTANmask -l%d -n%s %s",MIN_LEN,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 mask 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)
              { TN_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,
                                          Numbered_Suffix(".",DB_PART,ans)),"w");
                TN_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,
                                          Numbered_Suffix(".",DB_PART,dts)),"w");
              }
            else
              { TN_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,ans),"w");
                TN_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,dts),"w");
              }
            if (TN_AFILE == NULL || TN_DFILE == NULL)
              exit (1);

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

          //  Process each read pile

          make_a_pass(input,TANDEM,0);

          fclose(TN_AFILE);
          fclose(TN_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 $0x5180, %rsp           # imm = 0x5180
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0x23c28(%rip), %rdi     # 0x26028
leaq 0x249c2(%rip), %rsi     # 0x26dc9
callq 0x1a1b0
movq %rax, %rcx
leaq 0x290ca(%rip), %rax     # 0x2b4e0
movq %rcx, (%rax)
movl $0x0, -0x34(%rbp)
cmpl $0x80, -0x34(%rbp)
jge 0x2443
movslq -0x34(%rbp), %rax
movl $0x0, -0x240(%rbp,%rax,4)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x2420
movl $0x1f4, 0x28fab(%rip)   # imm = 0x1F4
leaq 0x23bdc(%rip), %rax     # 0x26030
movq %rax, -0x30(%rbp)
movl $0x1, -0x38(%rbp)
movl $0x1, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x26a3
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x2671
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x514c(%rbp)
subl $0x6c, %eax
je 0x2593
jmp 0x24ab
movl -0x514c(%rbp), %eax
subl $0x6e, %eax
je 0x257a
jmp 0x24bc
movl $0x1, -0x3c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x2575
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %esi
leaq 0x23b39(%rip), %rdi     # 0x26034
callq 0x2150
cmpq $0x0, %rax
jne 0x2546
movq 0x28aeb(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28fc9(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
leaq 0x23b01(%rip), %rsi     # 0x26036
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cltq
movl $0x1, -0x240(%rbp,%rax,4)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x24c3
jmp 0x266f
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x2, %rax
movq %rax, -0x30(%rbp)
jmp 0x266f
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x2, %rdi
leaq -0x248(%rbp), %rsi
movl $0xa, %edx
callq 0x21d0
movl %eax, 0x28e3e(%rip)     # 0x2b3f8
movq -0x248(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x25de
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x2(%rax), %eax
cmpl $0x0, %eax
jne 0x262a
movq 0x28a13(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28ef1(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rsi
movq (%rax,%rsi,8), %r8
addq $0x2, %r8
leaq 0x23a3b(%rip), %rsi     # 0x26054
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
cmpl $0x0, 0x28dc7(%rip)     # 0x2b3f8
jg 0x266d
movq 0x289be(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28e9c(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
movl 0x28daa(%rip), %r8d     # 0x2b3f8
leaq 0x23a28(%rip), %rsi     # 0x2607d
leaq 0x23a3f(%rip), %rcx     # 0x2609b
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
jmp 0x266f
jmp 0x2693
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x10(%rbp), %rax
movl -0x38(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x38(%rbp)
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x2695
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x2466
movl -0x38(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x68(%rbp), %eax
movl %eax, 0x28d4a(%rip)     # 0x2b3fc
cmpl $0x3, -0x8(%rbp)
jge 0x274f
movq 0x28935(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28e13(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
movq 0x28aa9(%rip), %rcx     # 0x2b180
leaq 0x239dd(%rip), %rsi     # 0x260bb
movb $0x0, %al
callq 0x21b0
movq 0x2890c(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x246d2(%rip), %rsi     # 0x26dc8
movb $0x0, %al
callq 0x21b0
movq 0x288f4(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x239bb(%rip), %rsi     # 0x260c9
movb $0x0, %al
callq 0x21b0
movq 0x288dc(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x239da(%rip), %rsi     # 0x26100
movb $0x0, %al
callq 0x21b0
movq 0x288c4(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x239f1(%rip), %rsi     # 0x2612f
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq 0x28a2a(%rip), %rsi     # 0x2b188
callq 0x1b840
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x2776
movl $0x1, %edi
callq 0x22a0
movq 0x28a0b(%rip), %rax     # 0x2b188
cmpl $0x0, 0x38(%rax)
je 0x27b7
movq 0x2886e(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28d4c(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x239bf(%rip), %rsi     # 0x26165
movb $0x0, %al
callq 0x21b0
movl $0x1, %edi
callq 0x22a0
movq 0x289ca(%rip), %rdi     # 0x2b188
callq 0x1c470
cmpl $0x0, 0x28c32(%rip)     # 0x2b3fc
je 0x286d
movq $0x0, 0x28c25(%rip) # 0x2b400
movq $0x0, 0x28c22(%rip) # 0x2b408
movq $0x0, 0x28c1f(%rip) # 0x2b410
movq $0x0, 0x28c1c(%rip) # 0x2b418
movl 0x28bf6(%rip), %esi     # 0x2b3f8
movq -0x30(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0x23975(%rip), %rdi     # 0x2618a
movb $0x0, %al
callq 0x2110
movl $0x2, -0x24c(%rbp)
movl -0x24c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x285f
movq -0x10(%rbp), %rax
movslq -0x24c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0x23955(%rip), %rdi     # 0x2619c
movb $0x0, %al
callq 0x2110
movl -0x24c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24c(%rbp)
jmp 0x2826
leaq 0x24562(%rip), %rdi     # 0x26dc8
movb $0x0, %al
callq 0x2110
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a2d0
movq %rax, -0x20(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x289e
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x2390d(%rip), %rsi     # 0x261a0
callq 0x1a360
movq %rax, -0x18(%rbp)
jmp 0x28b6
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x238f8(%rip), %rsi     # 0x261a5
callq 0x1a360
movq %rax, -0x18(%rbp)
movl $0x2, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x2f68
movq -0x10(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x21250
movq %rax, -0x258(%rbp)
movq -0x258(%rbp), %rdi
callq 0x20e20
movq %rax, -0x260(%rbp)
cmpq $0x0, %rax
je 0x2f4e
movl $0x0, 0x28b18(%rip)     # 0x2b420
movl $0x0, 0x28b12(%rip)     # 0x2b424
movq 0x2886f(%rip), %rax     # 0x2b188
movl 0x30(%rax), %eax
movl %eax, 0x28b06(%rip)     # 0x2b428
movq -0x258(%rbp), %rdi
callq 0x21010
movq %rax, %rdi
movl $0x2e, %esi
callq 0x2280
movq %rax, -0x50f8(%rbp)
cmpq $0x0, -0x50f8(%rbp)
je 0x2c75
movq -0x50f8(%rbp), %rdi
addq $0x1, %rdi
leaq -0x5100(%rbp), %rsi
movl $0xa, %edx
callq 0x21d0
movl %eax, -0x5108(%rbp)
movq -0x5100(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x2c73
movq -0x5100(%rbp), %rax
movq -0x50f8(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
je 0x2c73
cmpl $0x0, -0x24(%rbp)
je 0x29d9
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x237f4(%rip), %rsi     # 0x261a9
leaq 0x237e4(%rip), %rcx     # 0x261a0
callq 0x1a4a0
movq %rax, %rdi
leaq 0x247f5(%rip), %rsi     # 0x271c0
callq 0x1a250
movq %rax, -0x268(%rbp)
jmp 0x2a0a
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x237c1(%rip), %rsi     # 0x261a9
leaq 0x237b6(%rip), %rcx     # 0x261a5
callq 0x1a4a0
movq %rax, %rdi
leaq 0x247c2(%rip), %rsi     # 0x271c0
callq 0x1a250
movq %rax, -0x268(%rbp)
cmpq $0x0, -0x268(%rbp)
jne 0x2a1e
movl $0x1, %edi
callq 0x22a0
movq -0x268(%rbp), %rdi
leaq 0x2377f(%rip), %rsi     # 0x261ab
leaq -0x510c(%rbp), %rdx
movb $0x0, %al
callq 0x2090
cmpl $0x1, %eax
je 0x2a6b
movq 0x285b2(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28a90(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
leaq 0x2375e(%rip), %rsi     # 0x261b8
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movl $0x0, -0x5104(%rbp)
movl -0x5104(%rbp), %eax
cmpl -0x510c(%rbp), %eax
jge 0x2ae0
leaq -0x50f0(%rbp), %rdi
movq -0x268(%rbp), %rdx
movl $0x4e84, %esi           # imm = 0x4E84
callq 0x2190
cmpq $0x0, %rax
jne 0x2acd
movq 0x28550(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28a2e(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
leaq 0x236fc(%rip), %rsi     # 0x261b8
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
jmp 0x2acf
movl -0x5104(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5104(%rbp)
jmp 0x2a75
movq -0x268(%rbp), %rdi
leaq 0x236ea(%rip), %rsi     # 0x261d8
leaq -0x5110(%rbp), %rdx
movb $0x0, %al
callq 0x2090
cmpl $0x1, %eax
je 0x2b2d
movq 0x284f0(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x289ce(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
leaq 0x2369c(%rip), %rsi     # 0x261b8
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movq -0x268(%rbp), %rdi
leaq 0x236ab(%rip), %rsi     # 0x261e6
leaq -0x5128(%rbp), %rdx
leaq -0x5114(%rbp), %rcx
leaq -0x5118(%rbp), %r8
movb $0x0, %al
callq 0x2090
cmpl $0x3, %eax
je 0x2b88
movq 0x28495(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28973(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
leaq 0x23641(%rip), %rsi     # 0x261b8
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movl $0x1, -0x5104(%rbp)
movl -0x5104(%rbp), %eax
cmpl -0x5108(%rbp), %eax
jg 0x2c07
movq -0x268(%rbp), %rdi
leaq 0x2365e(%rip), %rsi     # 0x2620c
leaq -0x511c(%rbp), %rdx
leaq 0x28868(%rip), %rcx     # 0x2b424
movb $0x0, %al
callq 0x2090
cmpl $0x2, %eax
je 0x2bf4
movq 0x28429(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x28907(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
leaq 0x235d5(%rip), %rsi     # 0x261b8
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
jmp 0x2bf6
movl -0x5104(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5104(%rbp)
jmp 0x2b92
movq -0x268(%rbp), %rdi
leaq 0x235f7(%rip), %rsi     # 0x2620c
leaq -0x511c(%rbp), %rdx
leaq 0x28805(%rip), %rcx     # 0x2b428
movb $0x0, %al
callq 0x2090
cmpl $0x2, %eax
je 0x2c5b
movq 0x283c2(%rip), %rax     # 0x2aff8
movq (%rax), %rdi
leaq 0x288a0(%rip), %rax     # 0x2b4e0
movq (%rax), %rdx
leaq 0x2356e(%rip), %rsi     # 0x261b8
movb $0x0, %al
callq 0x21b0
movl $0x2, %edi
callq 0x22a0
movq -0x268(%rbp), %rdi
callq 0x20d0
movl -0x5108(%rbp), %eax
movl %eax, 0x287ad(%rip)     # 0x2b420
jmp 0x2c75
movq -0x30(%rbp), %rdi
callq 0x20f0
movq %rax, %rdx
movq %rdx, %rax
addq $0x7, %rax
movq %rsp, %rcx
movq %rcx, -0x5138(%rbp)
addq $0x16, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x5160(%rbp)
movq %rcx, %rsp
movq %rax, -0x5140(%rbp)
movq -0x30(%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, -0x5158(%rbp)
movq %rcx, %rsp
movq %rax, -0x5148(%rbp)
movq -0x30(%rbp), %rsi
leaq 0x235d4(%rip), %rdx     # 0x262c2
leaq 0x23fde(%rip), %rcx     # 0x26cd3
movq %rdx, %rdi
callq 0x1a4a0
movq -0x5160(%rbp), %rdi
movq %rax, %rsi
callq 0x2070
movq -0x30(%rbp), %rsi
leaq 0x235ab(%rip), %rdx     # 0x262c2
leaq 0x2402d(%rip), %rcx     # 0x26d4b
movq %rdx, %rdi
callq 0x1a4a0
movq -0x5158(%rbp), %rdi
movq %rax, %rsi
callq 0x2070
cmpl $0x0, 0x286e4(%rip)     # 0x2b420
jle 0x2e08
movq -0x5160(%rbp), %rdx
movq -0x20(%rbp), %rax
movq %rax, -0x5180(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x5178(%rbp)
movl 0x286bb(%rip), %esi     # 0x2b420
leaq 0x23556(%rip), %rdi     # 0x262c2
callq 0x1a5f0
movq -0x5180(%rbp), %rdi
movq -0x5178(%rbp), %rdx
movq %rax, %rcx
leaq 0x2348d(%rip), %rsi     # 0x26216
callq 0x1a4a0
movq %rax, %rdi
leaq 0x23e42(%rip), %rsi     # 0x26bda
callq 0x1a250
movq -0x5158(%rbp), %rdx
movq %rax, 0x28685(%rip)     # 0x2b430
movq -0x20(%rbp), %rax
movq %rax, -0x5170(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x5168(%rbp)
movl 0x28659(%rip), %esi     # 0x2b420
leaq 0x234f4(%rip), %rdi     # 0x262c2
callq 0x1a5f0
movq -0x5170(%rbp), %rdi
movq -0x5168(%rbp), %rdx
movq %rax, %rcx
leaq 0x2342b(%rip), %rsi     # 0x26216
callq 0x1a4a0
movq %rax, %rdi
leaq 0x23de0(%rip), %rsi     # 0x26bda
callq 0x1a250
movq %rax, 0x28632(%rip)     # 0x2b438
jmp 0x2e6a
movq -0x5160(%rbp), %rcx
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x233f8(%rip), %rsi     # 0x26216
callq 0x1a4a0
movq %rax, %rdi
leaq 0x23dad(%rip), %rsi     # 0x26bda
callq 0x1a250
movq -0x5158(%rbp), %rcx
movq %rax, 0x285f0(%rip)     # 0x2b430
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x233c7(%rip), %rsi     # 0x26216
callq 0x1a4a0
movq %rax, %rdi
leaq 0x23d7c(%rip), %rsi     # 0x26bda
callq 0x1a250
movq %rax, 0x285ce(%rip)     # 0x2b438
cmpq $0x0, 0x285be(%rip)     # 0x2b430
je 0x2e7e
cmpq $0x0, 0x285bc(%rip)     # 0x2b438
jne 0x2e88
movl $0x1, %edi
callq 0x22a0
movl 0x2859a(%rip), %eax     # 0x2b428
subl 0x28590(%rip), %eax     # 0x2b424
movl %eax, -0x512c(%rbp)
movl $0x0, -0x5130(%rbp)
movq 0x28585(%rip), %rcx     # 0x2b430
leaq -0x512c(%rbp), %rdi
movl $0x4, %esi
movl $0x1, %edx
callq 0x22b0
movq 0x28568(%rip), %rcx     # 0x2b430
leaq -0x5130(%rbp), %rdi
movl $0x4, %esi
movl $0x1, %edx
callq 0x22b0
movq $0x0, 0x28557(%rip) # 0x2b440
movq 0x28540(%rip), %rcx     # 0x2b430
leaq 0x28549(%rip), %rdi     # 0x2b440
movl $0x8, %esi
movl $0x1, %edx
callq 0x22b0
movq -0x5138(%rbp), %rax
movq %rax, %rsp
movq -0x260(%rbp), %rdi
leaq 0x7d2(%rip), %rsi       # 0x36f0
xorl %edx, %edx
callq 0x30b0
movq 0x28504(%rip), %rdi     # 0x2b430
callq 0x20d0
movq 0x28500(%rip), %rdi     # 0x2b438
callq 0x20d0
movq -0x260(%rbp), %rdi
callq 0x20d0
jmp 0x28e1
movq -0x258(%rbp), %rdi
callq 0x21080
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x28bd
cmpl $0x0, 0x2848d(%rip)     # 0x2b3fc
je 0x3079
leaq 0x2329d(%rip), %rdi     # 0x26219
movb $0x0, %al
callq 0x2110
movq 0x28476(%rip), %rdi     # 0x2b400
movq 0x28047(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0x7, %esi
callq 0x1a700
leaq 0x23280(%rip), %rdi     # 0x26225
movb $0x0, %al
callq 0x2110
movq 0x28455(%rip), %rdi     # 0x2b408
movq 0x2801e(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0xc, %esi
callq 0x1a700
leaq 0x2326d(%rip), %rdi     # 0x2623b
movb $0x0, %al
callq 0x2110
leaq 0x23271(%rip), %rdi     # 0x2624d
movb $0x0, %al
callq 0x2110
movq 0x2842e(%rip), %rdi     # 0x2b418
movq 0x27fe7(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0x7, %esi
callq 0x1a700
cvtsi2sdq 0x28411(%rip), %xmm1 # 0x2b418
movsd 0x22ff9(%rip), %xmm0    # 0x26008
mulsd %xmm1, %xmm0
cvtsi2sdq 0x283e4(%rip), %xmm1 # 0x2b400
divsd %xmm1, %xmm0
leaq 0x23231(%rip), %rdi     # 0x26258
movb $0x1, %al
callq 0x2110
movq 0x283db(%rip), %rdi     # 0x2b410
movq 0x27f9c(%rip), %rax     # 0x2afd8
movq (%rax), %rdx
movl $0xc, %esi
callq 0x1a700
cvtsi2sdq 0x283be(%rip), %xmm1 # 0x2b410
movsd 0x22fae(%rip), %xmm0    # 0x26008
mulsd %xmm1, %xmm0
cvtsi2sdq 0x283a1(%rip), %xmm1 # 0x2b408
divsd %xmm1, %xmm0
leaq 0x231fc(%rip), %rdi     # 0x2626e
movb $0x1, %al
callq 0x2110
movq -0x20(%rbp), %rdi
callq 0x2030
movq -0x18(%rbp), %rdi
callq 0x2030
movq 0x280f6(%rip), %rdi     # 0x2b188
callq 0x1d190
leaq 0x28442(%rip), %rax     # 0x2b4e0
movq (%rax), %rdi
callq 0x2030
xorl %edi, %edi
callq 0x22a0
nopl (%rax)