// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-map.c
// Function: scanprjfileuintkeysviafileptr
static int scanprjfileuintkeysviafileptr(Suffixarray *suffixarray,
                                         const char *indexname,
                                         GtLogger *logger,
                                         FILE *fpin,
                                         GtError *err)
{
  uint32_t integersize, littleendian, readmodeint, mirrored;
  unsigned int linenum;
  GtUword currentlinelength;
  size_t dbfilelen = strlen(DBFILEKEY);
  bool haserr = false;
  GtScannedprjkeytable *scannedprjkeytable;
  GtStr *currentline;
  /* the following five variables are local as the parsed values are
     not required: they are determined by reading the encseq */
  GtSpecialcharinfo specialcharinfo;
  GtUword totallength,
                numofsequences,
                numofdbsequences,
                numofquerysequences;

  gt_error_check(err);
  scannedprjkeytable = gt_scannedprjkeytable_new();
  GT_SCANNEDPRJKEY_ADD("totallength",&totallength,NULL);
  GT_SCANNEDPRJKEY_ADD("specialcharacters",
                       &specialcharinfo.specialcharacters,NULL);
  GT_SCANNEDPRJKEY_ADD("specialranges",
                       &specialcharinfo.specialranges,NULL);
  GT_SCANNEDPRJKEY_ADD("realspecialranges",
                       &specialcharinfo.realspecialranges,NULL);
  GT_SCANNEDPRJKEY_ADD("lengthofspecialprefix",
                       &specialcharinfo.lengthofspecialprefix,NULL);
  GT_SCANNEDPRJKEY_ADD("lengthofspecialsuffix",
                       &specialcharinfo.lengthofspecialsuffix,NULL);
  GT_SCANNEDPRJKEY_ADD("wildcards",
                       &specialcharinfo.wildcards,NULL);
  GT_SCANNEDPRJKEY_ADD("wildcardranges",
                       &specialcharinfo.wildcardranges,NULL);
  GT_SCANNEDPRJKEY_ADD("realwildcardranges",
                       &specialcharinfo.realwildcardranges,NULL);
  GT_SCANNEDPRJKEY_ADD("lengthofwildcardprefix",
                       &specialcharinfo.lengthofwildcardprefix,NULL);
  GT_SCANNEDPRJKEY_ADD("lengthofwildcardsuffix",
                       &specialcharinfo.lengthofwildcardsuffix,NULL);
  GT_SCANNEDPRJKEY_ADD("numofsequences",&numofsequences,NULL);
  GT_SCANNEDPRJKEY_ADD("numofdbsequences",&numofdbsequences,NULL);
  gt_scannedprjkey_add(scannedprjkeytable,"numofquerysequences",
                       &numofquerysequences,0,false,NULL);
  GT_SCANNEDPRJKEY_ADD("numberofallsortedsuffixes",
                       &suffixarray->numberofallsortedsuffixes,NULL);
  GT_SCANNEDPRJKEY_ADD("longest",&suffixarray->longest.valueunsignedlong,
                       &suffixarray->longest.defined);
  GT_SCANNEDPRJKEY_ADD("prefixlength",&suffixarray->prefixlength,NULL);
  GT_SCANNEDPRJKEY_ADD("largelcpvalues",
                       &suffixarray->numoflargelcpvalues.valueunsignedlong,
                       &suffixarray->numoflargelcpvalues.defined);
  gt_scannedprjkey_add(scannedprjkeytable,"averagelcp",
                       &suffixarray->averagelcp.valuedouble,
                       sizeof (suffixarray->averagelcp.valuedouble),
                       true,
                       &suffixarray->averagelcp.defined);
  GT_SCANNEDPRJKEY_ADD("maxbranchdepth",
                       &suffixarray->maxbranchdepth.valueunsignedlong,
                       &suffixarray->maxbranchdepth.defined);
  GT_SCANNEDPRJKEY_ADD("integersize",&integersize,NULL);
  GT_SCANNEDPRJKEY_ADD("littleendian",&littleendian,NULL);
  GT_SCANNEDPRJKEY_ADD("readmode",&readmodeint,NULL);
  GT_SCANNEDPRJKEY_ADD("mirrored",&mirrored,NULL);
  currentline = gt_str_new();
  for (linenum = 0; gt_str_read_next_line(currentline, fpin) != EOF; linenum++)
  {
    currentlinelength = gt_str_length(currentline);
    if (dbfilelen <= (size_t) currentlinelength &&
        memcmp(DBFILEKEY,gt_str_get(currentline),dbfilelen) == 0)
    {
      /* Nothing */
    } else
    {
      if (gt_scannedprjkey_analyze(indexname,
                                   GT_PROJECTFILESUFFIX,
                                   linenum,
                                   gt_str_get(currentline),
                                   currentlinelength,
                                   scannedprjkeytable,
                                   err) != 0)
      {
        haserr = true;
        break;
      }
    }
    gt_str_reset(currentline);
  }
  gt_str_delete(currentline);
  if (!haserr && gt_scannedprjkey_allkeysdefined(indexname,GT_PROJECTFILESUFFIX,
                                                 scannedprjkeytable,
                                                 logger,err) != 0)
  {
    haserr = true;
  }
  if (!haserr && integersize != (uint32_t) 32 && integersize != (uint32_t) 64)
  {
    gt_error_set(err,"%s%s contains illegal line defining the integer size",
                 indexname,GT_PROJECTFILESUFFIX);
    haserr = true;
  }
  if (!haserr && integersize != (uint32_t) (sizeof (GtUword) * CHAR_BIT))
  {
    gt_error_set(err,"index was generated for %u-bit integers while "
                      "this program uses %u-bit integers",
                      (unsigned int) integersize,
                      (unsigned int) (sizeof (GtUword) * CHAR_BIT));
    haserr = true;
  }
  if (!haserr)
  {
    if (gt_is_little_endian())
    {
      if (littleendian != (uint32_t) 1)
      {
        gt_error_set(err,"computer has little endian byte order, while index "
                         "was built on computer with big endian byte order");
        haserr = true;
      }
    } else
    {
      if (littleendian == (uint32_t) 1)
      {
        gt_error_set(err,"computer has big endian byte order, while index "
                         "was built on computer with little endian byte "
                         "order");
        haserr = true;
      }
    }
  }
  if (!haserr)
  {
    if (readmodeint > (uint32_t) 3)
    {
      gt_error_set(err,"illegal readmode %u",(unsigned int) readmodeint);
      haserr = true;
    }
    suffixarray->readmode = (GtReadmode) readmodeint;
  }
  if (!haserr)
  {
    if (mirrored > (uint32_t) 1)
    {
      gt_error_set(err,"illegal mirroring flag: only 0(=no mirroring) and "
                       "1 (=mirroring) is supported, but read %u",
                       (unsigned int) mirrored);
      haserr = true;
    }
    suffixarray->mirroredencseq = (mirrored == (uint32_t) 1);
  }
  gt_scannedprjkeytable_delete(scannedprjkeytable);
  return haserr ? -1 : 0;
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movq %rdi, 0x110(%rsp)
movq %rsi, 0x108(%rsp)
movq %rdx, 0x100(%rsp)
movq %rcx, 0xf8(%rsp)
movq %r8, 0xf0(%rsp)
movq $0x7, 0xc8(%rsp)
movb $0x0, 0xc7(%rsp)
cmpq $0x0, 0xf0(%rsp)
je 0x234139
movq 0xf0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x234101
jmp 0x234139
movq 0x407e98(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2e1f01(%rip), %rsi    # 0x516013
leaq 0x2e20a6(%rip), %rdx    # 0x5161bf
leaq 0x342975(%rip), %rcx    # 0x576a95
leaq 0x342872(%rip), %r8     # 0x576999
movl $0x4b, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x23413b
callq 0x23a990
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rdi
leaq 0x2f6e05(%rip), %rsi    # 0x52af5c
leaq 0x38(%rsp), %rdx
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
leaq 0x358e33(%rip), %rsi    # 0x58cfb5
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x8, %rdx
leaq 0x3019c9(%rip), %rsi    # 0x535b75
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x10, %rdx
leaq 0x3428dd(%rip), %rsi    # 0x576ab3
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x18, %rdx
leaq 0x301b6f(%rip), %rsi    # 0x535d6f
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x20, %rdx
leaq 0x301b97(%rip), %rsi    # 0x535dc1
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x28, %rdx
leaq 0x2f5622(%rip), %rsi    # 0x529876
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x30, %rdx
leaq 0x34284b(%rip), %rsi    # 0x576ac9
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x38, %rdx
leaq 0x34281d(%rip), %rsi    # 0x576ac5
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x40, %rdx
leaq 0x342806(%rip), %rsi    # 0x576ad8
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x40(%rsp), %rdx
addq $0x48, %rdx
leaq 0x3427f3(%rip), %rsi    # 0x576aef
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x353e5d(%rip), %rsi    # 0x58817a
leaq 0x30(%rsp), %rdx
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x3063e2(%rip), %rsi    # 0x53a725
leaq 0x28(%rsp), %rdx
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x34279d(%rip), %rsi    # 0x576b06
leaq 0x20(%rsp), %rdx
xorl %eax, %eax
movl %eax, %r9d
xorl %r8d, %r8d
movq %r9, %rcx
callq 0x23aa00
movq 0xb8(%rsp), %rdi
movq 0x110(%rsp), %rdx
addq $0x50, %rdx
leaq 0x342781(%rip), %rsi    # 0x576b1a
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
movq 0x110(%rsp), %rdx
addq $0x38, %rdx
addq $0x8, %rdx
movq 0x110(%rsp), %r9
addq $0x38, %r9
leaq 0x2edfee(%rip), %rsi    # 0x5223c4
movl $0x8, %ecx
xorl %r8d, %r8d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
movq 0x110(%rsp), %rdx
addq $0x78, %rdx
leaq 0x33d828(%rip), %rsi    # 0x571c26
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
movq 0x110(%rsp), %rdx
addq $0x8, %rdx
addq $0x8, %rdx
movq 0x110(%rsp), %r9
addq $0x8, %r9
leaq 0x355635(%rip), %rsi    # 0x589a70
movl $0x8, %ecx
xorl %r8d, %r8d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
movq 0x110(%rsp), %rdx
addq $0x28, %rdx
addq $0x8, %rdx
movq 0x110(%rsp), %r9
addq $0x28, %r9
leaq 0x3426c1(%rip), %rsi    # 0x576b34
movl $0x8, %ecx
movl $0x1, %r8d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
movq 0x110(%rsp), %rdx
addq $0x18, %rdx
addq $0x8, %rdx
movq 0x110(%rsp), %r9
addq $0x18, %r9
leaq 0x3433fa(%rip), %rsi    # 0x5778a8
movl $0x8, %ecx
xorl %r8d, %r8d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x342675(%rip), %rsi    # 0x576b3f
leaq 0xec(%rsp), %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x342658(%rip), %rsi    # 0x576b4b
leaq 0xe8(%rsp), %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x30635c(%rip), %rsi    # 0x53a878
leaq 0xe4(%rsp), %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0xb8(%rsp), %rdi
leaq 0x2ea49a(%rip), %rsi    # 0x51e9df
leaq 0xe0(%rsp), %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
callq 0x11d4a0
movq %rax, 0xb0(%rsp)
movl $0x0, 0xdc(%rsp)
movq 0xb0(%rsp), %rdi
movq 0xf8(%rsp), %rsi
callq 0x11e3a0
cmpl $-0x1, %eax
je 0x234674
movq 0xb0(%rsp), %rdi
callq 0x11dfa0
movq %rax, 0xd0(%rsp)
movq 0xc8(%rsp), %rax
cmpq 0xd0(%rsp), %rax
ja 0x2345e7
movq 0xb0(%rsp), %rdi
callq 0x11dee0
movq %rax, %rsi
movq 0xc8(%rsp), %rdx
leaq 0x34257d(%rip), %rdi    # 0x576b58
callq 0x192c0
cmpl $0x0, %eax
jne 0x2345e7
jmp 0x234651
movq 0x108(%rsp), %rax
movq %rax, 0x10(%rsp)
movl 0xdc(%rsp), %eax
movl %eax, 0x1c(%rsp)
movq 0xb0(%rsp), %rdi
callq 0x11dee0
movq 0x10(%rsp), %rdi
movl 0x1c(%rsp), %edx
movq %rax, %rcx
movq 0xd0(%rsp), %r8
movq 0xb8(%rsp), %r9
movq 0xf0(%rsp), %rax
leaq 0x2ea38a(%rip), %rsi    # 0x51e9c1
movq %rax, (%rsp)
callq 0x23ae10
cmpl $0x0, %eax
je 0x23464f
movb $0x1, 0xc7(%rsp)
jmp 0x234674
jmp 0x234651
movq 0xb0(%rsp), %rdi
callq 0x11e110
movl 0xdc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xdc(%rsp)
jmp 0x234577
movq 0xb0(%rsp), %rdi
callq 0x11f560
testb $0x1, 0xc7(%rsp)
jne 0x2346c4
movq 0x108(%rsp), %rdi
movq 0xb8(%rsp), %rdx
movq 0x100(%rsp), %rcx
movq 0xf0(%rsp), %r8
leaq 0x2ea30f(%rip), %rsi    # 0x51e9c1
callq 0x23abb0
cmpl $0x0, %eax
je 0x2346c4
movb $0x1, 0xc7(%rsp)
testb $0x1, 0xc7(%rsp)
jne 0x23470f
cmpl $0x20, 0xec(%rsp)
je 0x23470f
cmpl $0x40, 0xec(%rsp)
je 0x23470f
movq 0xf0(%rsp), %rdi
movq 0x108(%rsp), %rdx
leaq 0x342467(%rip), %rsi    # 0x576b60
leaq 0x2ea2c1(%rip), %rcx    # 0x51e9c1
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0xc7(%rsp)
testb $0x1, 0xc7(%rsp)
jne 0x23474d
cmpl $0x40, 0xec(%rsp)
je 0x23474d
movq 0xf0(%rsp), %rdi
movl 0xec(%rsp), %edx
leaq 0x34245c(%rip), %rsi    # 0x576b95
movl $0x40, %ecx
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0xc7(%rsp)
testb $0x1, 0xc7(%rsp)
jne 0x2347b8
callq 0x483780
testb $0x1, %al
jne 0x234762
jmp 0x23478c
cmpl $0x1, 0xe8(%rsp)
je 0x23478a
movq 0xf0(%rsp), %rdi
leaq 0x34246a(%rip), %rsi    # 0x576be5
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0xc7(%rsp)
jmp 0x2347b6
cmpl $0x1, 0xe8(%rsp)
jne 0x2347b4
movq 0xf0(%rsp), %rdi
leaq 0x3424a4(%rip), %rsi    # 0x576c49
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0xc7(%rsp)
jmp 0x2347b6
jmp 0x2347b8
testb $0x1, 0xc7(%rsp)
jne 0x234803
cmpl $0x3, 0xe4(%rsp)
jbe 0x2347f1
movq 0xf0(%rsp), %rdi
movl 0xe4(%rsp), %edx
leaq 0x3424cb(%rip), %rsi    # 0x576cad
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0xc7(%rsp)
movl 0xe4(%rsp), %ecx
movq 0x110(%rsp), %rax
movl %ecx, 0x48(%rax)
testb $0x1, 0xc7(%rsp)
jne 0x234855
cmpl $0x1, 0xe0(%rsp)
jbe 0x23483c
movq 0xf0(%rsp), %rdi
movl 0xe0(%rsp), %edx
leaq 0x342494(%rip), %rsi    # 0x576cc1
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0xc7(%rsp)
cmpl $0x1, 0xe0(%rsp)
sete %cl
movq 0x110(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x4c(%rax)
movq 0xb8(%rsp), %rdi
callq 0x23a9d0
movb 0xc7(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x118, %rsp            # imm = 0x118
retq
nop