// File: /workspace/github_cpp_makefile_star2_O2/richardposner[P]BioNetFit2/src/code/Particle.cpp
// Function: Particle::checkMessagesGenetic(unsigned int)
void Particle::checkMessagesGenetic(unsigned int mid) {
unsigned int subParID = calcsubParID(mid);
if ((mid<0)|| (mid >= swarm_->getNumModels()) || (!models.at(mid)))
    outputError("checkMessagesGenetic Failed. Invalid SubParticle.  PID:"+ toString(id_) + "  model id:" + toString(mid)+ "  subParID:" + toString(subParID)+". Quitting !!!" );
//if ((mid<0)|| (mid >= swarm_->getNumModels()) || (!getSubParticle(mid)) || (!models.at(mid)))
//outputError("checkMessagesGenetic Failed. Invalid SubParticle.  PID:"+ toString(id_) + "  model id:" + toString(mid)+ "  subParID:" + toString(subParID)+". Quitting !!!");

Model * mdl= models.at(mid);
	// Holds iterator ranges when finding items in the message holder
	pair <Pheromones::swarmMsgHolderIt, Pheromones::swarmMsgHolderIt> smhRange;
	if (swarm_->options.verbosity >= 3) {
		cout << "RAQUEL entering while from function that takes mid as input" << endl;
	}
	string path; //Raquel: declaring it outside the while loop

	while (1) {
		// Retrieve any messages
		int numCheckedMessages = 0;
		int numMessages = swarm_->swarmComm->recvMessage(-1, subParID, -1, true, swarm_->swarmComm->univMessageReceiver, true);
		if (swarm_->options.verbosity >= 4) {
			cout << "RAQUEL inside LOOP ITERATION in checkMessagesGenetic, numMessages = " << numMessages << " and numCheckedMessages = " << numCheckedMessages << endl;

			cout << "RAQUEL entering univMessageReceiver.equal_range(SEND_FINAL_PARAMS_TO_PARTICLE)" << endl;
		}
		smhRange = swarm_->swarmComm->univMessageReceiver.equal_range(SEND_FINAL_PARAMS_TO_PARTICLE);
		if (swarm_->options.verbosity >= 3) {
			cout << "RAQUEL passed univMessageReceiver.equal_range(SEND_FINAL_PARAMS_TO_PARTICLE)" << endl;
		}

		if (smhRange.first != smhRange.second) {
			//cout << id_ << " found final " << endl;
			for (Pheromones::swarmMsgHolderIt sm = smhRange.first; sm != smhRange.second; ++sm) {
				//Timer tmr;

				int messageIndex = 0;
				for (auto p = simParams_.at(mid).begin(); p != simParams_.at(mid).end(); ++p) {
					if (swarm_->options.verbosity >= 3) {
						cout << id_ << " updating parameter " << p->first << " to " << sm->second.message[messageIndex] << endl;
					}
					p->second = stod(sm->second.message[messageIndex]);
					if (swarm_->options.verbosity >= 3) {
						cout << "updated param " << p->first << ": " << p->second << endl;
					}
					++messageIndex;
				}

				path = swarm_->options.jobOutputDir + toString(currentGeneration_ + 1) + "/";

				if (!checkIfFileExists(path)) {
					if (swarm_->options.verbosity >= 3) {
						cout << "trying to create path " << path << endl;
					}
					runCommand("mkdir " + path);
				}

				for (unsigned int i = 1; i <= swarm_->options.smoothing; ++i) {
					// Construct our filenames
					string bnglFilename = swarm_->getModelName(mid, false)+"_" + toString(id_) + "_" + toString(i) + ".bngl";
					string bnglFullPath = path + bnglFilename;
					string suffix = toString(id_) + "_" + toString(i);
					if (swarm_->options.verbosity >= 3) {
						cout << "RAQUEL CREATING BNGL: " << bnglFullPath << endl;
					}
					// And generate our models
					if (swarm_->options.models.at(mid)->getHasGenerateNetwork()){
						// If we're using ODE solver, output .net and .bngl
						mdl->outputModelWithParams(simParams_.at(mid), path, bnglFilename, suffix, false, false, true, false, false);
					}
					else {
						// If we're using network free simulation, output .bngl
						mdl->outputModelWithParams(simParams_.at(mid), path, bnglFilename, suffix, false, false, false, false, false);
					}
					if (swarm_->options.verbosity >= 3) {
						cout << "RAQUEL BNGL generated: " <<  bnglFullPath << " id_ " << toString(id_) << " i " << toString(i) << " subParID " << subParID << endl;
					}
				}
				if (swarm_->options.verbosity >= 3) {
				// Tell the master we have our new params and are ready for the next generation
					cout << id_ << " telling master we're finished " << endl;
				}
				swarm_->swarmComm->sendToSwarm(subParID, 0, DONE_BREEDING, false, swarm_->swarmComm->univMessageSender);

				//double t = tmr.elapsed();
				//cout << "SEND_FINAL_PARAMS took " << t << " seconds" << endl;
				++numCheckedMessages;
			}
		}

		if (swarm_->options.verbosity >= 3) {
			cout << "RAQUEL BEFORE IF numCheckedMessages >= numMessages" << endl;
		}

		if (numCheckedMessages >= numMessages) {
			swarm_->swarmComm->univMessageReceiver.clear();
			if (swarm_->options.verbosity >= 3) {
				cout << "RAQUEL INSIDE IF numCheckedMessages >= numMessages = " << numCheckedMessages << ":" << numMessages << endl;
			}
			continue;
			//return 0; //Raquel: added
		}
		if (swarm_->options.verbosity >= 3) {
			cout << "RAQUEL PASSED IF numCheckedMessages >= numMessages" << endl;
		}

		if (swarm_->swarmComm->univMessageReceiver.find(FIT_FINISHED) != swarm_->swarmComm->univMessageReceiver.end()) {
			if (swarm_->options.verbosity >= 3) {
				cout << "RAQUEL entering ~pheromones" << endl;
			}
			swarm_->swarmComm->~Pheromones();
			if (swarm_->options.verbosity >= 3) {
				cout << "RAQUEL exiting ~pheromones" << endl;
			}
			//return;
			exit(0);
		}

		if (swarm_->swarmComm->univMessageReceiver.find(NEW_BOOTSTRAP) != swarm_->swarmComm->univMessageReceiver.end()) {
			if (swarm_->options.verbosity >= 3) {
				cout << "SubParticle " << subParID <<": Starting a new bootstrapping run" << endl;
			}

			++swarm_->bootstrapCounter;
			currentGeneration_ = 0;
			simParams_.at(mid).clear();
			generateParams();
			if (swarm_->options.verbosity >= 3) {
				cout << "RAQUEL INSIDE IF swarm_->swarmComm->univMessageReceiver.find(NEW_BOOTSTRAP)" << endl;
			}
			swarm_->swarmComm->univMessageReceiver.clear();
			return;
		}

		if (swarm_->swarmComm->univMessageReceiver.find(NEXT_GENERATION) != swarm_->swarmComm->univMessageReceiver.end()) {
			if (swarm_->options.verbosity >= 3) {
				cout << "RAQUEL INSIDE IF swarm_->swarmComm->univMessageReceiver.find(NEXT_GENERATION)" << endl;
			}
			return;
		}

		swarm_->swarmComm->univMessageReceiver.clear();
	}
	if (swarm_->options.verbosity >= 3) {
		cout << "RAQUEL existing while that takes mid as input" << endl;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2e8, %rsp            # imm = 0x2E8
movl %esi, %ebp
movq %rdi, %rbx
callq 0x5645e
movq 0xa8(%rbx), %rcx
movq 0x15c8(%rcx), %rdx
subq 0x15c0(%rcx), %rdx
movl %eax, 0xc(%rsp)
shrq $0x3, %rdx
movl %ebp, %r14d
movl %ebp, 0x24(%rsp)
cmpl %ebp, %edx
jbe 0x568ff
leaq 0x78(%rbx), %rdi
movq %r14, %rsi
callq 0x3374c
cmpq $0x0, (%rax)
jne 0x56a46
movq %r14, %r15
movl 0x40(%rbx), %esi
leaq 0xc8(%rsp), %r14
movq %r14, %rdi
callq 0x9f56b
leaq 0x8039e(%rip), %rsi     # 0xd6cba
leaq 0x70(%rsp), %rdi
movq %r14, %rdx
callq 0x4933b
leaq 0x802a7(%rip), %rdx     # 0xd6bd7
leaq 0x50(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x3336c
leaq 0x108(%rsp), %rdi
movl 0x24(%rsp), %esi
callq 0x9f56b
movq %r15, %r14
leaq 0xe8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x108(%rsp), %rdx
callq 0x4e6ed
leaq 0x7fd10(%rip), %rdx     # 0xd6684
leaq 0x28(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x3336c
leaq 0x128(%rsp), %rdi
movl 0xc(%rsp), %esi
callq 0x9f56b
leaq 0x90(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x128(%rsp), %rdx
callq 0x4e6ed
leaq 0x8033a(%rip), %rdx     # 0xd6cf2
leaq 0x148(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x3336c
leaq 0x148(%rsp), %rdi
callq 0x9f54b
leaq 0x148(%rsp), %rdi
callq 0x295a0
leaq 0x90(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0x28(%rsp), %rdi
callq 0x295a0
leaq 0xe8(%rsp), %rdi
callq 0x295a0
leaq 0x108(%rsp), %rdi
callq 0x295a0
leaq 0x50(%rsp), %rdi
callq 0x295a0
leaq 0x70(%rsp), %rdi
callq 0x295a0
leaq 0xc8(%rsp), %rdi
callq 0x295a0
leaq 0x78(%rbx), %rdi
movq %r14, 0x18(%rsp)
movq %r14, %rsi
callq 0x3374c
movq (%rax), %rax
movq %rax, 0xc0(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x56a8d
movq 0x10f51f(%rip), %rdi    # 0x165f98
leaq 0x80281(%rip), %rsi     # 0xd6d01
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
leaq 0xa0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movl 0xc(%rsp), %eax
movq %rax, 0xb8(%rsp)
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
leaq 0x18(%rdi), %r9
pushq $-0x1
popq %rcx
movl %ecx, %esi
movl 0xc(%rsp), %edx
pushq $0x1
popq %r8
pushq $-0x1
pushq $0x1
callq 0x60fd6
popq %rcx
popq %rdx
movl %eax, 0x14(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x4, 0x1614(%rax)
jb 0x56b49
movq 0x10f4aa(%rip), %rdi    # 0x165f98
leaq 0x80248(%rip), %rsi     # 0xd6d3d
callq 0x289f0
movq %rax, %rdi
movl 0x14(%rsp), %esi
callq 0x29290
movq %rax, %rdi
leaq 0x80272(%rip), %rsi     # 0xd6d82
callq 0x289f0
movq %rax, %rdi
xorl %esi, %esi
callq 0x29290
movq %rax, %rdi
callq 0x284a0
movq 0x10f46a(%rip), %rdi    # 0x165f98
leaq 0x80268(%rip), %rsi     # 0xd6d9d
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x15, 0x28(%rsp)
leaq 0x28(%rsp), %rsi
callq 0x5da18
movq %rdx, 0xb0(%rsp)
movq %rax, %r14
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x56b98
movq 0x10f414(%rip), %rdi    # 0x165f98
leaq 0x80261(%rip), %rsi     # 0xd6dec
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
cmpq 0xb0(%rsp), %r14
je 0x5729a
movl $0x0, 0x10(%rsp)
movq %r14, 0x48(%rsp)
cmpq 0xb0(%rsp), %r14
je 0x572a2
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x59f72
movq 0x18(%rax), %r15
xorl %r12d, %r12d
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x59f72
addq $0x8, %rax
cmpq %rax, %r15
je 0x56cd5
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x56c54
movl 0x40(%rbx), %esi
movq 0x10f38f(%rip), %rdi    # 0x165f98
callq 0x286e0
movq %rax, %rdi
leaq 0x80221(%rip), %rsi     # 0xd6e39
callq 0x289f0
leaq 0x20(%r15), %rsi
movq %rax, %rdi
callq 0x28910
movq %rax, %rdi
leaq 0x88242(%rip), %rsi     # 0xdee75
callq 0x289f0
movq 0x48(%rsp), %rcx
movq 0x38(%rcx), %rsi
addq %r12, %rsi
movq %rax, %rdi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
movq 0x48(%rsp), %rax
movq 0x38(%rax), %rdi
addq %r12, %rdi
xorl %esi, %esi
callq 0x33525
movsd %xmm0, 0x40(%r15)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x56cc1
movq 0x10f314(%rip), %rdi    # 0x165f98
leaq 0x801c3(%rip), %rsi     # 0xd6e4e
callq 0x289f0
leaq 0x20(%r15), %rsi
movq %rax, %rdi
callq 0x28910
movq %rax, %rdi
leaq 0x78ed6(%rip), %rsi     # 0xcfb7c
callq 0x289f0
movsd 0x40(%r15), %xmm0
movq %rax, %rdi
callq 0x290f0
movq %rax, %rdi
callq 0x284a0
movq %r15, %rdi
callq 0x28700
movq %rax, %r15
addq $0x20, %r12
jmp 0x56bd5
movq 0xa8(%rbx), %r15
movl 0xb0(%rbx), %esi
incl %esi
leaq 0x50(%rsp), %r12
movq %r12, %rdi
callq 0x9f56b
addq $0x1520, %r15           # imm = 0x1520
leaq 0xe8(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x5a115
leaq 0x28(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
leaq 0x86c97(%rip), %rdx     # 0xdd9b7
callq 0x3336c
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x28c40
movq %r15, %rdi
callq 0x295a0
movq %r13, %rdi
callq 0x295a0
leaq 0x50(%rsp), %rdi
callq 0x295a0
leaq 0x228(%rsp), %rdi
movq %r12, %rsi
callq 0x28dd0
leaq 0x228(%rsp), %r15
movq %r15, %rdi
callq 0x9ec28
movl %eax, %ebp
movq %r15, %rdi
callq 0x295a0
testl %ebp, %ebp
jne 0x56def
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x56dbb
movq 0x10f201(%rip), %rdi    # 0x165f98
leaq 0x800bf(%rip), %rsi     # 0xd6e5d
callq 0x289f0
movq %rax, %rdi
leaq 0x90(%rsp), %rsi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
leaq 0x208(%rsp), %rdi
leaq 0x7f0cd(%rip), %rsi     # 0xd5e97
leaq 0x90(%rsp), %rdx
callq 0x3338b
leaq 0x208(%rsp), %r15
movq %r15, %rdi
callq 0x9f543
movq %r15, %rdi
callq 0x295a0
pushq $0x1
popq %r15
movq 0xa8(%rbx), %rsi
cmpl 0x1658(%rsi), %r15d
ja 0x57234
leaq 0x108(%rsp), %r12
movq %r12, %rdi
movl 0x24(%rsp), %edx
xorl %ecx, %ecx
callq 0x6bd9a
leaq 0xc8(%rsp), %rdi
movq %r12, %rsi
leaq 0x7ef38(%rip), %rdx     # 0xd5d67
callq 0x3336c
movl 0x40(%rbx), %esi
leaq 0x128(%rsp), %r12
movq %r12, %rdi
callq 0x9f56b
leaq 0x70(%rsp), %r14
movq %r14, %rdi
leaq 0xc8(%rsp), %rsi
movq %r12, %rdx
callq 0x4e6ed
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
leaq 0x7eef9(%rip), %rdx     # 0xd5d67
callq 0x3336c
leaq 0x1e8(%rsp), %r12
movq %r12, %rdi
movl %r15d, %esi
callq 0x9f56b
leaq 0xe8(%rsp), %r13
movq %r13, %rdi
leaq 0x50(%rsp), %rsi
movq %r12, %rdx
callq 0x4e6ed
leaq 0x28(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
leaq 0x80373(%rip), %rdx     # 0xd7223
callq 0x3336c
movq %r13, %rdi
callq 0x295a0
leaq 0x1e8(%rsp), %rdi
callq 0x295a0
leaq 0x50(%rsp), %rdi
callq 0x295a0
leaq 0x70(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0xc8(%rsp), %rbp
movq %rbp, %rdi
callq 0x295a0
leaq 0x108(%rsp), %rdi
callq 0x295a0
movq %r13, %rdi
leaq 0x90(%rsp), %rsi
movq %r12, %rdx
callq 0x34fc8
movl 0x40(%rbx), %esi
movq %rbp, %rdi
callq 0x9f56b
leaq 0x70(%rsp), %rdi
movq %rbp, %rsi
leaq 0x7ee32(%rip), %rdx     # 0xd5d67
callq 0x3336c
leaq 0x108(%rsp), %r12
movq %r12, %rdi
movl %r15d, %esi
callq 0x9f56b
leaq 0x50(%rsp), %rdi
leaq 0x70(%rsp), %r14
movq %r14, %rsi
movq %r12, %rdx
callq 0x4e6ed
movq %r12, %rdi
callq 0x295a0
movq %r14, %rdi
callq 0x295a0
leaq 0xc8(%rsp), %rdi
callq 0x295a0
movq 0xa8(%rbx), %rdi
cmpl $0x3, 0x1614(%rdi)
jb 0x56fc1
movq 0x10f002(%rip), %rdi    # 0x165f98
leaq 0x7fed7(%rip), %rsi     # 0xd6e74
callq 0x289f0
movq %rax, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x28910
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movq 0x18(%rsp), %rsi
callq 0x3374c
movq (%rax), %rax
cmpb $0x1, 0xb8(%rax)
jne 0x57080
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x59f72
leaq 0x2b8(%rsp), %rdi
movq %rax, %rsi
callq 0x4e96a
leaq 0x1c8(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x28dd0
leaq 0x1a8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x28dd0
leaq 0x298(%rsp), %r14
movq %r14, %rdi
leaq 0x50(%rsp), %rsi
callq 0x28dd0
movq 0xc0(%rsp), %rdi
leaq 0x2b8(%rsp), %rbp
movq %rbp, %rsi
leaq 0x1c8(%rsp), %r12
movq %r12, %rdx
leaq 0x1a8(%rsp), %r13
movq %r13, %rcx
movq %r14, %r8
xorl %r9d, %r9d
pushq $0x0
pushq $0x0
pushq $0x1
pushq $0x0
callq 0x4cf22
addq $0x20, %rsp
jmp 0x57119
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x59f72
leaq 0x268(%rsp), %rdi
movq %rax, %rsi
callq 0x4e96a
leaq 0x188(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x28dd0
leaq 0x168(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x28dd0
leaq 0x248(%rsp), %r14
movq %r14, %rdi
leaq 0x50(%rsp), %rsi
callq 0x28dd0
movq 0xc0(%rsp), %rdi
leaq 0x268(%rsp), %rbp
movq %rbp, %rsi
leaq 0x188(%rsp), %r12
movq %r12, %rdx
leaq 0x168(%rsp), %r13
movq %r13, %rcx
movq %r14, %r8
xorl %r9d, %r9d
pushq $0x0
pushq $0x0
pushq $0x0
pushq $0x0
callq 0x4cf22
addq $0x20, %rsp
movq %r14, %rdi
callq 0x295a0
movq %r13, %rdi
callq 0x295a0
movq %r12, %rdi
callq 0x295a0
movq %rbp, %rdi
callq 0x495ac
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x5720b
movq 0x10ee44(%rip), %rdi    # 0x165f98
leaq 0x7fd30(%rip), %rsi     # 0xd6e8b
callq 0x289f0
movq %rax, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x28910
movq %rax, %rdi
leaq 0x7fd29(%rip), %rsi     # 0xd6ea3
callq 0x289f0
movq %rax, %r12
movl 0x40(%rbx), %esi
leaq 0x70(%rsp), %r14
movq %r14, %rdi
callq 0x9f56b
movq %r12, %rdi
movq %r14, %rsi
callq 0x28910
movq %rax, %rdi
leaq 0x7fd02(%rip), %rsi     # 0xd6ea9
callq 0x289f0
movq %rax, %r12
leaq 0xc8(%rsp), %r13
movq %r13, %rdi
movl %r15d, %esi
callq 0x9f56b
movq %r12, %rdi
movq %r13, %rsi
callq 0x28910
movq %rax, %rdi
leaq 0xa9ba5(%rip), %rsi     # 0x100d7c
callq 0x289f0
movq %rax, %rdi
movq 0xb8(%rsp), %rsi
callq 0x286e0
movq %rax, %rdi
callq 0x284a0
leaq 0xc8(%rsp), %rdi
callq 0x295a0
leaq 0x70(%rsp), %rdi
callq 0x295a0
leaq 0x50(%rsp), %rdi
callq 0x295a0
leaq 0xe8(%rsp), %rdi
callq 0x295a0
leaq 0x28(%rsp), %rdi
callq 0x295a0
incl %r15d
jmp 0x56df3
cmpl $0x2, 0x1614(%rsi)
jbe 0x5726a
movl 0x40(%rbx), %esi
movq 0x10ed51(%rip), %rdi    # 0x165f98
callq 0x286e0
movq %rax, %rdi
leaq 0x7fc57(%rip), %rsi     # 0xd6ead
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rsi
movq (%rsi), %rdi
subq $0x8, %rsp
movl 0x14(%rsp), %esi
xorl %edx, %edx
pushq $0x11
popq %rcx
xorl %r8d, %r8d
movq %rdi, %r9
pushq $-0x1
callq 0x600c8
popq %rax
popq %rcx
incl 0x10(%rsp)
movq 0x48(%rsp), %r14
movq (%r14), %r14
jmp 0x56bae
movl $0x0, 0x10(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x572cd
movq 0x10ecdf(%rip), %rdi    # 0x165f98
leaq 0x7fc0d(%rip), %rsi     # 0xd6ecd
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rax
movl 0x10(%rsp), %ecx
cmpl 0x14(%rsp), %ecx
jge 0x57399
cmpl $0x3, 0x1614(%rax)
jb 0x5730d
movq 0x10eca6(%rip), %rdi    # 0x165f98
leaq 0x7fc3d(%rip), %rsi     # 0xd6f36
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x16, 0x28(%rsp)
leaq 0x28(%rsp), %rsi
callq 0x5d11e
movq 0xa8(%rbx), %rcx
movq (%rcx), %rdi
testq %rax, %rax
jne 0x574fa
addq $0x18, %rdi
movl $0x19, 0x28(%rsp)
leaq 0x28(%rsp), %rsi
callq 0x5d11e
movq 0xa8(%rbx), %rcx
testq %rax, %rax
jne 0x57400
movq (%rcx), %rdi
addq $0x18, %rdi
movl $0x12, 0x28(%rsp)
leaq 0x28(%rsp), %rsi
callq 0x5d11e
movq 0xa8(%rbx), %rcx
testq %rax, %rax
jne 0x574b7
movq (%rcx), %rdi
addq $0x18, %rdi
callq 0x5d19a
jmp 0x56aad
movq (%rax), %rdi
addq $0x18, %rdi
callq 0x5d19a
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x56aad
movq 0x10ebd8(%rip), %rdi    # 0x165f98
leaq 0x7fb39(%rip), %rsi     # 0xd6f00
callq 0x289f0
movq %rax, %rdi
movl 0x10(%rsp), %esi
callq 0x29290
movq %rax, %rdi
leaq 0x8534e(%rip), %rsi     # 0xdc730
callq 0x289f0
movq %rax, %rdi
movl 0x14(%rsp), %esi
callq 0x29290
movq %rax, %rdi
callq 0x284a0
jmp 0x56aad
cmpl $0x3, 0x1614(%rcx)
movq 0x18(%rsp), %r14
jb 0x5744f
movq 0x10eb83(%rip), %rdi    # 0x165f98
leaq 0x86c66(%rip), %rsi     # 0xde082
callq 0x289f0
movq %rax, %rdi
movq 0xb8(%rsp), %rsi
callq 0x286e0
leaq 0x7fb68(%rip), %rsi     # 0xd6fa0
movq %rax, %rdi
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rcx
incl 0x13ec(%rcx)
andl $0x0, 0xb0(%rbx)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x59f72
movq %rax, %rdi
callq 0x5da3c
movq %rbx, %rdi
callq 0x50cca
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x574a9
movq 0x10eb0a(%rip), %rdi    # 0x165f98
leaq 0x7fb2e(%rip), %rsi     # 0xd6fc3
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0x5d19a
jmp 0x574db
cmpl $0x3, 0x1614(%rcx)
jb 0x574db
movq 0x10ead1(%rip), %rdi    # 0x165f98
leaq 0x7fb41(%rip), %rsi     # 0xd700f
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
leaq 0x90(%rsp), %rdi
callq 0x295a0
addq $0x2e8, %rsp            # imm = 0x2E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x3, 0x1614(%rcx)
jb 0x57528
movq 0x10ea8e(%rip), %rdi    # 0x165f98
leaq 0x7fa58(%rip), %rsi     # 0xd6f69
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
callq 0x5fb5c
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x57558
movq 0x10ea54(%rip), %rdi    # 0x165f98
leaq 0x7fa3a(%rip), %rsi     # 0xd6f85
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
xorl %edi, %edi
callq 0x28c20
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
callq 0x295a0
jmp 0x57574
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x295a0
jmp 0x57586
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x295a0
jmp 0x57598
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x295a0
jmp 0x575a7
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x295a0
leaq 0x108(%rsp), %rdi
callq 0x295a0
leaq 0x50(%rsp), %rdi
callq 0x295a0
leaq 0x70(%rsp), %rdi
callq 0x295a0
leaq 0xc8(%rsp), %rdi
jmp 0x57807
movq %rax, %rbx
jmp 0x575b4
movq %rax, %rbx
jmp 0x575c1
movq %rax, %rbx
jmp 0x575cb
movq %rax, %rbx
jmp 0x575d5
jmp 0x577fc
jmp 0x577fc
jmp 0x577fc
jmp 0x577fc
jmp 0x577fc
movq %rax, %rbx
leaq 0x208(%rsp), %rdi
jmp 0x577f5
jmp 0x577fc
movq %rax, %rbx
leaq 0x228(%rsp), %rdi
jmp 0x577f5
jmp 0x577fc
movq %rax, %rbx
jmp 0x5764e
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x295a0
leaq 0x50(%rsp), %rdi
jmp 0x577f5
jmp 0x577fc
jmp 0x577fc
movq %rax, %rbx
jmp 0x576aa
movq %rax, %rbx
leaq 0x248(%rsp), %rdi
callq 0x295a0
jmp 0x5769d
jmp 0x577d6
movq %rax, %rbx
jmp 0x576d6
movq %rax, %rbx
leaq 0x298(%rsp), %rdi
callq 0x295a0
jmp 0x576c9
movq %rax, %rbx
jmp 0x576b7
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
callq 0x295a0
leaq 0x188(%rsp), %rdi
callq 0x295a0
leaq 0x268(%rsp), %rdi
jmp 0x576eb
movq %rax, %rbx
jmp 0x576e3
movq %rax, %rbx
leaq 0x1a8(%rsp), %rdi
callq 0x295a0
leaq 0x1c8(%rsp), %rdi
callq 0x295a0
leaq 0x2b8(%rsp), %rdi
callq 0x495ac
jmp 0x577d9
jmp 0x576f7
movq %rax, %rbx
jmp 0x577ca
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x295a0
jmp 0x57773
movq %rax, %rbx
jmp 0x577f0
jmp 0x577fc
movq %rax, %rbx
jmp 0x577e3
movq %rax, %rbx
jmp 0x577ae
movq %rax, %rbx
jmp 0x577a1
movq %rax, %rbx
jmp 0x57761
movq %rax, %rbx
jmp 0x57794
movq %rax, %rbx
jmp 0x57757
movq %rax, %rbx
jmp 0x5778a
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x295a0
leaq 0x70(%rsp), %rdi
callq 0x295a0
leaq 0xc8(%rsp), %rdi
jmp 0x577de
movq %rax, %rbx
jmp 0x57780
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x295a0
leaq 0x50(%rsp), %rdi
callq 0x295a0
leaq 0x70(%rsp), %rdi
callq 0x295a0
leaq 0x128(%rsp), %rdi
callq 0x295a0
leaq 0xc8(%rsp), %rdi
callq 0x295a0
leaq 0x108(%rsp), %rdi
jmp 0x577f5
jmp 0x577fc
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x295a0
leaq 0x70(%rsp), %rdi
callq 0x295a0
jmp 0x577d9
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x295a0
leaq 0xe8(%rsp), %rdi
callq 0x295a0
leaq 0x28(%rsp), %rdi
callq 0x295a0
jmp 0x577ff
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x295a0
movq %rbx, %rdi
callq 0x292f0