// File: /workspace/github_cpp_makefile_star2_O3/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, 0xac(%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 0x6bcb0
movq %rdi, %r14
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq 0x10a44b(%rip), %rdi    # 0x175f68
leaq 0xc8(%rsp), %rsi
callq 0x22dc0
movq 0x10a437(%rip), %rdi    # 0x175f68
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 0x6bfe4
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6bc8c
movq 0x10a420(%rip), %rdi    # 0x175fa8
leaq 0x8fd53(%rip), %rsi     # 0xfb8e2
movl $0x1a, %edx
callq 0x22ab0
movq 0x10a408(%rip), %rdi    # 0x175fa8
movl %ebp, %esi
callq 0x231e0
movq %rax, %rbx
leaq 0x8fd4c(%rip), %rsi     # 0xfb8fd
movl $0xd, %edx
movq %rax, %rdi
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
leaq 0x8fd37(%rip), %rsi     # 0xfb90b
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 0x10a38a(%rip), %rdi    # 0x175fa8
leaq 0x8fced(%rip), %rsi     # 0xfb912
movl $0xc, %edx
callq 0x22ab0
movq 0x10a372(%rip), %rdi    # 0x175fa8
movl 0x1c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
leaq 0x8fcd6(%rip), %rsi     # 0xfb91f
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 0x6c466
movl 0x18(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%rsp)
jmp 0x6c475
xorps %xmm0, %xmm0
movaps %xmm0, 0xb0(%rsp)
xorl %eax, %eax
movq %rax, 0xc0(%rsp)
leaq 0x78(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
leaq 0x90(%rsp), %rcx
movups %xmm0, (%rcx)
movq %rax, 0x10(%rcx)
movl %ebp, -0x4(%rcx)
cmpl $-0x1, %edx
je 0x6bd05
leaq 0xb0(%rsp), %rdi
leaq 0x18(%rsp), %rdx
xorl %esi, %esi
callq 0x6f53c
jmp 0x6cb0c
leaq 0x260(%rsp), %rdi
movl $0xb, %esi
callq 0xbe584
leaq 0x68(%rsp), %rdi
leaq 0x260(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6bd4c
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x1b0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1a0(%rsp), %rdi
callq 0x3213c
movq 0x88(%rsp), %rax
leaq 0x1c8(%rsp), %rbx
movq %rax, -0x8(%rbx)
movq %rbx, %rdi
leaq 0x90(%rsp), %rsi
callq 0x47812
leaq 0x40(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x6d218
movq %rbx, %rdi
callq 0x31a0a
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6bdcd
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x48(%rsp), %rbx
cmpq $0x3e9, %rbx            # imm = 0x3E9
jae 0x6cf1a
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 0x7173e
leaq 0xd8(%rsp), %r9
movq %r13, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %rbx, %rcx
xorl %r8d, %r8d
callq 0x71132
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 0x7173e
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 0x71dae
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 0x321d2
leaq 0xd8(%rsp), %rdi
leaq 0x120(%rsp), %rdx
movq 0x20(%rsp), %rsi
callq 0x6d2f8
movq %r15, 0x118(%rsp)
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x6bf15
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x100(%rsp), %r15
cmpq 0x108(%rsp), %r15
je 0x6ca4e
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 0x6ce9d
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x6cea9
movl (%r12), %ecx
cmpl $0x22, %ecx
je 0x6cea9
testl %ecx, %ecx
jne 0x6bf93
movl %ebp, (%r12)
movl %eax, 0x3c(%rsp)
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0x6bfb9
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xb8(%rsp)
jmp 0x6bfcb
leaq 0xb0(%rsp), %rdi
leaq 0x3c(%rsp), %rdx
callq 0x71056
incl %ebx
addq $0x20, %r15
cmpq 0x108(%rsp), %r15
jne 0x6bf3a
jmp 0x6ca50
leaq 0x68(%rsp), %rdi
movl $0xb, %esi
callq 0xbe584
leaq 0x260(%rsp), %rdi
leaq 0x68(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x6c022
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c075
movq 0x109f72(%rip), %rbx    # 0x175fa8
leaq 0x8f809(%rip), %rsi     # 0xfb846
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 0x109f40(%rip), %rdi    # 0x175fa8
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 0x3213c
movq 0x280(%rsp), %rax
leaq 0x248(%rsp), %rbx
movq %rax, -0x8(%rbx)
movq %rbx, %rdi
leaq 0x288(%rsp), %rsi
callq 0x47812
leaq 0xd8(%rsp), %rdi
leaq 0x220(%rsp), %rdx
callq 0x6d218
movq %rbx, %rdi
callq 0x31a0a
movq 0x220(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c0ff
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %rax
movq 0x50(%rax), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c16f
movq 0x109e90(%rip), %rdi    # 0x175fa8
leaq 0x8f751(%rip), %rsi     # 0xfb870
movl $0x39, %edx
callq 0x22ab0
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
movq 0x109e68(%rip), %rdi    # 0x175fa8
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 0x109dc3(%rip), %rdx    # 0x175f48
movq 0x109ddc(%rip), %r9     # 0x175f68
xorl %ecx, %ecx
movl $0xb, %r8d
callq 0x22300
movq 0x109dc8(%rip), %rdx    # 0x175f68
leaq 0xb0(%rsp), %rcx
xorl %edi, %edi
xorl %esi, %esi
callq 0x222c0
movq 0x109df8(%rip), %rsi    # 0x175fb0
leaq 0xb0(%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 0x109d5f(%rip), %rdx    # 0x175f48
movq 0x109d78(%rip), %r9     # 0x175f68
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 0x6c27e
movq 0x109d83(%rip), %rdi    # 0x175fa8
leaq 0x8f67e(%rip), %rsi     # 0xfb8aa
movl $0x25, %edx
callq 0x22ab0
movq %rbx, %rdi
callq 0x223a0
movq 0x109d63(%rip), %r14    # 0x175fa8
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 0x109d37(%rip), %rdi    # 0x175fa8
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 0x321d2
leaq 0x68(%rsp), %rdi
leaq 0x140(%rsp), %rdx
movq 0x20(%rsp), %rsi
callq 0x6d2f8
movq 0x140(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c2dc
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x229c0
movq %rbx, %rdi
callq 0x22c60
movq 0x90(%rsp), %rbp
cmpq 0x98(%rsp), %rbp
movq 0x20(%rsp), %r14
je 0x6c418
leaq 0x30(%rsp), %r12
movq %r15, %rbx
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c36a
movl $0x11, %edx
movq 0x109c88(%rip), %rdi    # 0x175fa8
leaq 0x8f5a9(%rip), %rsi     # 0xfb8d0
callq 0x22ab0
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x109c6d(%rip), %rdi    # 0x175fa8
callq 0x22ab0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r13, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq (%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 0x6ceb5
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x6cec1
movl (%r13), %ecx
cmpl $0x22, %ecx
je 0x6cec1
testl %ecx, %ecx
movq 0x20(%rsp), %r14
jne 0x6c3ce
movl %r15d, (%r13)
movl %eax, 0xd4(%rsp)
movq 0x48(%rsp), %rsi
cmpq 0x50(%rsp), %rsi
je 0x6c3f1
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%rsp)
movq %rbx, %r15
jmp 0x6c406
leaq 0x40(%rsp), %rdi
leaq 0xd4(%rsp), %rdx
callq 0x71056
movq %rbx, %r15
addq $0x20, %rbp
cmpq 0x98(%rsp), %rbp
jne 0x6c304
leaq 0x90(%rsp), %rbx
movq %rbx, %rdi
callq 0x31a0a
movq -0x28(%rbx), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x6c443
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6c475
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6c475
leaq 0x40(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x6f53c
leaq 0x68(%rsp), %rdi
movl 0x1c(%rsp), %esi
callq 0xbe584
leaq 0x260(%rsp), %rdi
leaq 0x68(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x78(%rsp), %rbp
cmpq %rbp, %rdi
je 0x6c4b2
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%r15), %rbx
cmpq 0x8(%r15), %rbx
je 0x6c4d1
leaq 0x288(%rsp), %rdi
movq %rbx, %rsi
callq 0x31cec
addq $0x20, %rbx
jmp 0x6c4b5
leaq 0x1f0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x260(%rsp), %rsi
movq 0x268(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x3213c
movq 0x280(%rsp), %rax
leaq 0x208(%rsp), %rbx
movq %rax, -0x8(%rbx)
movq %rbx, %rdi
leaq 0x288(%rsp), %rsi
callq 0x47812
leaq 0x68(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
callq 0x6d218
movq %rbx, %rdi
callq 0x31a0a
movq 0x1e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c558
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x20(%rsp), %r14
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c5d6
movq 0x109a37(%rip), %rdi    # 0x175fa8
leaq 0x8f3ad(%rip), %rsi     # 0xfb925
movl $0x1c, %edx
callq 0x22ab0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x109a15(%rip), %rdi    # 0x175fa8
callq 0x22ab0
movq %rax, %rbx
leaq 0x87715(%rip), %rsi     # 0xf3cb7
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 0x6c9ed
movq 0x10997b(%rip), %r13    # 0x175f68
movq 0x1099b4(%rip), %r12    # 0x175fa8
movq %r13, %rdi
leaq 0xd8(%rsp), %rsi
callq 0x22b00
movl 0x18(%rsp), %ecx
cmpl 0xd8(%rsp), %ecx
jge 0x6c99d
movq 0x50(%r14), %rax
movl 0x1614(%rax), %eax
cmpb $0x0, 0xac(%rsp)
je 0x6c757
cmpl $0x3, %eax
jb 0x6c6a3
movl $0x1d, %edx
movq %r12, %rdi
leaq 0x8f301(%rip), %rsi     # 0xfb942
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x94628(%rip), %rsi     # 0x100c8c
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
movl 0x18(%rsp), %ecx
movq 0x68(%rsp), %rdi
movl 0x70(%rsp), %esi
movq 0x109895(%rip), %rdx    # 0x175f48
movl 0x1c(%rsp), %r8d
movq %r13, %r9
callq 0x22300
movq 0x50(%r14), %rax
cmpl $0x3, 0x1614(%rax)
jb 0x6c99d
movl $0x10, %edx
movq %r12, %rdi
leaq 0x8f26f(%rip), %rsi     # 0xfb94f
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x94589(%rip), %rsi     # 0x100c8c
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0xa, %edx
movq %rax, %rdi
leaq 0x8f23a(%rip), %rsi     # 0xfb960
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 0x6c99d
cmpl $0x3, %eax
jb 0x6c7cd
movl $0x21, %edx
movq %r12, %rdi
leaq 0x8f200(%rip), %rsi     # 0xfb96b
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x944fe(%rip), %rsi     # 0x100c8c
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
movl 0x18(%rsp), %ecx
movq 0x68(%rsp), %rdi
movl 0x70(%rsp), %esi
movq 0x10976b(%rip), %rdx    # 0x175f48
movl 0x1c(%rsp), %r8d
movq %r13, %r9
callq 0x22300
movq 0x50(%r14), %rcx
cmpl $0x3, 0x1614(%rcx)
jb 0x6c99d
testl %eax, %eax
je 0x6c830
movl $0x19, %edx
movq %r12, %rdi
leaq 0x8f1a2(%rip), %rsi     # 0xfb9b0
callq 0x22ab0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x22940
movq %r12, %rbx
jmp 0x6c909
movl $0x5, %edx
movq %r12, %rdi
leaq 0x8f14e(%rip), %rsi     # 0xfb98d
callq 0x22ab0
movl 0xc8(%rsp), %esi
movq %r12, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0x11, %edx
movq %rax, %rdi
leaq 0x8f12e(%rip), %rsi     # 0xfb993
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0x8f083(%rip), %rsi     # 0xfb90b
callq 0x22ab0
movq %rbx, %rdi
movl 0x1c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0xa, %edx
movq %rax, %rdi
leaq 0x8f0fa(%rip), %rsi     # 0xfb9a5
callq 0x22ab0
movq 0x68(%rsp), %r14
testq %r14, %r14
je 0x6c8d7
movq %r14, %rdi
callq 0x223a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x22ab0
movq 0x20(%rsp), %r14
jmp 0x6c8f5
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 0x8f04d(%rip), %rsi     # 0xfb978
callq 0x22ab0
movq %r12, %rdi
movl 0x2c(%rsp), %esi
callq 0x231e0
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x9433e(%rip), %rsi     # 0x100c8c
callq 0x22ab0
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0x231e0
movq %rax, %rbx
movl $0xa, %edx
movq %rax, %rdi
leaq 0x8efef(%rip), %rsi     # 0xfb960
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 0x6c5f4
jmp 0x6c9ed
movq %rax, %rbx
cmpl $0x1, %edx
jne 0x6d188
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 0x6c6c0
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6ca04
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x288(%rsp), %rdi
callq 0x31a0a
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6ca36
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x6ce8b
movq 0x50(%rsp), %rsi
jmp 0x6ce83
xorl %ebx, %ebx
movq 0x109551(%rip), %rdi    # 0x175fa8
leaq 0x8efb4(%rip), %rsi     # 0xfba12
movl $0xe, %edx
callq 0x22ab0
movq 0x109539(%rip), %rdi    # 0x175fa8
movl %ebx, %esi
callq 0x231e0
movq %rax, %rbx
leaq 0x8efa1(%rip), %rsi     # 0xfba21
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 0x31a0a
movq -0x28(%rbx), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
movl 0x2c(%rsp), %ebp
movq 0x118(%rsp), %r15
je 0x6caf1
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6cb0c
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x260(%rsp), %rdi
movl 0x1c(%rsp), %esi
callq 0xbe584
leaq 0x68(%rsp), %rdi
leaq 0x260(%rsp), %rbx
movq %rbx, %rsi
callq 0x22bb0
movq (%rbx), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6cb52
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
movq (%r15), %rbx
cmpq 0x8(%r15), %rbx
je 0x6cb71
leaq 0x90(%rsp), %rdi
movq %rbx, %rsi
callq 0x31cec
addq $0x20, %rbx
jmp 0x6cb55
movl 0x690(%rsp), %ebx
cmpl $-0x1, %ebx
jne 0x6cb84
callq 0x22230
movl %eax, %ebx
movl %ebx, 0x88(%rsp)
leaq 0x170(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
leaq 0x160(%rsp), %rdi
callq 0x3213c
movq 0x88(%rsp), %rax
leaq 0x188(%rsp), %r12
movq %rax, -0x8(%r12)
movq %r12, %rdi
leaq 0x90(%rsp), %rsi
callq 0x47812
leaq 0x260(%rsp), %rdi
leaq 0x160(%rsp), %rdx
callq 0x6d218
movq %r12, %rdi
callq 0x31a0a
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x6cc10
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x229c0
cmpq $0x3e9, 0x268(%rsp) # imm = 0x3E9
movq 0x20(%rsp), %r14
jae 0x6cecd
movq 0xb0(%rsp), %r12
cmpq 0xb8(%rsp), %r12
je 0x6ce20
leaq 0x18(%r14), %r13
movl $0x4, %edx
movq 0x10935b(%rip), %rdi    # 0x175fa8
leaq 0x8ede1(%rip), %rsi     # 0xfba35
callq 0x22ab0
movq 0x109348(%rip), %rdi    # 0x175fa8
movl %ebp, %esi
callq 0x231e0
movq %rax, %rbp
movl $0x9, %edx
movq %rax, %rdi
leaq 0x8edc1(%rip), %rsi     # 0xfba3a
callq 0x22ab0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %rbp, %rdi
callq 0x22ab0
movq %rax, %rbp
movl $0x4, %edx
movq %rax, %rdi
leaq 0x93fea(%rip), %rsi     # 0x100c8c
callq 0x22ab0
movl (%r12), %esi
movq %rbp, %rdi
callq 0x231e0
movq %rax, %rbp
movl $0x7, %edx
movq %rax, %rdi
leaq 0x8ed7f(%rip), %rsi     # 0xfba44
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 0x7173e
movq %r15, %rdi
movl $0x2, %esi
movq %rbp, %rdx
movq %r14, %rcx
xorl %r8d, %r8d
leaq 0x40(%rsp), %r9
callq 0x71132
testb %al, %al
leaq 0x8eccf(%rip), %rsi     # 0xfba4c
leaq 0x8ecf5(%rip), %rax     # 0xfba79
cmovneq %rax, %rsi
movl $0x2c, %edx
movl $0x17, %eax
cmovneq %rax, %rdx
movq 0x10920b(%rip), %rdi    # 0x175fa8
callq 0x22ab0
movq 0x1091ff(%rip), %rcx    # 0x175fa8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq 0x1091e1(%rip), %rdi    # 0x175fa8
callq 0x22050
movq %rax, %rdi
callq 0x22660
cmpb $0x0, 0xac(%rsp)
movl 0x2c(%rsp), %ebp
movq 0x20(%rsp), %r14
je 0x6ce0e
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 0x6d52e
testl %eax, %eax
jne 0x6cde7
addq $0x4, %r12
cmpq 0xb8(%rsp), %r12
jne 0x6cc41
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6ce45
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x90(%rsp), %rdi
callq 0x31a0a
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x6ce6e
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x6ce8b
movq 0xc0(%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 0x8588d(%rip), %rdi     # 0xf2731
callq 0x225a0
leaq 0x85881(%rip), %rdi     # 0xf2731
callq 0x22e40
leaq 0x85875(%rip), %rdi     # 0xf2731
callq 0x225a0
leaq 0x85869(%rip), %rdi     # 0xf2731
callq 0x22e40
movq 0x1090d4(%rip), %rdi    # 0x175fa8
leaq 0x8eaef(%rip), %rsi     # 0xfb9ca
movl $0x22, %edx
callq 0x22ab0
movq 0x268(%rsp), %rsi
movq 0x1090b4(%rip), %rdi    # 0x175fa8
callq 0x22650
movq %rax, %rbx
leaq 0x8eaea(%rip), %rsi     # 0xfb9ed
movl $0x24, %edx
movq %rax, %rdi
callq 0x22ab0
movq %rbx, %rdi
callq 0x22430
jmp 0x6cf62
movq 0x109087(%rip), %rdi    # 0x175fa8
leaq 0x8eaa2(%rip), %rsi     # 0xfb9ca
movl $0x22, %edx
callq 0x22ab0
movq 0x48(%rsp), %rsi
movq 0x10906a(%rip), %rdi    # 0x175fa8
callq 0x22650
movq %rax, %rbx
leaq 0x8eaa0(%rip), %rsi     # 0xfb9ed
movl $0x24, %edx
movq %rax, %rdi
callq 0x22ab0
movq %rbx, %rdi
callq 0x22430
callq 0x22540
jmp 0x6d185
movq %rax, %rbx
callq 0x230b0
jmp 0x6d188
movq %rax, %rdi
callq 0x3185b
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d15e
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6d15e
jmp 0x6d0f8
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d135
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x6d135
jmp 0x6d0f1
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
jmp 0x6d072
movq %rax, %rbx
movq 0x220(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d19f
movq 0x230(%rsp), %rsi
jmp 0x6d197
jmp 0x6d179
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
jmp 0x6d0b2
jmp 0x6d179
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d1e9
movq 0x1b0(%rsp), %rsi
jmp 0x6d1e1
jmp 0x6d17e
jmp 0x6d17e
jmp 0x6d17e
jmp 0x6d0f8
jmp 0x6d0f1
jmp 0x6d1c1
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0x6eb5e
jmp 0x6d19f
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d19f
movq 0x1f0(%rsp), %rsi
jmp 0x6d197
jmp 0x6d179
jmp 0x6d179
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x6eb5e
jmp 0x6d1e9
movq %rax, %rbx
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x6d1e9
movq 0x170(%rsp), %rsi
jmp 0x6d1e1
jmp 0x6d17e
jmp 0x6d17e
jmp 0x6d0e9
movq %rax, %rbx
jmp 0x6d1ac
movq %rax, %rbx
jmp 0x6d135
jmp 0x6d0f8
movq %rax, %rbx
jmp 0x6d15e
jmp 0x6d101
jmp 0x6d151
movq %rax, %rbx
jmp 0x6d128
jmp 0x6d185
jmp 0x6d179
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x6d154
movl %r15d, (%r13)
jmp 0x6d154
movq %rax, %rbx
cmpl $0x0, (%r12)
jne 0x6d128
movl %ebp, (%r12)
leaq 0xd8(%rsp), %rdi
callq 0x6eb5e
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6d1e9
movq 0x50(%rsp), %rsi
jmp 0x6d1e1
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x6eb5e
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6d19f
movq 0xe8(%rsp), %rsi
jmp 0x6d197
movq %rax, %rbx
jmp 0x6d19f
movq %rax, %rbx
jmp 0x6d1e9
jmp 0x6d185
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6d19f
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x260(%rsp), %rdi
callq 0x6eb5e
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x6d210
movq 0x50(%rsp), %rsi
jmp 0x6d208
jmp 0x6d1c1
jmp 0x6d1c1
movq %rax, %rbx
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x6d1e9
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x68(%rsp), %rdi
callq 0x6eb5e
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x6d210
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x229c0
movq %rbx, %rdi
callq 0x23240