// File: gjoni[P]iPot/src/AACE.cpp
// Function: AACE::AACE(std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>> const&, std::vector<double, std::allocator<double>> const&, std::vector<std::vector<double, std::allocator<double>>, std::allocator<std::vector<double, std::allocator<double>>>> const&, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
AACE::AACE(const GROUPS_TYPE &GROUPS, const std::vector<double> &h_, 
			const std::vector<std::vector<double> > &J_, 
		double dmax_, const std::string &name_) : h(NULL), J(NULL), 
		dmax(dmax_), name(name_) {

	int dim = ReadGroups(GROUPS);
	Allocate(dim);

	assert((int)h_.size() == dim);
	assert((int)J_.size() == dim);
	assert((int)J_[0].size() == dim);

	for (int i = 0; i < dim; i++) {
		h[i] = h_[i];
		for (int j = 0; j < dim; j++) {
			J[i][j] = J_[i][j];
		}
	}

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movsd %xmm0, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x68(%rbp)
callq 0x23320
movq -0x58(%rbp), %rdi
addq $0x30, %rdi
movq %rdi, -0x60(%rbp)
callq 0x23320
movq -0x58(%rbp), %rdi
movq $0x0, 0x60(%rdi)
movq $0x0, 0x68(%rdi)
movsd -0x28(%rbp), %xmm0
movsd %xmm0, 0x70(%rdi)
addq $0x78, %rdi
movq %rdi, -0x50(%rbp)
movq -0x30(%rbp), %rsi
callq 0x3120
jmp 0x20b67
movq -0x68(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x20d10
movl %eax, -0x6c(%rbp)
jmp 0x20b79
movq -0x68(%rbp), %rdi
movl -0x6c(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %esi
callq 0x20f00
jmp 0x20b8d
movq -0x18(%rbp), %rdi
callq 0x1dbe0
cmpl -0x40(%rbp), %eax
jne 0x20b9d
jmp 0x20be7
leaq 0x16038(%rip), %rdi     # 0x36bdc
leaq 0x16047(%rip), %rsi     # 0x36bf2
movl $0x17, %edx
leaq 0x16048(%rip), %rcx     # 0x36bff
callq 0x31b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x20cf2
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x3190
jmp 0x20cf2
movq -0x20(%rbp), %rdi
callq 0x23340
cmpl -0x40(%rbp), %eax
jne 0x20bf7
jmp 0x20c16
leaq 0x16085(%rip), %rdi     # 0x36c83
leaq 0x15fed(%rip), %rsi     # 0x36bf2
movl $0x18, %edx
leaq 0x15fee(%rip), %rcx     # 0x36bff
callq 0x31b0
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x23370
movq %rax, %rdi
callq 0x1dbe0
cmpl -0x40(%rbp), %eax
jne 0x20c32
jmp 0x20c51
leaq 0x16060(%rip), %rdi     # 0x36c99
leaq 0x15fb2(%rip), %rsi     # 0x36bf2
movl $0x19, %edx
leaq 0x15fb3(%rip), %rcx     # 0x36bff
callq 0x31b0
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0x20cec
movq -0x18(%rbp), %rdi
movslq -0x44(%rbp), %rsi
callq 0x23390
movq %rax, %rcx
movq -0x68(%rbp), %rax
movsd (%rcx), %xmm0
movq 0x60(%rax), %rax
movslq -0x44(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0x20cdc
movq -0x20(%rbp), %rdi
movslq -0x44(%rbp), %rsi
callq 0x23370
movq %rax, %rdi
movslq -0x48(%rbp), %rsi
callq 0x23390
movq %rax, %rcx
movq -0x68(%rbp), %rax
movsd (%rcx), %xmm0
movq 0x68(%rax), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x20c90
jmp 0x20cde
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x20c58
addq $0x70, %rsp
popq %rbp
retq
movq -0x60(%rbp), %rdi
callq 0x233b0
movq -0x58(%rbp), %rdi
callq 0x233b0
movq -0x38(%rbp), %rdi
callq 0x3460
nopl (%rax)