// File: /workspace/github_c_makefile_star2_O2/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 0x4044
movl %eax, %ebp
callq 0x1140
movq %rax, %r15
movq (%rax), %rax
movslq %ebp, %rcx
testb $0x20, 0x1(%rax,%rcx,2)
jne 0x404c
cmpl $0x22, %ebp
je 0x3fe3
cmpl $0x23, %ebp
je 0x40cf
cmpl $0x27, %ebp
jne 0x410a
movb %bpl, 0x51a6(%rip)      # 0x9190
pushq $0x2
popq %r15
xorl %r12d, %r12d
leaq 0x5198(%rip), %r14      # 0x9190
movq %rbx, %rdi
callq 0x1070
cmpl $-0x1, %eax
je 0x418b
leaq -0x1(%r15), %rcx
testb %r12b, %r12b
je 0x401d
cmpq $0xffd, %rcx            # imm = 0xFFD
jbe 0x402a
jmp 0x408e
cmpl %ebp, %eax
je 0x408e
cmpq $0xffe, %rcx            # imm = 0xFFE
jae 0x408e
testb %r12b, %r12b
sete %cl
cmpl $0x5c, %eax
sete %r12b
andb %cl, %r12b
movb %al, -0x1(%r15,%r14)
incq %r15
jmp 0x3ff8
xorl %r14d, %r14d
jmp 0x417f
movb %bpl, 0x513d(%rip)      # 0x9190
pushq $0x1
popq %r12
leaq 0x5132(%rip), %r14      # 0x9190
movq %rbx, %rdi
callq 0x1070
cmpl $-0x1, %eax
je 0x4173
movq (%r15), %rcx
movslq %eax, %rdx
testb $0x20, 0x1(%rcx,%rdx,2)
je 0x40ae
cmpq $0xffe, %r12            # imm = 0xFFE
ja 0x40ae
movb %al, (%r12,%r14)
incq %r12
jmp 0x405e
cmpq $0xfff, %r15            # imm = 0xFFF
je 0x4194
movl %ecx, %eax
movb %bpl, (%rax,%r14)
movl %r15d, %eax
movb $0x0, (%rax,%r14)
jmp 0x417f
movb $0x0, (%r12,%r14)
cmpq $0xfff, %r12            # imm = 0xFFF
je 0x417f
movl %eax, %edi
movq %rbx, %rsi
callq 0x1030
jmp 0x417f
movb $0x23, 0x50ba(%rip)     # 0x9190
pushq $0x2
popq %r15
leaq 0x50af(%rip), %r14      # 0x9190
movq %rbx, %rdi
callq 0x1070
cmpq $0xfff, %r15            # imm = 0xFFF
je 0x4215
cmpl $-0x1, %eax
je 0x414d
cmpl $0xa, %eax
je 0x414d
movb %al, -0x1(%r15,%r14)
incq %r15
jmp 0x40e1
xorl %r12d, %r12d
leaq 0x507c(%rip), %r14      # 0x9190
cmpq $0xfff, %r12            # imm = 0xFFF
je 0x4254
cmpl $0x5f, %ebp
je 0x4135
movq (%r15), %rax
movslq %ebp, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
je 0x4157
movb %bpl, (%r12,%r14)
incq %r12
movq %rbx, %rdi
callq 0x1070
movl %eax, %ebp
cmpl $-0x1, %eax
jne 0x4114
jmp 0x417a
movw $0xa, -0x1(%r15,%r14)
jmp 0x417f
testq %r12, %r12
je 0x4168
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1030
jmp 0x4173
movb %bpl, 0x5021(%rip)      # 0x9190
pushq $0x1
popq %r12
leaq 0x5016(%rip), %r14      # 0x9190
movb $0x0, (%r12,%r14)
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
cmpq $0xfff, %r15            # imm = 0xFFF
jne 0x41d6
movq 0x4e45(%rip), %rbx      # 0x8fe0
movq (%rbx), %rdi
leaq 0x2979(%rip), %rsi      # 0x6b1e
leaq 0x4fe4(%rip), %rdx      # 0x9190
xorl %eax, %eax
callq 0x11e0
movq (%rbx), %rdi
leaq 0x1020(%rip), %rsi      # 0x51dd
leaq 0x298d(%rip), %rdx      # 0x6b51
leaq 0x102f(%rip), %rcx      # 0x51fa
movl $0x148, %r8d            # imm = 0x148
jmp 0x4291
movq 0x4e03(%rip), %rbx      # 0x8fe0
movq (%rbx), %rdi
leaq 0x2973(%rip), %rsi      # 0x6b5a
leaq 0x4fa2(%rip), %rdx      # 0x9190
xorl %eax, %eax
callq 0x11e0
movq (%rbx), %rdi
leaq 0xfde(%rip), %rsi       # 0x51dd
leaq 0x294b(%rip), %rdx      # 0x6b51
leaq 0xfed(%rip), %rcx       # 0x51fa
movl $0x149, %r8d            # imm = 0x149
jmp 0x4291
movq 0x4dc4(%rip), %rbx      # 0x8fe0
movq (%rbx), %rdi
leaq 0x296b(%rip), %rsi      # 0x6b91
leaq 0x4f63(%rip), %rdx      # 0x9190
xorl %eax, %eax
callq 0x11e0
movq (%rbx), %rdi
leaq 0xf9f(%rip), %rsi       # 0x51dd
leaq 0x290c(%rip), %rdx      # 0x6b51
leaq 0xfae(%rip), %rcx       # 0x51fa
movl $0x154, %r8d            # imm = 0x154
jmp 0x4291
movq 0x4d85(%rip), %rbx      # 0x8fe0
movq (%rbx), %rdi
leaq 0x296b(%rip), %rsi      # 0x6bd0
leaq 0x4f24(%rip), %rdx      # 0x9190
xorl %eax, %eax
callq 0x11e0
movq (%rbx), %rdi
leaq 0xf60(%rip), %rsi       # 0x51dd
leaq 0x28cd(%rip), %rdx      # 0x6b51
leaq 0xf6f(%rip), %rcx       # 0x51fa
movl $0x16d, %r8d            # imm = 0x16D
xorl %eax, %eax
callq 0x11e0
pushq $0x1
popq %rdi
callq 0x11a0