// File: TBody[P]atomicpp/atomicpp/Spline/BicubicSpline.cpp
// Function: atomicpp::BicubicSpline::BicubicSpline(std::vector<double, std::allocator<double>>&, std::vector<double, std::allocator<double>>&, std::vector<std::vector<double, std::allocator<double>>, std::allocator<std::vector<double, std::allocator<double>>>>&)
BicubicSpline::BicubicSpline(
		std::vector<double>& _x_values,
		std::vector<double>& _y_values,
		std::vector< std::vector<double> > & _z_values
	) :
	alpha_coeff((int)(_x_values.size()), std::vector<grid_matrix>((int)(_y_values.size()), default_grid_matrix)),
	grid_coeff((int)(_x_values.size()), std::vector<interp_data>((int)(_y_values.size()), default_interp_data))
	{
	x_values = _x_values;
	y_values = _y_values;
	z_values = _z_values;

	alpha_coeff = calculate_alpha_coeff();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
movq %rdi, %rax
movq %rax, -0xc8(%rbp)
callq 0x1cee0
movq -0xb0(%rbp), %rdi
addq $0x18, %rdi
movq %rdi, -0xc0(%rbp)
callq 0x1cee0
movq -0xb0(%rbp), %rdi
addq $0x30, %rdi
movq %rdi, -0xb8(%rbp)
callq 0x1c240
movq -0xb0(%rbp), %rax
addq $0x48, %rax
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1d4d0
cltq
movq %rax, -0xa0(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1d4d0
cltq
movq %rax, -0x98(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x1b010
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rcx
leaq 0x2bc12(%rip), %rdx     # 0x4f3b0
leaq -0x38(%rbp), %rdi
callq 0x264d0
jmp 0x237a9
leaq -0x4d(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x26550
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rsi
movq -0xd0(%rbp), %rcx
leaq -0x38(%rbp), %rdx
callq 0x26570
jmp 0x237d9
leaq -0x4d(%rbp), %rdi
callq 0x265f0
leaq -0x38(%rbp), %rdi
callq 0x1aca0
leaq -0x39(%rbp), %rdi
callq 0x1fe00
movq -0xc8(%rbp), %rax
addq $0x60, %rax
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1d4d0
cltq
movq %rax, -0xe8(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1d4d0
cltq
movq %rax, -0xe0(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x26610
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rcx
leaq 0x2bb29(%rip), %rdx     # 0x4f378
leaq -0x68(%rbp), %rdi
callq 0x26630
jmp 0x2385a
leaq -0x6a(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x266b0
movq -0xf0(%rbp), %rdi
movq -0xe8(%rbp), %rsi
movq -0xf8(%rbp), %rcx
leaq -0x68(%rbp), %rdx
callq 0x266d0
jmp 0x2388a
leaq -0x6a(%rbp), %rdi
callq 0x26750
leaq -0x68(%rbp), %rdi
callq 0x26770
leaq -0x69(%rbp), %rdi
callq 0x267d0
movq -0xc8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x22380
jmp 0x238b7
movq -0xc8(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x18, %rdi
callq 0x22380
jmp 0x238cd
movq -0xc8(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x30, %rdi
callq 0x225d0
jmp 0x238e3
movq -0xc8(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x239f0
jmp 0x238f8
movq -0xc8(%rbp), %rdi
addq $0x48, %rdi
leaq -0x88(%rbp), %rsi
callq 0x267f0
leaq -0x88(%rbp), %rdi
callq 0x26820
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x23950
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4d(%rbp), %rdi
callq 0x265f0
leaq -0x38(%rbp), %rdi
callq 0x1aca0
leaq -0x39(%rbp), %rdi
callq 0x1fe00
jmp 0x239b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x23987
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x6a(%rbp), %rdi
callq 0x26750
leaq -0x68(%rbp), %rdi
callq 0x26770
leaq -0x69(%rbp), %rdi
callq 0x267d0
jmp 0x239aa
movq -0xf0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x26880
movq -0xa8(%rbp), %rdi
callq 0x26820
movq -0xb8(%rbp), %rdi
callq 0x19150
movq -0xc0(%rbp), %rdi
callq 0x59b0
movq -0xb0(%rbp), %rdi
callq 0x59b0
movq -0x48(%rbp), %rdi
callq 0x45e0
nopw %cs:(%rax,%rax)