// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/tokenizer.c
// Function: gt_tokenizer_get_token
GtStr* gt_tokenizer_get_token(GtTokenizer *t)
{
  char c;
  bool has_eof = true;
  int rval = 0;
  gt_assert(t);

  /* if we have no current token, get it if possible */
  if (!t->token) {
    if (t->skip_comment_lines && gt_io_line_start(t->io)) {
      for (;;) {
        gt_assert(gt_io_line_start(t->io));
        if ((gt_io_get_char(t->io, (char*) &c) != -1)) {
          if ((char) c == '#') {
            /* skip line */
            while ((gt_io_get_char(t->io, &c) != -1) && c != '\n');
            has_eof = true;
          }
          else {
            gt_io_unget_char(t->io, c);
            has_eof = false;
            break;
          }
        }
        else {
          c = EOF;
          break;
        }
      }
    }
    /* skip blanks */
    while (((rval = gt_io_get_char(t->io, &c)) != -1) && c == ' ');
    if (rval == -1)
      has_eof = true;
    else
      has_eof = false;
    do {
      if (!has_eof) {
        if (!t->token)
          t->token = gt_str_new();
        if (c == '\n')
          break;
        gt_str_append_char(t->token, c);
      }
    } while (((rval = gt_io_get_char(t->io, &c)) != -1)
              && c != ' ' && c != '\n');
    if (rval == -1)
      has_eof = true;
    else
      has_eof = false;
    if (c == '\n' && !has_eof) {
      gt_assert(t->token);
      gt_str_append_char(t->token, c);
    }
  }
  /* return token */
  if (t->token)
    return gt_str_ref(t->token);
  return NULL;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movb $0x1, 0x16(%rsp)
movl $0x0, 0x10(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0xe4f46
movq 0xcf0c3(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x79147(%rip), %rsi     # 0x15e066
leaq 0x82f58(%rip), %rdx     # 0x167e7e
leaq 0x94444(%rip), %rcx     # 0x179371
leaq 0x94408(%rip), %r8      # 0x17933c
movl $0x33, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xe4f48
movq 0x18(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0xe51c2
movq 0x18(%rsp), %rax
testb $0x1, 0x8(%rax)
je 0xe5059
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0xe19a0
testb $0x1, %al
jne 0xe4f7d
jmp 0xe5059
jmp 0xe4f7f
jmp 0xe4f81
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0xe19a0
testb $0x1, %al
jne 0xe4fca
movq 0xcf03f(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x790c3(%rip), %rsi     # 0x15e066
leaq 0x943de(%rip), %rdx     # 0x179388
leaq 0x943c0(%rip), %rcx     # 0x179371
leaq 0x94384(%rip), %r8      # 0x17933c
movl $0x39, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xe4fcc
movq 0x18(%rsp), %rax
movq (%rax), %rdi
leaq 0x17(%rsp), %rsi
callq 0xe1860
cmpl $-0x1, %eax
je 0xe504b
movsbl 0x17(%rsp), %eax
cmpl $0x23, %eax
jne 0xe5030
jmp 0xe4fef
movq 0x18(%rsp), %rax
movq (%rax), %rdi
leaq 0x17(%rsp), %rsi
callq 0xe1860
movl %eax, %ecx
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, 0xf(%rsp)
je 0xe501d
movsbl 0x17(%rsp), %eax
cmpl $0xa, %eax
setne %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0xe5027
jmp 0xe5029
jmp 0xe4fef
movb $0x1, 0x16(%rsp)
jmp 0xe5049
movq 0x18(%rsp), %rax
movq (%rax), %rdi
movsbl 0x17(%rsp), %esi
callq 0xe1930
movb $0x0, 0x16(%rsp)
jmp 0xe5057
jmp 0xe5052
movb $-0x1, 0x17(%rsp)
jmp 0xe5057
jmp 0xe4f7f
jmp 0xe5059
jmp 0xe505b
movq 0x18(%rsp), %rax
movq (%rax), %rdi
leaq 0x17(%rsp), %rsi
callq 0xe1860
movl %eax, %ecx
movl %ecx, 0x10(%rsp)
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, 0xe(%rsp)
je 0xe508d
movsbl 0x17(%rsp), %eax
cmpl $0x20, %eax
sete %al
movb %al, 0xe(%rsp)
movb 0xe(%rsp), %al
testb $0x1, %al
jne 0xe5097
jmp 0xe5099
jmp 0xe505b
cmpl $-0x1, 0x10(%rsp)
jne 0xe50a7
movb $0x1, 0x16(%rsp)
jmp 0xe50ac
movb $0x0, 0x16(%rsp)
jmp 0xe50ae
testb $0x1, 0x16(%rsp)
jne 0xe50f1
movq 0x18(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0xe50d2
callq 0x18f00
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
movsbl 0x17(%rsp), %eax
cmpl $0xa, %eax
jne 0xe50de
jmp 0xe5141
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movsbl 0x17(%rsp), %esi
callq 0x194d0
jmp 0xe50f3
movq 0x18(%rsp), %rax
movq (%rax), %rdi
leaq 0x17(%rsp), %rsi
callq 0xe1860
movl %eax, %ecx
movl %ecx, 0x10(%rsp)
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, 0xd(%rsp)
je 0xe5135
movsbl 0x17(%rsp), %ecx
xorl %eax, %eax
cmpl $0x20, %ecx
movb %al, 0xd(%rsp)
je 0xe5135
movsbl 0x17(%rsp), %eax
cmpl $0xa, %eax
setne %al
movb %al, 0xd(%rsp)
movb 0xd(%rsp), %al
testb $0x1, %al
jne 0xe50ae
cmpl $-0x1, 0x10(%rsp)
jne 0xe514f
movb $0x1, 0x16(%rsp)
jmp 0xe5154
movb $0x0, 0x16(%rsp)
movsbl 0x17(%rsp), %eax
cmpl $0xa, %eax
jne 0xe51c0
testb $0x1, 0x16(%rsp)
jne 0xe51c0
jmp 0xe5167
movq 0x18(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0xe51ab
movq 0xcee5e(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x78ee2(%rip), %rsi     # 0x15e066
leaq 0x94215(%rip), %rdx     # 0x1793a0
leaq 0x941df(%rip), %rcx     # 0x179371
leaq 0x941a3(%rip), %r8      # 0x17933c
movl $0x61, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xe51ad
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movsbl 0x17(%rsp), %esi
callq 0x194d0
jmp 0xe51c2
movq 0x18(%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0xe51e3
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x19dc0
movq %rax, 0x20(%rsp)
jmp 0xe51ec
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)