// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/sequence_buffer_gb.c
// Function: get_sequence
static inline int get_sequence(GtSequenceBuffer *sb,
                               GtStr *linebuf,
                               GtUword *currentoutpos,
                               GtUword *currentfileread,
                               GtUword *currentfileadd,
                               GtError *err)
{
  int currentchar, ret = 0, num_chars;
  /* expect digits */
  if ((num_chars = eat_digits(sb, currentfileread)) == EOF)
    return EOF;
  if (num_chars == 0) {
    gt_error_set(err, "sequence offset numbers missing in line " GT_WU
                 " of file %s", (GtUword) sb->pvt->linenum,
                 gt_str_array_get(sb->pvt->filenametab, (GtUword)
                                  sb->pvt->filenum));
    return -2;
  }
  currentchar = inlinebuf_getchar(sb, sb->pvt->inputstream);
  if (currentchar == EOF)
    return EOF;
  (*currentfileread)++;
  /* expect one blank */
  if (currentchar != ' ') {
    gt_error_set(err, "blank expected between offset and sequence in line "
                 GT_WU " of file %s", (GtUword) sb->pvt->linenum,
                 gt_str_array_get(sb->pvt->filenametab, (GtUword)
                                  sb->pvt->filenum));
    return -2;
  }
  /* read sequence */
  do {
    currentchar = inlinebuf_getchar(sb, sb->pvt->inputstream);
    if (currentchar == EOF)
      return EOF;
    (*currentfileread)++;
    if (!isspace(currentchar)) {
      if (*currentoutpos >= (GtUword) OUTBUFSIZE) {
        /* if outbuffer is full, keep rest of sequence in overflow buffer */
        gt_str_append_char(linebuf, currentchar);
      } else {
         /* fill output buffer w/ current char */
         if ((ret = process_char(sb, *currentoutpos, currentchar, err)))
             return ret;
        (*currentoutpos)++;
        (*currentfileadd)++;
      }
    }
  } while (currentchar != NEWLINESYMBOL);
  inlinebuf_ungetchar(sb);
  (*currentfileread)--;
  return 0;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x58(%rsp)
movq %rsi, 0x50(%rsp)
movq %rdx, 0x48(%rsp)
movq %rcx, 0x40(%rsp)
movq %r8, 0x38(%rsp)
movq %r9, 0x30(%rsp)
movl $0x0, 0x28(%rsp)
movq 0x58(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xa1dc0
movl %eax, 0x24(%rsp)
cmpl $-0x1, %eax
jne 0xa19bf
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0xa1bca
cmpl $0x0, 0x24(%rsp)
jne 0xa1a29
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x70(%rax), %rdi
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movl (%rax), %eax
movl %eax, %esi
callq 0x1b320
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rdx
movq %rax, %rcx
leaq 0xcfee8(%rip), %rsi     # 0x1718fd
movb $0x0, %al
callq 0xc0d0
movl $0xfffffffe, 0x64(%rsp) # imm = 0xFFFFFFFE
jmp 0xa1bca
movq 0x58(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
callq 0xa1c80
movl %eax, 0x2c(%rsp)
cmpl $-0x1, 0x2c(%rsp)
jne 0xa1a58
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0xa1bca
movq 0x40(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
cmpl $0x20, 0x2c(%rsp)
je 0xa1acf
movq 0x30(%rsp), %rax
movq %rax, (%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x70(%rax), %rdi
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movl (%rax), %eax
movl %eax, %esi
callq 0x1b320
movq (%rsp), %rdi
movq 0x8(%rsp), %rdx
movq %rax, %rcx
leaq 0xcfe79(%rip), %rsi     # 0x171934
movb $0x0, %al
callq 0xc0d0
movl $0xfffffffe, 0x64(%rsp) # imm = 0xFFFFFFFE
jmp 0xa1bca
jmp 0xa1ad1
movq 0x58(%rsp), %rdi
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
callq 0xa1c80
movl %eax, 0x2c(%rsp)
cmpl $-0x1, 0x2c(%rsp)
jne 0xa1b00
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0xa1bca
movq 0x40(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
callq 0xb6b0
movq (%rax), %rax
movslq 0x2c(%rsp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
jne 0xa1b9c
movq 0x48(%rsp), %rax
cmpq $0x2000, (%rax)         # imm = 0x2000
jb 0xa1b4b
movq 0x50(%rsp), %rdi
movl 0x2c(%rsp), %eax
movsbl %al, %esi
callq 0x194d0
jmp 0xa1b9a
movq 0x58(%rsp), %rdi
movq 0x48(%rsp), %rax
movq (%rax), %rsi
movl 0x2c(%rsp), %eax
movq 0x30(%rsp), %rcx
movzbl %al, %edx
callq 0xa14c0
movl %eax, 0x28(%rsp)
cmpl $0x0, %eax
je 0xa1b7c
movl 0x28(%rsp), %eax
movl %eax, 0x64(%rsp)
jmp 0xa1bca
movq 0x48(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq 0x38(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0xa1b9c
jmp 0xa1b9e
cmpl $0xa, 0x2c(%rsp)
jne 0xa1ad1
movq 0x58(%rsp), %rdi
callq 0xa1d60
movq 0x40(%rsp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movl $0x0, 0x64(%rsp)
movl 0x64(%rsp), %eax
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)