// File: /workspace/github_c_makefile_star2_O0/pedro-onate[P]eva/eva.c
// Function: es_parse
static es_val_t es_parse(es_ctx_t* ctx, es_val_t port)
{
  char buf[1024];
  switch(next(port, buf)) {
  case tk_eof:
    return es_eof_obj;
  case tk_str:
    return es_make_string(ctx, buf);
  case tk_sym:
    return es_symbol_intern(ctx, buf);
  case tk_int:
    return es_make_fixnum(atoi(buf));
  case tk_tbool:
    return es_true;
  case tk_fbool:
    return es_false;
  case tk_char:
    return es_make_char_cstr(buf);
  case tk_quot:
    return es_make_list(ctx, symbol_quote, es_parse(ctx, port), NULL);
  case tk_qquot:
    return es_make_list(ctx, symbol_quasiquote, es_parse(ctx, port), NULL);
  case tk_unquot:
    return es_make_list(ctx, symbol_unquote, es_parse(ctx, port), NULL);
  case tk_unquot_splice:
    return es_make_list(ctx, symbol_unquotesplicing, es_parse(ctx, port), NULL);
  case tk_hlpar: {
      es_val_t lst = es_nil;
      while(peek(port, buf) != tk_rpar) {
        lst = es_cons(ctx, es_parse(ctx, port), lst);
      }
      next(port, buf);
      return es_vector_from_list(ctx, reverse(lst));
    }
  case tk_lpar:
    return parse_list(ctx, port);
  default:
    return es_make_error(ctx, "Invalid syntax");
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x460, %rsp            # imm = 0x460
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x7a90
movl %eax, %ecx
movq %rcx, -0x430(%rbp)
subl $0xe, %eax
ja 0x2348
movq -0x430(%rbp), %rax
leaq 0x7efd(%rip), %rcx      # 0xa020
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq $0x3b, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x2c90
movq %rax, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x2ea0
movq %rax, -0x8(%rbp)
jmp 0x235c
leaq -0x420(%rbp), %rdi
callq 0x1130
movl %eax, %edi
callq 0x1c70
movq %rax, -0x8(%rbp)
jmp 0x235c
movq $0xc, -0x8(%rbp)
jmp 0x235c
movq $0x4, -0x8(%rbp)
jmp 0x235c
leaq -0x420(%rbp), %rdi
callq 0x1ab0
movq %rax, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rax
movq %rax, -0x438(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x20e0
movq -0x438(%rbp), %rdi
movq %rax, %rdx
movl $0x2a, %esi
xorl %eax, %eax
movl %eax, %ecx
movb $0x0, %al
callq 0x4420
movq %rax, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rax
movq %rax, -0x440(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x20e0
movq -0x440(%rbp), %rdi
movq %rax, %rdx
movl $0x32, %esi
xorl %eax, %eax
movl %eax, %ecx
movb $0x0, %al
callq 0x4420
movq %rax, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rax
movq %rax, -0x448(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x20e0
movq -0x448(%rbp), %rdi
movq %rax, %rdx
movl $0x3a, %esi
xorl %eax, %eax
movl %eax, %ecx
movb $0x0, %al
callq 0x4420
movq %rax, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rax
movq %rax, -0x450(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x20e0
movq -0x450(%rbp), %rdi
movq %rax, %rdx
movl $0x42, %esi
xorl %eax, %eax
movl %eax, %ecx
movb $0x0, %al
callq 0x4420
movq %rax, -0x8(%rbp)
jmp 0x235c
movq $0x3, -0x428(%rbp)
movq -0x18(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x7de0
cmpl $0x3, %eax
je 0x22f9
movq -0x10(%rbp), %rax
movq %rax, -0x458(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x20e0
movq -0x458(%rbp), %rdi
movq %rax, %rsi
movq -0x428(%rbp), %rdx
callq 0x1e10
movq %rax, -0x428(%rbp)
jmp 0x22ad
movq -0x18(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x7a90
movq -0x10(%rbp), %rax
movq %rax, -0x460(%rbp)
movq -0x428(%rbp), %rdi
callq 0x7e20
movq -0x460(%rbp), %rdi
movq %rax, %rsi
callq 0x32a0
movq %rax, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x7e90
movq %rax, -0x8(%rbp)
jmp 0x235c
movq -0x10(%rbp), %rdi
leaq 0x82f0(%rip), %rsi      # 0xa643
callq 0x1b90
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x460, %rsp            # imm = 0x460
popq %rbp
retq
nopl (%rax)