// File: rtackx[P]ComSim/main.cpp
// Function: main
int main(int argc, const char* argv[])
{
	string path_dataset, similarity_index;
	int distance, depth_best;
	static set<string> list_valid_similarities = {"cn", "ji", "aa", "ra", "lhn", "pan"};

	if(argc < 3)
	{
		usage();
		return 0;
	}
	else
	{
		path_dataset = argv[1];
		distance = atoi(argv[2]);
		similarity_index = "cn";
		depth_best = 1;

		if(argc > 3)
		{
			similarity_index = argv[3];

			if(list_valid_similarities.find(similarity_index) == list_valid_similarities.end())
			{
				usage();
				cerr << endl << "\"" << similarity_index << "\" is not a valid similarity index" << endl;
				return 0;
			}

			if(argc > 4)
			{
				if(argc == 5)
					depth_best = atoi(argv[4]);
				else
				{
					usage();
					return 0;
				}
			}
		}
	}

	high_resolution_clock::time_point t1, t2;
	t1 = high_resolution_clock::now();

	Graph* main_graph = new Graph();
	cerr << "Loading graph..." << endl;
	main_graph->load_graph(path_dataset);
	cerr << "   n = " << main_graph->n << endl << "   m = " << main_graph->m/2 << endl;

	srand(unsigned(time(NULL)));

	Community* c = new Community(main_graph, depth_best);
	Projection* p;
	Graph* g;
	unsigned int nb_remaining_nodes = 0;

	g = main_graph;

	p = select_similarity(similarity_index, g);
	cerr << endl << "Projecting graph (distance : " << distance << ") ..." << endl;
	p->project(distance);

	if(p->graph_projection->n > 0)
	{
		cerr << "Detecting communities..." << endl;
		nb_remaining_nodes = c->detect(p->graph_projection);

		//g = main_graph->get_subgraph(list_ending_nodes);
	}
	cerr << "Number of remaining nodes : " << nb_remaining_nodes << endl;

	cerr << endl << "--------------" << endl;
	unsigned int i;
	for(auto& e : c->community)
	{
		for(i=0; i<e.second.size()-1; i++)
			cout << e.second[i]->id << " ";
		cout << e.second[e.second.size()-1]->id << endl;
	}
	cerr << "--------------" << endl;

	delete p;
	delete g;
	//delete main_graph;
	delete c;

	t2 = high_resolution_clock::now();
	cerr << "Time : ";
	display_ms(t1, t2);

	return 1;
}

// Assembly:
subq $0x3d8, %rsp            # imm = 0x3D8
movl $0x0, 0x3d4(%rsp)
movl %edi, 0x3d0(%rsp)
movq %rsi, 0x3c8(%rsp)
leaq 0x3a8(%rsp), %rdi
callq 0x3340
leaq 0x388(%rsp), %rdi
callq 0x3340
cmpb $0x0, 0x2ce26(%rip)     # 0x31288
jne 0x4783
leaq 0x2ce19(%rip), %rdi     # 0x31288
callq 0x3430
cmpl $0x0, %eax
je 0x4783
movb $0x1, 0x28e(%rsp)
leaq 0x2b0(%rsp), %rax
movq %rax, 0x1a8(%rsp)
movq %rax, 0x2a8(%rsp)
leaq 0x2a7(%rsp), %rdi
movq %rdi, 0x1b0(%rsp)
callq 0x3420
movq 0x1a8(%rsp), %rdi
movq 0x1b0(%rsp), %rdx
leaq 0x1e301(%rip), %rsi     # 0x227ca
callq 0x3330
jmp 0x44d0
leaq 0x2d0(%rsp), %rax
movq %rax, 0x198(%rsp)
movq %rax, 0x2a8(%rsp)
leaq 0x293(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x3420
movq 0x198(%rsp), %rdi
movq 0x1a0(%rsp), %rdx
leaq 0x1e2b9(%rip), %rsi     # 0x227cd
callq 0x3330
jmp 0x451b
leaq 0x2f0(%rsp), %rax
movq %rax, 0x188(%rsp)
movq %rax, 0x2a8(%rsp)
leaq 0x292(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0x3420
movq 0x188(%rsp), %rdi
movq 0x190(%rsp), %rdx
leaq 0x1e271(%rip), %rsi     # 0x227d0
callq 0x3330
jmp 0x4566
leaq 0x310(%rsp), %rax
movq %rax, 0x178(%rsp)
movq %rax, 0x2a8(%rsp)
leaq 0x291(%rsp), %rdi
movq %rdi, 0x180(%rsp)
callq 0x3420
movq 0x178(%rsp), %rdi
movq 0x180(%rsp), %rdx
leaq 0x1e229(%rip), %rsi     # 0x227d3
callq 0x3330
jmp 0x45b1
leaq 0x330(%rsp), %rax
movq %rax, 0x168(%rsp)
movq %rax, 0x2a8(%rsp)
leaq 0x290(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x3420
movq 0x168(%rsp), %rdi
movq 0x170(%rsp), %rdx
leaq 0x1e1e1(%rip), %rsi     # 0x227d6
callq 0x3330
jmp 0x45fc
leaq 0x350(%rsp), %rax
movq %rax, 0x158(%rsp)
movq %rax, 0x2a8(%rsp)
leaq 0x28f(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0x3420
movq 0x158(%rsp), %rdi
movq 0x160(%rsp), %rdx
leaq 0x1e19a(%rip), %rsi     # 0x227da
callq 0x3330
jmp 0x4647
movb $0x0, 0x28e(%rsp)
leaq 0x2b0(%rsp), %rax
movq %rax, 0x370(%rsp)
movq $0x6, 0x378(%rsp)
leaq 0x28c(%rsp), %rdi
movq %rdi, 0x150(%rsp)
callq 0x53b0
movq 0x150(%rsp), %r8
movq 0x370(%rsp), %rsi
movq 0x378(%rsp), %rdx
leaq 0x2cbb9(%rip), %rdi     # 0x31258
leaq 0x28d(%rsp), %rcx
callq 0x53c0
jmp 0x46ae
leaq 0x28c(%rsp), %rdi
callq 0x54a0
leaq 0x2b0(%rsp), %rax
movq %rax, 0x140(%rsp)
addq $0xc0, %rax
movq %rax, 0x148(%rsp)
movq 0x148(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0x138(%rsp)
callq 0x3150
movq 0x140(%rsp), %rcx
movq 0x138(%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0x148(%rsp)
jne 0x46d9
leaq 0x28f(%rsp), %rdi
callq 0x3280
leaq 0x290(%rsp), %rdi
callq 0x3280
leaq 0x291(%rsp), %rdi
callq 0x3280
leaq 0x292(%rsp), %rdi
callq 0x3280
leaq 0x293(%rsp), %rdi
callq 0x3280
leaq 0x2a7(%rsp), %rdi
callq 0x3280
leaq 0xd4c(%rip), %rdi       # 0x54b0
leaq 0x2caed(%rip), %rsi     # 0x31258
leaq 0x2cac6(%rip), %rdx     # 0x31238
callq 0x31e0
leaq 0x2cb0a(%rip), %rdi     # 0x31288
callq 0x3170
cmpl $0x3, 0x3d0(%rsp)
jge 0x4996
callq 0x3e30
jmp 0x4798
movl $0x0, 0x3d4(%rsp)
movl $0x1, 0x288(%rsp)
jmp 0x529a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x48fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x48f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x48e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x48d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x48ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x48bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
leaq 0x28c(%rsp), %rdi
callq 0x54a0
leaq 0x2b0(%rsp), %rax
movq %rax, 0x128(%rsp)
addq $0xc0, %rax
movq %rax, 0x130(%rsp)
movq 0x130(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0x120(%rsp)
callq 0x3150
movq 0x128(%rsp), %rcx
movq 0x120(%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0x130(%rsp)
jne 0x4885
jmp 0x48bd
leaq 0x28f(%rsp), %rdi
callq 0x3280
leaq 0x290(%rsp), %rdi
callq 0x3280
leaq 0x291(%rsp), %rdi
callq 0x3280
leaq 0x292(%rsp), %rdi
callq 0x3280
leaq 0x293(%rsp), %rdi
callq 0x3280
leaq 0x2a7(%rsp), %rdi
callq 0x3280
testb $0x1, 0x28e(%rsp)
jne 0x4917
jmp 0x496c
movq 0x2a8(%rsp), %rax
leaq 0x2b0(%rsp), %rcx
cmpq %rax, %rcx
movq %rax, 0x118(%rsp)
je 0x496a
movq 0x118(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0x110(%rsp)
callq 0x3150
movq 0x110(%rsp), %rax
leaq 0x2b0(%rsp), %rcx
cmpq %rcx, %rax
movq %rax, 0x118(%rsp)
jne 0x4934
jmp 0x496c
leaq 0x2c915(%rip), %rdi     # 0x31288
callq 0x3160
jmp 0x52c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x52c3
movq 0x3c8(%rsp), %rax
movq 0x8(%rax), %rsi
leaq 0x3a8(%rsp), %rdi
callq 0x3320
jmp 0x49b1
movq 0x3c8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x33b0
movl %eax, 0x384(%rsp)
leaq 0x1ddfa(%rip), %rsi     # 0x227ca
leaq 0x388(%rsp), %rdi
callq 0x3320
jmp 0x49df
movl $0x1, 0x380(%rsp)
cmpl $0x3, 0x3d0(%rsp)
jle 0x4b77
movq 0x3c8(%rsp), %rax
movq 0x18(%rax), %rsi
leaq 0x388(%rsp), %rdi
callq 0x3320
jmp 0x4a13
leaq 0x2c83e(%rip), %rdi     # 0x31258
leaq 0x388(%rsp), %rsi
callq 0x54e0
movq %rax, 0x108(%rsp)
jmp 0x4a31
movq 0x108(%rsp), %rax
movq %rax, 0x280(%rsp)
leaq 0x2c810(%rip), %rdi     # 0x31258
callq 0x5520
movq %rax, 0x278(%rsp)
leaq 0x280(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0x54c0
testb $0x1, %al
jne 0x4a73
jmp 0x4b23
callq 0x3e30
jmp 0x4a7a
movq 0x2c56f(%rip), %rdi     # 0x30ff0
movq 0x2c530(%rip), %rsi     # 0x30fb8
callq 0x3270
movq %rax, 0x100(%rsp)
jmp 0x4a97
movq 0x100(%rsp), %rdi
leaq 0x1dd38(%rip), %rsi     # 0x227de
callq 0x3240
movq %rax, 0xf8(%rsp)
jmp 0x4ab5
movq 0xf8(%rsp), %rdi
leaq 0x388(%rsp), %rsi
callq 0x31f0
movq %rax, 0xf0(%rsp)
jmp 0x4ad4
movq 0xf0(%rsp), %rdi
leaq 0x1dcfd(%rip), %rsi     # 0x227e0
callq 0x3240
movq %rax, 0xe8(%rsp)
jmp 0x4af2
movq 0xe8(%rsp), %rdi
movq 0x2c4b7(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x4b08
movl $0x0, 0x3d4(%rsp)
movl $0x1, 0x288(%rsp)
jmp 0x529a
cmpl $0x4, 0x3d0(%rsp)
jle 0x4b75
cmpl $0x5, 0x3d0(%rsp)
jne 0x4b51
movq 0x3c8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x33b0
movl %eax, 0x380(%rsp)
jmp 0x4b73
callq 0x3e30
jmp 0x4b58
movl $0x0, 0x3d4(%rsp)
movl $0x1, 0x288(%rsp)
jmp 0x529a
jmp 0x4b75
jmp 0x4b77
jmp 0x4b79
leaq 0x270(%rsp), %rdi
callq 0x5550
jmp 0x4b88
leaq 0x268(%rsp), %rdi
callq 0x5550
jmp 0x4b97
callq 0x3070
movq %rax, 0x260(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x270(%rsp)
movl $0x10, %edi
callq 0x3250
movq %rax, 0xe0(%rsp)
jmp 0x4bc8
movq 0xe0(%rsp), %rdi
callq 0x6d70
jmp 0x4bd7
movq 0xe0(%rsp), %rax
movq %rax, 0x258(%rsp)
movq 0x2c402(%rip), %rdi     # 0x30ff0
leaq 0x1dc0d(%rip), %rsi     # 0x22802
callq 0x3240
movq %rax, 0xd8(%rsp)
jmp 0x4c04
movq 0xd8(%rsp), %rdi
movq 0x2c3a5(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x4c1a
movq 0x258(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0x238(%rsp), %rdi
leaq 0x3a8(%rsp), %rsi
callq 0x3100
jmp 0x4c41
movq 0xd0(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x6e40
jmp 0x4c58
leaq 0x238(%rsp), %rdi
callq 0x3150
movq 0x2c384(%rip), %rdi     # 0x30ff0
leaq 0x1dba0(%rip), %rsi     # 0x22813
callq 0x3240
movq %rax, 0xc8(%rsp)
jmp 0x4c82
movq 0xc8(%rsp), %rdi
movq 0x258(%rsp), %rax
movl (%rax), %esi
callq 0x3310
movq %rax, 0xc0(%rsp)
jmp 0x4ca3
movq 0xc0(%rsp), %rdi
movq 0x2c306(%rip), %rsi     # 0x30fb8
callq 0x3270
movq %rax, 0xb8(%rsp)
jmp 0x4cc1
movq 0xb8(%rsp), %rdi
leaq 0x1db4b(%rip), %rsi     # 0x2281b
callq 0x3240
movq %rax, 0xb0(%rsp)
jmp 0x4cdf
movq 0xb0(%rsp), %rdi
movq 0x258(%rsp), %rax
movl 0x4(%rax), %esi
shrl %esi
callq 0x3310
movq %rax, 0xa8(%rsp)
jmp 0x4d03
movq 0xa8(%rsp), %rdi
movq 0x2c2a6(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x4d19
xorl %eax, %eax
movl %eax, %edi
callq 0x3210
movl %eax, %edi
callq 0x3230
movl $0x80, %edi
callq 0x3250
movq %rax, 0xa0(%rsp)
jmp 0x4d3d
movq 0xa0(%rsp), %rdi
movl 0x380(%rsp), %edx
leaq 0x258(%rsp), %rsi
callq 0x171b0
jmp 0x4d5b
movq 0xa0(%rsp), %rax
movq %rax, 0x230(%rsp)
movl $0x0, 0x21c(%rsp)
movq 0x258(%rsp), %rax
movq %rax, 0x220(%rsp)
leaq 0x1f8(%rsp), %rdi
leaq 0x388(%rsp), %rsi
callq 0x3100
jmp 0x4d9d
leaq 0x1f8(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x4190
movq %rax, 0x98(%rsp)
jmp 0x4dbc
movq 0x98(%rsp), %rax
movq %rax, 0x228(%rsp)
leaq 0x1f8(%rsp), %rdi
callq 0x3150
movq 0x2c210(%rip), %rdi     # 0x30ff0
movq 0x2c1d1(%rip), %rsi     # 0x30fb8
callq 0x3270
movq %rax, 0x90(%rsp)
jmp 0x4df6
movq 0x90(%rsp), %rdi
leaq 0x1da1e(%rip), %rsi     # 0x22823
callq 0x3240
movq %rax, 0x88(%rsp)
jmp 0x4e14
movq 0x88(%rsp), %rdi
movl 0x384(%rsp), %esi
callq 0x33f0
movq %rax, 0x80(%rsp)
jmp 0x4e32
movq 0x80(%rsp), %rdi
leaq 0x1da00(%rip), %rsi     # 0x22841
callq 0x3240
movq %rax, 0x78(%rsp)
jmp 0x4e4d
movq 0x78(%rsp), %rdi
movq 0x2c15f(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x4e60
movq 0x228(%rsp), %rdi
movl 0x384(%rsp), %esi
callq 0xee30
jmp 0x4e76
movq 0x228(%rsp), %rax
movq 0x18(%rax), %rax
cmpl $0x0, (%rax)
jbe 0x4f7f
movq 0x2c15e(%rip), %rdi     # 0x30ff0
leaq 0x1d9ae(%rip), %rsi     # 0x22847
callq 0x3240
movq %rax, 0x70(%rsp)
jmp 0x4ea5
movq 0x70(%rsp), %rdi
movq 0x2c107(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x4eb8
movq 0x230(%rsp), %rdi
movq 0x228(%rsp), %rsi
addq $0x18, %rsi
callq 0x17240
movl %eax, 0x6c(%rsp)
jmp 0x4ed7
movl 0x6c(%rsp), %eax
movl %eax, 0x21c(%rsp)
jmp 0x4f7f
movq 0xe0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
callq 0x3220
jmp 0x52c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x3150
jmp 0x52c3
movq 0xa0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
callq 0x3220
jmp 0x52c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
leaq 0x1f8(%rsp), %rdi
callq 0x3150
jmp 0x52c3
movq 0x2c06a(%rip), %rdi     # 0x30ff0
leaq 0x1d8d3(%rip), %rsi     # 0x22860
callq 0x3240
movq %rax, 0x60(%rsp)
jmp 0x4f99
movq 0x60(%rsp), %rdi
movl 0x21c(%rsp), %esi
callq 0x3310
movq %rax, 0x58(%rsp)
jmp 0x4fb1
movq 0x58(%rsp), %rdi
movq 0x2bffb(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x4fc4
movq 0x2c025(%rip), %rdi     # 0x30ff0
movq 0x2bfe6(%rip), %rsi     # 0x30fb8
callq 0x3270
movq %rax, 0x50(%rsp)
jmp 0x4fde
movq 0x50(%rsp), %rdi
leaq 0x1d893(%rip), %rsi     # 0x2287d
callq 0x3240
movq %rax, 0x48(%rsp)
jmp 0x4ff6
movq 0x48(%rsp), %rdi
movq 0x2bfb6(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x5009
movq 0x230(%rsp), %rax
addq $0x48, %rax
movq %rax, 0x1e8(%rsp)
movq 0x1e8(%rsp), %rdi
callq 0x5580
movq %rax, 0x1e0(%rsp)
movq 0x1e8(%rsp), %rdi
callq 0x55b0
movq %rax, 0x1d8(%rsp)
leaq 0x1e0(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x55e0
testb $0x1, %al
jne 0x5065
jmp 0x5179
leaq 0x1e0(%rsp), %rdi
callq 0x5600
movq %rax, 0x1d0(%rsp)
movl $0x0, 0x1f4(%rsp)
movl 0x1f4(%rsp), %eax
movq %rax, 0x40(%rsp)
movq 0x1d0(%rsp), %rdi
addq $0x8, %rdi
callq 0x5620
movq %rax, %rcx
movq 0x40(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x5112
movq 0x1d0(%rsp), %rdi
addq $0x8, %rdi
movl 0x1f4(%rsp), %eax
movl %eax, %esi
callq 0x5640
movq (%rax), %rsi
addq $0x8, %rsi
movq 0x2beed(%rip), %rdi     # 0x30fc8
callq 0x31f0
movq %rax, 0x38(%rsp)
jmp 0x50e7
movq 0x38(%rsp), %rdi
leaq 0x1d74c(%rip), %rsi     # 0x2283f
callq 0x3240
jmp 0x50fa
jmp 0x50fc
movl 0x1f4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1f4(%rsp)
jmp 0x5085
movq 0x1d0(%rsp), %rdi
addq $0x8, %rdi
movq %rdi, 0x28(%rsp)
callq 0x5620
movq 0x28(%rsp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x5640
movq (%rax), %rsi
addq $0x8, %rsi
movq 0x2be82(%rip), %rdi     # 0x30fc8
callq 0x31f0
movq %rax, 0x30(%rsp)
jmp 0x5152
movq 0x30(%rsp), %rdi
movq 0x2be5a(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x5165
jmp 0x5167
leaq 0x1e0(%rsp), %rdi
callq 0x5660
jmp 0x5047
movq 0x2be70(%rip), %rdi     # 0x30ff0
leaq 0x1d6f6(%rip), %rsi     # 0x2287d
callq 0x3240
movq %rax, 0x20(%rsp)
jmp 0x5193
movq 0x20(%rsp), %rdi
movq 0x2be19(%rip), %rsi     # 0x30fb8
callq 0x3270
jmp 0x51a6
movq 0x228(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x51cd
movq 0x18(%rsp), %rdi
callq 0xe1c0
movq 0x18(%rsp), %rdi
callq 0x3220
movq 0x220(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x51f4
movq 0x10(%rsp), %rdi
callq 0x6d90
movq 0x10(%rsp), %rdi
callq 0x3220
movq 0x230(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x521b
movq 0x8(%rsp), %rdi
callq 0x17210
movq 0x8(%rsp), %rdi
callq 0x3220
callq 0x3070
movq %rax, 0x1c8(%rsp)
movq 0x1c8(%rsp), %rax
movq %rax, 0x268(%rsp)
movq 0x2bdb1(%rip), %rdi     # 0x30ff0
leaq 0x1d646(%rip), %rsi     # 0x2288c
callq 0x3240
jmp 0x524d
movq 0x270(%rsp), %rax
movq %rax, 0x1c0(%rsp)
movq 0x268(%rsp), %rax
movq %rax, 0x1b8(%rsp)
movq 0x1c0(%rsp), %rdi
movq 0x1b8(%rsp), %rsi
callq 0x3dc0
jmp 0x5284
movl $0x1, 0x3d4(%rsp)
movl $0x1, 0x288(%rsp)
leaq 0x388(%rsp), %rdi
callq 0x3150
leaq 0x3a8(%rsp), %rdi
callq 0x3150
movl 0x3d4(%rsp), %eax
addq $0x3d8, %rsp            # imm = 0x3D8
retq
leaq 0x388(%rsp), %rdi
callq 0x3150
leaq 0x3a8(%rsp), %rdi
callq 0x3150
movq 0x298(%rsp), %rdi
callq 0x3400
nopw (%rax,%rax)