// File: DoubleString[P]RtConverter/src/Rnxbrd/BroadcastEphUtils.cpp
// Function: bamboo::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;
	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;
	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 = 8.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 ((*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'){
//		// change the broadcast sclock into L2/L5
//		r_bds=(BDS_B1*BDS_B1)/(BDS_B2*BDS_B2);
//		*clk=*clk-r_bds/(r_bds-1)*eph->tgd+1/(r_bds-1)*eph->tgd1;
//	}
	if (strstr(mode, "ynn") != NULL)
		return 1;
	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) {
		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) {
		// 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) {
		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) {
		// 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 $0x530, %rsp            # imm = 0x530
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, -0x250(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x546b0
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, -0x190(%rbp)
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
addl $-0x43, %eax
movl %eax, %ecx
movq %rcx, -0x248(%rbp)
subl $0x7, %eax
ja 0xb494e
movq -0x248(%rbp), %rax
leaq 0x1790b(%rip), %rcx     # 0xcc1e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsd 0x177d2(%rip), %xmm0    # 0xcc0b8
movsd %xmm0, -0x58(%rbp)
movsd 0x12c3d(%rip), %xmm0    # 0xc7530
movsd %xmm0, -0x60(%rbp)
jmp 0xb4968
movsd 0x177be(%rip), %xmm0    # 0xcc0c0
movsd %xmm0, -0x58(%rbp)
movsd 0x12c21(%rip), %xmm0    # 0xc7530
movsd %xmm0, -0x60(%rbp)
jmp 0xb4968
movsd 0x177a2(%rip), %xmm0    # 0xcc0c0
movsd %xmm0, -0x58(%rbp)
movsd 0x17785(%rip), %xmm0    # 0xcc0b0
movsd %xmm0, -0x60(%rbp)
jmp 0xb4968
movsd 0x1777e(%rip), %xmm0    # 0xcc0b8
movsd %xmm0, -0x58(%rbp)
movsd 0x17769(%rip), %xmm0    # 0xcc0b0
movsd %xmm0, -0x60(%rbp)
jmp 0xb4968
movsd 0x17772(%rip), %xmm0    # 0xcc0c8
movsd %xmm0, -0x58(%rbp)
movsd 0x12bcd(%rip), %xmm0    # 0xc7530
movsd %xmm0, -0x60(%rbp)
movl $0x0, -0x4c(%rbp)
movq -0x40(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x10(%rbp), %rax
movsd 0x85f2(%rip), %xmm0     # 0xbcf78
movsd %xmm0, (%rax)
movq -0x20(%rbp), %rax
leaq 0x1786b(%rip), %rdi     # 0xcc200
movsbl (%rax), %esi
callq 0x340b0
movq -0x250(%rbp), %rdi
movl %eax, -0x48(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x228(%rbp)
addq $0x28, %rdi
movslq -0x48(%rbp), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0x546d0
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x250(%rbp), %rdi
addq $0x28, %rdi
movslq -0x48(%rbp), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0x54730
movq %rax, -0x240(%rbp)
leaq -0x218(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x54700
testb $0x1, %al
jne 0xb4a19
jmp 0xb4c59
leaq -0x218(%rbp), %rdi
callq 0x54830
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x91b0
cmpq $0x0, %rax
je 0xb4c46
cvtsi2sdl -0x24(%rbp), %xmm0
movsd %xmm0, -0x268(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x54830
movsd -0x268(%rbp), %xmm0
subsd 0xb8(%rax), %xmm0
movsd %xmm0, -0x258(%rbp)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x260(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x54830
movsd -0x260(%rbp), %xmm1
movsd -0x258(%rbp), %xmm0
subsd 0x68(%rax), %xmm1
movsd 0x836e(%rip), %xmm2     # 0xbce10
divsd %xmm2, %xmm1
movsd 0x17622(%rip), %xmm2    # 0xcc0d0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movq 0x20(%rbp), %rax
cmpl $0x0, (%rax)
jl 0xb4b17
leaq -0x218(%rbp), %rdi
callq 0x54830
movl 0x28(%rax), %eax
movq 0x20(%rbp), %rcx
cmpl (%rcx), %eax
jne 0xb4b12
movsd -0x68(%rbp), %xmm0
movaps 0x8739(%rip), %xmm1     # 0xbd220
pand %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
leaq -0x218(%rbp), %rdi
callq 0x54830
movq %rax, -0x220(%rbp)
movl $0x1, -0x4c(%rbp)
jmp 0xb4c59
jmp 0xb4c44
movq 0x20(%rbp), %rax
cmpl $-0x1, (%rax)
jne 0xb4b75
movsd -0x68(%rbp), %xmm1
movaps 0x86f4(%rip), %xmm0     # 0xbd220
pand %xmm0, %xmm1
movq 0x10(%rbp), %rax
movsd (%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0xb4b70
movsd -0x68(%rbp), %xmm0
movaps 0x86d6(%rip), %xmm1     # 0xbd220
pand %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
leaq -0x218(%rbp), %rdi
callq 0x54830
movq %rax, -0x220(%rbp)
movl $0x1, -0x4c(%rbp)
jmp 0xb4c42
movq 0x20(%rbp), %rax
cmpl $-0x2, (%rax)
jne 0xb4c40
leaq -0x218(%rbp), %rdi
callq 0x54830
cvtsi2sdl 0x4(%rax), %xmm0
movsd %xmm0, -0x270(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x54830
movsd -0x270(%rbp), %xmm0
movsd 0x8(%rax), %xmm1
movsd 0x8264(%rip), %xmm2     # 0xbce20
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x230(%rbp)
movsd -0x230(%rbp), %xmm0
ucomisd -0x228(%rbp), %xmm0
jbe 0xb4c3e
movsd -0x68(%rbp), %xmm1
movaps 0x8636(%rip), %xmm0     # 0xbd220
pand %xmm0, %xmm1
movsd -0x190(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0xb4c3e
movsd -0x230(%rbp), %xmm0
movsd %xmm0, -0x228(%rbp)
movsd -0x68(%rbp), %xmm0
movaps 0x8608(%rip), %xmm1     # 0xbd220
pand %xmm1, %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
movl $0x1, -0x4c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x54830
movq %rax, -0x220(%rbp)
jmp 0xb4c40
jmp 0xb4c42
jmp 0xb4c44
jmp 0xb4c46
jmp 0xb4c48
leaq -0x218(%rbp), %rdi
callq 0x54aa0
jmp 0xb49db
cmpl $0x0, -0x4c(%rbp)
jne 0xb4c6b
movl $0x0, -0x4(%rbp)
jmp 0xb656c
movq -0x220(%rbp), %rax
movl 0x28(%rax), %ecx
movq 0x20(%rbp), %rax
movl %ecx, (%rax)
cvtsi2sdl -0x24(%rbp), %xmm0
movq -0x220(%rbp), %rax
subsd 0xb8(%rax), %xmm0
movsd -0x30(%rbp), %xmm1
movsd 0x90cc(%rip), %xmm2     # 0xbdd68
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x220(%rbp), %rax
subsd 0x68(%rax), %xmm0
movsd %xmm0, -0x68(%rbp)
imull $0x7, -0x24(%rbp), %eax
addl $0xacd4, %eax           # imm = 0xACD4
movq -0x220(%rbp), %rcx
subl 0x4(%rcx), %eax
cvtsi2sd %eax, %xmm0
movsd -0x30(%rbp), %xmm1
movsd 0x8147(%rip), %xmm2     # 0xbce20
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x220(%rbp), %rax
subsd 0x8(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
movq -0x220(%rbp), %rax
movsd 0x10(%rax), %xmm1
movq -0x220(%rbp), %rax
movsd 0x18(%rax), %xmm2
movq -0x220(%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 -0x220(%rbp), %rax
movsd 0xd8(%rax), %xmm0
movq 0x18(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rdi
leaq 0x174cb(%rip), %rsi     # 0xcc225
callq 0x91b0
cmpq $0x0, %rax
je 0xb4d71
movl $0x1, -0x4(%rbp)
jmp 0xb656c
movq -0x220(%rbp), %rax
movsd 0x60(%rax), %xmm0
movq -0x220(%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 0x95e0
movsd %xmm0, -0x100(%rbp)
movsd -0x100(%rbp), %xmm0
movq -0x220(%rbp), %rax
addsd 0x38(%rax), %xmm0
movsd %xmm0, -0x100(%rbp)
movq -0x220(%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 -0x220(%rbp), %rax
movsd 0x50(%rax), %xmm0
movsd %xmm0, -0x118(%rbp)
movl $0x0, -0x44(%rbp)
cmpl $0xc, -0x44(%rbp)
jge 0xb4e8c
movsd -0x108(%rbp), %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x278(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x91a0
movsd -0x280(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x278(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0xb4e2b
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x290(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x290(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x6f89(%rip), %xmm1     # 0xbbe60
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 0x6f4a(%rip), %xmm1     # 0xbbe60
addsd %xmm1, %xmm0
callq 0x95e0
movsd %xmm0, -0x288(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x91a0
movaps %xmm0, %xmm1
movsd -0x288(%rbp), %xmm0
mulsd %xmm1, %xmm0
divsd -0x120(%rbp), %xmm0
movsd %xmm0, -0x128(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x9e00
subsd -0x118(%rbp), %xmm0
divsd -0x120(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
movsd -0x128(%rbp), %xmm0
callq 0x9c40
movaps 0x8294(%rip), %xmm1     # 0xbd220
pand %xmm1, %xmm0
movsd %xmm0, -0x1d8(%rbp)
movsd -0x130(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xb4fd0
xorps %xmm0, %xmm0
ucomisd -0x128(%rbp), %xmm0
jbe 0xb4fce
movsd 0x7ea2(%rip), %xmm0     # 0xbce60
subsd -0x1d8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
jmp 0xb5011
xorps %xmm0, %xmm0
ucomisd -0x128(%rbp), %xmm0
jb 0xb4ff7
movsd 0x7e73(%rip), %xmm0     # 0xbce58
addsd -0x1d8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
jmp 0xb500f
movsd 0x7e59(%rip), %xmm0     # 0xbce58
subsd -0x1d8(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
jmp 0xb5011
movsd -0x1d8(%rbp), %xmm0
movq -0x220(%rbp), %rax
addsd 0x98(%rax), %xmm0
movsd %xmm0, -0x138(%rbp)
movsd 0x8718(%rip), %xmm0     # 0xbd750
mulsd -0x138(%rbp), %xmm0
callq 0x9e00
movsd %xmm0, -0x140(%rbp)
movsd 0x86fb(%rip), %xmm0     # 0xbd750
mulsd -0x138(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x148(%rbp)
movq -0x220(%rbp), %rax
movsd 0x48(%rax), %xmm0
movsd -0x140(%rbp), %xmm2
movq -0x220(%rbp), %rax
movsd 0x58(%rax), %xmm1
mulsd -0x148(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x150(%rbp)
movq -0x220(%rbp), %rax
movsd 0x90(%rax), %xmm0
movsd -0x140(%rbp), %xmm2
movq -0x220(%rbp), %rax
movsd 0x30(%rax), %xmm1
mulsd -0x148(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x158(%rbp)
movq -0x220(%rbp), %rax
movsd 0x70(%rax), %xmm0
movsd -0x140(%rbp), %xmm2
movq -0x220(%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, -0x2a8(%rbp)
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x2b0(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x9e00
movsd -0x2b0(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x2a8(%rbp), %xmm0
movq %xmm2, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm2
mulsd %xmm1, %xmm2
movsd 0x6ce5(%rip), %xmm1     # 0xbbe60
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 -0x220(%rbp), %rax
movsd 0x88(%rax), %xmm1
movq -0x220(%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, -0x2a0(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x2a0(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x180(%rbp)
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x298(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x91a0
movaps %xmm0, %xmm1
movsd -0x298(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x188(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x16fcc(%rip), %rsi     # 0xcc229
callq 0x91b0
cmpq $0x0, %rax
jne 0xb52c0
movq -0x20(%rbp), %rdi
leaq 0x16fba(%rip), %rsi     # 0xcc22d
callq 0x91b0
cmpq $0x0, %rax
jne 0xb52c0
movq -0x20(%rbp), %rdi
leaq 0x16fa8(%rip), %rsi     # 0xcc231
callq 0x91b0
cmpq $0x0, %rax
jne 0xb52c0
movq -0x20(%rbp), %rdi
leaq 0x16f96(%rip), %rsi     # 0xcc235
callq 0x91b0
cmpq $0x0, %rax
jne 0xb52c0
movq -0x20(%rbp), %rdi
leaq 0x16f84(%rip), %rsi     # 0xcc239
callq 0x91b0
cmpq $0x0, %rax
je 0xb52f2
movq -0x220(%rbp), %rax
movsd 0x78(%rax), %xmm1
movq -0x220(%rbp), %rax
movsd 0xa0(%rax), %xmm0
movsd -0x68(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
jmp 0xb5327
movq -0x220(%rbp), %rax
movsd 0x78(%rax), %xmm1
movq -0x220(%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 -0x220(%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, -0x2e0(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x9e00
movsd %xmm0, -0x2e8(%rbp)
movsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x2f8(%rbp)
movsd -0x178(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x2f8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x2f0(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x91a0
movsd -0x2f0(%rbp), %xmm1
movsd -0x2e8(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x2e0(%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, -0x2c0(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x2c8(%rbp)
movsd -0x188(%rbp), %xmm0
movsd %xmm0, -0x2d8(%rbp)
movsd -0x178(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x2d8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x2d0(%rbp)
movsd -0x198(%rbp), %xmm0
callq 0x9e00
movsd -0x2d0(%rbp), %xmm1
movsd -0x2c8(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x2c0(%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, -0x2b8(%rbp)
movsd -0x178(%rbp), %xmm0
callq 0x91a0
movaps %xmm0, %xmm1
movsd -0x2b8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movl $0x0, -0x44(%rbp)
cmpl $0x3, -0x44(%rbp)
jge 0xb5510
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 0xb54e5
movq -0x20(%rbp), %rdi
leaq 0x16d0e(%rip), %rsi     # 0xcc229
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5582
movq -0x20(%rbp), %rdi
leaq 0x16cfc(%rip), %rsi     # 0xcc22d
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5582
movq -0x20(%rbp), %rdi
leaq 0x16cea(%rip), %rsi     # 0xcc231
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5582
movq -0x20(%rbp), %rdi
leaq 0x16cd8(%rip), %rsi     # 0xcc235
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5582
movq -0x20(%rbp), %rdi
leaq 0x16cc6(%rip), %rsi     # 0xcc239
callq 0x91b0
cmpq $0x0, %rax
je 0xb574e
movq -0x38(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd 0x16b3e(%rip), %xmm0    # 0xcc0d8
callq 0x9e00
movsd %xmm0, -0x340(%rbp)
movq -0x38(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x348(%rbp)
movsd 0x16b18(%rip), %xmm0    # 0xcc0d8
callq 0x91a0
movsd -0x348(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x340(%rbp), %xmm0
movq -0x38(%rbp), %rax
mulsd 0x10(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0x16ae7(%rip), %xmm0    # 0xcc0e0
callq 0x91a0
movsd %xmm0, -0x330(%rbp)
movq -0x38(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x338(%rbp)
movsd 0x16ab9(%rip), %xmm0    # 0xcc0d8
callq 0x9e00
movsd -0x338(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x330(%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, -0x318(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x9e00
movsd %xmm0, -0x320(%rbp)
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x328(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x91a0
movsd -0x328(%rbp), %xmm1
movsd -0x320(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x318(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, (%rax)
movsd 0x970e(%rip), %xmm0     # 0xbedd8
mulsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x300(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x308(%rbp)
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x310(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x9e00
movsd -0x310(%rbp), %xmm1
movsd -0x308(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x300(%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 0x16ae4(%rip), %rsi     # 0xcc23d
callq 0x91b0
cmpq $0x0, %rax
je 0xb5770
movl $0x1, -0x4(%rbp)
jmp 0xb656c
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, -0x368(%rbp)
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x370(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x9e00
movsd -0x370(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x368(%rbp), %xmm0
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
movsd 0x664d(%rip), %xmm2     # 0xbbe60
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x1e0(%rbp)
movsd -0x1d8(%rbp), %xmm0
movsd 0x7f1d(%rip), %xmm1     # 0xbd750
divsd %xmm1, %xmm0
callq 0x9e00
movsd %xmm0, -0x360(%rbp)
movsd -0x1d8(%rbp), %xmm0
movsd 0x7efc(%rip), %xmm1     # 0xbd750
divsd %xmm1, %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x360(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1e8(%rbp)
movsd -0x110(%rbp), %xmm0
movsd 0x7ecc(%rip), %xmm1     # 0xbd750
divsd %xmm1, %xmm0
callq 0x9e00
movsd %xmm0, -0x358(%rbp)
movsd -0x110(%rbp), %xmm0
movsd 0x7eab(%rip), %xmm1     # 0xbd750
divsd %xmm1, %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x358(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1f0(%rbp)
movsd 0x6593(%rip), %xmm0     # 0xbbe60
addsd -0x118(%rbp), %xmm0
movsd 0x6583(%rip), %xmm1     # 0xbbe60
subsd -0x118(%rbp), %xmm1
divsd %xmm1, %xmm0
callq 0x95e0
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, -0x350(%rbp)
movsd -0x110(%rbp), %xmm0
callq 0x91a0
movaps %xmm0, %xmm2
movsd -0x350(%rbp), %xmm0
movq -0x220(%rbp), %rax
movsd 0x30(%rax), %xmm3
movsd -0x140(%rbp), %xmm4
movq -0x220(%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 0x7db8(%rip), %xmm1     # 0xbd750
mulsd %xmm3, %xmm1
mulsd -0x1f8(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x200(%rbp)
movq -0x220(%rbp), %rax
movsd 0x7d8d(%rip), %xmm1     # 0xbd750
mulsd 0x58(%rax), %xmm1
movsd -0x140(%rbp), %xmm0
mulsd %xmm0, %xmm1
movsd 0x6484(%rip), %xmm0     # 0xbbe60
addsd %xmm0, %xmm1
movq -0x220(%rbp), %rax
movsd 0x7d61(%rip), %xmm0     # 0xbd750
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 -0x220(%rbp), %rax
movsd 0xa8(%rax), %xmm1
movq -0x220(%rbp), %rax
movsd 0x70(%rax), %xmm2
movsd -0x140(%rbp), %xmm3
movq -0x220(%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 0x7cc4(%rip), %xmm0     # 0xbd750
mulsd %xmm2, %xmm0
movsd -0x1f8(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x210(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x16776(%rip), %rsi     # 0xcc229
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5b16
movq -0x20(%rbp), %rdi
leaq 0x16764(%rip), %rsi     # 0xcc22d
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5b16
movq -0x20(%rbp), %rdi
leaq 0x16752(%rip), %rsi     # 0xcc231
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5b16
movq -0x20(%rbp), %rdi
leaq 0x16740(%rip), %rsi     # 0xcc235
callq 0x91b0
cmpq $0x0, %rax
jne 0xb5b16
movq -0x20(%rbp), %rdi
leaq 0x1672e(%rip), %rsi     # 0xcc239
callq 0x91b0
cmpq $0x0, %rax
je 0xb5b2f
movq -0x220(%rbp), %rax
movsd 0xa0(%rax), %xmm0
movsd %xmm0, -0x1d0(%rbp)
jmp 0xb5b4b
movq -0x220(%rbp), %rax
movsd 0xa0(%rax), %xmm0
subsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x1d0(%rbp)
movsd -0x200(%rbp), %xmm0
movsd %xmm0, -0x468(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x9e00
movsd %xmm0, -0x470(%rbp)
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x478(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x91a0
movsd -0x478(%rbp), %xmm1
movsd -0x470(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x468(%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, -0x450(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x458(%rbp)
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x460(%rbp)
movsd -0x170(%rbp), %xmm0
callq 0x9e00
movsd -0x460(%rbp), %xmm1
movsd -0x458(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x450(%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, -0x430(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x9e00
movsd %xmm0, -0x438(%rbp)
movsd -0x1a8(%rbp), %xmm0
movsd %xmm0, -0x448(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x448(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x440(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x91a0
movsd -0x440(%rbp), %xmm1
movsd -0x438(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x430(%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, -0x420(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x428(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x91a0
movaps %xmm0, %xmm1
movsd -0x428(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x418(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x91a0
movsd -0x420(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x418(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x210(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x410(%rbp)
movsd -0x1c0(%rbp), %xmm0
movsd %xmm0, -0x408(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x91a0
movsd -0x410(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x408(%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, -0x3f8(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x400(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x400(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x3f0(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x9e00
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, 0x18(%rax)
movsd -0x1a0(%rbp), %xmm0
movsd %xmm0, -0x3d0(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x3d8(%rbp)
movsd -0x1a8(%rbp), %xmm0
movsd %xmm0, -0x3e8(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x3e8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x3e0(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x9e00
movsd -0x3e0(%rbp), %xmm1
movsd -0x3d8(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x3d0(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x3c0(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x3c8(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x3c8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x3b8(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x91a0
movsd -0x3c0(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x3b8(%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, -0x3b0(%rbp)
movsd -0x1c0(%rbp), %xmm0
movsd %xmm0, -0x3a8(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x9e00
movsd -0x3b0(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x3a8(%rbp), %xmm0
mulsd %xmm2, %xmm0
movsd -0x1d0(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x398(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x3a0(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x9e00
movaps %xmm0, %xmm1
movsd -0x3a0(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x390(%rbp)
movsd -0x1b0(%rbp), %xmm0
callq 0x91a0
movsd -0x398(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x390(%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, -0x378(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x380(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x388(%rbp)
movsd -0x1b8(%rbp), %xmm0
callq 0x9e00
movsd -0x388(%rbp), %xmm1
movsd -0x380(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x378(%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 0x16159(%rip), %rsi     # 0xcc229
callq 0x91b0
cmpq $0x0, %rax
jne 0xb6137
movq -0x20(%rbp), %rdi
leaq 0x16147(%rip), %rsi     # 0xcc22d
callq 0x91b0
cmpq $0x0, %rax
jne 0xb6137
movq -0x20(%rbp), %rdi
leaq 0x16135(%rip), %rsi     # 0xcc231
callq 0x91b0
cmpq $0x0, %rax
jne 0xb6137
movq -0x20(%rbp), %rdi
leaq 0x16123(%rip), %rsi     # 0xcc235
callq 0x91b0
cmpq $0x0, %rax
jne 0xb6137
movq -0x20(%rbp), %rdi
leaq 0x16111(%rip), %rsi     # 0xcc239
callq 0x91b0
cmpq $0x0, %rax
je 0xb6565
movq -0x38(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd 0x15f88(%rip), %xmm0    # 0xcc0d8
callq 0x9e00
movsd %xmm0, -0x520(%rbp)
movq -0x38(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x528(%rbp)
movsd 0x15f62(%rip), %xmm0    # 0xcc0d8
callq 0x91a0
movsd -0x528(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x520(%rbp), %xmm0
movq -0x38(%rbp), %rax
mulsd 0x28(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd 0x15f31(%rip), %xmm0    # 0xcc0e0
callq 0x91a0
movsd %xmm0, -0x510(%rbp)
movq -0x38(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x518(%rbp)
movsd 0x15f03(%rip), %xmm0    # 0xcc0d8
callq 0x9e00
movsd -0x518(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x510(%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, -0x4f8(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x9e00
movsd %xmm0, -0x500(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x508(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x91a0
movsd -0x508(%rbp), %xmm1
movsd -0x500(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x4f8(%rbp), %xmm0
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd 0x8b55(%rip), %xmm0     # 0xbedd8
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x4e0(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x4e8(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x4f0(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x9e00
movsd -0x4f0(%rbp), %xmm1
movsd -0x4e8(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x4e0(%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 0x15db8(%rip), %xmm0    # 0xcc0d8
callq 0x9e00
movsd %xmm0, -0x4d0(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x4d8(%rbp)
movsd 0x15d93(%rip), %xmm0    # 0xcc0d8
callq 0x91a0
movsd -0x4d8(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x4d0(%rbp), %xmm0
mulsd -0xa0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd 0x15d63(%rip), %xmm0    # 0xcc0e0
callq 0x91a0
movsd %xmm0, -0x4c0(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x4c8(%rbp)
movsd 0x15d36(%rip), %xmm0    # 0xcc0d8
callq 0x9e00
movsd -0x4c8(%rbp), %xmm2
movaps %xmm0, %xmm1
movsd -0x4c0(%rbp), %xmm0
mulsd -0xa0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x4a0(%rbp)
movsd 0x89f1(%rip), %xmm0     # 0xbedd8
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x4b0(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x91a0
movsd %xmm0, -0x4a8(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x4b8(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x9e00
movsd -0x4b8(%rbp), %xmm2
movsd -0x4b0(%rbp), %xmm1
movsd -0x4a8(%rbp), %xmm3
movaps %xmm0, %xmm4
movsd -0x4a0(%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, -0x480(%rbp)
movsd 0x895a(%rip), %xmm0     # 0xbedd8
mulsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x490(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x9e00
movsd %xmm0, -0x488(%rbp)
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x498(%rbp)
movsd -0x60(%rbp), %xmm0
mulsd -0x68(%rbp), %xmm0
callq 0x91a0
movsd -0x498(%rbp), %xmm2
movsd -0x490(%rbp), %xmm1
movsd -0x488(%rbp), %xmm3
movaps %xmm0, %xmm4
movsd -0x480(%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 $0x530, %rsp            # imm = 0x530
popq %rbp
retq
nopl (%rax,%rax)