// File: /workspace/github_cpp_makefile_star2_O2/kebwi[P]Trifid/src/FFT/fftlib.cpp
// Function: bfstages(double*, long, double*, long, long, long)
inline void bfstages(Float_t *ioptr, long M, Float_t *Utbl, long Ustride, long NDiffU, long StageCnt){
/***   RADIX 8 Stages	***/
unsigned long	pos;
unsigned long	posi;
unsigned long	pinc;
unsigned long	pnext;
unsigned long 	NSameU;
unsigned long 	Uinc;
unsigned long 	Uinc2;
unsigned long 	Uinc4;
unsigned long 	DiffUCnt;
unsigned long 	SameUCnt;
unsigned long 	U2toU3;

Float_t	*pstrt;
Float_t 	*p0r, *p1r, *p2r, *p3r;
Float_t 	*u0r, *u0i, *u1r, *u1i, *u2r, *u2i;

Float_t w0r, w0i, w1r, w1i, w2r, w2i, w3r, w3i;
Float_t f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i;
Float_t f4r, f4i, f5r, f5i, f6r, f6i, f7r, f7i;
Float_t t0r, t0i, t1r, t1i;
const Float_t Two = 2.0;

pinc = NDiffU * 2;		// 2 floats per complex
pnext =  pinc * 8;
pos = pinc * 4;
posi =  pos + 1;
NSameU = POW2(M) / 8 /NDiffU;	// 8 pts per butterfly
Uinc = NSameU * Ustride;
Uinc2 = Uinc * 2;
Uinc4 = Uinc * 4;
U2toU3 = (POW2(M) / 8)*Ustride;
for (; StageCnt > 0 ; StageCnt--){

	u0r = &Utbl[0];
	u0i = &Utbl[POW2(M-2)*Ustride];
	u1r = u0r;
	u1i = u0i;
	u2r = u0r;
	u2i = u0i;

	w0r =  *u0r;
	w0i =  *u0i;
	w1r =  *u1r;
	w1i =  *u1i;
	w2r =  *u2r;
	w2i =  *u2i;
	w3r =  *(u2r+U2toU3);
	w3i =  *(u2i-U2toU3);

	pstrt = ioptr;

	p0r = pstrt;
	p1r = pstrt+pinc;
	p2r = p1r+pinc;
	p3r = p2r+pinc;

			/* Butterflys		*/
			/*
			f0	-	-	t0	-	-	f0	-	-	f0
			f1	- w0-	f1	-	-	f1	-	-	f1
			f2	-	-	f2	- w1-	f2	-	-	f4
			f3	- w0-	t1	- iw1-	f3	-	-	f5

			f4	-	-	t0	-	-	f4	- w2-	t0
			f5	- w0-	f5	-	-	f5	- w3-	t1
			f6	-	-	f6	- w1-	f6	- iw2-	f6
			f7	- w0-	t1	- iw1-	f7	- iw3-	f7
			*/

	for (DiffUCnt = NDiffU; DiffUCnt > 0 ; DiffUCnt--){
		f0r = *p0r;
		f0i = *(p0r + 1);
		f1r = *p1r;
		f1i = *(p1r + 1);
		for (SameUCnt = NSameU-1; SameUCnt > 0 ; SameUCnt--){
			f2r = *p2r;
			f2i = *(p2r + 1);
			f3r = *p3r;
			f3i = *(p3r + 1);

			t0r = f0r + f1r * w0r + f1i * w0i;
			t0i = f0i - f1r * w0i + f1i * w0r;
			f1r = f0r * Two - t0r;
			f1i = f0i * Two - t0i;

			f4r = *(p0r + pos);
			f4i = *(p0r + posi);
			f5r = *(p1r + pos);
			f5i = *(p1r + posi);

			f6r = *(p2r + pos);
			f6i = *(p2r + posi);
			f7r = *(p3r + pos);
			f7i = *(p3r + posi);

			t1r = f2r - f3r * w0r - f3i * w0i;
			t1i = f2i + f3r * w0i - f3i * w0r;
			f2r = f2r * Two - t1r;
			f2i = f2i * Two - t1i;

			f0r = t0r + f2r * w1r + f2i * w1i;
			f0i = t0i - f2r * w1i + f2i * w1r;
			f2r = t0r * Two - f0r;
			f2i = t0i * Two - f0i;

			f3r = f1r + t1r * w1i - t1i * w1r;
			f3i = f1i + t1r * w1r + t1i * w1i;
			f1r = f1r * Two - f3r;
			f1i = f1i * Two - f3i;


			t0r = f4r + f5r * w0r + f5i * w0i;
			t0i = f4i - f5r * w0i + f5i * w0r;
			f5r = f4r * Two - t0r;
			f5i = f4i * Two - t0i;

			t1r = f6r - f7r * w0r - f7i * w0i;
			t1i = f6i + f7r * w0i - f7i * w0r;
			f6r = f6r * Two - t1r;
			f6i = f6i * Two - t1i;

			f4r = t0r + f6r * w1r + f6i * w1i;
			f4i = t0i - f6r * w1i + f6i * w1r;
			f6r = t0r * Two - f4r;
			f6i = t0i * Two - f4i;

			f7r = f5r + t1r * w1i - t1i * w1r;
			f7i = f5i + t1r * w1r + t1i * w1i;
			f5r = f5r * Two - f7r;
			f5i = f5i * Two - f7i;

			t0r = f0r - f4r * w2r - f4i * w2i;
			t0i = f0i + f4r * w2i - f4i * w2r;
			f0r = f0r * Two - t0r;
			f0i = f0i * Two - t0i;

			t1r = f1r - f5r * w3r - f5i * w3i;
			t1i = f1i + f5r * w3i - f5i * w3r;
			f1r = f1r * Two - t1r;
			f1i = f1i * Two - t1i;

			*(p0r + pos) = t0r;
			*(p1r + pos) = t1r;
			*(p0r + posi) = t0i;
			*(p1r + posi) = t1i;
			*p0r = f0r;
			*p1r = f1r;
			*(p0r + 1) = f0i;
			*(p1r + 1) = f1i;

			p0r += pnext;
			f0r = *p0r;
			f0i = *(p0r + 1);

			p1r += pnext;

			f1r = *p1r;
			f1i = *(p1r + 1);

			f4r = f2r - f6r * w2i + f6i * w2r;
			f4i = f2i - f6r * w2r - f6i * w2i;
			f6r = f2r * Two - f4r;
			f6i = f2i * Two - f4i;

			f5r = f3r - f7r * w3i + f7i * w3r;
			f5i = f3i - f7r * w3r - f7i * w3i;
			f7r = f3r * Two - f5r;
			f7i = f3i * Two - f5i;

			*p2r = f4r;
			*p3r = f5r;
			*(p2r + 1) = f4i;
			*(p3r + 1) = f5i;
			*(p2r + pos) = f6r;
			*(p3r + pos) = f7r;
			*(p2r + posi) = f6i;
			*(p3r + posi) = f7i;

			p2r += pnext;
			p3r += pnext;

		}
		
		f2r = *p2r;
		f2i = *(p2r + 1);
		f3r = *p3r;
		f3i = *(p3r + 1);

		t0r = f0r + f1r * w0r + f1i * w0i;
		t0i = f0i - f1r * w0i + f1i * w0r;
		f1r = f0r * Two - t0r;
		f1i = f0i * Two - t0i;

		f4r = *(p0r + pos);
		f4i = *(p0r + posi);
		f5r = *(p1r + pos);
		f5i = *(p1r + posi);

		f6r = *(p2r + pos);
		f6i = *(p2r + posi);
		f7r = *(p3r + pos);
		f7i = *(p3r + posi);

		t1r = f2r - f3r * w0r - f3i * w0i;
		t1i = f2i + f3r * w0i - f3i * w0r;
		f2r = f2r * Two - t1r;
		f2i = f2i * Two - t1i;

		f0r = t0r + f2r * w1r + f2i * w1i;
		f0i = t0i - f2r * w1i + f2i * w1r;
		f2r = t0r * Two - f0r;
		f2i = t0i * Two - f0i;

		f3r = f1r + t1r * w1i - t1i * w1r;
		f3i = f1i + t1r * w1r + t1i * w1i;
		f1r = f1r * Two - f3r;
		f1i = f1i * Two - f3i;

		if (DiffUCnt == NDiffU/2)
			Uinc4 = -Uinc4;

		u0r += Uinc4;
		u0i -= Uinc4;
		u1r += Uinc2;
		u1i -= Uinc2;
		u2r += Uinc;
		u2i -= Uinc;

		pstrt += 2;

		t0r = f4r + f5r * w0r + f5i * w0i;
		t0i = f4i - f5r * w0i + f5i * w0r;
		f5r = f4r * Two - t0r;
		f5i = f4i * Two - t0i;

		t1r = f6r - f7r * w0r - f7i * w0i;
		t1i = f6i + f7r * w0i - f7i * w0r;
		f6r = f6r * Two - t1r;
		f6i = f6i * Two - t1i;

		f4r = t0r + f6r * w1r + f6i * w1i;
		f4i = t0i - f6r * w1i + f6i * w1r;
		f6r = t0r * Two - f4r;
		f6i = t0i * Two - f4i;

		f7r = f5r + t1r * w1i - t1i * w1r;
		f7i = f5i + t1r * w1r + t1i * w1i;
		f5r = f5r * Two - f7r;
		f5i = f5i * Two - f7i;

		w0r = *u0r;
		w0i =  *u0i;
		w1r =  *u1r;
		w1i =  *u1i;

		if (DiffUCnt <= NDiffU/2)
			w0r = -w0r;

		t0r = f0r - f4r * w2r - f4i * w2i;
		t0i = f0i + f4r * w2i - f4i * w2r;
		f0r = f0r * Two - t0r;
		f0i = f0i * Two - t0i;

		f4r = f2r - f6r * w2i + f6i * w2r;
		f4i = f2i - f6r * w2r - f6i * w2i;
		f6r = f2r * Two - f4r;
		f6i = f2i * Two - f4i;

		*(p0r + pos) = t0r;
		*p2r = f4r;
		*(p0r + posi) = t0i;
		*(p2r + 1) = f4i;
		w2r =  *u2r;
		w2i =  *u2i;
		*p0r = f0r;
		*(p2r + pos) = f6r;
		*(p0r + 1) = f0i;
		*(p2r + posi) = f6i;

		p0r = pstrt;
		p2r = pstrt + pinc + pinc;	

		t1r = f1r - f5r * w3r - f5i * w3i;
		t1i = f1i + f5r * w3i - f5i * w3r;
		f1r = f1r * Two - t1r;
		f1i = f1i * Two - t1i;

		f5r = f3r - f7r * w3i + f7i * w3r;
		f5i = f3i - f7r * w3r - f7i * w3i;
		f7r = f3r * Two - f5r;
		f7i = f3i * Two - f5i;

		*(p1r + pos) = t1r;
		*p3r = f5r;
		*(p1r + posi) = t1i;
		*(p3r + 1) = f5i;
		w3r =  *(u2r+U2toU3);
		w3i =  *(u2i-U2toU3);
		*p1r = f1r;
		*(p3r + pos) = f7r;
		*(p1r + 1) = f1i;
		*(p3r + posi) = f7i;

		p1r = pstrt + pinc;
		p3r = p2r + pinc;	
	}
	NSameU /= 8;
	Uinc /= 8;
	Uinc2 /= 8;
	Uinc4 = Uinc * 4;
	NDiffU *= 8;
	pinc *= 8;
	pnext *= 8;
	pos *= 8;
	posi =  pos + 1;
}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rcx, %rbx
movq %rdx, %r10
movq %rsi, %rcx
movq %rdi, 0x68(%rsp)
leaq (%r8,%r8), %rax
movq %rax, -0x20(%rsp)
movq %r8, %r14
movabsq $0x1, %rsi
shlq %cl, %rsi
shrq $0x3, %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %r8
movq %rax, %r11
imulq %rbx, %rax
imulq %rbx, %rsi
addl $-0x2, %ecx
shlq %cl, %rbx
shlq $0x4, %r14
movq %rax, -0x28(%rsp)
addq %rax, %rax
movq %rax, -0x30(%rsp)
movq %r10, 0x70(%rsp)
leaq (%r10,%rbx,8), %rax
movq %rax, 0x60(%rsp)
movq %rsi, 0x30(%rsp)
negq %rsi
movq %rsi, 0x28(%rsp)
movq %r8, %r13
testq %r9, %r9
jle 0x1ed69
movq %r9, 0x90(%rsp)
leaq (,%r8,8), %rax
movq %rax, 0x78(%rsp)
movq -0x28(%rsp), %rcx
leaq (,%rcx,4), %rax
movq %rax, -0x50(%rsp)
movq 0x70(%rsp), %r9
movsd (%r9), %xmm11
movq 0x60(%rsp), %rdx
movsd (%rdx), %xmm1
movq 0x30(%rsp), %rax
movsd (%r9,%rax,8), %xmm0
movsd %xmm0, -0x60(%rsp)
movq 0x28(%rsp), %rax
movsd (%rdx,%rax,8), %xmm0
movq %rdx, %r12
movsd %xmm0, (%rsp)
movq %r13, %rax
cqto
movabsq $0x2, %rsi
idivq %rsi
movq %rax, 0xb0(%rsp)
movq -0x30(%rsp), %rax
negq %rax
movq %rax, 0xa8(%rsp)
negq %rcx
movq %rcx, 0xa0(%rsp)
movq %r11, 0x88(%rsp)
leaq -0x1(%r11), %rax
movq %rax, 0x98(%rsp)
shlq $0x3, %r14
shlq $0x6, %r8
movq -0x20(%rsp), %rax
leaq (,%rax,8), %rdx
leaq (%r8,%rax,8), %r10
addq $0x8, %r10
leaq (%r14,%rax,8), %rbx
addq $0x8, %rbx
movq %rax, %r15
shlq $0x4, %r15
leaq (%r8,%r15), %rbp
addq $0x8, %rbp
imulq $0x18, %rax, %r11
leaq (%r8,%r11), %rcx
addq $0x8, %rcx
movq %r13, 0x80(%rsp)
movq %r13, -0x18(%rsp)
movq 0x68(%rsp), %rdi
movsd %xmm11, -0x38(%rsp)
movsd %xmm1, -0x48(%rsp)
movsd %xmm11, -0x68(%rsp)
movsd %xmm1, -0x58(%rsp)
movsd %xmm1, -0x40(%rsp)
movq %r9, -0x10(%rsp)
movq %r12, %rax
movq %r12, 0x40(%rsp)
movq %r9, %rsi
movq %r9, %r13
movq -0x18(%rsp), %r9
movq %r13, 0xd8(%rsp)
movq %r12, 0xe0(%rsp)
subq $0x1, %r9
jb 0x1ed2b
movq %rsi, %r13
movq %r9, 0xd0(%rsp)
movq %rax, 0x38(%rsp)
movsd (%rdi), %xmm13
movsd 0x8(%rdi), %xmm6
movq -0x20(%rsp), %rax
movsd (%rdi,%rax,8), %xmm2
movsd 0x8(%rdi,%rax,8), %xmm12
movq %rdi, %rax
movq 0x98(%rsp), %r9
movsd %xmm11, 0xe8(%rsp)
movsd (%rax,%r15), %xmm0
movsd 0x8(%rax,%r15), %xmm9
movsd (%rax,%r11), %xmm10
movsd 0x8(%rax,%r11), %xmm3
movapd %xmm2, %xmm4
mulsd %xmm11, %xmm4
addsd %xmm13, %xmm4
movapd %xmm12, %xmm14
movsd -0x58(%rsp), %xmm1
mulsd %xmm1, %xmm14
addsd %xmm4, %xmm14
mulsd %xmm1, %xmm2
movapd %xmm1, %xmm7
movsd %xmm1, -0x58(%rsp)
movapd %xmm6, %xmm4
subsd %xmm2, %xmm4
mulsd %xmm11, %xmm12
addsd %xmm4, %xmm12
addsd %xmm13, %xmm13
subsd %xmm14, %xmm13
addsd %xmm6, %xmm6
subsd %xmm12, %xmm6
movsd (%rax,%r8), %xmm1
movsd %xmm1, 0x48(%rsp)
movsd 0x8(%rax,%r8), %xmm2
movsd %xmm2, 0x50(%rsp)
movsd -0x8(%rax,%r10), %xmm1
movsd %xmm1, -0x70(%rsp)
movsd (%rax,%r10), %xmm2
movsd %xmm2, -0x78(%rsp)
movsd -0x8(%rax,%rbp), %xmm1
movsd (%rax,%rbp), %xmm8
movapd %xmm10, %xmm4
mulsd %xmm11, %xmm4
movapd %xmm0, %xmm2
subsd %xmm4, %xmm2
movapd %xmm3, %xmm4
mulsd %xmm7, %xmm4
subsd %xmm4, %xmm2
mulsd %xmm7, %xmm10
addsd %xmm9, %xmm10
mulsd %xmm11, %xmm3
subsd %xmm3, %xmm10
addsd %xmm0, %xmm0
subsd %xmm2, %xmm0
addsd %xmm9, %xmm9
subsd %xmm10, %xmm9
movapd %xmm0, %xmm3
movsd -0x38(%rsp), %xmm7
mulsd %xmm7, %xmm3
addsd %xmm14, %xmm3
movapd %xmm9, %xmm4
movsd -0x48(%rsp), %xmm15
mulsd %xmm15, %xmm4
addsd %xmm3, %xmm4
mulsd %xmm15, %xmm0
movapd %xmm12, %xmm3
subsd %xmm0, %xmm3
mulsd %xmm7, %xmm9
addsd %xmm3, %xmm9
movapd %xmm2, %xmm3
mulsd %xmm15, %xmm3
addsd %xmm13, %xmm3
movapd %xmm10, %xmm0
mulsd %xmm7, %xmm0
subsd %xmm0, %xmm3
movapd %xmm3, %xmm0
movsd -0x8(%rax,%rcx), %xmm5
mulsd %xmm7, %xmm2
addsd %xmm6, %xmm2
mulsd %xmm15, %xmm10
movapd %xmm14, %xmm15
addsd %xmm2, %xmm10
movsd (%rax,%rcx), %xmm2
addsd %xmm14, %xmm15
movsd %xmm4, 0x18(%rsp)
subsd %xmm4, %xmm15
addsd %xmm12, %xmm12
subsd %xmm9, %xmm12
addsd %xmm13, %xmm13
subsd %xmm3, %xmm13
addsd %xmm6, %xmm6
subsd %xmm10, %xmm6
subq $0x1, %r9
movsd -0x58(%rsp), %xmm3
movsd %xmm0, 0x58(%rsp)
movsd %xmm9, 0x20(%rsp)
jb 0x1e886
movsd %xmm5, 0x8(%rsp)
movsd 0x48(%rsp), %xmm4
movapd %xmm2, %xmm7
movsd -0x70(%rsp), %xmm2
movapd %xmm2, %xmm14
mulsd %xmm11, %xmm14
addsd %xmm4, %xmm14
movapd %xmm8, %xmm0
movsd -0x78(%rsp), %xmm8
movapd %xmm8, %xmm5
mulsd %xmm3, %xmm5
addsd %xmm14, %xmm5
movsd %xmm5, 0x10(%rsp)
mulsd %xmm3, %xmm2
movsd 0x50(%rsp), %xmm5
movapd %xmm5, %xmm14
subsd %xmm2, %xmm14
mulsd %xmm11, %xmm8
addsd %xmm14, %xmm8
movsd %xmm8, -0x78(%rsp)
movsd 0x8(%rsp), %xmm8
movapd %xmm8, %xmm9
mulsd %xmm11, %xmm9
movapd %xmm1, %xmm14
subsd %xmm9, %xmm14
movapd %xmm7, %xmm9
mulsd %xmm3, %xmm9
subsd %xmm9, %xmm14
mulsd %xmm3, %xmm8
addsd %xmm0, %xmm8
mulsd %xmm11, %xmm7
subsd %xmm7, %xmm8
addsd %xmm1, %xmm1
subsd %xmm14, %xmm1
addsd %xmm0, %xmm0
subsd %xmm8, %xmm0
movapd %xmm1, %xmm9
movsd -0x38(%rsp), %xmm3
mulsd %xmm3, %xmm9
movsd 0x10(%rsp), %xmm11
addsd %xmm11, %xmm9
movapd %xmm0, %xmm2
movsd %xmm15, -0x70(%rsp)
movsd -0x48(%rsp), %xmm15
mulsd %xmm15, %xmm2
addsd %xmm9, %xmm2
mulsd %xmm15, %xmm1
movsd -0x78(%rsp), %xmm7
movapd %xmm7, %xmm9
subsd %xmm1, %xmm9
mulsd %xmm3, %xmm0
movapd %xmm3, %xmm1
addsd %xmm9, %xmm0
addsd %xmm4, %xmm4
subsd %xmm11, %xmm4
movapd %xmm11, %xmm3
movapd %xmm14, %xmm11
mulsd %xmm15, %xmm11
addsd %xmm4, %xmm11
movapd %xmm8, %xmm9
mulsd %xmm1, %xmm9
subsd %xmm9, %xmm11
addsd %xmm5, %xmm5
subsd %xmm7, %xmm5
mulsd %xmm1, %xmm14
addsd %xmm5, %xmm14
mulsd %xmm15, %xmm8
addsd %xmm14, %xmm8
movapd %xmm2, %xmm9
movsd -0x68(%rsp), %xmm7
mulsd %xmm7, %xmm9
movapd %xmm7, %xmm15
movsd %xmm7, -0x68(%rsp)
movsd 0x18(%rsp), %xmm14
subsd %xmm9, %xmm14
movapd %xmm0, %xmm9
movsd -0x40(%rsp), %xmm7
mulsd %xmm7, %xmm9
subsd %xmm9, %xmm14
addsd %xmm3, %xmm3
subsd %xmm2, %xmm3
movsd -0x78(%rsp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, -0x78(%rsp)
mulsd %xmm7, %xmm2
addsd 0x20(%rsp), %xmm2
mulsd %xmm15, %xmm0
subsd %xmm0, %xmm2
addsd %xmm4, %xmm4
subsd %xmm11, %xmm4
movapd %xmm4, %xmm7
movsd -0x60(%rsp), %xmm0
mulsd %xmm0, %xmm7
movsd %xmm0, -0x60(%rsp)
movapd %xmm13, %xmm9
subsd %xmm7, %xmm9
addsd %xmm5, %xmm5
subsd %xmm8, %xmm5
movapd %xmm5, %xmm7
movsd (%rsp), %xmm15
mulsd %xmm15, %xmm7
subsd %xmm7, %xmm9
mulsd %xmm15, %xmm4
addsd %xmm6, %xmm4
mulsd %xmm0, %xmm5
subsd %xmm5, %xmm4
movsd 0x18(%rsp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm14, %xmm1
movapd %xmm1, %xmm0
movsd %xmm14, (%rax,%r8)
addsd %xmm13, %xmm13
subsd %xmm9, %xmm13
movsd %xmm9, -0x8(%rax,%r10)
movsd 0x20(%rsp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm2, %xmm1
movsd %xmm2, 0x8(%rax,%r8)
addsd %xmm6, %xmm6
subsd %xmm4, %xmm6
movsd %xmm4, (%rax,%r10)
movsd %xmm0, (%rax)
movsd %xmm13, (%rax,%rdx)
movsd %xmm1, 0x8(%rax)
movsd %xmm6, 0x8(%rax,%rdx)
movsd (%rax,%r14), %xmm13
movsd 0x8(%rax,%r14), %xmm6
movapd %xmm3, %xmm1
movsd -0x40(%rsp), %xmm7
mulsd %xmm7, %xmm1
movsd -0x70(%rsp), %xmm14
movapd %xmm14, %xmm2
subsd %xmm1, %xmm2
movsd -0x78(%rsp), %xmm5
movapd %xmm5, %xmm1
movsd -0x68(%rsp), %xmm0
mulsd %xmm0, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm3
movapd %xmm12, %xmm4
subsd %xmm3, %xmm4
mulsd %xmm7, %xmm5
subsd %xmm5, %xmm4
movapd %xmm11, %xmm2
mulsd %xmm15, %xmm2
movsd 0x58(%rsp), %xmm9
movapd %xmm9, %xmm3
subsd %xmm2, %xmm3
movapd %xmm8, %xmm7
movsd -0x60(%rsp), %xmm0
mulsd %xmm0, %xmm7
addsd %xmm3, %xmm7
mulsd %xmm0, %xmm11
movapd %xmm10, %xmm3
subsd %xmm11, %xmm3
movsd -0x8(%rax,%rbx), %xmm2
mulsd %xmm15, %xmm8
subsd %xmm8, %xmm3
movsd (%rax,%rbx), %xmm0
movapd %xmm14, %xmm5
addsd %xmm14, %xmm5
subsd %xmm1, %xmm5
movsd %xmm1, (%rax,%r15)
movapd %xmm9, %xmm1
addsd %xmm9, %xmm1
subsd %xmm7, %xmm1
movsd %xmm7, (%rax,%r11)
addsd %xmm12, %xmm12
subsd %xmm4, %xmm12
movsd %xmm4, 0x8(%rax,%r15)
addsd %xmm10, %xmm10
subsd %xmm3, %xmm10
movsd %xmm3, 0x8(%rax,%r11)
movsd %xmm5, -0x8(%rax,%rbp)
movsd %xmm1, -0x8(%rax,%rcx)
movsd %xmm12, (%rax,%rbp)
movsd %xmm10, (%rax,%rcx)
addq %r14, %rax
movapd %xmm0, %xmm12
movsd 0xe8(%rsp), %xmm11
jmp 0x1e329
movsd 0x48(%rsp), %xmm0
movapd %xmm1, %xmm7
movsd %xmm12, 0xc0(%rsp)
movapd %xmm11, %xmm3
movsd 0x50(%rsp), %xmm11
movsd %xmm13, 0xc8(%rsp)
movsd %xmm6, 0x8(%rsp)
movq %rdi, 0x10(%rsp)
movq -0x50(%rsp), %rsi
movq %rsi, %r9
negq %r9
movq -0x18(%rsp), %r12
cmpq 0xb0(%rsp), %r12
cmoveq %r9, %rsi
movq -0x10(%rsp), %r9
movq %rsi, -0x50(%rsp)
movsd (%r9,%rsi,8), %xmm6
movq %r13, -0x8(%rsp)
movsd %xmm10, 0xb8(%rsp)
ja 0x1e90e
xorps 0x4b71(%rip), %xmm6     # 0x23470
movaps %xmm6, 0xf0(%rsp)
movq 0x38(%rsp), %rsi
jmp 0x1e91b
movq 0x38(%rsp), %rsi
movaps %xmm6, 0xf0(%rsp)
movsd -0x70(%rsp), %xmm6
movapd %xmm6, %xmm14
movapd %xmm3, %xmm1
mulsd %xmm3, %xmm14
movapd %xmm0, %xmm10
addsd %xmm0, %xmm14
movsd -0x78(%rsp), %xmm0
movapd %xmm0, %xmm13
movsd -0x58(%rsp), %xmm3
mulsd %xmm3, %xmm13
addsd %xmm14, %xmm13
mulsd %xmm3, %xmm6
movapd %xmm11, %xmm14
subsd %xmm6, %xmm14
mulsd %xmm1, %xmm0
addsd %xmm14, %xmm0
movapd %xmm5, %xmm9
mulsd %xmm1, %xmm9
movapd %xmm7, %xmm6
movapd %xmm7, %xmm14
subsd %xmm9, %xmm14
movapd %xmm2, %xmm9
mulsd %xmm3, %xmm9
subsd %xmm9, %xmm14
mulsd %xmm3, %xmm5
mulsd %xmm1, %xmm2
movapd %xmm8, %xmm1
addsd %xmm8, %xmm5
subsd %xmm2, %xmm5
addsd %xmm7, %xmm6
subsd %xmm14, %xmm6
addsd %xmm8, %xmm1
subsd %xmm5, %xmm1
movapd %xmm6, %xmm9
movsd -0x38(%rsp), %xmm7
mulsd %xmm7, %xmm9
addsd %xmm13, %xmm9
movapd %xmm1, %xmm2
movsd -0x48(%rsp), %xmm3
mulsd %xmm3, %xmm2
addsd %xmm9, %xmm2
mulsd %xmm3, %xmm6
movapd %xmm0, %xmm9
subsd %xmm6, %xmm9
mulsd %xmm7, %xmm1
addsd %xmm9, %xmm1
addsd %xmm10, %xmm10
subsd %xmm13, %xmm10
movapd %xmm14, %xmm8
mulsd %xmm3, %xmm8
addsd %xmm10, %xmm8
movapd %xmm5, %xmm9
mulsd %xmm7, %xmm9
subsd %xmm9, %xmm8
mulsd %xmm7, %xmm14
mulsd %xmm3, %xmm5
addsd %xmm11, %xmm11
subsd %xmm0, %xmm11
addsd %xmm11, %xmm14
addsd %xmm14, %xmm5
movapd %xmm2, %xmm9
movsd -0x68(%rsp), %xmm3
mulsd %xmm3, %xmm9
movsd 0x18(%rsp), %xmm4
movapd %xmm4, %xmm14
subsd %xmm9, %xmm14
movapd %xmm1, %xmm9
movsd -0x40(%rsp), %xmm6
mulsd %xmm6, %xmm9
subsd %xmm9, %xmm14
addsd %xmm13, %xmm13
subsd %xmm2, %xmm13
addsd %xmm0, %xmm0
subsd %xmm1, %xmm0
mulsd %xmm6, %xmm2
movsd 0x20(%rsp), %xmm12
addsd %xmm12, %xmm2
mulsd %xmm3, %xmm1
subsd %xmm1, %xmm2
movapd %xmm13, %xmm7
mulsd %xmm6, %xmm7
movapd %xmm15, %xmm9
subsd %xmm7, %xmm9
movapd %xmm0, %xmm7
mulsd %xmm3, %xmm7
addsd %xmm9, %xmm7
mulsd %xmm3, %xmm13
movsd 0xc0(%rsp), %xmm3
movapd %xmm3, %xmm9
subsd %xmm13, %xmm9
mulsd %xmm6, %xmm0
subsd %xmm0, %xmm9
movq -0x50(%rsp), %rdi
leaq (,%rdi,8), %r9
movq 0x40(%rsp), %rdi
subq %r9, %rdi
movq -0x30(%rsp), %r9
movq -0x8(%rsp), %r13
leaq (%r13,%r9,8), %r13
movq 0xa8(%rsp), %r9
movq 0xe0(%rsp), %r12
leaq (%r12,%r9,8), %r12
addsd %xmm4, %xmm4
subsd %xmm14, %xmm4
movq %rdi, 0x40(%rsp)
movsd (%rdi), %xmm0
movq %r13, -0x8(%rsp)
movsd %xmm0, -0x58(%rsp)
movsd (%r13), %xmm0
movsd %xmm0, -0x38(%rsp)
movsd (%r12), %xmm0
movsd %xmm0, -0x48(%rsp)
movsd %xmm14, (%rax,%r8)
addsd %xmm15, %xmm15
subsd %xmm7, %xmm15
movsd %xmm7, (%rax,%r15)
addsd %xmm12, %xmm12
subsd %xmm2, %xmm12
movsd %xmm2, 0x8(%rax,%r8)
addsd %xmm3, %xmm3
subsd %xmm9, %xmm3
movsd %xmm9, 0x8(%rax,%r15)
movq -0x28(%rsp), %r9
movq 0xd8(%rsp), %r13
leaq (%r13,%r9,8), %r13
movq 0xa0(%rsp), %r9
leaq (%rsi,%r9,8), %rsi
movsd (%r13), %xmm0
movsd %xmm0, -0x68(%rsp)
movsd (%rsi), %xmm0
movsd %xmm0, -0x40(%rsp)
movsd %xmm4, (%rax)
movsd %xmm15, -0x8(%rax,%rbp)
movsd %xmm12, 0x8(%rax)
movsd %xmm3, (%rax,%rbp)
addsd %xmm10, %xmm10
subsd %xmm8, %xmm10
movapd %xmm10, %xmm2
movsd -0x60(%rsp), %xmm0
mulsd %xmm0, %xmm2
movsd 0xc8(%rsp), %xmm7
movapd %xmm7, %xmm1
subsd %xmm2, %xmm1
addsd %xmm11, %xmm11
subsd %xmm5, %xmm11
movapd %xmm11, %xmm2
movsd (%rsp), %xmm4
mulsd %xmm4, %xmm2
subsd %xmm2, %xmm1
mulsd %xmm4, %xmm10
movsd 0x8(%rsp), %xmm6
addsd %xmm6, %xmm10
mulsd %xmm0, %xmm11
subsd %xmm11, %xmm10
movapd %xmm8, %xmm2
mulsd %xmm4, %xmm2
movsd 0x58(%rsp), %xmm9
movapd %xmm9, %xmm3
subsd %xmm2, %xmm3
movapd %xmm5, %xmm2
mulsd %xmm0, %xmm2
addsd %xmm3, %xmm2
mulsd %xmm0, %xmm8
movsd 0xb8(%rsp), %xmm11
movapd %xmm11, %xmm3
subsd %xmm8, %xmm3
mulsd %xmm4, %xmm5
subsd %xmm5, %xmm3
addsd %xmm7, %xmm7
subsd %xmm1, %xmm7
movsd %xmm1, -0x8(%rax,%r10)
addsd %xmm9, %xmm9
subsd %xmm2, %xmm9
movsd %xmm2, (%rax,%r11)
addsd %xmm6, %xmm6
subsd %xmm10, %xmm6
addsd %xmm11, %xmm11
subsd %xmm3, %xmm11
movsd %xmm10, (%rax,%r10)
movsd %xmm3, 0x8(%rax,%r11)
movq 0x30(%rsp), %r9
movsd (%r13,%r9,8), %xmm0
movsd %xmm0, -0x60(%rsp)
movq 0x28(%rsp), %r9
movsd (%rsi,%r9,8), %xmm0
movsd %xmm0, (%rsp)
movsd %xmm7, (%rax,%rdx)
movsd %xmm9, -0x8(%rax,%rcx)
movsd %xmm6, 0x8(%rax,%rdx)
movsd %xmm11, (%rax,%rcx)
movq -0x10(%rsp), %rax
movq -0x50(%rsp), %rdi
leaq (%rax,%rdi,8), %rax
movq %rax, -0x10(%rsp)
movq 0x10(%rsp), %rdi
addq $0x10, %rdi
movq 0xd0(%rsp), %r9
movq %r9, -0x18(%rsp)
movapd 0xf0(%rsp), %xmm11
movq %rsi, %rax
movq -0x8(%rsp), %rsi
jmp 0x1e2cf
movq 0x88(%rsp), %r11
shrq $0x3, %r11
shrq $0x3, -0x28(%rsp)
shrq $0x3, -0x30(%rsp)
movq 0x80(%rsp), %r13
shlq $0x3, %r13
movq 0x90(%rsp), %r9
decq %r9
movq 0x78(%rsp), %r8
movq %rdx, -0x20(%rsp)
jmp 0x1e196
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq