// File: /workspace/github_cpp_makefile_star2_O1/DivyanshuSaxena[P]green-vrp/Main.cpp
// Function: fillGlobalVariables()
void fillGlobalVariables() {
	// Call certain file from here which will scan .csv(excel) file
	// and fill customerpool accordingly.

	//reading vehicle type below
	ifstream infile;
	infile.open("input_vehicle_type.csv");

		string temp;
		getline(infile,temp,'\n');

	    getline(infile,temp,',');//id
	    getline(infile,temp,',');//type
	    getline(infile,temp,',');//vol max
		capVolType1=stod(temp);
	    getline(infile,temp,',');//max weight
		capVolType1=stod(temp);	

	    getline(infile,temp,',');//driving cnt--unlimited

	    getline(infile,temp,',');//driving range--per full charge
		distanceType1=stod(temp);
		
	    getline(infile,temp,',');//charging time--sae for both
		chargeTime1=stod(temp)*60;
		
	    getline(infile,temp,',');//unit cost--per distance
		unitTransCost1=stod(temp);
		
	    getline(infile,temp,'\n');//fixed cost
		fixedCost1=stod(temp);
		

	    getline(infile,temp,',');
	    getline(infile,temp,',');
	    getline(infile,temp,',');
		capVolType2=stod(temp);
	    getline(infile,temp,',');
		capVolType2=stod(temp);	

	    getline(infile,temp,',');

	    getline(infile,temp,',');
		distanceType2=stod(temp);
		
	    getline(infile,temp,',');
		chargeTime2=stod(temp)*60;
		
	    getline(infile,temp,',');
		unitTransCost2=stod(temp);
		
	    getline(infile,temp,'\n');
		fixedCost2=stod(temp);
		//readingn vehicle info end
		//input of distance_time begins

		std::string file_path= "input_distance-time.txt";
		// std::cout<<"hi"<<std::endl;
		std::ifstream fin(file_path.c_str());
		// std::cout<<"hi"<<std::endl;
		
		getline(fin, temp);//ignoring the first line with heading
		for(long i=0;i<=1211099;i++)
		{
			long fromNode,toNode;
			getline(fin,temp,',');
			fromNode=stoi(temp);
			getline(fin,temp,',');
			toNode=stoi(temp);
			getline(fin,temp,',');

			travelDistance[fromNode][toNode]=stod(temp);
			getline(fin,temp,',');
			travelTimes[fromNode][toNode]=stod(temp);
		}
		//distance-time input end between nodes
		//reading the input_node file below

		numChargingStations=100;
		numCustomers=1000;

		for (int k=1;k<=numCustomers;k++){
			customerPool.push_back(k);
		}//1-1000

		numNodes=1101;
		infile.open("input_vehicle_type.csv");
		string s_temp;
		getline(infile,s_temp,'\n');//enter heading lines
		//importing depot info

		Customer depot;
		getline(infile,s_temp,',');//id
		depot.id=stoi(s_temp);
		getline(infile,s_temp,',');//type
		getline(infile,s_temp,',');//lng
		// depot.lng=stod(s_temp);
		getline(infile,s_temp,',');//lat
		// depot.lat=stod(s_temp);
		getline(infile,s_temp,',');
		getline(infile,s_temp,',');
		getline(infile,s_temp,':');//start time:hour
			double depothour=stod(s_temp)*60;
		getline(infile,s_temp,',');//start time:minute
			depot.timeWindowStarts=stod(s_temp)+depothour;
		getline(infile,s_temp,'\n');//end time
			depot.timeWindowEnds=1440;
		
		customers.push_back(depot);
		
		getline(infile,s_temp,',');
		
		for(int i=1;i<=1000;i++)
		{
			string s_temp;
			Customer tempNode;
			getline(infile,s_temp,',');//id
			tempNode.id=stoi(s_temp);
			getline(infile,s_temp,',');//type
			getline(infile,s_temp,',');//lng
			// tempNode.lng=stod(s_temp);
			getline(infile,s_temp,',');//lat
			// tempNode.lat=stod(s_temp);
			getline(infile,s_temp,',');//weight
			tempNode.demandWeight=stod(s_temp);
			getline(infile,s_temp,',');//volume
			tempNode.demandVol=stod(s_temp);			
			getline(infile,s_temp,':');//start time:hour
					double customerstarthour=stod(s_temp)*60;
			getline(infile,s_temp,',');//start time:minute		
					tempNode.timeWindowStarts=customerstarthour + stod(s_temp);
			getline(infile,s_temp,':');//end time:hour
					double customerendhour=stod(s_temp)*60;
			getline(infile,s_temp,'\n');//end time
					tempNode.timeWindowEnds=customerendhour +stod(s_temp);
			
			customers.push_back(tempNode);
		}
		for(int i=1001;i<=1100;i++)
		{
			string s_temp;
			Customer csNode;
			getline(infile,s_temp,',');//id
			csNode.id=stoi(s_temp);
			getline(infile,s_temp,',');//type
			getline(infile,s_temp,',');//lng
			// csNode.lng=stod(s_temp);
			getline(infile,s_temp,',');//lat
			// csNode.lat=stod(s_temp);
			getline(infile,s_temp,',');//weight
			getline(infile,s_temp,',');//volume
			getline(infile,s_temp,',');//start time
			getline(infile,s_temp,'\n');//end time
			
			customers.push_back(csNode);

		}
//reading input node end




	    // getline(infile,capVolType1,',');

		// getline(infile,capWeightType1,',');
	    // getline(infile,temp,',');
	    // getline(infile,distanceType1,',');
	    // getline(infile,chargeTime1,',');
	    // getline(infile,unitTransCost1,',');
	    // getline(infile,fixedCost1,'\n');

	    // getline(infile,temp,',');
	    // getline(infile,temp,',');
	    // getline(infile,capVolType2,',');
	    // getline(infile,capWeightType2,',');
	    // getline(infile,temp,',');
	    // getline(infile,capVolType2,',');
	    // getline(infile,chargeTime2,',');
	    // getline(infile,unitTransCost2,',');
	    // getline(infile,fixedCost2,'\n');
		


		
		


    // vector<char*> values;
    // const int MAXSIZE = 4;
    // char thisVal[MAXSIZE];
    // while(in.getline(thisVal,MAXSIZE,',')) {
    //     values.resize(values.size() + 1);
    //     values.back() = new char[MAXSIZE];
    //     strcpy(values.back(), thisVal);
    // }
    // in.close();
    // for (char* cp: values) cout<<*cp<<endl;


	
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x518, %rsp            # imm = 0x518
leaq 0x108(%rsp), %rbx
movq %rbx, %rdi
callq 0x2170
leaq 0x2057(%rip), %rsi      # 0x6172
movq %rbx, %rdi
movl $0x8, %edx
callq 0x20c0
leaq 0x20(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0xa, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
callq 0x2030
movq %rax, %rbx
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52a5
movl (%rbx), %eax
testl %eax, %eax
je 0x41e0
cmpl $0x22, %eax
jne 0x41e2
leaq 0x1fc6(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x503e(%rip)     # 0x9228
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52b1
movl (%rbx), %eax
testl %eax, %eax
je 0x4241
cmpl $0x22, %eax
jne 0x4243
leaq 0x1f65(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4fdd(%rip)     # 0x9228
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52bd
movl (%rbx), %eax
testl %eax, %eax
je 0x42b9
cmpl $0x22, %eax
jne 0x42bb
leaq 0x1eed(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4f85(%rip)     # 0x9248
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52c9
movl (%rbx), %eax
testl %eax, %eax
je 0x431a
cmpl $0x22, %eax
jne 0x431c
leaq 0x1e8c(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
mulsd 0x1d6c(%rip), %xmm0     # 0x6090
movsd %xmm0, 0x4f4c(%rip)     # 0x9278
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52d5
movl (%rbx), %eax
testl %eax, %eax
je 0x4383
cmpl $0x22, %eax
jne 0x4385
leaq 0x1e23(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4edb(%rip)     # 0x9268
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0xa, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52e1
movl (%rbx), %eax
testl %eax, %eax
je 0x43e4
cmpl $0x22, %eax
jne 0x43e6
leaq 0x1dc2(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4e6a(%rip)     # 0x9258
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52ed
movl (%rbx), %eax
testl %eax, %eax
je 0x4473
cmpl $0x22, %eax
jne 0x4475
leaq 0x1d33(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4db3(%rip)     # 0x9230
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x52f9
movl (%rbx), %eax
testl %eax, %eax
je 0x44d4
cmpl $0x22, %eax
jne 0x44d6
leaq 0x1cd2(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4d52(%rip)     # 0x9230
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x5305
movl (%rbx), %eax
testl %eax, %eax
je 0x454c
cmpl $0x22, %eax
jne 0x454e
leaq 0x1c5a(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4cfa(%rip)     # 0x9250
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x5311
movl (%rbx), %eax
testl %eax, %eax
je 0x45ad
cmpl $0x22, %eax
jne 0x45af
leaq 0x1bf9(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
mulsd 0x1ad9(%rip), %xmm0     # 0x6090
movsd %xmm0, 0x4cc1(%rip)     # 0x9280
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x531d
movl (%rbx), %eax
testl %eax, %eax
je 0x4616
cmpl $0x22, %eax
jne 0x4618
leaq 0x1b90(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4c50(%rip)     # 0x9270
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0xa, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x310(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x5329
movl (%rbx), %eax
testl %eax, %eax
je 0x4677
cmpl $0x22, %eax
jne 0x4679
leaq 0x1b2f(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd %xmm0, 0x4bdf(%rip)     # 0x9260
leaq 0xf8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1af5(%rip), %rsi      # 0x6189
leaq 0x1b05(%rip), %rdx      # 0x61a0
leaq 0xe8(%rsp), %rdi
callq 0x5a48
movq 0xe8(%rsp), %rsi
leaq 0x310(%rsp), %r14
movq %r14, %rdi
movl $0x8, %edx
callq 0x2270
movq 0x310(%rsp), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2130
movsbl %al, %edx
leaq 0x310(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2280
movl $0x127adc, %r15d        # imm = 0x127ADC
leaq 0x310(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %rbp
movl (%rbx), %r14d
movl $0x0, (%rbx)
movq %rbp, %rdi
leaq 0xb0(%rsp), %rsi
movl $0xa, %edx
callq 0x21a0
cmpq %rbp, 0xb0(%rsp)
je 0x51a9
movq %rax, %r13
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x51b5
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x51b5
testl %eax, %eax
jne 0x476f
movl %r14d, (%rbx)
leaq 0x310(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r14, %rdi
leaq 0xb0(%rsp), %rsi
movl $0xa, %edx
callq 0x21a0
cmpq %r14, 0xb0(%rsp)
je 0x5191
movq %rax, %rbp
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x519d
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x519d
testl %eax, %eax
jne 0x47e5
movl %r12d, (%rbx)
leaq 0x310(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r14, %rdi
leaq 0xb0(%rsp), %rsi
callq 0x20e0
cmpq %r14, 0xb0(%rsp)
je 0x5185
movl (%rbx), %eax
testl %eax, %eax
je 0x4838
cmpl $0x22, %eax
jne 0x483b
jmp 0x5251
movl %r12d, (%rbx)
movslq %r13d, %rax
movslq %ebp, %r12
movq 0x4968(%rip), %rcx      # 0x91b0
leaq (%rax,%rax,2), %r13
movq (%rcx,%r13,8), %rax
movsd %xmm0, (%rax,%r12,8)
leaq 0x310(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x10(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
movq %r14, %rdi
leaq 0xb0(%rsp), %rsi
callq 0x20e0
cmpq %r14, 0xb0(%rsp)
je 0x51c1
movl (%rbx), %eax
testl %eax, %eax
je 0x48a8
cmpl $0x22, %eax
jne 0x48aa
jmp 0x5245
movl %ebp, (%rbx)
movq 0x4917(%rip), %rax      # 0x91c8
movq (%rax,%r13,8), %rax
movsd %xmm0, (%rax,%r12,8)
decq %r15
jne 0x46f9
movl $0x64, 0x48a6(%rip)     # 0x9174
movl $0x3e8, 0x48a0(%rip)    # imm = 0x3E8
leaq 0xb0(%rsp), %r14
movl $0x1, (%r14)
movl $0x1, %eax
leaq 0x48ed(%rip), %r15      # 0x91e0
movq 0x48ee(%rip), %rsi      # 0x91e8
cmpq 0x48ef(%rip), %rsi      # 0x91f0
je 0x4912
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48d8(%rip)      # 0x91e8
jmp 0x491d
movq %r15, %rdi
movq %r14, %rdx
callq 0x5ad8
movl 0xb0(%rsp), %ecx
leal 0x1(%rcx), %eax
movl %eax, 0xb0(%rsp)
cmpl 0x4844(%rip), %ecx      # 0x9178
jl 0x48f3
movl $0x44d, 0x483c(%rip)    # imm = 0x44D
leaq 0x182b(%rip), %rsi      # 0x6172
leaq 0x108(%rsp), %rdi
movl $0x8, %edx
callq 0x20c0
leaq 0x68(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0xa, %edx
callq 0x2280
movl $0x0, 0xb0(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0xb8(%rsp)
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x58(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x78(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x21a0
cmpq %r14, (%r15)
je 0x5335
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x5341
movl (%rbx), %ecx
cmpl $0x22, %ecx
je 0x5341
testl %ecx, %ecx
jne 0x4a09
movl %ebp, (%rbx)
movl %eax, 0xb0(%rsp)
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x3a, %edx
callq 0x2280
movq 0x58(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x78(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
movsd %xmm0, 0x50(%rsp)
cmpq %r14, (%r15)
je 0x534d
movl (%rbx), %eax
testl %eax, %eax
je 0x4add
cmpl $0x22, %eax
jne 0x4adf
leaq 0x16c9(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x58(%rsp), %r14
movl (%rbx), %ebp
movl $0x0, (%rbx)
leaq 0x78(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x20e0
cmpq %r14, (%r15)
je 0x5359
movl (%rbx), %eax
testl %eax, %eax
je 0x4b33
cmpl $0x22, %eax
jne 0x4b35
leaq 0x1673(%rip), %rdi      # 0x61a1
callq 0x21b0
movl %ebp, (%rbx)
movsd 0x50(%rsp), %xmm1
mulsd 0x154d(%rip), %xmm1     # 0x6090
addsd %xmm0, %xmm1
movsd %xmm1, 0xd8(%rsp)
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0xa, %edx
callq 0x2280
movabsq $0x4096800000000000, %rax # imm = 0x4096800000000000
movq %rax, 0xe0(%rsp)
movq 0x4680(%rip), %rsi      # 0x9200
cmpq 0x4681(%rip), %rsi      # 0x9208
je 0x4bc9
movq 0xe0(%rsp), %rax
movq %rax, 0x30(%rsi)
movupd 0xb0(%rsp), %xmm0
movupd 0xc0(%rsp), %xmm1
movups 0xd0(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x4639(%rip)      # 0x9200
jmp 0x4bdd
leaq 0x4628(%rip), %rdi      # 0x91f8
leaq 0xb0(%rsp), %rdx
callq 0x5c14
leaq 0x108(%rsp), %rdi
leaq 0x58(%rsp), %rsi
movl $0x2c, %edx
callq 0x2280
movl $0x3e8, %ebp            # imm = 0x3E8
leaq 0x108(%rsp), %r14
leaq 0x30(%rsp), %r15
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
movq $0x0, 0x38(%rsp)
movb $0x0, 0x40(%rsp)
movl $0x0, 0x78(%rsp)
leaq 0x80(%rsp), %rax
xorpd %xmm0, %xmm0
movupd %xmm0, (%rax)
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
movl $0xa, %edx
callq 0x21a0
cmpq %r13, 0x8(%rsp)
je 0x51f1
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x51fd
movl (%rbx), %ecx
cmpl $0x22, %ecx
je 0x51fd
testl %ecx, %ecx
jne 0x4c9d
movl %r12d, (%rbx)
movl %eax, 0x78(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
callq 0x20e0
cmpq %r13, 0x8(%rsp)
je 0x51d9
movl (%rbx), %eax
testl %eax, %eax
je 0x4d17
cmpl $0x22, %eax
jne 0x4d1a
jmp 0x5299
movl %r12d, (%rbx)
movsd %xmm0, 0x80(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
callq 0x20e0
cmpq %r13, 0x8(%rsp)
je 0x51e5
movl (%rbx), %eax
testl %eax, %eax
je 0x4d69
cmpl $0x22, %eax
jne 0x4d6c
jmp 0x5275
movl %r12d, (%rbx)
movsd %xmm0, 0x88(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movl $0x3a, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
callq 0x20e0
cmpq %r13, 0x8(%rsp)
je 0x51cd
movl (%rbx), %eax
testl %eax, %eax
je 0x4dbb
cmpl $0x22, %eax
jne 0x4dbe
jmp 0x528d
movl %r12d, (%rbx)
mulsd 0x12ca(%rip), %xmm0     # 0x6090
movsd %xmm0, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
callq 0x20e0
cmpq %r13, 0x8(%rsp)
je 0x5209
movl (%rbx), %eax
testl %eax, %eax
je 0x4e12
cmpl $0x22, %eax
jne 0x4e15
jmp 0x5269
movl %r12d, (%rbx)
movsd 0x50(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0xa0(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movl $0x3a, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
callq 0x20e0
cmpq %r13, 0x8(%rsp)
je 0x5221
movl (%rbx), %eax
testl %eax, %eax
je 0x4e6e
cmpl $0x22, %eax
jne 0x4e71
jmp 0x5281
movl %r12d, (%rbx)
mulsd 0x1217(%rip), %xmm0     # 0x6090
movsd %xmm0, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
callq 0x20e0
cmpq %r13, 0x8(%rsp)
je 0x5215
movl (%rbx), %eax
testl %eax, %eax
je 0x4ec5
cmpl $0x22, %eax
jne 0x4ec8
jmp 0x525d
movl %r12d, (%rbx)
movsd 0x50(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0xa8(%rsp)
movq 0x431e(%rip), %rsi      # 0x9200
cmpq 0x431f(%rip), %rsi      # 0x9208
je 0x4f28
movq 0xa8(%rsp), %rax
movq %rax, 0x30(%rsi)
movupd 0x78(%rsp), %xmm0
movupd 0x88(%rsp), %xmm1
movups 0x98(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x42da(%rip)      # 0x9200
jmp 0x4f39
leaq 0x42c9(%rip), %rdi      # 0x91f8
leaq 0x78(%rsp), %rdx
callq 0x5c14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x4f55
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2160
decl %ebp
jne 0x4c06
movl $0x64, %ebp
leaq 0x108(%rsp), %r14
leaq 0x30(%rsp), %r15
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
movq $0x0, 0x38(%rsp)
movb $0x0, 0x40(%rsp)
movl $0x0, 0x78(%rsp)
leaq 0x80(%rsp), %rax
xorpd %xmm0, %xmm0
movupd %xmm0, (%rax)
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq 0x30(%rsp), %r13
movl (%rbx), %r12d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq 0x8(%rsp), %rsi
movl $0xa, %edx
callq 0x21a0
cmpq %r13, 0x8(%rsp)
je 0x522d
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x5239
movl (%rbx), %ecx
cmpl $0x22, %ecx
je 0x5239
testl %ecx, %ecx
jne 0x5006
movl %r12d, (%rbx)
movl %eax, 0x78(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x2280
movq %r14, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2280
movq 0x417f(%rip), %rsi      # 0x9200
cmpq 0x4180(%rip), %rsi      # 0x9208
je 0x50c7
movq 0xa8(%rsp), %rax
movq %rax, 0x30(%rsi)
movupd 0x78(%rsp), %xmm0
movupd 0x88(%rsp), %xmm1
movups 0x98(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x413b(%rip)      # 0x9200
jmp 0x50d8
leaq 0x412a(%rip), %rdi      # 0x91f8
leaq 0x78(%rsp), %rdx
callq 0x5c14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x50f4
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2160
decl %ebp
jne 0x4f6f
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x5118
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x2160
leaq 0x310(%rsp), %rdi
callq 0x2050
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x514a
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2160
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x5166
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2160
leaq 0x108(%rsp), %rdi
callq 0x2050
addq $0x518, %rsp            # imm = 0x518
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1015(%rip), %rdi      # 0x61a1
callq 0x20b0
leaq 0x100e(%rip), %rdi      # 0x61a6
callq 0x20b0
leaq 0x1002(%rip), %rdi      # 0x61a6
callq 0x21b0
leaq 0xff6(%rip), %rdi       # 0x61a6
callq 0x20b0
leaq 0xfea(%rip), %rdi       # 0x61a6
callq 0x21b0
leaq 0xfd9(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xfcd(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xfc1(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xfb5(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xfae(%rip), %rdi       # 0x61a6
callq 0x20b0
leaq 0xfa2(%rip), %rdi       # 0x61a6
callq 0x21b0
leaq 0xf91(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xf85(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xf79(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xf72(%rip), %rdi       # 0x61a6
callq 0x20b0
leaq 0xf66(%rip), %rdi       # 0x61a6
callq 0x21b0
leaq 0xf55(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xf49(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xf3d(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xf31(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xf25(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xf19(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xf0d(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xf01(%rip), %rdi       # 0x61a1
callq 0x21b0
leaq 0xef5(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xee9(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xedd(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xed1(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xec5(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xeb9(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xead(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xea1(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xe95(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xe89(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xe7d(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xe71(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xe6a(%rip), %rdi       # 0x61a6
callq 0x20b0
leaq 0xe5e(%rip), %rdi       # 0x61a6
callq 0x21b0
leaq 0xe4d(%rip), %rdi       # 0x61a1
callq 0x20b0
leaq 0xe41(%rip), %rdi       # 0x61a1
callq 0x20b0
jmp 0x53bd
movq %rax, %r15
jmp 0x5462
jmp 0x53c4
movq %rax, %r15
jmp 0x54a3
jmp 0x53a6
jmp 0x53a6
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
jmp 0x5393
movq %rax, %r15
cmpl $0x0, (%rbx)
jne 0x5487
movl %ebp, (%rbx)
jmp 0x5487
movq %rax, %r15
cmpl $0x0, (%rbx)
jne 0x5439
movl %ebp, (%rbx)
jmp 0x5439
jmp 0x5413
jmp 0x53bd
movq %rax, %r15
jmp 0x5439
jmp 0x5413
movq %rax, %r15
jmp 0x5487
jmp 0x541a
jmp 0x53ec
jmp 0x53ec
jmp 0x53ec
jmp 0x53ec
jmp 0x53ec
jmp 0x53ec
jmp 0x5406
movq %rax, %r15
cmpl $0x0, (%rbx)
jne 0x5455
movl %ebp, (%rbx)
jmp 0x5455
jmp 0x53ec
jmp 0x541a
movq %rax, %r15
cmpl $0x0, (%rbx)
jne 0x541d
movl %r12d, (%rbx)
jmp 0x541d
movq %rax, %r15
cmpl $0x0, (%rbx)
jne 0x5455
movl %r14d, (%rbx)
jmp 0x5455
movq %rax, %r15
cmpl $0x0, (%rbx)
jne 0x5455
movl %r12d, (%rbx)
jmp 0x5455
movq %rax, %r15
jmp 0x5455
jmp 0x541a
movq %rax, %r15
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x5439
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2160
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x5455
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x2160
leaq 0x310(%rsp), %rdi
callq 0x2050
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x5487
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x2160
leaq 0x20(%rsp), %rax
movq 0x10(%rsp), %rdi
cmpq %rax, %rdi
je 0x54a3
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2160
leaq 0x108(%rsp), %rdi
callq 0x2050
movq %r15, %rdi
callq 0x2250