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

	/*
	 * (0) default energies (dmax=6.8A, kmin=5)
	 */
	const std::vector<double> h = {
		-1.60823e+00, -1.50102e+00, -1.47335e+00, -1.82202e+00, -1.75968e+00, -7.72545e-01, 6.04329e-01, 2.55978e-01, -4.19681e-01, -1.01144e+00, 4.42831e+00, 1.12513e+00, 7.39351e-01, 5.13158e-01, 7.03065e-01, -4.79007e-03, 1.23034e-01, 1.88040e+00
		};
	const std::vector<std::vector<double> > J = {
		{5.14494e-01, 2.32982e-01, -1.18825e-02, -4.79267e-01, -2.60971e-01, 7.92265e-03, 7.65882e-02, 3.00580e-02, 2.19054e-02, 5.83614e-02, -1.36975e-01, 1.96902e-01, 9.23782e-03, -2.08941e-02, 6.00891e-02, 1.23249e-01, -4.56176e-02, -8.81898e-03 }, 
		{2.32982e-01, -2.00039e-01, -6.56869e-02, 2.70771e-01, -2.92405e-01, -1.29688e-03, 2.66237e-02, 2.78053e-02, 4.34264e-02, 9.09723e-02, -3.18841e-03, -1.84093e-01, 1.75533e-02, 4.55108e-03, 4.44661e-03, 8.85454e-02, -5.36141e-03, -2.89657e-03 }, 
		{-1.18825e-02, -6.56869e-02, -3.58054e-03, 1.61754e-02, 1.01122e-01, -5.20250e-02, 1.47322e-02, -7.77877e-03, 2.93541e-02, 6.68389e-02, -3.44028e-02, -3.95784e-02, -9.05682e-03, -6.92520e-02, 8.67456e-02, 3.06997e-02, 2.63688e-02, -7.55891e-02 }, 
		{-4.79267e-01, 2.70771e-01, 1.61754e-02, -7.34460e-02, 4.22984e-01, -4.73875e-03, 1.43135e-02, -1.76282e-02, -7.93952e-03, 7.52781e-02, -1.01343e-01, 1.66995e-01, -1.17393e-02, -3.35176e-02, 4.17009e-02, 3.22659e-02, -2.99271e-02, -2.45088e-02 }, 
		{-2.60971e-01, -2.92405e-01, 1.01122e-01, 4.22984e-01, 1.36008e-01, -7.13044e-03, -7.48668e-03, -4.55776e-03, -7.20017e-03, 7.64353e-02, -1.09748e-01, -2.75419e-01, -8.12165e-03, -1.61199e-02, 6.78784e-02, 3.29076e-02, 1.26425e-02, -4.97552e-02 }, 
		{7.92265e-03, -1.29688e-03, -5.20250e-02, -4.73875e-03, -7.13044e-03, -1.05435e-01, -3.19825e-02, 1.00205e-03, 1.33486e-02, 2.53556e-02, -8.93222e-02, 2.00271e-02, -3.76764e-02, -1.29922e-01, 1.39732e-02, 4.12190e-02, -2.60661e-03, -9.08305e-02 }, 
		{7.65882e-02, 2.66237e-02, 1.47322e-02, 1.43135e-02, -7.48668e-03, -3.19825e-02, 6.23459e-02, 8.37308e-02, -4.59253e-03, -2.63784e-01, 5.51613e-02, -1.71107e-02, 2.27089e-03, 2.19795e-02, 2.54067e-01, 2.69225e-01, -1.72442e-02, -8.22190e-02 }, 
		{3.00580e-02, 2.78053e-02, -7.77877e-03, -1.76282e-02, -4.55776e-03, 1.00205e-03, 8.37308e-02, 1.56708e-02, -9.66613e-03, -2.53002e-01, 1.37543e-01, 7.54680e-03, -7.22425e-03, 7.30337e-02, 2.41662e-01, 1.82912e-01, -1.14706e-02, -7.38459e-02 }, 
		{2.19054e-02, 4.34264e-02, 2.93541e-02, -7.93952e-03, -7.20017e-03, 1.33486e-02, -4.59253e-03, -9.66613e-03, -8.89144e-02, -4.49119e-02, 1.13148e-01, -1.74796e-02, -2.83279e-02, 9.27447e-02, 7.43568e-03, -2.85799e-02, -5.86095e-02, -5.35649e-02 }, 
		{5.83614e-02, 9.09723e-02, 6.68389e-02, 7.52781e-02, 7.64353e-02, 2.53556e-02, -2.63784e-01, -2.53002e-01, -4.49119e-02, 1.21987e-01, 1.30581e-01, -5.94875e-03, -1.52840e-01, 1.10914e-01, -3.08656e-01, -3.40476e-01, -8.70755e-02, -9.98389e-02 }, 
		{-1.36975e-01, -3.18841e-03, -3.44028e-02, -1.01343e-01, -1.09748e-01, -8.93222e-02, 5.51613e-02, 1.37543e-01, 1.13148e-01, 1.30581e-01, -1.16021e+00, 1.89012e-01, -7.49936e-02, -8.24475e-02, 2.10707e-01, 1.61511e-01, 8.90165e-02, -5.08981e-02 }, 
		{1.96902e-01, -1.84093e-01, -3.95784e-02, 1.66995e-01, -2.75419e-01, 2.00271e-02, -1.71107e-02, 7.54680e-03, -1.74796e-02, -5.94875e-03, 1.89012e-01, -2.76854e-01, -1.09103e-02, 1.42503e-01, 1.03347e-01, -2.61694e-02, -1.89722e-02, -1.13523e-02 }, 
		{9.23782e-03, 1.75533e-02, -9.05682e-03, -1.17393e-02, -8.12165e-03, -3.76764e-02, 2.27089e-03, -7.22425e-03, -2.83279e-02, -1.52840e-01, -7.49936e-02, -1.09103e-02, -1.45362e-01, 1.86466e-02, 8.87609e-02, 6.51157e-02, -7.00287e-02, -1.05835e-01 }, 
		{-2.08941e-02, 4.55108e-03, -6.92520e-02, -3.35176e-02, -1.61199e-02, -1.29922e-01, 2.19795e-02, 7.30337e-02, 9.27447e-02, 1.10914e-01, -8.24475e-02, 1.42503e-01, 1.86466e-02, -2.57466e-01, 8.46647e-02, 1.38211e-01, 3.62556e-02, -1.05258e-01 }, 
		{6.00891e-02, 4.44661e-03, 8.67456e-02, 4.17009e-02, 6.78784e-02, 1.39732e-02, 2.54067e-01, 2.41662e-01, 7.43568e-03, -3.08656e-01, 2.10707e-01, 1.03347e-01, 8.87609e-02, 8.46647e-02, 3.68852e-01, 3.06581e-01, 3.14345e-02, -1.34007e-01 }, 
		{1.23249e-01, 8.85454e-02, 3.06997e-02, 3.22659e-02, 3.29076e-02, 4.12190e-02, 2.69225e-01, 1.82912e-01, -2.85799e-02, -3.40476e-01, 1.61511e-01, -2.61694e-02, 6.51157e-02, 1.38211e-01, 3.06581e-01, 1.85065e-01, -4.92545e-02, -1.02915e-01 }, 
		{-4.56176e-02, -5.36141e-03, 2.63688e-02, -2.99271e-02, 1.26425e-02, -2.60661e-03, -1.72442e-02, -1.14706e-02, -5.86095e-02, -8.70755e-02, 8.90165e-02, -1.89722e-02, -7.00287e-02, 3.62556e-02, 3.14345e-02, -4.92545e-02, -4.79142e-02, -2.83613e-02 }, 
		{-8.81898e-03, -2.89657e-03, -7.55891e-02, -2.45088e-02, -4.97552e-02, -9.08305e-02, -8.22190e-02, -7.38459e-02, -5.35649e-02, -9.98389e-02, -5.08981e-02, -1.13523e-02, -1.05835e-01, -1.05258e-01, -1.34007e-01, -1.02915e-01, -2.83613e-02, -1.01090e-01 }, 
		};

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

	/*
	 * (2) set potential
	 */
	AACE AACE_;
	if (opts.table != "") {
		AACE_ = AACE(AACE18_GROUPS, opts.dmax, opts.table);
	} else {
		AACE_ = AACE(AACE18_GROUPS, h, J, opts.dmax, "AACE18_6.8A_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 $0x1540, %rsp           # imm = 0x1540
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0x1bb40(%rip), %rsi     # 0x34b10
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x12d0(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x12d0(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x12, -0x30(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x12c8(%rbp)
callq 0x1a4e0
movq -0x12c8(%rbp), %rcx
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x1a500
jmp 0x19028
leaq -0xc9(%rbp), %rdi
callq 0x1a6a0
movb $0x1, -0xe8a(%rbp)
leaq -0x2b8(%rbp), %rax
movq %rax, -0x12e0(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bb49(%rip), %rsi     # 0x34ba0
leaq -0x360(%rbp), %rdi
movq %rdi, -0x12e8(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x12e8(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movq $0x12, -0x2c8(%rbp)
leaq -0x361(%rbp), %rdi
movq %rdi, -0x12d8(%rbp)
callq 0x1a4e0
movq -0x12e0(%rbp), %rdi
movq -0x12d8(%rbp), %rcx
movq -0x2d0(%rbp), %rsi
movq -0x2c8(%rbp), %rdx
callq 0x1a500
jmp 0x190be
leaq -0x2a0(%rbp), %rax
movq %rax, -0x12f8(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bb56(%rip), %rsi     # 0x34c30
leaq -0x408(%rbp), %rdi
movq %rdi, -0x1300(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1300(%rbp), %rax
movq %rax, -0x378(%rbp)
movq $0x12, -0x370(%rbp)
leaq -0x409(%rbp), %rdi
movq %rdi, -0x12f0(%rbp)
callq 0x1a4e0
movq -0x12f8(%rbp), %rdi
movq -0x12f0(%rbp), %rcx
movq -0x378(%rbp), %rsi
movq -0x370(%rbp), %rdx
callq 0x1a500
jmp 0x19141
leaq -0x288(%rbp), %rax
movq %rax, -0x1310(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bb63(%rip), %rsi     # 0x34cc0
leaq -0x4b0(%rbp), %rdi
movq %rdi, -0x1318(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1318(%rbp), %rax
movq %rax, -0x420(%rbp)
movq $0x12, -0x418(%rbp)
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0x1308(%rbp)
callq 0x1a4e0
movq -0x1310(%rbp), %rdi
movq -0x1308(%rbp), %rcx
movq -0x420(%rbp), %rsi
movq -0x418(%rbp), %rdx
callq 0x1a500
jmp 0x191c4
leaq -0x270(%rbp), %rax
movq %rax, -0x1328(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bb70(%rip), %rsi     # 0x34d50
leaq -0x558(%rbp), %rdi
movq %rdi, -0x1330(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1330(%rbp), %rax
movq %rax, -0x4c8(%rbp)
movq $0x12, -0x4c0(%rbp)
leaq -0x559(%rbp), %rdi
movq %rdi, -0x1320(%rbp)
callq 0x1a4e0
movq -0x1328(%rbp), %rdi
movq -0x1320(%rbp), %rcx
movq -0x4c8(%rbp), %rsi
movq -0x4c0(%rbp), %rdx
callq 0x1a500
jmp 0x19247
leaq -0x258(%rbp), %rax
movq %rax, -0x1340(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bb7d(%rip), %rsi     # 0x34de0
leaq -0x600(%rbp), %rdi
movq %rdi, -0x1348(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1348(%rbp), %rax
movq %rax, -0x570(%rbp)
movq $0x12, -0x568(%rbp)
leaq -0x601(%rbp), %rdi
movq %rdi, -0x1338(%rbp)
callq 0x1a4e0
movq -0x1340(%rbp), %rdi
movq -0x1338(%rbp), %rcx
movq -0x570(%rbp), %rsi
movq -0x568(%rbp), %rdx
callq 0x1a500
jmp 0x192ca
leaq -0x240(%rbp), %rax
movq %rax, -0x1358(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bb8a(%rip), %rsi     # 0x34e70
leaq -0x6a8(%rbp), %rdi
movq %rdi, -0x1360(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1360(%rbp), %rax
movq %rax, -0x618(%rbp)
movq $0x12, -0x610(%rbp)
leaq -0x6a9(%rbp), %rdi
movq %rdi, -0x1350(%rbp)
callq 0x1a4e0
movq -0x1358(%rbp), %rdi
movq -0x1350(%rbp), %rcx
movq -0x618(%rbp), %rsi
movq -0x610(%rbp), %rdx
callq 0x1a500
jmp 0x1934d
leaq -0x228(%rbp), %rax
movq %rax, -0x1370(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bb97(%rip), %rsi     # 0x34f00
leaq -0x750(%rbp), %rdi
movq %rdi, -0x1378(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1378(%rbp), %rax
movq %rax, -0x6c0(%rbp)
movq $0x12, -0x6b8(%rbp)
leaq -0x751(%rbp), %rdi
movq %rdi, -0x1368(%rbp)
callq 0x1a4e0
movq -0x1370(%rbp), %rdi
movq -0x1368(%rbp), %rcx
movq -0x6c0(%rbp), %rsi
movq -0x6b8(%rbp), %rdx
callq 0x1a500
jmp 0x193d0
leaq -0x210(%rbp), %rax
movq %rax, -0x1388(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bba4(%rip), %rsi     # 0x34f90
leaq -0x7f8(%rbp), %rdi
movq %rdi, -0x1390(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1390(%rbp), %rax
movq %rax, -0x768(%rbp)
movq $0x12, -0x760(%rbp)
leaq -0x7f9(%rbp), %rdi
movq %rdi, -0x1380(%rbp)
callq 0x1a4e0
movq -0x1388(%rbp), %rdi
movq -0x1380(%rbp), %rcx
movq -0x768(%rbp), %rsi
movq -0x760(%rbp), %rdx
callq 0x1a500
jmp 0x19453
leaq -0x1f8(%rbp), %rax
movq %rax, -0x13a0(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bbb1(%rip), %rsi     # 0x35020
leaq -0x8a0(%rbp), %rdi
movq %rdi, -0x13a8(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x13a8(%rbp), %rax
movq %rax, -0x810(%rbp)
movq $0x12, -0x808(%rbp)
leaq -0x8a1(%rbp), %rdi
movq %rdi, -0x1398(%rbp)
callq 0x1a4e0
movq -0x13a0(%rbp), %rdi
movq -0x1398(%rbp), %rcx
movq -0x810(%rbp), %rsi
movq -0x808(%rbp), %rdx
callq 0x1a500
jmp 0x194d6
leaq -0x1e0(%rbp), %rax
movq %rax, -0x13b8(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bbbe(%rip), %rsi     # 0x350b0
leaq -0x948(%rbp), %rdi
movq %rdi, -0x13c0(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x13c0(%rbp), %rax
movq %rax, -0x8b8(%rbp)
movq $0x12, -0x8b0(%rbp)
leaq -0x949(%rbp), %rdi
movq %rdi, -0x13b0(%rbp)
callq 0x1a4e0
movq -0x13b8(%rbp), %rdi
movq -0x13b0(%rbp), %rcx
movq -0x8b8(%rbp), %rsi
movq -0x8b0(%rbp), %rdx
callq 0x1a500
jmp 0x19559
leaq -0x1c8(%rbp), %rax
movq %rax, -0x13d0(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bbcb(%rip), %rsi     # 0x35140
leaq -0x9f0(%rbp), %rdi
movq %rdi, -0x13d8(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x13d8(%rbp), %rax
movq %rax, -0x960(%rbp)
movq $0x12, -0x958(%rbp)
leaq -0x9f1(%rbp), %rdi
movq %rdi, -0x13c8(%rbp)
callq 0x1a4e0
movq -0x13d0(%rbp), %rdi
movq -0x13c8(%rbp), %rcx
movq -0x960(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1a500
jmp 0x195dc
leaq -0x1b0(%rbp), %rax
movq %rax, -0x13e8(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bbd8(%rip), %rsi     # 0x351d0
leaq -0xa98(%rbp), %rdi
movq %rdi, -0x13f0(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x13f0(%rbp), %rax
movq %rax, -0xa08(%rbp)
movq $0x12, -0xa00(%rbp)
leaq -0xa99(%rbp), %rdi
movq %rdi, -0x13e0(%rbp)
callq 0x1a4e0
movq -0x13e8(%rbp), %rdi
movq -0x13e0(%rbp), %rcx
movq -0xa08(%rbp), %rsi
movq -0xa00(%rbp), %rdx
callq 0x1a500
jmp 0x1965f
leaq -0x198(%rbp), %rax
movq %rax, -0x1400(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bbe5(%rip), %rsi     # 0x35260
leaq -0xb40(%rbp), %rdi
movq %rdi, -0x1408(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1408(%rbp), %rax
movq %rax, -0xab0(%rbp)
movq $0x12, -0xaa8(%rbp)
leaq -0xb41(%rbp), %rdi
movq %rdi, -0x13f8(%rbp)
callq 0x1a4e0
movq -0x1400(%rbp), %rdi
movq -0x13f8(%rbp), %rcx
movq -0xab0(%rbp), %rsi
movq -0xaa8(%rbp), %rdx
callq 0x1a500
jmp 0x196e2
leaq -0x180(%rbp), %rax
movq %rax, -0x1418(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bbf2(%rip), %rsi     # 0x352f0
leaq -0xbe8(%rbp), %rdi
movq %rdi, -0x1420(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1420(%rbp), %rax
movq %rax, -0xb58(%rbp)
movq $0x12, -0xb50(%rbp)
leaq -0xbe9(%rbp), %rdi
movq %rdi, -0x1410(%rbp)
callq 0x1a4e0
movq -0x1418(%rbp), %rdi
movq -0x1410(%rbp), %rcx
movq -0xb58(%rbp), %rsi
movq -0xb50(%rbp), %rdx
callq 0x1a500
jmp 0x19765
leaq -0x168(%rbp), %rax
movq %rax, -0x1430(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bbff(%rip), %rsi     # 0x35380
leaq -0xc90(%rbp), %rdi
movq %rdi, -0x1438(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1438(%rbp), %rax
movq %rax, -0xc00(%rbp)
movq $0x12, -0xbf8(%rbp)
leaq -0xc91(%rbp), %rdi
movq %rdi, -0x1428(%rbp)
callq 0x1a4e0
movq -0x1430(%rbp), %rdi
movq -0x1428(%rbp), %rcx
movq -0xc00(%rbp), %rsi
movq -0xbf8(%rbp), %rdx
callq 0x1a500
jmp 0x197e8
leaq -0x150(%rbp), %rax
movq %rax, -0x1448(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bc0c(%rip), %rsi     # 0x35410
leaq -0xd38(%rbp), %rdi
movq %rdi, -0x1450(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1450(%rbp), %rax
movq %rax, -0xca8(%rbp)
movq $0x12, -0xca0(%rbp)
leaq -0xd39(%rbp), %rdi
movq %rdi, -0x1440(%rbp)
callq 0x1a4e0
movq -0x1448(%rbp), %rdi
movq -0x1440(%rbp), %rcx
movq -0xca8(%rbp), %rsi
movq -0xca0(%rbp), %rdx
callq 0x1a500
jmp 0x1986b
leaq -0x138(%rbp), %rax
movq %rax, -0x1460(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bc19(%rip), %rsi     # 0x354a0
leaq -0xde0(%rbp), %rdi
movq %rdi, -0x1468(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1468(%rbp), %rax
movq %rax, -0xd50(%rbp)
movq $0x12, -0xd48(%rbp)
leaq -0xde1(%rbp), %rdi
movq %rdi, -0x1458(%rbp)
callq 0x1a4e0
movq -0x1460(%rbp), %rdi
movq -0x1458(%rbp), %rcx
movq -0xd50(%rbp), %rsi
movq -0xd48(%rbp), %rdx
callq 0x1a500
jmp 0x198ee
leaq -0x120(%rbp), %rax
movq %rax, -0x1478(%rbp)
movq %rax, -0x2c0(%rbp)
leaq 0x1bc26(%rip), %rsi     # 0x35530
leaq -0xe88(%rbp), %rdi
movq %rdi, -0x1480(%rbp)
movl $0x90, %edx
callq 0x3240
movq -0x1480(%rbp), %rax
movq %rax, -0xdf8(%rbp)
movq $0x12, -0xdf0(%rbp)
leaq -0xe89(%rbp), %rdi
movq %rdi, -0x1470(%rbp)
callq 0x1a4e0
movq -0x1478(%rbp), %rdi
movq -0x1470(%rbp), %rcx
movq -0xdf8(%rbp), %rsi
movq -0xdf0(%rbp), %rdx
callq 0x1a500
jmp 0x19971
movb $0x0, -0xe8a(%rbp)
leaq -0x2b8(%rbp), %rax
movq %rax, -0x108(%rbp)
movq $0x12, -0x100(%rbp)
leaq -0xe8b(%rbp), %rdi
movq %rdi, -0x1488(%rbp)
callq 0x1a580
movq -0x1488(%rbp), %rcx
movq -0x108(%rbp), %rsi
movq -0x100(%rbp), %rdx
leaq -0xf8(%rbp), %rdi
callq 0x1a5a0
jmp 0x199c7
leaq -0xe8b(%rbp), %rdi
callq 0x1a620
leaq -0x2b8(%rbp), %rax
movq %rax, -0x1498(%rbp)
addq $0x1b0, %rax            # imm = 0x1B0
movq %rax, -0x1490(%rbp)
movq -0x1490(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x14a0(%rbp)
callq 0x1a640
movq -0x1498(%rbp), %rcx
movq -0x14a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1490(%rbp)
jne 0x199ee
leaq -0xe89(%rbp), %rdi
callq 0x1a6a0
leaq -0xde1(%rbp), %rdi
callq 0x1a6a0
leaq -0xd39(%rbp), %rdi
callq 0x1a6a0
leaq -0xc91(%rbp), %rdi
callq 0x1a6a0
leaq -0xbe9(%rbp), %rdi
callq 0x1a6a0
leaq -0xb41(%rbp), %rdi
callq 0x1a6a0
leaq -0xa99(%rbp), %rdi
callq 0x1a6a0
leaq -0x9f1(%rbp), %rdi
callq 0x1a6a0
leaq -0x949(%rbp), %rdi
callq 0x1a6a0
leaq -0x8a1(%rbp), %rdi
callq 0x1a6a0
leaq -0x7f9(%rbp), %rdi
callq 0x1a6a0
leaq -0x751(%rbp), %rdi
callq 0x1a6a0
leaq -0x6a9(%rbp), %rdi
callq 0x1a6a0
leaq -0x601(%rbp), %rdi
callq 0x1a6a0
leaq -0x559(%rbp), %rdi
callq 0x1a6a0
leaq -0x4b1(%rbp), %rdi
callq 0x1a6a0
leaq -0x409(%rbp), %rdi
callq 0x1a6a0
leaq -0x361(%rbp), %rdi
callq 0x1a6a0
leaq -0xef8(%rbp), %rax
movq %rax, -0x14b0(%rbp)
leaq -0xef9(%rbp), %rdi
movq %rdi, -0x14a8(%rbp)
callq 0x3470
movq -0x14b0(%rbp), %rdi
movq -0x14a8(%rbp), %rdx
leaq 0x19540(%rip), %rsi     # 0x3306d
callq 0x18790
jmp 0x19b34
movb $0x1, -0xefd(%rbp)
leaq -0xed8(%rbp), %rax
movq %rax, -0x14c0(%rbp)
leaq -0xefa(%rbp), %rdi
movq %rdi, -0x14b8(%rbp)
callq 0x3470
movq -0x14c0(%rbp), %rdi
movq -0x14b8(%rbp), %rdx
leaq 0x194fc(%rip), %rsi     # 0x3306d
callq 0x18790
jmp 0x19b78
movb $0x1, -0xefc(%rbp)
leaq -0xeb8(%rbp), %rax
movq %rax, -0x14d0(%rbp)
leaq -0xefb(%rbp), %rdi
movq %rdi, -0x14c8(%rbp)
callq 0x3470
movq -0x14d0(%rbp), %rdi
movq -0x14c8(%rbp), %rdx
leaq 0x194b8(%rip), %rsi     # 0x3306d
callq 0x18790
jmp 0x19bbc
movabsq $0x401b333333333333, %rax # imm = 0x401B333333333333
movq %rax, -0xe98(%rbp)
movb $0x0, -0xefc(%rbp)
movb $0x0, -0xefd(%rbp)
leaq -0xefb(%rbp), %rdi
callq 0x32e0
leaq -0xefa(%rbp), %rdi
callq 0x32e0
leaq -0xef9(%rbp), %rdi
callq 0x32e0
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq -0xef8(%rbp), %rdx
callq 0x18520
movb %al, -0x14d1(%rbp)
jmp 0x19c1a
movb -0x14d1(%rbp), %al
testb $0x1, %al
jne 0x1a0eb
jmp 0x19c2a
leaq -0xf21(%rbp), %rdi
movq %rdi, -0x14e0(%rbp)
callq 0x3470
movq -0x14e0(%rbp), %rdx
leaq 0x1bf11(%rip), %rsi     # 0x35b5c
leaq -0xf20(%rbp), %rdi
callq 0x18790
jmp 0x19c59
leaq -0xf20(%rbp), %rdi
movsd 0x195a0(%rip), %xmm0    # 0x33208
callq 0x18490
jmp 0x19c6f
leaq -0xf20(%rbp), %rdi
callq 0x3190
leaq -0xf21(%rbp), %rdi
callq 0x32e0
movl $0x1, -0x4(%rbp)
movl $0x1, -0xf28(%rbp)
jmp 0x1a480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xc9(%rbp), %rdi
callq 0x1a6a0
jmp 0x1a4ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19f03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19ef7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19eeb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19edf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19ed3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x19ec7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xe8b(%rbp), %rdi
callq 0x1a620
leaq -0x2b8(%rbp), %rax
movq %rax, -0x14f0(%rbp)
addq $0x1b0, %rax            # imm = 0x1B0
movq %rax, -0x14e8(%rbp)
movq -0x14e8(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x14f8(%rbp)
callq 0x1a640
movq -0x14f0(%rbp), %rcx
movq -0x14f8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x14e8(%rbp)
jne 0x19e94
jmp 0x19ec7
leaq -0xe89(%rbp), %rdi
callq 0x1a6a0
leaq -0xde1(%rbp), %rdi
callq 0x1a6a0
leaq -0xd39(%rbp), %rdi
callq 0x1a6a0
leaq -0xc91(%rbp), %rdi
callq 0x1a6a0
leaq -0xbe9(%rbp), %rdi
callq 0x1a6a0
leaq -0xb41(%rbp), %rdi
callq 0x1a6a0
leaq -0xa99(%rbp), %rdi
callq 0x1a6a0
leaq -0x9f1(%rbp), %rdi
callq 0x1a6a0
leaq -0x949(%rbp), %rdi
callq 0x1a6a0
leaq -0x8a1(%rbp), %rdi
callq 0x1a6a0
leaq -0x7f9(%rbp), %rdi
callq 0x1a6a0
leaq -0x751(%rbp), %rdi
callq 0x1a6a0
leaq -0x6a9(%rbp), %rdi
callq 0x1a6a0
leaq -0x601(%rbp), %rdi
callq 0x1a6a0
leaq -0x559(%rbp), %rdi
callq 0x1a6a0
leaq -0x4b1(%rbp), %rdi
callq 0x1a6a0
leaq -0x409(%rbp), %rdi
callq 0x1a6a0
leaq -0x361(%rbp), %rdi
callq 0x1a6a0
testb $0x1, -0xe8a(%rbp)
jne 0x19faa
jmp 0x19ff7
movq -0x2c0(%rbp), %rax
leaq -0x2b8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1500(%rbp)
je 0x19ff5
movq -0x1500(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x1508(%rbp)
callq 0x1a640
movq -0x1508(%rbp), %rax
leaq -0x2b8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1500(%rbp)
jne 0x19fc4
jmp 0x19ff7
jmp 0x1a4c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1a080
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1a05b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xefb(%rbp), %rdi
callq 0x32e0
testb $0x1, -0xefc(%rbp)
jne 0x1a04d
jmp 0x1a059
movq -0x14c0(%rbp), %rdi
callq 0x3190
jmp 0x1a05b
leaq -0xefa(%rbp), %rdi
callq 0x32e0
testb $0x1, -0xefd(%rbp)
jne 0x1a072
jmp 0x1a07e
movq -0x14b0(%rbp), %rdi
callq 0x3190
jmp 0x1a080
leaq -0xef9(%rbp), %rdi
callq 0x32e0
jmp 0x1a4b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1a4ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1a0da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xf20(%rbp), %rdi
callq 0x3190
leaq -0xf21(%rbp), %rdi
callq 0x32e0
jmp 0x1a4ad
leaq -0xfc0(%rbp), %rdi
callq 0x244d0
jmp 0x1a0f9
leaq -0xeb8(%rbp), %rdi
leaq 0x18f66(%rip), %rsi     # 0x3306d
callq 0x1b130
movb %al, -0x1509(%rbp)
jmp 0x1a114
movb -0x1509(%rbp), %al
testb $0x1, %al
jne 0x1a123
jmp 0x1a1a7
movsd -0xe98(%rbp), %xmm0
leaq -0xeb8(%rbp), %rdx
leaq 0x331af(%rip), %rsi     # 0x4d2e8
leaq -0x1058(%rbp), %rdi
callq 0x23720
jmp 0x1a147
leaq -0xfc0(%rbp), %rdi
leaq -0x1058(%rbp), %rsi
callq 0x24650
jmp 0x1a15c
leaq -0x1058(%rbp), %rdi
callq 0x24580
jmp 0x1a2b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1a472
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x1058(%rbp), %rdi
callq 0x24580
jmp 0x1a472
movsd -0xe98(%rbp), %xmm0
movsd %xmm0, -0x1520(%rbp)
leaq -0x1111(%rbp), %rdi
movq %rdi, -0x1518(%rbp)
callq 0x3470
movq -0x1518(%rbp), %rdx
leaq 0x1b98b(%rip), %rsi     # 0x35b63
leaq -0x1110(%rbp), %rdi
callq 0x18790
jmp 0x1a1e6
movsd -0x1520(%rbp), %xmm0
leaq 0x330f3(%rip), %rsi     # 0x4d2e8
leaq -0x10f0(%rbp), %rdi
leaq -0x28(%rbp), %rdx
leaq -0xf8(%rbp), %rcx
leaq -0x1110(%rbp), %r8
callq 0x23280
jmp 0x1a215
leaq -0xfc0(%rbp), %rdi
leaq -0x10f0(%rbp), %rsi
callq 0x24650
jmp 0x1a22a
leaq -0x10f0(%rbp), %rdi
callq 0x24580
leaq -0x1110(%rbp), %rdi
callq 0x3190
leaq -0x1111(%rbp), %rdi
callq 0x32e0
jmp 0x1a2b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1a2a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1a296
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x10f0(%rbp), %rdi
callq 0x24580
leaq -0x1110(%rbp), %rdi
callq 0x3190
leaq -0x1111(%rbp), %rdi
callq 0x32e0
jmp 0x1a472
leaq -0xed8(%rbp), %rdi
leaq 0x18dac(%rip), %rsi     # 0x3306d
callq 0x18840
movb %al, -0x1521(%rbp)
jmp 0x1a2ce
movb -0x1521(%rbp), %al
testb $0x1, %al
jne 0x1a2da
jmp 0x1a358
leaq -0xef8(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
leaq -0x1190(%rbp), %rdi
callq 0x1cee0
jmp 0x1a2f7
leaq -0xfc0(%rbp), %rdi
leaq -0x1190(%rbp), %rsi
callq 0x24ca0
movsd %xmm0, -0x1530(%rbp)
jmp 0x1a314
movsd -0x1530(%rbp), %xmm0
movsd %xmm0, -0x1120(%rbp)
leaq -0x1190(%rbp), %rdi
callq 0x1e490
jmp 0x1a3ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x1190(%rbp), %rdi
callq 0x1e490
jmp 0x1a472
leaq -0xef8(%rbp), %rdi
callq 0x3110
movq %rax, -0x1538(%rbp)
leaq -0xed8(%rbp), %rdi
callq 0x3110
movq -0x1538(%rbp), %rsi
movq %rax, %rdx
leaq -0x12a0(%rbp), %rdi
callq 0x2c8e0
jmp 0x1a38f
leaq -0xfc0(%rbp), %rdi
leaq -0x12a0(%rbp), %rsi
callq 0x24fb0
movsd %xmm0, -0x1540(%rbp)
jmp 0x1a3ac
movsd -0x1540(%rbp), %xmm0
movsd %xmm0, -0x1120(%rbp)
leaq -0x12a0(%rbp), %rdi
callq 0x2c9c0
jmp 0x1a3ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x12a0(%rbp), %rdi
callq 0x2c9c0
jmp 0x1a472
leaq -0x12c0(%rbp), %rdi
leaq -0xfc0(%rbp), %rsi
callq 0x25070
jmp 0x1a402
leaq -0x12c0(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
movsd -0x1120(%rbp), %xmm0
leaq 0x1b752(%rip), %rdi     # 0x35b72
movb $0x1, %al
callq 0x3070
jmp 0x1a429
leaq -0x12c0(%rbp), %rdi
callq 0x3190
movl $0x0, -0x4(%rbp)
movl $0x1, -0xf28(%rbp)
leaq -0xfc0(%rbp), %rdi
callq 0x24580
jmp 0x1a480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x12c0(%rbp), %rdi
callq 0x3190
leaq -0xfc0(%rbp), %rdi
callq 0x24580
jmp 0x1a4ad
leaq -0xef8(%rbp), %rdi
callq 0x1b160
leaq -0xf8(%rbp), %rdi
callq 0x1a6c0
leaq -0x28(%rbp), %rdi
callq 0x1a640
movl -0x4(%rbp), %eax
addq $0x1540, %rsp           # imm = 0x1540
popq %rbp
retq
leaq -0xef8(%rbp), %rdi
callq 0x1b160
leaq -0xf8(%rbp), %rdi
callq 0x1a6c0
leaq -0x28(%rbp), %rdi
callq 0x1a640
movq -0xd8(%rbp), %rdi
callq 0x3460
nopw (%rax,%rax)