// File: /workspace/github_cpp_makefile_star2_O1/DoubleString[P]RtConverter/src/Rnxbrd/RnxEphFileAdapter.cpp
// Function: bamboo::RnxEphFileAdapter::m_readRnxnav(char)
void RnxEphFileAdapter::m_readRnxnav(char csys) {
	// read rinex navigation file
	int i, k, isys, len, iy, im, id, ih, imin;
	double dsec, dt1, dt0,d_aode;
	char buf[2048], cline[1024], *ptr;
	list<GPSEPH>::iterator gpsItr;
	list<GLSEPH>::iterator glsItr;
	GPSEPH eph;
	GLSEPH ephr;
	ifstream in;
	string line;
	streampos pos;
	bool already;
	in.open(curFile, ios::in | ios::binary);
	if (!in.is_open()) {
		cout << "***ERROR(m_readRnxnav):can't open file " << curFile << endl;
		return;
	}
	while (getline(in, line)) {
		if (strstr(line.c_str(), "END OF HEADER"))
			break;
		if (strstr(line.c_str(), "RINEX VERSION / TYPE") != NULL) {
			sscanf(line.c_str(), "%lf", &ver);
			if (ver > 3.0) {
				if (csys == 'M' && line[40] != 'M') {
					printf(
							"###WARNING(read_rnxnav):there only broadcast for line[40]!\n");
				}
			}
		} else if (strstr(line.c_str(), "PGM / RUN BY / DATE") != NULL)
			continue;
		else if (strstr(line.c_str(), "COMMENT") != NULL)
			continue;
		else if (strstr(line.c_str(), "ION ALPHA") != NULL) {

		} else if (strstr(line.c_str(), "ION BETA") != NULL) {

		}
		//rinex 3.00 3.01 3.02
		else if (strstr(line.c_str(), "IONOSPHERIC CORR") != NULL) {
			if (!strncmp(line.c_str(), "GPS ", 4)
					|| !strncmp(line.c_str(), "GPSA", 4)) {
				i = index_string(SYS, 'G');
				k = 0;
			} else if (!strncmp(line.c_str(), "GPSB", 4)) {
				i = index_string(SYS, 'G');
				k = 1;
			} else if (!strncmp(line.c_str(), "GAL ", 4)) {
				i = index_string(SYS, 'E');
				k = 0;
			} else if (!strncmp(line.c_str(), "BDS ", 4)
					|| !strncmp(line.c_str(), "BDSA", 4)) {
				i = index_string(SYS, 'C');
				k = 0;
			} else if (!strncmp(line.c_str(), "BDSB", 4)) {
				i = index_string(SYS, 'C');
				k = 1;
			} else if (!strncmp(line.c_str(), "QZS ", 4)
					|| !strncmp(line.c_str(), "QZSA", 4)) {
				i = index_string(SYS, 'J');
				k = 0;
			} else if (!strncmp(line.c_str(), "QZSB", 4)) {
				i = index_string(SYS, 'J');
				k = 1;
			} else
				printf("###WARNING(read_rnxnav):unknown ionospheric corr!\n");
			strncpy(ionc[i][k], line.c_str(), 4);
			strcpy(buf, line.c_str());
			ptr = buf;
			while (*ptr != '\0') {
				if (*ptr == 'D')
					*ptr = 'e';
				ptr++;
			}
			sscanf(buf, "%*s%lf%lf%lf%lf", ion[i][k], ion[i][k] + 1,
					ion[i][k] + 2, ion[i][k] + 3);
		} else if (strstr(line.c_str(), "DELTA-UTC: A0,A1,T,W") != NULL) {
			i = index_string(SYS, csys);
			if (i == -1) {
				printf(
						"$$$MESSAGE(read_rnxnav):DELTA-UTC: A0,A1,T,W is only valid for single system!\n");
				continue;
			}
			strcpy(buf, line.c_str());
			ptr = buf;
			while (*ptr != '\0') {
				if (*ptr == 'D')
					*ptr = 'e';
				ptr++;
			}
			sscanf(buf, "%lf%lf%lf%lf", tim[i][0], tim[i][0] + 1, tim[i][0] + 2,
					tim[i][0] + 3);
		} else if (strstr(line.c_str(), "TIME SYSTEM CORR") != NULL) {
			if (!strncmp(line.c_str(), "GPUT", 4)) {
				i = index_string(SYS, 'G');
				k = 0;
			} else if (!strncmp(line.c_str(), "GLUT", 4)) {
				i = index_string(SYS, 'R');
				k = 0;
			} else if (!strncmp(line.c_str(), "GAUT", 4)) {
				i = index_string(SYS, 'E');
				k = 0;
			} else if (!strncmp(line.c_str(), "BDUT", 4)) {
				i = index_string(SYS, 'C');
				k = 0;
			} else if (!strncmp(line.c_str(), "SBUT", 4)) {
				i = index_string(SYS, 'S');
				k = 0;
			} else if (!strncmp(line.c_str(), "QZUT", 4)) {
				i = index_string(SYS, 'J');
				k = 0;
			} else if (!strncmp(line.c_str(), "GPGA", 4)) {
				i = index_string(SYS, 'G');
				k = 1;
			} else if (!strncmp(line.c_str(), "GLGP", 4)) {
				i = index_string(SYS, 'R');
				k = 1;
			} else if (!strncmp(line.c_str(), "QZGP", 4)) {
				i = index_string(SYS, 'J');
				k = 1;
			} else {
				printf(
						"$$$MESSAGE(read_rnxnav):unknown unknown TIME SYSTEM CORR!\n");
				continue;
			}
			strncpy(timc[i][k], line.c_str(), 4);
			strcpy(buf, line.c_str());
			ptr = buf;
			while (*ptr != '\0') {
				if (*ptr == 'D')
					*ptr = 'e';
				ptr++;
			}
			sscanf(buf, "%*5c%lf%lf%lf%lf", tim[i][k], tim[i][k] + 1,
					tim[i][k] + 2, tim[i][k] + 3);
		} else if (strstr(line.c_str(), "LEAP SECONDS") != NULL)
			sscanf(line.c_str(), "%d", &leap);
	}
	while (!in.eof()) {
		// acquire the ephemeris
		pos = in.tellg();
		getline(in, line);
		if (!len_trim(line.c_str()))
			continue;
		in.seekg(pos,ios::beg);
		if (ver < 3.0) {
			buf[0] = csys;
		} else
			buf[0] = line[0];
		switch (buf[0]) {
		case 'G':
		case 'E':
		case 'C':
		case 'J':
			isys = index_string(SYS, buf[0]);
			len = 0;
			memset(buf, 0, sizeof(char) * 2048);
			for (i = 0; i < 8; i++) {
				getline(in, line);
				strcpy(cline, line.c_str());
				if (i != 7) {
					filleph(cline, ver);
				}
				if (ver < 3) {
					if (buf[0] != csys)
						buf[0] = csys;
					strncpy(buf + 1 + len, cline, strlen(cline));
				} else
					strncpy(buf + len, cline, strlen(cline));
				len += strlen(cline);
			}
			ptr = buf;
			while (*ptr != '\0') {
				if (*ptr == '\n' || *ptr == '\r')
					*ptr = ' ';

				if (*ptr == 'D')
					*ptr = 'e';
				ptr++;
			}
			if (ver < 3.0) {
				buf[0] = csys;
				if (buf[1] == ' ')
					buf[1] = '0';
			}
			sscanf(buf,
					"%s%d%d%d%d%d%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",
					eph.cprn, &iy, &im, &id, &ih, &imin, &dsec, &eph.a0,
					&eph.a1, &eph.a2, &d_aode, &eph.crs, &eph.dn, &eph.m0,
					&eph.cuc, &eph.e, &eph.cus, &eph.roota, &eph.toe, &eph.cic,
					&eph.omega0, &eph.cis, &eph.i0, &eph.crc, &eph.omega,
					&eph.omegadot, &eph.idot, &eph.resvd0, &eph.week,
					&eph.resvd1, &eph.accu, &eph.hlth, &eph.tgd, &eph.aodc);
			/////////////////////////// for BDS III test,must be removed //////////////////////////////////
			if (atoi(eph.cprn + 1) > 14) {
				eph.hlth = 0.0;
			}
			///////////////////////////////////////////////////////////////////////////////////////////////
			if (eph.hlth > 0 || isys == -1)
				continue;
			yr2year(iy);
			if (iy < 2000)
				continue;
			// time of clock
			eph.mjd = md_julday(iy, im, id); // TIME IN BDS TIME AND SHOULD NOT CHANGE IT INTO GPST BECAUSE THERE ARE OTHER TIME TAG IN THE EPHEMERIS
			eph.sod = ih * 3600.0 + imin * 60.0 + dsec;

			// adapter to bds
			if (eph.cprn[0] == 'C') {
				//the week in broadcast file generated by WHU is GPS week,
				//but that in IGS meraged file is BDS week
				mjd2wksow(eph.mjd, eph.sod, &k, &dt1);
				if (k != (int) eph.week)
					eph.week = 1356 + eph.week;
				eph.tgd1 = eph.aodc;
			}
			//check time
			dt0 = 0.0;
			dt1 = 0.0;
			if (mjd0 != 0) {
				dt0 = eph.mjd + eph.sod / 86400.0 - mjd0;
			}
			if (mjd1 != 0) {
				dt1 = eph.mjd + eph.sod / 86400.0 - mjd1;
			}
			if (dt0 < -1.0 / 24.0 || dt1 > 1.0 / 24.0)
				continue;
			already = false;
			for (gpsItr = this->gnssEph[isys].begin();
					gpsItr != this->gnssEph[isys].end(); gpsItr++) {
				if (strstr((*gpsItr).cprn, eph.cprn) && (*gpsItr).mjd == eph.mjd
						&& (*gpsItr).sod == eph.sod) {
					already = true;
					break;
				}
			}
			if (!already) {
				neph[isys] = neph[isys] + 1;
				eph.aode = genAode(buf[0], eph.mjd,eph.sod, eph.toe,static_cast<int>(d_aode),&eph);
				this->gnssEph[isys].push_back(eph);
			}
			break;
		case 'R':
			isys = index_string(SYS, buf[0]);
			len = 0;
			memset(buf, 0, sizeof(char) * 2048);
			for (i = 0; i < 4; i++) {
				getline(in, line);
				strcpy(cline, line.c_str());
				if (ver < 3) {
					if (buf[0] != csys)
						buf[0] = csys;
					strncpy(buf + 1 + len, cline, strlen(cline));
				} else
					strncpy(buf + len, cline, strlen(cline));
				len += strlen(cline);
			}
			ptr = buf;
			while (*ptr != '\0') {
				if (*ptr == '\n' || *ptr == '\r') {
					*ptr = ' ';
				}
				if (*ptr == 'D') {
					*ptr = 'e';
				}
				ptr++;
			}
			if (ver < 3.0) {
				buf[0] = csys;
				if (buf[1] == ' ')
					buf[1] = '0';
			}
			sscanf(buf,
					"%s%d%d%d%d%d%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",
					ephr.cprn, &iy, &im, &id, &ih, &imin, &dsec, &ephr.tau,
					&ephr.gamma, &ephr.tk, &ephr.pos[0], &ephr.vel[0],
					&ephr.acc[0], &ephr.health, &ephr.pos[1], &ephr.vel[1],
					&ephr.acc[1], &ephr.frenum, &ephr.pos[2], &ephr.vel[2],
					&ephr.acc[2], &ephr.age);

			if (ephr.health > 0.0)
				continue;
			yr2year(iy);
			if (iy < 2000)
				continue;
			ephr.mjd = md_julday(iy, im, id);
			ephr.sod = ih * 3600.0 + imin * 60.0 + dsec;
			//check time
			dt0 = 0.0;
			dt1 = 0.0;
			if (mjd0 != 0) {
				dt0 = ephr.mjd + ephr.sod / 86400.0 - mjd0;
			}
			if (mjd1 != 0) {
				dt1 = ephr.mjd + ephr.sod / 86400.0 - mjd1;
			}
			if (dt0 < -1.0 / 24.0 || dt1 > 1.0 / 24.0)
				continue;
			already = false;
			for (glsItr = this->glsEph.begin(); glsItr != this->glsEph.end();
					glsItr++) {
				if (strstr((*glsItr).cprn, ephr.cprn)
						&& (*glsItr).mjd == ephr.mjd
						&& (*glsItr).sod == ephr.sod) {
					already = true;
					break;
				}
			}
			if (!already) {
				neph[isys] = neph[isys] + 1;
				ephr.aode = genAode(buf[0], ephr.mjd,ephr.sod,0.0, ephr.aode,NULL);
				this->glsEph.push_back(ephr);
			}
			break;
		default:
			getline(in, line);
			break;
		}
	}
	in.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1028, %rsp           # imm = 0x1028
movl %esi, -0x30(%rbp)
movq %rdi, %r14
xorl %ebx, %ebx
movl %ebx, -0x1b4(%rbp)
movq %rbx, -0x1b0(%rbp)
movl %ebx, -0x244(%rbp)
movq %rbx, -0x238(%rbp)
leaq -0x450(%rbp), %r12
movq %r12, %rdi
callq 0x8710
leaq -0x80(%rbp), %rax
movq %rax, -0x10(%rax)
movq %rbx, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x9b0(%r14), %rbx
movq %r12, %rdi
movq %rbx, %rsi
movl $0xc, %edx
callq 0x8400
leaq -0x3d8(%rbp), %rdi
callq 0x8180
testb %al, %al
je 0x67a31
leaq 0xdd0(%r14), %r15
leaq 0x7b8(%r14), %rax
movq %rax, -0xa8(%rbp)
leaq 0x7f0(%r14), %rax
movq %rax, -0x70(%rbp)
leaq 0xe10(%r14), %rax
movq %rax, -0x48(%rbp)
leaq 0xdd8(%r14), %rax
movq %rax, -0xb0(%rbp)
leaq 0xfd0(%r14), %rax
movq %rax, -0xa0(%rbp)
leaq -0x90(%rbp), %r13
movq -0x450(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8600
movsbl %al, %edx
movq %r12, %rdi
movq %r13, %rsi
callq 0x8be0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x67a96
movq -0x90(%rbp), %rbx
movq %rbx, %rdi
leaq 0x45c7(%rip), %rsi      # 0x6b92b
callq 0x8160
testq %rax, %rax
jne 0x67a96
movq %rbx, %rdi
leaq 0x121a0(%rip), %rsi     # 0x7951c
callq 0x8160
testq %rax, %rax
jne 0x6753f
movq %rbx, %rdi
leaq 0x1219d(%rip), %rsi     # 0x79531
callq 0x8160
testq %rax, %rax
jne 0x6731b
movq %rbx, %rdi
leaq 0x458d(%rip), %rsi      # 0x6b939
callq 0x8160
testq %rax, %rax
jne 0x6731b
movq %rbx, %rdi
leaq 0x12181(%rip), %rsi     # 0x79545
callq 0x8160
testq %rax, %rax
jne 0x6731b
movq %rbx, %rdi
leaq 0x12173(%rip), %rsi     # 0x7954f
callq 0x8160
testq %rax, %rax
jne 0x6731b
movq %rbx, %rdi
leaq 0x12164(%rip), %rsi     # 0x79558
callq 0x8160
testq %rax, %rax
jne 0x6758a
movq %rbx, %rdi
leaq 0x1219f(%rip), %rsi     # 0x795ab
callq 0x8160
testq %rax, %rax
jne 0x676ba
movq %rbx, %rdi
leaq 0x1219c(%rip), %rsi     # 0x795c0
callq 0x8160
testq %rax, %rax
je 0x67705
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x12190(%rip), %rsi     # 0x795d1
callq 0x82f0
testl %eax, %eax
je 0x6773a
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x12179(%rip), %rsi     # 0x795d6
callq 0x82f0
testl %eax, %eax
je 0x6774d
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x12162(%rip), %rsi     # 0x795db
callq 0x82f0
testl %eax, %eax
je 0x67760
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x1214b(%rip), %rsi     # 0x795e0
callq 0x82f0
testl %eax, %eax
je 0x67773
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x12134(%rip), %rsi     # 0x795e5
callq 0x82f0
testl %eax, %eax
je 0x67786
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x1211d(%rip), %rsi     # 0x795ea
callq 0x82f0
testl %eax, %eax
je 0x67799
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x12106(%rip), %rsi     # 0x795ef
callq 0x82f0
testl %eax, %eax
je 0x677b7
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x120ef(%rip), %rsi     # 0x795f4
callq 0x82f0
testl %eax, %eax
je 0x677ca
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x120d8(%rip), %rsi     # 0x795f9
callq 0x82f0
testl %eax, %eax
je 0x677dd
leaq 0x121d4(%rip), %rdi     # 0x79709
callq 0x8980
jmp 0x6731b
movq %rbx, %rdi
leaq 0xdf70(%rip), %rsi      # 0x754b9
movq %r15, %rdx
xorl %eax, %eax
callq 0x8610
cmpb $0x4d, -0x30(%rbp)
jne 0x6731b
movsd (%r15), %xmm0
ucomisd 0x337e(%rip), %xmm0     # 0x6a8e8
jbe 0x6731b
movq -0x90(%rbp), %rax
cmpb $0x4d, 0x28(%rax)
je 0x6731b
leaq 0x1223b(%rip), %rdi     # 0x797c3
jmp 0x67535
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11fd0(%rip), %rsi     # 0x79569
callq 0x82f0
testl %eax, %eax
movq %r15, -0x38(%rbp)
je 0x6789f
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11fb5(%rip), %rsi     # 0x7956e
callq 0x82f0
testl %eax, %eax
je 0x6789f
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11f9e(%rip), %rsi     # 0x79573
callq 0x82f0
testl %eax, %eax
je 0x679ac
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11f87(%rip), %rsi     # 0x79578
callq 0x82f0
testl %eax, %eax
je 0x679df
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11f70(%rip), %rsi     # 0x7957d
callq 0x82f0
testl %eax, %eax
je 0x679c9
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11f59(%rip), %rsi     # 0x79582
callq 0x82f0
testl %eax, %eax
je 0x679c9
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11f42(%rip), %rsi     # 0x79587
callq 0x82f0
testl %eax, %eax
je 0x67a0b
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11f2b(%rip), %rsi     # 0x7958c
callq 0x82f0
testl %eax, %eax
je 0x679f5
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11f14(%rip), %rsi     # 0x79591
callq 0x82f0
testl %eax, %eax
je 0x679f5
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x11efd(%rip), %rsi     # 0x79596
callq 0x82f0
testl %eax, %eax
je 0x67a1e
leaq 0x120e4(%rip), %rdi     # 0x79791
callq 0x8980
movl -0x50(%rbp), %eax
jmp 0x678b7
movsbl -0x30(%rbp), %esi
leaq 0x12139(%rip), %rdi     # 0x797fe
callq 0x1db90
cmpl $-0x1, %eax
je 0x67994
movl %eax, -0x50(%rbp)
movq -0x90(%rbp), %rsi
leaq -0xc50(%rbp), %rbx
movq %rbx, %rdi
callq 0x85c0
movzbl (%rbx), %ecx
cmpl $0x44, %ecx
je 0x676fd
testl %ecx, %ecx
jne 0x67700
jmp 0x67958
movb $0x65, (%rbx)
incq %rbx
jmp 0x676ec
movq %rbx, %rdi
leaq 0x11f00(%rip), %rsi     # 0x7960f
callq 0x8160
testq %rax, %rax
je 0x6731b
movq %rbx, %rdi
leaq 0xea7f(%rip), %rsi      # 0x761a6
movq -0xa0(%rbp), %rdx
xorl %eax, %eax
callq 0x8610
jmp 0x6731b
leaq 0x120bd(%rip), %rdi     # 0x797fe
movl $0x47, %esi
callq 0x1db90
jmp 0x677aa
leaq 0x120aa(%rip), %rdi     # 0x797fe
movl $0x52, %esi
callq 0x1db90
jmp 0x677aa
leaq 0x12097(%rip), %rdi     # 0x797fe
movl $0x45, %esi
callq 0x1db90
jmp 0x677aa
leaq 0x12084(%rip), %rdi     # 0x797fe
movl $0x43, %esi
callq 0x1db90
jmp 0x677aa
leaq 0x12071(%rip), %rdi     # 0x797fe
movl $0x53, %esi
callq 0x1db90
jmp 0x677aa
leaq 0x1205e(%rip), %rdi     # 0x797fe
movl $0x4a, %esi
callq 0x1db90
movq %r15, -0x38(%rbp)
movl $0x0, -0x2c(%rbp)
jmp 0x677f9
leaq 0x12040(%rip), %rdi     # 0x797fe
movl $0x47, %esi
callq 0x1db90
jmp 0x677ee
leaq 0x1202d(%rip), %rdi     # 0x797fe
movl $0x52, %esi
callq 0x1db90
jmp 0x677ee
leaq 0x1201a(%rip), %rdi     # 0x797fe
movl $0x4a, %esi
callq 0x1db90
movq %r15, -0x38(%rbp)
movl $0x1, -0x2c(%rbp)
movl %eax, -0x50(%rbp)
movslq %eax, %r15
movslq -0x2c(%rbp), %r12
movq -0xb0(%rbp), %rax
leaq (%rax,%r15,8), %rax
leaq (%rax,%r12,4), %rdi
movq -0x90(%rbp), %rbx
movl $0x4, %edx
movq %rbx, %rsi
callq 0x8350
leaq -0xc50(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x85c0
movq %r13, %rax
leaq -0x90(%rbp), %r13
movzbl (%rax), %ecx
cmpl $0x44, %ecx
je 0x67850
testl %ecx, %ecx
jne 0x67853
jmp 0x67858
movb $0x65, (%rax)
incq %rax
jmp 0x67842
shlq $0x6, %r15
addq -0x48(%rbp), %r15
shlq $0x5, %r12
leaq (%r15,%r12), %rdx
leaq (%r12,%r15), %rcx
addq $0x8, %rcx
leaq 0x10(%r12,%r15), %r8
leaq 0x18(%r12,%r15), %r9
leaq -0xc50(%rbp), %rdi
leaq 0x11d76(%rip), %rsi     # 0x795fe
xorl %eax, %eax
callq 0x8610
leaq -0x450(%rbp), %r12
movq -0x38(%rbp), %r15
jmp 0x6731b
leaq 0x11f58(%rip), %rdi     # 0x797fe
movl $0x47, %esi
callq 0x1db90
movl $0x0, -0x2c(%rbp)
movl %eax, -0x50(%rbp)
movslq %eax, %r15
movslq -0x2c(%rbp), %rbx
movq -0xa8(%rbp), %rax
leaq (%rax,%r15,8), %rax
leaq (%rax,%rbx,4), %rdi
movq -0x90(%rbp), %rsi
movq %rsi, -0x98(%rbp)
movl $0x4, %edx
callq 0x8350
leaq -0xc50(%rbp), %rdi
movq -0x98(%rbp), %rsi
callq 0x85c0
leaq -0xc50(%rbp), %rax
movzbl (%rax), %ecx
cmpl $0x44, %ecx
je 0x67910
testl %ecx, %ecx
jne 0x67913
jmp 0x67918
movb $0x65, (%rax)
incq %rax
jmp 0x67902
shlq $0x6, %r15
addq -0x70(%rbp), %r15
shlq $0x5, %rbx
leaq (%r15,%rbx), %rdx
leaq (%rbx,%r15), %rcx
addq $0x8, %rcx
leaq 0x10(%rbx,%r15), %r8
leaq 0x18(%rbx,%r15), %r9
leaq -0xc50(%rbp), %rdi
leaq 0x11c53(%rip), %rsi     # 0x7959b
xorl %eax, %eax
callq 0x8610
movq -0x38(%rbp), %r15
jmp 0x6731b
movslq -0x50(%rbp), %rax
shlq $0x6, %rax
movq -0x48(%rbp), %rsi
leaq (%rsi,%rax), %rdx
leaq (%rsi,%rax), %rcx
addq $0x8, %rcx
leaq 0x10(%rsi,%rax), %r8
leaq 0x18(%rsi,%rax), %r9
leaq -0xc50(%rbp), %rdi
leaq 0x11c7a(%rip), %rsi     # 0x79602
xorl %eax, %eax
callq 0x8610
jmp 0x6731b
leaq 0x11da8(%rip), %rdi     # 0x79743
callq 0x8980
movl $0xffffffff, -0x50(%rbp) # imm = 0xFFFFFFFF
jmp 0x6731b
leaq 0x11e4b(%rip), %rdi     # 0x797fe
movl $0x47, %esi
callq 0x1db90
movl $0x1, -0x2c(%rbp)
jmp 0x678b7
leaq 0x11e2e(%rip), %rdi     # 0x797fe
movl $0x43, %esi
callq 0x1db90
jmp 0x678b0
leaq 0x11e18(%rip), %rdi     # 0x797fe
movl $0x45, %esi
callq 0x1db90
jmp 0x678b0
leaq 0x11e02(%rip), %rdi     # 0x797fe
movl $0x4a, %esi
callq 0x1db90
jmp 0x678b0
leaq 0x11dec(%rip), %rdi     # 0x797fe
movl $0x43, %esi
callq 0x1db90
jmp 0x679bd
leaq 0x11dd9(%rip), %rdi     # 0x797fe
movl $0x4a, %esi
callq 0x1db90
jmp 0x679bd
movq 0x26590(%rip), %rdi     # 0x8dfc8
leaq 0x11ab5(%rip), %rsi     # 0x794f4
movl $0x27, %edx
callq 0x8730
movq %rbx, %rdi
callq 0x8290
movq 0x26570(%rip), %r14     # 0x8dfc8
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x8730
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x8600
movsbl %al, %esi
movq 0x26544(%rip), %rdi     # 0x8dfc8
callq 0x8050
movq %rax, %rdi
callq 0x8450
jmp 0x684ad
movq -0x450(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x430(%rbp,%rax)
jne 0x684a1
movl $0x80, %eax
leaq -0x248(%rbp), %rcx
leaq (%rcx,%rax), %rdx
movq %rdx, -0xa0(%rbp)
movl $0x88, %edx
addq %rdx, %rcx
movq %rcx, -0x38(%rbp)
leaq -0x1b8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
addq %rcx, %rdx
movq %rdx, -0xa8(%rbp)
leaq 0x7a0(%r14), %rax
movq %rax, -0x70(%rbp)
leaq 0x7b0(%r14), %rax
movq %rax, -0xc0(%rbp)
leaq 0x6f8(%r14), %rax
movq %rax, -0x98(%rbp)
leaq -0x1050(%rbp), %rbx
movq %r12, %rdi
callq 0x8b20
movq %r12, %rcx
movq %rax, %r12
movq -0x450(%rbp), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8600
movsbl %al, %edx
leaq -0x450(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x8be0
movq -0x90(%rbp), %rdi
callq 0x1d95b
testl %eax, %eax
je 0x68481
leaq -0x450(%rbp), %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x8880
movsd 0x2d64(%rip), %xmm0     # 0x6a8e8
ucomisd 0xdd0(%r14), %xmm0
movl -0x30(%rbp), %eax
ja 0x67b9b
movq -0x90(%rbp), %rax
movb (%rax), %al
movb %al, -0xc50(%rbp)
movzbl %al, %ecx
addl $-0x43, %ecx
cmpl $0xf, %ecx
leaq -0x450(%rbp), %rdx
ja 0x68074
movl $0x95, %esi
btl %ecx, %esi
jae 0x67f6e
movsbl %al, %esi
leaq 0x11c2f(%rip), %rdi     # 0x797fe
callq 0x1db90
movl %eax, -0x48(%rbp)
xorl %r15d, %r15d
movl $0x800, %edx            # imm = 0x800
leaq -0xc50(%rbp), %rdi
xorl %esi, %esi
callq 0x8390
movl $0x8, %r13d
movq -0x450(%rbp), %rax
movq -0x18(%rax), %rdi
leaq -0x450(%rbp), %r12
addq %r12, %rdi
movl $0xa, %esi
callq 0x8600
movsbl %al, %edx
movq %r12, %rdi
leaq -0x90(%rbp), %rsi
callq 0x8be0
movq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x85c0
cmpl $0x1, %r13d
je 0x67c4a
movsd 0xdd0(%r14), %xmm0
movq %rbx, %rdi
callq 0x1da1b
movsd 0x2c96(%rip), %xmm0     # 0x6a8e8
ucomisd 0xdd0(%r14), %xmm0
leaq -0xc50(%rbp), %r12
jbe 0x67c7f
leaq -0xc4f(%rbp), %r12
movl -0x30(%rbp), %eax
cmpb %al, -0xc50(%rbp)
je 0x67c7f
movl -0x30(%rbp), %eax
movb %al, -0xc50(%rbp)
movslq %r15d, %r15
addq %r15, %r12
movq %rbx, %rdi
callq 0x8290
movq %r12, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x8350
movq %rbx, %rdi
callq 0x8290
addl %eax, %r15d
decl %r13d
jne 0x67bf3
leaq -0xc50(%rbp), %rax
movl -0x48(%rbp), %r15d
movzbl (%rax), %ecx
cmpl $0xa, %ecx
je 0x67ccd
cmpl $0xd, %ecx
je 0x67ccd
testl %ecx, %ecx
jne 0x67cd0
jmp 0x67cdd
movb $0x20, (%rax)
cmpb $0x44, (%rax)
jne 0x67cd8
movb $0x65, (%rax)
incq %rax
jmp 0x67cba
movsd 0x2c03(%rip), %xmm0     # 0x6a8e8
ucomisd 0xdd0(%r14), %xmm0
jbe 0x67d09
movl -0x30(%rbp), %eax
movb %al, -0xc50(%rbp)
cmpb $0x20, -0xc4f(%rbp)
jne 0x67d09
movb $0x30, -0xc4f(%rbp)
leaq -0xc50(%rbp), %rdi
leaq 0x11905(%rip), %rsi     # 0x7961c
leaq -0x1b8(%rbp), %rdx
leaq -0x3c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x5c(%rbp), %r9
xorl %eax, %eax
leaq -0xd0(%rbp), %r10
pushq %r10
leaq -0xe0(%rbp), %r10
pushq %r10
leaq -0xe8(%rbp), %r10
pushq %r10
leaq -0xf0(%rbp), %r10
pushq %r10
leaq -0xf8(%rbp), %r10
pushq %r10
leaq -0x100(%rbp), %r10
pushq %r10
leaq -0x108(%rbp), %r10
pushq %r10
leaq -0x110(%rbp), %r10
pushq %r10
leaq -0x118(%rbp), %r10
pushq %r10
leaq -0x120(%rbp), %r10
pushq %r10
leaq -0x128(%rbp), %r10
pushq %r10
pushq -0xa8(%rbp)
pushq -0xb0(%rbp)
leaq -0x140(%rbp), %r10
pushq %r10
leaq -0x148(%rbp), %r10
pushq %r10
leaq -0x150(%rbp), %r10
pushq %r10
leaq -0x158(%rbp), %r10
pushq %r10
leaq -0x160(%rbp), %r10
pushq %r10
leaq -0x168(%rbp), %r10
pushq %r10
leaq -0x170(%rbp), %r10
pushq %r10
leaq -0x178(%rbp), %r10
pushq %r10
leaq -0x180(%rbp), %r10
pushq %r10
leaq -0x188(%rbp), %r10
pushq %r10
leaq -0xc8(%rbp), %r10
pushq %r10
leaq -0x198(%rbp), %r10
pushq %r10
leaq -0x1a0(%rbp), %r10
pushq %r10
leaq -0x1a8(%rbp), %r10
pushq %r10
leaq -0xb8(%rbp), %r10
pushq %r10
leaq -0x54(%rbp), %r10
pushq %r10
leaq -0x58(%rbp), %r10
pushq %r10
callq 0x8610
addq $0xf0, %rsp
leaq -0x1b7(%rbp), %rdi
callq 0x89b0
cmpl $0xf, %eax
jl 0x67e56
movq $0x0, -0xe8(%rbp)
cmpl $-0x1, %r15d
je 0x68481
movsd -0xe8(%rbp), %xmm0
ucomisd 0x2a98(%rip), %xmm0     # 0x6a908
ja 0x68481
leaq -0x3c(%rbp), %rdi
callq 0x1d581
movl -0x3c(%rbp), %edi
cmpl $0x7d0, %edi            # imm = 0x7D0
jl 0x68481
movl -0x60(%rbp), %esi
movl -0x5c(%rbp), %edx
callq 0x1cf58
xorps %xmm0, %xmm0
cvtsi2sdl -0x58(%rbp), %xmm0
cvtsi2sdl -0x54(%rbp), %xmm1
mulsd 0x2a0a(%rip), %xmm1     # 0x6a8b8
mulsd 0x2a0a(%rip), %xmm0     # 0x6a8c0
addsd %xmm1, %xmm0
addsd -0xb8(%rbp), %xmm0
movl %eax, -0x1b4(%rbp)
movsd %xmm0, -0x1b0(%rbp)
cmpb $0x43, -0x1b8(%rbp)
jne 0x67f19
movl %eax, %edi
leaq -0x2c(%rbp), %rsi
leaq -0x68(%rbp), %rdx
callq 0x1d5a4
movsd -0x100(%rbp), %xmm0
cvttsd2si %xmm0, %eax
cmpl %eax, -0x2c(%rbp)
je 0x67f09
addsd 0x115e7(%rip), %xmm0    # 0x794e8
movsd %xmm0, -0x100(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movq $0x0, -0x68(%rbp)
movl 0xdb0(%r14), %eax
testl %eax, %eax
je 0x68254
xorps %xmm0, %xmm0
cvtsi2sdl -0x1b4(%rbp), %xmm0
movsd -0x1b0(%rbp), %xmm1
divsd 0x2985(%rip), %xmm1     # 0x6a8d0
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
subsd %xmm0, %xmm1
movsd 0x1157e(%rip), %xmm0    # 0x794e0
ucomisd %xmm1, %xmm0
seta %al
jmp 0x68256
cmpl $0xf, %ecx
jne 0x68074
movsbl %al, %esi
leaq 0x1187d(%rip), %rdi     # 0x797fe
callq 0x1db90
movl %eax, -0x50(%rbp)
xorl %r15d, %r15d
movl $0x800, %edx            # imm = 0x800
leaq -0xc50(%rbp), %rdi
xorl %esi, %esi
callq 0x8390
movl $0x4, %r13d
movq -0x450(%rbp), %rax
movq -0x18(%rax), %rdi
leaq -0x450(%rbp), %r12
addq %r12, %rdi
movl $0xa, %esi
callq 0x8600
movsbl %al, %edx
movq %r12, %rdi
leaq -0x90(%rbp), %rsi
callq 0x8be0
movq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x85c0
movsd 0x28fb(%rip), %xmm0     # 0x6a8e8
ucomisd 0xdd0(%r14), %xmm0
leaq -0xc50(%rbp), %r12
jbe 0x6801a
leaq -0xc4f(%rbp), %r12
movl -0x30(%rbp), %eax
cmpb %al, -0xc50(%rbp)
je 0x6801a
movl -0x30(%rbp), %eax
movb %al, -0xc50(%rbp)
movslq %r15d, %r15
addq %r15, %r12
movq %rbx, %rdi
callq 0x8290
movq %r12, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x8350
movq %rbx, %rdi
callq 0x8290
addl %eax, %r15d
decl %r13d
jne 0x67fa5
leaq -0xc50(%rbp), %rax
movzbl (%rax), %ecx
cmpl $0xa, %ecx
je 0x68064
cmpl $0xd, %ecx
je 0x68064
testl %ecx, %ecx
jne 0x68067
jmp 0x680a7
movb $0x20, (%rax)
cmpb $0x44, (%rax)
jne 0x6806f
movb $0x65, (%rax)
incq %rax
jmp 0x68051
movq -0x450(%rbp), %rax
movq -0x18(%rax), %rdi
addq %rdx, %rdi
movl $0xa, %esi
callq 0x8600
movsbl %al, %edx
leaq -0x450(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x8be0
jmp 0x68481
movsd 0x2839(%rip), %xmm0     # 0x6a8e8
ucomisd 0xdd0(%r14), %xmm0
jbe 0x680d3
movl -0x30(%rbp), %eax
movb %al, -0xc50(%rbp)
cmpb $0x20, -0xc4f(%rbp)
jne 0x680d3
movb $0x30, -0xc4f(%rbp)
leaq -0xc50(%rbp), %rdi
leaq 0x1159c(%rip), %rsi     # 0x7967d
leaq -0x248(%rbp), %rdx
leaq -0x3c(%rbp), %rcx
leaq -0x60(%rbp), %r8
leaq -0x5c(%rbp), %r9
xorl %eax, %eax
pushq -0x38(%rbp)
leaq -0x1d8(%rbp), %r10
pushq %r10
leaq -0x1f0(%rbp), %r10
pushq %r10
leaq -0x208(%rbp), %r10
pushq %r10
pushq -0xa0(%rbp)
leaq -0x1e0(%rbp), %r10
pushq %r10
leaq -0x1f8(%rbp), %r10
pushq %r10
leaq -0x210(%rbp), %r10
pushq %r10
leaq -0x1d0(%rbp), %r10
pushq %r10
leaq -0x1e8(%rbp), %r10
pushq %r10
leaq -0x200(%rbp), %r10
pushq %r10
leaq -0x218(%rbp), %r10
pushq %r10
leaq -0x220(%rbp), %r10
pushq %r10
leaq -0x228(%rbp), %r10
pushq %r10
leaq -0x230(%rbp), %r10
pushq %r10
leaq -0xb8(%rbp), %r10
pushq %r10
leaq -0x54(%rbp), %r10
pushq %r10
leaq -0x58(%rbp), %r10
pushq %r10
callq 0x8610
addq $0x90, %rsp
movsd -0x1d0(%rbp), %xmm0
ucomisd 0x2763(%rip), %xmm0     # 0x6a908
ja 0x68481
leaq -0x3c(%rbp), %rdi
callq 0x1d581
movl -0x3c(%rbp), %edi
cmpl $0x7d0, %edi            # imm = 0x7D0
jl 0x68481
movl -0x60(%rbp), %esi
movl -0x5c(%rbp), %edx
callq 0x1cf58
movl %eax, %r12d
cvtsi2sdl -0x58(%rbp), %xmm1
xorps %xmm0, %xmm0
cvtsi2sdl -0x54(%rbp), %xmm0
movl %eax, -0x244(%rbp)
mulsd 0x26cc(%rip), %xmm0     # 0x6a8b8
mulsd 0x26cc(%rip), %xmm1     # 0x6a8c0
addsd %xmm0, %xmm1
addsd -0xb8(%rbp), %xmm1
movsd %xmm1, -0x238(%rbp)
movq $0x0, -0x68(%rbp)
movl 0xdb0(%r14), %eax
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
testl %eax, %eax
movsd %xmm1, -0x48(%rbp)
je 0x6838e
divsd 0x269c(%rip), %xmm1     # 0x6a8d0
addsd %xmm0, %xmm1
cvtsi2sd %eax, %xmm2
subsd %xmm2, %xmm1
movsd 0x11298(%rip), %xmm2    # 0x794e0
ucomisd %xmm1, %xmm2
seta %al
jmp 0x68390
xorl %eax, %eax
movl 0xdb4(%r14), %ecx
testl %ecx, %ecx
je 0x68290
xorps %xmm0, %xmm0
cvtsi2sdl -0x1b4(%rbp), %xmm0
movsd -0x1b0(%rbp), %xmm1
divsd 0x2654(%rip), %xmm1     # 0x6a8d0
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
subsd %xmm0, %xmm1
movsd %xmm1, -0x68(%rbp)
movsd -0x68(%rbp), %xmm0
ucomisd 0x27ab(%rip), %xmm0     # 0x6aa48
seta %cl
orb %cl, %al
jne 0x68481
movslq %r15d, %rax
movq %rax, -0x50(%rbp)
leaq (%rax,%rax,2), %rax
movq -0x98(%rbp), %rcx
leaq (%rcx,%rax,8), %r12
movq (%r12), %r13
cmpq %r12, %r13
je 0x68312
movl -0x1b4(%rbp), %r15d
movsd -0x1b0(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
leaq 0x10(%r13), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x8160
testq %rax, %rax
je 0x68309
cmpl %r15d, 0x14(%r13)
jne 0x68309
movsd 0x18(%r13), %xmm0
ucomisd -0x48(%rbp), %xmm0
jne 0x68309
jnp 0x68481
movq (%r13), %r13
cmpq %r12, %r13
jne 0x682db
movq -0x50(%rbp), %rax
incl 0x6d8(%r14,%rax,4)
movsbl -0xc50(%rbp), %edi
movl -0x1b4(%rbp), %esi
movsd -0x1b0(%rbp), %xmm0
movsd -0x150(%rbp), %xmm1
cvttsd2si -0xc8(%rbp), %edx
leaq -0x1b8(%rbp), %rcx
callq 0x20e91
movl %eax, -0x190(%rbp)
movl $0x100, %edi            # imm = 0x100
callq 0x8640
movq %rax, %r15
movq %rax, %rdi
addq $0x10, %rdi
movl $0xf0, %edx
leaq -0x1b8(%rbp), %rsi
callq 0x84f0
movq %r15, %rdi
movq %r12, %rsi
callq 0x80c0
addq $0x10, %r12
jmp 0x6847d
xorl %eax, %eax
movl 0xdb4(%r14), %ecx
testl %ecx, %ecx
je 0x683bc
movsd -0x48(%rbp), %xmm1
divsd 0x2528(%rip), %xmm1     # 0x6a8d0
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
subsd %xmm0, %xmm1
movsd %xmm1, -0x68(%rbp)
movsd -0x68(%rbp), %xmm0
ucomisd 0x267f(%rip), %xmm0     # 0x6aa48
seta %cl
orb %cl, %al
jne 0x68481
movq -0x70(%rbp), %rax
movq (%rax), %r15
cmpq %rax, %r15
je 0x68413
leaq 0x10(%r15), %rdi
leaq -0x248(%rbp), %rsi
callq 0x8160
testq %rax, %rax
je 0x6840a
cmpl %r12d, 0x14(%r15)
jne 0x6840a
movsd 0x20(%r15), %xmm0
ucomisd -0x48(%rbp), %xmm0
jne 0x6840a
jnp 0x68481
movq (%r15), %r15
cmpq -0x70(%rbp), %r15
jne 0x683e0
movslq -0x50(%rbp), %rax
incl 0x6d8(%r14,%rax,4)
movsbl -0xc50(%rbp), %edi
movl -0x240(%rbp), %edx
xorpd %xmm1, %xmm1
movl %r12d, %esi
movsd -0x48(%rbp), %xmm0
xorl %ecx, %ecx
callq 0x20e91
movl %eax, -0x240(%rbp)
movl $0xa0, %edi
callq 0x8640
movq %rax, %r12
movq %rax, %rdi
addq $0x10, %rdi
movl $0x90, %edx
leaq -0x248(%rbp), %rsi
callq 0x84f0
movq %r12, %rdi
movq -0x70(%rbp), %rsi
callq 0x80c0
movq -0xc0(%rbp), %r12
incq (%r12)
movq -0x450(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x430(%rbp,%rax)
leaq -0x450(%rbp), %r12
je 0x67b1b
leaq -0x450(%rbp), %rdi
callq 0x8130
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x684c2
callq 0x85d0
leaq -0x450(%rbp), %rdi
callq 0x81a0
addq $0x1028, %rsp           # imm = 0x1028
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x684ec
jmp 0x684ec
jmp 0x684ec
jmp 0x684ec
jmp 0x684ec
jmp 0x684ec
movq %rax, %rbx
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x68504
callq 0x85d0
leaq -0x450(%rbp), %rdi
callq 0x81a0
movq %rbx, %rdi
callq 0x8b40