// File: richardposner[P]BioNetFit2/src/code/Data.cpp
// Function: Data::parseData()
void Data::parseData(){  //parsing .exp file
	vector<string> allLines;
	double value;
	Model * mdl=0;
	if ((mid_ >= 0)&& ( (unsigned) mid_ < swarm_->getNumModels())) //Raquel Fixing unsigned vs signed warnings
		mdl=swarm_->options.models[mid_];

//int ii; Raquel fixing unised variable warnings
//cout<<"Data::parseData AAA1. File:"<< dataPath <<".  Enter a number..."; mypause();

	if (swarm_->options.usePipes){
		char buf[5120];
		string line;

		int fd = open(dataPath.c_str(), O_RDONLY);

		if (fd < 0) {
			cout << "Warning: couldn't open " << dataPath << " to gather simulation output." << endl;
		}

		int len;
		while( (len = read(fd, buf, 5120) )){
			buf[len] = 0;
			line = string(buf);
			//cout << line << "!";
			split(line, allLines, "\n");
			//printf("%s", buf);
		}

		if (len < 0) {
			perror("read error");
		}

		close(fd);
	}
	else {

		ifstream dataFile(dataPath);

		std::string line;
		std::string errMsg;

		if (dataFile.is_open()) {
			while (getline(dataFile, line)) {
				allLines.push_back(line);
				//cout << "line: " << line << endl;
			}
		}
		else {
			swarm_->outputError("Error: Couldn't open data file " + dataPath + " for parsing.");
		}
		dataFile.close();
	}

	string replacement = "";
	string basename = boost::regex_replace(getFilename(dataPath),boost::regex("_\\d+_\\d+$"),replacement);

	if(allLines[0].at(0) != '#') {
		swarm_->outputError("Error: Your data file (" + dataPath + ") doesn't contain (#) as the first value.");
	}

	// Do we need to store columns that aren't in .exp?  Maybe not.
	vector<string> columns;
	split(allLines[0], columns, " \t");

	for (vector<string>::iterator l = allLines.begin()+1; l != allLines.end(); ++l) {
		vector<string> values;
		split(*l, values," \t");

		int i = 1;
		for(vector<string>::iterator col = columns.begin(); col != columns.end(); ++col) {

			//cout << "col: " << *col << endl;

			// TODO: Haven't done prefix/exp consistency checks yet so it's possible we're missing
			// a scan parameter.  This needs fixed..
			// Skip column if we encounter a hash, a 'time' column, or a column corresponding to a scan parameter name


			bool scanParam = false;
			if(mdl){
				scanParam = (mdl->actions.find(basename) != mdl->actions.end()) && (*col == mdl->actions.at(basename).scanParam);
			}
			else if((!mdl) && (mid_==-1)){ //check all models
				for(unsigned int m =0; m < swarm_->options.models.size(); m++){
					if((swarm_->options.models.at(m)->actions.find(basename) != swarm_->options.models.at(m)->actions.end()) && (*col == swarm_->options.models.at(m)->actions.at(basename).scanParam)){
						scanParam = true; //break;
						swarm_->outputError("The parameter appears as scan in some of the model files.\n I am quitting since since it is not supported in this version.\n model file name:" + swarm_->options.models.at(m)->getName() + " exp file name:" + basename + " col:"+ *col);
					}
				}
			}
			else{
				swarm_->outputError("Data parsing error. Model is not specified. All models are not requested either. ..."); exit(0);
			}


			if (*col == "#" || *col == "time" || scanParam){
				//cout<<"Swarm::parseData AAA6-1  Enter a number..."; mypause();
				continue;
			}
			else{

				value=0;
				// Replace any NaN's with our own NaN constant
				if (values[i] == "NaN") {
					value = nan("1");
				}
				else {
					value = stod(values[i]);
				}

				// If our column name ends in "_SD" we need to store the value in our stdev map
				if (col->size() > 3 && col->find("_SD") == col->size()-3) {
					string colWithoutSD = boost::regex_replace(*col,boost::regex("_SD$"),string(""));
					cout << "inserting sd at col " << colWithoutSD << ": " << stof(values[0]) << " " << stof(values[i]) << endl;
					//standardDeviations[col].insert(make_pair(stof(values[0]),stof(values[i])));
					standardDeviations[colWithoutSD][stod(values[0])] = stod(values[i]);
					//cout << "test " << colWithoutSD << ": " << standardDeviations[colWithoutSD][stof(values[0])] << endl;
					// TODO: Make sure all SD's have values if we're using objfunc 2, lest we div_by_0
					// TODO: Make sure all normal columns also have SD columns if we're using objfunc 2
				}
				// Insert value into data map
				else {
					dataOrig_[*col][stod(values[0])] = value;
				}
				++i;
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c60, %rsp           # imm = 0x1C60
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1a68(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x448b0
movq -0x1a68(%rbp), %rax
movq $0x0, -0x30(%rbp)
cmpl $0x0, 0x68(%rax)
jl 0x8bc7b
movq -0x1a68(%rbp), %rax
movl 0x68(%rax), %ecx
movl %ecx, -0x1a70(%rbp)
movq 0x150(%rax), %rdi
callq 0x8dec0
movl %eax, -0x1a6c(%rbp)
jmp 0x8bc2c
movl -0x1a70(%rbp), %eax
movl -0x1a6c(%rbp), %ecx
cmpl %ecx, %eax
jae 0x8bc7b
movq -0x1a68(%rbp), %rax
movq 0x150(%rax), %rdi
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
movslq 0x68(%rax), %rsi
callq 0x45b40
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x8bc7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8d04f
movq -0x1a68(%rbp), %rax
movq 0x150(%rax), %rax
testb $0x1, 0x1630(%rax)
je 0x8bf03
leaq -0x1460(%rbp), %rdi
callq 0x2f880
movq -0x1a68(%rbp), %rdi
addq $0x70, %rdi
callq 0x2f290
movq %rax, %rdi
xorl %esi, %esi
movb %sil, %al
callq 0x2fb30
movl %eax, -0x1a74(%rbp)
jmp 0x8bcc7
movl -0x1a74(%rbp), %eax
movl %eax, -0x1464(%rbp)
cmpl $0x0, -0x1464(%rbp)
jge 0x8bd60
movq 0x249269(%rip), %rdi    # 0x2d4f50
leaq 0x14d763(%rip), %rsi    # 0x1d9451
callq 0x2ff50
movq %rax, -0x1a80(%rbp)
jmp 0x8bcfc
movq -0x1a80(%rbp), %rdi
movq -0x1a68(%rbp), %rsi
addq $0x70, %rsi
callq 0x2f780
movq %rax, -0x1a88(%rbp)
jmp 0x8bd1c
movq -0x1a88(%rbp), %rdi
leaq 0x14d73f(%rip), %rsi    # 0x1d9469
callq 0x2ff50
movq %rax, -0x1a90(%rbp)
jmp 0x8bd38
movq -0x1a90(%rbp), %rdi
movq 0x249282(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0x8bd4d
jmp 0x8bd60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8bef2
jmp 0x8bd62
movl -0x1464(%rbp), %edi
leaq -0x1440(%rbp), %rsi
movl $0x1400, %edx           # imm = 0x1400
callq 0x30480
movq %rax, -0x1a98(%rbp)
jmp 0x8bd82
movq -0x1a98(%rbp), %rax
movl %eax, -0x1468(%rbp)
cmpl $0x0, %eax
je 0x8bebb
movslq -0x1468(%rbp), %rax
movb $0x0, -0x1440(%rbp,%rax)
leaq -0x1489(%rbp), %rdi
movq %rdi, -0x1aa0(%rbp)
callq 0x30a70
movq -0x1aa0(%rbp), %rdx
leaq -0x1488(%rbp), %rdi
leaq -0x1440(%rbp), %rsi
callq 0x44470
jmp 0x8bdd6
leaq -0x1460(%rbp), %rdi
leaq -0x1488(%rbp), %rsi
movq %rsi, -0x1ab0(%rbp)
callq 0x2fd80
movq -0x1ab0(%rbp), %rdi
callq 0x311e8
leaq -0x1489(%rbp), %rdi
callq 0x311c0
leaq -0x14b1(%rbp), %rdi
movq %rdi, -0x1aa8(%rbp)
callq 0x30a70
movq -0x1aa8(%rbp), %rdx
leaq 0x14f586(%rip), %rsi    # 0x1db3af
leaq -0x14b0(%rbp), %rdi
callq 0x44470
jmp 0x8be37
leaq -0x1460(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x14b0(%rbp), %rdx
callq 0x17d490
jmp 0x8be50
leaq -0x14b0(%rbp), %rdi
callq 0x311e8
leaq -0x14b1(%rbp), %rdi
callq 0x311c0
jmp 0x8bd62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1489(%rbp), %rdi
callq 0x311c0
jmp 0x8bef2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8bead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x14b0(%rbp), %rdi
callq 0x311e8
leaq -0x14b1(%rbp), %rdi
callq 0x311c0
jmp 0x8bef2
cmpl $0x0, -0x1468(%rbp)
jge 0x8bed4
leaq 0x14d5bc(%rip), %rdi    # 0x1d9487
callq 0x2f770
jmp 0x8bed2
jmp 0x8bed4
movl -0x1464(%rbp), %edi
callq 0x2f5c0
jmp 0x8bee1
leaq -0x1460(%rbp), %rdi
callq 0x311e8
jmp 0x8c0d5
leaq -0x1460(%rbp), %rdi
callq 0x311e8
jmp 0x8d04f
movq -0x1a68(%rbp), %rsi
addq $0x70, %rsi
leaq -0x16c0(%rbp), %rdi
movl $0x8, %edx
callq 0x30d80
jmp 0x8bf21
leaq -0x16e0(%rbp), %rdi
callq 0x2f880
leaq -0x1700(%rbp), %rdi
callq 0x2f880
leaq -0x16c0(%rbp), %rdi
callq 0x30980
movb %al, -0x1ab1(%rbp)
jmp 0x8bf4d
movb -0x1ab1(%rbp), %al
testb $0x1, %al
jne 0x8bf59
jmp 0x8bfcb
jmp 0x8bf5b
leaq -0x16c0(%rbp), %rdi
leaq -0x16e0(%rbp), %rsi
callq 0x2fcb0
movq %rax, -0x1ac0(%rbp)
jmp 0x8bf77
movq -0x1ac0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x2f8e0
movb %al, -0x1ac1(%rbp)
jmp 0x8bf95
movb -0x1ac1(%rbp), %al
testb $0x1, %al
jne 0x8bfa1
jmp 0x8bfc6
leaq -0x20(%rbp), %rdi
leaq -0x16e0(%rbp), %rsi
callq 0x45280
jmp 0x8bfb3
jmp 0x8bf5b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c0ac
jmp 0x8c078
movq -0x1a68(%rbp), %rdx
movq 0x150(%rdx), %rax
movq %rax, -0x1ad0(%rbp)
addq $0x70, %rdx
leaq 0x14d4a7(%rip), %rsi    # 0x1d9492
leaq -0x1740(%rbp), %rdi
callq 0x44240
jmp 0x8bff9
leaq 0x147937(%rip), %rdx    # 0x1d3937
leaq -0x1720(%rbp), %rdi
leaq -0x1740(%rbp), %rsi
callq 0x441f0
jmp 0x8c015
movq -0x1ad0(%rbp), %rdi
leaq -0x1720(%rbp), %rsi
callq 0xeada0
jmp 0x8c02a
leaq -0x1720(%rbp), %rdi
callq 0x311e8
leaq -0x1740(%rbp), %rdi
callq 0x311e8
jmp 0x8c078
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c06a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1720(%rbp), %rdi
callq 0x311e8
leaq -0x1740(%rbp), %rdi
callq 0x311e8
jmp 0x8c0ac
leaq -0x16c0(%rbp), %rdi
callq 0x300d0
jmp 0x8c086
leaq -0x1700(%rbp), %rdi
callq 0x311e8
leaq -0x16e0(%rbp), %rdi
callq 0x311e8
leaq -0x16c0(%rbp), %rdi
callq 0x2f0e0
jmp 0x8c0d5
leaq -0x1700(%rbp), %rdi
callq 0x311e8
leaq -0x16e0(%rbp), %rdi
callq 0x311e8
leaq -0x16c0(%rbp), %rdi
callq 0x2f0e0
jmp 0x8d04f
leaq -0x1761(%rbp), %rdi
movq %rdi, -0x1ad8(%rbp)
callq 0x30a70
movq -0x1ad8(%rbp), %rdx
leaq 0x14d40a(%rip), %rsi    # 0x1d9500
leaq -0x1760(%rbp), %rdi
callq 0x44470
jmp 0x8c104
leaq -0x1761(%rbp), %rdi
callq 0x311c0
movq -0x1a68(%rbp), %rsi
addq $0x70, %rsi
leaq -0x17c8(%rbp), %rdi
callq 0x2f300
jmp 0x8c129
leaq -0x17a8(%rbp), %rdi
leaq -0x17c8(%rbp), %rsi
callq 0x17d590
jmp 0x8c13e
leaq 0x14d36d(%rip), %rsi    # 0x1d94b2
leaq -0x17d8(%rbp), %rdi
xorl %edx, %edx
callq 0x43f20
jmp 0x8c155
leaq -0x17f8(%rbp), %rdi
leaq -0x1760(%rbp), %rsi
callq 0x2f300
jmp 0x8c16a
leaq -0x1788(%rbp), %rdi
leaq -0x17a8(%rbp), %rsi
leaq -0x17d8(%rbp), %rdx
leaq -0x17f8(%rbp), %rcx
xorl %r8d, %r8d
callq 0x8def0
jmp 0x8c190
leaq -0x17f8(%rbp), %rdi
callq 0x311e8
leaq -0x17d8(%rbp), %rdi
callq 0x441d0
leaq -0x17a8(%rbp), %rdi
callq 0x311e8
leaq -0x17c8(%rbp), %rdi
callq 0x311e8
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x1ae8(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x449e0
movq -0x1ae8(%rbp), %rsi
movq %rax, %rdi
callq 0x30840
movq %rax, -0x1ae0(%rbp)
jmp 0x8c1ec
movq -0x1ae0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
je 0x8c35c
movq -0x1a68(%rbp), %rdx
movq 0x150(%rdx), %rax
movq %rax, -0x1af0(%rbp)
addq $0x70, %rdx
leaq 0x14d29d(%rip), %rsi    # 0x1d94bc
leaq -0x1838(%rbp), %rdi
callq 0x44240
jmp 0x8c22d
leaq 0x14d2a0(%rip), %rdx    # 0x1d94d4
leaq -0x1818(%rbp), %rdi
leaq -0x1838(%rbp), %rsi
callq 0x441f0
jmp 0x8c249
movq -0x1af0(%rbp), %rdi
leaq -0x1818(%rbp), %rsi
callq 0xeada0
jmp 0x8c25e
leaq -0x1818(%rbp), %rdi
callq 0x311e8
leaq -0x1838(%rbp), %rdi
callq 0x311e8
jmp 0x8c35c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1761(%rbp), %rdi
callq 0x311c0
jmp 0x8d04f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8d043
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c303
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c2f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c2eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x17f8(%rbp), %rdi
callq 0x311e8
leaq -0x17d8(%rbp), %rdi
callq 0x441d0
leaq -0x17a8(%rbp), %rdi
callq 0x311e8
leaq -0x17c8(%rbp), %rdi
callq 0x311e8
jmp 0x8d043
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8d037
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c34b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1818(%rbp), %rdi
callq 0x311e8
leaq -0x1838(%rbp), %rdi
callq 0x311e8
jmp 0x8d037
leaq -0x1850(%rbp), %rdi
callq 0x448b0
xorl %eax, %eax
movl %eax, %esi
leaq -0x20(%rbp), %rdi
callq 0x449e0
movq %rax, -0x1b00(%rbp)
leaq -0x1871(%rbp), %rdi
movq %rdi, -0x1af8(%rbp)
callq 0x30a70
movq -0x1af8(%rbp), %rdx
leaq 0x14d161(%rip), %rsi    # 0x1d94fe
leaq -0x1870(%rbp), %rdi
callq 0x44470
jmp 0x8c3ab
movq -0x1b00(%rbp), %rdi
leaq -0x1850(%rbp), %rsi
leaq -0x1870(%rbp), %rdx
callq 0x17d490
jmp 0x8c3c7
leaq -0x1870(%rbp), %rdi
callq 0x311e8
leaq -0x1871(%rbp), %rdi
callq 0x311c0
leaq -0x20(%rbp), %rdi
callq 0x458f0
movq %rax, -0x1888(%rbp)
leaq -0x1888(%rbp), %rdi
movl $0x1, %esi
callq 0x8b080
movq %rax, -0x1880(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x45920
movq %rax, -0x1890(%rbp)
leaq -0x1880(%rbp), %rdi
leaq -0x1890(%rbp), %rsi
callq 0x45860
testb $0x1, %al
jne 0x8c433
jmp 0x8cff5
leaq -0x18a8(%rbp), %rdi
callq 0x448b0
leaq -0x1880(%rbp), %rdi
callq 0x8aed0
movq %rax, -0x1b10(%rbp)
leaq -0x18c9(%rbp), %rdi
movq %rdi, -0x1b08(%rbp)
callq 0x30a70
movq -0x1b08(%rbp), %rdx
leaq 0x14d08b(%rip), %rsi    # 0x1d94fe
leaq -0x18c8(%rbp), %rdi
callq 0x44470
jmp 0x8c481
movq -0x1b10(%rbp), %rdi
leaq -0x18a8(%rbp), %rsi
leaq -0x18c8(%rbp), %rdx
callq 0x17d490
jmp 0x8c49d
leaq -0x18c8(%rbp), %rdi
callq 0x311e8
leaq -0x18c9(%rbp), %rdi
callq 0x311c0
movl $0x1, -0x18d0(%rbp)
leaq -0x1850(%rbp), %rdi
callq 0x458f0
movq %rax, -0x18d8(%rbp)
leaq -0x1850(%rbp), %rdi
callq 0x45920
movq %rax, -0x18e0(%rbp)
leaq -0x18d8(%rbp), %rdi
leaq -0x18e0(%rbp), %rsi
callq 0x45860
testb $0x1, %al
jne 0x8c501
jmp 0x8cfca
movb $0x0, -0x18e1(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x8c649
movq -0x30(%rbp), %rdi
leaq -0x1788(%rbp), %rsi
callq 0x8e020
movq %rax, -0x1b18(%rbp)
jmp 0x8c52c
movq -0x1b18(%rbp), %rax
movq %rax, -0x18f0(%rbp)
movq -0x30(%rbp), %rdi
callq 0x45250
movq %rax, -0x18f8(%rbp)
leaq -0x18f0(%rbp), %rdi
leaq -0x18f8(%rbp), %rsi
callq 0x45220
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1b19(%rbp)
jne 0x8c56e
jmp 0x8c5b7
leaq -0x18d8(%rbp), %rdi
callq 0x8aed0
movq %rax, -0x1b30(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x1788(%rbp), %rsi
callq 0x8e050
movq %rax, -0x1b28(%rbp)
jmp 0x8c59a
movq -0x1b30(%rbp), %rdi
movq -0x1b28(%rbp), %rsi
addq $0x48, %rsi
callq 0x69890
movb %al, -0x1b19(%rbp)
movb -0x1b19(%rbp), %al
andb $0x1, %al
movb %al, -0x18e1(%rbp)
jmp 0x8caae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c5f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1870(%rbp), %rdi
callq 0x311e8
leaq -0x1871(%rbp), %rdi
callq 0x311c0
jmp 0x8d02b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c627
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x18c8(%rbp), %rdi
callq 0x311e8
leaq -0x18c9(%rbp), %rdi
callq 0x311c0
jmp 0x8cfe7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8cfe7
cmpq $0x0, -0x30(%rbp)
jne 0x8c9fd
movq -0x1a68(%rbp), %rax
cmpl $-0x1, 0x68(%rax)
jne 0x8c9fd
movl $0x0, -0x18fc(%rbp)
movq -0x1a68(%rbp), %rax
movl -0x18fc(%rbp), %ecx
movq %rcx, -0x1b38(%rbp)
movq 0x150(%rax), %rdi
addq $0x14c0, %rdi           # imm = 0x14C0
addq $0x100, %rdi            # imm = 0x100
callq 0x45170
movq %rax, %rcx
movq -0x1b38(%rbp), %rax
cmpq %rcx, %rax
jae 0x8c9f8
movq -0x1a68(%rbp), %rax
movq 0x150(%rax), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x18fc(%rbp), %eax
movl %eax, %esi
callq 0x45190
movq %rax, -0x1b40(%rbp)
jmp 0x8c6db
movq -0x1b40(%rbp), %rax
movq (%rax), %rdi
leaq -0x1788(%rbp), %rsi
callq 0x8e020
movq %rax, -0x1b48(%rbp)
jmp 0x8c6fa
movq -0x1a68(%rbp), %rax
movq -0x1b48(%rbp), %rcx
movq %rcx, -0x1908(%rbp)
movq 0x150(%rax), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x18fc(%rbp), %eax
movl %eax, %esi
callq 0x45190
movq %rax, -0x1b50(%rbp)
jmp 0x8c733
movq -0x1b50(%rbp), %rax
movq (%rax), %rdi
callq 0x45250
movq %rax, -0x1910(%rbp)
leaq -0x1908(%rbp), %rdi
leaq -0x1910(%rbp), %rsi
callq 0x45220
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1b51(%rbp)
jne 0x8c76d
jmp 0x8c7ea
leaq -0x18d8(%rbp), %rdi
callq 0x8aed0
movq %rax, %rcx
movq -0x1a68(%rbp), %rax
movq %rcx, -0x1b68(%rbp)
movq 0x150(%rax), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x18fc(%rbp), %eax
movl %eax, %esi
callq 0x45190
movq %rax, -0x1b60(%rbp)
jmp 0x8c7ae
movq -0x1b60(%rbp), %rax
movq (%rax), %rdi
leaq -0x1788(%rbp), %rsi
callq 0x8e050
movq %rax, -0x1b70(%rbp)
jmp 0x8c7cd
movq -0x1b68(%rbp), %rdi
movq -0x1b70(%rbp), %rsi
addq $0x48, %rsi
callq 0x69890
movb %al, -0x1b51(%rbp)
movb -0x1b51(%rbp), %al
testb $0x1, %al
jne 0x8c7f9
jmp 0x8c9e2
movq -0x1a68(%rbp), %rax
movb $0x1, -0x18e1(%rbp)
movq 0x150(%rax), %rdi
movq %rdi, -0x1b80(%rbp)
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0x18fc(%rbp), %eax
movl %eax, %esi
callq 0x45190
movq %rax, -0x1b78(%rbp)
jmp 0x8c832
movq -0x1b78(%rbp), %rax
movq (%rax), %rsi
leaq -0x19d0(%rbp), %rdi
callq 0x8e140
jmp 0x8c84a
leaq 0x14ccb0(%rip), %rsi    # 0x1d9501
leaq -0x19b0(%rbp), %rdi
leaq -0x19d0(%rbp), %rdx
callq 0x8e0f0
jmp 0x8c866
leaq 0x14cd20(%rip), %rdx    # 0x1d958d
leaq -0x1990(%rbp), %rdi
leaq -0x19b0(%rbp), %rsi
callq 0x441f0
jmp 0x8c882
leaq -0x1970(%rbp), %rdi
leaq -0x1990(%rbp), %rsi
leaq -0x1788(%rbp), %rdx
callq 0x44760
jmp 0x8c89e
leaq 0x14ccf8(%rip), %rdx    # 0x1d959d
leaq -0x1950(%rbp), %rdi
leaq -0x1970(%rbp), %rsi
callq 0x441f0
jmp 0x8c8ba
leaq -0x18d8(%rbp), %rdi
callq 0x8aed0
movq %rax, %rdx
leaq -0x1930(%rbp), %rdi
leaq -0x1950(%rbp), %rsi
callq 0x44760
jmp 0x8c8de
movq -0x1b80(%rbp), %rdi
leaq -0x1930(%rbp), %rsi
callq 0xeada0
jmp 0x8c8f3
leaq -0x1930(%rbp), %rdi
callq 0x311e8
leaq -0x1950(%rbp), %rdi
callq 0x311e8
leaq -0x1970(%rbp), %rdi
callq 0x311e8
leaq -0x1990(%rbp), %rdi
callq 0x311e8
leaq -0x19b0(%rbp), %rdi
callq 0x311e8
leaq -0x19d0(%rbp), %rdi
callq 0x311e8
jmp 0x8c9e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c9d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c9c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c9b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c9ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8c9a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1930(%rbp), %rdi
callq 0x311e8
leaq -0x1950(%rbp), %rdi
callq 0x311e8
leaq -0x1970(%rbp), %rdi
callq 0x311e8
leaq -0x1990(%rbp), %rdi
callq 0x311e8
leaq -0x19b0(%rbp), %rdi
callq 0x311e8
leaq -0x19d0(%rbp), %rdi
callq 0x311e8
jmp 0x8cfe7
jmp 0x8c9e4
movl -0x18fc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18fc(%rbp)
jmp 0x8c66f
jmp 0x8caac
movq -0x1a68(%rbp), %rax
movq 0x150(%rax), %rax
movq %rax, -0x1b90(%rbp)
leaq -0x19f1(%rbp), %rdi
movq %rdi, -0x1b88(%rbp)
callq 0x30a70
movq -0x1b88(%rbp), %rdx
leaq 0x14cb70(%rip), %rsi    # 0x1d95a3
leaq -0x19f0(%rbp), %rdi
callq 0x44470
jmp 0x8ca41
movq -0x1b90(%rbp), %rdi
leaq -0x19f0(%rbp), %rsi
callq 0xeada0
jmp 0x8ca56
leaq -0x19f0(%rbp), %rdi
callq 0x311e8
leaq -0x19f1(%rbp), %rdi
callq 0x311c0
xorl %edi, %edi
callq 0x30200
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8ca9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x19f0(%rbp), %rdi
callq 0x311e8
leaq -0x19f1(%rbp), %rdi
callq 0x311c0
jmp 0x8cfe7
jmp 0x8caae
leaq -0x18d8(%rbp), %rdi
callq 0x8aed0
movq %rax, %rdi
leaq 0x14decf(%rip), %rsi    # 0x1da993
callq 0x44930
movb %al, -0x1b91(%rbp)
jmp 0x8cad1
movb -0x1b91(%rbp), %al
testb $0x1, %al
jne 0x8cb15
jmp 0x8cadd
leaq -0x18d8(%rbp), %rdi
callq 0x8aed0
movq %rax, %rdi
leaq 0x14710c(%rip), %rsi    # 0x1d3bff
callq 0x44930
movb %al, -0x1b92(%rbp)
jmp 0x8cb00
movb -0x1b92(%rbp), %al
testb $0x1, %al
jne 0x8cb15
jmp 0x8cb0c
testb $0x1, -0x18e1(%rbp)
je 0x8cb1a
jmp 0x8cfb9
movq $0x0, -0x28(%rbp)
movslq -0x18d0(%rbp), %rsi
leaq -0x18a8(%rbp), %rdi
callq 0x449e0
movq %rax, %rdi
leaq 0x14cab9(%rip), %rsi    # 0x1d95f8
callq 0x44930
movb %al, -0x1b93(%rbp)
jmp 0x8cb4c
movb -0x1b93(%rbp), %al
testb $0x1, %al
jne 0x8cb58
jmp 0x8cb6b
leaq 0x15831f(%rip), %rdi    # 0x1e4e7e
callq 0x2fd70
movsd %xmm0, -0x28(%rbp)
jmp 0x8cba1
movslq -0x18d0(%rbp), %rsi
leaq -0x18a8(%rbp), %rdi
callq 0x449e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x44830
movsd %xmm0, -0x1ba0(%rbp)
jmp 0x8cb94
movsd -0x1ba0(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
leaq -0x18d8(%rbp), %rdi
callq 0x8e170
movq %rax, %rdi
callq 0x2f720
cmpq $0x3, %rax
jbe 0x8cef4
leaq -0x18d8(%rbp), %rdi
callq 0x8e170
movq %rax, %rdi
leaq 0x14ca27(%rip), %rsi    # 0x1d95fc
xorl %eax, %eax
movl %eax, %edx
callq 0x2f060
movq %rax, -0x1ba8(%rbp)
leaq -0x18d8(%rbp), %rdi
callq 0x8e170
movq %rax, %rdi
callq 0x2f720
movq %rax, %rcx
movq -0x1ba8(%rbp), %rax
subq $0x3, %rcx
cmpq %rcx, %rax
jne 0x8cef4
leaq -0x18d8(%rbp), %rdi
callq 0x8aed0
movq %rax, -0x1bb0(%rbp)
leaq 0x14c9d6(%rip), %rsi    # 0x1d9600
leaq -0x1a28(%rbp), %rdi
xorl %edx, %edx
callq 0x43f20
jmp 0x8cc3a
leaq -0x1a49(%rbp), %rdi
movq %rdi, -0x1bb8(%rbp)
callq 0x30a70
movq -0x1bb8(%rbp), %rdx
leaq 0x14c8a5(%rip), %rsi    # 0x1d9500
leaq -0x1a48(%rbp), %rdi
callq 0x44470
jmp 0x8cc69
movq -0x1bb0(%rbp), %rsi
leaq -0x1a18(%rbp), %rdi
leaq -0x1a28(%rbp), %rdx
leaq -0x1a48(%rbp), %rcx
xorl %r8d, %r8d
callq 0x8def0
jmp 0x8cc8f
leaq -0x1a48(%rbp), %rdi
callq 0x311e8
leaq -0x1a49(%rbp), %rdi
callq 0x311c0
leaq -0x1a28(%rbp), %rdi
callq 0x441d0
movq 0x248296(%rip), %rdi    # 0x2d4f50
leaq 0x14c944(%rip), %rsi    # 0x1d9605
callq 0x2ff50
movq %rax, -0x1bc0(%rbp)
jmp 0x8cccf
movq -0x1bc0(%rbp), %rdi
leaq -0x1a18(%rbp), %rsi
callq 0x2f780
movq %rax, -0x1bc8(%rbp)
jmp 0x8cceb
movq -0x1bc8(%rbp), %rdi
leaq 0x1472b8(%rip), %rsi    # 0x1d3fb1
callq 0x2ff50
movq %rax, -0x1bd0(%rbp)
jmp 0x8cd07
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x1be0(%rbp)
leaq -0x18a8(%rbp), %rdi
callq 0x449e0
movq -0x1be0(%rbp), %rsi
movq %rax, %rdi
callq 0x44680
movss %xmm0, -0x1bd4(%rbp)
jmp 0x8cd37
movss -0x1bd4(%rbp), %xmm0
movq -0x1bd0(%rbp), %rdi
callq 0x30ce0
movq %rax, -0x1be8(%rbp)
jmp 0x8cd54
movq -0x1be8(%rbp), %rdi
leaq 0x15736d(%rip), %rsi    # 0x1e40cf
callq 0x2ff50
movq %rax, -0x1bf0(%rbp)
jmp 0x8cd70
movslq -0x18d0(%rbp), %rsi
leaq -0x18a8(%rbp), %rdi
callq 0x449e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x44680
movss %xmm0, -0x1bf4(%rbp)
jmp 0x8cd99
movss -0x1bf4(%rbp), %xmm0
movq -0x1bf0(%rbp), %rdi
callq 0x30ce0
movq %rax, -0x1c00(%rbp)
jmp 0x8cdb6
movq -0x1c00(%rbp), %rdi
movq 0x248204(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0x8cdcb
movslq -0x18d0(%rbp), %rsi
leaq -0x18a8(%rbp), %rdi
callq 0x449e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x44830
movsd %xmm0, -0x1c08(%rbp)
jmp 0x8cdf4
movq -0x1a68(%rbp), %rdi
addq $0x8, %rdi
leaq -0x1a18(%rbp), %rsi
callq 0x8e190
movq %rax, -0x1c10(%rbp)
jmp 0x8ce14
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x1c20(%rbp)
leaq -0x18a8(%rbp), %rdi
callq 0x449e0
movq -0x1c20(%rbp), %rsi
movq %rax, %rdi
callq 0x44830
movsd %xmm0, -0x1c18(%rbp)
jmp 0x8ce44
movq -0x1c10(%rbp), %rdi
movsd -0x1c18(%rbp), %xmm0
movsd %xmm0, -0x1a58(%rbp)
leaq -0x1a58(%rbp), %rsi
callq 0x8e270
movq %rax, -0x1c28(%rbp)
jmp 0x8ce70
movq -0x1c28(%rbp), %rax
movsd -0x1c08(%rbp), %xmm0
movsd %xmm0, (%rax)
leaq -0x1a18(%rbp), %rdi
callq 0x311e8
jmp 0x8cfa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x8ceba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1a48(%rbp), %rdi
callq 0x311e8
leaq -0x1a49(%rbp), %rdi
callq 0x311c0
leaq -0x1a28(%rbp), %rdi
callq 0x441d0
jmp 0x8cfe7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1a18(%rbp), %rdi
callq 0x311e8
jmp 0x8cfe7
movq -0x1a68(%rbp), %rax
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x1c40(%rbp)
addq $0x90, %rax
movq %rax, -0x1c38(%rbp)
leaq -0x18d8(%rbp), %rdi
callq 0x8aed0
movq -0x1c38(%rbp), %rdi
movq %rax, %rsi
callq 0x8e190
movq %rax, -0x1c30(%rbp)
jmp 0x8cf39
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x1c50(%rbp)
leaq -0x18a8(%rbp), %rdi
callq 0x449e0
movq -0x1c50(%rbp), %rsi
movq %rax, %rdi
callq 0x44830
movsd %xmm0, -0x1c48(%rbp)
jmp 0x8cf69
movq -0x1c30(%rbp), %rdi
movsd -0x1c48(%rbp), %xmm0
movsd %xmm0, -0x1a60(%rbp)
leaq -0x1a60(%rbp), %rsi
callq 0x8e270
movq %rax, -0x1c58(%rbp)
jmp 0x8cf95
movq -0x1c58(%rbp), %rax
movsd -0x1c40(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x18d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18d0(%rbp)
jmp 0x8cfb9
leaq -0x18d8(%rbp), %rdi
callq 0x8aef0
jmp 0x8c4d2
leaq -0x18a8(%rbp), %rdi
callq 0x448d0
leaq -0x1880(%rbp), %rdi
callq 0x8aef0
jmp 0x8c407
leaq -0x18a8(%rbp), %rdi
callq 0x448d0
jmp 0x8d02b
leaq -0x1850(%rbp), %rdi
callq 0x448d0
leaq -0x1788(%rbp), %rdi
callq 0x311e8
leaq -0x1760(%rbp), %rdi
callq 0x311e8
leaq -0x20(%rbp), %rdi
callq 0x448d0
addq $0x1c60, %rsp           # imm = 0x1C60
popq %rbp
retq
leaq -0x1850(%rbp), %rdi
callq 0x448d0
leaq -0x1788(%rbp), %rdi
callq 0x311e8
leaq -0x1760(%rbp), %rdi
callq 0x311e8
leaq -0x20(%rbp), %rdi
callq 0x448d0
movq -0x38(%rbp), %rdi
callq 0x30170
nopw %cs:(%rax,%rax)