// File: /workspace/github_cpp_makefile_star2_O1/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 $0x2e8, %rsp            # imm = 0x2E8
movl %esi, %r14d
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 %r14d, %eax
incl %eax
movl %eax, 0xac(%rsp)
movl %r14d, %r12d
cmpl %r14d, %edx
movq %r14, 0x158(%rsp)
jbe 0x612df
movq 0x78(%rbx), %rax
movq 0x80(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x62dec
cmpq $0x0, (%rax,%r12,8)
jne 0x6170b
leaq 0x88(%rsp), %r15
movq %r15, %rdi
callq 0xc03b8
leaq 0x97ac4(%rip), %rcx     # 0xf8dba
movl $0x37, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22a80
leaq 0x50(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6132f
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x61336
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq %r12, %rbp
movq 0x8(%rax), %rdx
leaq 0x40(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x9797b(%rip), %rsi     # 0xf8cd7
callq 0x233b0
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61388
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x61390
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb0(%rsp), %rdi
movl %r14d, %esi
callq 0xc03b8
movq (%rsp), %rcx
movq 0x8(%rsp), %r8
movq 0xb8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r12, %rcx
je 0x613dc
movq 0x10(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x61401
leaq 0xc0(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x613fc
movq 0xc0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x61413
movq 0xb0(%rsp), %rsi
movq %rsp, %rdi
callq 0x222b0
jmp 0x61424
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 0x61448
movq %rsi, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x6144e
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x97312(%rip), %rsi     # 0xf8784
leaq 0x20(%rsp), %rdi
callq 0x233b0
leaq 0x70(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x614a3
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x614ab
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x108(%rsp), %rdi
movl 0xac(%rsp), %esi
callq 0xc03b8
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %r8
movq 0x110(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r13, %rcx
je 0x614fc
movq 0x70(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x61521
leaq 0x118(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x6151c
movq 0x118(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x61535
movq 0x108(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x222b0
jmp 0x61546
leaq 0x108(%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 0x61573
movq %rsi, 0xd0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xe0(%rsp)
jmp 0x61579
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 0x97852(%rip), %rsi     # 0xf8df2
leaq 0xd0(%rsp), %rdi
callq 0x233b0
leaq 0x278(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x615dd
movq %rdx, 0x268(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x278(%rsp)
jmp 0x615e4
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x268(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0xc0396
movq 0x268(%rsp), %rdi
cmpq %r14, %rdi
je 0x61625
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x61646
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x61667
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%rsp), %rdi
cmpq %r13, %rdi
je 0x6167e
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x61699
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x616ba
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x616d0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
cmpq %r15, %rdi
movq %rbp, %r12
je 0x616ea
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6170b
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
movl 0xac(%rsp), %eax
movq %rax, 0xf0(%rsp)
jb 0x617ca
movq 0x11485b(%rip), %r15    # 0x175f90
leaq 0x97a21(%rip), %rsi     # 0xf915d
movl $0x19, %edx
movq %r15, %rdi
callq 0x22ab0
movq %r15, %rdi
movq 0xf0(%rsp), %rsi
callq 0x22650
movq %rax, %r15
leaq 0x97a14(%rip), %rsi     # 0xf9177
movl $0xd, %edx
movq %rax, %rdi
callq 0x22ab0
movq %r15, %rdi
movq %r12, %rsi
callq 0x22650
movq %rax, %r15
leaq 0x9dcbe(%rip), %rsi     # 0xff443
movl $0xc, %edx
movq %rax, %rdi
callq 0x22ab0
movl 0xb0(%rbx), %esi
movq %r15, %rdi
callq 0x22650
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x78(%rbx), %rax
movq 0x80(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x62dea
movq (%rax,%r12,8), %rax
movq %rax, 0x160(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x61843
movq 0x114788(%rip), %r15    # 0x175f90
leaq 0x975f2(%rip), %rsi     # 0xf8e01
movl $0x3b, %edx
movq %r15, %rdi
callq 0x22ab0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x618fa
movl $0x13, %edx
movq 0x114716(%rip), %rdi    # 0x175f90
leaq 0x97904(%rip), %rsi     # 0xf9185
callq 0x22ab0
movq 0x114703(%rip), %rdi    # 0x175f90
movq 0xf0(%rsp), %rsi
callq 0x22650
movq %rax, %r15
movl $0x7, %edx
movq %rax, %rdi
leaq 0x978ed(%rip), %rsi     # 0xf9199
callq 0x22ab0
movq %r15, %rdi
movq %r12, %rsi
callq 0x22650
movq %rax, %r15
movl $0x15, %edx
movq %rax, %rdi
leaq 0x978d3(%rip), %rsi     # 0xf91a1
callq 0x22ab0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %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 0x6da7e
addq $0x10, %rsp
movl %eax, 0x100(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x619db
movl $0x34, %edx
movq 0x11463d(%rip), %rdi    # 0x175f90
leaq 0x9785d(%rip), %rsi     # 0xf91b7
callq 0x22ab0
movq 0x11462a(%rip), %rcx    # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x11460c(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x4e, %edx
movq 0x1145f3(%rip), %rdi    # 0x175f90
leaq 0x974f9(%rip), %rsi     # 0xf8e9d
callq 0x22ab0
movq 0x1145e0(%rip), %rcx    # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x1145c2(%rip), %rdi    # 0x175f90
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 0x696ce
movq %rax, 0xf8(%rsp)
movq %rdx, 0x128(%rsp)
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x61a65
movl $0x4c, %edx
movq 0x114569(%rip), %rdi    # 0x175f90
leaq 0x974be(%rip), %rsi     # 0xf8eec
callq 0x22ab0
movq 0x114556(%rip), %rcx    # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x114538(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x0, 0x84(%rsp)
movq 0x128(%rsp), %rax
cmpq %rax, 0xf8(%rsp)
je 0x628b2
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x61ae9
movq 0x1144f3(%rip), %rdi    # 0x175f90
movq 0xf0(%rsp), %rsi
callq 0x22650
movq %rax, %r13
movl $0x13, %edx
movq %rax, %rdi
leaq 0x97730(%rip), %rsi     # 0xf91ec
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
movq 0x128(%rsp), %rax
cmpq %rax, 0xf8(%rsp)
je 0x628b2
movl $0x0, 0x84(%rsp)
movq (%rbx), %rcx
movq 0x8(%rbx), %rdx
subq %rcx, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rsi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rdx
cmpq %r12, %rdx
jbe 0x62d50
movq (%rbx), %rax
movq 0x8(%rbx), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %rsi, %rdx
cmpq %r12, %rdx
jbe 0x62d27
leaq (%r12,%r12,2), %rdx
shlq $0x4, %rdx
movq %rdx, 0x130(%rsp)
movq 0x18(%rcx,%rdx), %rbp
xorl %r14d, %r14d
movq 0x130(%rsp), %rcx
addq %rcx, %rax
addq $0x8, %rax
cmpq %rax, %rbp
je 0x61c16
movq 0xf8(%rsp), %rax
movq 0x38(%rax), %rax
movq (%rax,%r14), %r15
callq 0x22070
movq %rax, %r13
movl (%rax), %eax
movl %eax, 0x104(%rsp)
movl $0x0, (%r13)
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x22760
cmpq %r15, 0x60(%rsp)
je 0x62d38
movl (%r13), %eax
testl %eax, %eax
je 0x61bcd
cmpl $0x22, %eax
jne 0x61bd8
jmp 0x62d44
movl 0x104(%rsp), %eax
movl %eax, (%r13)
movsd %xmm0, 0x40(%rbp)
movq %rbp, %rdi
callq 0x22670
movq %rax, %rbp
movq (%rbx), %rax
movq 0x8(%rbx), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
addq $0x20, %r14
cmpq %r12, %rdx
ja 0x61b62
jmp 0x62d27
movq 0xa8(%rbx), %r14
movl 0xb0(%rbx), %esi
incl %esi
movq %rsp, %r15
movq %r15, %rdi
callq 0xc03b8
movq 0x1520(%r14), %rcx
movq 0x1528(%r14), %r8
movq %r15, %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 0x61c72
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x61c78
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x158(%rsp), %r14
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x20(%rsp), %rdi
leaq 0x9db43(%rip), %rsi     # 0xff7e7
callq 0x233b0
leaq 0x70(%rsp), %r15
movq %r15, 0x60(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61cd1
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x61cd8
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 0x61d19
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x61d35
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x61d50
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x238(%rsp), %rax
movq %rax, 0x228(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %r15
movq %r15, %rdi
callq 0x32180
movq %r15, %rdi
callq 0xbf2c2
movl %eax, %ebp
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x61db2
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x229c0
testl %ebp, %ebp
jne 0x61e04
leaq 0x248(%rsp), %rdi
leaq 0x961d2(%rip), %rsi     # 0xf7f97
leaq 0xd0(%rsp), %rdx
callq 0x319d8
leaq 0x248(%rsp), %rdi
callq 0xc038e
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x61e04
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xa8(%rbx), %rsi
cmpl $0x0, 0x1658(%rsi)
je 0x6288a
movl $0x1, %ebp
leaq 0xb0(%rsp), %r15
movq %r15, %rdi
movl %r14d, %edx
xorl %ecx, %ecx
callq 0x7a62c
movq %r15, %rdi
leaq 0x9602b(%rip), %rsi     # 0xf7e67
callq 0x233b0
leaq 0x98(%rsp), %rsi
movq %rsi, 0x88(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61e75
movq %rdx, 0x88(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x98(%rsp)
jmp 0x61e7b
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 0x108(%rsp), %rdi
callq 0xc03b8
movq 0x88(%rsp), %rcx
movl $0xf, %esi
leaq 0x98(%rsp), %rax
cmpq %rax, %rcx
je 0x61ec8
movq 0x98(%rsp), %rsi
movq 0x90(%rsp), %r8
movq 0x110(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x61f05
movl $0xf, %esi
leaq 0x118(%rsp), %rdi
cmpq %rdi, 0x108(%rsp)
je 0x61f00
movq 0x118(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x61f1c
movq 0x108(%rsp), %rsi
leaq 0x88(%rsp), %rdi
callq 0x222b0
jmp 0x61f2d
leaq 0x108(%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 0x61f52
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x61f58
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 0x95ee6(%rip), %rsi     # 0xf7e67
callq 0x233b0
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x61fac
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x61fb2
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 0x138(%rsp), %rdi
movl %ebp, %esi
callq 0xc03b8
movq (%rsp), %rcx
movl $0xf, %esi
leaq 0x10(%rsp), %rax
cmpq %rax, %rcx
je 0x61ff1
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %r8
movq 0x140(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x6202b
movl $0xf, %esi
leaq 0x148(%rsp), %rdi
cmpq %rdi, 0x138(%rsp)
je 0x62026
movq 0x148(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x6203d
movq 0x138(%rsp), %rsi
movq %rsp, %rdi
callq 0x222b0
jmp 0x6204e
leaq 0x138(%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 0x62073
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x62079
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 0x97281(%rip), %rsi     # 0xf9323
callq 0x233b0
leaq 0x70(%rsp), %rsi
movq %rsi, 0x60(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x620cf
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x620d5
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
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 0x62109
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x6212e
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x62149
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x62165
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x6218a
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x621af
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x621d4
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x20(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x33608
movl 0x40(%rbx), %esi
leaq 0x88(%rsp), %r15
movq %r15, %rdi
callq 0xc03b8
movq %r15, %rdi
leaq 0x95c5f(%rip), %rsi     # 0xf7e67
callq 0x233b0
leaq 0x50(%rsp), %rsi
movq %rsi, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x62235
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x6223b
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 0xc03b8
movq 0x40(%rsp), %rcx
movl $0xf, %esi
leaq 0x50(%rsp), %rax
cmpq %rax, %rcx
je 0x6227b
movq 0x50(%rsp), %rsi
movq 0x48(%rsp), %r8
movq 0xb8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x622b5
movl $0xf, %esi
leaq 0xc0(%rsp), %rdi
cmpq %rdi, 0xb0(%rsp)
je 0x622b0
movq 0xc0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x622c9
movq 0xb0(%rsp), %rsi
leaq 0x40(%rsp), %rdi
callq 0x222b0
jmp 0x622da
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 0x622fd
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x62303
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 0x62345
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x62361
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x62386
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x623ee
movl $0x16, %edx
movq 0x113bee(%rip), %rdi    # 0x175f90
leaq 0x96bcb(%rip), %rsi     # 0xf8f74
callq 0x22ab0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x113bd1(%rip), %rdi    # 0x175f90
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
cmpq %r12, %rdx
jbe 0x62d16
movq (%rax,%r12,8), %rax
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpb $0x1, 0xb8(%rax)
jne 0x62584
cmpq %r12, %rdx
jbe 0x62d16
addq 0x130(%rsp), %rsi
leaq 0x2b8(%rsp), %rdi
callq 0x51a66
leaq 0x218(%rsp), %rax
movq %rax, 0x208(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0x32180
leaq 0x198(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0x32180
leaq 0x1f8(%rsp), %rax
movq %rax, 0x1e8(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e8(%rsp), %r15
movq %r15, %rdi
callq 0x32180
movq 0x160(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
leaq 0x208(%rsp), %rdx
leaq 0x188(%rsp), %rcx
movq %r15, %r8
xorl %r9d, %r9d
xorl %eax, %eax
pushq %rax
pushq %rax
pushq $0x1
pushq %rax
callq 0x4eede
addq $0x20, %rsp
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0x6253f
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x62564
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rcx
movq %rcx, %rax
leaq 0x2b8(%rsp), %r13
jmp 0x626c2
cmpq %r12, %rdx
jbe 0x62d16
addq 0x130(%rsp), %rsi
leaq 0x288(%rsp), %rdi
callq 0x51a66
leaq 0x1d8(%rsp), %rax
movq %rax, 0x1c8(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1c8(%rsp), %rdi
callq 0x32180
leaq 0x178(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0x32180
leaq 0x1b8(%rsp), %rax
movq %rax, 0x1a8(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1a8(%rsp), %r15
movq %r15, %rdi
callq 0x32180
movq 0x160(%rsp), %rdi
leaq 0x288(%rsp), %rsi
leaq 0x1c8(%rsp), %rdx
leaq 0x168(%rsp), %rcx
movq %r15, %r8
xorl %r9d, %r9d
xorl %eax, %eax
pushq %rax
pushq %rax
pushq %rax
pushq %rax
callq 0x4eede
addq $0x20, %rsp
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x62682
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x626a7
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rcx
movq %rcx, %rax
leaq 0x288(%rsp), %r13
cmpq %rcx, %rdi
je 0x626d2
movq (%rax), %rsi
incq %rsi
callq 0x229c0
movq %r13, %rdi
callq 0x4a694
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x62822
movl $0x17, %edx
movq 0x113896(%rip), %rdi    # 0x175f90
leaq 0x9688a(%rip), %rsi     # 0xf8f8b
callq 0x22ab0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x113879(%rip), %rdi    # 0x175f90
callq 0x22ab0
movq %rax, %r13
movl $0x5, %edx
movq %rax, %rdi
leaq 0x96875(%rip), %rsi     # 0xf8fa3
callq 0x22ab0
movl 0x40(%rbx), %esi
leaq 0x40(%rsp), %rdi
callq 0xc03b8
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %r13, %rdi
callq 0x22ab0
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x96845(%rip), %rsi     # 0xf8fa9
callq 0x22ab0
leaq 0x88(%rsp), %rdi
movl %ebp, %esi
callq 0xc03b8
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %r13, %rdi
callq 0x22ab0
movq %rax, %r13
movl $0xa, %edx
movq %rax, %rdi
leaq 0xc00fc(%rip), %rsi     # 0x12289e
callq 0x22ab0
movq %r13, %rdi
movq 0xf0(%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 0x62806
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x62822
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x6283d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x62859
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x62875
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
incl %ebp
movq 0xa8(%rbx), %rsi
cmpl 0x1658(%rsi), %ebp
jbe 0x61e1d
incl 0x84(%rsp)
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0xf8(%rsp)
cmpq 0x128(%rsp), %rax
jne 0x61b0a
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6290c
movl $0x32, %edx
movq 0x1136c2(%rip), %rdi    # 0x175f90
leaq 0x966f8(%rip), %rsi     # 0xf8fcd
callq 0x22ab0
movq 0x1136af(%rip), %rcx    # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x113691(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
movl 0x84(%rsp), %ecx
cmpl 0x100(%rsp), %ecx
jge 0x629f4
cmpl $0x3, 0x1614(%rax)
jb 0x6297a
movl $0x32, %edx
movq 0x113654(%rip), %rdi    # 0x175f90
leaq 0x966f3(%rip), %rsi     # 0xf9036
callq 0x22ab0
movq 0x113641(%rip), %rcx    # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x113623(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %r8
movq (%r8), %rdi
movq 0x18(%rdi), %r10
movq 0x20(%rdi), %r9
movl $0x16, %eax
xorl %edx, %edx
divq %r9
movq %rdx, %rcx
movl %ecx, %eax
movq (%r10,%rax,8), %rdx
movl $0x0, %eax
testq %rdx, %rdx
je 0x62a9b
movq (%rdx), %r11
cmpl $0x16, 0x8(%r11)
movq %rdx, %rax
je 0x62a9b
movq %r11, %r14
movq (%r11), %r11
testq %r11, %r11
je 0x62a99
movslq 0x8(%r11), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %r9
movl $0x0, %eax
cmpq %rcx, %rdx
jne 0x62a9b
movq %r14, %rax
cmpl $0x16, %esi
jne 0x629be
jmp 0x62a9b
movq (%rax), %rdi
addq $0x18, %rdi
callq 0x68e70
movq 0xa8(%rbx), %rax
movl $0x2, %ebp
cmpl $0x3, 0x1614(%rax)
jb 0x62cd5
movl $0x35, %edx
movq 0x11356b(%rip), %rdi    # 0x175f90
leaq 0x965d4(%rip), %rsi     # 0xf9000
callq 0x22ab0
movq 0x113558(%rip), %rdi    # 0x175f90
movl 0x84(%rsp), %esi
callq 0x231e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x9bb0a(%rip), %rsi     # 0xfe560
callq 0x22ab0
movq %r15, %rdi
movl 0x100(%rsp), %esi
callq 0x231e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x62cd5
xorl %eax, %eax
testq %rax, %rax
je 0x62aaa
cmpq $0x0, (%rax)
jne 0x62d61
movl $0x19, %eax
xorl %edx, %edx
divq %r9
movq %rdx, %rcx
movl %ecx, %eax
movq (%r10,%rax,8), %rdx
movl $0x0, %eax
testq %rdx, %rdx
je 0x62b01
movq (%rdx), %r11
cmpl $0x19, 0x8(%r11)
movq %rdx, %rax
je 0x62b01
movq %r11, %r14
movq (%r11), %r11
testq %r11, %r11
je 0x62aff
movslq 0x8(%r11), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %r9
movl $0x0, %eax
cmpq %rcx, %rdx
jne 0x62b01
movq %r14, %rax
cmpl $0x19, %esi
jne 0x62ad4
jmp 0x62b01
xorl %eax, %eax
testq %rax, %rax
je 0x62c01
cmpq $0x0, (%rax)
je 0x62c01
cmpl $0x3, 0x1614(%r8)
jb 0x62b88
movl $0xc, %edx
movq 0x113466(%rip), %rdi    # 0x175f90
leaq 0x9d381(%rip), %rsi     # 0xffeb2
callq 0x22ab0
movq 0x113453(%rip), %rdi    # 0x175f90
movq 0xf0(%rsp), %rsi
callq 0x22650
movq %rax, %r15
movl $0x22, %edx
movq %rax, %rdi
leaq 0x96544(%rip), %rsi     # 0xf90a0
callq 0x22ab0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
incl 0x13ec(%rax)
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 %r12, %rdx
jbe 0x62dd9
leaq (%r12,%r12,2), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x69716
movq %rbx, %rdi
callq 0x5436a
movq 0xa8(%rbx), %rax
movl $0x4b, %edx
cmpl $0x3, 0x1614(%rax)
leaq 0x964cd(%rip), %rsi     # 0xf90c3
jae 0x62c7f
jmp 0x62cbd
movl $0x12, %eax
xorl %edx, %edx
divq %r9
movq %rdx, %rcx
movl %ecx, %eax
movq (%r10,%rax,8), %rdx
movl $0x0, %eax
testq %rdx, %rdx
je 0x62c58
movq (%rdx), %r10
cmpl $0x12, 0x8(%r10)
movq %rdx, %rax
je 0x62c58
movq %r10, %r11
movq (%r10), %r10
testq %r10, %r10
je 0x62c56
movslq 0x8(%r10), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %r9
movl $0x0, %eax
cmpq %rcx, %rdx
jne 0x62c58
movq %r11, %rax
cmpl $0x12, %esi
jne 0x62c2b
jmp 0x62c58
xorl %eax, %eax
addq $0x18, %rdi
xorl %ebp, %ebp
testq %rax, %rax
je 0x62cd0
cmpq $0x0, (%rax)
je 0x62cd0
movl $0x4d, %edx
cmpl $0x2, 0x1614(%r8)
leaq 0x96492(%rip), %rsi     # 0xf910f
jbe 0x62cbd
movq 0x11330a(%rip), %rdi    # 0x175f90
callq 0x22ab0
movq 0x1132fe(%rip), %rcx    # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x1132e0(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x1, %ebp
callq 0x68e70
testb $0x1, %bpl
je 0x6185a
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x62d04
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
addq $0x2e8, %rsp            # imm = 0x2E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x909a8(%rip), %rdi     # 0xf36c5
movq %r12, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x90997(%rip), %rdi     # 0xf36c5
movq %r12, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x8fa1c(%rip), %rdi     # 0xf275b
callq 0x225a0
leaq 0x8fa10(%rip), %rdi     # 0xf275b
callq 0x22e40
leaq 0x9096e(%rip), %rdi     # 0xf36c5
movq %r12, %rsi
xorl %eax, %eax
callq 0x22f40
cmpl $0x3, 0x1614(%r8)
jb 0x62d8f
movq 0x11321e(%rip), %rdi    # 0x175f90
leaq 0x96487(%rip), %rsi     # 0xf9200
movl $0x1a, %edx
callq 0x22ab0
movq 0x113206(%rip), %rdi    # 0x175f90
callq 0x22430
movq 0xa8(%rbx), %rax
movq (%rax), %rdi
callq 0x6b7b4
movq 0xa8(%rbx), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x62dd2
movq 0x1131db(%rip), %rdi    # 0x175f90
leaq 0x9645f(%rip), %rsi     # 0xf921b
movl $0x19, %edx
callq 0x22ab0
movq 0x1131c3(%rip), %rdi    # 0x175f90
callq 0x22430
xorl %edi, %edi
callq 0x22b90
leaq 0x908e5(%rip), %rdi     # 0xf36c5
movq %r12, %rsi
xorl %eax, %eax
callq 0x22f40
jmp 0x62dec
leaq 0x908d2(%rip), %rdi     # 0xf36c5
movq %r12, %rsi
xorl %eax, %eax
callq 0x22f40
movq %rax, %rbp
movq 0x268(%rsp), %rdi
cmpq %r14, %rdi
je 0x62e22
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62e22
movq %rax, %rbp
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62e48
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62e48
movq %rax, %rbp
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62e6e
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62e6e
movq %rax, %rbp
movq 0x60(%rsp), %rdi
cmpq %r13, %rdi
je 0x62e8a
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62e8a
movq %rax, %rbp
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62eaa
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62eaa
movq %rax, %rbp
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62ed0
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62ed0
movq %rax, %rbp
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x62eeb
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62eeb
movq %rax, %rbp
movq 0x40(%rsp), %rdi
cmpq %r15, %rdi
je 0x62f07
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x62f07
movq %rax, %rbp
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x63395
movq 0x98(%rsp), %rsi
jmp 0x6338d
jmp 0x632ac
jmp 0x632ac
jmp 0x632ac
movq %rax, %rbp
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x63370
movq 0x258(%rsp), %rsi
jmp 0x63368
movq %rax, %rbp
jmp 0x62f85
movq %rax, %rbp
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x62f85
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x63370
movq 0x10(%rsp), %rsi
jmp 0x63368
movq %rax, %rbp
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x63370
movq 0x238(%rsp), %rsi
jmp 0x63368
jmp 0x632ac
jmp 0x632ac
jmp 0x632ac
jmp 0x632ac
movq %rax, %rbp
jmp 0x630be
movq %rax, %rbp
jmp 0x6306f
jmp 0x6310c
movq %rax, %rbp
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x6304a
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6304a
movq %rax, %rbp
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0x63099
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x63099
movq %rax, %rbp
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x6306f
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x630f5
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x630f5
movq %rax, %rbp
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x630be
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
cmpq %rax, %rdi
je 0x630e8
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x630e8
movq %rax, %rbp
leaq 0x2b8(%rsp), %rdi
jmp 0x630fd
movq %rax, %rbp
leaq 0x288(%rsp), %rdi
callq 0x4a694
jmp 0x6331d
jmp 0x6331a
movq %rax, %rbp
jmp 0x632fc
movq %rax, %rbp
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x63138
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x63138
movq %rax, %rbp
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x63172
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x63172
movq %rax, %rbp
jmp 0x63354
movq %rax, %rbp
jmp 0x6321c
movq %rax, %rbp
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x6319a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6319a
movq %rax, %rbp
jmp 0x63338
movq %rax, %rbp
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x631c3
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x631c3
movq %rax, %rbp
jmp 0x63286
movq %rax, %rbp
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x631f7
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x631f7
jmp 0x632ac
movq %rax, %rbp
jmp 0x6326a
movq %rax, %rbp
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x6321c
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x63370
movq 0xc0(%rsp), %rsi
jmp 0x63368
movq %rax, %rbp
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x6326a
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x63286
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x63338
movq 0x98(%rsp), %rsi
jmp 0x63330
movq %rax, %rbp
jmp 0x63370
jmp 0x6331a
movq %rax, %rbp
cmpl $0x0, (%r13)
jne 0x63370
movl 0x104(%rsp), %eax
movl %eax, (%r13)
jmp 0x63370
movq %rax, %rbp
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x632fc
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6331d
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6331d
movq %rax, %rbp
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x63338
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x63354
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x63370
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x63395
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %rbp, %rdi
callq 0x23240
nop