// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/match_iterator_blast.c
// Function: gt_match_iterator_blast_file_new
GtMatchIterator* gt_match_iterator_blast_file_new(const char *matchfile,
                                                  GtError *err)
{
  GtMatchIterator *mp;
  GtMatchIteratorBlast *mpb;
  mp = gt_match_iterator_create(gt_match_iterator_blast_class());
  mpb = gt_match_iterator_blast_cast(mp);
  mpb->pvt = gt_calloc(1, sizeof (GtMatchIteratorBlastMembers));
  GtFileMode mode;

  if (gt_file_exists(matchfile)) {
    mode = gt_file_mode_determine(matchfile);
    if (mode == GT_FILE_MODE_UNCOMPRESSED) {
      mpb->pvt->matchfilep = fopen(matchfile, "r");
      mpb->pvt->gtmatchfilep = NULL;
      if (!mpb->pvt->matchfilep) {
        gt_error_set(err, "could not open %s", matchfile);
        gt_match_iterator_delete(mp);
        return NULL;
      }
    } else {
      mpb->pvt->gtmatchfilep = gt_file_open(mode, matchfile, "r", err);
      mpb->pvt->matchfilep = NULL;
      if (!mpb->pvt->gtmatchfilep) {
        gt_match_iterator_delete(mp);
        return NULL;
      }
    }
    mpb->pvt->matchfile = matchfile;
    mpb->pvt->process = false;
    return mp;
  } else {
    gt_error_set(err, "no such file or directory %s", matchfile);
    gt_match_iterator_delete(mp);
    return NULL;
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
callq 0x1a7c80
movq %rax, %rdi
callq 0x1a78c0
movq %rax, 0x18(%rsp)
callq 0x1a7c80
movq %rax, %rdi
movq 0x18(%rsp), %rsi
callq 0x1a79f0
movq %rax, 0x10(%rsp)
movl $0x1, %edi
movl $0x28, %esi
leaq 0x3b1be0(%rip), %rdx    # 0x5596e8
movl $0xb9, %ecx
callq 0xe83c0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x28(%rsp), %rdi
callq 0xde820
testb $0x1, %al
jne 0x1a7b31
jmp 0x1a7c47
movq 0x28(%rsp), %rdi
callq 0xdd100
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x1a7bba
movq 0x28(%rsp), %rdi
leaq 0x384488(%rip), %rsi    # 0x52bfda
callq 0x19800
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq $0x0, 0x10(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x8(%rax)
jne 0x1a7bb8
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rdx
leaq 0x3b1b73(%rip), %rsi    # 0x55970c
movb $0x0, %al
callq 0xd88c0
movq 0x18(%rsp), %rdi
callq 0x1a7a70
movq $0x0, 0x30(%rsp)
jmp 0x1a7c72
jmp 0x1a7c1c
movl 0xc(%rsp), %edi
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rcx
leaq 0x38440b(%rip), %rdx    # 0x52bfda
callq 0xdd3f0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq $0x0, 0x8(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x10(%rax)
jne 0x1a7c1a
movq 0x18(%rsp), %rdi
callq 0x1a7a70
movq $0x0, 0x30(%rsp)
jmp 0x1a7c72
jmp 0x1a7c1c
movq 0x28(%rsp), %rcx
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movb $0x0, 0x20(%rax)
movq 0x18(%rsp), %rax
movq %rax, 0x30(%rsp)
jmp 0x1a7c72
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rdx
leaq 0x3b1ac6(%rip), %rsi    # 0x55971e
movb $0x0, %al
callq 0xd88c0
movq 0x18(%rsp), %rdi
callq 0x1a7a70
movq $0x0, 0x30(%rsp)
movq 0x30(%rsp), %rax
addq $0x38, %rsp
retq
nopl (%rax)