// File: gjoni[P]iPot/src/aace20.cpp
// Function: main
int main(int argc, char *argv[]) {

	/*
	 * (0) default energies (dmax=8.0A, kmin=5)
	 */
	const std::vector<double> h = {
		-2.53987e-01, -9.55884e-01, -5.46483e-01, -1.08783e+00, 2.44429e+00, -6.87903e-01, -1.49183e+00, 2.93111e-02, 2.50783e-01, 4.91162e-01, -3.29373e-01, -1.31334e+00, 1.34866e+00, 6.75723e-01, -3.23257e-01, -3.44367e-01, -2.33644e-01, 1.44822e+00, 4.81086e-01, 3.98668e-01
		};
	const std::vector<std::vector<double> > J = {
		{-3.71344e-02, 2.20701e-02, 3.18455e-02, 4.25143e-02, -1.70926e-02, 2.72930e-02, 5.31908e-02, -1.09550e-02, 1.51750e-02, -2.50904e-02, -2.44321e-02, 5.83197e-02, -1.67545e-02, -2.23743e-02, 1.17130e-02, 1.58646e-02, 2.23153e-03, -1.83572e-02, -1.00922e-02, -3.45738e-02 }, 
		{2.20701e-02, 4.17913e-02, 2.35753e-02, -4.54994e-02, 6.74010e-03, 2.35367e-02, -3.64684e-02, 4.90331e-03, 1.91966e-02, 2.34500e-02, 1.47213e-02, 9.72731e-02, 1.87448e-02, 2.50172e-03, 7.67610e-03, 1.49948e-02, 1.52291e-02, -1.92884e-02, -5.63319e-03, 1.44502e-02 }, 
		{3.18455e-02, 2.35753e-02, -3.42614e-02, 2.30339e-03, 1.67872e-03, 1.10331e-02, 3.34489e-02, -1.45569e-02, 7.83230e-03, 2.43254e-02, 4.55619e-02, 1.70446e-02, 1.80039e-02, 1.04812e-02, 9.19486e-03, -1.10260e-02, -6.26871e-03, -3.45688e-04, -4.06967e-03, 2.82638e-02 }, 
		{4.25143e-02, -4.54994e-02, 2.30339e-03, 6.08578e-02, 2.50615e-02, 3.57055e-02, 9.73346e-02, 1.79198e-03, -2.34830e-02, 4.56089e-02, 6.02836e-02, -3.07495e-02, 3.81317e-02, 3.25073e-02, 2.35846e-02, 4.29256e-03, 8.42867e-03, 6.45287e-03, 1.55564e-03, 3.85644e-02 }, 
		{-1.70926e-02, 6.74010e-03, 1.67872e-03, 2.50615e-02, -2.62680e-01, 5.37286e-03, 3.36006e-02, -2.16083e-02, -2.38917e-02, -3.45920e-02, -3.16786e-02, 1.95273e-02, -4.39283e-02, -4.86909e-02, -1.71290e-02, -1.74618e-02, -9.88666e-03, -4.57297e-02, -2.74419e-02, -3.96491e-02 }, 
		{2.72930e-02, 2.35367e-02, 1.10331e-02, 3.57055e-02, 5.37286e-03, 1.35826e-02, 5.34335e-02, 1.33446e-02, 1.63156e-02, 1.88270e-02, 2.27978e-02, 4.52448e-02, 1.46310e-02, 6.29104e-03, 1.20628e-02, 8.11129e-03, 4.49112e-03, -1.41691e-02, -1.80609e-03, 1.59103e-02 }, 
		{5.31908e-02, -3.64684e-02, 3.34489e-02, 9.73346e-02, 3.36006e-02, 5.34335e-02, 9.72670e-02, 3.81519e-02, -4.51864e-03, 3.12949e-02, 4.79989e-02, -2.34676e-02, 4.05531e-02, 2.41254e-02, 3.96978e-02, 2.83332e-02, 2.56658e-02, 5.68699e-03, 2.48728e-03, 2.73558e-02 }, 
		{-1.09550e-02, 4.90331e-03, -1.45569e-02, 1.79198e-03, -2.16083e-02, 1.33446e-02, 3.81519e-02, -5.27375e-02, -7.84873e-03, 1.42772e-02, 2.62637e-02, 2.69248e-02, -4.43414e-03, -3.78684e-03, -1.12145e-02, -1.59909e-02, -8.58234e-03, -1.29394e-02, -6.97832e-03, 1.47198e-03 }, 
		{1.51750e-02, 1.91966e-02, 7.83230e-03, -2.34830e-02, -2.38917e-02, 1.63156e-02, -4.51864e-03, -7.84873e-03, -4.29839e-02, 1.08293e-02, 1.36574e-02, 5.26484e-02, -6.41764e-03, -1.02180e-02, 3.96788e-04, -9.06387e-03, -3.02477e-03, -2.77911e-02, -1.94776e-02, 6.52479e-03 }, 
		{-2.50904e-02, 2.34500e-02, 2.43254e-02, 4.56089e-02, -3.45920e-02, 1.88270e-02, 3.12949e-02, 1.42772e-02, 1.08293e-02, -8.05287e-02, -5.85603e-02, 1.90216e-02, -4.10300e-02, -5.60307e-02, 2.34853e-02, 9.75105e-03, -9.26442e-03, -3.20940e-02, -3.71437e-02, -6.26080e-02 }, 
		{-2.44321e-02, 1.47213e-02, 4.55619e-02, 6.02836e-02, -3.16786e-02, 2.27978e-02, 4.79989e-02, 2.62637e-02, 1.36574e-02, -5.85603e-02, -6.42103e-02, 4.13288e-02, -3.17203e-02, -5.26119e-02, 1.96252e-02, 2.18609e-02, 8.40488e-03, -3.89716e-02, -2.91417e-02, -5.27405e-02 }, 
		{5.83197e-02, 9.72731e-02, 1.70446e-02, -3.07495e-02, 1.95273e-02, 4.52448e-02, -2.34676e-02, 2.69248e-02, 5.26484e-02, 1.90216e-02, 4.13288e-02, 7.59989e-02, 3.95383e-02, 1.56141e-02, 5.32374e-02, 2.62503e-02, 2.43331e-02, 6.16923e-03, -7.70190e-03, 2.20020e-02 }, 
		{-1.67545e-02, 1.87448e-02, 1.80039e-02, 3.81317e-02, -4.39283e-02, 1.46310e-02, 4.05531e-02, -4.43414e-03, -6.41764e-03, -4.10300e-02, -3.17203e-02, 3.95383e-02, -9.52427e-02, -5.35567e-02, 3.69553e-03, 8.29695e-03, 5.27945e-04, -4.40832e-02, -3.22654e-02, -3.46698e-02 }, 
		{-2.23743e-02, 2.50172e-03, 1.04812e-02, 3.25073e-02, -4.86909e-02, 6.29104e-03, 2.41254e-02, -3.78684e-03, -1.02180e-02, -5.60307e-02, -5.26119e-02, 1.56141e-02, -5.35567e-02, -7.01921e-02, -6.27462e-03, -3.47413e-03, -6.64416e-03, -5.27827e-02, -4.71942e-02, -4.64915e-02 }, 
		{1.17130e-02, 7.67610e-03, 9.19486e-03, 2.35846e-02, -1.71290e-02, 1.20628e-02, 3.96978e-02, -1.12145e-02, 3.96788e-04, 2.34853e-02, 1.96252e-02, 5.32374e-02, 3.69553e-03, -6.27462e-03, -1.43475e-02, 1.17501e-02, 8.99826e-03, -4.18122e-02, -2.90152e-02, 1.15780e-02 }, 
		{1.58646e-02, 1.49948e-02, -1.10260e-02, 4.29256e-03, -1.74618e-02, 8.11129e-03, 2.83332e-02, -1.59909e-02, -9.06387e-03, 9.75105e-03, 2.18609e-02, 2.62503e-02, 8.29695e-03, -3.47413e-03, 1.17501e-02, -2.00095e-02, -9.14658e-03, -8.74831e-03, -3.87656e-03, 4.57322e-03 }, 
		{2.23153e-03, 1.52291e-02, -6.26871e-03, 8.42867e-03, -9.88666e-03, 4.49112e-03, 2.56658e-02, -8.58234e-03, -3.02477e-03, -9.26442e-03, 8.40488e-03, 2.43331e-02, 5.27945e-04, -6.64416e-03, 8.99826e-03, -9.14658e-03, -2.34675e-02, -5.41073e-03, -6.32234e-03, -1.78545e-02 }, 
		{-1.83572e-02, -1.92884e-02, -3.45688e-04, 6.45287e-03, -4.57297e-02, -1.41691e-02, 5.68699e-03, -1.29394e-02, -2.77911e-02, -3.20940e-02, -3.89716e-02, 6.16923e-03, -4.40832e-02, -5.27827e-02, -4.18122e-02, -8.74831e-03, -5.41073e-03, -6.68405e-02, -4.10136e-02, -2.84353e-02 }, 
		{-1.00922e-02, -5.63319e-03, -4.06967e-03, 1.55564e-03, -2.74419e-02, -1.80609e-03, 2.48728e-03, -6.97832e-03, -1.94776e-02, -3.71437e-02, -2.91417e-02, -7.70190e-03, -3.22654e-02, -4.71942e-02, -2.90152e-02, -3.87656e-03, -6.32234e-03, -4.10136e-02, -3.76931e-02, -2.78836e-02 }, 
		{-3.45738e-02, 1.44502e-02, 2.82638e-02, 3.85644e-02, -3.96491e-02, 1.59103e-02, 2.73558e-02, 1.47198e-03, 6.52479e-03, -6.26080e-02, -5.27405e-02, 2.20020e-02, -3.46698e-02, -4.64915e-02, 1.15780e-02, 4.57322e-03, -1.78545e-02, -2.84353e-02, -2.78836e-02, -7.30337e-02 }
		};

	/*
	 * (1) process arguments
	 */
	OPTS opts = { "", "", "", DMAX };
	if (!GetOpts(argc, argv, opts)) {
		PrintOpts("aace20", DMAX);
		return 1;
	}

	/*
	 * (2) set potential
	 */
	AACE AACE_;
	if (opts.table != "") {
		AACE_ = AACE(AACE20_GROUPS, opts.dmax, opts.table);
	} else {
		AACE_ = AACE(AACE20_GROUPS, h, J, opts.dmax, "AACE20_8.0A_k5");
	}

	/*
	 * (2) get AACE energy
	 */
	double E;
	if (opts.lig == "") {
		E = AACE_.GetEnergy(Chain(opts.rec.c_str()));
	} else {
		E = AACE_.GetEnergy(Complex(opts.rec.c_str(), opts.lig.c_str()));
	}

	printf("E(%s)= %.5e\n", AACE_.GetName().c_str(), E);

	return 0;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1840, %rsp           # imm = 0x1840
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0xff08(%rip), %rsi      # 0x3fc08
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x15a0(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x15a0(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x14, -0x30(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x1598(%rbp)
callq 0x1b640
movq -0x1598(%rbp), %rcx
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x1b660
jmp 0x2fd58
leaq -0xd9(%rbp), %rdi
callq 0x1b800
movb $0x1, -0x115a(%rbp)
leaq -0x2f8(%rbp), %rax
movq %rax, -0x15b0(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xff21(%rip), %rsi      # 0x3fca8
leaq -0x3b0(%rbp), %rdi
movq %rdi, -0x15b8(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x15b8(%rbp), %rax
movq %rax, -0x310(%rbp)
movq $0x14, -0x308(%rbp)
leaq -0x3b1(%rbp), %rdi
movq %rdi, -0x15a8(%rbp)
callq 0x1b640
movq -0x15b0(%rbp), %rdi
movq -0x15a8(%rbp), %rcx
movq -0x310(%rbp), %rsi
movq -0x308(%rbp), %rdx
callq 0x1b660
jmp 0x2fdee
leaq -0x2e0(%rbp), %rax
movq %rax, -0x15c8(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xff3e(%rip), %rsi      # 0x3fd48
leaq -0x468(%rbp), %rdi
movq %rdi, -0x15d0(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x15d0(%rbp), %rax
movq %rax, -0x3c8(%rbp)
movq $0x14, -0x3c0(%rbp)
leaq -0x469(%rbp), %rdi
movq %rdi, -0x15c0(%rbp)
callq 0x1b640
movq -0x15c8(%rbp), %rdi
movq -0x15c0(%rbp), %rcx
movq -0x3c8(%rbp), %rsi
movq -0x3c0(%rbp), %rdx
callq 0x1b660
jmp 0x2fe71
leaq -0x2c8(%rbp), %rax
movq %rax, -0x15e0(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xff5b(%rip), %rsi      # 0x3fde8
leaq -0x520(%rbp), %rdi
movq %rdi, -0x15e8(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x15e8(%rbp), %rax
movq %rax, -0x480(%rbp)
movq $0x14, -0x478(%rbp)
leaq -0x521(%rbp), %rdi
movq %rdi, -0x15d8(%rbp)
callq 0x1b640
movq -0x15e0(%rbp), %rdi
movq -0x15d8(%rbp), %rcx
movq -0x480(%rbp), %rsi
movq -0x478(%rbp), %rdx
callq 0x1b660
jmp 0x2fef4
leaq -0x2b0(%rbp), %rax
movq %rax, -0x15f8(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xff78(%rip), %rsi      # 0x3fe88
leaq -0x5d8(%rbp), %rdi
movq %rdi, -0x1600(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1600(%rbp), %rax
movq %rax, -0x538(%rbp)
movq $0x14, -0x530(%rbp)
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0x15f0(%rbp)
callq 0x1b640
movq -0x15f8(%rbp), %rdi
movq -0x15f0(%rbp), %rcx
movq -0x538(%rbp), %rsi
movq -0x530(%rbp), %rdx
callq 0x1b660
jmp 0x2ff77
leaq -0x298(%rbp), %rax
movq %rax, -0x1610(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xff95(%rip), %rsi      # 0x3ff28
leaq -0x690(%rbp), %rdi
movq %rdi, -0x1618(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1618(%rbp), %rax
movq %rax, -0x5f0(%rbp)
movq $0x14, -0x5e8(%rbp)
leaq -0x691(%rbp), %rdi
movq %rdi, -0x1608(%rbp)
callq 0x1b640
movq -0x1610(%rbp), %rdi
movq -0x1608(%rbp), %rcx
movq -0x5f0(%rbp), %rsi
movq -0x5e8(%rbp), %rdx
callq 0x1b660
jmp 0x2fffa
leaq -0x280(%rbp), %rax
movq %rax, -0x1628(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xffb2(%rip), %rsi      # 0x3ffc8
leaq -0x748(%rbp), %rdi
movq %rdi, -0x1630(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1630(%rbp), %rax
movq %rax, -0x6a8(%rbp)
movq $0x14, -0x6a0(%rbp)
leaq -0x749(%rbp), %rdi
movq %rdi, -0x1620(%rbp)
callq 0x1b640
movq -0x1628(%rbp), %rdi
movq -0x1620(%rbp), %rcx
movq -0x6a8(%rbp), %rsi
movq -0x6a0(%rbp), %rdx
callq 0x1b660
jmp 0x3007d
leaq -0x268(%rbp), %rax
movq %rax, -0x1640(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xffcf(%rip), %rsi      # 0x40068
leaq -0x800(%rbp), %rdi
movq %rdi, -0x1648(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1648(%rbp), %rax
movq %rax, -0x760(%rbp)
movq $0x14, -0x758(%rbp)
leaq -0x801(%rbp), %rdi
movq %rdi, -0x1638(%rbp)
callq 0x1b640
movq -0x1640(%rbp), %rdi
movq -0x1638(%rbp), %rcx
movq -0x760(%rbp), %rsi
movq -0x758(%rbp), %rdx
callq 0x1b660
jmp 0x30100
leaq -0x250(%rbp), %rax
movq %rax, -0x1658(%rbp)
movq %rax, -0x300(%rbp)
leaq 0xffec(%rip), %rsi      # 0x40108
leaq -0x8b8(%rbp), %rdi
movq %rdi, -0x1660(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1660(%rbp), %rax
movq %rax, -0x818(%rbp)
movq $0x14, -0x810(%rbp)
leaq -0x8b9(%rbp), %rdi
movq %rdi, -0x1650(%rbp)
callq 0x1b640
movq -0x1658(%rbp), %rdi
movq -0x1650(%rbp), %rcx
movq -0x818(%rbp), %rsi
movq -0x810(%rbp), %rdx
callq 0x1b660
jmp 0x30183
leaq -0x238(%rbp), %rax
movq %rax, -0x1670(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x10009(%rip), %rsi     # 0x401a8
leaq -0x970(%rbp), %rdi
movq %rdi, -0x1678(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1678(%rbp), %rax
movq %rax, -0x8d0(%rbp)
movq $0x14, -0x8c8(%rbp)
leaq -0x971(%rbp), %rdi
movq %rdi, -0x1668(%rbp)
callq 0x1b640
movq -0x1670(%rbp), %rdi
movq -0x1668(%rbp), %rcx
movq -0x8d0(%rbp), %rsi
movq -0x8c8(%rbp), %rdx
callq 0x1b660
jmp 0x30206
leaq -0x220(%rbp), %rax
movq %rax, -0x1688(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x10026(%rip), %rsi     # 0x40248
leaq -0xa28(%rbp), %rdi
movq %rdi, -0x1690(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1690(%rbp), %rax
movq %rax, -0x988(%rbp)
movq $0x14, -0x980(%rbp)
leaq -0xa29(%rbp), %rdi
movq %rdi, -0x1680(%rbp)
callq 0x1b640
movq -0x1688(%rbp), %rdi
movq -0x1680(%rbp), %rcx
movq -0x988(%rbp), %rsi
movq -0x980(%rbp), %rdx
callq 0x1b660
jmp 0x30289
leaq -0x208(%rbp), %rax
movq %rax, -0x16a0(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x10043(%rip), %rsi     # 0x402e8
leaq -0xae0(%rbp), %rdi
movq %rdi, -0x16a8(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x16a8(%rbp), %rax
movq %rax, -0xa40(%rbp)
movq $0x14, -0xa38(%rbp)
leaq -0xae1(%rbp), %rdi
movq %rdi, -0x1698(%rbp)
callq 0x1b640
movq -0x16a0(%rbp), %rdi
movq -0x1698(%rbp), %rcx
movq -0xa40(%rbp), %rsi
movq -0xa38(%rbp), %rdx
callq 0x1b660
jmp 0x3030c
leaq -0x1f0(%rbp), %rax
movq %rax, -0x16b8(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x10060(%rip), %rsi     # 0x40388
leaq -0xb98(%rbp), %rdi
movq %rdi, -0x16c0(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x16c0(%rbp), %rax
movq %rax, -0xaf8(%rbp)
movq $0x14, -0xaf0(%rbp)
leaq -0xb99(%rbp), %rdi
movq %rdi, -0x16b0(%rbp)
callq 0x1b640
movq -0x16b8(%rbp), %rdi
movq -0x16b0(%rbp), %rcx
movq -0xaf8(%rbp), %rsi
movq -0xaf0(%rbp), %rdx
callq 0x1b660
jmp 0x3038f
leaq -0x1d8(%rbp), %rax
movq %rax, -0x16d0(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x1007d(%rip), %rsi     # 0x40428
leaq -0xc50(%rbp), %rdi
movq %rdi, -0x16d8(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x16d8(%rbp), %rax
movq %rax, -0xbb0(%rbp)
movq $0x14, -0xba8(%rbp)
leaq -0xc51(%rbp), %rdi
movq %rdi, -0x16c8(%rbp)
callq 0x1b640
movq -0x16d0(%rbp), %rdi
movq -0x16c8(%rbp), %rcx
movq -0xbb0(%rbp), %rsi
movq -0xba8(%rbp), %rdx
callq 0x1b660
jmp 0x30412
leaq -0x1c0(%rbp), %rax
movq %rax, -0x16e8(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x1009a(%rip), %rsi     # 0x404c8
leaq -0xd08(%rbp), %rdi
movq %rdi, -0x16f0(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x16f0(%rbp), %rax
movq %rax, -0xc68(%rbp)
movq $0x14, -0xc60(%rbp)
leaq -0xd09(%rbp), %rdi
movq %rdi, -0x16e0(%rbp)
callq 0x1b640
movq -0x16e8(%rbp), %rdi
movq -0x16e0(%rbp), %rcx
movq -0xc68(%rbp), %rsi
movq -0xc60(%rbp), %rdx
callq 0x1b660
jmp 0x30495
leaq -0x1a8(%rbp), %rax
movq %rax, -0x1700(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x100b7(%rip), %rsi     # 0x40568
leaq -0xdc0(%rbp), %rdi
movq %rdi, -0x1708(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1708(%rbp), %rax
movq %rax, -0xd20(%rbp)
movq $0x14, -0xd18(%rbp)
leaq -0xdc1(%rbp), %rdi
movq %rdi, -0x16f8(%rbp)
callq 0x1b640
movq -0x1700(%rbp), %rdi
movq -0x16f8(%rbp), %rcx
movq -0xd20(%rbp), %rsi
movq -0xd18(%rbp), %rdx
callq 0x1b660
jmp 0x30518
leaq -0x190(%rbp), %rax
movq %rax, -0x1718(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x100d4(%rip), %rsi     # 0x40608
leaq -0xe78(%rbp), %rdi
movq %rdi, -0x1720(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1720(%rbp), %rax
movq %rax, -0xdd8(%rbp)
movq $0x14, -0xdd0(%rbp)
leaq -0xe79(%rbp), %rdi
movq %rdi, -0x1710(%rbp)
callq 0x1b640
movq -0x1718(%rbp), %rdi
movq -0x1710(%rbp), %rcx
movq -0xdd8(%rbp), %rsi
movq -0xdd0(%rbp), %rdx
callq 0x1b660
jmp 0x3059b
leaq -0x178(%rbp), %rax
movq %rax, -0x1730(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x100f1(%rip), %rsi     # 0x406a8
leaq -0xf30(%rbp), %rdi
movq %rdi, -0x1738(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1738(%rbp), %rax
movq %rax, -0xe90(%rbp)
movq $0x14, -0xe88(%rbp)
leaq -0xf31(%rbp), %rdi
movq %rdi, -0x1728(%rbp)
callq 0x1b640
movq -0x1730(%rbp), %rdi
movq -0x1728(%rbp), %rcx
movq -0xe90(%rbp), %rsi
movq -0xe88(%rbp), %rdx
callq 0x1b660
jmp 0x3061e
leaq -0x160(%rbp), %rax
movq %rax, -0x1748(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x1010e(%rip), %rsi     # 0x40748
leaq -0xfe8(%rbp), %rdi
movq %rdi, -0x1750(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1750(%rbp), %rax
movq %rax, -0xf48(%rbp)
movq $0x14, -0xf40(%rbp)
leaq -0xfe9(%rbp), %rdi
movq %rdi, -0x1740(%rbp)
callq 0x1b640
movq -0x1748(%rbp), %rdi
movq -0x1740(%rbp), %rcx
movq -0xf48(%rbp), %rsi
movq -0xf40(%rbp), %rdx
callq 0x1b660
jmp 0x306a1
leaq -0x148(%rbp), %rax
movq %rax, -0x1760(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x1012b(%rip), %rsi     # 0x407e8
leaq -0x10a0(%rbp), %rdi
movq %rdi, -0x1768(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1768(%rbp), %rax
movq %rax, -0x1000(%rbp)
movq $0x14, -0xff8(%rbp)
leaq -0x10a1(%rbp), %rdi
movq %rdi, -0x1758(%rbp)
callq 0x1b640
movq -0x1760(%rbp), %rdi
movq -0x1758(%rbp), %rcx
movq -0x1000(%rbp), %rsi
movq -0xff8(%rbp), %rdx
callq 0x1b660
jmp 0x30724
leaq -0x130(%rbp), %rax
movq %rax, -0x1778(%rbp)
movq %rax, -0x300(%rbp)
leaq 0x10148(%rip), %rsi     # 0x40888
leaq -0x1158(%rbp), %rdi
movq %rdi, -0x1780(%rbp)
movl $0xa0, %edx
callq 0x3240
movq -0x1780(%rbp), %rax
movq %rax, -0x10b8(%rbp)
movq $0x14, -0x10b0(%rbp)
leaq -0x1159(%rbp), %rdi
movq %rdi, -0x1770(%rbp)
callq 0x1b640
movq -0x1778(%rbp), %rdi
movq -0x1770(%rbp), %rcx
movq -0x10b8(%rbp), %rsi
movq -0x10b0(%rbp), %rdx
callq 0x1b660
jmp 0x307a7
movb $0x0, -0x115a(%rbp)
leaq -0x2f8(%rbp), %rax
movq %rax, -0x118(%rbp)
movq $0x14, -0x110(%rbp)
leaq -0x115b(%rbp), %rdi
movq %rdi, -0x1788(%rbp)
callq 0x1b6e0
movq -0x1788(%rbp), %rcx
movq -0x118(%rbp), %rsi
movq -0x110(%rbp), %rdx
leaq -0x108(%rbp), %rdi
callq 0x1b700
jmp 0x307fd
leaq -0x115b(%rbp), %rdi
callq 0x1b780
leaq -0x2f8(%rbp), %rax
movq %rax, -0x1798(%rbp)
addq $0x1e0, %rax            # imm = 0x1E0
movq %rax, -0x1790(%rbp)
movq -0x1790(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x17a0(%rbp)
callq 0x1b7a0
movq -0x1798(%rbp), %rcx
movq -0x17a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1790(%rbp)
jne 0x30824
leaq -0x1159(%rbp), %rdi
callq 0x1b800
leaq -0x10a1(%rbp), %rdi
callq 0x1b800
leaq -0xfe9(%rbp), %rdi
callq 0x1b800
leaq -0xf31(%rbp), %rdi
callq 0x1b800
leaq -0xe79(%rbp), %rdi
callq 0x1b800
leaq -0xdc1(%rbp), %rdi
callq 0x1b800
leaq -0xd09(%rbp), %rdi
callq 0x1b800
leaq -0xc51(%rbp), %rdi
callq 0x1b800
leaq -0xb99(%rbp), %rdi
callq 0x1b800
leaq -0xae1(%rbp), %rdi
callq 0x1b800
leaq -0xa29(%rbp), %rdi
callq 0x1b800
leaq -0x971(%rbp), %rdi
callq 0x1b800
leaq -0x8b9(%rbp), %rdi
callq 0x1b800
leaq -0x801(%rbp), %rdi
callq 0x1b800
leaq -0x749(%rbp), %rdi
callq 0x1b800
leaq -0x691(%rbp), %rdi
callq 0x1b800
leaq -0x5d9(%rbp), %rdi
callq 0x1b800
leaq -0x521(%rbp), %rdi
callq 0x1b800
leaq -0x469(%rbp), %rdi
callq 0x1b800
leaq -0x3b1(%rbp), %rdi
callq 0x1b800
leaq -0x11c8(%rbp), %rax
movq %rax, -0x17b0(%rbp)
leaq -0x11c9(%rbp), %rdi
movq %rdi, -0x17a8(%rbp)
callq 0x3470
movq -0x17b0(%rbp), %rdi
movq -0x17a8(%rbp), %rdx
leaq 0x26f2(%rip), %rsi      # 0x3306d
callq 0x18790
jmp 0x30982
movb $0x1, -0x11cd(%rbp)
leaq -0x11a8(%rbp), %rax
movq %rax, -0x17c0(%rbp)
leaq -0x11ca(%rbp), %rdi
movq %rdi, -0x17b8(%rbp)
callq 0x3470
movq -0x17c0(%rbp), %rdi
movq -0x17b8(%rbp), %rdx
leaq 0x26ae(%rip), %rsi      # 0x3306d
callq 0x18790
jmp 0x309c6
movb $0x1, -0x11cc(%rbp)
leaq -0x1188(%rbp), %rax
movq %rax, -0x17d0(%rbp)
leaq -0x11cb(%rbp), %rdi
movq %rdi, -0x17c8(%rbp)
callq 0x3470
movq -0x17d0(%rbp), %rdi
movq -0x17c8(%rbp), %rdx
leaq 0x266a(%rip), %rsi      # 0x3306d
callq 0x18790
jmp 0x30a0a
movabsq $0x4020000000000000, %rax # imm = 0x4020000000000000
movq %rax, -0x1168(%rbp)
movb $0x0, -0x11cc(%rbp)
movb $0x0, -0x11cd(%rbp)
leaq -0x11cb(%rbp), %rdi
callq 0x32e0
leaq -0x11ca(%rbp), %rdi
callq 0x32e0
leaq -0x11c9(%rbp), %rdi
callq 0x32e0
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq -0x11c8(%rbp), %rdx
callq 0x18520
movb %al, -0x17d1(%rbp)
jmp 0x30a68
movb -0x17d1(%rbp), %al
testb $0x1, %al
jne 0x30f7f
jmp 0x30a78
leaq -0x11f1(%rbp), %rdi
movq %rdi, -0x17e0(%rbp)
callq 0x3470
movq -0x17e0(%rbp), %rdx
leaq 0xfe8f(%rip), %rsi      # 0x40928
leaq -0x11f0(%rbp), %rdi
callq 0x18790
jmp 0x30aa7
leaq -0x11f0(%rbp), %rdi
movsd 0xd84a(%rip), %xmm0     # 0x3e300
callq 0x18490
jmp 0x30abd
leaq -0x11f0(%rbp), %rdi
callq 0x3190
leaq -0x11f1(%rbp), %rdi
callq 0x32e0
movl $0x1, -0x4(%rbp)
movl $0x1, -0x11f8(%rbp)
jmp 0x31314
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0xd9(%rbp), %rdi
callq 0x1b800
jmp 0x31362
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30e27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30e1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30e03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30df7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30deb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30ddf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30dd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30dc7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30dbb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30daf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30da3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d5b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30d43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x115b(%rbp), %rdi
callq 0x1b780
leaq -0x2f8(%rbp), %rax
movq %rax, -0x17f0(%rbp)
addq $0x1e0, %rax            # imm = 0x1E0
movq %rax, -0x17e8(%rbp)
movq -0x17e8(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x17f8(%rbp)
callq 0x1b7a0
movq -0x17f0(%rbp), %rcx
movq -0x17f8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x17e8(%rbp)
jne 0x30d10
jmp 0x30d43
leaq -0x1159(%rbp), %rdi
callq 0x1b800
leaq -0x10a1(%rbp), %rdi
callq 0x1b800
leaq -0xfe9(%rbp), %rdi
callq 0x1b800
leaq -0xf31(%rbp), %rdi
callq 0x1b800
leaq -0xe79(%rbp), %rdi
callq 0x1b800
leaq -0xdc1(%rbp), %rdi
callq 0x1b800
leaq -0xd09(%rbp), %rdi
callq 0x1b800
leaq -0xc51(%rbp), %rdi
callq 0x1b800
leaq -0xb99(%rbp), %rdi
callq 0x1b800
leaq -0xae1(%rbp), %rdi
callq 0x1b800
leaq -0xa29(%rbp), %rdi
callq 0x1b800
leaq -0x971(%rbp), %rdi
callq 0x1b800
leaq -0x8b9(%rbp), %rdi
callq 0x1b800
leaq -0x801(%rbp), %rdi
callq 0x1b800
leaq -0x749(%rbp), %rdi
callq 0x1b800
leaq -0x691(%rbp), %rdi
callq 0x1b800
leaq -0x5d9(%rbp), %rdi
callq 0x1b800
leaq -0x521(%rbp), %rdi
callq 0x1b800
leaq -0x469(%rbp), %rdi
callq 0x1b800
leaq -0x3b1(%rbp), %rdi
callq 0x1b800
testb $0x1, -0x115a(%rbp)
jne 0x30e3e
jmp 0x30e8b
movq -0x300(%rbp), %rax
leaq -0x2f8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1800(%rbp)
je 0x30e89
movq -0x1800(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x1808(%rbp)
callq 0x1b7a0
movq -0x1808(%rbp), %rax
leaq -0x2f8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1800(%rbp)
jne 0x30e58
jmp 0x30e8b
jmp 0x31359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30f14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30eef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x11cb(%rbp), %rdi
callq 0x32e0
testb $0x1, -0x11cc(%rbp)
jne 0x30ee1
jmp 0x30eed
movq -0x17c0(%rbp), %rdi
callq 0x3190
jmp 0x30eef
leaq -0x11ca(%rbp), %rdi
callq 0x32e0
testb $0x1, -0x11cd(%rbp)
jne 0x30f06
jmp 0x30f12
movq -0x17b0(%rbp), %rdi
callq 0x3190
jmp 0x30f14
leaq -0x11c9(%rbp), %rdi
callq 0x32e0
jmp 0x3134d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x31341
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x30f6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x11f0(%rbp), %rdi
callq 0x3190
leaq -0x11f1(%rbp), %rdi
callq 0x32e0
jmp 0x31341
leaq -0x1290(%rbp), %rdi
callq 0x21d40
jmp 0x30f8d
leaq -0x1188(%rbp), %rdi
leaq 0x20d2(%rip), %rsi      # 0x3306d
callq 0x31370
movb %al, -0x1809(%rbp)
jmp 0x30fa8
movb -0x1809(%rbp), %al
testb $0x1, %al
jne 0x30fb7
jmp 0x3103b
movsd -0x1168(%rbp), %xmm0
leaq -0x1188(%rbp), %rdx
leaq 0x1d43b(%rip), %rsi     # 0x4e408
leaq -0x1328(%rbp), %rdi
callq 0x20f90
jmp 0x30fdb
leaq -0x1290(%rbp), %rdi
leaq -0x1328(%rbp), %rsi
callq 0x21ec0
jmp 0x30ff0
leaq -0x1328(%rbp), %rdi
callq 0x21df0
jmp 0x31147
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x31306
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x1328(%rbp), %rdi
callq 0x21df0
jmp 0x31306
movsd -0x1168(%rbp), %xmm0
movsd %xmm0, -0x1820(%rbp)
leaq -0x13e1(%rbp), %rdi
movq %rdi, -0x1818(%rbp)
callq 0x3470
movq -0x1818(%rbp), %rdx
leaq 0xf8c3(%rip), %rsi      # 0x4092f
leaq -0x13e0(%rbp), %rdi
callq 0x18790
jmp 0x3107a
movsd -0x1820(%rbp), %xmm0
leaq 0x1d37f(%rip), %rsi     # 0x4e408
leaq -0x13c0(%rbp), %rdi
leaq -0x28(%rbp), %rdx
leaq -0x108(%rbp), %rcx
leaq -0x13e0(%rbp), %r8
callq 0x20af0
jmp 0x310a9
leaq -0x1290(%rbp), %rdi
leaq -0x13c0(%rbp), %rsi
callq 0x21ec0
jmp 0x310be
leaq -0x13c0(%rbp), %rdi
callq 0x21df0
leaq -0x13e0(%rbp), %rdi
callq 0x3190
leaq -0x13e1(%rbp), %rdi
callq 0x32e0
jmp 0x31147
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x31136
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x3112a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x13c0(%rbp), %rdi
callq 0x21df0
leaq -0x13e0(%rbp), %rdi
callq 0x3190
leaq -0x13e1(%rbp), %rdi
callq 0x32e0
jmp 0x31306
leaq -0x11a8(%rbp), %rdi
leaq 0x1f18(%rip), %rsi      # 0x3306d
callq 0x18840
movb %al, -0x1821(%rbp)
jmp 0x31162
movb -0x1821(%rbp), %al
testb $0x1, %al
jne 0x3116e
jmp 0x311ec
leaq -0x11c8(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
leaq -0x1460(%rbp), %rdi
callq 0x19060
jmp 0x3118b
leaq -0x1290(%rbp), %rdi
leaq -0x1460(%rbp), %rsi
callq 0x22510
movsd %xmm0, -0x1830(%rbp)
jmp 0x311a8
movsd -0x1830(%rbp), %xmm0
movsd %xmm0, -0x13f0(%rbp)
leaq -0x1460(%rbp), %rdi
callq 0x1a610
jmp 0x31281
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x1460(%rbp), %rdi
callq 0x1a610
jmp 0x31306
leaq -0x11c8(%rbp), %rdi
callq 0x3110
movq %rax, -0x1838(%rbp)
leaq -0x11a8(%rbp), %rdi
callq 0x3110
movq -0x1838(%rbp), %rsi
movq %rax, %rdx
leaq -0x1570(%rbp), %rdi
callq 0x2b340
jmp 0x31223
leaq -0x1290(%rbp), %rdi
leaq -0x1570(%rbp), %rsi
callq 0x22820
movsd %xmm0, -0x1840(%rbp)
jmp 0x31240
movsd -0x1840(%rbp), %xmm0
movsd %xmm0, -0x13f0(%rbp)
leaq -0x1570(%rbp), %rdi
callq 0x2b420
jmp 0x31281
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x1570(%rbp), %rdi
callq 0x2b420
jmp 0x31306
leaq -0x1590(%rbp), %rdi
leaq -0x1290(%rbp), %rsi
callq 0x228e0
jmp 0x31296
leaq -0x1590(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
movsd -0x13f0(%rbp), %xmm0
leaq 0xf68a(%rip), %rdi      # 0x4093e
movb $0x1, %al
callq 0x3070
jmp 0x312bd
leaq -0x1590(%rbp), %rdi
callq 0x3190
movl $0x0, -0x4(%rbp)
movl $0x1, -0x11f8(%rbp)
leaq -0x1290(%rbp), %rdi
callq 0x21df0
jmp 0x31314
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x1590(%rbp), %rdi
callq 0x3190
leaq -0x1290(%rbp), %rdi
callq 0x21df0
jmp 0x31341
leaq -0x11c8(%rbp), %rdi
callq 0x313a0
leaq -0x108(%rbp), %rdi
callq 0x1b820
leaq -0x28(%rbp), %rdi
callq 0x1b7a0
movl -0x4(%rbp), %eax
addq $0x1840, %rsp           # imm = 0x1840
popq %rbp
retq
leaq -0x11c8(%rbp), %rdi
callq 0x313a0
leaq -0x108(%rbp), %rdi
callq 0x1b820
leaq -0x28(%rbp), %rdi
callq 0x1b7a0
movq -0xe8(%rbp), %rdi
callq 0x3460
nop