// File: /workspace/github_c_makefile_star2_O0/pedro-onate[P]eva/eva.c
// Function: next
static es_token_t next(es_val_t port, char* pbuf)
{
  es_token_t t;
  eat_sp(port);
  int c = pgetc(port);
  switch(c) {
  case -1:   t = tk_eof;    break;
  case '(':  t = tk_lpar;   break;
  case ')':  t = tk_rpar;   break;
  case '\'': t = tk_quot;   break;
  case '`':  t = tk_qquot;  break;
  case ',':
    t = tk_unquot;
    if (ppeekc(port) == '@') {
      pgetc(port);
      t = tk_unquot_splice;
    }
    break;
  case '"':
    while((c = pgetc(port)) != '"')
      *pbuf++ = '\\' == c ? escape(pgetc(port)) : c;
    t = tk_str;
    break;
  case '#':
    c = pgetc(port);
    if (c == 't')       t = tk_tbool;
    else if (c == 'f')  t = tk_fbool;
    else if (c == '(')  t = tk_hlpar;
    else if (c == '\\') {
      while(!eot(ppeekc(port)))
        *pbuf++ = pgetc(port);
      t = tk_char;
    }
    else                t = tk_unknown;
    break;
  default: {
    lstate_t s = step(lstate_start, c);
    *pbuf++ = c;
    while(!eot(ppeekc(port))) {
      s = step(s, (*pbuf++ = c = pgetc(port)));
    }
    s = step(s, ppeekc(port));
    if (s == lstate_sym)      t = tk_sym;
    else if (s == lstate_int) t = tk_int;
    else if (s == lstate_dot) t = tk_dot;
    else                      t = tk_unknown;
    }
    break;
  }
  *pbuf = '\0';
  while(strchr(" \t", ppeekc(port))) pgetc(port);
  if (ppeekc(port) == '\n') pgetc(port);
  return t;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x80b0
movq -0x8(%rbp), %rdi
callq 0x2370
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x20(%rbp)
subl $-0x1, %eax
je 0x7b13
jmp 0x7ac2
movl -0x20(%rbp), %eax
subl $0x22, %eax
je 0x7b79
jmp 0x7ad0
movl -0x20(%rbp), %eax
subl $0x23, %eax
je 0x7bd5
jmp 0x7ade
movl -0x20(%rbp), %eax
subl $0x27, %eax
je 0x7b37
jmp 0x7ae8
movl -0x20(%rbp), %eax
subl $0x28, %eax
je 0x7b1f
jmp 0x7af2
movl -0x20(%rbp), %eax
subl $0x29, %eax
je 0x7b2b
jmp 0x7afc
movl -0x20(%rbp), %eax
subl $0x2c, %eax
je 0x7b4f
jmp 0x7b06
movl -0x20(%rbp), %eax
subl $0x60, %eax
je 0x7b43
jmp 0x7c97
movl $0x0, -0x14(%rbp)
jmp 0x7d85
movl $0x1, -0x14(%rbp)
jmp 0x7d85
movl $0x3, -0x14(%rbp)
jmp 0x7d85
movl $0xb, -0x14(%rbp)
jmp 0x7d85
movl $0xc, -0x14(%rbp)
jmp 0x7d85
movl $0xd, -0x14(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2570
cmpl $0x40, %eax
jne 0x7b74
movq -0x8(%rbp), %rdi
callq 0x2370
movl $0xe, -0x14(%rbp)
jmp 0x7d85
jmp 0x7b7b
movq -0x8(%rbp), %rdi
callq 0x2370
movl %eax, -0x18(%rbp)
cmpl $0x22, %eax
je 0x7bc9
movl $0x5c, %eax
cmpl -0x18(%rbp), %eax
jne 0x7bab
movq -0x8(%rbp), %rdi
callq 0x2370
movl %eax, %edi
callq 0x8100
movl %eax, -0x24(%rbp)
jmp 0x7bb1
movl -0x18(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x10(%rbp)
movb %cl, (%rax)
jmp 0x7b7b
movl $0x7, -0x14(%rbp)
jmp 0x7d85
movq -0x8(%rbp), %rdi
callq 0x2370
movl %eax, -0x18(%rbp)
cmpl $0x74, -0x18(%rbp)
jne 0x7bf3
movl $0x5, -0x14(%rbp)
jmp 0x7c92
cmpl $0x66, -0x18(%rbp)
jne 0x7c05
movl $0x6, -0x14(%rbp)
jmp 0x7c90
cmpl $0x28, -0x18(%rbp)
jne 0x7c14
movl $0x2, -0x14(%rbp)
jmp 0x7c8e
cmpl $0x5c, -0x18(%rbp)
jne 0x7c85
jmp 0x7c1c
movq -0x8(%rbp), %rdi
callq 0x2570
movl %eax, %esi
leaq 0x2a24(%rip), %rdi      # 0xa652
callq 0x1080
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, -0x25(%rbp)
jne 0x7c53
movq -0x8(%rbp), %rdi
callq 0x2570
cmpl $-0x1, %eax
sete %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x7c5e
jmp 0x7c7c
movq -0x8(%rbp), %rdi
callq 0x2370
movb %al, %cl
movq -0x10(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x10(%rbp)
movb %cl, (%rax)
jmp 0x7c1c
movl $0x8, -0x14(%rbp)
jmp 0x7c8c
movl $0xf, -0x14(%rbp)
jmp 0x7c8e
jmp 0x7c90
jmp 0x7c92
jmp 0x7d85
movl -0x18(%rbp), %esi
xorl %edi, %edi
callq 0x8180
movl %eax, -0x1c(%rbp)
movl -0x18(%rbp), %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x10(%rbp)
movb %cl, (%rax)
movq -0x8(%rbp), %rdi
callq 0x2570
movl %eax, %esi
leaq 0x2986(%rip), %rdi      # 0xa652
callq 0x1080
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, -0x26(%rbp)
jne 0x7cf1
movq -0x8(%rbp), %rdi
callq 0x2570
cmpl $-0x1, %eax
sete %al
movb %al, -0x26(%rbp)
movb -0x26(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x7cfc
jmp 0x7d2f
movl -0x1c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2370
movl -0x2c(%rbp), %edi
movl %eax, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x10(%rbp)
movb %al, (%rcx)
movsbl %al, %esi
callq 0x8180
movl %eax, -0x1c(%rbp)
jmp 0x7cba
movl -0x1c(%rbp), %eax
movl %eax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2570
movl -0x30(%rbp), %edi
movl %eax, %esi
callq 0x8180
movl %eax, -0x1c(%rbp)
cmpl $0x4, -0x1c(%rbp)
jne 0x7d5a
movl $0xa, -0x14(%rbp)
jmp 0x7d83
cmpl $0x2, -0x1c(%rbp)
jne 0x7d69
movl $0x4, -0x14(%rbp)
jmp 0x7d81
cmpl $0x3, -0x1c(%rbp)
jne 0x7d78
movl $0x9, -0x14(%rbp)
jmp 0x7d7f
movl $0xf, -0x14(%rbp)
jmp 0x7d81
jmp 0x7d83
jmp 0x7d85
movq -0x10(%rbp), %rax
movb $0x0, (%rax)
movq -0x8(%rbp), %rdi
callq 0x2570
movl %eax, %esi
leaq 0x28bf(%rip), %rdi      # 0xa65d
callq 0x1080
cmpq $0x0, %rax
je 0x7db4
movq -0x8(%rbp), %rdi
callq 0x2370
jmp 0x7d8c
movq -0x8(%rbp), %rdi
callq 0x2570
cmpl $0xa, %eax
jne 0x7dcb
movq -0x8(%rbp), %rdi
callq 0x2370
movl -0x14(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)