// File: /workspace/github_cpp_makefile_star2_O1/richardposner[P]BioNetFit2/src/code/Pheromones.cpp
// Function: Pheromones::sendToSwarm(int, int, int, bool, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, int)
void Pheromones::sendToSwarm(int senderID, signed int receiverID, int tag, bool block, std::vector<std::string> &message, int messageID) {
	// Using MPI
	if (swarm_->options.useCluster) {
		std::vector<int> receivers;

		// Find out rank, size
		int world_rank;
		MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
		int world_size;
		MPI_Comm_size(MPI_COMM_WORLD, &world_size);


		// Construct the swarmMessage
		swarmMessage smessage;
		smessage.sender = senderID;


		// Sending to the entire swarm
		if (receiverID == -1) {
			//std::cout << "sending to entire swarm because receiver is -1" << std::endl;

			// TODO: Replace this exchange with a world_->sendrecv()
			smessage.tag = toString(GET_RUNNING_PARTICLES);
			if (swarm_->options.verbosity>=3) {
				std::cout << "trying to get list of running particles.." << std::endl;
			// First we need to get a list of all running particles from the master
			}

			std::string serializedMessage = serializeSwarmMessage(smessage);
			if (swarm_->options.verbosity>=3) {
				cout << "RRR sending serializedMessage GET RUNNING PARTICLES 11 = " << serializedMessage << endl;
			}
			//world_->send(0, GET_RUNNING_PARTICLES, serializedMessage);
			MPI_Send(serializedMessage.c_str(), serializedMessage.length(), MPI_CHAR, 0, GET_RUNNING_PARTICLES, MPI_COMM_WORLD);

			//std::cout << "trying to receive list of running particles.." << std::endl;
			//usleep(10000);

			// This swarmMessage will hold the list of running particles received from master
			MPI_Status status;

			int count;
			MPI_Probe(0, 0, MPI_COMM_WORLD, &status);
			MPI_Get_count(&status, MPI_INT, &count);
			char *buffer = new char[count + 1];
			MPI_Recv(buffer, count, MPI_CHAR, 0, SEND_RUNNING_PARTICLES, MPI_COMM_WORLD, &status);
			buffer[count] = '\0';
			if (swarm_->options.verbosity>=3) {
				std::cout << "received list of running particles = " << buffer << std::endl;
			}
			swarmMessage rsmessage = deserializeSwarmMessage(std::string(buffer));
			delete [] buffer;

			//for (auto p: runningParticles) 
			for (auto p = rsmessage.message.begin(); p != rsmessage.message.end(); ++p) {
			    if (swarm_->options.verbosity>=3) {

			    	std::cout << "adding receiver: " << *p << std::endl;
			    }
				receivers.push_back(stoi(*p));
			}

		}
		else {
		    if (swarm_->options.verbosity>=3) {

		    	cout << "RRR sendToSwarm senderID: " << senderID << " receiverID: " << receiverID << " tag: " << tag << endl;

				std::cout << "Sending tag " << tag << " to: " << receiverID << std::endl;
		    }
			// If we're not sending to the entire swarm, put only the target pID into the receivers list
			receivers.push_back(receiverID);
		}

		smessage.tag = toString(tag);

		//for (auto m: mpiMessage) 
		for (auto m = message.begin(); m != message.end(); ++m) {
			//std::cout << "adding: " << *m << std::endl;
			smessage.message.push_back(*m);
		}

		std::string smString(serializeSwarmMessage(smessage));
		if (swarm_->options.verbosity>=3) {
			cout << "send message is smString = '" << smString << "'" << endl;
		}
		// Loop through receivers and perform the send operation
		for (std::vector<int>::iterator i = receivers.begin(); i != receivers.end(); ++i) {
			// Blocking send
		    int world_size;
		    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

			if(receiverID < world_size){

				//usleep(10000);


				if (block) {
				    if (swarm_->options.verbosity>=3) {

				    	std::cout << "attempting a block send from " << senderID << " to " << receiverID << std::endl;
				    }
					try{
						MPI_Send(smString.c_str(), smString.length(), MPI_CHAR, receiverID, tag, MPI_COMM_WORLD);




					} catch (interprocess_exception& e) {
						cout << e.what( ) << std::endl;
			    	}
				    if (swarm_->options.verbosity>=3) {

				    	std::cout << "block send from " << senderID << " to " << receiverID << " succeeded" << std::endl;
				    }
				}
				// Non-blocking send
				else {
					if (swarm_->options.verbosity>=3) {
						std::cout << "attempting a non-block send from " << senderID << " to " << receiverID << std::endl;
					}

					int result = MPI_Send(smString.c_str(), smString.length(), MPI_CHAR, receiverID, tag, MPI_COMM_WORLD);
					if (swarm_->options.verbosity>=3) {
						if (result == MPI_SUCCESS){
							std::cout << "Rank " <<  world_rank << " sent message to " << receiverID << " tag: " << tag << " message: " << smString.c_str() << std::endl;
						}else{
							cout << "ERROR MESSAGE NOT SENT!!!" << endl;
						}
						std::cout << "non-block send from " << senderID << " to " << receiverID << " succeeded" << std::endl;
					}
					//recvStatus_ = recvRequest_.wait();
					//std::cout << "tag: " << recvStatus_.tag() << std::endl;
					//std::cout << "error: " << recvStatus_.error() << std::endl;
				}
			}
		}
	}else {
		// Using IPC
		std::vector<int> receivers;

		// Construct the swarmMessage
		swarmMessage smessage;
		smessage.sender = senderID;

		int nPar = 0; //Raquel: added a counter for debugging

		// Sending to the entire swarm
		if (receiverID == -1) {
			//std::cout << "sending to entire swarm because receiver is -1" << std::endl;
			// First we need to get a list of all running particles from the master

			// Set tag to tell master we need a list of running particles
			smessage.tag = toString(GET_RUNNING_PARTICLES);
			//std::cout << "trying to get list of running particles.." << std::endl;

			// Serialize the message
			std::string serializedMessage = serializeSwarmMessage(smessage);
			if (serializedMessage.length() > MAX_SWARM_MESSAGE_SIZE) {
				std::cout << "ERROR: Serialized Message length: " << serializedMessage.length() << " greater than MAX_SWARM_MESSAGE_SIZE" << std::endl;
				std::abort();
			}

			smq_[0]->send(serializedMessage.c_str(), serializedMessage.length(), 0);

			//std::cout << "trying to receive list of running particles.." << std::endl;

			// This swarmMessage will hold the list of running particles received from master

			message_queue::size_type recvd_size;

			// Receive and de-serialize the message
			char buffer[MAX_SWARM_MESSAGE_SIZE + 1];
			unsigned int priority;

			smq_[0]->receive(buffer, sizeof(buffer), recvd_size, priority);

			buffer[recvd_size] = '\0';
			swarmMessage rsmessage = deserializeSwarmMessage(buffer);

			//std::cout << "received list of running particles.." << std::endl;

			//for (auto p: runningParticles) 
			for (auto p = rsmessage.message.begin(); p != rsmessage.message.end(); ++p) {
				//std::cout << "adding receiver: " << *p << std::endl;
				receivers.push_back(stoi(*p));
				nPar++; //Raquel: added a counter for debugging

			}

			cout << "RAQUEL: Found " << nPar << " particles running." << endl; //Raquel: added for debugging

		}
		else {
			//std::cout << "Sending to: " << receiverID << std::endl;
			// If we're not sending to the entire swarm, put only the target pID into the receivers list
			receivers.push_back(receiverID);
		}

		// Set the message tag as specified by the sender
		smessage.tag = toString(tag);

		// Add the message array to the swarmMessage
		//for (auto m: mpiMessage) 
		for (auto m = message.begin(); m != message.end(); ++m) {
			//std::cout << senderID << " adding: " << *m << std::endl;
			smessage.message.push_back(*m);
		}

		// Set a random messageID
		if (messageID == -1) {
			messageID = rand();
		}

		smessage.id = messageID;

		// Serialize the swarmMessage
		std::string serializedMessage = serializeSwarmMessage(smessage);
		if (serializedMessage.length() > MAX_SWARM_MESSAGE_SIZE) {
			std::cout << "ERROR: Serialized Message length: " << serializedMessage.length() << " greater than MAX_SWARM_MESSAGE_SIZE" << std::endl;
			abort();
		}

		// Loop through receivers and perform the send operation
		for (std::vector<int>::iterator i = receivers.begin(); i != receivers.end(); ++i) {
			std::cout << "### " << senderID << " sending " << smessage.tag << " to " << *i	<< ". ser: " << serializedMessage << std::endl;
			//smq_[*i]->send(serializedMessage.data(), serializedMessage.size(), 0);
			//Raquel: added for debbuging
			bool sendAttempt2 = smq_[*i]->try_send(serializedMessage.data(), serializedMessage.size(), 0);


			if (sendAttempt2 == false){
				cout << "RAQUEL: queue was full when message was sent" << endl;

			}else{ cout << "RAQUEL: sending success" << endl; }
			
			//std::cout << "sent" << std::endl;
			if (block) {
				bool foundMessage = true;
				while (foundMessage) {
					//usleep(150000);
					//std::cout << senderID << "loop" << std::endl;

					// TODO: This non-erasing recvMessage might slow down the receiver finding the message since it
					// requires a re-send every time we check

					// If we're blocking, we need to repeatedly check to see if the message still exists in the queue
					if (recvMessage(senderID, receiverID, tag, false, univMessageReceiver, false, messageID)) {
						foundMessage = true;
					}
					else {
						foundMessage = false;
					}
				}
			}
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x658, %rsp            # imm = 0x658
movq %r9, %r15
movl %r8d, 0xc4(%rsp)
movl %ecx, 0x1c(%rsp)
movl %esi, %ebp
movl %edx, 0x18(%rsp)
movq 0x50(%rdi), %rax
cmpb $0x1, 0x1631(%rax)
movl %esi, 0x2c(%rsp)
movq %rdi, 0x20(%rsp)
jne 0x6c19e
movq %rdi, %r14
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq 0x109f45(%rip), %rdi    # 0x175f50
leaq 0xc8(%rsp), %rsi
callq 0x22dc0
movq 0x109f31(%rip), %rdi    # 0x175f50
leaq 0x3c(%rsp), %rsi
callq 0x22b00
leaq 0x270(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
leaq 0x288(%rsp), %rcx
xorps %xmm0, %xmm0
movups %xmm0, (%rcx)
movq %rax, 0x10(%rcx)
movl %ebp, -0x4(%rcx)
cmpl $-0x1, 0x18(%rsp)
je 0x6c4d3
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c17a
movq 0x109f1a(%rip), %rdi    # 0x175f90
leaq 0x8f885(%rip), %rsi     # 0xfb902
movl $0x1a, %edx
callq 0x22ab0
movq 0x109f02(%rip), %rdi    # 0x175f90
movl %ebp, %esi
callq 0x231e0
movq %rax, %rbx
leaq 0x8f87e(%rip), %rsi     # 0xfb91d
movl $0xd, %edx
movq %rax, %rdi
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
leaq 0x8f869(%rip), %rsi     # 0xfb92b
movl $0x6, %edx
movq %rax, %rdi
callq 0x22ab0
movq %rbx, %rdi
movl 0x1c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x109e84(%rip), %rdi    # 0x175f90
leaq 0x8f81f(%rip), %rsi     # 0xfb932
movl $0xc, %edx
callq 0x22ab0
movq 0x109e6c(%rip), %rdi    # 0x175f90
movl 0x1c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
leaq 0x8f808(%rip), %rsi     # 0xfb93f
movl $0x5, %edx
movq %rax, %rdi
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x48(%rsp), %rsi
cmpq 0x50(%rsp), %rsi
je 0x6c978
movl 0x18(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%rsp)
jmp 0x6c987
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
xorl %eax, %eax
movq %rax, 0x70(%rsp)
leaq 0x90(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
leaq 0xa8(%rsp), %rcx
movups %xmm0, (%rcx)
movq %rax, 0x10(%rcx)
movl %ebp, -0x4(%rcx)
cmpl $-0x1, %edx
je 0x6c1f7
movq 0x68(%rsp), %rsi
cmpq 0x70(%rsp), %rsi
je 0x6c964
movl %edx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x68(%rsp)
jmp 0x6d048
leaq 0x260(%rsp), %rdi
movl $0xb, %esi
callq 0xbee9e
leaq 0x80(%rsp), %rdi
leaq 0x260(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6c241
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1b0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1a0(%rsp), %rdi
callq 0x32180
movq 0xa0(%rsp), %rax
leaq 0x1c8(%rsp), %rbx
movq %rax, -0x8(%rbx)
movq %rbx, %rdi
leaq 0xa8(%rsp), %rsi
callq 0x47a3e
leaq 0x40(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x6d766
movq %rbx, %rdi
callq 0x31a9e
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c2c8
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x48(%rsp), %rbx
cmpq $0x3e9, %rbx            # imm = 0x3E9
jae 0x6d45f
movabsq $0x7ffffffffffffffe, %r14 # imm = 0x7FFFFFFFFFFFFFFE
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq (%rax), %r13
movq 0x40(%rsp), %r12
leaq 0x30(%rsp), %rsi
movl $0xfffffffe, (%rsi)     # imm = 0xFFFFFFFE
leaq 0x260(%rsp), %rdx
movq %r14, (%rdx)
leaq 0xd8(%rsp), %rdi
callq 0x71cf2
leaq 0xd8(%rsp), %r9
movq %r13, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %rbx, %rcx
xorl %r8d, %r8d
callq 0x716d0
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq (%rax), %rbx
leaq 0x3c(%rsp), %rsi
movl $0xfffffffe, (%rsi)     # imm = 0xFFFFFFFE
leaq 0xd8(%rsp), %rdx
movq %r14, (%rdx)
leaq 0x30(%rsp), %r14
movq %r14, %rdi
callq 0x71cf2
movq %r14, (%rsp)
leaq 0x260(%rsp), %rdx
leaq 0xc8(%rsp), %r8
leaq 0x38(%rsp), %r9
movl $0x3e9, %ecx            # imm = 0x3E9
movq %rbx, %rdi
xorl %esi, %esi
callq 0x723be
movq 0xc8(%rsp), %rax
movb $0x0, 0x260(%rsp,%rax)
leaq 0x130(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x260(%rsp), %rbx
movq %rbx, %rdi
callq 0x223a0
leaq (%rsp,%rax), %rdx
addq $0x260, %rdx            # imm = 0x260
leaq 0x120(%rsp), %rdi
movq %rbx, %rsi
callq 0x32210
leaq 0xd8(%rsp), %rdi
leaq 0x120(%rsp), %rdx
movq 0x20(%rsp), %rsi
callq 0x6d846
movq %r15, 0x118(%rsp)
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c410
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x100(%rsp), %r15
cmpq 0x108(%rsp), %r15
je 0x6cf8a
xorl %ebx, %ebx
callq 0x22070
movq %rax, %r12
leaq 0x30(%rsp), %r13
movq (%r15), %r14
movl (%r12), %ebp
movl $0x0, (%r12)
movq %r14, %rdi
movq %r13, %rsi
movl $0xa, %edx
callq 0x22d80
cmpq %r14, 0x30(%rsp)
je 0x6d3e2
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x6d3ee
movl (%r12), %ecx
cmpl $0x22, %ecx
je 0x6d3ee
testl %ecx, %ecx
jne 0x6c48e
movl %ebp, (%r12)
movl %eax, 0x3c(%rsp)
movq 0x68(%rsp), %rsi
cmpq 0x70(%rsp), %rsi
je 0x6c4ab
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x68(%rsp)
jmp 0x6c4ba
leaq 0x60(%rsp), %rdi
leaq 0x3c(%rsp), %rdx
callq 0x715f4
incl %ebx
addq $0x20, %r15
cmpq 0x108(%rsp), %r15
jne 0x6c435
jmp 0x6cf8c
leaq 0x80(%rsp), %rdi
movl $0xb, %esi
callq 0xbee9e
leaq 0x260(%rsp), %rdi
leaq 0x80(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x6c51d
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c570
movq 0x109a5f(%rip), %rbx    # 0x175f90
leaq 0x8f32e(%rip), %rsi     # 0xfb866
movl $0x29, %edx
movq %rbx, %rdi
callq 0x22ab0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x109a2d(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0x230(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x260(%rsp), %rsi
movq 0x268(%rsp), %rdx
addq %rsi, %rdx
leaq 0x220(%rsp), %rdi
callq 0x32180
movq 0x280(%rsp), %rax
leaq 0x248(%rsp), %rbx
movq %rax, -0x8(%rbx)
movq %rbx, %rdi
leaq 0x288(%rsp), %rsi
callq 0x47a3e
leaq 0xd8(%rsp), %rdi
leaq 0x220(%rsp), %rdx
callq 0x6d766
movq %rbx, %rdi
callq 0x31a9e
movq 0x220(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c5fa
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rax
movq 0x50(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c66a
movq 0x10997d(%rip), %rdi    # 0x175f90
leaq 0x8f276(%rip), %rsi     # 0xfb890
movl $0x39, %edx
callq 0x22ab0
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
movq 0x109955(%rip), %rdi    # 0x175f90
callq 0x22ab0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0xd8(%rsp), %rdi
movl 0xe0(%rsp), %esi
movq 0x1098b0(%rip), %rdx    # 0x175f30
movq 0x1098c9(%rip), %r9     # 0x175f50
xorl %ecx, %ecx
movl $0xb, %r8d
callq 0x22300
movq 0x1098b5(%rip), %rdx    # 0x175f50
leaq 0x60(%rsp), %rcx
xorl %edi, %edi
xorl %esi, %esi
callq 0x222c0
movq 0x1098e8(%rip), %rsi    # 0x175f98
leaq 0x60(%rsp), %r12
leaq 0x38(%rsp), %rdx
movq %r12, %rdi
callq 0x22e10
movslq 0x38(%rsp), %r13
leaq 0x1(%r13), %rdi
callq 0x22040
movq %rax, %rbx
movq %r12, (%rsp)
movq 0x109852(%rip), %rdx    # 0x175f30
movq 0x10986b(%rip), %r9     # 0x175f50
movq %rax, %rdi
movl %r13d, %esi
xorl %ecx, %ecx
movl $0xc, %r8d
callq 0x227b0
movslq 0x38(%rsp), %rax
movb $0x0, (%rbx,%rax)
movq 0x20(%rsp), %rax
movq 0x50(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c773
movq 0x109876(%rip), %rdi    # 0x175f90
leaq 0x8f1a9(%rip), %rsi     # 0xfb8ca
movl $0x25, %edx
callq 0x22ab0
movq %rbx, %rdi
callq 0x223a0
movq 0x109856(%rip), %r14    # 0x175f90
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x22ab0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x10982a(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0x150(%rsp), %r14
movq %r14, -0x10(%r14)
movq %rbx, %rdi
callq 0x223a0
movq %rbx, %rdx
addq %rax, %rdx
leaq 0x140(%rsp), %rdi
movq %rbx, %rsi
callq 0x32210
leaq 0x80(%rsp), %rdi
leaq 0x140(%rsp), %rdx
movq 0x20(%rsp), %rsi
callq 0x6d846
movq 0x140(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c7d4
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %rbx, %rdi
callq 0x22c60
movq 0xa8(%rsp), %rbp
cmpq 0xb0(%rsp), %rbp
movq 0x20(%rsp), %r14
je 0x6c910
leaq 0x30(%rsp), %r12
movq %r15, %rbx
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c862
movl $0x11, %edx
movq 0x109778(%rip), %rdi    # 0x175f90
leaq 0x8f0d1(%rip), %rsi     # 0xfb8f0
callq 0x22ab0
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x10975d(%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 (%rbp), %r14
callq 0x22070
movq %rax, %r13
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r14, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x22d80
cmpq %r14, 0x30(%rsp)
je 0x6d3fa
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x6d406
movl (%r13), %ecx
cmpl $0x22, %ecx
je 0x6d406
testl %ecx, %ecx
movq 0x20(%rsp), %r14
jne 0x6c8c6
movl %r15d, (%r13)
movl %eax, 0xd4(%rsp)
movq 0x48(%rsp), %rsi
cmpq 0x50(%rsp), %rsi
je 0x6c8e9
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%rsp)
movq %rbx, %r15
jmp 0x6c8fe
leaq 0x40(%rsp), %rdi
leaq 0xd4(%rsp), %rdx
callq 0x715f4
movq %rbx, %r15
addq $0x20, %rbp
cmpq 0xb0(%rsp), %rbp
jne 0x6c7fc
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
callq 0x31a9e
movq -0x28(%rbx), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x6c941
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6c987
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6c987
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x6fa52
jmp 0x6d048
leaq 0x40(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x6fa52
leaq 0x80(%rsp), %rdi
movl 0x1c(%rsp), %esi
callq 0xbee9e
leaq 0x260(%rsp), %rdi
leaq 0x80(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x90(%rsp), %rbp
cmpq %rbp, %rdi
je 0x6c9d0
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%r15), %rbx
cmpq 0x8(%r15), %rbx
je 0x6c9ef
leaq 0x288(%rsp), %rdi
movq %rbx, %rsi
callq 0x31d52
addq $0x20, %rbx
jmp 0x6c9d3
leaq 0x1f0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x260(%rsp), %rsi
movq 0x268(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x32180
movq 0x280(%rsp), %rax
leaq 0x208(%rsp), %rbx
movq %rax, -0x8(%rbx)
movq %rbx, %rdi
leaq 0x288(%rsp), %rsi
callq 0x47a3e
leaq 0x80(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
callq 0x6d766
movq %rbx, %rdi
callq 0x31a9e
movq 0x1e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6ca79
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %r14
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6cafd
movq 0x1094fe(%rip), %rdi    # 0x175f90
leaq 0x8eeac(%rip), %rsi     # 0xfb945
movl $0x1c, %edx
callq 0x22ab0
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq 0x1094d6(%rip), %rdi    # 0x175f90
callq 0x22ab0
movq %rax, %rbx
leaq 0x8723a(%rip), %rsi     # 0xf3d03
movl $0x1, %edx
movq %rax, %rdi
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x40(%rsp), %r15
cmpq 0x48(%rsp), %r15
je 0x6cf23
movq 0x10943c(%rip), %r13    # 0x175f50
movq 0x109475(%rip), %r12    # 0x175f90
movq %r13, %rdi
leaq 0xd8(%rsp), %rsi
callq 0x22b00
movl 0x18(%rsp), %eax
cmpl 0xd8(%rsp), %eax
jge 0x6ced3
movq 0x50(%r14), %rax
movl 0x1614(%rax), %eax
cmpb $0x0, 0xc4(%rsp)
je 0x6cc84
cmpl $0x3, %eax
jb 0x6cbc6
movl $0x1d, %edx
movq %r12, %rdi
leaq 0x8edfa(%rip), %rsi     # 0xfb962
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x9411a(%rip), %rsi     # 0x100ca5
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x80(%rsp), %rdi
movl 0x88(%rsp), %esi
movl 0x18(%rsp), %ecx
movq 0x109350(%rip), %rdx    # 0x175f30
movl 0x1c(%rsp), %r8d
movq %r13, %r9
callq 0x22300
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6ced3
movl $0x10, %edx
movq %r12, %rdi
leaq 0x8ed62(%rip), %rsi     # 0xfb96f
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x94075(%rip), %rsi     # 0x100ca5
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0xa, %edx
movq %rax, %rdi
leaq 0x8ed2d(%rip), %rsi     # 0xfb980
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x6ced3
cmpl $0x3, %eax
jb 0x6ccf6
movl $0x21, %edx
movq %r12, %rdi
leaq 0x8ecf3(%rip), %rsi     # 0xfb98b
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x93fea(%rip), %rsi     # 0x100ca5
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x80(%rsp), %rdi
movl 0x88(%rsp), %esi
movl 0x18(%rsp), %ecx
movq 0x109220(%rip), %rdx    # 0x175f30
movl 0x1c(%rsp), %r8d
movq %r13, %r9
callq 0x22300
movq 0x50(%r14), %rcx
cmpl $0x3, 0x1614(%rcx)
jb 0x6ced3
testl %eax, %eax
je 0x6cd63
movl $0x19, %edx
movq %r12, %rdi
leaq 0x8ec8f(%rip), %rsi     # 0xfb9d0
callq 0x22ab0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x22940
movq %r12, %rbx
jmp 0x6ce3f
movl $0x5, %edx
movq %r12, %rdi
leaq 0x8ec3b(%rip), %rsi     # 0xfb9ad
callq 0x22ab0
movl 0xc8(%rsp), %esi
movq %r12, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0x11, %edx
movq %rax, %rdi
leaq 0x8ec1b(%rip), %rsi     # 0xfb9b3
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0x8eb70(%rip), %rsi     # 0xfb92b
callq 0x22ab0
movq %rbx, %rdi
movl 0x1c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0xa, %edx
movq %rax, %rdi
leaq 0x8ebe7(%rip), %rsi     # 0xfb9c5
callq 0x22ab0
movq 0x80(%rsp), %r14
testq %r14, %r14
je 0x6ce0d
movq %r14, %rdi
callq 0x223a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x22ab0
movq 0x20(%rsp), %r14
jmp 0x6ce2b
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x23180
movq 0x20(%rsp), %r14
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl $0x14, %edx
movq %r12, %rdi
leaq 0x8eb37(%rip), %rsi     # 0xfb998
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x93e21(%rip), %rsi     # 0x100ca5
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0xa, %edx
movq %rax, %rdi
leaq 0x8ead9(%rip), %rsi     # 0xfb980
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
addq $0x4, %r15
cmpq 0x48(%rsp), %r15
jne 0x6cb1b
jmp 0x6cf23
movq %rax, %rbx
cmpl $0x1, %edx
jne 0x6d6d3
movq %rbx, %rdi
callq 0x22360
movq (%rax), %rcx
movq %rax, %rdi
callq *0x10(%rcx)
movq %r12, %rdi
movq %rax, %rsi
callq 0x22960
movq %rax, %rdi
callq 0x22430
callq 0x230b0
movq 0x20(%rsp), %r14
jmp 0x6cbed
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6cf40
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x288(%rsp), %rdi
callq 0x31a9e
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6cf72
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x6d3d0
movq 0x50(%rsp), %rsi
jmp 0x6d3c8
xorl %ebx, %ebx
movq 0x108ffd(%rip), %rdi    # 0x175f90
leaq 0x8ea98(%rip), %rsi     # 0xfba32
movl $0xe, %edx
callq 0x22ab0
movq 0x108fe5(%rip), %rdi    # 0x175f90
movl %ebx, %esi
callq 0x231e0
movq %rax, %rbx
leaq 0x8ea85(%rip), %rsi     # 0xfba41
movl $0x13, %edx
movq %rax, %rdi
callq 0x22ab0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbx, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0x100(%rsp), %rbx
movq %rbx, %rdi
callq 0x31a9e
movq -0x28(%rbx), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
movl 0x2c(%rsp), %ebp
movq 0x118(%rsp), %r15
je 0x6d02d
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6d048
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x260(%rsp), %rdi
movl 0x1c(%rsp), %esi
callq 0xbee9e
leaq 0x80(%rsp), %rdi
leaq 0x260(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6d091
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%r15), %rbx
cmpq 0x8(%r15), %rbx
je 0x6d0b0
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x31d52
addq $0x20, %rbx
jmp 0x6d094
movl 0x690(%rsp), %ebx
cmpl $-0x1, %ebx
jne 0x6d0c3
callq 0x22230
movl %eax, %ebx
movl %ebx, 0xa0(%rsp)
leaq 0x170(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
leaq 0x160(%rsp), %rdi
callq 0x32180
movq 0xa0(%rsp), %rax
leaq 0x188(%rsp), %r12
movq %rax, -0x8(%r12)
movq %r12, %rdi
leaq 0xa8(%rsp), %rsi
callq 0x47a3e
leaq 0x260(%rsp), %rdi
leaq 0x160(%rsp), %rdx
callq 0x6d766
movq %r12, %rdi
callq 0x31a9e
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d155
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x229c0
cmpq $0x3e9, 0x268(%rsp) # imm = 0x3E9
movq 0x20(%rsp), %r14
jae 0x6d412
movq 0x60(%rsp), %r12
cmpq 0x68(%rsp), %r12
je 0x6d362
leaq 0x18(%r14), %r13
movl $0x4, %edx
movq 0x108e04(%rip), %rdi    # 0x175f90
leaq 0x8e8c2(%rip), %rsi     # 0xfba55
callq 0x22ab0
movq 0x108df1(%rip), %rdi    # 0x175f90
movl %ebp, %esi
callq 0x231e0
movq %rax, %rbp
movl $0x9, %edx
movq %rax, %rdi
leaq 0x8e8a2(%rip), %rsi     # 0xfba5a
callq 0x22ab0
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq %rbp, %rdi
callq 0x22ab0
movq %rax, %rbp
movl $0x4, %edx
movq %rax, %rdi
leaq 0x93abe(%rip), %rsi     # 0x100ca5
callq 0x22ab0
movl (%r12), %esi
movq %rbp, %rdi
callq 0x231e0
movq %rax, %rbp
movl $0x7, %edx
movq %rax, %rdi
leaq 0x8e85a(%rip), %rsi     # 0xfba64
callq 0x22ab0
movq 0x260(%rsp), %rsi
movq 0x268(%rsp), %rdx
movq %rbp, %rdi
callq 0x22ab0
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %rbp, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movslq (%r12), %rax
movq 0x68(%r14), %rcx
movq (%rcx,%rax,8), %r15
movq 0x260(%rsp), %rbp
movq 0x268(%rsp), %r14
movl $0xfffffffe, 0x30(%rsp) # imm = 0xFFFFFFFE
movabsq $0x7ffffffffffffffe, %rax # imm = 0x7FFFFFFFFFFFFFFE
movq %rax, 0xd8(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x71cf2
movq %r15, %rdi
movl $0x2, %esi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
leaq 0x40(%rsp), %r9
callq 0x716d0
testb %al, %al
leaq 0x8e7aa(%rip), %rsi     # 0xfba6c
leaq 0x8e7d0(%rip), %rax     # 0xfba99
cmovneq %rax, %rsi
movl $0x2c, %edx
movl $0x17, %eax
cmovneq %rax, %rdx
movq 0x108cae(%rip), %rdi    # 0x175f90
callq 0x22ab0
movq 0x108ca2(%rip), %rcx    # 0x175f90
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x108c84(%rip), %rdi    # 0x175f90
callq 0x22050
movq %rax, %rdi
callq 0x22660
cmpb $0x0, 0xc4(%rsp)
movl 0x2c(%rsp), %ebp
movq 0x20(%rsp), %r14
je 0x6d353
movl 0x18(%rsp), %edx
movl %ebx, 0x8(%rsp)
movl $0x0, (%rsp)
movq %r14, %rdi
movl %ebp, %esi
movl 0x1c(%rsp), %ecx
xorl %r8d, %r8d
movq %r13, %r9
callq 0x6da7e
testl %eax, %eax
jne 0x6d32c
addq $0x4, %r12
cmpq 0x68(%rsp), %r12
jne 0x6d180
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6d387
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xa8(%rsp), %rdi
callq 0x31a9e
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x6d3b9
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x6d3d0
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
addq $0x658, %rsp            # imm = 0x658
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x85368(%rip), %rdi     # 0xf2751
callq 0x225a0
leaq 0x8535c(%rip), %rdi     # 0xf2751
callq 0x22e40
leaq 0x85350(%rip), %rdi     # 0xf2751
callq 0x225a0
leaq 0x85344(%rip), %rdi     # 0xf2751
callq 0x22e40
movq 0x108b77(%rip), %rdi    # 0x175f90
leaq 0x8e5ca(%rip), %rsi     # 0xfb9ea
movl $0x22, %edx
callq 0x22ab0
movq 0x268(%rsp), %rsi
movq 0x108b57(%rip), %rdi    # 0x175f90
callq 0x22650
movq %rax, %rbx
leaq 0x8e5c5(%rip), %rsi     # 0xfba0d
movl $0x24, %edx
movq %rax, %rdi
callq 0x22ab0
movq %rbx, %rdi
callq 0x22430
jmp 0x6d4a7
movq 0x108b2a(%rip), %rdi    # 0x175f90
leaq 0x8e57d(%rip), %rsi     # 0xfb9ea
movl $0x22, %edx
callq 0x22ab0
movq 0x48(%rsp), %rsi
movq 0x108b0d(%rip), %rdi    # 0x175f90
callq 0x22650
movq %rax, %rbx
leaq 0x8e57b(%rip), %rsi     # 0xfba0d
movl $0x24, %edx
movq %rax, %rdi
callq 0x22ab0
movq %rbx, %rdi
callq 0x22430
callq 0x22540
jmp 0x6d6d0
movq %rax, %rbx
callq 0x230b0
jmp 0x6d6d3
movq %rax, %rdi
callq 0x318ef
jmp 0x6d6c9
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d6a9
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6d6a9
jmp 0x6d63d
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d67d
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6d67d
jmp 0x6d636
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
jmp 0x6d5b7
movq %rax, %rbx
movq 0x220(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d6f0
movq 0x230(%rsp), %rsi
jmp 0x6d6e8
jmp 0x6d6c4
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
jmp 0x6d5f7
jmp 0x6d6c4
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d73a
movq 0x1b0(%rsp), %rsi
jmp 0x6d732
jmp 0x6d6c9
jmp 0x6d6c9
jmp 0x6d63d
jmp 0x6d636
jmp 0x6d712
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0x6f078
jmp 0x6d6f0
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d6f0
movq 0x1f0(%rsp), %rsi
jmp 0x6d6e8
jmp 0x6d6c4
jmp 0x6d6c4
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x6f078
jmp 0x6d73a
movq %rax, %rbx
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d73a
movq 0x170(%rsp), %rsi
jmp 0x6d732
jmp 0x6d6c9
jmp 0x6d6c9
jmp 0x6d62e
movq %rax, %rbx
jmp 0x6d6fd
movq %rax, %rbx
jmp 0x6d67d
jmp 0x6d63d
movq %rax, %rbx
jmp 0x6d6a9
jmp 0x6d646
jmp 0x6d699
movq %rax, %rbx
jmp 0x6d670
jmp 0x6d6d0
jmp 0x6d6c4
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x6d69c
movl %r15d, (%r13)
jmp 0x6d69c
movq %rax, %rbx
cmpl $0x0, (%r12)
jne 0x6d670
movl %ebp, (%r12)
leaq 0xd8(%rsp), %rdi
callq 0x6f078
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6d73a
movq 0x50(%rsp), %rsi
jmp 0x6d732
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x6f078
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6d6f0
movq 0xe8(%rsp), %rsi
jmp 0x6d6e8
movq %rax, %rbx
jmp 0x6d6f0
movq %rax, %rbx
jmp 0x6d73a
jmp 0x6d6d0
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6d6f0
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x260(%rsp), %rdi
callq 0x6f078
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x6d75e
movq 0x50(%rsp), %rsi
jmp 0x6d756
jmp 0x6d712
jmp 0x6d712
movq %rax, %rbx
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6d73a
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x80(%rsp), %rdi
callq 0x6f078
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x6d75e
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movq %rbx, %rdi
callq 0x23240