// File: /workspace/github_cpp_makefile_star2_O3/danish241194[P]Linux-Terminal-Based-File-Explorer/start_page.cpp
// Function: main
int main(int arg,char *args[])
	{

//mkdir("trash_folder_2018201016", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);

	if(arg==1){
		path=".";
		home=path;
		pathdup=path;

	}
	else{

		path=args[1];

		pathdup=path;
	}
	
	signal(SIGINT, INThandler);
	
	
	int a;
	
	real_clean();
	//system("reset");	
	printf("\033[2J\033[1;1H");
	fflush(stdout);
	ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
	
	tcgetattr(0,&initial_settings);
	new_settings = initial_settings;

	new_settings.c_lflag &= ~ECHO;

	new_settings.c_lflag &= ~ICANON;

	if(tcsetattr(0, TCSANOW, &new_settings) != 0) {
	fprintf(stderr,"could not set attributes\n");
	}




	
	print_dirs(0,height);
	gotoxy(start_x,start_y); // y,1
	char ch;
	int flag=0;

	while(1){
	ch = getchar();
	int s = (int)ch;
	


	switch(s){

		case 58:{
				CommandMode();	
				print_dirs(0,height);
				
				new_settings.c_lflag &= ~ECHO;

				new_settings.c_lflag &= ~ICANON;

				if(tcsetattr(0, TCSANOW, &new_settings) != 0) {
				fprintf(stderr,"could not set attributes\n");
				}
				y=1;
				scroll_k=0;
				gotoxy(y+start_x-1,1);
				
				break;		
			}

		case 127:{
					
				if(pathdup.compare(home)==0){break;}
					while(back!=0)
					{
					forward_history.pop();
					fkh.pop();
						back--;
					}
					back=0;
					
					back_history.push(path);
					bkh.push(pathdup);pathdup = getactualpath(pathdup);
					path = path +"/"+namelist[1]->d_name;
					real_clean();
					fflush(stdout);		
					
					print_dirs(0,height);
					
					new_settings.c_lflag &= ~ECHO;

					new_settings.c_lflag &= ~ICANON;

					if(tcsetattr(0, TCSANOW, &new_settings) != 0) {
					fprintf(stderr,"could not set attributes\n");
					}
					y=1;
					scroll_k=0;
					gotoxy(start_x,start_y);//y,1	
			break;}
			
		case 65:
			{
					
				if(y>=2){
					y--;
					gotoxy(y+start_x-1,1);
						
						break;
				}
				
				if(scroll_k!=0)
				{
	
				gotoxy(start_x,start_y);
				scroll_k=scroll_k-1;
				print_dirs(scroll_k,height+scroll_k);
				gotoxy(start_x,start_y);
				
				}
				else
				{
								
				}
				break;			
			}
			
		case 66:{	

				if(nn>height){
				if(height-(height-y)+scroll_k<nn){
				if(y<height){
					y++;
					gotoxy(y+start_x-1,1); 
					break;
				}		
				gotoxy(start_x,start_y);
				scroll_k++;
				print_dirs(scroll_k,height+scroll_k);
				gotoxy(height+start_x-1,1);
				}
				}else{
				if(y<nn)
				{
					y++;
					gotoxy(y+start_x-1,1);
				}	

				}
				break;			
			}
			//quit (q)
		case 113:{
				flag=1;
				break;
			}
			//enter 
		case 10:{	

				if((y+scroll_k-1)==0)
				{
					break;
				}
				if((y+scroll_k-1)==1 && pathdup.compare(home)==0){//back_history.size()==0
					break;
				}
				
				while(back!=0){
				forward_history.pop();
				fkh.pop();
					back--;
				}
				back=0;
				if((int)namelist[y+scroll_k-1]->d_type==4){
				if((y+scroll_k-1)==1){//back_history.size()==0
					bkh.push(pathdup);
					pathdup = getactualpath(pathdup);				
				
				}else{
						bkh.push(pathdup);
					pathdup = pathdup +"/"+namelist[y+scroll_k-1]->d_name;
					}
				
				back_history.push(path);
				path = path +"/"+namelist[y+scroll_k-1]->d_name;
				//printf("\033[2J\033[1;1H");
				real_clean();				
				fflush(stdout);		
				
				print_dirs(0,height);
				//cout<<"----"<<y+scroll_k-1<<"---";
				new_settings.c_lflag &= ~ECHO;

				new_settings.c_lflag &= ~ICANON;

				if(tcsetattr(0, TCSANOW, &new_settings) != 0) {
					fprintf(stderr,"could not set attributes\n");
				}
					y=1;
					scroll_k=0;
					gotoxy(y+start_x-1,1); // y,1//......y+2

				}
				else{
					string pathre = path;
					for(int k=0;k<path.size();k++){
						if(pathre[k]==' '){
	
							pathre.insert(k,1,'\\');
							k+=1;
					}
				}
				string path1 = pathre +"/"+namelist[y+scroll_k-1]->d_name;
				pid_t pid = fork();
				if (pid == 0) {

					int out = open("err.log", O_RDWR|O_CREAT|O_APPEND, 0600);
					if (-1 == out) { perror("opening cout.log"); return 255; }
    					int save_out = dup(fileno(stderr));
   					if (-1 == dup2(out, fileno(stderr))) { perror("cannot redirect stdout"); return 255; }
      					
    			  				
				execl("/usr/bin/xdg-open", "xdg-open", path1.c_str(), (char *)0);
						
    					fflush(stderr); close(out);
  
    					dup2(save_out, fileno(stderr));
   
	
    					close(save_out);
  				
  					exit(1);
				}
				
					}

			break;
			}
			//left-arrow <-
			case 68:{	
				if(back_history.size()==0){
					
					break;
				}
				back++;
				forward_history.push(path);
				
				fkh.push(pathdup);
				path = back_history.top(); pathdup = bkh.top();bkh.pop();
				back_history.pop();
				//printf("\033[2J\033[1;1H");
				real_clean();				
				fflush(stdout);		
				
				print_dirs(0,height);
				
				new_settings.c_lflag &= ~ECHO;

				new_settings.c_lflag &= ~ICANON;

				if(tcsetattr(0, TCSANOW, &new_settings) != 0) {
				fprintf(stderr,"could not set attributes\n");
				}
				y=1;
				scroll_k=0;
				gotoxy(y+start_x-1,1); // y,1//.......y+2
				

			break;
			}
			//right_arrow ->
			case 67:{	
				if(forward_history.size()==0){
					break;
				}
				back--;
				back_history.push(path); bkh.push(pathdup);
				path = forward_history.top();
				pathdup = fkh.top();
				fkh.pop();
				forward_history.pop();
				real_clean();
				
				fflush(stdout);		
				
				print_dirs(0,height);
				
				new_settings.c_lflag &= ~ECHO;

				new_settings.c_lflag &= ~ICANON;

				if(tcsetattr(0, TCSANOW, &new_settings) != 0) {
				fprintf(stderr,"could not set attributes\n");
				}
				y=1;
				scroll_k=0;
				gotoxy(y+start_x-1,1);//y,1/.......y+2
				

			break;
			}
			//home 'h'
			case 104:{
					while(back!=0)
					{
					forward_history.pop();
					fkh.pop();
						back--;
					}
					back=0;
					
					back_history.push(path); bkh.push(pathdup);
					path = home; pathdup = home;
					real_clean();
					cout<<"home acalled";
					//printf("\033[2J\033[1;1H");
					fflush(stdout);		
					
					print_dirs(0,height);
					
					new_settings.c_lflag &= ~ECHO;

					new_settings.c_lflag &= ~ICANON;

					if(tcsetattr(0, TCSANOW, &new_settings) != 0) {
					fprintf(stderr,"could not set attributes\n");
					}
					y=1;
					scroll_k=0;
					gotoxy(y+start_x-1,1);//y,1////.........y+2

					

				
				break;
				}

		}
		if(flag==1){
			break;
		}

	}
	tcsetattr(0,TCSANOW,&initial_settings);
	printf("\033[2J\033[1;1H");
	real_clean();
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
cmpl $0x1, %edi
jne 0xe74a
movq 0x6d15(%rip), %rdx      # 0x15430
leaq 0x6d06(%rip), %rbx      # 0x15428
leaq 0x2974(%rip), %rcx      # 0x1109d
movl $0x1, %r8d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x33d0
leaq 0x6d28(%rip), %rdi      # 0x15468
movq %rbx, %rsi
callq 0x3150
jmp 0xe777
movq 0x8(%rsi), %rbx
movq 0x6cdb(%rip), %r14      # 0x15430
leaq 0x6ccc(%rip), %r15      # 0x15428
movq %rbx, %rdi
callq 0x3110
movq %r15, %rdi
xorl %esi, %esi
movq %r14, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0x33d0
leaq 0x6cca(%rip), %rdi      # 0x15448
leaq 0x6ca3(%rip), %rsi      # 0x15428
callq 0x3150
leaq -0xaaea(%rip), %rsi     # 0x3ca7
movl $0x2, %edi
callq 0x3300
callq 0x3d7f
leaq 0x2e04(%rip), %rdi      # 0x115ab
xorl %eax, %eax
callq 0x3060
movq 0x67eb(%rip), %rax      # 0x14fa0
movq (%rax), %rdi
callq 0x32e0
leaq 0x6e5c(%rip), %rdx      # 0x15620
movl $0x5413, %esi           # imm = 0x5413
movl $0x1, %edi
xorl %eax, %eax
callq 0x3380
leaq 0x6cc0(%rip), %rsi      # 0x1549c
xorl %edi, %edi
callq 0x32a0
movups 0x6cb2(%rip), %xmm0     # 0x1549c
movups %xmm0, 0x6ce7(%rip)     # 0x154d8
movups 0x6cb4(%rip), %xmm0     # 0x154ac
movups %xmm0, 0x6ce9(%rip)     # 0x154e8
movups 0x6cb6(%rip), %xmm0     # 0x154bc
movups %xmm0, 0x6ceb(%rip)     # 0x154f8
movups 0x6cb4(%rip), %xmm0     # 0x154c8
movups %xmm0, 0x6ce9(%rip)     # 0x15504
leaq 0x6cb6(%rip), %rdx      # 0x154d8
andb $-0xb, 0x6cbb(%rip)     # 0x154e4
xorl %edi, %edi
xorl %esi, %esi
callq 0x3350
testl %eax, %eax
jne 0xf5c1
movl 0x6a30(%rip), %esi      # 0x15270
xorl %edi, %edi
callq 0x49db
movl 0x6a27(%rip), %esi      # 0x15274
movl 0x6a25(%rip), %edx      # 0x15278
leaq 0x282e(%rip), %rdi      # 0x11088
xorl %eax, %eax
callq 0x3060
leaq 0x10(%rsp), %rbp
leaq 0x30(%rsp), %r15
leaq 0x20(%rsp), %r12
leaq 0x2795(%rip), %r14      # 0x1100c
movl $0x0, 0x44(%rsp)
callq 0x3370
movsbl %al, %eax
cmpl $0x67, %eax
jg 0xe8dc
leal -0x3a(%rax), %ecx
cmpl $0xa, %ecx
ja 0xea6f
movslq (%r14,%rcx,4), %rax
addq %r14, %rax
jmpq *%rax
callq 0x6b21
movl 0x69c4(%rip), %esi      # 0x15270
xorl %edi, %edi
callq 0x49db
andb $-0xb, 0x6c2a(%rip)     # 0x154e4
xorl %edi, %edi
xorl %esi, %esi
leaq 0x6c13(%rip), %rdx      # 0x154d8
callq 0x3350
testl %eax, %eax
je 0xf53d
callq 0x35b8
jmp 0xf53d
cmpl $0x68, %eax
leaq 0x6b62(%rip), %rdi      # 0x15448
je 0xeee0
cmpl $0x7f, %eax
jne 0xf003
leaq 0x6b6c(%rip), %rsi      # 0x15468
callq 0x3050
testl %eax, %eax
je 0xe87f
cmpl $0x0, 0x6b10(%rip)      # 0x15420
leaq 0x6a19(%rip), %rbx      # 0x15330
leaq 0x6ab2(%rip), %r14      # 0x153d0
je 0xe938
movq %rbx, %rdi
callq 0x103aa
movq %r14, %rdi
callq 0x103aa
decl 0x6aea(%rip)            # 0x15420
jne 0xe920
movl $0x0, 0x6ade(%rip)      # 0x15420
leaq 0x6997(%rip), %rdi      # 0x152e0
leaq 0x6ad8(%rip), %rsi      # 0x15428
callq 0x10436
leaq 0x6a24(%rip), %rdi      # 0x15380
leaq 0x6ae5(%rip), %rbx      # 0x15448
movq %rbx, %rsi
callq 0x10436
leaq 0x98(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x6ac6(%rip), %rsi      # 0x15448
movq 0x6ac7(%rip), %rdx      # 0x15450
addq %rsi, %rdx
leaq 0x88(%rsp), %r14
movq %r14, %rdi
callq 0xfc98
movq %rsp, %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x3c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3320
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0xe9cb
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
leaq 0x2627(%rip), %r14      # 0x1100c
je 0xe9f7
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3260
movq %r15, 0x20(%rsp)
movq 0x6a25(%rip), %rsi      # 0x15428
movq 0x6a26(%rip), %rdx      # 0x15430
addq %rsi, %rdx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
callq 0xfc98
movq %r12, %rdi
leaq 0x2675(%rip), %rsi      # 0x11099
callq 0x3480
movq 0x6a58(%rip), %rax      # 0x15488
movq 0x8(%rax), %rsi
addq $0x13, %rsi
movq %r12, %rdi
callq 0x3480
movq %rbp, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x69d0(%rip), %rdi      # 0x15428
je 0xf08d
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0xf094
cmpl $0xa, %eax
jne 0xe87f
movl 0x6a1a(%rip), %eax      # 0x15498
addl 0x67f8(%rip), %eax      # 0x1527c
cmpl $0x1, %eax
je 0xe87f
cmpl $0x2, %eax
jne 0xeaad
leaq 0x69af(%rip), %rdi      # 0x15448
leaq 0x69c8(%rip), %rsi      # 0x15468
callq 0x3050
testl %eax, %eax
je 0xe87f
cmpl $0x0, 0x696c(%rip)      # 0x15420
leaq 0x6875(%rip), %rbx      # 0x15330
leaq 0x690e(%rip), %r13      # 0x153d0
je 0xeadc
movq %rbx, %rdi
callq 0x103aa
movq %r13, %rdi
callq 0x103aa
decl 0x6946(%rip)            # 0x15420
jne 0xeac4
movl $0x0, 0x693a(%rip)      # 0x15420
movq 0x699b(%rip), %rax      # 0x15488
movl 0x6789(%rip), %ecx      # 0x1527c
movl 0x699f(%rip), %edx      # 0x15498
leal (%rcx,%rdx), %ebx
decl %ebx
movslq %ebx, %rcx
movq (%rax,%rcx,8), %rax
cmpb $0x4, 0x12(%rax)
jne 0xf14d
leaq 0x686a(%rip), %rdi      # 0x15380
leaq 0x692b(%rip), %rsi      # 0x15448
callq 0x10436
cmpl $0x1, %ebx
jne 0xf231
leaq 0x78(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x690c(%rip), %rsi      # 0x15448
movq 0x690d(%rip), %rdx      # 0x15450
addq %rsi, %rdx
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
callq 0xfc98
movq %rsp, %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x3c64
leaq 0x68e0(%rip), %rdi      # 0x15448
movq %r12, %rsi
callq 0x3320
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0xeb86
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0xeba2
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x20(%rsp), %r12
jmp 0xf41c
movq 0x6775(%rip), %rax      # 0x15328
movq %rax, %rcx
subq 0x674b(%rip), %rcx      # 0x15308
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x6740(%rip), %rax      # 0x15310
subq 0x6741(%rip), %rax      # 0x15318
shlq $0x4, %rcx
sarq $0x5, %rax
addq %rcx, %rax
movq 0x6717(%rip), %rcx      # 0x15300
subq 0x6700(%rip), %rcx      # 0x152f0
sarq $0x5, %rcx
addq %rax, %rcx
je 0xe87f
incl 0x681d(%rip)            # 0x15420
leaq 0x6726(%rip), %rdi      # 0x15330
leaq 0x6817(%rip), %rbx      # 0x15428
movq %rbx, %rsi
callq 0x10436
leaq 0x67b0(%rip), %rdi      # 0x153d0
leaq 0x6821(%rip), %rsi      # 0x15448
callq 0x10436
movq 0x66dd(%rip), %rsi      # 0x15310
cmpq 0x66de(%rip), %rsi      # 0x15318
jne 0xec4f
movq 0x66e5(%rip), %rax      # 0x15328
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
movq %rbx, %rdi
callq 0x3150
movq 0x674e(%rip), %rsi      # 0x153b0
cmpq 0x674f(%rip), %rsi      # 0x153b8
jne 0xec7e
movq 0x6756(%rip), %rax      # 0x153c8
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
leaq 0x67bf(%rip), %rdi      # 0x15448
callq 0x3150
leaq 0x66eb(%rip), %rdi      # 0x15380
callq 0x103aa
leaq 0x663f(%rip), %rdi      # 0x152e0
callq 0x103aa
callq 0x3d7f
movq 0x62ee(%rip), %rax      # 0x14fa0
movq (%rax), %rdi
callq 0x32e0
movl 0x65b0(%rip), %esi      # 0x15270
xorl %edi, %edi
callq 0x49db
andb $-0xb, 0x6816(%rip)     # 0x154e4
xorl %edi, %edi
xorl %esi, %esi
leaq 0x67ff(%rip), %rdx      # 0x154d8
callq 0x3350
testl %eax, %eax
je 0xf53d
callq 0x3552
jmp 0xf53d
movl 0x685a(%rip), %ecx      # 0x15550
movl 0x6574(%rip), %eax      # 0x15270
movl 0x657a(%rip), %esi      # 0x1527c
cmpl %eax, %ecx
jle 0xf011
movl 0x6788(%rip), %edx      # 0x15498
addl %esi, %edx
cmpl %ecx, %edx
jge 0xe87f
cmpl %eax, %esi
jl 0xf019
movl 0x654c(%rip), %esi      # 0x15274
movl 0x654a(%rip), %edx      # 0x15278
leaq 0x2353(%rip), %rbx      # 0x11088
movq %rbx, %rdi
xorl %eax, %eax
callq 0x3060
movl 0x6753(%rip), %edi      # 0x15498
incl %edi
movl %edi, 0x674b(%rip)      # 0x15498
movl 0x651d(%rip), %esi      # 0x15270
addl %edi, %esi
callq 0x49db
movl 0x6510(%rip), %eax      # 0x15270
movl 0x650e(%rip), %ecx      # 0x15274
leal (%rax,%rcx), %esi
decl %esi
movq %rbx, %rdi
jmp 0xf55e
movq 0x65fe(%rip), %rax      # 0x15378
movq %rax, %rcx
subq 0x65d4(%rip), %rcx      # 0x15358
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x65c9(%rip), %rax      # 0x15360
subq 0x65ca(%rip), %rax      # 0x15368
shlq $0x4, %rcx
sarq $0x5, %rax
addq %rcx, %rax
movq 0x65a0(%rip), %rcx      # 0x15350
subq 0x6589(%rip), %rcx      # 0x15340
sarq $0x5, %rcx
addq %rax, %rcx
je 0xe87f
decl 0x6656(%rip)            # 0x15420
leaq 0x650f(%rip), %rdi      # 0x152e0
leaq 0x6650(%rip), %rbx      # 0x15428
movq %rbx, %rsi
callq 0x10436
leaq 0x6599(%rip), %rdi      # 0x15380
leaq 0x665a(%rip), %rsi      # 0x15448
callq 0x10436
movq 0x6566(%rip), %rsi      # 0x15360
cmpq 0x6567(%rip), %rsi      # 0x15368
jne 0xee16
movq 0x656e(%rip), %rax      # 0x15378
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
movq %rbx, %rdi
callq 0x3150
movq 0x65d7(%rip), %rsi      # 0x15400
cmpq 0x65d8(%rip), %rsi      # 0x15408
jne 0xee45
movq 0x65df(%rip), %rax      # 0x15418
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
leaq 0x65f8(%rip), %rdi      # 0x15448
callq 0x3150
leaq 0x6574(%rip), %rdi      # 0x153d0
callq 0x103aa
leaq 0x64c8(%rip), %rdi      # 0x15330
callq 0x103aa
callq 0x3d7f
movq 0x6127(%rip), %rax      # 0x14fa0
movq (%rax), %rdi
callq 0x32e0
movl 0x63e9(%rip), %esi      # 0x15270
xorl %edi, %edi
callq 0x49db
andb $-0xb, 0x664f(%rip)     # 0x154e4
xorl %edi, %edi
xorl %esi, %esi
leaq 0x6638(%rip), %rdx      # 0x154d8
callq 0x3350
testl %eax, %eax
je 0xf53d
callq 0x3530
jmp 0xf53d
movl 0x63bf(%rip), %eax      # 0x1527c
cmpl $0x2, %eax
jl 0xf034
leal -0x1(%rax), %ecx
movl %ecx, 0x63ad(%rip)      # 0x1527c
movl 0x639f(%rip), %ecx      # 0x15274
leal (%rax,%rcx), %esi
addl $-0x2, %esi
jmp 0xf557
movq %r15, %r13
movq %r14, %r15
movq %rbp, %r14
cmpl $0x0, 0x6530(%rip)      # 0x15420
leaq 0x6439(%rip), %rbx      # 0x15330
leaq 0x64d2(%rip), %r12      # 0x153d0
je 0xef18
movq %rbx, %rdi
callq 0x103aa
movq %r12, %rdi
callq 0x103aa
decl 0x650a(%rip)            # 0x15420
jne 0xef00
movl $0x0, 0x64fe(%rip)      # 0x15420
leaq 0x63b7(%rip), %rdi      # 0x152e0
leaq 0x64f8(%rip), %r12      # 0x15428
movq %r12, %rsi
callq 0x10436
leaq 0x6441(%rip), %rdi      # 0x15380
leaq 0x6502(%rip), %rbx      # 0x15448
movq %rbx, %rsi
callq 0x10436
movq %r12, %rdi
leaq 0x6510(%rip), %rbp      # 0x15468
movq %rbp, %rsi
callq 0x3150
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x3150
callq 0x3d7f
movl $0xc, %edx
movq 0x604c(%rip), %rdi      # 0x14fc8
leaq 0x2633(%rip), %rsi      # 0x115b6
callq 0x32c0
movq 0x6011(%rip), %rax      # 0x14fa0
movq (%rax), %rdi
callq 0x32e0
movl 0x62d3(%rip), %esi      # 0x15270
xorl %edi, %edi
callq 0x49db
andb $-0xb, 0x6539(%rip)     # 0x154e4
xorl %edi, %edi
xorl %esi, %esi
leaq 0x6522(%rip), %rdx      # 0x154d8
callq 0x3350
testl %eax, %eax
jne 0xf3be
movl $0x1, 0x62af(%rip)      # 0x1527c
movl $0x0, 0x64c1(%rip)      # 0x15498
movl 0x6297(%rip), %esi      # 0x15274
leaq 0x20a4(%rip), %rdi      # 0x11088
movl $0x1, %edx
xorl %eax, %eax
callq 0x3060
leaq 0x20(%rsp), %r12
movq %r14, %rbp
movq %r15, %r14
movq %r13, %r15
jmp 0xe87f
cmpl $0x71, %eax
jne 0xe87f
jmp 0xf580
cmpl %ecx, %esi
jge 0xe87f
leal 0x1(%rsi), %eax
movl %eax, 0x625a(%rip)      # 0x1527c
addl 0x624c(%rip), %esi      # 0x15274
leaq 0x2059(%rip), %rdi      # 0x11088
jmp 0xf55e
cmpl $0x0, 0x645d(%rip)      # 0x15498
je 0xe87f
movl 0x622d(%rip), %esi      # 0x15274
movl 0x622b(%rip), %edx      # 0x15278
leaq 0x2034(%rip), %rbx      # 0x11088
movq %rbx, %rdi
xorl %eax, %eax
callq 0x3060
movl 0x6434(%rip), %edi      # 0x15498
decl %edi
movl %edi, 0x642c(%rip)      # 0x15498
movl 0x61fe(%rip), %esi      # 0x15270
addl %edi, %esi
callq 0x49db
movl 0x61f5(%rip), %esi      # 0x15274
movl 0x61f3(%rip), %edx      # 0x15278
movq %rbx, %rdi
jmp 0xf563
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rsp, %rsi
callq 0x3320
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0xf0ca
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0xf0e1
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3260
callq 0x3d7f
movq 0x5eb3(%rip), %rax      # 0x14fa0
movq (%rax), %rdi
callq 0x32e0
movl 0x6175(%rip), %esi      # 0x15270
xorl %edi, %edi
callq 0x49db
andb $-0xb, 0x63db(%rip)     # 0x154e4
xorl %edi, %edi
xorl %esi, %esi
leaq 0x63c4(%rip), %rdx      # 0x154d8
callq 0x3350
testl %eax, %eax
jne 0xf56f
movl $0x1, 0x6151(%rip)      # 0x1527c
movl $0x0, 0x6363(%rip)      # 0x15498
movl 0x6139(%rip), %esi      # 0x15274
movl 0x6137(%rip), %edx      # 0x15278
leaq 0x1f40(%rip), %rdi      # 0x11088
jmp 0xf563
movq %rbp, (%rsp)
movq 0x62d0(%rip), %rsi      # 0x15428
movq 0x62d1(%rip), %rdx      # 0x15430
addq %rsi, %rdx
movq %rsp, %rbp
movq %rbp, %rdi
callq 0xfc98
movq 0x62bc(%rip), %rax      # 0x15430
testq %rax, %rax
je 0xf1ac
xorl %esi, %esi
xorl %ebx, %ebx
movq (%rsp), %rcx
cmpb $0x20, (%rcx,%rsi)
jne 0xf1a2
movl $0x1, %edx
movq %rbp, %rdi
movl $0x5c, %ecx
callq 0x34b0
incl %ebx
movq 0x628e(%rip), %rax      # 0x15430
incl %ebx
movslq %ebx, %rsi
cmpq %rsi, %rax
ja 0xf17d
leaq 0x58(%rsp), %rax
movq %rax, 0x48(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0xfc98
movq %rbx, %rdi
leaq 0x1ec0(%rip), %rsi      # 0x11099
callq 0x3480
movq 0x62a3(%rip), %rax      # 0x15488
movslq 0x6090(%rip), %rcx      # 0x1527c
movslq 0x62a5(%rip), %rdx      # 0x15498
addq %rcx, %rdx
movq -0x8(%rax,%rdx,8), %rsi
addq $0x13, %rsi
movq %rbx, %rdi
callq 0x3480
movq %r15, 0x20(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf2b6
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0xf2bd
movq %r15, 0x20(%rsp)
movq 0x620b(%rip), %rsi      # 0x15448
movq 0x620c(%rip), %rdx      # 0x15450
addq %rsi, %rdx
movq %r12, %rdi
callq 0xfc98
movq %r12, %rdi
leaq 0x1e40(%rip), %rsi      # 0x11099
callq 0x3480
movq 0x6223(%rip), %rax      # 0x15488
movslq 0x6010(%rip), %rcx      # 0x1527c
movslq 0x6225(%rip), %rdx      # 0x15498
addq %rcx, %rdx
movq -0x8(%rax,%rdx,8), %rsi
addq $0x13, %rsi
movq %r12, %rdi
callq 0x3480
movq %rbp, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x61a9(%rip), %rdi      # 0x15448
je 0xf3c8
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0xf3cf
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xf2f1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
callq 0x30a0
movl %eax, %ebp
testl %eax, %eax
jne 0xf370
leaq 0x1dd5(%rip), %rdi      # 0x110d8
movl $0x442, %esi            # imm = 0x442
movl $0x180, %edx            # imm = 0x180
xorl %eax, %eax
callq 0x31b0
movl %eax, %ebx
leaq 0x1dc3(%rip), %rdi      # 0x110e0
cmpl $-0x1, %eax
je 0xf35e
movq 0x5ca7(%rip), %r12      # 0x14fd0
movq (%r12), %rdi
callq 0x3280
movl %eax, %edi
callq 0x33b0
movl %eax, %r15d
movq (%r12), %rdi
callq 0x3280
movl %ebx, %edi
movl %eax, %esi
callq 0x3220
leaq 0x1d9c(%rip), %rdi      # 0x110f1
cmpl $-0x1, %eax
jne 0xf5cb
callq 0x31e0
movl $0xff, 0x44(%rsp)
leaq 0x20(%rsp), %r12
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xf38c
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3260
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xf3a7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
testl %ebp, %ebp
leaq 0x30(%rsp), %r15
leaq 0x10(%rsp), %rbp
jne 0xe87f
jmp 0xf5ab
callq 0x350e
jmp 0xefc3
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rsp, %rsi
callq 0x3320
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0xf405
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0xf41c
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x5ebd(%rip), %rdi      # 0x152e0
leaq 0x5ffe(%rip), %rsi      # 0x15428
callq 0x10436
movq %r15, 0x20(%rsp)
movq 0x5fed(%rip), %rsi      # 0x15428
movq 0x5fee(%rip), %rdx      # 0x15430
addq %rsi, %rdx
movq %r12, %rdi
callq 0xfc98
movq %r12, %rdi
leaq 0x1c42(%rip), %rsi      # 0x11099
callq 0x3480
movq 0x6025(%rip), %rax      # 0x15488
movslq 0x5e12(%rip), %rcx      # 0x1527c
movslq 0x6027(%rip), %rdx      # 0x15498
addq %rcx, %rdx
movq -0x8(%rax,%rdx,8), %rsi
addq $0x13, %rsi
movq %r12, %rdi
callq 0x3480
movq %rbp, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x5f8b(%rip), %rdi      # 0x15428
je 0xf4ad
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0xf4b4
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rsp, %rsi
callq 0x3320
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0xf4ea
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0xf501
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3260
callq 0x3d7f
movq 0x5a93(%rip), %rax      # 0x14fa0
movq (%rax), %rdi
callq 0x32e0
movl 0x5d55(%rip), %esi      # 0x15270
xorl %edi, %edi
callq 0x49db
andb $-0xb, 0x5fbb(%rip)     # 0x154e4
xorl %edi, %edi
xorl %esi, %esi
leaq 0x5fa4(%rip), %rdx      # 0x154d8
callq 0x3350
testl %eax, %eax
jne 0xf579
movl $0x1, 0x5d35(%rip)      # 0x1527c
movl $0x0, 0x5f47(%rip)      # 0x15498
movl 0x5d1d(%rip), %esi      # 0x15274
leaq 0x1b2a(%rip), %rdi      # 0x11088
movl $0x1, %edx
xorl %eax, %eax
callq 0x3060
jmp 0xe87f
callq 0x3596
jmp 0xf121
callq 0x3574
jmp 0xf53d
leaq 0x5f15(%rip), %rdx      # 0x1549c
movl $0x0, 0x44(%rsp)
xorl %edi, %edi
xorl %esi, %esi
callq 0x3350
leaq 0x200c(%rip), %rdi      # 0x115ab
xorl %eax, %eax
callq 0x3060
callq 0x3d7f
movl 0x44(%rsp), %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x34f2
jmp 0xe83a
movq 0x20(%rsp), %rdx
leaq 0x1b31(%rip), %rdi      # 0x11108
leaq 0x1b33(%rip), %rsi      # 0x11111
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x3330
movq 0x59e2(%rip), %rax      # 0x14fd0
movq (%rax), %rdi
callq 0x32e0
movl %ebx, %edi
callq 0x34a0
movq 0x59cc(%rip), %rax      # 0x14fd0
movq (%rax), %rdi
callq 0x3280
movl %r15d, %edi
movl %eax, %esi
callq 0x3220
movl %r15d, %edi
callq 0x34a0
movl $0x1, %edi
callq 0x3310
jmp 0xf6a7
jmp 0xf671
jmp 0xf671
movq %rax, %rbx
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0xf6e6
movq 0x78(%rsp), %rsi
jmp 0xf6de
jmp 0xf671
jmp 0xf671
jmp 0xf6c8
jmp 0xf656
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xf6cb
movq 0x58(%rsp), %rsi
jmp 0xf6be
jmp 0xf671
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0xf6e6
movq 0x30(%rsp), %rsi
jmp 0xf6de
movq %rax, %rbx
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0xf6e6
movq 0x98(%rsp), %rsi
jmp 0xf6de
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xf6cb
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0xf6cb
movq %rax, %rbx
leaq 0x10(%rsp), %r12
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0xf6e6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq %rbx, %rdi
callq 0x3450