// File: /workspace/github_cpp_makefile_star2_O3/richardposner[P]BioNetFit2/src/code/Model.cpp
// Function: Model::parseModel()
void Model::parseModel() {
	string line;
	ifstream modelFile(modelPath_);
	vector<string> model_vector;

	if (modelFile.is_open()) {
		while (getline(modelFile, line)) {
			string line_with_newline = line + "\n";
			model_vector.push_back(line_with_newline);
		}
	}
	else {
		swarm_->outputError("Error: Couldn't open model file " + modelPath_ + " for parsing.");
	}
	modelFile.close();

	// Find any line-continuation backslashes and merge the lines together
	for (unsigned i = 0 ; i < model_vector.size(); i++) {
		int j = 0;
		while(1) {
			if (boost::regex_search(model_vector[i-j],boost::regex("\\\\"))) {
				model_vector[i-j] = boost::regex_replace(model_vector[i-j],boost::regex("\\\\\\W*"),string(""));
				model_vector[i-j] = model_vector[i-j] + model_vector[i+1];
				model_vector[i-j] = boost::regex_replace(model_vector[i-j],boost::regex("\\s*"),string(""));
				if (!boost::regex_search(model_vector[i-j],boost::regex("\\\\"))) {
					fullContents_.push_back(model_vector[i-j]);
				}
				i++;
				j++;
				if (!boost::regex_search(model_vector[i-j],boost::regex("\\\\"))) {
					break;
				}
			}
			else {
				break;
			}
		}
		if (j == 0){
			fullContents_.push_back(model_vector[i]);
		}
	}

	// Go through the model and store important things
	boost::smatch smatches;

	for (vector<string>::iterator i = fullContents_.begin(); i != fullContents_.end(); ++i) {
		if (boost::regex_search(*i, boost::regex("^\\s*simulate|^\\s*simulate_nf|^\\s*simulate_ode|^\\s*simulate_ssa|^\\s*simulate_pla|^\\s*parameter_scan"))) {
			action newAction;
			string prefix;
			bool isParScan = 0;

			// If the action is a normal "simulate", find the method in the arguments and store it
			if (boost::regex_search(*i, smatches, boost::regex("^\\s*simulate\\(\\{.*method=>(\"|')(\\w{2,3})(\"|')"))) {
				newAction.type = smatches[2];
			}
			// If we the action command is simulate_xx, store the sim type
			else if (boost::regex_search(*i, smatches, boost::regex("^\\s*simulate_(\\w{2})\\(\\{"))) {
				newAction.type = smatches[1];
			}
			// If we found a parameter_scan command, store the type, scan parameter, and t_end
			else if (boost::regex_search(*i, smatches, boost::regex("^\\s*parameter_scan\\(\\{.*method=>(\"|')(\\w{2,3})(\"|')"))) {
				isParScan = 1;
				newAction.type = smatches[2];

				if (boost::regex_search(*i, smatches, boost::regex("parameter=>('|\")(\\w+)('|\")"))) {
					newAction.scanParam = smatches[2];
				}
				if (boost::regex_search(*i, smatches, boost::regex("par_max=>(\\w+)"))) {
					newAction.t_end = atof(smatches[1].str().c_str());
				}
				if (boost::regex_search(*i, smatches, boost::regex("par_scan_vals=>\\[(.+)\\]"))) {
					vector<string> values;
					split(smatches[1].str(), values, ",");
					newAction.t_end = atof(values.back().c_str());
				}
			}

			// Remove any suffixes from the command
			*i = boost::regex_replace(*i,boost::regex(",\\s*suffix=>('|\")\\w+('|\")"), string(""));

			// Find any prefixes and store them
			if (boost::regex_search(*i, smatches, boost::regex("prefix=>('|\")(\\w+)('|\")"))) {
				prefix = smatches[2];
			}

			// If we find a non parameter_scan action, store the t_end value
			if (boost::regex_search(*i, smatches, boost::regex("t_end=>(\\w+)")) && !isParScan) {
				newAction.t_end = atof(smatches[1].str().c_str());
			}

			newAction.full = *i;
			if (!prefix.empty()) {
				actions.insert(pair<string, action>(prefix, newAction));
			}
		}
		// Save any free parameters
		else if (boost::regex_search(*i, smatches, boost::regex("(\\s+|=\\s*)(\\w+)__FREE__"))) {
			FreeParam * fp = new FreeParam(smatches[2]);
			freeParams_.insert(pair<string,FreeParam*>(smatches[2],fp));
			if(swarm_->options.verbosity >= 3) cout<<"Free param:" <<smatches[2] << "is added to the model:" << this->getName() <<endl;
		}
		// Make sure we know if we need to do network generation
		else if (boost::regex_search(*i, smatches, boost::regex("^\\s*generate_network"))) {
			hasGenerateNetwork_ = true;
		}
	}

	if (actions.size() == 0) {
		swarm_->outputError("Error: We didn't find any action commands containing prefixes in your model file. Your model must contain an action command that uses a prefix which corresponds to the name of the .exp file to be fit to the data generated by that action command.");
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4c8, %rsp            # imm = 0x4C8
movq %rdi, %r15
leaq 0x1a0(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x68(%rdi), %r14
leaq 0x2c0(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movl $0x8, %edx
callq 0x23070
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
leaq 0x338(%rsp), %rdi
callq 0x221e0
testb %al, %al
movq %r15, 0xb8(%rsp)
je 0x4d4ef
leaq 0x10(%rsp), %rbp
leaq 0x190(%rsp), %r14
movq %rsp, %r15
leaq 0xab6d6(%rip), %r12     # 0xf8b34
leaq 0x90(%rsp), %r13
movq 0x2c0(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x23300
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x4d5aa
movq %rbp, (%rsp)
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x3213c
movq %r15, %rdi
movq %r12, %rsi
callq 0x233b0
movq %r13, %rdi
movq %r15, %rsi
callq 0x31cec
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x4d466
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4d466
movq 0x60(%r15), %rbx
leaq 0xaa778(%rip), %rsi     # 0xf7c72
movq %rsp, %rdi
movq %r14, %rdx
callq 0x31944
leaq 0xa3fd6(%rip), %rsi     # 0xf14e2
movq %rsp, %rdi
callq 0x233b0
leaq 0x240(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4d544
movq %rdx, 0x230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x240(%rsp)
jmp 0x4d54b
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x230(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
callq 0x784c2
movq 0x230(%rsp), %rdi
cmpq %r15, %rdi
je 0x4d58f
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4d5aa
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x2c0(%rsp), %rdi
callq 0x221b0
movq 0x98(%rsp), %rax
cmpq 0x90(%rsp), %rax
je 0x4d8f3
movq 0xb8(%rsp), %rax
addq $0x88, %rax
movq %rax, 0xb0(%rsp)
xorl %ebx, %ebx
movq %rsp, %r15
movl %ebx, %r14d
movl $0x1, %ebp
shlq $0x5, %r14
movq 0x90(%rsp), %r13
movq %r15, %rdi
leaq 0xaa68d(%rip), %rsi     # 0xf7c93
xorl %edx, %edx
callq 0x3186e
movq (%r13,%r14), %rdi
movq 0x8(%r13,%r14), %rsi
addq %rdi, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x46e83
movl %eax, %r13d
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %r13b, %r13b
je 0x4d8b4
movq 0x90(%rsp), %r13
addq %r14, %r13
leaq 0x120(%rsp), %rdi
leaq 0xaa642(%rip), %rsi     # 0xf7c96
xorl %edx, %edx
callq 0x3186e
leaq 0x200(%rsp), %rax
movq %rax, 0x1f0(%rsp)
leaq 0x1f0(%rsp), %r12
movq %r12, %rdi
leaq 0xa95f4(%rip), %rdx     # 0xf6c71
movq %rdx, %rsi
callq 0x321d2
movq %r15, %rdi
movq %r13, %rsi
leaq 0x120(%rsp), %rdx
movq %r12, %rcx
xorl %r8d, %r8d
callq 0x4a0a3
movq 0x90(%rsp), %rdi
addq %r14, %rdi
movq %r15, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4d6cc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x4d6f1
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x128(%rsp), %rdi
callq 0x32268
movq 0x90(%rsp), %rax
leaq (%rax,%r14), %rsi
incl %ebx
movq %rbx, %rdx
shlq $0x5, %rdx
addq %rax, %rdx
movq %r15, %rdi
callq 0x335a4
movq 0x90(%rsp), %rdi
addq %r14, %rdi
movq %r15, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4d74c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x90(%rsp), %r13
addq %r14, %r13
leaq 0x120(%rsp), %rdi
leaq 0xaa536(%rip), %rsi     # 0xf7c9c
xorl %edx, %edx
callq 0x3186e
leaq 0x1e0(%rsp), %rax
movq %rax, 0x1d0(%rsp)
leaq 0x1d0(%rsp), %r12
movq %r12, %rdi
leaq 0xa94e2(%rip), %rdx     # 0xf6c71
movq %rdx, %rsi
callq 0x321d2
movq %r15, %rdi
movq %r13, %rsi
leaq 0x120(%rsp), %rdx
movq %r12, %rcx
xorl %r8d, %r8d
callq 0x4a0a3
movq 0x90(%rsp), %rdi
addq %r14, %rdi
movq %r15, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4d7de
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0x4d803
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x128(%rsp), %rdi
callq 0x32268
movq 0x90(%rsp), %r13
movq %r15, %rdi
leaq 0xaa471(%rip), %rsi     # 0xf7c93
xorl %edx, %edx
callq 0x3186e
movq (%r13,%r14), %rdi
movq 0x8(%r13,%r14), %rsi
addq %rdi, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x46e83
movl %eax, %r13d
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %r13b, %r13b
jne 0x4d86a
movq 0x90(%rsp), %rsi
addq %r14, %rsi
movq 0xb0(%rsp), %rdi
callq 0x31cec
movq 0x90(%rsp), %r13
movq %r15, %rdi
leaq 0xaa417(%rip), %rsi     # 0xf7c93
xorl %edx, %edx
callq 0x3186e
movq (%r13,%r14), %rdi
movq 0x8(%r13,%r14), %rsi
addq %rdi, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x46e83
movl %eax, %r13d
leaq 0x8(%rsp), %rdi
callq 0x32268
incl %ebp
testb %r13b, %r13b
jne 0x4d5f4
jmp 0x4d8d4
cmpl $0x1, %ebp
jne 0x4d8d4
movl %ebx, %esi
shlq $0x5, %rsi
addq 0x90(%rsp), %rsi
movq 0xb0(%rsp), %rdi
callq 0x31cec
incl %ebx
movq 0x98(%rsp), %rax
subq 0x90(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0x4d5e8
xorps %xmm0, %xmm0
movaps %xmm0, 0x290(%rsp)
movaps %xmm0, 0x280(%rsp)
movaps %xmm0, 0x270(%rsp)
movb $0x0, 0x2a0(%rsp)
movups %xmm0, 0x2a8(%rsp)
movl $0x0, 0x2b8(%rsp)
movb $0x1, 0x2bc(%rsp)
movq 0xb8(%rsp), %r13
movq 0x88(%r13), %r12
cmpq 0x90(%r13), %r12
je 0x4e42f
leaq 0x30(%r13), %rax
movq %rax, 0xb0(%rsp)
movq %rsp, %r14
xorl %r15d, %r15d
leaq 0x270(%rsp), %rbp
movq %r14, %rdi
leaq 0xaa32f(%rip), %rsi     # 0xf7ca0
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x46e83
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4da98
leaq 0x130(%rsp), %rax
movq %rax, 0x120(%rsp)
movq %r15, 0x128(%rsp)
movb %r15b, 0x130(%rsp)
leaq 0x158(%rsp), %rax
movq %rax, 0x148(%rsp)
movq %r15, 0x150(%rsp)
movb %r15b, 0x158(%rsp)
leaq 0x178(%rsp), %rax
movq %rax, 0x168(%rsp)
movq %r15, 0x170(%rsp)
movb %r15b, 0x178(%rsp)
leaq 0x110(%rsp), %rax
movq %rax, 0x100(%rsp)
movq %r15, 0x108(%rsp)
movb %r15b, 0x110(%rsp)
movq %r14, %rdi
leaq 0xaa2d7(%rip), %rsi     # 0xf7d03
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4db27
movq %rbp, %rdi
movl $0x2, %esi
callq 0x318b6
cmpb $0x1, 0x10(%rax)
jne 0x4dbe5
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
callq 0x45a40
jmp 0x4dbfc
movq %r14, %rdi
leaq 0xaa35f(%rip), %rsi     # 0xf7e01
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4db96
movl $0x58, %edi
callq 0x22980
movq %rax, %rbx
movq %rbp, %rdi
movl $0x2, %esi
callq 0x318b6
cmpb $0x1, 0x10(%rax)
jne 0x4dd51
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0x45a40
jmp 0x4dd75
movq %r14, %rdi
leaq 0xaa200(%rip), %rsi     # 0xf7d31
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4ddde
movq %rbp, %rdi
movl $0x1, %esi
callq 0x318b6
cmpb $0x1, 0x10(%rax)
jne 0x4dbe5
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
callq 0x45a40
jmp 0x4dbfc
movq %r14, %rdi
leaq 0xaa29c(%rip), %rsi     # 0xf7e3c
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4e18c
movb $0x1, 0xb8(%r13)
jmp 0x4e18c
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
leaq 0x148(%rsp), %rdi
movq %r14, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4dc27
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movb $0x1, %r13b
leaq 0xe0(%rsp), %rdi
leaq 0xaa189(%rip), %rsi     # 0xf7dc2
xorl %edx, %edx
callq 0x3186e
leaq 0x1c0(%rsp), %rax
movq %rax, 0x1b0(%rsp)
leaq 0x1b0(%rsp), %rbx
movq %rbx, %rdi
leaq 0xa900f(%rip), %rdx     # 0xf6c71
movq %rdx, %rsi
callq 0x321d2
movq %r14, %rdi
movq %r12, %rsi
leaq 0xe0(%rsp), %rdx
movq %rbx, %rcx
xorl %r8d, %r8d
callq 0x4a0a3
movq %r12, %rdi
movq %r14, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4dca9
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
je 0x4dcce
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xe8(%rsp), %rdi
callq 0x32268
movq %r14, %rdi
leaq 0xaa0f7(%rip), %rsi     # 0xf7ddc
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4dfb7
movq %rbp, %rdi
movl $0x2, %esi
callq 0x318b6
cmpb $0x1, 0x10(%rax)
jne 0x4df75
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
callq 0x45a40
jmp 0x4df8c
leaq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq $0x0, 0xc8(%rsp)
movb $0x0, 0xd0(%rsp)
movq %rbx, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x4d144
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4ddaa
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %rbp, %rdi
movl $0x2, %esi
callq 0x318b6
cmpb $0x1, 0x10(%rax)
jne 0x4de5f
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
callq 0x45a40
jmp 0x4de76
movq %r14, %rdi
leaq 0xa9f62(%rip), %rsi     # 0xf7d4a
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
movb $0x1, %r13b
testb %bl, %bl
je 0x4dc2a
movq %rbp, %rdi
movl $0x2, %esi
callq 0x318b6
leaq 0xe0(%rsp), %r13
cmpb $0x1, 0x10(%rax)
jne 0x4e1a2
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
callq 0x45a40
jmp 0x4e1b9
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
movq %rbx, 0x20(%rsp)
movq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x51c64
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4dea6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%r13), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x4e18c
movl $0xb, %edx
movq 0x1280e5(%rip), %rdi    # 0x175fa8
leaq 0xa9f4f(%rip), %rsi     # 0xf7e19
callq 0x22ab0
movq %rbp, %rdi
movl $0x2, %esi
callq 0x318b6
movq 0x1280c5(%rip), %rdi    # 0x175fa8
movq %rax, %rsi
callq 0x5156c
movq %rax, %rbx
movl $0x16, %edx
movq %rax, %rdi
leaq 0xa9f28(%rip), %rsi     # 0xf7e25
callq 0x22ab0
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x68(%r13), %rsi
movq 0x70(%r13), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x3213c
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x22ab0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4e18c
movq 0x10(%rsp), %rsi
jmp 0x4e184
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
leaq 0x100(%rsp), %rdi
movq %r14, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4dfb7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %r14, %rdi
leaq 0xa9e33(%rip), %rsi     # 0xf7df4
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
andb %al, %r13b
leaq 0x8(%rsp), %rdi
callq 0x32268
cmpb $0x1, %r13b
movq 0xb8(%rsp), %r13
jne 0x4e047
movq %rbp, %rdi
movl $0x1, %esi
callq 0x318b6
movq %r14, %rdi
movq %rax, %rsi
callq 0x51326
movq (%rsp), %rbx
movq %rbx, %rdi
callq 0x22be0
movsd %xmm0, 0x140(%rsp)
leaq 0x10(%rsp), %rax
cmpq %rax, %rbx
je 0x4e047
movq 0x10(%rsp), %rsi
incq %rsi
movq %rbx, %rdi
callq 0x229c0
leaq 0x120(%rsp), %rdi
movq %r12, %rsi
callq 0x22500
cmpq $0x0, 0x108(%rsp)
je 0x4e0f8
movq %r14, %rdi
leaq 0x100(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0x513b6
movq %r13, %rdi
movq %r14, %rsi
callq 0x5199c
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x4e0a5
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x4e0c1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x4e0dd
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4e0f8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x4e11d
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x4e142
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x4e167
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x4e18c
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x229c0
addq $0x20, %r12
cmpq 0x90(%r13), %r12
jne 0x4d967
jmp 0x4e42f
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
leaq 0x148(%rsp), %rdi
movq %r14, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4e1e4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %r14, %rdi
leaq 0xa9b90(%rip), %rsi     # 0xf7d7e
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4e291
movq %rbp, %rdi
movl $0x2, %esi
callq 0x318b6
cmpb $0x1, 0x10(%rax)
jne 0x4e24f
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
callq 0x45a40
jmp 0x4e266
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
leaq 0x168(%rsp), %rdi
movq %r14, %rsi
callq 0x22bb0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4e291
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %r14, %rdi
leaq 0xa9afe(%rip), %rsi     # 0xf7d99
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4e316
movq %rbp, %rdi
movl $0x1, %esi
callq 0x318b6
movq %r14, %rdi
movq %rax, %rsi
callq 0x51326
movq (%rsp), %rbx
movq %rbx, %rdi
callq 0x22be0
movsd %xmm0, 0x140(%rsp)
leaq 0x10(%rsp), %rax
cmpq %rax, %rbx
je 0x4e316
movq 0x10(%rsp), %rsi
incq %rsi
movq %rbx, %rdi
callq 0x229c0
movq %r14, %rdi
leaq 0xa9a88(%rip), %rsi     # 0xf7da8
xorl %edx, %edx
callq 0x3186e
movq (%r12), %rdi
movq 0x8(%r12), %rsi
addq %rdi, %rsi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
movq %rdi, %r9
callq 0x40228
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x32268
testb %bl, %bl
je 0x4e427
xorps %xmm0, %xmm0
movaps %xmm0, 0x210(%rsp)
movq $0x0, 0x220(%rsp)
movq %rbp, %rdi
movl $0x1, %esi
callq 0x318b6
movq %r14, %rdi
movq %rax, %rsi
callq 0x51326
leaq 0xf0(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq %r13, %rdi
leaq 0xa9a1f(%rip), %rsi     # 0xf7dc0
leaq 0xa9a19(%rip), %rdx     # 0xf7dc1
callq 0x321d2
movq %r14, %rdi
leaq 0x210(%rsp), %rsi
movq %r13, %rdx
callq 0xbea28
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e3e5
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4e400
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x218(%rsp), %rax
movq -0x20(%rax), %rdi
callq 0x22be0
movsd %xmm0, 0x140(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x31a0a
xorl %r13d, %r13d
jmp 0x4dc2a
cmpq $0x0, 0x28(%r13)
jne 0x4e48e
movq 0x60(%r13), %rbx
leaq 0x260(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0xa9a04(%rip), %rsi     # 0xf7e51
leaq 0xa9af2(%rip), %rdx     # 0xf7f46
leaq 0x250(%rsp), %rdi
callq 0x321d2
leaq 0x250(%rsp), %rsi
movq %rbx, %rdi
callq 0x784c2
movq 0x250(%rsp), %rdi
cmpq %r15, %rdi
je 0x4e48e
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x270(%rsp), %rdi
callq 0x31fe0
leaq 0x90(%rsp), %rdi
callq 0x31a0a
leaq 0x2c0(%rsp), %rdi
callq 0x22200
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e4da
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x229c0
addq $0x4c8, %rsp            # imm = 0x4C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x250(%rsp), %rdi
cmpq %r15, %rdi
je 0x4e76c
movq 0x260(%rsp), %rsi
jmp 0x4e697
jmp 0x4e75a
movq %rax, %r14
movq 0x230(%rsp), %rdi
cmpq %r15, %rdi
je 0x4e537
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4e537
movq %rax, %r14
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x4e743
jmp 0x4e7fa
jmp 0x4e7f7
movq %rax, %r14
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e580
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4e580
movq %rax, %r14
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4e5b2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4e5b2
jmp 0x4e6f6
jmp 0x4e7f7
movq %rax, %r14
jmp 0x4e814
movq %rax, %r14
leaq 0x210(%rsp), %rdi
callq 0x31a0a
jmp 0x4e6f9
jmp 0x4e6e3
jmp 0x4e6f6
jmp 0x4e6f6
jmp 0x4e6e3
jmp 0x4e6f6
jmp 0x4e6e3
jmp 0x4e6f6
jmp 0x4e6f6
jmp 0x4e6e3
jmp 0x4e6f6
jmp 0x4e75a
jmp 0x4e6f6
jmp 0x4e6f6
jmp 0x4e75a
jmp 0x4e67d
movq %rax, %r14
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e667
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4e667
jmp 0x4e6e3
jmp 0x4e75f
jmp 0x4e7f7
movq %rax, %r14
movq %rsp, %rdi
callq 0x514b8
jmp 0x4e6f9
jmp 0x4e6f6
jmp 0x4e75a
jmp 0x4e6f6
movq %rax, %r14
movl $0x58, %esi
movq %rbx, %rdi
jmp 0x4e69a
jmp 0x4e6f6
movq %rax, %r14
jmp 0x4e6d9
jmp 0x4e6f6
movq %rax, %r14
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x4e76c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4e76c
jmp 0x4e6e3
jmp 0x4e6e3
jmp 0x4e6f6
jmp 0x4e75f
jmp 0x4e6f6
movq %rax, %r14
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e6d9
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xe8(%rsp), %rdi
jmp 0x4e6eb
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x32268
jmp 0x4e6f9
jmp 0x4e6f6
jmp 0x4e6f6
movq %rax, %r14
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x4e71e
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x120(%rsp), %rdi
callq 0x5151e
jmp 0x4e76c
jmp 0x4e75a
jmp 0x4e75a
jmp 0x4e733
movq %rax, %r14
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x4e7fa
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4e7fa
jmp 0x4e7f7
movq %rax, %r14
jmp 0x4e76c
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x32268
leaq 0x270(%rsp), %rdi
callq 0x31fe0
jmp 0x4e7fa
jmp 0x4e7f7
jmp 0x4e7f7
movq %rax, %r14
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e7d4
movq 0x1e0(%rsp), %rsi
jmp 0x4e7c5
jmp 0x4e7d1
jmp 0x4e7f7
movq %rax, %r14
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x4e7d4
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x4e7d4
jmp 0x4e7e8
movq %rax, %r14
leaq 0x128(%rsp), %rdi
jmp 0x4e7f0
jmp 0x4e7f7
jmp 0x4e7e8
jmp 0x4e7f7
jmp 0x4e7f7
jmp 0x4e7f7
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x32268
jmp 0x4e7fa
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x31a0a
leaq 0x2c0(%rsp), %rdi
callq 0x22200
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e839
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %r14, %rdi
callq 0x23240
nop