// File: WolfgangLechner[P]StructureAnalysis/molecular_system.cpp
// Function: CMolecularSystem::fillConstants()
void CMolecularSystem::fillConstants()
{
  //Wigner ThreeJSymbol for l = 6
  constants.WignerSymbol6[0]  =  0.0511827; //6 -6  0
  constants.WignerSymbol6[1]  = -0.0957541; //6 -5 -1
  constants.WignerSymbol6[2]  =  0.129115;  //6 -4 -2
  constants.WignerSymbol6[3]  = -0.141438;  //6 -3 -3
  constants.WignerSymbol6[4]  =  0.127957;  //5 -5  0
  constants.WignerSymbol6[5]  = -0.106079;  //5 -4 -1
  constants.WignerSymbol6[6]  =  0.0408297; //5 -3 -2
  constants.WignerSymbol6[7]  =  0.0186119; //4 -4  0
  constants.WignerSymbol6[8]  =  0.0688184; //4 -3 -1
  constants.WignerSymbol6[9]  = -0.104459;  //4 -2 -2
  constants.WignerSymbol6[10] = -0.100039;  //3 -3 -0
  constants.WignerSymbol6[11] =  0.0452321; //3 -2 -1
  constants.WignerSymbol6[12] =  0.0511827; //2 -2  0
  constants.WignerSymbol6[13] = -0.0953576; //2 -1 -1
  constants.WignerSymbol6[14] =  0.0465298; //1 -1  0
  constants.WignerSymbol6[15] =  -0.0930595; //0  0  0

  //number of permutations for l=6
  constants.WignerPermutations6[0]  = 6.0;  //6  -6   0
  constants.WignerPermutations6[1]  = 12.0; //6  -5  -1
  constants.WignerPermutations6[2]  = 12.0; //6  -4  -2
  constants.WignerPermutations6[3]  = 6.0;  //6  -3  -3
  constants.WignerPermutations6[4]  = 6.0;  //5  -5   0
  constants.WignerPermutations6[5]  = 12.0; //5  -4  -1
  constants.WignerPermutations6[6]  = 12.0; //5  -3  -2
  constants.WignerPermutations6[7]  = 6.0;  //4  -4   0
  constants.WignerPermutations6[8]  = 12.0; //4  -3  -1
  constants.WignerPermutations6[9]  = 6.0;  //4  -2  -2
  constants.WignerPermutations6[10] = 6.0;  //3  -3   0
  constants.WignerPermutations6[11] = 12.0; //3  -2  -1
  constants.WignerPermutations6[12] = 6.0;  //2  -2   0
  constants.WignerPermutations6[13] = 6.0;  //2  -1  -1
  constants.WignerPermutations6[14] = 6.0;  //1  -1   0
  constants.WignerPermutations6[15] = 1.0;  //0   0   0


  //l = 4
  constants.WignerSymbol4[0]  =  0.104298; //4 -4  0
  constants.WignerSymbol4[1]  = -0.164909; //4 -3 -1
  constants.WignerSymbol4[2]  =  0.186989; //4 -2 -2
  constants.WignerSymbol4[3] =   0.156447;  //3 -3 -0
  constants.WignerSymbol4[4] =  -0.0623298; //3 -2 -1
  constants.WignerSymbol4[5] =  -0.0819482; //2 -2  0
  constants.WignerSymbol4[6] =   0.141351;  //2 -1 -1
  constants.WignerSymbol4[7] =  -0.0670485; //1 -1  0
  constants.WignerSymbol4[8] =   0.134097;  //0  0  0

  constants.WignerPermutations4[0]  = 6.0; //4  -4   0
  constants.WignerPermutations4[1]  = 12.0; //4  -3  -1
  constants.WignerPermutations4[2]  = 6.0; //4  -2  -2
  constants.WignerPermutations4[3] = 6.0; //3  -3   0
  constants.WignerPermutations4[4] = 12.0; //3  -2  -1
  constants.WignerPermutations4[5] = 6.0; //2  -2   0
  constants.WignerPermutations4[6] = 6.0; //2  -1  -1
  constants.WignerPermutations4[7] = 6.0; //1  -1   0
  constants.WignerPermutations4[8] = 1.0; //0   0   0


  constants.m1[0]  = -6; constants.m2[0]  = 6; constants.m3[0] = 0;
  constants.m1[1]  = -6; constants.m2[1]  = 5; constants.m3[1] = 1;
  constants.m1[2]  = -6; constants.m2[2]  = 4; constants.m3[2] = 2;
  constants.m1[3]  = -6; constants.m2[3]  = 3; constants.m3[3] = 3;

  constants.m1[4]  = -5; constants.m2[4]  = 5; constants.m3[4] = 0;
  constants.m1[5]  = -5; constants.m2[5]  = 4; constants.m3[5] = 1;
  constants.m1[6]  = -5; constants.m2[6]  = 3; constants.m3[6] = 2;

  constants.m1[7]  = -4; constants.m2[7]  = 4; constants.m3[7] = 0;
  constants.m1[8]  = -4; constants.m2[8]  = 3; constants.m3[8] = 1;
  constants.m1[9]  = -4; constants.m2[9]  = 2; constants.m3[9] = 2;

  constants.m1[10] = -3; constants.m2[10] = 3; constants.m3[10] = 0;
  constants.m1[11] = -3; constants.m2[11] = 2; constants.m3[11] = 1;

  constants.m1[12] = -2; constants.m2[12] = 2; constants.m3[12] = 0;
  constants.m1[13] = -2; constants.m2[13] = 1; constants.m3[13] = 1;

  constants.m1[14] = -1; constants.m2[14] = 1; constants.m3[14] = 0;
  constants.m1[15] = 0;  constants.m2[15] = 0; constants.m3[15] = 0;

  constants.factorials[0]  = 1;
  constants.factorials[1]  = 1;
  constants.factorials[2]  = 1*2;
  constants.factorials[3]  = 1*2*3;
  constants.factorials[4]  = 1*2*3*4;
  constants.factorials[5]  = 1*2*3*4*5;
  constants.factorials[6]  = 1*2*3*4*5*6;
  constants.factorials[7]  = 1*2*3*4*5*6*7;
  constants.factorials[8]  = 1*2*3*4*5*6*7*8;
  constants.factorials[9]  = 1*2*3*4*5*6*7*8*9;
  constants.factorials[10] = 1*2*3*4*5*6*7*8*9*10;
  constants.factorials[11] = 1*2*3*4*5*6*7*8*9*10*11;
  constants.factorials[12] = 1*2*3*4*5*6*7*8*9*10*11*12;

  //0 = Q4
  //1 = Q6;
  //2 = W4;
  //3 = W6;
  constants.kfcc[0] = 0.19094;
  constants.kfcc[1] = 0.57452;
  constants.kfcc[2] = -0.15932;
  constants.kfcc[3] = -0.01316;

  constants.khcp[0] = 0.09722;
  constants.khcp[1] = 0.48476;
  constants.khcp[2] = 0.13410;
  constants.khcp[3] = -0.01244;

  constants.ksc[0] = 0.76376;
  constants.ksc[1] = 0.35355;
  constants.ksc[2] = 0.15932;
  constants.ksc[3] = 0.01316;

  constants.kbcc[0] = 0.0363696;
  constants.kbcc[1] = 0.5107;
  constants.kbcc[2] = 0.15932;
  constants.kbcc[3] = 0.01316;

  constants.kliq[0] = 0.0;
  constants.kliq[1] = 0.0;
  constants.kliq[2] = 0.0;
  constants.kliq[3] = 0.0;


}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movsd 0x7fbc(%rip), %xmm0     # 0xc0f0
movsd %xmm0, 0xb4e918(%rax)
movsd 0x8004(%rip), %xmm0     # 0xc148
movsd %xmm0, 0xb4e920(%rax)
movsd 0x7fec(%rip), %xmm0     # 0xc140
movsd %xmm0, 0xb4e928(%rax)
movsd 0x7fd4(%rip), %xmm0     # 0xc138
movsd %xmm0, 0xb4e930(%rax)
movsd 0x7fbc(%rip), %xmm0     # 0xc130
movsd %xmm0, 0xb4e938(%rax)
movsd 0x7fa4(%rip), %xmm0     # 0xc128
movsd %xmm0, 0xb4e940(%rax)
movsd 0x7f8c(%rip), %xmm0     # 0xc120
movsd %xmm0, 0xb4e948(%rax)
movsd 0x7f74(%rip), %xmm0     # 0xc118
movsd %xmm0, 0xb4e950(%rax)
movsd 0x7f5c(%rip), %xmm0     # 0xc110
movsd %xmm0, 0xb4e958(%rax)
movsd 0x7f44(%rip), %xmm0     # 0xc108
movsd %xmm0, 0xb4e960(%rax)
movsd 0x7f2c(%rip), %xmm0     # 0xc100
movsd %xmm0, 0xb4e968(%rax)
movsd 0x7f14(%rip), %xmm0     # 0xc0f8
movsd %xmm0, 0xb4e970(%rax)
movsd 0x7efc(%rip), %xmm0     # 0xc0f0
movsd %xmm0, 0xb4e978(%rax)
movsd 0x7ee4(%rip), %xmm0     # 0xc0e8
movsd %xmm0, 0xb4e980(%rax)
movsd 0x7ecc(%rip), %xmm0     # 0xc0e0
movsd %xmm0, 0xb4e988(%rax)
movsd 0x7eb4(%rip), %xmm0     # 0xc0d8
movsd %xmm0, 0xb4e990(%rax)
movsd 0x7e4c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4e9e0(%rax)
movsd 0x7e44(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4e9e8(%rax)
movsd 0x7e34(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4e9f0(%rax)
movsd 0x7e1c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4e9f8(%rax)
movsd 0x7e0c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea00(%rax)
movsd 0x7e04(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4ea08(%rax)
movsd 0x7df4(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4ea10(%rax)
movsd 0x7ddc(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea18(%rax)
movsd 0x7dd4(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4ea20(%rax)
movsd 0x7dbc(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea28(%rax)
movsd 0x7dac(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea30(%rax)
movsd 0x7da4(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4ea38(%rax)
movsd 0x7d8c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea40(%rax)
movsd 0x7d7c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea48(%rax)
movsd 0x7d6c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea50(%rax)
movsd 0x7d54(%rip), %xmm0     # 0xc078
movsd %xmm0, 0xb4ea58(%rax)
movsd 0x7d9c(%rip), %xmm0     # 0xc0d0
movsd %xmm0, 0xb4e998(%rax)
movsd 0x7d84(%rip), %xmm0     # 0xc0c8
movsd %xmm0, 0xb4e9a0(%rax)
movsd 0x7d6c(%rip), %xmm0     # 0xc0c0
movsd %xmm0, 0xb4e9a8(%rax)
movsd 0x7d54(%rip), %xmm0     # 0xc0b8
movsd %xmm0, 0xb4e9b0(%rax)
movsd 0x7d3c(%rip), %xmm0     # 0xc0b0
movsd %xmm0, 0xb4e9b8(%rax)
movsd 0x7d24(%rip), %xmm0     # 0xc0a8
movsd %xmm0, 0xb4e9c0(%rax)
movsd 0x7d0c(%rip), %xmm0     # 0xc0a0
movsd %xmm0, 0xb4e9c8(%rax)
movsd 0x7cf4(%rip), %xmm0     # 0xc098
movsd %xmm0, 0xb4e9d0(%rax)
movsd 0x7cdc(%rip), %xmm0     # 0xc090
movsd %xmm0, 0xb4e9d8(%rax)
movsd 0x7cbc(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea60(%rax)
movsd 0x7cb4(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4ea68(%rax)
movsd 0x7c9c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea70(%rax)
movsd 0x7c8c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea78(%rax)
movsd 0x7c84(%rip), %xmm0     # 0xc088
movsd %xmm0, 0xb4ea80(%rax)
movsd 0x7c6c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea88(%rax)
movsd 0x7c5c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea90(%rax)
movsd 0x7c4c(%rip), %xmm0     # 0xc080
movsd %xmm0, 0xb4ea98(%rax)
movsd 0x7c34(%rip), %xmm0     # 0xc078
movsd %xmm0, 0xb4eaa0(%rax)
movl $0xfffffffa, 0xb4eaa8(%rax) # imm = 0xFFFFFFFA
movl $0x6, 0xb4eae8(%rax)
movl $0x0, 0xb4eb28(%rax)
movl $0xfffffffa, 0xb4eaac(%rax) # imm = 0xFFFFFFFA
movl $0x5, 0xb4eaec(%rax)
movl $0x1, 0xb4eb2c(%rax)
movl $0xfffffffa, 0xb4eab0(%rax) # imm = 0xFFFFFFFA
movl $0x4, 0xb4eaf0(%rax)
movl $0x2, 0xb4eb30(%rax)
movl $0xfffffffa, 0xb4eab4(%rax) # imm = 0xFFFFFFFA
movl $0x3, 0xb4eaf4(%rax)
movl $0x3, 0xb4eb34(%rax)
movl $0xfffffffb, 0xb4eab8(%rax) # imm = 0xFFFFFFFB
movl $0x5, 0xb4eaf8(%rax)
movl $0x0, 0xb4eb38(%rax)
movl $0xfffffffb, 0xb4eabc(%rax) # imm = 0xFFFFFFFB
movl $0x4, 0xb4eafc(%rax)
movl $0x1, 0xb4eb3c(%rax)
movl $0xfffffffb, 0xb4eac0(%rax) # imm = 0xFFFFFFFB
movl $0x3, 0xb4eb00(%rax)
movl $0x2, 0xb4eb40(%rax)
movl $0xfffffffc, 0xb4eac4(%rax) # imm = 0xFFFFFFFC
movl $0x4, 0xb4eb04(%rax)
movl $0x0, 0xb4eb44(%rax)
movl $0xfffffffc, 0xb4eac8(%rax) # imm = 0xFFFFFFFC
movl $0x3, 0xb4eb08(%rax)
movl $0x1, 0xb4eb48(%rax)
movl $0xfffffffc, 0xb4eacc(%rax) # imm = 0xFFFFFFFC
movl $0x2, 0xb4eb0c(%rax)
movl $0x2, 0xb4eb4c(%rax)
movl $0xfffffffd, 0xb4ead0(%rax) # imm = 0xFFFFFFFD
movl $0x3, 0xb4eb10(%rax)
movl $0x0, 0xb4eb50(%rax)
movl $0xfffffffd, 0xb4ead4(%rax) # imm = 0xFFFFFFFD
movl $0x2, 0xb4eb14(%rax)
movl $0x1, 0xb4eb54(%rax)
movl $0xfffffffe, 0xb4ead8(%rax) # imm = 0xFFFFFFFE
movl $0x2, 0xb4eb18(%rax)
movl $0x0, 0xb4eb58(%rax)
movl $0xfffffffe, 0xb4eadc(%rax) # imm = 0xFFFFFFFE
movl $0x1, 0xb4eb1c(%rax)
movl $0x1, 0xb4eb5c(%rax)
movl $0xffffffff, 0xb4eae0(%rax) # imm = 0xFFFFFFFF
movl $0x1, 0xb4eb20(%rax)
movl $0x0, 0xb4eb60(%rax)
movl $0x0, 0xb4eae4(%rax)
movl $0x0, 0xb4eb24(%rax)
movl $0x0, 0xb4eb64(%rax)
movl $0x1, 0xb4e8c8(%rax)
movl $0x1, 0xb4e8cc(%rax)
movl $0x2, 0xb4e8d0(%rax)
movl $0x6, 0xb4e8d4(%rax)
movl $0x18, 0xb4e8d8(%rax)
movl $0x78, 0xb4e8dc(%rax)
movl $0x2d0, 0xb4e8e0(%rax)  # imm = 0x2D0
movl $0x13b0, 0xb4e8e4(%rax) # imm = 0x13B0
movl $0x9d80, 0xb4e8e8(%rax) # imm = 0x9D80
movl $0x58980, 0xb4e8ec(%rax) # imm = 0x58980
movl $0x375f00, 0xb4e8f0(%rax) # imm = 0x375F00
movl $0x2611500, 0xb4e8f4(%rax) # imm = 0x2611500
movl $0x1c8cfc00, 0xb4e8f8(%rax) # imm = 0x1C8CFC00
movsd 0x79ba(%rip), %xmm0     # 0xc070
movsd %xmm0, 0xb4eb68(%rax)
movsd 0x79a2(%rip), %xmm0     # 0xc068
movsd %xmm0, 0xb4eb70(%rax)
movsd 0x798a(%rip), %xmm0     # 0xc060
movsd %xmm0, 0xb4eb78(%rax)
movsd 0x7972(%rip), %xmm0     # 0xc058
movsd %xmm0, 0xb4eb80(%rax)
movsd 0x795a(%rip), %xmm0     # 0xc050
movsd %xmm0, 0xb4eba8(%rax)
movsd 0x7942(%rip), %xmm0     # 0xc048
movsd %xmm0, 0xb4ebb0(%rax)
movsd 0x792a(%rip), %xmm0     # 0xc040
movsd %xmm0, 0xb4ebb8(%rax)
movsd 0x7912(%rip), %xmm0     # 0xc038
movsd %xmm0, 0xb4ebc0(%rax)
movsd 0x78fa(%rip), %xmm0     # 0xc030
movsd %xmm0, 0xb4ebe8(%rax)
movsd 0x78e2(%rip), %xmm0     # 0xc028
movsd %xmm0, 0xb4ebf0(%rax)
movsd 0x78ba(%rip), %xmm0     # 0xc010
movsd %xmm0, 0xb4ebf8(%rax)
movsd 0x78a2(%rip), %xmm0     # 0xc008
movsd %xmm0, 0xb4ec00(%rax)
movsd 0x78aa(%rip), %xmm0     # 0xc020
movsd %xmm0, 0xb4eb88(%rax)
movsd 0x7892(%rip), %xmm0     # 0xc018
movsd %xmm0, 0xb4eb90(%rax)
movsd 0x787a(%rip), %xmm0     # 0xc010
movsd %xmm0, 0xb4eb98(%rax)
movsd 0x7862(%rip), %xmm0     # 0xc008
movsd %xmm0, 0xb4eba0(%rax)
xorps %xmm0, %xmm0
movsd %xmm0, 0xb4ebc8(%rax)
xorps %xmm0, %xmm0
movsd %xmm0, 0xb4ebd0(%rax)
xorps %xmm0, %xmm0
movsd %xmm0, 0xb4ebd8(%rax)
xorps %xmm0, %xmm0
movsd %xmm0, 0xb4ebe0(%rax)
popq %rbp
retq
nopl (%rax)