// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/match/rdj-strgraph.c
// Function: gt_strgraph_load_spm_from_file
int gt_strgraph_load_spm_from_file(GtStrgraph *strgraph,
    GtUword min_length, bool load_self_spm, GtBitsequence *contained,
    const char *indexname, unsigned int nspmfiles, const char *suffix,
    GtError *err)
{
  int had_err = 0;
  GtStr *filename = gt_str_new();
  GtSpmprocSkipData skipdata;
  unsigned int i;

  gt_assert(strgraph != NULL);
  if (contained != NULL)
  {
    skipdata.out.e.proc = gt_spmproc_strgraph_add;
    skipdata.to_skip = contained;
    skipdata.out.e.data = strgraph;
    skipdata.skipped_counter = 0;
  }
  strgraph->load_self_spm = load_self_spm;
  for (i = 0; i < nspmfiles; i++)
  {
    gt_str_append_cstr(filename, indexname);
    gt_str_append_char(filename, '.');
    gt_str_append_uint(filename, i);
    gt_str_append_cstr(filename, suffix);
    had_err = gt_spmlist_parse(gt_str_get(filename), min_length,
        contained != NULL ? gt_spmproc_skip : gt_spmproc_strgraph_add,
        contained != NULL ? (void*)&skipdata : (void*)strgraph, err);
    gt_str_reset(filename);
  }
  gt_str_delete(filename);
  if (!had_err)
    gt_strgraph_mark_empty_edges(strgraph);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %r9d, %r15d
movq %r8, %r13
movq %rcx, %r12
movl %edx, %ebp
movq %rsi, 0x20(%rsp)
movq %rdi, %rbx
callq 0x1208f8
testq %rbx, %rbx
je 0x1d93a9
movq %rax, %r14
testq %r12, %r12
je 0x1d8f43
leaq 0x483(%rip), %rax       # 0x1d93ae
movq %rax, 0x30(%rsp)
movq %r12, 0x28(%rsp)
movq %rbx, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
movb %bpl, 0x28(%rbx)
testl %r15d, %r15d
je 0x1d8ff0
testq %r12, %r12
movl %r15d, 0x18(%rsp)
leaq -0x19d1(%rip), %rax     # 0x1d758e
cmoveq 0x2eb071(%rip), %rax    # 0x4c3fd8
movq %rax, 0x10(%rsp)
leaq 0x28(%rsp), %r12
cmoveq %rbx, %r12
movq %r13, 0x8(%rsp)
xorl %r13d, %r13d
movq 0x20(%rsp), %r15
movq %r14, %rdi
movq 0x8(%rsp), %rsi
callq 0x12097f
movq %r14, %rdi
movl $0x2e, %esi
callq 0x120ba5
movq %r14, %rdi
movl %r13d, %esi
callq 0x120cd6
movq %r14, %rdi
movq 0x80(%rsp), %rsi
callq 0x12097f
movq %r14, %rdi
callq 0x120d23
movq %rax, %rdi
movq %r15, %rsi
movq 0x10(%rsp), %rdx
movq %r12, %rcx
movq 0x88(%rsp), %r8
callq 0x1d5b40
movl %eax, %ebp
movq %r14, %rdi
callq 0x120db4
incl %r13d
cmpl %r13d, 0x18(%rsp)
jne 0x1d8f82
jmp 0x1d8ff2
xorl %ebp, %ebp
movq %r14, %rdi
callq 0x121b03
testl %ebp, %ebp
je 0x1d900f
movl %ebp, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x0, 0x80(%rbx)
je 0x1d8ffe
xorl %r12d, %r12d
movl %ebp, 0x8(%rsp)
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1d9386
cmpq %r12, 0x8(%rax)
jbe 0x1d9386
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d9386
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
movq %rax, %r14
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d9381
leaq 0x1(%r12), %r13
cmpq %r13, 0x8(%rax)
jbe 0x1d9381
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d9381
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
movq %rax, %r15
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d938b
cmpq %r12, 0x8(%rax)
jbe 0x1d938b
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d938b
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
subq %rax, %r15
cmpq %r15, %r14
ja 0x1d93a4
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d9390
cmpq %r13, 0x8(%rax)
jbe 0x1d9390
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d9390
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
movq %rax, %r14
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d9395
cmpq %r12, 0x8(%rax)
jbe 0x1d9395
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d9395
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
movq %rax, %r15
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1d939a
cmpq %r12, 0x8(%rax)
jbe 0x1d939a
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d939a
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
addq %r15, %rax
cmpq %rax, %r14
jne 0x1d9190
movq %r13, %r12
cmpq 0x80(%rbx), %r13
movl 0x8(%rsp), %ebp
jb 0x1d9020
jmp 0x1d8ffe
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1d939f
cmpq %r12, 0x8(%rax)
jbe 0x1d939f
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d939f
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
movq %rax, %r14
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d9363
movq %r12, 0x18(%rsp)
movq %r13, 0x10(%rsp)
cmpq %r13, 0x8(%rax)
jbe 0x1d9363
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d9363
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
movq %rax, %r15
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d9368
cmpq %r12, 0x8(%rax)
jbe 0x1d9368
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d9368
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
subq %rax, %r15
cmpq %r15, %r14
jae 0x1d9177
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d9377
cmpq %r12, 0x8(%rax)
jbe 0x1d9377
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d9377
movq 0x88(%rbx), %rbp
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
movq %rax, %r15
movq 0x90(%rbx), %rdi
callq 0x2f9d41
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %r13d
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1d937c
cmpq %r12, 0x8(%rax)
jbe 0x1d937c
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d937c
movq %r12, %rcx
movq 0x88(%rbx), %r12
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rcx, %rsi
callq 0x2fcc2c
testq %r12, %r12
je 0x1d936d
addq %r14, %rax
cmpq %rax, 0x8(%r12)
jbe 0x1d936d
movl 0x10(%r12), %edx
cmpq $0x41, %rdx
jae 0x1d936d
movq (%r12), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
testq %rbp, %rbp
je 0x1d9372
addq %r14, %r15
cmpq %r15, 0x8(%rbp)
jbe 0x1d9372
movl 0x10(%rbp), %edx
cmpq $0x41, %rdx
jae 0x1d9372
notl %r13d
addl %r13d, %r13d
notl %r13d
movslq %r13d, %rcx
andq %rcx, %rax
movq 0x90(%rbx), %rcx
leaq (%rax,%rcx,2), %rcx
movq (%rbp), %rdi
imulq %rdx, %r15
movq %r15, %rsi
callq 0x2fcd13
incq %r14
movq 0x60(%rbx), %rax
testq %rax, %rax
movq 0x18(%rsp), %r12
movq 0x10(%rsp), %r13
jne 0x1d91dd
callq 0x6e497
callq 0x6e45e
callq 0x6e3b3
callq 0x6e37a
callq 0x6e425
callq 0x6e3ec
callq 0x6e626
callq 0x6e65f
callq 0x6e5ed
callq 0x6e57b
callq 0x6e542
callq 0x6e509
callq 0x6e4d0
callq 0x6e5b4
callq 0x6e698