// File: /workspace/github_cpp_makefile_star2_O1/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 $0x128, %rsp            # imm = 0x128
movq %rcx, %r11
movq %rdx, 0x30(%rsp)
movq %rsi, %rcx
movq %rdi, 0x98(%rsp)
movl $0x1, %eax
shlq %cl, %rax
testq %r9, %r9
jle 0x2708f
shrq $0x3, %rax
movq %rax, %rsi
imulq %r11, %rsi
xorl %edx, %edx
divq %r8
movq %rax, 0x40(%rsp)
imulq %r11, %rax
movq %rax, -0x28(%rsp)
addq %rax, %rax
movq %rax, -0x30(%rsp)
movq %r8, %rax
shlq $0x4, %rax
movq %rax, 0x38(%rsp)
leaq (%r8,%r8), %r10
addb $-0x2, %cl
shlq %cl, %r11
movq 0x30(%rsp), %rax
leaq (%rax,%r11,8), %rax
movq %rax, 0x90(%rsp)
movq %rsi, 0x58(%rsp)
negq %rsi
movq %rsi, 0x50(%rsp)
movq %r8, %rdx
movq %r9, 0xa0(%rsp)
leaq (,%r8,8), %rax
movq %rax, -0x18(%rsp)
movq %rdx, 0x48(%rsp)
testq %rdx, %rdx
je 0x2704f
leaq 0x1(,%r8,8), %rax
movq %rax, 0x80(%rsp)
movq 0x90(%rsp), %r14
movq 0x50(%rsp), %rax
movsd (%r14,%rax,8), %xmm0
movq 0x30(%rsp), %rcx
movq 0x58(%rsp), %rax
movsd (%rcx,%rax,8), %xmm1
movsd (%r14), %xmm7
movsd (%rcx), %xmm10
movq -0x28(%rsp), %rdx
leaq (,%rdx,4), %rax
movq %rax, -0x48(%rsp)
movq 0x40(%rsp), %rax
decq %rax
movq %rax, 0xd0(%rsp)
movq 0x48(%rsp), %r13
movq %r13, %rax
shrq $0x3f, %rax
addq %r13, %rax
sarq %rax
movq %rax, 0xc8(%rsp)
movq -0x30(%rsp), %rax
negq %rax
movq %rax, 0xc0(%rsp)
negq %rdx
movq %rdx, 0xb8(%rsp)
leaq (,%r10,8), %rax
movq %rax, 0xa8(%rsp)
leaq (%rax,%rax,2), %rdi
movq 0x38(%rsp), %rdx
leaq (,%rdx,8), %rsi
shlq $0x6, %r8
leaq (%r8,%rdi), %r11
addq $0x8, %r11
movq %r10, %r15
shlq $0x4, %r15
leaq (%r8,%r15), %r9
addq $0x8, %r9
leaq 0x8(%r8,%r10,8), %r12
leaq 0x8(%rsi,%r10,8), %rdx
movq %rdx, 0xb0(%rsp)
movsd %xmm7, (%rsp)
movsd %xmm10, -0x8(%rsp)
movsd %xmm7, -0x78(%rsp)
movapd %xmm10, %xmm2
movq %r14, %rdx
movq %r14, %rax
movq %rcx, %rbp
movq %r14, 0x78(%rsp)
movq %rcx, -0x10(%rsp)
movq 0x98(%rsp), %r14
movq %r13, 0x70(%rsp)
movq %r10, 0xd8(%rsp)
movsd %xmm2, -0x60(%rsp)
movq %rbp, -0x58(%rsp)
movq %rax, -0x50(%rsp)
movq %rcx, 0x60(%rsp)
movsd %xmm7, 0x20(%rsp)
movsd %xmm1, 0x88(%rsp)
movsd %xmm0, 0x28(%rsp)
movsd (%r14), %xmm12
movsd 0x8(%r14), %xmm15
movsd (%r14,%r10,8), %xmm1
movsd 0x8(%r14,%r10,8), %xmm5
movq 0xd0(%rsp), %rcx
testq %rcx, %rcx
movq %rdx, 0x68(%rsp)
movq %r14, 0x108(%rsp)
movsd %xmm10, 0x18(%rsp)
je 0x269bd
movq %r14, %r13
movq %rcx, %r10
movsd -0x78(%rsp), %xmm11
movq 0xb0(%rsp), %rcx
movq 0xa8(%rsp), %rax
movsd (%r13,%r15), %xmm0
movsd 0x8(%r13,%r15), %xmm14
movsd (%r13,%rdi), %xmm13
movsd 0x8(%r13,%rdi), %xmm7
movapd %xmm1, %xmm3
movapd %xmm5, %xmm2
movsd -0x60(%rsp), %xmm4
mulsd %xmm4, %xmm3
movapd %xmm4, %xmm9
mulsd %xmm11, %xmm2
movapd %xmm2, %xmm4
mulsd %xmm11, %xmm1
movapd %xmm15, %xmm6
movapd %xmm15, %xmm2
addsd %xmm12, %xmm3
subsd %xmm1, %xmm2
mulsd %xmm9, %xmm5
addsd %xmm12, %xmm12
addsd %xmm2, %xmm5
movsd %xmm5, 0x10(%rsp)
addsd %xmm15, %xmm6
movsd (%r13,%r8), %xmm1
movsd 0x8(%r13,%r8), %xmm2
addsd %xmm3, %xmm4
movsd %xmm4, -0x38(%rsp)
movsd -0x8(%r13,%r12), %xmm3
movsd (%r13,%r12), %xmm8
movapd %xmm13, %xmm10
subsd %xmm5, %xmm6
movsd %xmm6, 0x8(%rsp)
movapd %xmm9, %xmm15
mulsd %xmm9, %xmm10
movapd %xmm0, %xmm9
movapd %xmm7, %xmm11
subsd %xmm10, %xmm9
mulsd -0x78(%rsp), %xmm11
mulsd -0x78(%rsp), %xmm13
addsd %xmm14, %xmm13
subsd %xmm11, %xmm9
mulsd %xmm15, %xmm7
subsd %xmm7, %xmm13
addsd %xmm0, %xmm0
subsd %xmm9, %xmm0
addsd %xmm14, %xmm14
subsd %xmm13, %xmm14
movsd %xmm14, -0x70(%rsp)
movapd %xmm0, %xmm7
movsd (%rsp), %xmm4
mulsd %xmm4, %xmm0
movapd %xmm5, %xmm11
movapd %xmm9, %xmm10
movapd %xmm13, %xmm5
movapd %xmm13, %xmm14
subsd %xmm0, %xmm11
movsd -0x8(%rsp), %xmm13
mulsd %xmm13, %xmm9
addsd %xmm6, %xmm9
mulsd %xmm4, %xmm5
addsd %xmm9, %xmm5
movsd %xmm5, -0x40(%rsp)
movapd %xmm3, %xmm9
mulsd %xmm15, %xmm9
movapd %xmm15, %xmm6
movapd %xmm8, %xmm0
addsd %xmm1, %xmm9
mulsd -0x78(%rsp), %xmm0
addsd %xmm9, %xmm0
movsd -0x8(%r13,%r9), %xmm5
movsd -0x38(%rsp), %xmm15
subsd %xmm15, %xmm12
mulsd %xmm4, %xmm10
addsd %xmm12, %xmm10
mulsd %xmm13, %xmm14
subsd %xmm14, %xmm10
movsd %xmm10, -0x68(%rsp)
movsd -0x70(%rsp), %xmm9
movapd %xmm9, %xmm14
mulsd %xmm13, %xmm9
mulsd -0x78(%rsp), %xmm3
addsd %xmm11, %xmm9
movsd %xmm9, -0x70(%rsp)
movapd %xmm2, %xmm9
subsd %xmm3, %xmm9
movsd -0x8(%r13,%r11), %xmm3
mulsd %xmm13, %xmm7
addsd %xmm15, %xmm7
mulsd %xmm4, %xmm14
mulsd %xmm6, %xmm8
addsd %xmm7, %xmm14
addsd %xmm9, %xmm8
movapd %xmm3, %xmm9
movapd %xmm5, %xmm7
mulsd %xmm6, %xmm9
subsd %xmm9, %xmm7
movsd (%r13,%r11), %xmm11
movapd %xmm11, %xmm9
mulsd -0x78(%rsp), %xmm9
subsd %xmm9, %xmm7
mulsd -0x78(%rsp), %xmm3
movsd (%r13,%r9), %xmm9
addsd %xmm9, %xmm3
mulsd %xmm6, %xmm11
subsd %xmm11, %xmm3
addsd %xmm5, %xmm5
subsd %xmm7, %xmm5
addsd %xmm9, %xmm9
subsd %xmm3, %xmm9
movapd %xmm5, %xmm10
mulsd %xmm13, %xmm10
addsd %xmm0, %xmm10
movapd %xmm9, %xmm11
mulsd %xmm4, %xmm11
addsd %xmm10, %xmm11
mulsd %xmm4, %xmm5
movapd %xmm8, %xmm10
subsd %xmm5, %xmm10
mulsd %xmm13, %xmm9
addsd %xmm10, %xmm9
addsd %xmm1, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm10
mulsd %xmm4, %xmm10
movapd %xmm3, %xmm5
mulsd %xmm13, %xmm5
addsd %xmm1, %xmm10
subsd %xmm5, %xmm10
addsd %xmm2, %xmm2
mulsd %xmm13, %xmm7
subsd %xmm8, %xmm2
addsd %xmm2, %xmm7
mulsd %xmm4, %xmm3
addsd %xmm7, %xmm3
movapd %xmm11, %xmm5
movsd 0x18(%rsp), %xmm4
mulsd %xmm4, %xmm5
movapd %xmm4, %xmm13
movapd %xmm14, %xmm7
subsd %xmm5, %xmm7
movapd %xmm9, %xmm5
movsd 0x20(%rsp), %xmm6
mulsd %xmm6, %xmm5
subsd %xmm5, %xmm7
addsd %xmm0, %xmm0
subsd %xmm11, %xmm0
addsd %xmm8, %xmm8
subsd %xmm9, %xmm8
movapd %xmm8, %xmm4
mulsd %xmm6, %xmm11
movsd -0x70(%rsp), %xmm6
addsd %xmm6, %xmm11
mulsd %xmm13, %xmm9
subsd %xmm9, %xmm11
addsd %xmm12, %xmm12
subsd -0x68(%rsp), %xmm12
addsd %xmm1, %xmm1
subsd %xmm10, %xmm1
movapd %xmm1, %xmm5
movsd 0x88(%rsp), %xmm8
mulsd %xmm8, %xmm5
movapd %xmm12, %xmm9
subsd %xmm5, %xmm9
addsd %xmm2, %xmm2
subsd %xmm3, %xmm2
movapd %xmm2, %xmm5
movsd 0x28(%rsp), %xmm13
mulsd %xmm13, %xmm5
subsd %xmm5, %xmm9
movsd 0x8(%rsp), %xmm15
addsd %xmm15, %xmm15
subsd -0x40(%rsp), %xmm15
mulsd %xmm13, %xmm1
mulsd %xmm8, %xmm2
addsd %xmm15, %xmm1
subsd %xmm2, %xmm1
movsd -0x38(%rsp), %xmm13
addsd %xmm13, %xmm13
subsd %xmm14, %xmm13
addsd %xmm14, %xmm14
subsd %xmm7, %xmm14
movsd %xmm7, (%r13,%r8)
addsd %xmm12, %xmm12
subsd %xmm9, %xmm12
movsd %xmm9, -0x8(%r13,%r12)
movsd 0x10(%rsp), %xmm2
addsd %xmm2, %xmm2
movapd %xmm6, %xmm5
subsd %xmm6, %xmm2
addsd %xmm6, %xmm5
subsd %xmm11, %xmm5
movapd %xmm5, %xmm6
movsd %xmm11, 0x8(%r13,%r8)
movsd -0x78(%rsp), %xmm11
addsd %xmm15, %xmm15
subsd %xmm1, %xmm15
movsd %xmm1, (%r13,%r12)
movapd %xmm0, %xmm1
movsd %xmm14, (%r13)
movsd 0x20(%rsp), %xmm14
mulsd %xmm14, %xmm1
movapd %xmm13, %xmm5
subsd %xmm1, %xmm5
movapd %xmm4, %xmm7
movsd 0x18(%rsp), %xmm1
mulsd %xmm1, %xmm7
addsd %xmm5, %xmm7
mulsd %xmm1, %xmm0
movsd %xmm12, (%r13,%rax)
movapd %xmm2, %xmm9
subsd %xmm0, %xmm9
mulsd %xmm14, %xmm4
movsd %xmm6, 0x8(%r13)
subsd %xmm4, %xmm9
addsd %xmm13, %xmm13
movapd %xmm10, %xmm0
movsd %xmm15, 0x8(%r13,%rax)
movsd 0x28(%rsp), %xmm5
mulsd %xmm5, %xmm0
movsd -0x68(%rsp), %xmm6
movapd %xmm6, %xmm1
subsd %xmm0, %xmm1
movsd (%r13,%rsi), %xmm12
movapd %xmm3, %xmm0
mulsd %xmm8, %xmm0
addsd %xmm1, %xmm0
movsd 0x8(%r13,%rsi), %xmm15
mulsd %xmm8, %xmm10
movsd -0x40(%rsp), %xmm8
movapd %xmm8, %xmm4
subsd %xmm10, %xmm4
movsd -0x8(%r13,%rcx), %xmm1
subsd %xmm7, %xmm13
mulsd %xmm5, %xmm3
subsd %xmm3, %xmm4
movsd (%r13,%rcx), %xmm5
movsd %xmm7, (%r13,%r15)
movapd %xmm6, %xmm3
addsd %xmm6, %xmm3
subsd %xmm0, %xmm3
movsd %xmm0, (%r13,%rdi)
addsd %xmm2, %xmm2
subsd %xmm9, %xmm2
movsd %xmm9, 0x8(%r13,%r15)
movapd %xmm8, %xmm0
addsd %xmm8, %xmm0
subsd %xmm4, %xmm0
movsd %xmm4, 0x8(%r13,%rdi)
movsd %xmm13, -0x8(%r13,%r9)
movsd %xmm3, -0x8(%r13,%r11)
movsd %xmm2, (%r13,%r9)
movsd %xmm0, (%r13,%r11)
addq %rsi, %r13
decq %r10
jne 0x26486
leaq (%rdi,%r13), %r10
leaq (%r15,%r13), %rdx
leaq (%rax,%r13), %rbp
jmp 0x269da
leaq (%r14,%r10,8), %rbp
leaq (,%r10,8), %rdx
addq %rbp, %rdx
leaq (%rdx,%r10,8), %r10
movq %r14, %r13
movsd -0x78(%rsp), %xmm11
movsd (%rdx), %xmm6
movsd 0x8(%rdx), %xmm0
movsd (%r10), %xmm4
movsd 0x8(%r10), %xmm7
movapd %xmm1, %xmm2
movsd -0x60(%rsp), %xmm3
mulsd %xmm3, %xmm2
addsd %xmm12, %xmm2
movapd %xmm5, %xmm14
mulsd %xmm11, %xmm14
addsd %xmm2, %xmm14
mulsd %xmm11, %xmm1
movapd %xmm15, %xmm2
subsd %xmm1, %xmm2
mulsd %xmm3, %xmm5
addsd %xmm2, %xmm5
addsd %xmm12, %xmm12
subsd %xmm14, %xmm12
addsd %xmm15, %xmm15
subsd %xmm5, %xmm15
movq -0x18(%rsp), %rcx
movapd %xmm5, %xmm8
movsd (%r13,%rcx,8), %xmm1
movsd %xmm1, 0xe0(%rsp)
movq 0x80(%rsp), %r14
movsd (%r13,%r14,8), %xmm1
movsd %xmm1, -0x70(%rsp)
movsd (%rbp,%rcx,8), %xmm13
movq %rbp, -0x38(%rsp)
movsd (%rbp,%r14,8), %xmm1
movsd %xmm1, -0x78(%rsp)
movsd (%rdx,%rcx,8), %xmm1
movsd %xmm1, -0x20(%rsp)
movsd (%rdx,%r14,8), %xmm2
movsd (%r10,%rcx,8), %xmm1
movsd %xmm1, -0x68(%rsp)
movapd %xmm4, %xmm10
mulsd %xmm3, %xmm10
movapd %xmm6, %xmm1
subsd %xmm10, %xmm1
movapd %xmm7, %xmm10
mulsd %xmm11, %xmm10
subsd %xmm10, %xmm1
mulsd %xmm11, %xmm4
addsd %xmm0, %xmm4
mulsd %xmm3, %xmm7
subsd %xmm7, %xmm4
addsd %xmm6, %xmm6
subsd %xmm1, %xmm6
addsd %xmm0, %xmm0
subsd %xmm4, %xmm0
movapd %xmm6, %xmm7
movsd -0x8(%rsp), %xmm5
mulsd %xmm5, %xmm7
addsd %xmm14, %xmm7
movapd %xmm0, %xmm3
movsd (%rsp), %xmm10
mulsd %xmm10, %xmm3
addsd %xmm7, %xmm3
mulsd %xmm10, %xmm6
movapd %xmm8, %xmm7
subsd %xmm6, %xmm7
mulsd %xmm5, %xmm0
addsd %xmm7, %xmm0
movapd %xmm1, %xmm9
mulsd %xmm10, %xmm9
addsd %xmm12, %xmm9
movapd %xmm4, %xmm6
mulsd %xmm5, %xmm6
subsd %xmm6, %xmm9
movsd (%r10,%r14,8), %xmm7
addsd %xmm14, %xmm14
movsd %xmm3, 0xe8(%rsp)
subsd %xmm3, %xmm14
movsd %xmm14, 0x100(%rsp)
addsd %xmm8, %xmm8
movsd %xmm0, 0x8(%rsp)
subsd %xmm0, %xmm8
movapd %xmm10, %xmm0
movapd %xmm5, %xmm10
movsd %xmm8, 0x10(%rsp)
mulsd %xmm5, %xmm1
addsd %xmm15, %xmm1
mulsd %xmm0, %xmm4
addsd %xmm1, %xmm4
addsd %xmm12, %xmm12
movsd %xmm9, 0xf8(%rsp)
subsd %xmm9, %xmm12
addsd %xmm15, %xmm15
movsd %xmm4, -0x40(%rsp)
subsd %xmm4, %xmm15
movq -0x48(%rsp), %rbp
movq %rbp, %rcx
negq %rcx
movq 0x70(%rsp), %r14
cmpq 0xc8(%rsp), %r14
cmoveq %rcx, %rbp
movq -0x10(%rsp), %rcx
movq %rbp, -0x48(%rsp)
movsd (%rcx,%rbp,8), %xmm1
movq %r10, 0xf0(%rsp)
ja 0x26c0d
xorps 0x58a1(%rip), %xmm1     # 0x2c490
movaps %xmm1, 0x110(%rsp)
movq 0x68(%rsp), %rbx
movq 0x60(%rsp), %rax
movq -0x50(%rsp), %r14
movq -0x58(%rsp), %rbp
jmp 0x26c29
movq 0x68(%rsp), %rbx
movq 0x60(%rsp), %rax
movq -0x50(%rsp), %r14
movq -0x58(%rsp), %rbp
movaps %xmm1, 0x110(%rsp)
movapd %xmm13, %xmm4
movapd %xmm13, %xmm9
movsd -0x60(%rsp), %xmm8
mulsd %xmm8, %xmm9
movsd 0xe0(%rsp), %xmm13
addsd %xmm13, %xmm9
movsd -0x78(%rsp), %xmm6
movapd %xmm6, %xmm3
mulsd %xmm11, %xmm3
addsd %xmm9, %xmm3
mulsd %xmm11, %xmm4
movsd -0x70(%rsp), %xmm1
movapd %xmm1, %xmm9
subsd %xmm4, %xmm9
mulsd %xmm8, %xmm6
addsd %xmm9, %xmm6
movsd -0x68(%rsp), %xmm14
movapd %xmm14, %xmm9
mulsd %xmm8, %xmm9
movsd -0x20(%rsp), %xmm4
movapd %xmm4, %xmm5
subsd %xmm9, %xmm5
movapd %xmm7, %xmm9
mulsd %xmm11, %xmm9
subsd %xmm9, %xmm5
mulsd %xmm11, %xmm14
mulsd %xmm8, %xmm7
addsd %xmm2, %xmm14
subsd %xmm7, %xmm14
addsd %xmm4, %xmm4
subsd %xmm5, %xmm4
addsd %xmm2, %xmm2
subsd %xmm14, %xmm2
movapd %xmm4, %xmm9
mulsd %xmm10, %xmm9
addsd %xmm3, %xmm9
movapd %xmm2, %xmm7
mulsd %xmm0, %xmm7
addsd %xmm9, %xmm7
mulsd %xmm0, %xmm4
movapd %xmm6, %xmm9
subsd %xmm4, %xmm9
mulsd %xmm10, %xmm2
addsd %xmm9, %xmm2
movapd %xmm14, %xmm4
mulsd %xmm10, %xmm4
movsd %xmm4, -0x60(%rsp)
movapd %xmm5, %xmm9
mulsd %xmm10, %xmm5
movsd %xmm5, -0x20(%rsp)
mulsd %xmm0, %xmm9
mulsd %xmm0, %xmm14
movsd %xmm14, -0x68(%rsp)
movapd %xmm7, %xmm11
movsd 0x18(%rsp), %xmm0
mulsd %xmm0, %xmm11
movsd 0xe8(%rsp), %xmm4
movapd %xmm4, %xmm10
subsd %xmm11, %xmm10
movapd %xmm2, %xmm11
movsd 0x20(%rsp), %xmm8
mulsd %xmm8, %xmm11
subsd %xmm11, %xmm10
addsd %xmm13, %xmm13
subsd %xmm3, %xmm13
addsd %xmm1, %xmm1
subsd %xmm6, %xmm1
movsd %xmm1, -0x70(%rsp)
addsd %xmm3, %xmm3
subsd %xmm7, %xmm3
addsd %xmm6, %xmm6
subsd %xmm2, %xmm6
mulsd %xmm8, %xmm7
movsd 0x8(%rsp), %xmm14
addsd %xmm14, %xmm7
mulsd %xmm0, %xmm2
subsd %xmm2, %xmm7
movapd %xmm3, %xmm2
mulsd %xmm8, %xmm2
movsd 0x100(%rsp), %xmm1
movapd %xmm1, %xmm11
subsd %xmm2, %xmm11
movapd %xmm6, %xmm2
mulsd %xmm0, %xmm2
addsd %xmm11, %xmm2
mulsd %xmm0, %xmm3
movsd 0x10(%rsp), %xmm5
movapd %xmm5, %xmm11
subsd %xmm3, %xmm11
mulsd %xmm8, %xmm6
subsd %xmm6, %xmm11
movq -0x48(%rsp), %rcx
leaq (,%rcx,8), %rcx
movq 0x78(%rsp), %r10
subq %rcx, %r10
movq -0x30(%rsp), %rcx
leaq (%rbp,%rcx,8), %rbp
movq %rbp, -0x58(%rsp)
movq 0xc0(%rsp), %rcx
leaq (%r14,%rcx,8), %r14
movq %r14, -0x50(%rsp)
addsd %xmm4, %xmm4
subsd %xmm10, %xmm4
movq %r10, 0x78(%rsp)
movsd (%r10), %xmm0
movsd %xmm0, -0x78(%rsp)
movsd (%rbp), %xmm0
movsd %xmm0, -0x8(%rsp)
movsd (%r14), %xmm0
movsd %xmm0, (%rsp)
movq -0x18(%rsp), %r14
movsd %xmm10, (%r13,%r14,8)
addsd %xmm1, %xmm1
subsd %xmm2, %xmm1
movsd %xmm2, (%rdx)
addsd %xmm14, %xmm14
subsd %xmm7, %xmm14
movq 0x80(%rsp), %rbp
movsd %xmm7, (%r13,%rbp,8)
addsd %xmm5, %xmm5
subsd %xmm11, %xmm5
movsd %xmm11, 0x8(%rdx)
movq -0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rax
movq 0xb8(%rsp), %rcx
leaq (%rbx,%rcx,8), %rbx
movsd (%rax), %xmm10
movsd (%rbx), %xmm7
movsd %xmm4, (%r13)
movsd %xmm1, (%rdx,%r14,8)
movsd %xmm14, 0x8(%r13)
movsd %xmm5, (%rdx,%rbp,8)
addsd %xmm13, %xmm9
subsd -0x60(%rsp), %xmm9
movsd -0x70(%rsp), %xmm2
movsd -0x20(%rsp), %xmm0
addsd %xmm2, %xmm0
movsd -0x68(%rsp), %xmm3
addsd %xmm0, %xmm3
addsd %xmm13, %xmm13
subsd %xmm9, %xmm13
movapd %xmm13, %xmm1
movsd 0x88(%rsp), %xmm6
mulsd %xmm6, %xmm1
movapd %xmm12, %xmm0
subsd %xmm1, %xmm0
addsd %xmm2, %xmm2
subsd %xmm3, %xmm2
movapd %xmm2, %xmm1
movsd 0x28(%rsp), %xmm4
mulsd %xmm4, %xmm1
subsd %xmm1, %xmm0
mulsd %xmm4, %xmm13
addsd %xmm15, %xmm13
mulsd %xmm6, %xmm2
subsd %xmm2, %xmm13
movapd %xmm9, %xmm1
mulsd %xmm4, %xmm1
movsd 0xf8(%rsp), %xmm11
movapd %xmm11, %xmm2
subsd %xmm1, %xmm2
movapd %xmm3, %xmm1
mulsd %xmm6, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm6, %xmm9
movsd -0x40(%rsp), %xmm5
movapd %xmm5, %xmm2
subsd %xmm9, %xmm2
mulsd %xmm4, %xmm3
subsd %xmm3, %xmm2
addsd %xmm12, %xmm12
subsd %xmm0, %xmm12
movq -0x38(%rsp), %rdx
movsd %xmm0, (%rdx,%r14,8)
addsd %xmm11, %xmm11
subsd %xmm1, %xmm11
movq 0xf0(%rsp), %r10
movsd %xmm1, (%r10)
addsd %xmm15, %xmm15
subsd %xmm13, %xmm15
addsd %xmm5, %xmm5
subsd %xmm2, %xmm5
movsd %xmm13, (%rdx,%rbp,8)
movsd %xmm2, 0x8(%r10)
movq 0x58(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x50(%rsp), %rcx
movsd (%rbx,%rcx,8), %xmm0
movsd %xmm12, (%rdx)
movsd %xmm11, (%r10,%r14,8)
movsd %xmm15, 0x8(%rdx)
movsd %xmm5, (%r10,%rbp,8)
movq -0x58(%rsp), %rbp
movq -0x10(%rsp), %rcx
movq -0x48(%rsp), %rdx
leaq (%rcx,%rdx,8), %rcx
movq %rcx, -0x10(%rsp)
movq 0x108(%rsp), %r14
addq $0x10, %r14
movapd 0x110(%rsp), %xmm2
decq 0x70(%rsp)
movq 0xd8(%rsp), %r10
movq %rbx, %rdx
movq %rax, %rcx
movq -0x50(%rsp), %rax
jne 0x26402
shrq $0x3, 0x40(%rsp)
shrq $0x3, -0x28(%rsp)
shrq $0x3, -0x30(%rsp)
movq 0x48(%rsp), %rdx
shlq $0x3, %rdx
shlq $0x3, %r10
shlq $0x3, 0x38(%rsp)
movq 0xa0(%rsp), %rcx
leaq -0x1(%rcx), %r9
movq -0x18(%rsp), %r8
cmpq $0x1, %rcx
jg 0x262bf
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq