// File: /workspace/github_c_makefile_star2_O0/georgeweigt[P]sassafras/sassafras.c
// Function: proc_anova_compute_G
int
proc_anova_compute_G(void)
{
	int d, i, j, k;
	double m, max, min, t;

	min = 0;
	max = 0;

	// G = I

	for (i = 0; i < npar; i++)
		for (j = 0; j < npar; j++)
			if (i == j)
				G(i, j) = 1;
			else
				G(i, j) = 0;

	// T = X'X

	for (i = 0; i < npar; i++)
		for (j = 0; j < npar; j++) {
			t = 0;
			for (k = 0; k < nobs; k++)
				t += X(k, i) * X(k, j);
			T(i, j) = t;
		}

	// G = inv T

	for (d = 0; d < npar; d++) {

		// find the best pivot row

		k = d;
		for (i = d + 1; i < npar; i++)
			if (fabs(T(i, d)) > fabs(T(k, d)))
				k = i;

		// exchange rows if necessary

		if (k != d) {
			for (j = d; j < npar; j++) { // skip zeroes, start at d
				t = T(d, j);
				T(d, j) = T(k, j);
				T(k, j) = t;
			}
			for (j = 0; j < npar; j++) {
				t = G(d, j);
				G(d, j) = G(k, j);
				G(k, j) = t;
			}
		}

		// multiply the pivot row by 1 / pivot

		m = T(d, d);

		if (m == 0)
			return -1;

		if (fabs(m) > max)
			max = fabs(m);

		m = 1 / m;

		if (fabs(m) > min)
			min = fabs(m);

		for (j = d; j < npar; j++) // skip zeroes, start at d
			T(d, j) *= m;
		for (j = 0; j < npar; j++)
			G(d, j) *= m;

		// clear out column below d

		for (i = d + 1; i < npar; i++) {
			m = -T(i, d);
			for (j = d; j < npar; j++) // skip zeroes, start at d
				T(i, j) += m * T(d, j);
			for (j = 0; j < npar; j++)
				G(i, j) += m * G(d, j);
		}
	}

	// clear out columns above diagonal

	for (d = npar - 1; d > 0; d--)
		for (i = 0; i < d; i++) {
			m = -T(i, d);
			for (j = 0; j < npar; j++)
				G(i, j) += m * G(d, j);
		}

	// check ratio of biggest divisor to smallest divisor

	// domain is [1, inf)

	// printf("cond = %g\n", max * min);

	if (max * min < 1e10)
		return 0;
	else
		return -1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x28(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl 0xf734(%rip), %eax      # 0x18a38
jge 0x9396
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf71e(%rip), %eax      # 0x18a38
jge 0x9386
movl -0xc(%rbp), %eax
cmpl -0x10(%rbp), %eax
jne 0x9352
movq 0xf78d(%rip), %rax      # 0x18ab8
movl -0xc(%rbp), %ecx
imull 0xf7ab(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd 0x5e95(%rip), %xmm0     # 0xf1e0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x9379
movq 0xf75f(%rip), %rax      # 0x18ab8
movl -0xc(%rbp), %ecx
imull 0xf77d(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x937b
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x9311
jmp 0x9388
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x92fb
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl 0xf692(%rip), %eax      # 0x18a38
jge 0x9488
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf67c(%rip), %eax      # 0x18a38
jge 0x9478
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0xf65a(%rip), %eax      # 0x18a34
jge 0x9441
movq 0xf6e5(%rip), %rax      # 0x18ac8
movl -0x14(%rbp), %ecx
imull 0xf6f3(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0xc(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0xf6c1(%rip), %rax      # 0x18ac8
movl -0x14(%rbp), %ecx
imull 0xf6cf(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x93d1
movsd -0x38(%rbp), %xmm0
movq 0xf673(%rip), %rax      # 0x18ac0
movl -0xc(%rbp), %ecx
imull 0xf689(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x93b3
jmp 0x947a
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x939d
movl $0x0, -0x8(%rbp)
movl -0x8(%rbp), %eax
cmpl 0xf5a0(%rip), %eax      # 0x18a38
jge 0x9964
movl -0x8(%rbp), %eax
movl %eax, -0x14(%rbp)
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl 0xf582(%rip), %eax      # 0x18a38
jge 0x9532
movq 0xf601(%rip), %rax      # 0x18ac0
movl -0xc(%rbp), %ecx
imull 0xf617(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movaps 0x5d6d(%rip), %xmm1     # 0xf250
pand %xmm1, %xmm0
movq 0xf5d2(%rip), %rax      # 0x18ac0
movl -0x14(%rbp), %ecx
imull 0xf5e8(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movaps 0x5d3e(%rip), %xmm2     # 0xf250
pand %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x9522
movl -0xc(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x9524
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x94ad
movl -0x14(%rbp), %eax
cmpl -0x8(%rbp), %eax
je 0x96bb
movl -0x8(%rbp), %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf4eb(%rip), %eax      # 0x18a38
jge 0x95fb
movq 0xf566(%rip), %rax      # 0x18ac0
movl -0x8(%rbp), %ecx
imull 0xf57c(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x38(%rbp)
movq 0xf53d(%rip), %rax      # 0x18ac0
movl -0x14(%rbp), %ecx
imull 0xf553(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0xf519(%rip), %rax      # 0x18ac0
movl -0x8(%rbp), %ecx
imull 0xf52f(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x38(%rbp), %xmm0
movq 0xf4f0(%rip), %rax      # 0x18ac0
movl -0x14(%rbp), %ecx
imull 0xf506(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x9544
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf42d(%rip), %eax      # 0x18a38
jge 0x96b9
movq 0xf4a0(%rip), %rax      # 0x18ab8
movl -0x8(%rbp), %ecx
imull 0xf4be(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x38(%rbp)
movq 0xf477(%rip), %rax      # 0x18ab8
movl -0x14(%rbp), %ecx
imull 0xf495(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0xf453(%rip), %rax      # 0x18ab8
movl -0x8(%rbp), %ecx
imull 0xf471(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x38(%rbp), %xmm0
movq 0xf42a(%rip), %rax      # 0x18ab8
movl -0x14(%rbp), %ecx
imull 0xf448(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x9602
jmp 0x96bb
movq 0xf3fe(%rip), %rax      # 0x18ac0
movl -0x8(%rbp), %ecx
imull 0xf414(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x9700
jp 0x9700
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x9a8c
movsd -0x20(%rbp), %xmm0
movaps 0x5b44(%rip), %xmm1     # 0xf250
pand %xmm1, %xmm0
ucomisd -0x28(%rbp), %xmm0
jbe 0x972c
movsd -0x20(%rbp), %xmm0
movaps 0x5b2d(%rip), %xmm1     # 0xf250
pand %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd 0x5aac(%rip), %xmm0     # 0xf1e0
divsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movaps 0x5b06(%rip), %xmm1     # 0xf250
pand %xmm1, %xmm0
ucomisd -0x30(%rbp), %xmm0
jbe 0x976a
movsd -0x20(%rbp), %xmm0
movaps 0x5aef(%rip), %xmm1     # 0xf250
pand %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf2bf(%rip), %eax      # 0x18a38
jge 0x97b4
movsd -0x20(%rbp), %xmm0
movq 0xf339(%rip), %rax      # 0x18ac0
movl -0x8(%rbp), %ecx
imull 0xf34f(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x9770
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf274(%rip), %eax      # 0x18a38
jge 0x97ff
movsd -0x20(%rbp), %xmm0
movq 0xf2e6(%rip), %rax      # 0x18ab8
movl -0x8(%rbp), %ecx
imull 0xf304(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x97bb
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl 0xf227(%rip), %eax      # 0x18a38
jge 0x9954
movq 0xf2a2(%rip), %rax      # 0x18ac0
movl -0xc(%rbp), %ecx
imull 0xf2b8(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf1d2(%rip), %eax      # 0x18a38
jge 0x98cd
movsd -0x20(%rbp), %xmm0
movq 0xf24c(%rip), %rax      # 0x18ac0
movl -0x8(%rbp), %ecx
imull 0xf262(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0xf228(%rip), %rax      # 0x18ac0
movl -0xc(%rbp), %ecx
imull 0xf23e(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x985d
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf15b(%rip), %eax      # 0x18a38
jge 0x9944
movsd -0x20(%rbp), %xmm0
movq 0xf1cd(%rip), %rax      # 0x18ab8
movl -0x8(%rbp), %ecx
imull 0xf1eb(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0xf1a9(%rip), %rax      # 0x18ab8
movl -0xc(%rbp), %ecx
imull 0xf1c7(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x98d4
jmp 0x9946
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x9808
jmp 0x9956
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x948f
movl 0xf0ce(%rip), %eax      # 0x18a38
subl $0x1, %eax
movl %eax, -0x8(%rbp)
cmpl $0x0, -0x8(%rbp)
jle 0x9a64
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x9a54
movq 0xf12c(%rip), %rax      # 0x18ac0
movl -0xc(%rbp), %ecx
imull 0xf142(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x8(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x20(%rbp)
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0xf05b(%rip), %eax      # 0x18a38
jge 0x9a44
movsd -0x20(%rbp), %xmm0
movq 0xf0cd(%rip), %rax      # 0x18ab8
movl -0x8(%rbp), %ecx
imull 0xf0eb(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0xf0a9(%rip), %rax      # 0x18ab8
movl -0xc(%rbp), %ecx
imull 0xf0c7(%rip), %ecx      # 0x18ae0
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x99d4
jmp 0x9a46
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x9981
jmp 0x9a56
movl -0x8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x9970
movsd -0x28(%rbp), %xmm1
mulsd -0x30(%rbp), %xmm1
movsd 0x57a2(%rip), %xmm0     # 0xf218
ucomisd %xmm1, %xmm0
jbe 0x9a85
movl $0x0, -0x4(%rbp)
jmp 0x9a8c
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)