// File: /workspace/github_cpp_makefile_star2_O3/richardposner[P]BioNetFit2/src/code/Swarm.cpp
// Function: Swarm::consolidate_model_params()
void Swarm::consolidate_model_params(){

	if(options.verbosity>=1){
		cout<<"consolidating " << this->getNumModels()<<" models."<<endl;
	}

	//Raquel: commented, unnecessary
	/*if (options.models.size() <1){
		if(options.verbosity >= 3) cout<<"No need to consolidate models. Less than two models exist"<<endl;
		return;
	}
 *
 * Bug Note by Raquel
 * There was a bug in the consolidation function bellow
 * When you have more then 2 models that share equal paramaters, the command:
 * delete options.models.at(j)->freeParams_[fj->first];
 * will try to delete the free parameter from the list more then once
 * this will cause an error of memory access violation
 * I solved this problem by creating a new map containing only the unique parameters
 */



	map<string,FreeParam*> uniqueList;
	int uniqueIndex = 0;
	//remove dulicate free parameters
	unsigned int i,j, k, cnt=0;


	if(options.models.size() > 1 ){

	for (i=0; i <options.models.size(); i++){  //k-1 first models
		//cout << "in the first loop" << endl;
		for (j=i+1; j <options.models.size(); j++){  //the subsequent model to the end
			//cout << "in the second loop" << endl;
			for (auto fi=options.models.at(i)->freeParams_.begin(); fi!=options.models.at(i)->freeParams_.end(); ++fi){
				//cout << "in the thrid loop" << endl;
				for (auto fj=options.models.at(j)->freeParams_.begin(); fj!=options.models.at(j)->freeParams_.end(); ++fj){
					//cout << "in the fourth loop" << endl;
					if(fi->first.compare(fj->first)==0){  //common free parameters
						//cout << "in the if if the fourth loop" << endl;
						cnt++;
						if(options.verbosity >= 4)
							cout<<"Common free parameters found.  Param:"<< fi->first <<"  model1:" <<options.models.at(i)->getName() <<"   model2:" << options.models.at(j)->getName() <<endl;
						//cout << "before deleting" << endl;

						if ( uniqueList.find(fj->first) == uniqueList.end() ) {
							cout << fj->first << endl;
							//delete options.models.at(j)->freeParams_[fj->first]; //delete free param objecyt in j
							uniqueList[fj->first] = fj->second;
							uniqueIndex++;
							//cout << "Found parameter " << fj->first << endl;
						  // found
						} else {
							  // not found
								//cout << "parameter already found: " << fj->first << endl;

						}
						//cout << "after delete" << endl;
						//options.models.at(j)->freeParams_[fj->first] = options.models.at(i)->freeParams_[fi->first];  //map to i
						fj->second = fi->second;
					}
				}
			}
		}
	}
	//cout << "Found " << uniqueIndex << " unique parameters" << endl;
	//Raquel changed the way that the function find unique parameters

	if(options.verbosity >= 3) cout<<"Removing duplicate free parameters is finished. "<<cnt<<" duplicate free parameters are deleted."<<endl;

	}else{

		uniqueList = options.models.at(0)->freeParams_;
	}



		for (i=0; i <options.models.size(); i++){
			options.models.at(i)->freeParams_ = uniqueList;
			if(options.verbosity >= 1){
				cout << "model " << i << " free parameters " << options.models.at(i)->freeParams_.size() << endl;
			}
		}


		options.freeParams_.clear(); cnt=0;
		options.freeParams_ = uniqueList;
		cnt = options.freeParams_.size();

	 //razi make full list of union of free parameters
	options.freeParams_.clear(); cnt=0;
	for (i=0; i <options.models.size(); i++){  //razi: all models, was k-1 first models, later test
		for (auto fi=options.models.at(i)->freeParams_.begin(); fi!=options.models.at(i)->freeParams_.end(); ++fi){
			if (options.freeParams_.count(fi->first) < 1){  //a new free parameters
				options.freeParams_.insert(make_pair(fi->first, fi->second)); cnt++;
				if(options.verbosity >= 3) cout<<"Free parameter:"<<fi->first <<" is added to the list"<<endl;
			}
		}
	}


	if(options.verbosity >= 3) cout<<"Free parameters found:"<< cnt << endl;


	//razi make mapping from models free parameters to the full list of free parameters


	std::map<unsigned int, unsigned int> dummay_map;
	for (i=0; i <options.models.size(); i++){  //razi: all models, was k-1 first models, later test
		j = 0;

		freeParamMapping.push_back(dummay_map);
		for (auto fj=options.models.at(i)->freeParams_.begin(); fj!=options.models.at(i)->freeParams_.end(); ++fj){
			k=0;
			for (auto fk=options.freeParams_.begin(); fk!=options.freeParams_.end(); ++fk){
//cout<<"Full List   FreeParam["<<k<<"] :" << fk->first<<endl; //mypause();
				if (fj->first == fk->first){
					freeParamMapping.at(i).insert(make_pair(j,k));
				}
				k++;
			}
			j++;
		}
	}


	if(options.verbosity >= 3)cout<<"Model consolidation is completed. "<<cnt<<" free parameters are found."<<endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rdi, %rbx
cmpl $0x0, 0x1614(%rdi)
je 0x777ec
movq 0xfe82a(%rip), %r14     # 0x175fa8
leaq 0x86cab(%rip), %rsi     # 0xfe430
movl $0xe, %edx
movq %r14, %rdi
callq 0x22ab0
movq 0x15c8(%rbx), %rax
subq 0x15c0(%rbx), %rax
shrq $0x3, %rax
movl %eax, %esi
movq %r14, %rdi
callq 0x22650
movq %rax, %r14
leaq 0x86f55(%rip), %rsi     # 0xfe70d
movl $0x8, %edx
movq %rax, %rdi
callq 0x22ab0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
leaq 0x80(%rsp), %rcx
movl $0x0, (%rcx)
xorl %eax, %eax
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
movq 0x15c0(%rbx), %r12
movq 0x15c8(%rbx), %rbp
movq %rbp, %rax
subq %r12, %rax
movq %rax, %rdx
sarq $0x3, %rdx
cmpq $0x2, %rdx
jb 0x77bfe
xorl %r14d, %r14d
cmpq %r12, %rbp
je 0x77b8a
movl $0x0, 0x10(%rsp)
movq %r14, %rsi
incl %r14d
movq %rbp, %rdx
subq %r12, %rdx
sarq $0x3, %rdx
cmpq %r14, %rdx
jbe 0x77b7c
movq %r14, %rax
movq %r14, 0x70(%rsp)
movq %rsi, 0x8(%rsp)
cmpq %rsi, %rdx
jbe 0x781e0
movq %rax, 0x48(%rsp)
movq %rbp, %rdx
subq %r12, %rdx
sarq $0x3, %rdx
cmpq %rsi, %rdx
jbe 0x7819f
movq (%r12,%rsi,8), %rax
movq 0x48(%rax), %rax
movq (%r12,%rsi,8), %rcx
addq $0x38, %rcx
cmpq %rcx, %rax
je 0x77b50
cmpq %r14, %rdx
jbe 0x781ad
movq %rax, (%rsp)
movq %rbp, %rdx
subq %r12, %rdx
sarq $0x3, %rdx
cmpq %r14, %rdx
jbe 0x78161
movq (%r12,%r14,8), %rax
movq 0x48(%rax), %r15
addq $0x38, %rax
cmpq %rax, %r15
je 0x77b2a
movq (%rsp), %rax
leaq 0x20(%rax), %r13
leaq 0x20(%r15), %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0x22060
testl %eax, %eax
jne 0x77aed
cmpl $0x4, 0x1614(%rbx)
jb 0x77a71
movl $0x25, %edx
movq 0xfe696(%rip), %rdi     # 0x175fa8
leaq 0x86b26(%rip), %rsi     # 0xfe43f
callq 0x22ab0
movq (%rsp), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
movq 0xfe677(%rip), %rdi     # 0x175fa8
callq 0x22ab0
movq %rax, %r12
movl $0x9, %edx
movq %rax, %rdi
leaq 0x86b1d(%rip), %rsi     # 0xfe465
callq 0x22ab0
movq 0x15c0(%rbx), %rax
movq 0x15c8(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movq 0x8(%rsp), %rsi
cmpq %rsi, %rdx
jbe 0x78172
movq (%rax,%rsi,8), %rax
leaq 0x28(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movq 0x68(%rax), %rsi
movq 0x70(%rax), %rdx
addq %rsi, %rdx
leaq 0x18(%rsp), %rdi
callq 0x3213c
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq %r12, %rdi
callq 0x22ab0
movq %rax, %r12
movl $0xa, %edx
movq %rax, %rdi
leaq 0x86ab8(%rip), %rsi     # 0xfe46f
callq 0x22ab0
movq 0x15c0(%rbx), %rax
movq 0x15c8(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r14, %rdx
jbe 0x78180
movq (%rax,%r14,8), %rax
leaq 0x60(%rsp), %rcx
movq %rcx, 0x50(%rsp)
movq 0x68(%rax), %rsi
movq 0x70(%rax), %rdx
addq %rsi, %rdx
leaq 0x50(%rsp), %rdi
callq 0x3213c
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq %r12, %rdi
callq 0x22ab0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r12, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x77a55
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x77a71
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x229c0
leaq 0x78(%rsp), %rdi
movq %rbp, %rsi
callq 0xadc60
leaq 0x80(%rsp), %rcx
cmpq %rcx, %rax
jne 0x77add
movq 0x20(%r15), %rsi
movq 0x28(%r15), %rdx
movq 0xfe50e(%rip), %rdi     # 0x175fa8
callq 0x22ab0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r12, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x40(%r15), %r12
leaq 0x78(%rsp), %rdi
movq %rbp, %rsi
callq 0xa73a6
movq %r12, (%rax)
incl 0x10(%rsp)
movq (%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0x40(%r15)
movq 0x15c0(%rbx), %r12
movq 0x15c8(%rbx), %rbp
movq %rbp, %rdx
subq %r12, %rdx
sarq $0x3, %rdx
cmpq %r14, %rdx
jbe 0x78161
movq %r15, %rdi
callq 0x22670
movq %rax, %r15
movq (%r12,%r14,8), %rax
addq $0x38, %rax
cmpq %rax, %r15
jne 0x778e2
movq (%rsp), %rdi
callq 0x22670
movq %rbp, %rdx
subq %r12, %rdx
sarq $0x3, %rdx
movq 0x8(%rsp), %rsi
cmpq %rsi, %rdx
ja 0x77894
jmp 0x7819f
movq 0x48(%rsp), %rax
incl %eax
movq %rbp, %rdx
subq %r12, %rdx
sarq $0x3, %rdx
movq %rax, %r14
cmpq %rax, %rdx
ja 0x7786b
movq %rbp, %rdx
subq %r12, %rdx
sarq $0x3, %rdx
movq 0x70(%rsp), %r14
cmpq %r14, %rdx
ja 0x77845
movl 0x10(%rsp), %r14d
cmpl $0x3, 0x1614(%rbx)
jb 0x77c1a
movq 0xfe40a(%rip), %rdi     # 0x175fa8
leaq 0x868d5(%rip), %rsi     # 0xfe47a
movl $0x30, %edx
callq 0x22ab0
movq 0xfe3f2(%rip), %rdi     # 0x175fa8
movq %r14, %rsi
callq 0x22650
movq %rax, %r14
leaq 0x868e3(%rip), %rsi     # 0xfe4ab
movl $0x27, %edx
movq %rax, %rdi
callq 0x22ab0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r14, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
jmp 0x77c1a
cmpq $0x8, %rax
jne 0x781ff
movq (%r12), %rsi
addq $0x30, %rsi
leaq 0x78(%rsp), %rdi
callq 0xac442
movq 0x15c0(%rbx), %rax
cmpq %rax, 0x15c8(%rbx)
je 0x77d11
movl $0x1, %r13d
xorl %ebp, %ebp
leaq 0x78(%rsp), %r14
movq 0xfe366(%rip), %r15     # 0x175fa8
movq (%rax,%rbp,8), %rdi
addq $0x30, %rdi
movq %r14, %rsi
callq 0xac442
cmpl $0x0, 0x1614(%rbx)
je 0x77ced
movl $0x6, %edx
movq %r15, %rdi
leaq 0x8150c(%rip), %rsi     # 0xf917a
callq 0x22ab0
movq %r15, %rdi
movq %rbp, %rsi
callq 0x22650
movq %rax, %r12
movl $0x11, %edx
movq %rax, %rdi
leaq 0x86843(%rip), %rsi     # 0xfe4d3
callq 0x22ab0
movq 0x15c0(%rbx), %rax
movq 0x15c8(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rbp, %rdx
jbe 0x78201
movq (%rax,%rbp,8), %rax
movq 0x58(%rax), %rsi
movq %r12, %rdi
callq 0x22650
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r12, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movl %r13d, %ebp
movq 0x15c0(%rbx), %rax
movq 0x15c8(%rbx), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
incl %r13d
cmpq %rbp, %rcx
ja 0x77c42
leaq 0x1590(%rbx), %r14
movq %r14, %rdi
callq 0xadec4
leaq 0x78(%rsp), %rsi
movq %r14, %rdi
callq 0xac442
movq %r14, %rdi
callq 0xadec4
movq 0x15c0(%rbx), %r13
movq 0x15c8(%rbx), %rax
xorl %ebp, %ebp
cmpq %r13, %rax
je 0x77eda
movq %r14, (%rsp)
leaq 0x1598(%rbx), %rcx
movq %rcx, 0x10(%rsp)
movq %rax, %r14
movl $0x0, 0x8(%rsp)
movq %r14, %rdx
subq %r13, %rdx
sarq $0x3, %rdx
cmpq %rbp, %rdx
jbe 0x781cf
movq %rbp, %r15
movq (%r13,%rbp,8), %rax
movq 0x48(%rax), %r12
addq $0x38, %rax
cmpq %rax, %r12
je 0x77eb9
leaq 0x20(%r12), %rsi
movq (%rsp), %r14
movq %r14, %rdi
callq 0x46058
cmpq 0x10(%rsp), %rax
jne 0x77e80
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
addq %rsi, %rdx
leaq 0x18(%rsp), %r13
movq %r13, %rdi
callq 0x3213c
movq 0x40(%r12), %rax
movq %rax, 0x38(%rsp)
movq %r14, %rdi
movq %r13, %rsi
callq 0x51c64
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x77e06
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x229c0
incl 0x8(%rsp)
cmpl $0x3, 0x1614(%rbx)
jb 0x77e80
movl $0xf, %edx
movq 0xfe189(%rip), %rdi     # 0x175fa8
leaq 0x866bf(%rip), %rsi     # 0xfe4e5
callq 0x22ab0
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
movq 0xfe16c(%rip), %rdi     # 0x175fa8
callq 0x22ab0
movq %rax, %r13
movl $0x15, %edx
movq %rax, %rdi
leaq 0x866a2(%rip), %rsi     # 0xfe4f5
callq 0x22ab0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r13, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x15c0(%rbx), %r13
movq 0x15c8(%rbx), %r14
movq %r14, %rdx
subq %r13, %rdx
sarq $0x3, %rdx
movq %r15, %rbp
cmpq %r15, %rdx
jbe 0x781cf
movq %r12, %rdi
callq 0x22670
movq %rax, %r12
movq (%r13,%rbp,8), %rax
jmp 0x77d88
movq %r15, %rbp
incl %ebp
movq %r14, %rax
subq %r13, %rax
sarq $0x3, %rax
cmpq %rbp, %rax
ja 0x77d69
movl 0x8(%rsp), %ebp
movq %r13, %rax
jmp 0x77edd
movq %rax, %r14
cmpl $0x3, 0x1614(%rbx)
jb 0x77f45
movq 0xfe0bb(%rip), %rdi     # 0x175fa8
leaq 0x86617(%rip), %rsi     # 0xfe50b
movl $0x16, %edx
callq 0x22ab0
movq 0xfe0a3(%rip), %rdi     # 0x175fa8
movq %rbp, %rsi
callq 0x22650
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x22940
movsbl %al, %esi
movq %r15, %rdi
callq 0x22050
movq %rax, %rdi
callq 0x22660
movq 0x15c0(%rbx), %rax
movq 0x15c8(%rbx), %r14
movq %rbp, 0x48(%rsp)
leaq 0x20(%rsp), %rcx
movl $0x0, (%rcx)
xorl %r12d, %r12d
movq %r12, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %r12, 0x20(%rcx)
cmpq %rax, %r14
je 0x780cb
leaq 0x1980(%rbx), %rax
movq %rax, 0x8(%rsp)
leaq 0x1598(%rbx), %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0xa7422
movq 0x15c0(%rbx), %rbp
movq 0x15c8(%rbx), %r15
movq %r15, %rdx
subq %rbp, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x781ee
movq (%rbp,%r12,8), %rax
movq 0x48(%rax), %r13
movl $0x0, 0x10(%rsp)
movq %r12, (%rsp)
movq (%rbp,%r12,8), %rax
addq $0x38, %rax
cmpq %rax, %r13
je 0x780b8
movq 0x15a8(%rbx), %r12
cmpq %r14, %r12
je 0x7808d
movl 0x10(%rsp), %ebp
xorl %r15d, %r15d
movq 0x28(%r13), %rdx
cmpq 0x28(%r12), %rdx
jne 0x78068
testq %rdx, %rdx
je 0x78014
movq 0x20(%r12), %rsi
movq 0x20(%r13), %rdi
callq 0x229f0
testl %eax, %eax
jne 0x78068
movq 0x1980(%rbx), %rdi
movq 0x1988(%rbx), %rdx
subq %rdi, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rdx
movq (%rsp), %rsi
cmpq %rsi, %rdx
jbe 0x78191
leaq (%rsi,%rsi,2), %rax
shlq $0x4, %rax
addq %rax, %rdi
movq %r15, %rax
shlq $0x20, %rax
orq %rbp, %rax
movq %rax, 0x50(%rsp)
leaq 0x50(%rsp), %rsi
callq 0xae26e
incl %r15d
movq %r12, %rdi
callq 0x22670
movq %rax, %r12
cmpq %r14, %rax
jne 0x77ff2
movq 0x15c0(%rbx), %rbp
movq 0x15c8(%rbx), %r15
incl 0x10(%rsp)
movq %r13, %rdi
callq 0x22670
movq %rax, %r13
movq %r15, %rdx
subq %rbp, %rdx
sarq $0x3, %rdx
movq (%rsp), %r12
cmpq %r12, %rdx
ja 0x77fc9
jmp 0x781be
incl %r12d
subq %rbp, %r15
sarq $0x3, %r15
cmpq %r12, %r15
ja 0x77f84
cmpl $0x3, 0x1614(%rbx)
jb 0x7813b
movq 0xfdecd(%rip), %rdi     # 0x175fa8
leaq 0x86440(%rip), %rsi     # 0xfe522
movl $0x22, %edx
callq 0x22ab0
movq 0xfdeb5(%rip), %rdi     # 0x175fa8
movq 0x48(%rsp), %rsi
callq 0x22650
movq %rax, %rbx
leaq 0x8643e(%rip), %rsi     # 0xfe545
movl $0x1b, %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 0x18(%rsp), %rdi
callq 0xac772
leaq 0x78(%rsp), %rdi
callq 0x5169e
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x7b511(%rip), %rdi     # 0xf3679
movq %r14, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x7b500(%rip), %rdi     # 0xf3679
xorl %eax, %eax
callq 0x22f40
leaq 0x7b4f2(%rip), %rdi     # 0xf3679
movq %r14, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x7b4e1(%rip), %rdi     # 0xf3679
xorl %eax, %eax
callq 0x22f40
leaq 0x7b4d3(%rip), %rdi     # 0xf3679
xorl %eax, %eax
callq 0x22f40
leaq 0x7b4c5(%rip), %rdi     # 0xf3679
movq %r14, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x7b4b4(%rip), %rdi     # 0xf3679
movq %r12, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x7b4a3(%rip), %rdi     # 0xf3679
movq %rbp, %rsi
xorl %eax, %eax
callq 0x22f40
leaq 0x7b492(%rip), %rdi     # 0xf3679
xorl %eax, %eax
callq 0x22f40
leaq 0x7b484(%rip), %rdi     # 0xf3679
movq %r12, %rsi
xorl %eax, %eax
callq 0x22f40
xorl %ebp, %ebp
leaq 0x7b471(%rip), %rdi     # 0xf3679
movq %rbp, %rsi
xorl %eax, %eax
callq 0x22f40
jmp 0x7822e
jmp 0x7828b
jmp 0x7822e
jmp 0x7822e
jmp 0x7828b
jmp 0x7828b
jmp 0x7828b
jmp 0x78247
jmp 0x7828b
jmp 0x7822e
jmp 0x7828b
jmp 0x7828b
jmp 0x7828b
jmp 0x7822e
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0xac772
jmp 0x7828e
jmp 0x78247
jmp 0x78247
jmp 0x7828b
jmp 0x7828b
jmp 0x7828b
movq %rax, %rbx
jmp 0x7826b
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7826b
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x229c0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x7828e
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x229c0
jmp 0x7828e
jmp 0x7828b
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x5169e
movq %rbx, %rdi
callq 0x23240