// File: /workspace/github_c_makefile_star2_O0/takoeight0821[P]hoc_nyan/src/parse.c
// Function: term
static Node *term() {
  if (eq_reserved(peek(0), "(") && !is_typename(peek(1))) {
    consume();
    Node *node = expr();
    if (!match(")")) {
      parse_error(")", peek(0));
    }
    return node;
  } else if (peek_tag(0) == TIDENT && !eq_reserved(peek(1), "(")) {
    Node *node = variable();
    return node;
  } else if (peek_tag(0) == TIDENT) {
    Node *node = new_node(NCALL, peek(0));
    node->name = peek(0)->ident;
    node->args = new_vec();
    consume();
    if (!match("(")) {
      parse_error("(", peek(0));
    }
    if (match(")")) {
      return node;
    }

    for (;;) {
      vec_push(node->args, assign());
      if (match(")")) {
        return node;
      } else if (!match(",")) {
        parse_error(",", peek(0));
      }
    }
  } else if (peek_tag(0) == TSTRING) {
    return string();
  } else {
    return integer();
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
xorl %eax, %eax
movl %eax, %edi
callq 0xa990
movq %rax, %rdi
leaq 0x77e3(%rip), %rsi      # 0x139ce
callq 0xfe80
testb $0x1, %al
jne 0xc1f6
jmp 0xc252
movl $0x1, %edi
callq 0xa990
movq %rax, %rdi
callq 0xbb60
cmpl $0x0, %eax
jne 0xc252
callq 0xa9e0
callq 0xc7b0
movq %rax, -0x10(%rbp)
leaq 0x70e0(%rip), %rdi      # 0x13302
callq 0xa330
cmpq $0x0, %rax
jne 0xc245
xorl %eax, %eax
movl %eax, %edi
callq 0xa990
movq %rax, %rsi
leaq 0x70c2(%rip), %rdi      # 0x13302
callq 0xaa00
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xc3bf
xorl %eax, %eax
movl %eax, %edi
callq 0xa970
cmpl $0x2, %eax
jne 0xc293
movl $0x1, %edi
callq 0xa990
movq %rax, %rdi
leaq 0x775a(%rip), %rsi      # 0x139ce
callq 0xfe80
testb $0x1, %al
jne 0xc293
callq 0xc3d0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xc3bf
xorl %eax, %eax
movl %eax, %edi
callq 0xa970
cmpl $0x2, %eax
jne 0xc39d
xorl %eax, %eax
movl %eax, %edi
callq 0xa990
movq %rax, %rsi
movl $0x18, %edi
callq 0x9d10
movq %rax, -0x20(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0xa990
movq 0x10(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x40(%rax)
movb $0x0, %al
callq 0x2280
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x50(%rax)
callq 0xa9e0
leaq 0x76dc(%rip), %rdi      # 0x139ce
callq 0xa330
cmpq $0x0, %rax
jne 0xc315
xorl %eax, %eax
movl %eax, %edi
callq 0xa990
movq %rax, %rsi
leaq 0x76be(%rip), %rdi      # 0x139ce
callq 0xaa00
leaq 0x6fe6(%rip), %rdi      # 0x13302
callq 0xa330
cmpq $0x0, %rax
je 0xc334
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xc3bf
jmp 0xc336
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
callq 0xb240
movq -0x28(%rbp), %rdi
movq %rax, %rsi
callq 0x22e0
leaq 0x6fa8(%rip), %rdi      # 0x13302
callq 0xa330
cmpq $0x0, %rax
je 0xc36f
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xc3bf
leaq 0x5cd8(%rip), %rdi      # 0x1204e
callq 0xa330
cmpq $0x0, %rax
jne 0xc399
xorl %eax, %eax
movl %eax, %edi
callq 0xa990
movq %rax, %rsi
leaq 0x5cba(%rip), %rdi      # 0x1204e
callq 0xaa00
jmp 0xc39b
jmp 0xc336
xorl %eax, %eax
movl %eax, %edi
callq 0xa970
cmpl $0x1, %eax
jne 0xc3b6
callq 0xc620
movq %rax, -0x8(%rbp)
jmp 0xc3bf
callq 0xc750
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)