// File: sthapliyal37[P]Microprocessor_8085_Updated/main.cpp
// Function: main
int main(int argc , char*argv[])
{
	map<string,string> memory;
	vector<string> sequence;
	string input;
	ifstream infile("test5.txt");
	if(argc!=0)	
	{
			ifstream infile(argv[1]);
	}
	string start=" ",pc=" ";
	string end="HLT",s;
	string registers[7];
	bool flag[8];
	int n;
	cout<<"Enter  Number of MemoryAddresses needed:: ";
	cin>>n;
	for(int i=0;i<n;i++)
	{		
		string str1,str2;
		cin>>str1>>str2;
		memory[str1]=str2;		
	}
	for(int i=0;i<7;i++)
			registers[i]="00";
	for(int i=0;i<8;i++)
			flag[i]=false;	
	cout<<"Starting Memory Address :: ";
	
	cin>>start;
	pc=start;
	/*if(memoryValidation(start))
	/{
				cout<<endl<<"INVALID/MEMORY ADDRESS OR RESERVED ADDRESS"<<endl;
					return 0;
	}*/	
	getline(infile,s);
	while(s.compare(end))
	{
				//if(inputValidation(s))
				//{
					cout<<pc;
					sequence.push_back(pc);	
					memory[pc]=s;
					string delimiter = " ";
					string token = s.substr(0, s.find(delimiter)); 
					pc=allocate_memory(token,pc);
					cout<<"::"<<s<<endl;
					getline(infile,s);
				//}		
				/*else
				{
							cout<<"INVALID INPUT"<<endl;
							return 0;	
			}*/
	}
	pc=start;
	int count=0;	
	int last=sequence.size()-1;
	//cout<<sequence[last];
	while(pc.compare(sequence[last]))
	{					
			cout<<memory[pc]<<endl;		
		pc=execute_statement(memory[pc],flag,registers,memory,pc);
	}
	pc=execute_statement(memory[pc],flag,registers,memory,pc);
	cout<<"*************************************************"<<endl<<endl;
	cout<<"REGISTERS"<<endl;
	for(int i=0;i<7;i++)	
		cout<<registers[i]<<" ";
	cout<<endl;	
	cout<<"*************************************************"<<endl;	
	cout<<endl;
	cout<<"flag"<<endl;
	for(int i=0;i<7;i++)	
		cout<<flag[i]<<" ";
	cout<<endl;

	cout<<"Enter  Number of RESult Addresses needed:: ";
	cin>>n;
	string result[n];
	for(int i=0;i<n;i++)
		cin>>result[i];
		
	cout<<"*************************************************"<<endl;
	cout<<"Accumulator Result ::"<<registers[0]<<endl;	
	cout<<"*************************************************"<<endl;
	cout<<"Memory Result"<<endl;
	for(int i=0;i<n;i++)
		cout<<result[i]<<" :: "<<memory[result[i]]<<endl;;

return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9d0, %rsp            # imm = 0x9D0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x13fd0
leaq -0x58(%rbp), %rdi
callq 0xaad0
leaq -0x78(%rbp), %rdi
callq 0x3390
leaq 0x22d5(%rip), %rsi      # 0x15250
leaq -0x280(%rbp), %rdi
movl $0x8, %edx
callq 0x3470
jmp 0x12f8e
cmpl $0x0, -0x8(%rbp)
je 0x12feb
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x498(%rbp), %rdi
movl $0x8, %edx
callq 0x3470
jmp 0x12faf
leaq -0x498(%rbp), %rdi
callq 0x30a0
jmp 0x12feb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x13f9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x13f93
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x3440
movq -0x800(%rbp), %rdx
leaq 0x2297(%rip), %rsi      # 0x152a3
leaq -0x4b8(%rbp), %rdi
callq 0x50d0
jmp 0x1301a
leaq -0x4b9(%rbp), %rdi
callq 0x32f0
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0x808(%rbp)
callq 0x3440
movq -0x808(%rbp), %rdx
leaq 0x225c(%rip), %rsi      # 0x152a3
leaq -0x4e0(%rbp), %rdi
callq 0x50d0
jmp 0x13055
leaq -0x4e1(%rbp), %rdi
callq 0x32f0
leaq -0x509(%rbp), %rdi
movq %rdi, -0x810(%rbp)
callq 0x3440
movq -0x810(%rbp), %rdx
leaq 0x21d8(%rip), %rsi      # 0x1525a
leaq -0x508(%rbp), %rdi
callq 0x50d0
jmp 0x13090
leaq -0x509(%rbp), %rdi
callq 0x32f0
leaq -0x530(%rbp), %rdi
callq 0x3390
leaq -0x610(%rbp), %rax
movq %rax, %rcx
addq $0xe0, %rcx
movq %rcx, -0x820(%rbp)
movq %rax, -0x818(%rbp)
movq -0x818(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0x3390
movq -0x828(%rbp), %rax
movq -0x820(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x818(%rbp)
jne 0x130c7
movq 0x7ed1(%rip), %rdi      # 0x1afd0
leaq 0x2158(%rip), %rsi      # 0x1525e
callq 0x3270
jmp 0x1310d
movq 0x7ecc(%rip), %rdi      # 0x1afe0
leaq -0x61c(%rbp), %rsi
callq 0x3180
jmp 0x13122
movl $0x0, -0x620(%rbp)
movl -0x620(%rbp), %eax
cmpl -0x61c(%rbp), %eax
jge 0x13297
leaq -0x640(%rbp), %rdi
movq %rdi, -0x838(%rbp)
callq 0x3390
leaq -0x660(%rbp), %rdi
callq 0x3390
movq -0x838(%rbp), %rsi
movq 0x7e75(%rip), %rdi      # 0x1afe0
callq 0x3350
movq %rax, -0x830(%rbp)
jmp 0x13179
movq -0x830(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x3350
jmp 0x1318e
leaq -0x40(%rbp), %rdi
leaq -0x640(%rbp), %rsi
callq 0xe790
movq %rax, -0x840(%rbp)
jmp 0x131a7
movq -0x840(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x3050
jmp 0x131bc
leaq -0x660(%rbp), %rdi
callq 0x3190
leaq -0x640(%rbp), %rdi
callq 0x3190
movl -0x620(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x620(%rbp)
jmp 0x1312c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x4b9(%rbp), %rdi
callq 0x32f0
jmp 0x13f93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x4e1(%rbp), %rdi
callq 0x32f0
jmp 0x13f87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x509(%rbp), %rdi
callq 0x32f0
jmp 0x13f7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x13f17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x660(%rbp), %rdi
callq 0x3190
leaq -0x640(%rbp), %rdi
callq 0x3190
jmp 0x13f17
movl $0x0, -0x664(%rbp)
cmpl $0x7, -0x664(%rbp)
jge 0x132de
movslq -0x664(%rbp), %rax
shlq $0x5, %rax
leaq -0x610(%rbp,%rax), %rdi
leaq 0x1f26(%rip), %rsi      # 0x151ea
callq 0x3380
jmp 0x132cb
jmp 0x132cd
movl -0x664(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x664(%rbp)
jmp 0x132a1
movl $0x0, -0x668(%rbp)
cmpl $0x8, -0x668(%rbp)
jge 0x13311
movslq -0x668(%rbp), %rax
movb $0x0, -0x618(%rbp,%rax)
movl -0x668(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x668(%rbp)
jmp 0x132e8
movq 0x7cb8(%rip), %rdi      # 0x1afd0
leaq 0x1f6a(%rip), %rsi      # 0x15289
callq 0x3270
jmp 0x13326
movq 0x7cb3(%rip), %rdi      # 0x1afe0
leaq -0x4b8(%rbp), %rsi
callq 0x3350
jmp 0x1333b
leaq -0x4e0(%rbp), %rdi
leaq -0x4b8(%rbp), %rsi
callq 0x3050
jmp 0x13350
leaq -0x280(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x3090
jmp 0x13365
jmp 0x13367
leaq -0x530(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x3040
movl %eax, -0x844(%rbp)
jmp 0x13382
movl -0x844(%rbp), %eax
cmpl $0x0, %eax
je 0x1360e
movq 0x7c38(%rip), %rdi      # 0x1afd0
leaq -0x4e0(%rbp), %rsi
callq 0x3260
jmp 0x133a6
leaq -0x58(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x13ff0
jmp 0x133b8
leaq -0x40(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0xe790
movq %rax, -0x850(%rbp)
jmp 0x133d1
movq -0x850(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x3050
jmp 0x133e6
leaq -0x689(%rbp), %rdi
movq %rdi, -0x858(%rbp)
callq 0x3440
movq -0x858(%rbp), %rdx
leaq 0x1e9c(%rip), %rsi      # 0x152a3
leaq -0x688(%rbp), %rdi
callq 0x50d0
jmp 0x13415
leaq -0x689(%rbp), %rdi
callq 0x32f0
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x860(%rbp)
leaq -0x530(%rbp), %rdi
movq %rdi, -0x868(%rbp)
leaq -0x688(%rbp), %rsi
callq 0x34b0
movq -0x868(%rbp), %rsi
movq -0x860(%rbp), %rdx
movq %rax, %rcx
leaq -0x6b0(%rbp), %rdi
callq 0x32a0
jmp 0x13465
leaq -0x6f0(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x3110
jmp 0x1347a
leaq -0x710(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x3110
jmp 0x1348f
leaq -0x6d0(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
leaq -0x710(%rbp), %rdx
callq 0x5760
jmp 0x134ab
leaq -0x4e0(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
movq %rsi, -0x878(%rbp)
callq 0x3330
movq -0x878(%rbp), %rdi
callq 0x3190
leaq -0x710(%rbp), %rdi
callq 0x3190
leaq -0x6f0(%rbp), %rdi
callq 0x3190
movq 0x7ae0(%rip), %rdi      # 0x1afd0
leaq 0x1e2e(%rip), %rsi      # 0x15325
callq 0x3270
movq %rax, -0x870(%rbp)
jmp 0x13505
movq -0x870(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x3260
movq %rax, -0x880(%rbp)
jmp 0x13521
movq -0x880(%rbp), %rdi
movq 0x7a91(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13536
leaq -0x280(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x3090
jmp 0x1354b
leaq -0x6b0(%rbp), %rdi
callq 0x3190
leaq -0x688(%rbp), %rdi
callq 0x3190
jmp 0x13367
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x689(%rbp), %rdi
callq 0x32f0
jmp 0x13f17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x135fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x135f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x135e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x710(%rbp), %rdi
callq 0x3190
leaq -0x6f0(%rbp), %rdi
callq 0x3190
leaq -0x6b0(%rbp), %rdi
callq 0x3190
leaq -0x688(%rbp), %rdi
callq 0x3190
jmp 0x13f17
leaq -0x4e0(%rbp), %rdi
leaq -0x4b8(%rbp), %rsi
callq 0x3050
jmp 0x13623
movl $0x0, -0x714(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb340
subq $0x1, %rax
movl %eax, -0x718(%rbp)
movslq -0x718(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0xab20
movq %rax, %rsi
leaq -0x4e0(%rbp), %rdi
callq 0x3040
movl %eax, -0x884(%rbp)
jmp 0x13667
movl -0x884(%rbp), %eax
cmpl $0x0, %eax
je 0x137cc
leaq -0x40(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0xe790
movq %rax, -0x890(%rbp)
jmp 0x1368f
movq -0x890(%rbp), %rsi
movq 0x7933(%rip), %rdi      # 0x1afd0
callq 0x3260
movq %rax, -0x898(%rbp)
jmp 0x136ab
movq -0x898(%rbp), %rdi
movq 0x7907(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x136c0
leaq -0x40(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0xe790
movq %rax, -0x8a0(%rbp)
jmp 0x136d9
movq -0x8a0(%rbp), %rsi
leaq -0x758(%rbp), %rdi
callq 0x3110
jmp 0x136ee
leaq -0x618(%rbp), %rax
movq %rax, -0x8b0(%rbp)
leaq -0x610(%rbp), %rax
movq %rax, -0x8a8(%rbp)
leaq -0x778(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x3110
jmp 0x1371f
movq -0x8a8(%rbp), %rcx
movq -0x8b0(%rbp), %rdx
leaq -0x738(%rbp), %rdi
leaq -0x758(%rbp), %rsi
leaq -0x40(%rbp), %r8
leaq -0x778(%rbp), %r9
callq 0x8830
jmp 0x1374d
leaq -0x4e0(%rbp), %rdi
leaq -0x738(%rbp), %rsi
callq 0x3330
leaq -0x738(%rbp), %rdi
callq 0x3190
leaq -0x778(%rbp), %rdi
callq 0x3190
leaq -0x758(%rbp), %rdi
callq 0x3190
jmp 0x13640
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x137bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x778(%rbp), %rdi
callq 0x3190
leaq -0x758(%rbp), %rdi
callq 0x3190
jmp 0x13f17
leaq -0x40(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0xe790
movq %rax, -0x8b8(%rbp)
jmp 0x137e5
movq -0x8b8(%rbp), %rsi
leaq -0x7b8(%rbp), %rdi
callq 0x3110
jmp 0x137fa
leaq -0x618(%rbp), %rax
movq %rax, -0x8c8(%rbp)
leaq -0x610(%rbp), %rax
movq %rax, -0x8c0(%rbp)
leaq -0x7d8(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x3110
jmp 0x1382b
movq -0x8c0(%rbp), %rcx
movq -0x8c8(%rbp), %rdx
leaq -0x798(%rbp), %rdi
leaq -0x7b8(%rbp), %rsi
leaq -0x40(%rbp), %r8
leaq -0x7d8(%rbp), %r9
callq 0x8830
jmp 0x13859
leaq -0x4e0(%rbp), %rdi
leaq -0x798(%rbp), %rsi
movq %rsi, -0x8d8(%rbp)
callq 0x3330
movq -0x8d8(%rbp), %rdi
callq 0x3190
leaq -0x7d8(%rbp), %rdi
callq 0x3190
leaq -0x7b8(%rbp), %rdi
callq 0x3190
movq 0x7732(%rip), %rdi      # 0x1afd0
leaq 0x1a00(%rip), %rsi      # 0x152a5
callq 0x3270
movq %rax, -0x8d0(%rbp)
jmp 0x138b3
movq -0x8d0(%rbp), %rdi
movq 0x76ff(%rip), %rsi      # 0x1afc0
callq 0x32c0
movq %rax, -0x8e0(%rbp)
jmp 0x138cf
movq -0x8e0(%rbp), %rdi
movq 0x76e3(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x138e4
movq 0x76e5(%rip), %rdi      # 0x1afd0
leaq 0x19e5(%rip), %rsi      # 0x152d7
callq 0x3270
movq %rax, -0x8e8(%rbp)
jmp 0x13900
movq -0x8e8(%rbp), %rdi
movq 0x76b2(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13915
movl $0x0, -0x7dc(%rbp)
cmpl $0x7, -0x7dc(%rbp)
jge 0x139bf
movslq -0x7dc(%rbp), %rax
shlq $0x5, %rax
leaq -0x610(%rbp,%rax), %rsi
movq 0x768a(%rip), %rdi      # 0x1afd0
callq 0x3260
movq %rax, -0x8f0(%rbp)
jmp 0x13954
movq -0x8f0(%rbp), %rdi
leaq 0x1941(%rip), %rsi      # 0x152a3
callq 0x3270
jmp 0x13969
jmp 0x1396b
movl -0x7dc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7dc(%rbp)
jmp 0x1391f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x139ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x7d8(%rbp), %rdi
callq 0x3190
leaq -0x7b8(%rbp), %rdi
callq 0x3190
jmp 0x13f17
movq 0x760a(%rip), %rdi      # 0x1afd0
movq 0x75f3(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x139d4
movq 0x75f5(%rip), %rdi      # 0x1afd0
leaq 0x18c3(%rip), %rsi      # 0x152a5
callq 0x3270
movq %rax, -0x8f8(%rbp)
jmp 0x139f0
movq -0x8f8(%rbp), %rdi
movq 0x75c2(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13a05
movq 0x75c4(%rip), %rdi      # 0x1afd0
movq 0x75ad(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13a1a
movq 0x75af(%rip), %rdi      # 0x1afd0
leaq 0x18b9(%rip), %rsi      # 0x152e1
callq 0x3270
movq %rax, -0x900(%rbp)
jmp 0x13a36
movq -0x900(%rbp), %rdi
movq 0x757c(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13a4b
movl $0x0, -0x7e0(%rbp)
cmpl $0x7, -0x7e0(%rbp)
jge 0x13aad
movslq -0x7e0(%rbp), %rax
movzbl -0x618(%rbp,%rax), %esi
andl $0x1, %esi
movq 0x7559(%rip), %rdi      # 0x1afd0
callq 0x3450
movq %rax, -0x908(%rbp)
jmp 0x13a85
movq -0x908(%rbp), %rdi
leaq 0x1810(%rip), %rsi      # 0x152a3
callq 0x3270
jmp 0x13a9a
jmp 0x13a9c
movl -0x7e0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7e0(%rbp)
jmp 0x13a55
movq 0x751c(%rip), %rdi      # 0x1afd0
movq 0x7505(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13ac2
movq 0x7507(%rip), %rdi      # 0x1afd0
leaq 0x1816(%rip), %rsi      # 0x152e6
callq 0x3270
jmp 0x13ad7
movq 0x7502(%rip), %rdi      # 0x1afe0
leaq -0x61c(%rbp), %rsi
callq 0x3180
jmp 0x13aec
movl -0x61c(%rbp), %eax
movq %rax, -0x918(%rbp)
movq %rsp, %rcx
movq %rcx, -0x7e8(%rbp)
movq %rax, %rdx
shlq $0x5, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x910(%rbp)
movq %rcx, %rsp
movq %rax, -0x7f0(%rbp)
cmpq $0x0, %rax
je 0x13b7e
movq -0x910(%rbp), %rax
movq -0x918(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x928(%rbp)
movq %rax, -0x920(%rbp)
movq -0x920(%rbp), %rdi
movq %rdi, -0x930(%rbp)
callq 0x3390
movq -0x930(%rbp), %rax
movq -0x928(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x920(%rbp)
jne 0x13b4d
movl $0x0, -0x7f4(%rbp)
movl -0x7f4(%rbp), %eax
cmpl -0x61c(%rbp), %eax
jge 0x13c1e
movq -0x910(%rbp), %rsi
movslq -0x7f4(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rsi
movq 0x742a(%rip), %rdi      # 0x1afe0
callq 0x3350
jmp 0x13bbd
jmp 0x13bbf
movl -0x7f4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7f4(%rbp)
jmp 0x13b88
movq -0x910(%rbp), %rcx
movq %rdx, %rsi
movq -0x918(%rbp), %rdx
movq %rsi, -0x940(%rbp)
movq %rax, %rsi
movq -0x940(%rbp), %rax
movq %rsi, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x938(%rbp)
je 0x13e82
jmp 0x13e51
movq 0x73ab(%rip), %rdi      # 0x1afd0
leaq 0x1679(%rip), %rsi      # 0x152a5
callq 0x3270
movq %rax, -0x948(%rbp)
jmp 0x13c3a
movq -0x948(%rbp), %rdi
movq 0x7378(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13c4f
movq 0x737a(%rip), %rdi      # 0x1afd0
leaq 0x16b5(%rip), %rsi      # 0x15312
callq 0x3270
movq %rax, -0x950(%rbp)
jmp 0x13c6b
movq -0x950(%rbp), %rdi
leaq -0x610(%rbp), %rsi
callq 0x3260
movq %rax, -0x958(%rbp)
jmp 0x13c87
movq -0x958(%rbp), %rdi
movq 0x732b(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13c9c
movq 0x732d(%rip), %rdi      # 0x1afd0
leaq 0x15fb(%rip), %rsi      # 0x152a5
callq 0x3270
movq %rax, -0x960(%rbp)
jmp 0x13cb8
movq -0x960(%rbp), %rdi
movq 0x72fa(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13ccd
movq 0x72fc(%rip), %rdi      # 0x1afd0
leaq 0x164d(%rip), %rsi      # 0x15328
callq 0x3270
movq %rax, -0x968(%rbp)
jmp 0x13ce9
movq -0x968(%rbp), %rdi
movq 0x72c9(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13cfe
movl $0x0, -0x7f8(%rbp)
movl -0x7f8(%rbp), %eax
cmpl -0x61c(%rbp), %eax
jge 0x13dce
movq -0x910(%rbp), %rsi
movslq -0x7f8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rsi
movq 0x729a(%rip), %rdi      # 0x1afd0
callq 0x3260
movq %rax, -0x970(%rbp)
jmp 0x13d44
movq -0x970(%rbp), %rdi
leaq 0x154e(%rip), %rsi      # 0x152a0
callq 0x3270
movq %rax, -0x978(%rbp)
jmp 0x13d60
movq -0x910(%rbp), %rsi
movslq -0x7f8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0xe790
movq %rax, -0x980(%rbp)
jmp 0x13d87
movq -0x980(%rbp), %rsi
movq -0x978(%rbp), %rdi
callq 0x3260
movq %rax, -0x988(%rbp)
jmp 0x13da3
movq -0x988(%rbp), %rdi
movq 0x720f(%rip), %rsi      # 0x1afc0
callq 0x32c0
jmp 0x13db8
jmp 0x13dba
movl -0x7f8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7f8(%rbp)
jmp 0x13d08
movq -0x910(%rbp), %rcx
movq -0x918(%rbp), %rdx
movl $0x0, -0x4(%rbp)
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x990(%rbp)
je 0x13e2a
movq -0x990(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x998(%rbp)
callq 0x3190
movq -0x910(%rbp), %rcx
movq -0x998(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x990(%rbp)
jne 0x13df9
movq -0x7e8(%rbp), %rax
movq %rax, %rsp
leaq -0x610(%rbp), %rax
movq %rax, -0x9a8(%rbp)
addq $0xe0, %rax
movq %rax, -0x9a0(%rbp)
jmp 0x13e87
movq -0x938(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x9b0(%rbp)
callq 0x3190
movq -0x910(%rbp), %rcx
movq -0x9b0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x938(%rbp)
jne 0x13e51
jmp 0x13f17
movq -0x9a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x9b8(%rbp)
callq 0x3190
movq -0x9a8(%rbp), %rcx
movq -0x9b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x9a0(%rbp)
jne 0x13e87
leaq -0x530(%rbp), %rdi
callq 0x3190
leaq -0x508(%rbp), %rdi
callq 0x3190
leaq -0x4e0(%rbp), %rdi
callq 0x3190
leaq -0x4b8(%rbp), %rdi
callq 0x3190
leaq -0x280(%rbp), %rdi
callq 0x30a0
leaq -0x78(%rbp), %rdi
callq 0x3190
leaq -0x58(%rbp), %rdi
callq 0xab40
leaq -0x40(%rbp), %rdi
callq 0x14060
movl -0x4(%rbp), %eax
movq %rbp, %rsp
popq %rbp
retq
leaq -0x610(%rbp), %rax
movq %rax, -0x9c8(%rbp)
addq $0xe0, %rax
movq %rax, -0x9c0(%rbp)
movq -0x9c0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x9d0(%rbp)
callq 0x3190
movq -0x9c8(%rbp), %rcx
movq -0x9d0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x9c0(%rbp)
jne 0x13f32
leaq -0x530(%rbp), %rdi
callq 0x3190
leaq -0x508(%rbp), %rdi
callq 0x3190
leaq -0x4e0(%rbp), %rdi
callq 0x3190
leaq -0x4b8(%rbp), %rdi
callq 0x3190
leaq -0x280(%rbp), %rdi
callq 0x30a0
leaq -0x78(%rbp), %rdi
callq 0x3190
leaq -0x58(%rbp), %rdi
callq 0xab40
leaq -0x40(%rbp), %rdi
callq 0x14060
movq -0x288(%rbp), %rdi
callq 0x3430
nopw %cs:(%rax,%rax)