// File: /workspace/github_c_makefile_star2_O1/mabdi[P]bunney/bunny-gcc.c
// Function: get_item
static _u8* get_item(FILE* f) {
  _s32 c;
  static _u8 obuf[MAXTOKEN];
  _u32 olen = 0;
  _u8  qopen;
  
  if ((c = getc(f)) == EOF) return 0;

  /* Cluster whitespaces together */
  if (isspace(c)) {
    obuf[olen++] = c;
    while ((c=getc(f)) != EOF && isspace(c) && olen < MAXTOKEN - 1) obuf[olen++] = c;
    obuf[olen] = 0;
    if (olen != MAXTOKEN - 1 && c != EOF) ungetc(c,f);
    return obuf;
  }  

  /* Dump all text between "..." or '...' as a single token; watch for \, though */
  if (c == '"' || c == '\'') {
    _u8 escnext = 0;
    qopen = obuf[olen++] = c;
    while ((c=getc(f)) != EOF && (escnext || c != qopen) && olen < MAXTOKEN - 2) {
      if (!escnext) escnext = (c == '\\'); else escnext = 0;
      obuf[olen++] = c;
    }
    if (olen == MAXTOKEN - 2) fatal("string too long: '%.32s...'",obuf);
    if (c == EOF) fatal("unterminated string: '%.32s...'",obuf);
    obuf[olen++] = qopen;
    obuf[olen] = 0;

    return obuf;
  }
  
  /* Special handling for compiler directives (#) - copy whole line */
  if (c == '#') {
    obuf[olen++] = c;
    while ((c=getc(f)) != EOF && c != '\n' && olen < MAXTOKEN - 2) obuf[olen++] = c;
    if (olen == MAXTOKEN - 2) fatal("compiler directive too long: '%.32s...'",obuf);
    obuf[olen++] = '\n';
    obuf[olen] = 0;
    return obuf;
  }
  
  /* If found a run of [A-Za-z0-9_], consume it all. Everything else, return char-by-char. */
     
  while (olen < MAXTOKEN - 1) {
  
    if (!isalnum(c) && c != '_') {
      if (olen) ungetc(c,f); else obuf[olen++] = c;
      obuf[olen] = 0;
      return obuf;
    }
    
    obuf[olen++] = c;
    
    if ((c = getc(f)) == EOF) {
      obuf[olen] = 0;
      return obuf;
    }
    
  }
  
  fatal("line too long: '%.30s...'",obuf);

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
callq 0x1070
cmpl $-0x1, %eax
je 0x447f
movl %eax, %ebp
callq 0x1140
movq %rax, %r15
movq (%rax), %rax
movslq %ebp, %rcx
testb $0x20, 0x1(%rax,%rcx,2)
jne 0x4487
cmpl $0x22, %ebp
je 0x43e0
cmpl $0x23, %ebp
je 0x4529
cmpl $0x27, %ebp
jne 0x4586
movb %bpl, 0x4da9(%rip)      # 0x9190
movq %rbx, %rdi
callq 0x1070
cmpl $-0x1, %eax
sete %cl
movl $0x1, %r15d
je 0x444e
xorl %r12d, %r12d
leaq 0x4d89(%rip), %r14      # 0x9190
testb %r12b, %r12b
je 0x4417
cmpl $0xffd, %r15d           # imm = 0xFFD
jbe 0x4424
jmp 0x444e
cmpl %ebp, %eax
je 0x444e
cmpl $0xffe, %r15d           # imm = 0xFFE
jae 0x444e
testb %r12b, %r12b
sete %cl
cmpl $0x5c, %eax
sete %r12b
andb %cl, %r12b
movl %r15d, %ecx
incl %r15d
movb %al, (%rcx,%r14)
movq %rbx, %rdi
callq 0x1070
cmpl $-0x1, %eax
sete %cl
jne 0x4407
cmpl $0xffe, %r15d           # imm = 0xFFE
je 0x4600
testb $0x1, %cl
jne 0x4605
movl %r15d, %eax
incl %r15d
leaq 0x4d1f(%rip), %r14      # 0x9190
movb %bpl, (%rax,%r14)
movb $0x0, (%r15,%r14)
jmp 0x45ef
xorl %r14d, %r14d
jmp 0x45ef
movb %bpl, 0x4d02(%rip)      # 0x9190
movq %rbx, %rdi
callq 0x1070
movl $0x1, %ebp
cmpl $-0x1, %eax
setne %cl
je 0x44f8
movq (%r15), %rdx
movslq %eax, %rsi
testb $0x20, 0x1(%rdx,%rsi,2)
je 0x44f8
movl $0x1, %r12d
movl $0x2, %ebp
leaq 0x4cce(%rip), %r14      # 0x9190
movb %al, (%r12,%r14)
movq %rbx, %rdi
callq 0x1070
cmpl $-0x1, %eax
setne %cl
je 0x44f8
leaq 0x1(%r12), %rdx
movq (%r15), %rsi
movslq %eax, %rdi
testb $0x20, 0x1(%rsi,%rdi,2)
je 0x44f6
incl %ebp
cmpq $0xffd, %r12            # imm = 0xFFD
movq %rdx, %r12
jbe 0x44c2
movl %edx, %ebp
movl %ebp, %edx
leaq 0x4c8f(%rip), %r14      # 0x9190
movb $0x0, (%rdx,%r14)
cmpl $0xfff, %ebp            # imm = 0xFFF
sete %dl
xorb $0x1, %cl
orb %dl, %cl
jne 0x45ef
movl %eax, %edi
movq %rbx, %rsi
callq 0x1030
jmp 0x45ef
movb $0x23, 0x4c60(%rip)     # 0x9190
movq %rbx, %rdi
callq 0x1070
movl $0x1, %r15d
leaq 0x4c4b(%rip), %r14      # 0x9190
cmpl $-0x1, %eax
je 0x456d
cmpl $0xa, %eax
je 0x456d
movb %al, (%r15,%r14)
incq %r15
movq %rbx, %rdi
callq 0x1070
cmpq $0xffe, %r15            # imm = 0xFFE
jne 0x4545
movl $0xffe, %r15d           # imm = 0xFFE
cmpl $0xffe, %r15d           # imm = 0xFFE
je 0x460a
movl %r15d, %eax
movw $0xa, (%rax,%r14)
jmp 0x45ef
xorl %r12d, %r12d
leaq 0x4c00(%rip), %r14      # 0x9190
cmpq $0xfff, %r12            # imm = 0xFFF
je 0x45fb
cmpl $0x5f, %ebp
je 0x45ad
movq (%r15), %rax
movslq %ebp, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
je 0x45c5
movb %bpl, (%r12,%r14)
incq %r12
movq %rbx, %rdi
callq 0x1070
movl %eax, %ebp
cmpl $-0x1, %eax
jne 0x4590
jmp 0x45ea
testq %r12, %r12
je 0x45d6
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1030
jmp 0x45e3
movb %bpl, 0x4bb3(%rip)      # 0x9190
movl $0x1, %r12d
leaq 0x4ba6(%rip), %r14      # 0x9190
movb $0x0, (%r12,%r14)
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0x153c
callq 0x14ef
callq 0x14a2
callq 0x1455