// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../tools/arrays.c
// Function: array_interpolate_cubic_equal
int array_interpolate_cubic_equal(
				  double x0,
				  double dx,
				  double *yarray,
				  int Nx,
				  double x,
				  double * result,
				  ErrorMsg errmsg) {

  int i;
  double frac;

  class_test((dx > 0 && (x<x0 || x>x0+dx*(Nx-1))),
	     errmsg,
	     "x=%e out of range [%e %e]",x,x0,x0+dx*(Nx-1));

  class_test((dx < 0 && (x>x0 || x<x0+dx*(Nx-1))),
	     errmsg,
	     "x=%e out of range [%e %e]",x,x0+dx*(Nx-1),x0);

  i = (int)floor((x-x0)/dx);
  if (i<1) i=1;
  if (i>Nx-3) i=Nx-3;
  frac = (x-x0)/dx-i;
  yarray += i-1;

  *result=-yarray[0]*frac*(1.-frac)*(2.-frac)/6.
    +yarray[1]*(1.+frac)*(1.-frac)*(2.-frac)/2.
    +yarray[2]*(1.+frac)*frac*(2.-frac)/2.
    +yarray[3]*(1.+frac)*frac*(frac-1.)/6.;

  return _SUCCESS_;
}

// Assembly:
subq $0x2058, %rsp           # imm = 0x2058
movsd %xmm0, 0x2048(%rsp)
movsd %xmm1, 0x2040(%rsp)
movq %rdi, 0x2038(%rsp)
movl %esi, 0x2034(%rsp)
movsd %xmm2, 0x2028(%rsp)
movq %rdx, 0x2020(%rsp)
movq %rcx, 0x2018(%rsp)
movsd 0x2040(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x296e9
movsd 0x2028(%rsp), %xmm1
movsd 0x2048(%rsp), %xmm0
ucomisd %xmm1, %xmm0
ja 0x2963a
movsd 0x2028(%rsp), %xmm0
movsd 0x2048(%rsp), %xmm2
movsd 0x2040(%rsp), %xmm1
movl 0x2034(%rsp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm3
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x296e9
leaq 0x1800(%rsp), %rdi
movsd 0x2028(%rsp), %xmm0
movsd 0x2048(%rsp), %xmm1
movsd 0x2048(%rsp), %xmm3
movsd 0x2040(%rsp), %xmm2
movl 0x2034(%rsp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm4
mulsd %xmm4, %xmm2
addsd %xmm3, %xmm2
leaq 0x1aae46(%rip), %rsi    # 0x1d44c9
movb $0x3, %al
callq 0x5b9c0
leaq 0x1000(%rsp), %rdi
leaq 0x1800(%rsp), %rcx
leaq 0x1a89e1(%rip), %rsi    # 0x1d2082
leaq 0x1aae3b(%rip), %rdx    # 0x1d44e3
movb $0x0, %al
callq 0x5b9c0
movq 0x2018(%rsp), %rdi
leaq 0x1000(%rsp), %r8
leaq 0x1a896e(%rip), %rsi    # 0x1d2034
leaq 0x1aae3b(%rip), %rdx    # 0x1d4508
movl $0xbde, %ecx            # imm = 0xBDE
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2054(%rsp)
jmp 0x29a23
xorps %xmm0, %xmm0
ucomisd 0x2040(%rsp), %xmm0
jbe 0x297ef
movsd 0x2028(%rsp), %xmm0
ucomisd 0x2048(%rsp), %xmm0
ja 0x2974a
movsd 0x2028(%rsp), %xmm1
movsd 0x2048(%rsp), %xmm2
movsd 0x2040(%rsp), %xmm0
movl 0x2034(%rsp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm3
mulsd %xmm3, %xmm0
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x297ef
leaq 0x800(%rsp), %rdi
movsd 0x2028(%rsp), %xmm0
movsd 0x2048(%rsp), %xmm2
movsd 0x2040(%rsp), %xmm1
movl 0x2034(%rsp), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm3
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd 0x2048(%rsp), %xmm2
leaq 0x1aad36(%rip), %rsi    # 0x1d44c9
movb $0x3, %al
callq 0x5b9c0
movq %rsp, %rdi
leaq 0x800(%rsp), %rcx
leaq 0x1a88d6(%rip), %rsi    # 0x1d2082
leaq 0x1aad73(%rip), %rdx    # 0x1d4526
movb $0x0, %al
callq 0x5b9c0
movq 0x2018(%rsp), %rdi
movq %rsp, %r8
leaq 0x1a8868(%rip), %rsi    # 0x1d2034
leaq 0x1aad35(%rip), %rdx    # 0x1d4508
movl $0xbe2, %ecx            # imm = 0xBE2
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2054(%rsp)
jmp 0x29a23
movsd 0x2028(%rsp), %xmm0
subsd 0x2048(%rsp), %xmm0
divsd 0x2040(%rsp), %xmm0
callq 0x85d0
cvttsd2si %xmm0, %eax
movl %eax, 0x2014(%rsp)
cmpl $0x1, 0x2014(%rsp)
jge 0x2982f
movl $0x1, 0x2014(%rsp)
movl 0x2014(%rsp), %eax
movl 0x2034(%rsp), %ecx
subl $0x3, %ecx
cmpl %ecx, %eax
jle 0x29855
movl 0x2034(%rsp), %eax
subl $0x3, %eax
movl %eax, 0x2014(%rsp)
movsd 0x2028(%rsp), %xmm0
subsd 0x2048(%rsp), %xmm0
divsd 0x2040(%rsp), %xmm0
cvtsi2sdl 0x2014(%rsp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0x2008(%rsp)
movl 0x2014(%rsp), %ecx
subl $0x1, %ecx
movq 0x2038(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0x2038(%rsp)
movq 0x2038(%rsp), %rax
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd 0x2008(%rsp), %xmm0
movsd 0x1a896a(%rip), %xmm1   # 0x1d2248
subsd 0x2008(%rsp), %xmm1
mulsd %xmm1, %xmm0
movsd 0x1a938d(%rip), %xmm1   # 0x1d2c80
subsd 0x2008(%rsp), %xmm1
mulsd %xmm1, %xmm0
movsd 0x1a9d80(%rip), %xmm1   # 0x1d3688
divsd %xmm1, %xmm0
movq 0x2038(%rsp), %rax
movsd 0x8(%rax), %xmm1
movsd 0x1a8927(%rip), %xmm2   # 0x1d2248
addsd 0x2008(%rsp), %xmm2
mulsd %xmm2, %xmm1
movsd 0x1a8912(%rip), %xmm2   # 0x1d2248
subsd 0x2008(%rsp), %xmm2
mulsd %xmm2, %xmm1
movsd 0x1a9335(%rip), %xmm2   # 0x1d2c80
subsd 0x2008(%rsp), %xmm2
mulsd %xmm2, %xmm1
movsd 0x1a9320(%rip), %xmm2   # 0x1d2c80
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movq 0x2038(%rsp), %rax
movsd 0x10(%rax), %xmm1
movsd 0x1a88cb(%rip), %xmm2   # 0x1d2248
addsd 0x2008(%rsp), %xmm2
mulsd %xmm2, %xmm1
mulsd 0x2008(%rsp), %xmm1
movsd 0x1a92e5(%rip), %xmm2   # 0x1d2c80
subsd 0x2008(%rsp), %xmm2
mulsd %xmm2, %xmm1
movsd 0x1a92d0(%rip), %xmm2   # 0x1d2c80
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movq 0x2038(%rsp), %rax
movsd 0x18(%rax), %xmm1
movsd 0x1a887b(%rip), %xmm2   # 0x1d2248
addsd 0x2008(%rsp), %xmm2
mulsd %xmm2, %xmm1
mulsd 0x2008(%rsp), %xmm1
movsd 0x2008(%rsp), %xmm2
movsd 0x1a8854(%rip), %xmm3   # 0x1d2248
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
movsd 0x1a9c84(%rip), %xmm2   # 0x1d3688
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movq 0x2020(%rsp), %rax
movsd %xmm0, (%rax)
movl $0x0, 0x2054(%rsp)
movl 0x2054(%rsp), %eax
addq $0x2058, %rsp           # imm = 0x2058
retq
nopw %cs:(%rax,%rax)