// File: 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
movq %rsp, %rbp
subq $0x790, %rsp            # imm = 0x790
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
movl -0xc(%rbp), %esi
callq 0xac1e0
movl %eax, -0x10(%rbp)
cmpl $0x0, -0xc(%rbp)
jb 0xae2b5
movq -0x5b8(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, -0x5bc(%rbp)
movq 0xa8(%rax), %rdi
callq 0x8dec0
movl %eax, %ecx
movl -0x5bc(%rbp), %eax
cmpl %ecx, %eax
jae 0xae2b5
movq -0x5b8(%rbp), %rdi
addq $0x78, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x45190
cmpq $0x0, (%rax)
jne 0xae526
movq -0x5b8(%rbp), %rax
movl 0x40(%rax), %esi
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x17e460
movq -0x5c8(%rbp), %rdx
leaq 0x12d335(%rip), %rsi    # 0x1db615
leaq -0xd0(%rbp), %rdi
callq 0x8e0f0
jmp 0xae2ee
leaq 0x12d23d(%rip), %rdx    # 0x1db532
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x441f0
jmp 0xae30a
movl -0xc(%rbp), %esi
leaq -0x120(%rbp), %rdi
callq 0x17e460
jmp 0xae31b
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0x9c7d0
jmp 0xae337
leaq 0x12cc46(%rip), %rdx    # 0x1daf84
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x441f0
jmp 0xae350
movl -0x10(%rbp), %esi
leaq -0x140(%rbp), %rdi
callq 0x17e460
jmp 0xae361
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x9c7d0
jmp 0xae377
leaq 0x12d2cf(%rip), %rdx    # 0x1db64d
leaq -0x30(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x441f0
jmp 0xae38d
leaq -0x30(%rbp), %rdi
callq 0x17e420
jmp 0xae398
leaq -0x30(%rbp), %rdi
callq 0x311e8
leaq -0x50(%rbp), %rdi
callq 0x311e8
leaq -0x140(%rbp), %rdi
callq 0x311e8
leaq -0x70(%rbp), %rdi
callq 0x311e8
leaq -0x90(%rbp), %rdi
callq 0x311e8
leaq -0x120(%rbp), %rdi
callq 0x311e8
leaq -0xb0(%rbp), %rdi
callq 0x311e8
leaq -0xd0(%rbp), %rdi
callq 0x311e8
leaq -0xf0(%rbp), %rdi
callq 0x311e8
jmp 0xae526
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae515
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae509
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae4fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae4f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae4e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae4dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae4d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xae4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x311e8
leaq -0x50(%rbp), %rdi
callq 0x311e8
leaq -0x140(%rbp), %rdi
callq 0x311e8
leaq -0x70(%rbp), %rdi
callq 0x311e8
leaq -0x90(%rbp), %rdi
callq 0x311e8
leaq -0x120(%rbp), %rdi
callq 0x311e8
leaq -0xb0(%rbp), %rdi
callq 0x311e8
leaq -0xd0(%rbp), %rdi
callq 0x311e8
leaq -0xf0(%rbp), %rdi
callq 0x311e8
jmp 0xafab5
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xae5a8
movq 0x226a0c(%rip), %rdi    # 0x2d4f50
leaq 0x12d46d(%rip), %rsi    # 0x1db9b8
callq 0x2ff50
movq %rax, %rdi
movl -0x10(%rbp), %esi
callq 0x30640
movq %rax, %rdi
leaq 0x12d46d(%rip), %rsi    # 0x1db9d2
callq 0x2ff50
movq %rax, %rdi
movl -0xc(%rbp), %esi
callq 0x30640
movq %rax, %rdi
leaq 0x133a04(%rip), %rsi    # 0x1e1f83
callq 0x2ff50
movq %rax, %rdi
movq -0x5b8(%rbp), %rax
movl 0xb0(%rax), %esi
callq 0x30640
movq %rax, %rdi
movq 0x226a25(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
movq -0x5b8(%rbp), %rdi
addq $0x78, %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x45190
movq (%rax), %rax
movq %rax, -0x148(%rbp)
leaq -0x158(%rbp), %rdi
callq 0xb3700
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xae60c
movq 0x22695f(%rip), %rdi    # 0x2d4f50
leaq 0x12d064(%rip), %rsi    # 0x1db65c
callq 0x2ff50
movq %rax, %rdi
movq 0x2269c1(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
leaq -0x178(%rbp), %rdi
callq 0x2f880
jmp 0xae61a
movq -0x5b8(%rbp), %rax
movl $0x0, -0x17c(%rbp)
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xae6f1
movq 0x22690a(%rip), %rdi    # 0x2d4f50
leaq 0x12d393(%rip), %rsi    # 0x1db9e0
callq 0x2ff50
movq %rax, -0x5d0(%rbp)
jmp 0xae65b
movq -0x5d0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x30640
movq %rax, -0x5d8(%rbp)
jmp 0xae673
movq -0x5d8(%rbp), %rdi
leaq 0x12d373(%rip), %rsi    # 0x1db9f4
callq 0x2ff50
movq %rax, -0x5e0(%rbp)
jmp 0xae68f
movq -0x5e0(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x30640
movq %rax, -0x5e8(%rbp)
jmp 0xae6a7
movq -0x5e8(%rbp), %rdi
leaq 0x12d347(%rip), %rsi    # 0x1db9fc
callq 0x2ff50
movq %rax, -0x5f0(%rbp)
jmp 0xae6c3
movq -0x5f0(%rbp), %rdi
movq 0x2268f7(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xae6d8
jmp 0xae6f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xafaa9
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
movl -0x10(%rbp), %edx
movq %rdi, %r9
addq $0x18, %r9
movq %rsp, %rax
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
movl $0x1, (%rax)
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x1, %r8d
movl %ecx, %esi
callq 0xcefc0
movl %eax, -0x5f4(%rbp)
jmp 0xae736
movq -0x5b8(%rbp), %rax
movl -0x5f4(%rbp), %ecx
movl %ecx, -0x180(%rbp)
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xae7bd
movq 0x2267f0(%rip), %rdi    # 0x2d4f50
leaq 0x12d2ab(%rip), %rsi    # 0x1dba12
callq 0x2ff50
movq %rax, -0x600(%rbp)
jmp 0xae775
movq -0x600(%rbp), %rdi
movq 0x226845(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xae78a
movq 0x2267bf(%rip), %rdi    # 0x2d4f50
leaq 0x12cf60(%rip), %rsi    # 0x1db6f8
callq 0x2ff50
movq %rax, -0x608(%rbp)
jmp 0xae7a6
movq -0x608(%rbp), %rdi
movq 0x226814(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xae7bb
jmp 0xae7bd
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x15, -0x194(%rbp)
leaq -0x194(%rbp), %rsi
callq 0xb3750
movq %rdx, -0x618(%rbp)
movq %rax, -0x610(%rbp)
jmp 0xae7f8
movq -0x618(%rbp), %rax
movq -0x610(%rbp), %rcx
movq %rcx, -0x190(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x158(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xb3790
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xae871
movq 0x22670b(%rip), %rdi    # 0x2d4f50
leaq 0x12cefb(%rip), %rsi    # 0x1db747
callq 0x2ff50
movq %rax, -0x620(%rbp)
jmp 0xae85a
movq -0x620(%rbp), %rdi
movq 0x226760(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xae86f
jmp 0xae871
leaq -0x158(%rbp), %rdi
leaq -0x158(%rbp), %rsi
addq $0x8, %rsi
callq 0xb37c0
testb $0x1, %al
jne 0xae891
jmp 0xaf531
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xae8f3
movl -0x10(%rbp), %esi
movq 0x22669e(%rip), %rdi    # 0x2d4f50
callq 0x30640
movq %rax, -0x628(%rbp)
jmp 0xae8c0
movq -0x628(%rbp), %rdi
leaq 0x12d179(%rip), %rsi    # 0x1dba47
callq 0x2ff50
movq %rax, -0x630(%rbp)
jmp 0xae8dc
movq -0x630(%rbp), %rdi
movq 0x2266de(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xae8f1
jmp 0xae8f3
movq -0x158(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x158(%rbp), %rsi
addq $0x8, %rsi
leaq -0x1a0(%rbp), %rdi
callq 0xb37c0
testb $0x1, %al
jne 0xae921
jmp 0xaf52f
movq -0x5b8(%rbp), %rdi
movl $0x0, -0x1a4(%rbp)
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0xb2a00
movq %rax, -0x638(%rbp)
jmp 0xae945
movq -0x638(%rbp), %rdi
callq 0x9c670
movq %rax, -0x1b0(%rbp)
movq -0x5b8(%rbp), %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0xb2a00
movq %rax, -0x640(%rbp)
jmp 0xae972
movq -0x640(%rbp), %rdi
callq 0x966d0
movq %rax, -0x1b8(%rbp)
leaq -0x1b0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x9c6a0
testb $0x1, %al
jne 0xae99e
jmp 0xaea0c
leaq -0x1a0(%rbp), %rdi
callq 0xb3190
movq %rax, %rdi
addq $0x30, %rdi
movslq -0x1a4(%rbp), %rsi
callq 0x449e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x44830
movsd %xmm0, -0x648(%rbp)
jmp 0xae9d3
leaq -0x1b0(%rbp), %rdi
callq 0x9c7b0
movsd -0x648(%rbp), %xmm0
movsd %xmm0, 0x20(%rax)
movl -0x1a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a4(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x97360
jmp 0xae958
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rcx
addq $0x1520, %rcx           # imm = 0x1520
movq %rcx, -0x650(%rbp)
movl 0xb0(%rax), %esi
incl %esi
leaq -0x218(%rbp), %rdi
callq 0x17e460
jmp 0xaea3e
movq -0x650(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
leaq -0x218(%rbp), %rdx
callq 0xb3380
jmp 0xaea5a
leaq 0x1338f2(%rip), %rdx    # 0x1e2353
leaq -0x1d8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x441f0
jmp 0xaea76
leaq -0x178(%rbp), %rdi
movq %rdi, -0x658(%rbp)
leaq -0x1d8(%rbp), %rsi
movq %rsi, -0x660(%rbp)
callq 0x2fd80
movq -0x660(%rbp), %rdi
callq 0x311e8
leaq -0x1f8(%rbp), %rdi
callq 0x311e8
leaq -0x218(%rbp), %rdi
callq 0x311e8
movq -0x658(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0x2f300
jmp 0xaead0
leaq -0x238(%rbp), %rdi
callq 0x17d410
movl %eax, -0x664(%rbp)
jmp 0xaeae4
movl -0x664(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x665(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x311e8
movb -0x665(%rbp), %al
testb $0x1, %al
jne 0xaeb13
jmp 0xaebd7
leaq 0x12bc7d(%rip), %rsi    # 0x1da797
leaq -0x258(%rbp), %rdi
leaq -0x178(%rbp), %rdx
callq 0x44240
jmp 0xaeb2f
leaq -0x258(%rbp), %rdi
callq 0x17e3f0
jmp 0xaeb3d
leaq -0x258(%rbp), %rdi
callq 0x311e8
jmp 0xaebd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaeb80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x311e8
leaq -0x218(%rbp), %rdi
callq 0x311e8
jmp 0xafaa9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x311e8
jmp 0xafaa9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x311e8
jmp 0xafaa9
movl $0x1, -0x25c(%rbp)
movq -0x5b8(%rbp), %rcx
movl -0x25c(%rbp), %eax
movq 0xa8(%rcx), %rcx
cmpl 0x1658(%rcx), %eax
ja 0xaf50f
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rsi
movl -0xc(%rbp), %edx
leaq -0x320(%rbp), %rdi
xorl %ecx, %ecx
callq 0xec790
jmp 0xaec22
leaq 0x12ba3e(%rip), %rdx    # 0x1da667
leaq -0x300(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x441f0
jmp 0xaec3e
movq -0x5b8(%rbp), %rax
movl 0x40(%rax), %esi
leaq -0x340(%rbp), %rdi
callq 0x17e460
jmp 0xaec56
leaq -0x2e0(%rbp), %rdi
leaq -0x300(%rbp), %rsi
leaq -0x340(%rbp), %rdx
callq 0x9c7d0
jmp 0xaec72
leaq 0x12b9ee(%rip), %rdx    # 0x1da667
leaq -0x2c0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x441f0
jmp 0xaec8e
movl -0x25c(%rbp), %esi
leaq -0x360(%rbp), %rdi
callq 0x17e460
jmp 0xaeca2
leaq -0x2a0(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
leaq -0x360(%rbp), %rdx
callq 0x9c7d0
jmp 0xaecbe
leaq 0x12ceb9(%rip), %rdx    # 0x1dbb7e
leaq -0x280(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x441f0
jmp 0xaecda
leaq -0x2a0(%rbp), %rdi
callq 0x311e8
leaq -0x360(%rbp), %rdi
callq 0x311e8
leaq -0x2c0(%rbp), %rdi
callq 0x311e8
leaq -0x2e0(%rbp), %rdi
callq 0x311e8
leaq -0x340(%rbp), %rdi
callq 0x311e8
leaq -0x300(%rbp), %rdi
callq 0x311e8
leaq -0x320(%rbp), %rdi
callq 0x311e8
leaq -0x380(%rbp), %rdi
leaq -0x178(%rbp), %rsi
leaq -0x280(%rbp), %rdx
callq 0x50f10
jmp 0xaed4a
movq -0x5b8(%rbp), %rax
movl 0x40(%rax), %esi
leaq -0x3e0(%rbp), %rdi
callq 0x17e460
jmp 0xaed62
leaq 0x12b8fe(%rip), %rdx    # 0x1da667
leaq -0x3c0(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x441f0
jmp 0xaed7e
movl -0x25c(%rbp), %esi
leaq -0x400(%rbp), %rdi
callq 0x17e460
jmp 0xaed92
leaq -0x3a0(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
leaq -0x400(%rbp), %rdx
callq 0x9c7d0
jmp 0xaedae
leaq -0x400(%rbp), %rdi
callq 0x311e8
leaq -0x3c0(%rbp), %rdi
callq 0x311e8
leaq -0x3e0(%rbp), %rdi
callq 0x311e8
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaefd0
movq 0x22615c(%rip), %rdi    # 0x2d4f50
leaq 0x12c9d4(%rip), %rsi    # 0x1db7cf
callq 0x2ff50
movq %rax, -0x670(%rbp)
jmp 0xaee09
movq -0x670(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x2f780
movq %rax, -0x678(%rbp)
jmp 0xaee25
movq -0x678(%rbp), %rdi
movq 0x226195(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaee3a
jmp 0xaefd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaef17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaef0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaeeff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaeef3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaeee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaeedb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x311e8
leaq -0x360(%rbp), %rdi
callq 0x311e8
leaq -0x2c0(%rbp), %rdi
callq 0x311e8
leaq -0x2e0(%rbp), %rdi
callq 0x311e8
leaq -0x340(%rbp), %rdi
callq 0x311e8
leaq -0x300(%rbp), %rdi
callq 0x311e8
leaq -0x320(%rbp), %rdi
callq 0x311e8
jmp 0xafaa9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf4fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf4f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaefa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaef9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x311e8
leaq -0x3c0(%rbp), %rdi
callq 0x311e8
leaq -0x3e0(%rbp), %rdi
callq 0x311e8
jmp 0xaf4f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf4e6
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rdi
addq $0x15c0, %rdi           # imm = 0x15C0
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0x45190
movq %rax, -0x680(%rbp)
jmp 0xaeff8
movq -0x680(%rbp), %rax
movq (%rax), %rdi
callq 0x9cbc0
movb %al, -0x681(%rbp)
jmp 0xaf00f
movb -0x681(%rbp), %al
testb $0x1, %al
jne 0xaf01e
jmp 0xaf19d
movq -0x5b8(%rbp), %rdi
movq -0x148(%rbp), %rax
movq %rax, -0x698(%rbp)
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0xb2a00
movq %rax, -0x690(%rbp)
jmp 0xaf046
movq -0x690(%rbp), %rsi
leaq -0x430(%rbp), %rdi
callq 0x9c620
jmp 0xaf05b
leaq -0x450(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x2f300
jmp 0xaf070
leaq -0x470(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x2f300
jmp 0xaf085
leaq -0x490(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x2f300
jmp 0xaf09a
movq -0x698(%rbp), %rdi
movq %rsp, %rax
movl $0x0, 0x18(%rax)
movl $0x0, 0x10(%rax)
movl $0x1, 0x8(%rax)
movl $0x0, (%rax)
leaq -0x430(%rbp), %rsi
leaq -0x450(%rbp), %rdx
leaq -0x470(%rbp), %rcx
leaq -0x490(%rbp), %r8
xorl %r9d, %r9d
callq 0x99b90
jmp 0xaf0e5
leaq -0x490(%rbp), %rdi
callq 0x311e8
leaq -0x470(%rbp), %rdi
callq 0x311e8
leaq -0x450(%rbp), %rdi
callq 0x311e8
leaq -0x430(%rbp), %rdi
callq 0x8de70
jmp 0xaf31c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf18c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf180
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf174
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x490(%rbp), %rdi
callq 0x311e8
leaq -0x470(%rbp), %rdi
callq 0x311e8
leaq -0x450(%rbp), %rdi
callq 0x311e8
leaq -0x430(%rbp), %rdi
callq 0x8de70
jmp 0xaf4e6
movq -0x5b8(%rbp), %rdi
movq -0x148(%rbp), %rax
movq %rax, -0x6a8(%rbp)
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0xb2a00
movq %rax, -0x6a0(%rbp)
jmp 0xaf1c5
movq -0x6a0(%rbp), %rsi
leaq -0x4c0(%rbp), %rdi
callq 0x9c620
jmp 0xaf1da
leaq -0x4e0(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x2f300
jmp 0xaf1ef
leaq -0x500(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x2f300
jmp 0xaf204
leaq -0x520(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x2f300
jmp 0xaf219
movq -0x6a8(%rbp), %rdi
movq %rsp, %rax
movl $0x0, 0x18(%rax)
movl $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
leaq -0x4c0(%rbp), %rsi
leaq -0x4e0(%rbp), %rdx
leaq -0x500(%rbp), %rcx
leaq -0x520(%rbp), %r8
xorl %r9d, %r9d
callq 0x99b90
jmp 0xaf264
leaq -0x520(%rbp), %rdi
callq 0x311e8
leaq -0x500(%rbp), %rdi
callq 0x311e8
leaq -0x4e0(%rbp), %rdi
callq 0x311e8
leaq -0x4c0(%rbp), %rdi
callq 0x8de70
jmp 0xaf31c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf30b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf2ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf2f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x311e8
leaq -0x500(%rbp), %rdi
callq 0x311e8
leaq -0x4e0(%rbp), %rdi
callq 0x311e8
leaq -0x4c0(%rbp), %rdi
callq 0x8de70
jmp 0xaf4e6
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf4ae
movq 0x225c12(%rip), %rdi    # 0x2d4f50
leaq 0x12c4a1(%rip), %rsi    # 0x1db7e6
callq 0x2ff50
movq %rax, -0x6b0(%rbp)
jmp 0xaf353
movq -0x6b0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x2f780
movq %rax, -0x6b8(%rbp)
jmp 0xaf36f
movq -0x6b8(%rbp), %rdi
leaq 0x12c481(%rip), %rsi    # 0x1db7fe
callq 0x2ff50
movq %rax, -0x6c0(%rbp)
jmp 0xaf38b
movq -0x5b8(%rbp), %rax
movl 0x40(%rax), %esi
leaq -0x540(%rbp), %rdi
callq 0x17e460
jmp 0xaf3a3
movq -0x6c0(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x2f780
movq %rax, -0x6c8(%rbp)
jmp 0xaf3bf
movq -0x6c8(%rbp), %rdi
leaq 0x12c437(%rip), %rsi    # 0x1db804
callq 0x2ff50
movq %rax, -0x6d0(%rbp)
jmp 0xaf3db
movl -0x25c(%rbp), %esi
leaq -0x560(%rbp), %rdi
callq 0x17e460
jmp 0xaf3ef
movq -0x6d0(%rbp), %rdi
leaq -0x560(%rbp), %rsi
callq 0x2f780
movq %rax, -0x6d8(%rbp)
jmp 0xaf40b
movq -0x6d8(%rbp), %rdi
leaq 0x1568cf(%rip), %rsi    # 0x205ce8
callq 0x2ff50
movq %rax, -0x6e0(%rbp)
jmp 0xaf427
movq -0x6e0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x30640
movq %rax, -0x6e8(%rbp)
jmp 0xaf43f
movq -0x6e8(%rbp), %rdi
movq 0x225b7b(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf454
leaq -0x560(%rbp), %rdi
callq 0x311e8
leaq -0x540(%rbp), %rdi
callq 0x311e8
jmp 0xaf4ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0xaf4a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x560(%rbp), %rdi
callq 0x311e8
leaq -0x540(%rbp), %rdi
callq 0x311e8
jmp 0xaf4e6
leaq -0x3a0(%rbp), %rdi
callq 0x311e8
leaq -0x380(%rbp), %rdi
callq 0x311e8
leaq -0x280(%rbp), %rdi
callq 0x311e8
movl -0x25c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x25c(%rbp)
jmp 0xaebe1
leaq -0x3a0(%rbp), %rdi
callq 0x311e8
leaq -0x380(%rbp), %rdi
callq 0x311e8
leaq -0x280(%rbp), %rdi
callq 0x311e8
jmp 0xafaa9
movl -0x17c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x17c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0xb37f0
jmp 0xae901
jmp 0xaf531
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf57b
movq 0x225a01(%rip), %rdi    # 0x2d4f50
leaq 0x12c2d2(%rip), %rsi    # 0x1db828
callq 0x2ff50
movq %rax, -0x6f0(%rbp)
jmp 0xaf564
movq -0x6f0(%rbp), %rdi
movq 0x225a56(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf579
jmp 0xaf57b
movl -0x17c(%rbp), %eax
cmpl -0x180(%rbp), %eax
jl 0xaf64c
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0xb31c0
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf647
movq 0x225987(%rip), %rdi    # 0x2d4f50
leaq 0x12c28b(%rip), %rsi    # 0x1db85b
callq 0x2ff50
movq %rax, -0x6f8(%rbp)
jmp 0xaf5de
movq -0x6f8(%rbp), %rdi
movl -0x17c(%rbp), %esi
callq 0x2f800
movq %rax, -0x700(%rbp)
jmp 0xaf5f9
movq -0x700(%rbp), %rdi
leaq 0x131a99(%rip), %rsi    # 0x1e10a0
callq 0x2ff50
movq %rax, -0x708(%rbp)
jmp 0xaf615
movq -0x708(%rbp), %rdi
movl -0x180(%rbp), %esi
callq 0x2f800
movq %rax, -0x710(%rbp)
jmp 0xaf630
movq -0x710(%rbp), %rdi
movq 0x22598a(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf645
jmp 0xaf647
jmp 0xae618
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf696
movq 0x2258e6(%rip), %rdi    # 0x2d4f50
leaq 0x12c220(%rip), %rsi    # 0x1db891
callq 0x2ff50
movq %rax, -0x718(%rbp)
jmp 0xaf67f
movq -0x718(%rbp), %rdi
movq 0x22593b(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf694
jmp 0xaf696
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x16, -0x56c(%rbp)
leaq -0x56c(%rbp), %rsi
callq 0xb3160
movq %rax, -0x720(%rbp)
jmp 0xaf6ca
movq -0x5b8(%rbp), %rax
movq -0x720(%rbp), %rcx
movq %rcx, -0x568(%rbp)
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0xb3820
movq %rax, -0x578(%rbp)
leaq -0x568(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0xb37c0
testb $0x1, %al
jne 0xaf715
jmp 0xaf7c6
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf75f
movq 0x22581d(%rip), %rdi    # 0x2d4f50
leaq 0x12c321(%rip), %rsi    # 0x1dba5b
callq 0x2ff50
movq %rax, -0x728(%rbp)
jmp 0xaf748
movq -0x728(%rbp), %rdi
movq 0x225872(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf75d
jmp 0xaf75f
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
callq 0xccd00
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf7bf
movq 0x2257bd(%rip), %rdi    # 0x2d4f50
leaq 0x12c2dc(%rip), %rsi    # 0x1dba76
callq 0x2ff50
movq %rax, -0x730(%rbp)
jmp 0xaf7a8
movq -0x730(%rbp), %rdi
movq 0x225812(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf7bd
jmp 0xaf7bf
xorl %edi, %edi
callq 0x30200
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x19, -0x584(%rbp)
leaq -0x584(%rbp), %rsi
callq 0xb3160
movq %rax, -0x738(%rbp)
jmp 0xaf7fa
movq -0x5b8(%rbp), %rax
movq -0x738(%rbp), %rcx
movq %rcx, -0x580(%rbp)
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0xb3820
movq %rax, -0x590(%rbp)
leaq -0x580(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0xb37c0
testb $0x1, %al
jne 0xaf845
jmp 0xaf989
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf8c3
movq 0x2256ed(%rip), %rdi    # 0x2d4f50
leaq 0x133227(%rip), %rsi    # 0x1e2a91
callq 0x2ff50
movq %rax, -0x740(%rbp)
jmp 0xaf878
movq -0x740(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x30640
movq %rax, -0x748(%rbp)
jmp 0xaf890
movq -0x748(%rbp), %rdi
leaq 0x12c05d(%rip), %rsi    # 0x1db8fb
callq 0x2ff50
movq %rax, -0x750(%rbp)
jmp 0xaf8ac
movq -0x750(%rbp), %rdi
movq 0x22570e(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf8c1
jmp 0xaf8c3
movq -0x5b8(%rbp), %rdi
movq 0xa8(%rdi), %rax
movl 0x13ec(%rax), %ecx
incl %ecx
movl %ecx, 0x13ec(%rax)
movl $0x0, 0xb0(%rdi)
movl -0xc(%rbp), %eax
movl %eax, %esi
callq 0xb2a00
movq %rax, -0x758(%rbp)
jmp 0xaf8fc
movq -0x758(%rbp), %rdi
callq 0xb3850
movq -0x5b8(%rbp), %rdi
callq 0xa3640
jmp 0xaf916
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xaf960
movq 0x22561c(%rip), %rdi    # 0x2d4f50
leaq 0x12bfe3(%rip), %rsi    # 0x1db91e
callq 0x2ff50
movq %rax, -0x760(%rbp)
jmp 0xaf949
movq -0x760(%rbp), %rdi
movq 0x225671(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xaf95e
jmp 0xaf960
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0xb31c0
movl $0x1, -0x594(%rbp)
jmp 0xafa94
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
movl $0x12, -0x5a4(%rbp)
leaq -0x5a4(%rbp), %rsi
callq 0xb3160
movq %rax, -0x768(%rbp)
jmp 0xaf9bd
movq -0x5b8(%rbp), %rax
movq -0x768(%rbp), %rcx
movq %rcx, -0x5a0(%rbp)
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0xb3820
movq %rax, -0x5b0(%rbp)
leaq -0x5a0(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0xb37c0
testb $0x1, %al
jne 0xafa05
jmp 0xafa75
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0xafa4f
movq 0x22552d(%rip), %rdi    # 0x2d4f50
leaq 0x12bf40(%rip), %rsi    # 0x1db96a
callq 0x2ff50
movq %rax, -0x770(%rbp)
jmp 0xafa38
movq -0x770(%rbp), %rdi
movq 0x225582(%rip), %rsi    # 0x2d4fc8
callq 0x30c10
jmp 0xafa4d
jmp 0xafa4f
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0xb31c0
movl $0x1, -0x594(%rbp)
jmp 0xafa94
movq -0x5b8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rdi
addq $0x18, %rdi
callq 0xb31c0
jmp 0xae618
leaq -0x178(%rbp), %rdi
callq 0x311e8
addq $0x790, %rsp            # imm = 0x790
popq %rbp
retq
leaq -0x178(%rbp), %rdi
callq 0x311e8
movq -0xf8(%rbp), %rdi
callq 0x30170
nopw %cs:(%rax,%rax)