// File: /workspace/github_c_makefile_star2_O0/georgeweigt[P]sassafras/sassafras.c
// Function: proc_anova_parse_explanatory_variable
void
proc_anova_parse_explanatory_variable(void)
{
	int n = 1;

	xx[0] = proc_anova_get_var_index();

	scan();

	switch (token) {

	case '*': // name * name ...

		do {
			scan();
			if (token != NAME)
				expected("variable name");
			if (n == MAXVAR)
				stop("Too many interaction terms");
			xx[n++] = proc_anova_get_var_index();
			scan();
		} while (token == '*');
		proc_anova_add_interaction(n);
		break;

	case '|': // name | name ...

		do {
			scan();
			if (token != NAME)
				expected("variable name");
			if (n == MAXVAR)
				stop("Too many interaction terms");
			xx[n++] = proc_anova_get_var_index();
			scan();
		} while (token == '|');
		proc_anova_add_factorial(n);
		break;

	case '(': // name(name name ...)

		scan();
		while (token == NAME) {
			if (n == MAXVAR)
				stop("Too many interaction terms");
			xx[n++] = proc_anova_get_var_index();
			scan();
		};
		if (token != ')')
			expected("right parenthesis ')'");
		scan();
		proc_anova_add_nested(n);
		break;

	default:
		if (nx == MAXVAR)
			stop("Too many explanatory variables");
		xtab[nx++] = xx[0];
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x1, -0x4(%rbp)
callq 0x7850
movl %eax, 0x10f16(%rip)     # 0x18580
callq 0x2d30
movl 0xc20f(%rip), %eax      # 0x13884
movl %eax, -0x8(%rbp)
subl $0x28, %eax
je 0x7770
jmp 0x7683
movl -0x8(%rbp), %eax
subl $0x2a, %eax
je 0x769a
jmp 0x768d
movl -0x8(%rbp), %eax
subl $0x7c, %eax
je 0x7705
jmp 0x77dd
jmp 0x769c
callq 0x2d30
cmpl $0x3e9, 0xc1d9(%rip)    # imm = 0x3E9
je 0x76b9
leaq 0x7f3d(%rip), %rdi      # 0xf5f1
callq 0x2670
cmpl $0x64, -0x4(%rbp)
jne 0x76cb
leaq 0x7f7c(%rip), %rdi      # 0xf642
callq 0x2790
callq 0x7850
movl %eax, %edx
movl -0x4(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x4(%rbp)
movslq %eax, %rcx
leaq 0x10e99(%rip), %rax     # 0x18580
movl %edx, (%rax,%rcx,4)
callq 0x2d30
cmpl $0x2a, 0xc18e(%rip)     # 0x13884
je 0x769c
movl -0x4(%rbp), %edi
callq 0x7940
jmp 0x7816
jmp 0x7707
callq 0x2d30
cmpl $0x3e9, 0xc16e(%rip)    # imm = 0x3E9
je 0x7724
leaq 0x7ed2(%rip), %rdi      # 0xf5f1
callq 0x2670
cmpl $0x64, -0x4(%rbp)
jne 0x7736
leaq 0x7f11(%rip), %rdi      # 0xf642
callq 0x2790
callq 0x7850
movl %eax, %edx
movl -0x4(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x4(%rbp)
movslq %eax, %rcx
leaq 0x10e2e(%rip), %rax     # 0x18580
movl %edx, (%rax,%rcx,4)
callq 0x2d30
cmpl $0x7c, 0xc123(%rip)     # 0x13884
je 0x7707
movl -0x4(%rbp), %edi
callq 0x7d20
jmp 0x7816
callq 0x2d30
cmpl $0x3e9, 0xc105(%rip)    # imm = 0x3E9
jne 0x77b9
cmpl $0x64, -0x4(%rbp)
jne 0x7793
leaq 0x7eb4(%rip), %rdi      # 0xf642
callq 0x2790
callq 0x7850
movl %eax, %edx
movl -0x4(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x4(%rbp)
movslq %eax, %rcx
leaq 0x10dd1(%rip), %rax     # 0x18580
movl %edx, (%rax,%rcx,4)
callq 0x2d30
jmp 0x7775
cmpl $0x29, 0xc0c4(%rip)     # 0x13884
je 0x77ce
leaq 0x7e94(%rip), %rdi      # 0xf65d
callq 0x2670
callq 0x2d30
movl -0x4(%rbp), %edi
callq 0x7d30
jmp 0x7816
cmpl $0x64, 0x10bf4(%rip)    # 0x183d8
jne 0x77f2
leaq 0x7e86(%rip), %rdi      # 0xf673
callq 0x2790
movl 0x10d88(%rip), %edx     # 0x18580
movl 0x10bda(%rip), %eax     # 0x183d8
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x10bcf(%rip)     # 0x183d8
movslq %eax, %rcx
leaq 0x10efd(%rip), %rax     # 0x18710
movl %edx, (%rax,%rcx,4)
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)