// File: /workspace/github_cpp_makefile_star2_O3/richardposner[P]BioNetFit2/src/code/Particle.cpp
// Function: Particle::checkMessagesPSO(unsigned int)
void Particle::checkMessagesPSO(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 !!!");
	if (swarm_->options.verbosity >= 3) {
		cout << "RAQUEL: I am subparticle " << subParID << " my model is " << mid << " generation " << currentGeneration_ << endl;
	}
	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;
			if (swarm_->options.verbosity >= 3) {
				cout << "RAQUEL I am subPar " << subParID << " model " << mid << " waiting for message." << endl;
			}
			int numMessages = swarm_->swarmComm->recvMessage(-1, subParID, -1, true, swarm_->swarmComm->univMessageReceiver, true);
			if (swarm_->options.verbosity >= 3) {
				cout << "RAQUEL inside LOOP ITERATION in checkMessagesGenetic" << 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) {
				if (swarm_->options.verbosity >= 3) {
					cout << subParID << " found final params" << 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) {
						//cout << id_ << " updating parameter " << p->first << " to " << sm->second.message[messageIndex] << endl;
						p->second = stod(sm->second.message[messageIndex]);
						//cout << "updated param " << p->first << ": " << p->second << endl;
						++messageIndex;
					}

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

					if (!checkIfFileExists(path)) {
						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;
						}
					}

					// 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;
				}
				exit(0);
				//return;
			}

			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;
				}
				swarm_->swarmComm->univMessageReceiver.clear();
				
				return;
			}

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


}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2f8, %rsp            # imm = 0x2F8
movl %esi, %r12d
movq %rdi, %rbx
movl 0x40(%rdi), %esi
leal -0x1(%rsi), %eax
movq 0xa8(%rdi), %rcx
movq 0x15c8(%rcx), %rdx
subq 0x15c0(%rcx), %rdx
shrq $0x3, %rdx
imull %edx, %eax
addl %r12d, %eax
incl %eax
movl %eax, 0xac(%rsp)
cmpl %r12d, %edx
jbe 0x60ed5
movl %r12d, %eax
movq 0x78(%rbx), %rdi
movq 0x80(%rbx), %rdx
subq %rdi, %rdx
sarq $0x3, %rdx
cmpq %rax, %rdx
jbe 0x62925
cmpq $0x0, (%rdi,%rax,8)
jne 0x61306
leaq 0x88(%rsp), %r14
movq %r14, %rdi
callq 0xbfa49
leaq 0x97eae(%rip), %rcx     # 0xf8d9a
movl $0x37, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x60f25
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x60f2c
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x40(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x97d68(%rip), %rsi     # 0xf8cb7
callq 0x233b0
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x60f7a
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x60f81
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb0(%rsp), %rdi
movl %r12d, %esi
callq 0xbfa49
movq (%rsp), %rcx
movq 0x8(%rsp), %r8
movq 0xb8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r15, %rcx
je 0x60fcd
movq 0x10(%rsp), %rdi
movq 0xb0(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x60ff9
leaq 0xc0(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x60ff4
movq 0xc0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x61003
movq %rsp, %rdi
callq 0x222b0
jmp 0x61014
leaq 0xb0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x30(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x61038
movq %rsi, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x6103e
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rcx, (%rax)
movq %r12, %rbp
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x976ff(%rip), %rsi     # 0xf8764
leaq 0x20(%rsp), %rdi
callq 0x233b0
leaq 0x70(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61097
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x6109f
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x100(%rsp), %rdi
movl 0xac(%rsp), %esi
callq 0xbfa49
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %r8
movq 0x108(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r12, %rcx
je 0x610f0
movq 0x70(%rsp), %rdi
movq 0x100(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x6111c
leaq 0x110(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x61117
movq 0x110(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x61128
leaq 0x60(%rsp), %rdi
callq 0x222b0
jmp 0x61139
leaq 0x100(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0xe0(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x61166
movq %rsi, 0xd0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xe0(%rsp)
jmp 0x6116c
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xd8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x97c3f(%rip), %rsi     # 0xf8dd2
leaq 0xd0(%rsp), %rdi
callq 0x233b0
leaq 0x288(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x611d0
movq %rdx, 0x278(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x288(%rsp)
jmp 0x611d8
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq 0x278(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0xbfa27
movq 0x278(%rsp), %rdi
cmpq %r13, %rdi
je 0x61219
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6123a
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6125b
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x61272
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
movq %rbp, %r12
je 0x61290
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x612b1
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x612c7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x612de
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x612ff
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xa8(%rbx), %rcx
cmpl $0x2, 0x1614(%rcx)
movl 0xac(%rsp), %r15d
movq %r15, 0x120(%rsp)
jbe 0x613bf
movq 0x114c7e(%rip), %r14    # 0x175fa8
leaq 0x97e0c(%rip), %rsi     # 0xf913d
movl $0x19, %edx
movq %r14, %rdi
callq 0x22ab0
movq %r14, %rdi
movq %r15, %rsi
callq 0x22650
movq %rax, %r14
leaq 0x97e04(%rip), %rsi     # 0xf9157
movl $0xd, %edx
movq %rax, %rdi
callq 0x22ab0
movl %r12d, %r15d
movq %r14, %rdi
movq %r15, %rsi
callq 0x22650
movq %rax, %r14
leaq 0x9e13b(%rip), %rsi     # 0xff4b3
movl $0xc, %edx
movq %rax, %rdi
callq 0x22ab0
movl 0xb0(%rbx), %esi
movq %r14, %rdi
callq 0x22650
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x613c2
movl %r12d, %r15d
movq 0x78(%rbx), %rax
movq 0x80(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x62919
movq %r15, 0xf0(%rsp)
movq (%rax,%r15,8), %rax
movq %rax, 0x150(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x61443
movq 0x114ba0(%rip), %r14    # 0x175fa8
leaq 0x979d2(%rip), %rsi     # 0xf8de1
movl $0x3b, %edx
movq %r14, %rdi
callq 0x22ab0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x70(%rsp), %r15
movq %rbx, 0x130(%rsp)
movq %r12, 0x140(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6151b
movl $0x13, %edx
movq 0x114b19(%rip), %rdi    # 0x175fa8
leaq 0x97ccf(%rip), %rsi     # 0xf9165
callq 0x22ab0
movq 0x114b06(%rip), %rdi    # 0x175fa8
movq 0x120(%rsp), %rsi
callq 0x22650
movq %rax, %r14
movl $0x7, %edx
movq %rax, %rdi
leaq 0x97cb8(%rip), %rsi     # 0xf9179
callq 0x22ab0
movq %r14, %rdi
movq 0xf0(%rsp), %rsi
callq 0x22650
movq %rax, %r14
movl $0x15, %edx
movq %rax, %rdi
leaq 0x97c99(%rip), %rsi     # 0xf9181
callq 0x22ab0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
leaq 0x18(%rdi), %r9
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl 0xac(%rsp), %edx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x1, %r8d
pushq $-0x1
pushq $0x1
callq 0x6d52e
addq $0x10, %rsp
movl %eax, 0xfc(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x615fc
movl $0x34, %edx
movq 0x114a3b(%rip), %rdi    # 0x175fa8
leaq 0x97c23(%rip), %rsi     # 0xf9197
callq 0x22ab0
movq 0x114a28(%rip), %rcx    # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x114a0a(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x4e, %edx
movq 0x1149f1(%rip), %rdi    # 0x175fa8
leaq 0x978bf(%rip), %rsi     # 0xf8e7d
callq 0x22ab0
movq 0x1149de(%rip), %rcx    # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x1149c0(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x15, 0x60(%rsp)
leaq 0x60(%rsp), %rsi
callq 0x6920c
movq %rax, 0x128(%rsp)
movq %rdx, 0x148(%rsp)
movq 0xa8(%rbx), %rsi
cmpl $0x3, 0x1614(%rsi)
jb 0x61686
movl $0x4c, %edx
movq 0x114967(%rip), %rdi    # 0x175fa8
leaq 0x97884(%rip), %rsi     # 0xf8ecc
callq 0x22ab0
movq 0x114954(%rip), %rcx    # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x114936(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rsi
movq 0x148(%rsp), %rax
cmpq %rax, 0x128(%rsp)
je 0x62482
cmpl $0x3, 0x1614(%rsi)
jb 0x616f8
movq 0x1148fc(%rip), %rdi    # 0x175fa8
movq 0x120(%rsp), %rsi
callq 0x22650
movq %rax, %r13
movl $0x13, %edx
movq %rax, %rdi
leaq 0x97b01(%rip), %rsi     # 0xf91cc
callq 0x22ab0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r13, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x0, 0x84(%rsp)
movq (%rbx), %rax
movq 0x8(%rbx), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
movq 0xf0(%rsp), %rsi
cmpq %rsi, %rdx
jbe 0x62884
leaq (%rsi,%rsi,2), %rcx
shlq $0x4, %rcx
movq %rcx, 0x138(%rsp)
movq 0x18(%rax,%rcx), %rbp
xorl %r12d, %r12d
movq 0x138(%rsp), %rcx
addq %rcx, %rax
addq $0x8, %rax
cmpq %rax, %rbp
je 0x617f9
movq 0x128(%rsp), %rax
movq 0x38(%rax), %rax
movq (%rax,%r12), %r14
callq 0x22070
movq %rax, %r13
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r14, %rdi
leaq 0x60(%rsp), %rsi
callq 0x22760
cmpq %r14, 0x60(%rsp)
je 0x62856
movl (%r13), %eax
testl %eax, %eax
je 0x617aa
cmpl $0x22, %eax
jne 0x617ae
jmp 0x62878
movl %ebx, (%r13)
movsd %xmm0, 0x40(%rbp)
movq %rbp, %rdi
callq 0x22670
movq %rax, %rbp
movq 0x130(%rsp), %rbx
movq (%rbx), %rax
movq 0x8(%rbx), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
addq $0x20, %r12
cmpq 0xf0(%rsp), %rdx
ja 0x61748
jmp 0x62862
movq 0xa8(%rbx), %r14
movl 0xb0(%rbx), %esi
incl %esi
movq %rsp, %r12
movq %r12, %rdi
callq 0xbfa49
movq 0x1520(%r14), %rcx
movq 0x1528(%r14), %r8
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x30(%rsp), %rsi
movq %rsi, 0x20(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61855
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x6185b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x140(%rsp), %r12
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x20(%rsp), %rdi
leaq 0x9dfd0(%rip), %rsi     # 0xff857
callq 0x233b0
movq %r15, 0x60(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x618af
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x618b6
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xd0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x22bb0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x618f7
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x61913
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x6192e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x248(%rsp), %rax
movq %rax, 0x238(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x238(%rsp), %r14
movq %r14, %rdi
callq 0x3213c
movq %r14, %rdi
callq 0xbe9a8
movl %eax, %ebp
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x61990
movq 0x248(%rsp), %rsi
incq %rsi
callq 0x229c0
testl %ebp, %ebp
jne 0x619e2
leaq 0x258(%rsp), %rdi
leaq 0x965a4(%rip), %rsi     # 0xf7f47
leaq 0xd0(%rsp), %rdx
callq 0x31944
leaq 0x258(%rsp), %rdi
callq 0xbfa1f
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x619e2
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xa8(%rbx), %rsi
cmpl $0x0, 0x1658(%rsi)
je 0x62458
movl $0x1, %ebp
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movl %r12d, %edx
xorl %ecx, %ecx
callq 0x79f68
movq %r14, %rdi
leaq 0x963fd(%rip), %rsi     # 0xf7e17
callq 0x233b0
leaq 0x98(%rsp), %rsi
movq %rsi, 0x88(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61a53
movq %rdx, 0x88(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x98(%rsp)
jmp 0x61a59
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x90(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x40(%rbx), %esi
leaq 0x100(%rsp), %rdi
callq 0xbfa49
movq 0x88(%rsp), %rcx
movl $0xf, %edi
leaq 0x98(%rsp), %rax
cmpq %rax, %rcx
je 0x61aa6
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %r8
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x61ae6
movl $0xf, %edi
leaq 0x110(%rsp), %r9
cmpq %r9, %rsi
je 0x61ae1
movq 0x110(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x61af5
leaq 0x88(%rsp), %rdi
callq 0x222b0
jmp 0x61b06
leaq 0x100(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x50(%rsp), %rsi
movq %rsi, 0x40(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x61b2b
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x61b31
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x40(%rsp), %rdi
leaq 0x962bd(%rip), %rsi     # 0xf7e17
callq 0x233b0
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61b85
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x61b8b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x158(%rsp), %rdi
movl %ebp, %esi
callq 0xbfa49
movq (%rsp), %rcx
movl $0xf, %edi
leaq 0x10(%rsp), %rax
cmpq %rax, %rcx
je 0x61bca
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %r8
movq 0x158(%rsp), %rsi
movq 0x160(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x61c07
movl $0xf, %edi
leaq 0x168(%rsp), %r9
cmpq %r9, %rsi
je 0x61c02
movq 0x168(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x61c11
movq %rsp, %rdi
callq 0x222b0
jmp 0x61c22
leaq 0x158(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x30(%rsp), %rsi
movq %rsi, 0x20(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x61c47
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x61c4d
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x20(%rsp), %rdi
leaq 0x9768d(%rip), %rsi     # 0xf9303
callq 0x233b0
movq %r15, 0x60(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61c9e
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x61ca5
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x61cd9
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x61cfe
movq 0x168(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x61d19
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x61d35
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x61d5a
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x61d7f
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x61da4
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x20(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x335a4
movl 0x40(%rbx), %esi
leaq 0x88(%rsp), %r14
movq %r14, %rdi
callq 0xbfa49
movq %r14, %rdi
leaq 0x9603f(%rip), %rsi     # 0xf7e17
callq 0x233b0
leaq 0x50(%rsp), %rsi
movq %rsi, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61e05
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x61e0b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb0(%rsp), %rdi
movl %ebp, %esi
callq 0xbfa49
movq 0x40(%rsp), %rcx
movl $0xf, %edi
leaq 0x50(%rsp), %rax
cmpq %rax, %rcx
je 0x61e4b
movq 0x50(%rsp), %rdi
movq 0x48(%rsp), %r8
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x61e88
movl $0xf, %edi
leaq 0xc0(%rsp), %r9
cmpq %r9, %rsi
je 0x61e83
movq 0xc0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x61e94
leaq 0x40(%rsp), %rdi
callq 0x222b0
jmp 0x61ea5
leaq 0xb0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x61ec8
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x61ece
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x61f10
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x61f2c
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x61f51
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xa8(%rbx), %rcx
cmpl $0x3, 0x1614(%rcx)
jb 0x61fc0
movl $0x16, %edx
movq 0x11403b(%rip), %rdi    # 0x175fa8
leaq 0x96fe0(%rip), %rsi     # 0xf8f54
callq 0x22ab0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x11401e(%rip), %rdi    # 0x175fa8
callq 0x22ab0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r13, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rcx
movq 0x15c0(%rcx), %rax
movq 0x15c8(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movq 0xf0(%rsp), %rcx
cmpq %rcx, %rdx
jbe 0x62845
movq (%rax,%rcx,8), %rax
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rdi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdi, %rdx
cmpb $0x1, 0xb8(%rax)
jne 0x62157
cmpq %rcx, %rdx
jbe 0x62845
addq 0x138(%rsp), %rsi
leaq 0x2c8(%rsp), %rdi
callq 0x51772
leaq 0x228(%rsp), %rax
movq %rax, 0x218(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x218(%rsp), %rdi
callq 0x3213c
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x198(%rsp), %rdi
callq 0x3213c
leaq 0x208(%rsp), %rax
movq %rax, 0x1f8(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1f8(%rsp), %r14
movq %r14, %rdi
callq 0x3213c
movq 0x150(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
leaq 0x218(%rsp), %rdx
leaq 0x198(%rsp), %rcx
movq %r14, %r8
xorl %r9d, %r9d
xorl %eax, %eax
pushq %rax
pushq %rax
pushq $0x1
pushq %rax
callq 0x4ebec
addq $0x20, %rsp
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x62112
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x62137
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rcx
movq %rcx, %rax
leaq 0x2c8(%rsp), %r13
jmp 0x62295
cmpq %rcx, %rdx
jbe 0x62845
addq 0x138(%rsp), %rsi
leaq 0x298(%rsp), %rdi
callq 0x51772
leaq 0x1e8(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1d8(%rsp), %rdi
callq 0x3213c
leaq 0x188(%rsp), %rax
movq %rax, 0x178(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x178(%rsp), %rdi
callq 0x3213c
leaq 0x1c8(%rsp), %rax
movq %rax, 0x1b8(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1b8(%rsp), %r14
movq %r14, %rdi
callq 0x3213c
movq 0x150(%rsp), %rdi
leaq 0x298(%rsp), %rsi
leaq 0x1d8(%rsp), %rdx
leaq 0x178(%rsp), %rcx
movq %r14, %r8
xorl %r9d, %r9d
xorl %eax, %eax
pushq %rax
pushq %rax
pushq %rax
pushq %rax
callq 0x4ebec
addq $0x20, %rsp
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x62255
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x6227a
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rcx
movq %rcx, %rax
leaq 0x298(%rsp), %r13
cmpq %rcx, %rdi
je 0x622a5
movq (%rax), %rsi
incq %rsi
callq 0x229c0
movq %r13, %rdi
callq 0x4a472
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x623f5
movl $0x17, %edx
movq 0x113cdb(%rip), %rdi    # 0x175fa8
leaq 0x96c97(%rip), %rsi     # 0xf8f6b
callq 0x22ab0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x113cbe(%rip), %rdi    # 0x175fa8
callq 0x22ab0
movq %rax, %r13
movl $0x5, %edx
movq %rax, %rdi
leaq 0x96c82(%rip), %rsi     # 0xf8f83
callq 0x22ab0
movl 0x40(%rbx), %esi
leaq 0x40(%rsp), %rdi
callq 0xbfa49
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %r13, %rdi
callq 0x22ab0
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x96c52(%rip), %rsi     # 0xf8f89
callq 0x22ab0
leaq 0x88(%rsp), %rdi
movl %ebp, %esi
callq 0xbfa49
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %r13, %rdi
callq 0x22ab0
movq %rax, %r13
movl $0xa, %edx
movq %rax, %rdi
leaq 0xc0509(%rip), %rsi     # 0x12287e
callq 0x22ab0
movq %r13, %rdi
movq 0x120(%rsp), %rsi
callq 0x22650
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r13, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x623d9
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x623f5
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x62410
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6242c
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x62443
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
incl %ebp
movq 0xa8(%rbx), %rsi
cmpl 0x1658(%rsi), %ebp
jbe 0x619fb
incl 0x84(%rsp)
movq 0x128(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x128(%rsp)
cmpq 0x148(%rsp), %rax
jne 0x61703
jmp 0x6248d
movl $0x0, 0x84(%rsp)
cmpl $0x3, 0x1614(%rsi)
jb 0x624e0
movl $0x32, %edx
movq 0x113b06(%rip), %rdi    # 0x175fa8
leaq 0x96b04(%rip), %rsi     # 0xf8fad
callq 0x22ab0
movq 0x113af3(%rip), %rcx    # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x113ad5(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
movl 0x84(%rsp), %ecx
cmpl 0xfc(%rsp), %ecx
jge 0x625e1
cmpl $0x3, 0x1614(%rax)
jb 0x62555
movl $0x32, %edx
movq 0x113a98(%rip), %rdi    # 0x175fa8
leaq 0x96aff(%rip), %rsi     # 0xf9016
callq 0x22ab0
movq 0x113a85(%rip), %rcx    # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x113a67(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x16, 0x60(%rsp)
leaq 0x60(%rsp), %rsi
callq 0x6895a
movq 0xa8(%rbx), %rcx
movq (%rcx), %rdi
testq %rax, %rax
jne 0x62892
addq $0x18, %rdi
movl $0x19, 0x60(%rsp)
leaq 0x60(%rsp), %rsi
callq 0x6895a
movq 0xa8(%rbx), %rcx
testq %rax, %rax
jne 0x62681
movq (%rcx), %rdi
addq $0x18, %rdi
movl $0x12, 0x60(%rsp)
leaq 0x60(%rsp), %rsi
callq 0x6895a
movq 0xa8(%rbx), %rcx
movq (%rcx), %rdi
testq %rax, %rax
jne 0x627ac
addq $0x18, %rdi
callq 0x689b6
jmp 0x6146f
movq (%rax), %rdi
addq $0x18, %rdi
callq 0x689b6
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6146f
movl $0x35, %edx
movq 0x11399b(%rip), %rdi    # 0x175fa8
leaq 0x969cc(%rip), %rsi     # 0xf8fe0
callq 0x22ab0
movq 0x113988(%rip), %rdi    # 0x175fa8
movl 0x84(%rsp), %esi
callq 0x231e0
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
leaq 0x9bf92(%rip), %rsi     # 0xfe5d0
callq 0x22ab0
movq %r14, %rdi
movl 0xfc(%rsp), %esi
callq 0x231e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x6146f
cmpl $0x3, 0x1614(%rcx)
movq 0xf0(%rsp), %r15
jb 0x62703
movq 0x11390f(%rip), %rdi    # 0x175fa8
leaq 0x9d7f9(%rip), %rsi     # 0xffe99
movl $0xc, %edx
callq 0x22ab0
movq 0x1138f7(%rip), %rdi    # 0x175fa8
movq 0x120(%rsp), %rsi
callq 0x22650
movq %rax, %r14
leaq 0x969b8(%rip), %rsi     # 0xf9080
movl $0x22, %edx
movq %rax, %rdi
callq 0x22ab0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rcx
incl 0x13ec(%rcx)
movl $0x0, 0xb0(%rbx)
movq (%rbx), %rdi
movq 0x8(%rbx), %rdx
subq %rdi, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rdx
cmpq %r15, %rdx
jbe 0x62936
leaq (%r15,%r15,2), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x69230
movq %rbx, %rdi
callq 0x54080
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x62802
movq 0x11383d(%rip), %r14    # 0x175fa8
leaq 0x96931(%rip), %rsi     # 0xf90a3
movl $0x4b, %edx
movq %r14, %rdi
callq 0x22ab0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x11380b(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x627fb
cmpl $0x3, 0x1614(%rcx)
jb 0x62805
movq 0x1137ec(%rip), %r14    # 0x175fa8
leaq 0x9692c(%rip), %rsi     # 0xf90ef
movl $0x4d, %edx
movq %r14, %rdi
callq 0x22ab0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x1137ba(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0x689b6
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x62833
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
addq $0x2f8, %rsp            # imm = 0x2F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x90e2d(%rip), %rdi     # 0xf3679
movq %rcx, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x8fede(%rip), %rdi     # 0xf273b
callq 0x225a0
leaq 0x90e10(%rip), %rdi     # 0xf3679
movq 0xf0(%rsp), %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x8febc(%rip), %rdi     # 0xf273b
callq 0x22e40
leaq 0x90dee(%rip), %rdi     # 0xf3679
xorl %eax, %eax
callq 0x22f40
cmpl $0x3, 0x1614(%rcx)
jb 0x628d1
movq 0x113706(%rip), %rdi    # 0x175fa8
leaq 0x96937(%rip), %rsi     # 0xf91e0
movl $0x1a, %edx
callq 0x22ab0
movq 0x130(%rsp), %rbx
movq 0x1136e6(%rip), %rdi    # 0x175fa8
callq 0x22430
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
callq 0x6b2c0
movq 0x130(%rsp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x62912
movq 0x1136b3(%rip), %rdi    # 0x175fa8
leaq 0x968ff(%rip), %rsi     # 0xf91fb
movl $0x19, %edx
callq 0x22ab0
movq 0x11369b(%rip), %rdi    # 0x175fa8
callq 0x22430
xorl %edi, %edi
callq 0x22b90
leaq 0x90d59(%rip), %rdi     # 0xf3679
movq %r15, %rsi
jmp 0x6292f
leaq 0x90d4d(%rip), %rdi     # 0xf3679
movq %rax, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x90d3c(%rip), %rdi     # 0xf3679
movq %r15, %rsi
xorl %eax, %eax
callq 0x22f40
movq %rax, %rbp
movq 0x278(%rsp), %rdi
cmpq %r13, %rdi
je 0x6296c
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6296c
movq %rax, %rbp
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62992
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62992
movq %rax, %rbp
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x629b8
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x629b8
movq %rax, %rbp
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x629d4
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x629d4
movq %rax, %rbp
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x629f4
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x629f4
movq %rax, %rbp
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62a1a
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62a1a
movq %rax, %rbp
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x62a35
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62a35
movq %rax, %rbp
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x62a51
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62a51
movq %rax, %rbp
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62ee6
movq 0x98(%rsp), %rsi
jmp 0x62ede
jmp 0x62e09
jmp 0x62e09
jmp 0x62e09
jmp 0x62e09
jmp 0x62e09
jmp 0x62e09
movq %rax, %rbp
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x62ec1
movq 0x268(%rsp), %rsi
jmp 0x62eb9
jmp 0x62e09
movq %rax, %rbp
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x62b11
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62b11
movq %rax, %rbp
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x62ec1
movq 0x248(%rsp), %rsi
jmp 0x62eb9
jmp 0x62e09
movq %rax, %rbp
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x62ec1
movq 0x10(%rsp), %rsi
jmp 0x62eb9
jmp 0x62e09
jmp 0x62e09
movq %rax, %rbp
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x62ba5
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62ba5
movq %rax, %rbp
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x62bf4
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62bf4
movq %rax, %rbp
jmp 0x62c19
movq %rax, %rbp
jmp 0x62bca
jmp 0x62c62
jmp 0x62e70
movq %rax, %rbp
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x62bca
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x62c43
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62c43
movq %rax, %rbp
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x62c19
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x62c50
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62c50
movq %rax, %rbp
leaq 0x298(%rsp), %rdi
jmp 0x62c58
movq %rax, %rbp
leaq 0x2c8(%rsp), %rdi
callq 0x4a472
jmp 0x62e73
movq %rax, %rbp
jmp 0x62e52
movq %rax, %rbp
jmp 0x62d9c
movq %rax, %rbp
jmp 0x62d52
jmp 0x62e09
movq %rax, %rbp
jmp 0x62d77
movq %rax, %rbp
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x62dca
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62dca
movq %rax, %rbp
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x62cdc
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62cdc
movq %rax, %rbp
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x62d0e
movq 0x168(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62d0e
movq %rax, %rbp
jmp 0x62eaa
movq %rax, %rbp
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x62d36
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62d36
movq %rax, %rbp
jmp 0x62e8e
movq %rax, %rbp
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x62d52
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x62d77
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x62d9c
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x62ec1
movq 0xc0(%rsp), %rsi
jmp 0x62eb9
movq %rax, %rbp
jmp 0x62de6
movq %rax, %rbp
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x62de6
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x62e8e
movq 0x98(%rsp), %rsi
jmp 0x62e86
movq %rax, %rbp
jmp 0x62ec1
jmp 0x62e70
movq %rax, %rbp
cmpl $0x0, (%r13)
jne 0x62ec1
movl %ebx, (%r13)
jmp 0x62ec1
movq %rax, %rbp
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x62e52
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x62e73
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62e73
movq %rax, %rbp
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x62e8e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x62eaa
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x62ec1
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x62ee6
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %rbp, %rdi
callq 0x23240