// File: DoubleString[P]eph_converter/src/Broadcast.cpp
// Function: BroadcastEphUtils::m_brd2xyz(char const*, char const*, int, double, double*, double*, double*, double*, int*)
int BroadcastEphUtils::m_brd2xyz(const char* mode, const char* cprn, int wk,
		double sow, double* xsat, double* clk, double* dtmin, double* tgd,
		int* iode) {
	int i, isys, lfind,f_prn;
	double GMEARTH, EARTH_ROTATE;
	double dt, dtc, pos[3], svpos[3], geovel[3], detavel[3];
	double a, xn, xm, ex, e, v0, vs, vc, phi, ccc, sss, du, dr, di, r, u, xi,
			xx, yy, intv;
	double xnode, xpdot, ypdot, asc, xinc, xp, yp, asctrm, v;
	double edot, cosf2, cose2, nudot, rdot, udot, idot, r_bds;
	double xsat0[3];
	double A0, AK, n0, delta_na;
	list<GPSEPH>::iterator gpsItr;
	GPSEPH* eph;
	intv = 2.0;
	switch (cprn[0]) {
	case 'G':
		GMEARTH = 3.986005E14;
		EARTH_ROTATE = 7.2921151467E-5;
		break;
	case 'E':
		GMEARTH = 3.986004418E14;
		EARTH_ROTATE = 7.2921151467E-5;
		break;
	case 'C':
		GMEARTH = 3.986004418E14;
		EARTH_ROTATE = 7.2921150E-5;
		break;
	case 'J':
		GMEARTH = 3.986005E14;
		EARTH_ROTATE = 7.2921150E-5;
		break;
	default:
		GMEARTH = GME;
		EARTH_ROTATE = E_ROTATE;
		break;
	}
	lfind = 0;
	*clk = 0;
	*dtmin = 4.0;
	isys = index_string(SYS, cprn[0]);
	double tmax = 0.0, ttag;
	for (gpsItr = this->gnssEph[isys].begin();
			gpsItr != this->gnssEph[isys].end(); ++gpsItr) {
		if (strstr((*gpsItr).cprn, cprn)) {
			dt = (wk - (*gpsItr).week) * 168.0 + (sow - (*gpsItr).toe) / 3600.0;
			if (*iode >= 0) {
				if(cprn[0] == 'C'){
					if ((*gpsItr).aode == *iode || (*gpsItr).iodc == *iode
							|| (*gpsItr).aodc == *iode) {
						*dtmin = fabs(dt);
						eph = &(*gpsItr);
						lfind = 1;
						break;
					}
				}else{
					if ((*gpsItr).aode == *iode ) {
						*dtmin = fabs(dt);
						eph = &(*gpsItr);
						lfind = 1;
						break;
					}
				}
			} else if (*iode == -1) {
				if (fabs(dt) <= *dtmin) {
					*dtmin = fabs(dt);
					eph = &(*gpsItr);
					lfind = 1;
				}
			} else if (*iode == -2) {
				ttag = (*gpsItr).mjd * 86400.0 + (*gpsItr).sod;
				// For the real-time process : always the newest
				if (ttag > tmax && fabs(dt) <= intv) {
					tmax = ttag;
					*dtmin = fabs(dt);
					lfind = 1;
					eph = &(*gpsItr);
				}
			}
		}
	}
	if (lfind == 0)
		return 0;
	*iode = eph->aode;
	dt = (wk - eph->week) * 604800.0 + sow - eph->toe;
	dtc = (wk * 7 + 44244 - eph->mjd) * 86400.0 + sow - eph->sod;

	*clk = eph->a0 + (eph->a1 + eph->a2 * dtc) * dtc;
	*tgd = eph->tgd;
	if(cprn[0] == 'C'){
		double f1 = BDS_B1;
		double f2 = BDS_B3;
		double a1 = f1 * f1 / (f1 * f1 - f2 * f2);
		double tgd =  eph->tgd; /**B1/B3  B2/B3*/
		*clk = *clk - a1 * tgd ;
	}
	if (strstr(mode, "ynn") != NULL)
		return 1;
	if (cprn[0] == 'C' && eph->signal_idx > 6) {
		f_prn = atoi(cprn + 1);
		if ((f_prn >= 38 && f_prn <= 40) || (f_prn >= 59 && f_prn <= 63)) {
			A0 = A_ref_igso + eph->delta_A;
		} else {
			A0 = A_ref_MEO + eph->delta_A;
		}
		a = AK = A0 + eph->A_DOT * dt;
		n0 = sqrt(GMEARTH / A0 / A0 / A0);
		delta_na = eph->dn + 0.5 * eph->delta_n_dot * dt;
		xn = n0 + delta_na;
		xm = eph->m0 + xn * dt;
	} else {
		a = eph->roota * eph->roota;
		xn = sqrt(GMEARTH / a / a / a);
		xn = xn + eph->dn;
		xm = eph->m0 + xn * dt;
	}
	ex = xm;
	e = eph->e;
	for (i = 0; i < 12; i++)
		ex = xm + e * sin(ex);
	v0 = 1.0 - e * cos(ex);
	vs = sqrt(1.0 - e * e) * sin(ex) / v0;
	vc = (cos(ex) - e) / v0;
	v = fabs(asin(vs));
	// decide vs
	if (vc >= 0) {
		if (vs < 0)
			v = 2.0 * PI - v;
	} else {
		if (vs <= 0)
			v = PI + v;
		else
			v = PI - v;
	}

	phi = v + eph->omega;
	ccc = cos(2.0 * phi);
	sss = sin(2.0 * phi);
	du = eph->cuc * ccc + eph->cus * sss;
	dr = eph->crc * ccc + eph->crs * sss;
	di = eph->cic * ccc + eph->cis * sss;
	r = a * (1.0 - e * cos(ex)) + dr;
	u = phi + du;

	xi = eph->i0 + eph->idot * dt + di;
	xx = r * cos(u);
	yy = r * sin(u);

	if (strstr(cprn, "C01") != NULL || strstr(cprn, "C02") != NULL
			|| strstr(cprn, "C03") != NULL || strstr(cprn, "C04") != NULL
			|| strstr(cprn, "C05") != NULL || strstr(cprn, "C59") != NULL) {
		xnode = eph->omega0 + eph->omegadot * dt;
	} else {
		xnode = eph->omega0 + (eph->omegadot - EARTH_ROTATE) * dt;
	}

	//IF THE TIME SYSTEM IS DIFFERENT,IT IS BETTER TO COMPUTE THE ORBIT IN THEIR OWN SYSTEM,
	//BECAUSE TOE WILL BE DIFFERENT IF YOU TRANSFORM IT TO OTHER SYSTEM

	xnode = xnode - EARTH_ROTATE * eph->toe;
	xsat[0] = xx * cos(xnode) - yy * cos(xi) * sin(xnode);
	xsat[1] = xx * sin(xnode) + yy * cos(xi) * cos(xnode);
	xsat[2] = yy * sin(xi);

	for (i = 0; i < 3; i++)
		svpos[i] = xsat[i];

	if (strstr(cprn, "C01") != NULL || strstr(cprn, "C02") != NULL
			|| strstr(cprn, "C03") != NULL || strstr(cprn, "C04") != NULL
			|| strstr(cprn, "C05") != NULL || strstr(cprn, "C59") != NULL) {
		// rx(-5.0*rad) for GEO
		pos[0] = xsat[0];
		pos[1] = cos(-5.0 * DEG2RAD) * xsat[1] + sin(-5.0 * DEG2RAD) * xsat[2];
		pos[2] = sin(5.0 * DEG2RAD) * xsat[1] + cos(-5.0 * DEG2RAD) * xsat[2];

		// rz(wearth*dt)
		xsat[0] = pos[0] * cos(EARTH_ROTATE * dt)
				+ pos[1] * sin(EARTH_ROTATE * dt);
		xsat[1] = -1.0 * pos[0] * sin(EARTH_ROTATE * dt)
				+ pos[1] * cos(EARTH_ROTATE * dt);
		xsat[2] = pos[2];
	}
	if (strstr(mode, "yyn") != NULL)
		return 1;
	asc = xnode;
	xinc = xi;
	xp = xx;
	yp = yy;

	edot = xn / (1 - e * cos(ex));
	cosf2 = cos(v / 2) * cos(v / 2);
	cose2 = cos(ex / 2) * cos(ex / 2);
	nudot = sqrt((1 + e) / (1 - e)) * cosf2 * edot / cose2;

	rdot = a * e * edot * sin(ex)
			+ 2 * (eph->crs * ccc - eph->crc * sss) * nudot;

	udot = (1 + 2.0 * eph->cus * ccc - 2.0 * eph->cuc * sss) * nudot;

	idot = eph->idot + 2.0 * (eph->cic * ccc - eph->cis * sss) * nudot;

	if (strstr(cprn, "C01") != NULL || strstr(cprn, "C02") != NULL
			|| strstr(cprn, "C03") != NULL || strstr(cprn, "C04") != NULL
			|| strstr(cprn, "C05") != NULL || strstr(cprn, "C59") != NULL ) {
		asctrm = eph->omegadot;
	} else {
		asctrm = eph->omegadot - EARTH_ROTATE;
	}

	xpdot = rdot * cos(u) - r * sin(u) * udot;
	ypdot = rdot * sin(u) + r * cos(u) * udot;

	xsat[3] = xpdot * cos(asc) - ypdot * cos(xinc) * sin(asc)
			+ yp * sin(asc) * sin(xinc) * idot - xp * sin(asc) * asctrm
			- yp * cos(xinc) * cos(asc) * asctrm;
	xsat[4] = xpdot * sin(asc) + ypdot * cos(xinc) * cos(asc)
			- yp * cos(asc) * sin(xinc) * idot + xp * cos(asc) * asctrm
			- yp * cos(xinc) * sin(asc) * asctrm;
	xsat[5] = ypdot * sin(xinc) + yp * cos(xinc) * idot;

	if (strstr(cprn, "C01") != NULL || strstr(cprn, "C02") != NULL
			|| strstr(cprn, "C03") != NULL || strstr(cprn, "C04") != NULL
			|| strstr(cprn, "C05") != NULL || strstr(cprn, "C59") != NULL) {
		// rx(-5.0*rad) for GEO
		geovel[0] = xsat[3];
		geovel[1] = cos(-5.0 * DEG2RAD) * xsat[4]
				+ sin(-5.0 * DEG2RAD) * xsat[5];
		geovel[2] = sin(5.0 * DEG2RAD) * xsat[4]
				+ cos(-5.0 * DEG2RAD) * xsat[5];

		// rz(wearth*dt)
		detavel[0] = geovel[0] * cos(EARTH_ROTATE * dt)
				+ geovel[1] * sin(EARTH_ROTATE * dt);
		detavel[1] = -1.0 * geovel[0] * sin(EARTH_ROTATE * dt)
				+ geovel[1] * cos(EARTH_ROTATE * dt);
		detavel[2] = geovel[2];

		// dot(R(w*t))*R(i)*XPOS
		geovel[0] = svpos[0];
		geovel[1] = cos(-5.0 * DEG2RAD) * svpos[1]
				+ sin(-5.0 * DEG2RAD) * svpos[2];
		geovel[2] = sin(5.0 * DEG2RAD) * svpos[1]
				+ cos(-5.0 * DEG2RAD) * svpos[2];

		// rz(wearth*dt)
		xsat[3] = EARTH_ROTATE
				* (-1.0 * geovel[0] * sin(EARTH_ROTATE * dt)
						+ geovel[1] * cos(EARTH_ROTATE * dt));
		xsat[4] = EARTH_ROTATE
				* (-1.0 * geovel[0] * cos(EARTH_ROTATE * dt)
						- geovel[1] * sin(EARTH_ROTATE * dt));
		xsat[5] = 0.0;

		// summary
		xsat[3] += detavel[0];
		xsat[4] += detavel[1];
		xsat[5] += detavel[2];
	}
	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x590, %rsp            # imm = 0x590
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movsd %xmm0, -0x30(%rbp)
movq %r8, -0x38(%rbp)
movq %r9, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x2b0(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x13960
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, -0x190(%rbp)
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
addl $-0x43, %eax
movl %eax, %ecx
movq %rcx, -0x2a8(%rbp)
subl $0x7, %eax
ja 0xd80e
movq -0x2a8(%rbp), %rax
leaq 0xa75b(%rip), %rcx      # 0x17ef0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsd 0xa52a(%rip), %xmm0     # 0x17cd0
movsd %xmm0, -0x58(%rbp)
movsd 0xa52d(%rip), %xmm0     # 0x17ce0
movsd %xmm0, -0x60(%rbp)
jmp 0xd828
movsd 0xa516(%rip), %xmm0     # 0x17cd8
movsd %xmm0, -0x58(%rbp)
movsd 0xa511(%rip), %xmm0     # 0x17ce0
movsd %xmm0, -0x60(%rbp)
jmp 0xd828
movsd 0xa4fa(%rip), %xmm0     # 0x17cd8
movsd %xmm0, -0x58(%rbp)
movsd 0xa4dd(%rip), %xmm0     # 0x17cc8
movsd %xmm0, -0x60(%rbp)
jmp 0xd828
movsd 0xa4d6(%rip), %xmm0     # 0x17cd0
movsd %xmm0, -0x58(%rbp)
movsd 0xa4c1(%rip), %xmm0     # 0x17cc8
movsd %xmm0, -0x60(%rbp)
jmp 0xd828
movsd 0xa4d2(%rip), %xmm0     # 0x17ce8
movsd %xmm0, -0x58(%rbp)
movsd 0xa4bd(%rip), %xmm0     # 0x17ce0
movsd %xmm0, -0x60(%rbp)
movl $0x0, -0x4c(%rbp)
movq -0x40(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x10(%rbp), %rax
movsd 0xa4aa(%rip), %xmm0     # 0x17cf0
movsd %xmm0, (%rax)
movq -0x20(%rbp), %rax
leaq 0xa6bb(%rip), %rdi      # 0x17f10
movsbl (%rax), %esi
callq 0x150f0
movq -0x2b0(%rbp), %rdi
movl %eax, -0x48(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x268(%rbp)
addq $0x28, %rdi
movslq -0x48(%rbp), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0x13980
movq %rax, -0x278(%rbp)
movq -0x278(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x2b0(%rbp), %rdi
addq $0x28, %rdi
movslq -0x48(%rbp), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0x139e0
movq %rax, -0x280(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x139b0
testb $0x1, %al
jne 0xd8d9
jmp 0xdbc9
leaq -0x258(%rbp), %rdi
callq 0x13a10
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x30c0
cmpq $0x0, %rax
je 0xdbb6
cvtsi2sdl -0x24(%rbp), %xmm0
movsd %xmm0, -0x2c8(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x13a10
movsd -0x2c8(%rbp), %xmm0
subsd 0xb8(%rax), %xmm0
movsd %xmm0, -0x2b8(%rbp)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x2c0(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x13a10
movsd -0x2c0(%rbp), %xmm1
movsd -0x2b8(%rbp), %xmm0
subsd 0x68(%rax), %xmm1
movsd 0x96a6(%rip), %xmm2     # 0x17008
divsd %xmm2, %xmm1
movsd 0xa38a(%rip), %xmm2     # 0x17cf8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movq 0x20(%rbp), %rax
cmpl $0x0, (%rax)
jl 0xda87
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x43, %eax
jne 0xda32
leaq -0x258(%rbp), %rdi
callq 0x13a10
movl 0x28(%rax), %eax
movq 0x20(%rbp), %rcx
cmpl (%rcx), %eax
je 0xd9f9
leaq -0x258(%rbp), %rdi
callq 0x13a10
movsd 0x100(%rax), %xmm0
movq 0x20(%rbp), %rax
cvtsi2sdl (%rax), %xmm1
ucomisd %xmm1, %xmm0
jne 0xd9d5
jp 0xd9d5
jmp 0xd9f9
leaq -0x258(%rbp), %rdi
callq 0x13a10
movsd 0xe8(%rax), %xmm0
movq 0x20(%rbp), %rax
cvtsi2sdl (%rax), %xmm1
ucomisd %xmm1, %xmm0
jne 0xda30
jp 0xda30
movsd -0x68(%rbp), %xmm0
movaps 0x966b(%rip), %xmm1     # 0x17070
pand %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
leaq -0x258(%rbp), %rdi
callq 0x13a10
movq %rax, -0x260(%rbp)
movl $0x1, -0x4c(%rbp)
jmp 0xdbc9
jmp 0xda82
leaq -0x258(%rbp), %rdi
callq 0x13a10
movl 0x28(%rax), %eax
movq 0x20(%rbp), %rcx
cmpl (%rcx), %eax
jne 0xda80
movsd -0x68(%rbp), %xmm0
movaps 0x961b(%rip), %xmm1     # 0x17070
pand %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
leaq -0x258(%rbp), %rdi
callq 0x13a10
movq %rax, -0x260(%rbp)
movl $0x1, -0x4c(%rbp)
jmp 0xdbc9
jmp 0xda82
jmp 0xdbb4
movq 0x20(%rbp), %rax
cmpl $-0x1, (%rax)
jne 0xdae5
movsd -0x68(%rbp), %xmm1
movaps 0x95d4(%rip), %xmm0     # 0x17070
pand %xmm0, %xmm1
movq 0x10(%rbp), %rax
movsd (%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0xdae0
movsd -0x68(%rbp), %xmm0
movaps 0x95b6(%rip), %xmm1     # 0x17070
pand %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
leaq -0x258(%rbp), %rdi
callq 0x13a10
movq %rax, -0x260(%rbp)
movl $0x1, -0x4c(%rbp)
jmp 0xdbb2
movq 0x20(%rbp), %rax
cmpl $-0x2, (%rax)
jne 0xdbb0
leaq -0x258(%rbp), %rdi
callq 0x13a10
cvtsi2sdl 0x4(%rax), %xmm0
movsd %xmm0, -0x2d0(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x13a10
movsd -0x2d0(%rbp), %xmm0
movsd 0x8(%rax), %xmm1
movsd 0x9504(%rip), %xmm2     # 0x17030
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x270(%rbp)
movsd -0x270(%rbp), %xmm0
ucomisd -0x268(%rbp), %xmm0
jbe 0xdbae
movsd -0x68(%rbp), %xmm1
movaps 0x9516(%rip), %xmm0     # 0x17070
pand %xmm0, %xmm1
movsd -0x190(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0xdbae
movsd -0x270(%rbp), %xmm0
movsd %xmm0, -0x268(%rbp)
movsd -0x68(%rbp), %xmm0
movaps 0x94e8(%rip), %xmm1     # 0x17070
pand %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
movl $0x1, -0x4c(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x13a10
movq %rax, -0x260(%rbp)
jmp 0xdbb0
jmp 0xdbb2
jmp 0xdbb4
jmp 0xdbb6
jmp 0xdbb8
leaq -0x258(%rbp), %rdi
callq 0x13a30
jmp 0xd89b
cmpl $0x0, -0x4c(%rbp)
jne 0xdbdb
movl $0x0, -0x4(%rbp)
jmp 0xf78a
movq -0x260(%rbp), %rax
movl 0x28(%rax), %ecx
movq 0x20(%rbp), %rax
movl %ecx, (%rax)
cvtsi2sdl -0x24(%rbp), %xmm0
movq -0x260(%rbp), %rax
subsd 0xb8(%rax), %xmm0
movsd -0x30(%rbp), %xmm1
movsd 0xa0f4(%rip), %xmm2     # 0x17d00
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x260(%rbp), %rax
subsd 0x68(%rax), %xmm0
movsd %xmm0, -0x68(%rbp)
imull $0x7, -0x24(%rbp), %eax
addl $0xacd4, %eax           # imm = 0xACD4
movq -0x260(%rbp), %rcx
subl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm0
movsd -0x30(%rbp), %xmm1
movsd 0x93e7(%rip), %xmm2     # 0x17030
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x260(%rbp), %rax
subsd 0x8(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
movq -0x260(%rbp), %rax
movsd 0x10(%rax), %xmm1
movq -0x260(%rbp), %rax
movsd 0x18(%rax), %xmm2
movq -0x260(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd -0x70(%rbp), %xmm3
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movsd -0x70(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x40(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x260(%rbp), %rax
movsd 0xd8(%rax), %xmm0
movq 0x18(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x43, %eax
jne 0xdda0
movsd 0xa039(%rip), %xmm0     # 0x17d10
movsd %xmm0, -0x288(%rbp)
movsd 0xa021(%rip), %xmm0     # 0x17d08
movsd %xmm0, -0x290(%rbp)
movsd -0x288(%rbp), %xmm0
mulsd -0x288(%rbp), %xmm0
movsd -0x288(%rbp), %xmm1
movsd -0x288(%rbp), %xmm3
movsd -0x290(%rbp), %xmm2
mulsd -0x290(%rbp), %xmm2
movq %xmm2, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x298(%rbp)
movq -0x260(%rbp), %rax
movsd 0xd8(%rax), %xmm0
movsd %xmm0, -0x2a0(%rbp)
movq -0x40(%rbp), %rax
movsd (%rax), %xmm1
movsd -0x298(%rbp), %xmm0
movsd -0x2a0(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x40(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rdi
leaq 0xa18e(%rip), %rsi      # 0x17f39
callq 0x30c0
cmpq $0x0, %rax
je 0xddc2
movl $0x1, -0x4(%rbp)
jmp 0xf78a
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x43, %eax
jne 0xdf37
movq -0x260(%rbp), %rax
movsd 0xf8(%rax), %xmm0
movsd 0x9f2f(%rip), %xmm1     # 0x17d18
ucomisd %xmm1, %xmm0
jbe 0xdf37
movq -0x20(%rbp), %rdi
addq $0x1, %rdi
callq 0x3440
movl %eax, -0x50(%rbp)
cmpl $0x26, -0x50(%rbp)
jl 0xde0f
cmpl $0x28, -0x50(%rbp)
jle 0xde1b
cmpl $0x3b, -0x50(%rbp)
jl 0xde3c
cmpl $0x3f, -0x50(%rbp)
jg 0xde3c
movq -0x260(%rbp), %rax
movsd 0x9efe(%rip), %xmm0     # 0x17d28
addsd 0x1d8(%rax), %xmm0
movsd %xmm0, -0x238(%rbp)
jmp 0xde5b
movq -0x260(%rbp), %rax
movsd 0x9ed5(%rip), %xmm0     # 0x17d20
addsd 0x1d8(%rax), %xmm0
movsd %xmm0, -0x238(%rbp)
movsd -0x238(%rbp), %xmm1
movq -0x260(%rbp), %rax
movsd 0x1e0(%rax), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x240(%rbp)
movsd %xmm0, -0xf8(%rbp)
movsd -0x58(%rbp), %xmm0
divsd -0x238(%rbp), %xmm0
divsd -0x238(%rbp), %xmm0
divsd -0x238(%rbp), %xmm0
callq 0x3220
movsd %xmm0, -0x248(%rbp)
movq -0x260(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x260(%rbp), %rax
movsd 0x9e5c(%rip), %xmm0     # 0x17d30
mulsd 0x1e8(%rax), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x250(%rbp)
movsd -0x248(%rbp), %xmm0
addsd -0x250(%rbp), %xmm0
movsd %xmm0, -0x100(%rbp)
movq -0x260(%rbp), %rax
movsd 0x40(%rax), %xmm1
movsd -0x100(%rbp), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x108(%rbp)
jmp 0xdfc6
movq -0x260(%rbp), %rax
movsd 0x60(%rax), %xmm0
movq -0x260(%rbp), %rax
mulsd 0x60(%rax), %xmm0
movsd %xmm0, -0xf8(%rbp)
movsd -0x58(%rbp), %xmm0
divsd -0xf8(%rbp), %xmm0
divsd -0xf8(%rbp), %xmm0
divsd -0xf8(%rbp), %xmm0
callq 0x3220
movsd %xmm0, -0x100(%rbp)
movsd -0x100(%rbp), %xmm0
movq -0x260(%rbp), %rax
addsd 0x38(%rax), %xmm0
movsd %xmm0, -0x100(%rbp)
movq -0x260(%rbp), %rax
movsd 0x40(%rax), %xmm1
movsd -0x100(%rbp), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x108(%rbp)
movsd -0x108(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
movq -0x260(%rbp), %rax
movsd 0x50(%rax), %xmm0
movsd %xmm0, -0x118(%rbp)
movl $0x0, -0x44(%rbp)
cmpl $0xc, -0x44(%rbp)
jge 0xe052
movsd -0x108(%rbp), %xmm0
movsd %xmm0, -0x2e0(%rbp)
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x2d8(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x30b0
movsd -0x2e0(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x2d8(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0xdff1
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x2f0(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x2f0(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x9c9b(%rip), %xmm1     # 0x17d38
addsd %xmm1, %xmm0
movsd %xmm0, -0x120(%rbp)
movsd -0x118(%rbp), %xmm0
movsd -0x118(%rbp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x9c5c(%rip), %xmm1     # 0x17d38
addsd %xmm1, %xmm0
callq 0x3220
movsd %xmm0, -0x2e8(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x30b0
movaps %xmm0, %xmm1
movsd -0x2e8(%rbp), %xmm0
mulsd %xmm1, %xmm0
divsd -0x120(%rbp), %xmm0
movsd %xmm0, -0x128(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x3500
subsd -0x118(%rbp), %xmm0
divsd -0x120(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
movsd -0x128(%rbp), %xmm0
callq 0x3480
movaps 0x8f1e(%rip), %xmm1     # 0x17070
pand %xmm1, %xmm0
movsd %xmm0, -0x1d8(%rbp)
movsd -0x130(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xe196
xorps %xmm0, %xmm0
ucomisd -0x128(%rbp), %xmm0
jbe 0xe194
movsd 0x9bc4(%rip), %xmm0     # 0x17d48
subsd -0x1d8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
jmp 0xe1d7
xorps %xmm0, %xmm0
ucomisd -0x128(%rbp), %xmm0
jb 0xe1bd
movsd 0x9b95(%rip), %xmm0     # 0x17d40
addsd -0x1d8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
jmp 0xe1d5
movsd 0x9b7b(%rip), %xmm0     # 0x17d40
subsd -0x1d8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
jmp 0xe1d7
movsd -0x1d8(%rbp), %xmm0
movq -0x260(%rbp), %rax
addsd 0x98(%rax), %xmm0
movsd %xmm0, -0x138(%rbp)
movsd 0x9b52(%rip), %xmm0     # 0x17d50
mulsd -0x138(%rbp), %xmm0
callq 0x3500
movsd %xmm0, -0x140(%rbp)
movsd 0x9b35(%rip), %xmm0     # 0x17d50
mulsd -0x138(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x148(%rbp)
movq -0x260(%rbp), %rax
movsd 0x48(%rax), %xmm0
movsd -0x140(%rbp), %xmm2
movq -0x260(%rbp), %rax
movsd 0x58(%rax), %xmm1
mulsd -0x148(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x150(%rbp)
movq -0x260(%rbp), %rax
movsd 0x90(%rax), %xmm0
movsd -0x140(%rbp), %xmm2
movq -0x260(%rbp), %rax
movsd 0x30(%rax), %xmm1
mulsd -0x148(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x158(%rbp)
movq -0x260(%rbp), %rax
movsd 0x70(%rax), %xmm0
movsd -0x140(%rbp), %xmm2
movq -0x260(%rbp), %rax
movsd 0x80(%rax), %xmm1
mulsd -0x148(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x160(%rbp)
movsd -0xf8(%rbp), %xmm0
movsd %xmm0, -0x308(%rbp)
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x310(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x3500
movsd -0x310(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x308(%rbp), %xmm0
movq %xmm2, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm2
mulsd %xmm1, %xmm2
movsd 0x99f7(%rip), %xmm1     # 0x17d38
addsd %xmm1, %xmm2
movsd -0x158(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x168(%rbp)
movsd -0x138(%rbp), %xmm0
addsd -0x150(%rbp), %xmm0
movsd %xmm0, -0x170(%rbp)
movq -0x260(%rbp), %rax
movsd 0x88(%rax), %xmm1
movq -0x260(%rbp), %rax
movsd 0xa8(%rax), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd -0x160(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x300(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x300(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x180(%rbp)
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x2f8(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x30b0
movaps %xmm0, %xmm1
movsd -0x2f8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x188(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x9b1a(%rip), %rsi      # 0x17f3d
callq 0x30c0
cmpq $0x0, %rax
jne 0xe49c
movq -0x20(%rbp), %rdi
leaq 0x9b08(%rip), %rsi      # 0x17f41
callq 0x30c0
cmpq $0x0, %rax
jne 0xe49c
movq -0x20(%rbp), %rdi
leaq 0x9af6(%rip), %rsi      # 0x17f45
callq 0x30c0
cmpq $0x0, %rax
jne 0xe49c
movq -0x20(%rbp), %rdi
leaq 0x9ae4(%rip), %rsi      # 0x17f49
callq 0x30c0
cmpq $0x0, %rax
jne 0xe49c
movq -0x20(%rbp), %rdi
leaq 0x9ad2(%rip), %rsi      # 0x17f4d
callq 0x30c0
cmpq $0x0, %rax
jne 0xe49c
movq -0x20(%rbp), %rdi
leaq 0x9ac0(%rip), %rsi      # 0x17f51
callq 0x30c0
cmpq $0x0, %rax
je 0xe4ce
movq -0x260(%rbp), %rax
movsd 0x78(%rax), %xmm1
movq -0x260(%rbp), %rax
movsd 0xa0(%rax), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
jmp 0xe503
movq -0x260(%rbp), %rax
movsd 0x78(%rax), %xmm1
movq -0x260(%rbp), %rax
movsd 0xa0(%rax), %xmm0
subsd -0x60(%rbp), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
movsd -0x198(%rbp), %xmm1
movsd -0x60(%rbp), %xmm0
movq -0x260(%rbp), %rax
movsd 0x68(%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
movsd -0x180(%rbp), %xmm0
movsd %xmm0, -0x340(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x3500
movsd %xmm0, -0x348(%rbp)
movsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x358(%rbp)
movsd -0x178(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x358(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x350(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x30b0
movsd -0x350(%rbp), %xmm1
movsd -0x348(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x340(%rbp), %xmm0
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x180(%rbp), %xmm0
movsd %xmm0, -0x320(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x328(%rbp)
movsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x338(%rbp)
movsd -0x178(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x338(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x330(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x3500
movsd -0x330(%rbp), %xmm1
movsd -0x328(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x320(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x8(%rax)
movsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x318(%rbp)
movsd -0x178(%rbp), %xmm0
callq 0x30b0
movaps %xmm0, %xmm1
movsd -0x318(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movl $0x0, -0x44(%rbp)
cmpl $0x3, -0x44(%rbp)
jge 0xe6ec
movq -0x38(%rbp), %rax
movslq -0x44(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movslq -0x44(%rbp), %rax
movsd %xmm0, -0xb0(%rbp,%rax,8)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0xe6c1
movq -0x20(%rbp), %rdi
leaq 0x9846(%rip), %rsi      # 0x17f3d
callq 0x30c0
cmpq $0x0, %rax
jne 0xe774
movq -0x20(%rbp), %rdi
leaq 0x9834(%rip), %rsi      # 0x17f41
callq 0x30c0
cmpq $0x0, %rax
jne 0xe774
movq -0x20(%rbp), %rdi
leaq 0x9822(%rip), %rsi      # 0x17f45
callq 0x30c0
cmpq $0x0, %rax
jne 0xe774
movq -0x20(%rbp), %rdi
leaq 0x9810(%rip), %rsi      # 0x17f49
callq 0x30c0
cmpq $0x0, %rax
jne 0xe774
movq -0x20(%rbp), %rdi
leaq 0x97fe(%rip), %rsi      # 0x17f4d
callq 0x30c0
cmpq $0x0, %rax
jne 0xe774
movq -0x20(%rbp), %rdi
leaq 0x97ec(%rip), %rsi      # 0x17f51
callq 0x30c0
cmpq $0x0, %rax
je 0xe940
movq -0x38(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x95d4(%rip), %xmm0     # 0x17d60
callq 0x3500
movsd %xmm0, -0x3a0(%rbp)
movq -0x38(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x3a8(%rbp)
movsd 0x95ae(%rip), %xmm0     # 0x17d60
callq 0x30b0
movsd -0x3a8(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x3a0(%rbp), %xmm0
movq -0x38(%rbp), %rax
mulsd 0x10(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x957d(%rip), %xmm0     # 0x17d68
callq 0x30b0
movsd %xmm0, -0x390(%rbp)
movq -0x38(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x398(%rbp)
movsd 0x954f(%rip), %xmm0     # 0x17d60
callq 0x3500
movsd -0x398(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x390(%rbp), %xmm0
movq -0x38(%rbp), %rax
mulsd 0x10(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x378(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x3500
movsd %xmm0, -0x380(%rbp)
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x388(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x30b0
movsd -0x388(%rbp), %xmm1
movsd -0x380(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x378(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, (%rax)
movsd 0x949c(%rip), %xmm0     # 0x17d58
mulsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x360(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x368(%rbp)
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x370(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x3500
movsd -0x370(%rbp), %xmm1
movsd -0x368(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x360(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x8(%rax)
movsd -0x80(%rbp), %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movq -0x18(%rbp), %rdi
leaq 0x960a(%rip), %rsi      # 0x17f55
callq 0x30c0
cmpq $0x0, %rax
je 0xe962
movl $0x1, -0x4(%rbp)
jmp 0xf78a
movsd -0x198(%rbp), %xmm0
movsd %xmm0, -0x1b0(%rbp)
movsd -0x178(%rbp), %xmm0
movsd %xmm0, -0x1b8(%rbp)
movsd -0x180(%rbp), %xmm0
movsd %xmm0, -0x1c0(%rbp)
movsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x1c8(%rbp)
movsd -0x100(%rbp), %xmm0
movsd %xmm0, -0x3c8(%rbp)
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x3d0(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x3500
movsd -0x3d0(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x3c8(%rbp), %xmm0
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
movsd 0x9333(%rip), %xmm2     # 0x17d38
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x1e0(%rbp)
movsd -0x1d8(%rbp), %xmm0
movsd 0x932b(%rip), %xmm1     # 0x17d50
divsd %xmm1, %xmm0
callq 0x3500
movsd %xmm0, -0x3c0(%rbp)
movsd -0x1d8(%rbp), %xmm0
movsd 0x930a(%rip), %xmm1     # 0x17d50
divsd %xmm1, %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x3c0(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1e8(%rbp)
movsd -0x110(%rbp), %xmm0
movsd 0x92da(%rip), %xmm1     # 0x17d50
divsd %xmm1, %xmm0
callq 0x3500
movsd %xmm0, -0x3b8(%rbp)
movsd -0x110(%rbp), %xmm0
movsd 0x92b9(%rip), %xmm1     # 0x17d50
divsd %xmm1, %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x3b8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1f0(%rbp)
movsd 0x9279(%rip), %xmm0     # 0x17d38
addsd -0x118(%rbp), %xmm0
movsd 0x9269(%rip), %xmm1     # 0x17d38
subsd -0x118(%rbp), %xmm1
divsd %xmm1, %xmm0
callq 0x3220
mulsd -0x1e8(%rbp), %xmm0
mulsd -0x1e0(%rbp), %xmm0
divsd -0x1f0(%rbp), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movsd -0xf8(%rbp), %xmm0
mulsd -0x118(%rbp), %xmm0
mulsd -0x1e0(%rbp), %xmm0
movsd %xmm0, -0x3b0(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x30b0
movaps %xmm0, %xmm2
movsd -0x3b0(%rbp), %xmm0
movq -0x260(%rbp), %rax
movsd 0x30(%rax), %xmm3
movsd -0x140(%rbp), %xmm4
movq -0x260(%rbp), %rax
movsd 0x90(%rax), %xmm1
mulsd -0x148(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm4, %xmm3
addsd %xmm1, %xmm3
movsd 0x91c6(%rip), %xmm1     # 0x17d50
mulsd %xmm3, %xmm1
mulsd -0x1f8(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x200(%rbp)
movq -0x260(%rbp), %rax
movsd 0x919b(%rip), %xmm1     # 0x17d50
mulsd 0x58(%rax), %xmm1
movsd -0x140(%rbp), %xmm0
mulsd %xmm0, %xmm1
movsd 0x916a(%rip), %xmm0     # 0x17d38
addsd %xmm0, %xmm1
movq -0x260(%rbp), %rax
movsd 0x916f(%rip), %xmm0     # 0x17d50
mulsd 0x48(%rax), %xmm0
movsd -0x148(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
mulsd -0x1f8(%rbp), %xmm0
movsd %xmm0, -0x208(%rbp)
movq -0x260(%rbp), %rax
movsd 0xa8(%rax), %xmm1
movq -0x260(%rbp), %rax
movsd 0x70(%rax), %xmm2
movsd -0x140(%rbp), %xmm3
movq -0x260(%rbp), %rax
movsd 0x80(%rax), %xmm0
mulsd -0x148(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm3, %xmm2
addsd %xmm0, %xmm2
movsd 0x90d2(%rip), %xmm0     # 0x17d50
mulsd %xmm2, %xmm0
movsd -0x1f8(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x210(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x9298(%rip), %rsi      # 0x17f3d
callq 0x30c0
cmpq $0x0, %rax
jne 0xed1e
movq -0x20(%rbp), %rdi
leaq 0x9286(%rip), %rsi      # 0x17f41
callq 0x30c0
cmpq $0x0, %rax
jne 0xed1e
movq -0x20(%rbp), %rdi
leaq 0x9274(%rip), %rsi      # 0x17f45
callq 0x30c0
cmpq $0x0, %rax
jne 0xed1e
movq -0x20(%rbp), %rdi
leaq 0x9262(%rip), %rsi      # 0x17f49
callq 0x30c0
cmpq $0x0, %rax
jne 0xed1e
movq -0x20(%rbp), %rdi
leaq 0x9250(%rip), %rsi      # 0x17f4d
callq 0x30c0
cmpq $0x0, %rax
jne 0xed1e
movq -0x20(%rbp), %rdi
leaq 0x923e(%rip), %rsi      # 0x17f51
callq 0x30c0
cmpq $0x0, %rax
je 0xed37
movq -0x260(%rbp), %rax
movsd 0xa0(%rax), %xmm0
movsd %xmm0, -0x1d0(%rbp)
jmp 0xed53
movq -0x260(%rbp), %rax
movsd 0xa0(%rax), %xmm0
subsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x1d0(%rbp)
movsd -0x200(%rbp), %xmm0
movsd %xmm0, -0x4c8(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x3500
movsd %xmm0, -0x4d0(%rbp)
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x4d8(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x30b0
movsd -0x4d8(%rbp), %xmm1
movsd -0x4d0(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x4c8(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd -0x208(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x1a0(%rbp)
movsd -0x200(%rbp), %xmm0
movsd %xmm0, -0x4b0(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x4b8(%rbp)
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x4c0(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x3500
movsd -0x4c0(%rbp), %xmm1
movsd -0x4b8(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x4b0(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd -0x208(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x1a8(%rbp)
movsd -0x1a0(%rbp), %xmm0
movsd %xmm0, -0x490(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x3500
movsd %xmm0, -0x498(%rbp)
movsd -0x1a8(%rbp), %xmm0
movsd %xmm0, -0x4a8(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x4a8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x4a0(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x30b0
movsd -0x4a0(%rbp), %xmm1
movsd -0x498(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x490(%rbp), %xmm0
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x480(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x488(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x30b0
movaps %xmm0, %xmm1
movsd -0x488(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x478(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x30b0
movsd -0x480(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x478(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x210(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x470(%rbp)
movsd -0x1c0(%rbp), %xmm0
movsd %xmm0, -0x468(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x30b0
movsd -0x470(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x468(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x1d0(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x458(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x460(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x460(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x450(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x3500
movsd -0x458(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x450(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x1d0(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x18(%rax)
movsd -0x1a0(%rbp), %xmm0
movsd %xmm0, -0x430(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x438(%rbp)
movsd -0x1a8(%rbp), %xmm0
movsd %xmm0, -0x448(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x448(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x440(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x3500
movsd -0x440(%rbp), %xmm1
movsd -0x438(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x430(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x420(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x428(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x428(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x418(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x30b0
movsd -0x420(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x418(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x210(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x410(%rbp)
movsd -0x1c0(%rbp), %xmm0
movsd %xmm0, -0x408(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x3500
movsd -0x410(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x408(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x1d0(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x3f8(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x400(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x3500
movaps %xmm0, %xmm1
movsd -0x400(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x3f0(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x30b0
movsd -0x3f8(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x3f0(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x1d0(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x20(%rax)
movsd -0x1a8(%rbp), %xmm0
movsd %xmm0, -0x3d8(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x3e0(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x3e8(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x3500
movsd -0x3e8(%rbp), %xmm1
movsd -0x3e0(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x3d8(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd -0x210(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x28(%rax)
movq -0x20(%rbp), %rdi
leaq 0x8c65(%rip), %rsi      # 0x17f3d
callq 0x30c0
cmpq $0x0, %rax
jne 0xf355
movq -0x20(%rbp), %rdi
leaq 0x8c53(%rip), %rsi      # 0x17f41
callq 0x30c0
cmpq $0x0, %rax
jne 0xf355
movq -0x20(%rbp), %rdi
leaq 0x8c41(%rip), %rsi      # 0x17f45
callq 0x30c0
cmpq $0x0, %rax
jne 0xf355
movq -0x20(%rbp), %rdi
leaq 0x8c2f(%rip), %rsi      # 0x17f49
callq 0x30c0
cmpq $0x0, %rax
jne 0xf355
movq -0x20(%rbp), %rdi
leaq 0x8c1d(%rip), %rsi      # 0x17f4d
callq 0x30c0
cmpq $0x0, %rax
jne 0xf355
movq -0x20(%rbp), %rdi
leaq 0x8c0b(%rip), %rsi      # 0x17f51
callq 0x30c0
cmpq $0x0, %rax
je 0xf783
movq -0x38(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd 0x89f2(%rip), %xmm0     # 0x17d60
callq 0x3500
movsd %xmm0, -0x580(%rbp)
movq -0x38(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x588(%rbp)
movsd 0x89cc(%rip), %xmm0     # 0x17d60
callq 0x30b0
movsd -0x588(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x580(%rbp), %xmm0
movq -0x38(%rbp), %rax
mulsd 0x28(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd 0x899b(%rip), %xmm0     # 0x17d68
callq 0x30b0
movsd %xmm0, -0x570(%rbp)
movq -0x38(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x578(%rbp)
movsd 0x896d(%rip), %xmm0     # 0x17d60
callq 0x3500
movsd -0x578(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x570(%rbp), %xmm0
movq -0x38(%rbp), %rax
mulsd 0x28(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x558(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x3500
movsd %xmm0, -0x560(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x568(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x30b0
movsd -0x568(%rbp), %xmm1
movsd -0x560(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x558(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd 0x88b7(%rip), %xmm0     # 0x17d58
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x540(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x548(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x550(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x3500
movsd -0x550(%rbp), %xmm1
movsd -0x548(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x540(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xe8(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd 0x8822(%rip), %xmm0     # 0x17d60
callq 0x3500
movsd %xmm0, -0x530(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x538(%rbp)
movsd 0x87fd(%rip), %xmm0     # 0x17d60
callq 0x30b0
movsd -0x538(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x530(%rbp), %xmm0
mulsd -0xa0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd 0x87cd(%rip), %xmm0     # 0x17d68
callq 0x30b0
movsd %xmm0, -0x520(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x528(%rbp)
movsd 0x87a0(%rip), %xmm0     # 0x17d60
callq 0x3500
movsd -0x528(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x520(%rbp), %xmm0
mulsd -0xa0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x500(%rbp)
movsd 0x8753(%rip), %xmm0     # 0x17d58
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x510(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x30b0
movsd %xmm0, -0x508(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x518(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x3500
movsd -0x518(%rbp), %xmm2
movsd -0x510(%rbp), %xmm1
movsd -0x508(%rbp), %xmm3
movaps %xmm0, %xmm4
movsd -0x500(%rbp), %xmm0
mulsd %xmm4, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x18(%rax)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x4e0(%rbp)
movsd 0x86bc(%rip), %xmm0     # 0x17d58
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x4f0(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x3500
movsd %xmm0, -0x4e8(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x4f8(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x30b0
movsd -0x4f8(%rbp), %xmm2
movsd -0x4f0(%rbp), %xmm1
movsd -0x4e8(%rbp), %xmm3
movaps %xmm0, %xmm4
movsd -0x4e0(%rbp), %xmm0
mulsd %xmm4, %xmm2
movq %xmm2, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x20(%rax)
movq -0x38(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x28(%rax)
movsd -0xf0(%rbp), %xmm0
movq -0x38(%rbp), %rax
addsd 0x18(%rax), %xmm0
movsd %xmm0, 0x18(%rax)
movsd -0xe8(%rbp), %xmm0
movq -0x38(%rbp), %rax
addsd 0x20(%rax), %xmm0
movsd %xmm0, 0x20(%rax)
movsd -0xe0(%rbp), %xmm0
movq -0x38(%rbp), %rax
addsd 0x28(%rax), %xmm0
movsd %xmm0, 0x28(%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x590, %rsp            # imm = 0x590
popq %rbp
retq
nopw %cs:(%rax,%rax)