// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/fmi-map.c
// Function: scanfmafileviafileptr
static int scanfmafileviafileptr(Fmindex *fmindex,
                                 GtSpecialcharinfo *specialcharinfo,
                                 bool *storeindexpos,
                                 const char *indexname,
                                 FILE *fpin,
                                 GtLogger *logger,
                                 GtError *err)
{
  bool haserr = false;
  GtScannedprjkeytable *scannedprjkeytable;
  unsigned int intstoreindexpos;

  gt_error_check(err);
  scannedprjkeytable = gt_scannedprjkeytable_new();
  GT_SCANNEDPRJKEY_ADD("bwtlength",&fmindex->bwtlength,NULL);
  GT_SCANNEDPRJKEY_ADD("longest",&fmindex->longestsuffixpos,NULL);
  GT_SCANNEDPRJKEY_ADD("storeindexpos",&intstoreindexpos,NULL);
  GT_SCANNEDPRJKEY_ADD("log2blocksize",&fmindex->log2bsize,NULL);
  GT_SCANNEDPRJKEY_ADD("log2markdist",&fmindex->log2markdist,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("suffixlength",&fmindex->suffixlength,NULL);
  if (!haserr)
  {
    GtStr *currentline;
    unsigned int linenum;

    currentline = gt_str_new();
    for (linenum = 0; gt_str_read_next_line(currentline, fpin) != EOF;
         linenum++)
    {
      if (gt_scannedprjkey_analyze(indexname,
                                   FMASCIIFILESUFFIX,
                                   linenum,
                                   gt_str_get(currentline),
                                   gt_str_length(currentline),
                                   scannedprjkeytable,
                                   err) != 0)
      {
        haserr = true;
        break;
      }
      gt_str_reset(currentline);
    }
    gt_str_delete(currentline);
  }
  if (!haserr && gt_scannedprjkey_allkeysdefined(indexname,FMASCIIFILESUFFIX,
                                                 scannedprjkeytable,
                                                 logger,err) != 0)
  {
    haserr = true;
  }
  if (!haserr)
  {
    if (intstoreindexpos == 1U)
    {
      *storeindexpos = true;
    } else
    {
      if (intstoreindexpos == 0)
      {
        *storeindexpos = false;
      } else
      {
        gt_error_set(err,"illegal value in line matching \"storeindexpos=\"");
        haserr = true;
      }
    }
  }
  gt_scannedprjkeytable_delete(scannedprjkeytable);
  return haserr ? -1 : 0;
}

// Assembly:
subq $0x78, %rsp
movq 0x80(%rsp), %rax
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movq %rdx, 0x60(%rsp)
movq %rcx, 0x58(%rsp)
movq %r8, 0x50(%rsp)
movq %r9, 0x48(%rsp)
movb $0x0, 0x47(%rsp)
cmpq $0x0, 0x80(%rsp)
je 0x24c9b5
movq 0x80(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x24c97d
jmp 0x24c9b5
movq 0x3ef61c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2c9685(%rip), %rsi    # 0x516013
leaq 0x2c982a(%rip), %rdx    # 0x5161bf
leaq 0x32c44a(%rip), %rcx    # 0x578de6
leaq 0x32c42f(%rip), %r8     # 0x578dd2
movl $0x3b, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x24c9b7
callq 0x23a990
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
movq 0x70(%rsp), %rdx
addq $0x10, %rdx
leaq 0x32c426(%rip), %rsi    # 0x578dfc
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x70(%rsp), %rdx
addq $0x30, %rdx
leaq 0x2d59c7(%rip), %rsi    # 0x5223c4
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
leaq 0x32c3eb(%rip), %rsi    # 0x578e06
leaq 0x34(%rsp), %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x70(%rsp), %rdx
addq $0x88, %rdx
leaq 0x32c3ca(%rip), %rsi    # 0x578e14
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x70(%rsp), %rdx
addq $0x94, %rdx
leaq 0x32c3ae(%rip), %rsi    # 0x578e22
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
leaq 0x34051e(%rip), %rsi    # 0x58cfb5
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x8, %rdx
leaq 0x2e90b7(%rip), %rsi    # 0x535b75
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x10, %rdx
leaq 0x329fce(%rip), %rsi    # 0x576ab3
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x18, %rdx
leaq 0x2e9263(%rip), %rsi    # 0x535d6f
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x20, %rdx
leaq 0x2e928e(%rip), %rsi    # 0x535dc1
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x28, %rdx
leaq 0x2dcd1c(%rip), %rsi    # 0x529876
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x30, %rdx
leaq 0x329f48(%rip), %rsi    # 0x576ac9
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x38, %rdx
leaq 0x329f1d(%rip), %rsi    # 0x576ac5
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x40, %rdx
leaq 0x329f09(%rip), %rsi    # 0x576ad8
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x48, %rdx
leaq 0x329ef9(%rip), %rsi    # 0x576aef
movl $0x8, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
movq 0x38(%rsp), %rdi
movq 0x70(%rsp), %rdx
addq $0x98, %rdx
leaq 0x34241b(%rip), %rsi    # 0x58f03b
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23aa00
testb $0x1, 0x47(%rsp)
jne 0x24ccec
callq 0x11d4a0
movq %rax, 0x28(%rsp)
movl $0x0, 0x24(%rsp)
movq 0x28(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x11e3a0
cmpl $-0x1, %eax
je 0x24cce2
movq 0x58(%rsp), %rax
movq %rax, 0x8(%rsp)
movl 0x24(%rsp), %eax
movl %eax, 0x14(%rsp)
movq 0x28(%rsp), %rdi
callq 0x11dee0
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rdi
callq 0x11dfa0
movq 0x8(%rsp), %rdi
movl 0x14(%rsp), %edx
movq 0x18(%rsp), %rcx
movq %rax, %r8
movq 0x38(%rsp), %r9
movq 0x80(%rsp), %rax
leaq 0x32c107(%rip), %rsi    # 0x578dba
movq %rax, (%rsp)
callq 0x23ae10
cmpl $0x0, %eax
je 0x24ccc8
movb $0x1, 0x47(%rsp)
jmp 0x24cce2
movq 0x28(%rsp), %rdi
callq 0x11e110
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x24(%rsp)
jmp 0x24cc4f
movq 0x28(%rsp), %rdi
callq 0x11f560
testb $0x1, 0x47(%rsp)
jne 0x24cd20
movq 0x58(%rsp), %rdi
movq 0x38(%rsp), %rdx
movq 0x48(%rsp), %rcx
movq 0x80(%rsp), %r8
leaq 0x32c0a9(%rip), %rsi    # 0x578dba
callq 0x23abb0
cmpl $0x0, %eax
je 0x24cd20
movb $0x1, 0x47(%rsp)
testb $0x1, 0x47(%rsp)
jne 0x24cd68
cmpl $0x1, 0x34(%rsp)
jne 0x24cd38
movq 0x60(%rsp), %rax
movb $0x1, (%rax)
jmp 0x24cd66
cmpl $0x0, 0x34(%rsp)
jne 0x24cd49
movq 0x60(%rsp), %rax
movb $0x0, (%rax)
jmp 0x24cd64
movq 0x80(%rsp), %rdi
leaq 0x32c0d7(%rip), %rsi    # 0x578e2f
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0x47(%rsp)
jmp 0x24cd66
jmp 0x24cd68
movq 0x38(%rsp), %rdi
callq 0x23a9d0
movb 0x47(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x78, %rsp
retq
nopl (%rax,%rax)