// File: /workspace/github_c_makefile_star2_O0/RodionGork[P]tinyscheme/scheme.c
// Function: token
static int token(scheme * sc) {
  int c;
  c = skipspace(sc);
  if (c == EOF) {
    return (TOK_EOF);
  }
  switch (c = inchar(sc)) {
  case EOF:
    return (TOK_EOF);
  case '(':
    return (TOK_LPAREN);
  case ')':
    return (TOK_RPAREN);
  case '.':
    c = inchar(sc);
    if (is_one_of(" \n\t", c)) {
      return (TOK_DOT);
    } else {
      backchar(sc, c);
      backchar(sc, '.');
      return TOK_ATOM;
    }
  case '\'':
    return (TOK_QUOTE);
  case ';':
    while ((c = inchar(sc)) != '\n' && c != EOF) {
    }

#if SHOW_ERROR_LINE
    if (c == '\n' && sc->load_stack[sc->file_i].kind & port_file)
      sc->load_stack[sc->file_i].rep.stdio.curr_line++;
#endif

    if (c == EOF) {
      return (TOK_EOF);
    } else {
      return (token(sc));
    }
  case '"':
    return (TOK_DQUOTE);
  case BACKQUOTE:
    return (TOK_BQUOTE);
  case ',':
    if ((c = inchar(sc)) == '@') {
      return (TOK_ATMARK);
    } else {
      backchar(sc, c);
      return (TOK_COMMA);
    }
  case '#':
    c = inchar(sc);
    if (c == '(') {
      return (TOK_VEC);
    } else if (c == '!') {
      while ((c = inchar(sc)) != '\n' && c != EOF) {
      }

#if SHOW_ERROR_LINE
      if (c == '\n' && sc->load_stack[sc->file_i].kind & port_file)
        sc->load_stack[sc->file_i].rep.stdio.curr_line++;
#endif

      if (c == EOF) {
        return (TOK_EOF);
      } else {
        return (token(sc));
      }
    } else {
      backchar(sc, c);
      if (is_one_of(" tfodxb\\", c)) {
        return TOK_SHARP_CONST;
      } else {
        return (TOK_SHARP);
      }
    }
  default:
    backchar(sc, c);
    return (TOK_ATOM);
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
callq 0x13990
movl %eax, 0x14(%rsp)
cmpl $-0x1, 0x14(%rsp)
jne 0x133ab
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
jmp 0x1369d
movq 0x18(%rsp), %rdi
callq 0x13a70
movl %eax, 0x14(%rsp)
incl %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x61, %eax
ja 0x13687
movq 0x8(%rsp), %rax
leaq 0x3f69(%rip), %rcx      # 0x17340
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
jmp 0x1369d
movl $0x0, 0x24(%rsp)
jmp 0x1369d
movl $0x1, 0x24(%rsp)
jmp 0x1369d
movq 0x18(%rsp), %rdi
callq 0x13a70
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %esi
leaq 0x4be4(%rip), %rdi      # 0x18004
callq 0x13b30
cmpl $0x0, %eax
je 0x13437
movl $0x2, 0x24(%rsp)
jmp 0x1369d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
callq 0x13b90
movq 0x18(%rsp), %rdi
movl $0x2e, %esi
callq 0x13b90
movl $0x3, 0x24(%rsp)
jmp 0x1369d
movl $0x4, 0x24(%rsp)
jmp 0x1369d
jmp 0x13470
movq 0x18(%rsp), %rdi
callq 0x13a70
movl %eax, %ecx
movl %ecx, 0x14(%rsp)
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, 0x7(%rsp)
je 0x13497
cmpl $-0x1, 0x14(%rsp)
setne %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x134a1
jmp 0x134a3
jmp 0x13470
cmpl $0xa, 0x14(%rsp)
jne 0x134fa
movq 0x18(%rsp), %rax
addq $0x190, %rax            # imm = 0x190
movq 0x18(%rsp), %rcx
movslq 0xa90(%rcx), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movzbl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x134fa
movq 0x18(%rsp), %rax
addq $0x190, %rax            # imm = 0x190
movq 0x18(%rsp), %rcx
movslq 0xa90(%rcx), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x14(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x14(%rax)
cmpl $-0x1, 0x14(%rsp)
jne 0x1350e
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
jmp 0x1369d
movq 0x18(%rsp), %rdi
callq 0x13380
movl %eax, 0x24(%rsp)
jmp 0x1369d
movl $0x6, 0x24(%rsp)
jmp 0x1369d
movl $0x7, 0x24(%rsp)
jmp 0x1369d
movq 0x18(%rsp), %rdi
callq 0x13a70
movl %eax, 0x14(%rsp)
cmpl $0x40, %eax
jne 0x1355b
movl $0x9, 0x24(%rsp)
jmp 0x1369d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
callq 0x13b90
movl $0x8, 0x24(%rsp)
jmp 0x1369d
movq 0x18(%rsp), %rdi
callq 0x13a70
movl %eax, 0x14(%rsp)
cmpl $0x28, 0x14(%rsp)
jne 0x13598
movl $0xc, 0x24(%rsp)
jmp 0x1369d
cmpl $0x21, 0x14(%rsp)
jne 0x13650
jmp 0x135a5
movq 0x18(%rsp), %rdi
callq 0x13a70
movl %eax, %ecx
movl %ecx, 0x14(%rsp)
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, 0x6(%rsp)
je 0x135cc
cmpl $-0x1, 0x14(%rsp)
setne %al
movb %al, 0x6(%rsp)
movb 0x6(%rsp), %al
testb $0x1, %al
jne 0x135d6
jmp 0x135d8
jmp 0x135a5
cmpl $0xa, 0x14(%rsp)
jne 0x1362f
movq 0x18(%rsp), %rax
addq $0x190, %rax            # imm = 0x190
movq 0x18(%rsp), %rcx
movslq 0xa90(%rcx), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movzbl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x1362f
movq 0x18(%rsp), %rax
addq $0x190, %rax            # imm = 0x190
movq 0x18(%rsp), %rcx
movslq 0xa90(%rcx), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x14(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x14(%rax)
cmpl $-0x1, 0x14(%rsp)
jne 0x13640
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
jmp 0x1369d
movq 0x18(%rsp), %rdi
callq 0x13380
movl %eax, 0x24(%rsp)
jmp 0x1369d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
callq 0x13b90
movl 0x14(%rsp), %esi
leaq 0x499f(%rip), %rdi      # 0x18008
callq 0x13b30
cmpl $0x0, %eax
je 0x1367d
movl $0xb, 0x24(%rsp)
jmp 0x1369d
movl $0xa, 0x24(%rsp)
jmp 0x1369d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
callq 0x13b90
movl $0x3, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)