// File: /workspace/github_c_makefile_star2_O0/goodpaul6[P]generic/script.c
// Function: parse_factor
static expr_t* parse_factor(script_t* script)
{
	switch(g_cur_tok)
	{
		case TOK_ATOMIC: return parse_atomic(script);
		case TOK_DIRECTIVE: return parse_directive(script);
		case TOK_NULL: return parse_null(script);
		case TOK_TRUE:
		case TOK_FALSE: return parse_bool(script);
		case TOK_CHAR: return parse_char(script);
		case TOK_VAR: return parse_var(script);
		case TOK_IDENT: return parse_ident(script);
		case TOK_OPENPAREN: return parse_paren(script);
		case TOK_OPENCURLY: return parse_block(script);
		case TOK_IF: return parse_if(script);
		case TOK_WHILE: return parse_while(script);
		case TOK_FOR: return parse_for(script);
		case TOK_FUNC: return parse_func(script);
		case TOK_NUMBER: return parse_number(script);
		case TOK_STRING: return parse_string(script);
		case TOK_RETURN: return parse_return(script);
		case TOK_WRITE: return parse_write(script);
		case TOK_OPENSQUARE: return parse_array_literal(script);
		case TOK_EXTERN: return parse_extern(script);
		case TOK_LEN: return parse_len(script);
		case TOK_UNION:
		case TOK_STRUCT: return parse_struct(script);

		default:
			error_exit_p("Unexpected token '%s'\n", g_token_names[g_cur_tok]);
	}
	
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movl 0xc9ae(%rip), %eax      # 0x1a5b0
movq %rax, -0x18(%rbp)
subq $0x22, %rax
ja 0xdd8c
movq -0x18(%rbp), %rax
leaq 0x5915(%rip), %rcx      # 0x13530
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
callq 0xddc0
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xde00
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xdf10
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xdf40
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xdf90
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xdfd0
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe0c0
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe120
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe180
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe210
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe2a0
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe300
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe3d0
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe5c0
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe620
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe670
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe700
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe740
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe850
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe8f0
movq %rax, -0x8(%rbp)
jmp 0xddb4
movq -0x10(%rbp), %rdi
callq 0xe930
movq %rax, -0x8(%rbp)
jmp 0xddb4
movslq 0xc81d(%rip), %rcx      # 0x1a5b0
leaq 0xc486(%rip), %rax      # 0x1a220
movq (%rax,%rcx,8), %rsi
leaq 0x7278(%rip), %rdi      # 0x1501d
movb $0x0, %al
callq 0xa0e0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nop