// File: /workspace/github_c_makefile_star2_O0/YunyiQian[P]multitel3/fft.c
// Function: amp
float amp(float t1, float t2, float *data, int n) {
  int i, it1, it2;
  float dd, am;
  if ( t1 < 0 ) t1=0;
  if ( t2 > n-1 ) t2=n-1;
  if ( t1 > n-1 || t2 < t1) return 0.;
  it1 = floor(t1);
  i = it1 + 1;
  dd = i-t1;
  am = dd*(dd*data[it1]+(2.-dd)*data[i]);
/* return data[it1]*dd + data[i]*(1.-dd);*/
  it2 = ceil(t2);
  while (i<it2) {
    am += data[i]+data[i+1];
    i++;
  }
  dd = i-t2;
  am -= dd*(dd*data[i-1]+(2.-dd)*data[i]);
  return 0.5*am;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movss %xmm0, -0x8(%rbp)
movss %xmm1, -0xc(%rbp)
movq %rdi, -0x18(%rbp)
movl %esi, -0x1c(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x8(%rbp), %xmm0
jbe 0x32ba
xorps %xmm0, %xmm0
movss %xmm0, -0x8(%rbp)
movss -0xc(%rbp), %xmm0
movl -0x1c(%rbp), %eax
subl $0x1, %eax
cvtsi2ss %eax, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x32dd
movl -0x1c(%rbp), %eax
subl $0x1, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0xc(%rbp)
movss -0x8(%rbp), %xmm0
movl -0x1c(%rbp), %eax
subl $0x1, %eax
cvtsi2ss %eax, %xmm1
ucomiss %xmm1, %xmm0
ja 0x3300
movss -0xc(%rbp), %xmm1
movss -0x8(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x330d
xorps %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0x3495
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x11a0
cvttsd2si %xmm0, %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
cvtsi2ssl -0x20(%rbp), %xmm0
subss -0x8(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm1
cvtss2sd %xmm1, %xmm2
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm3
movsd 0x5656(%rip), %xmm1     # 0x89c0
subsd %xmm3, %xmm1
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
movss (%rax,%rcx,4), %xmm3
cvtss2sd %xmm3, %xmm3
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x30(%rbp)
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1200
cvttsd2si %xmm0, %eax
movl %eax, -0x28(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x33e5
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x18(%rbp), %rax
movl -0x20(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
addss (%rax,%rcx,4), %xmm0
addss -0x30(%rbp), %xmm0
movss %xmm0, -0x30(%rbp)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x33a9
cvtsi2ssl -0x20(%rbp), %xmm0
subss -0xc(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
movq -0x18(%rbp), %rax
movl -0x20(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
mulss (%rax,%rcx,4), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0x2c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0x5597(%rip), %xmm2     # 0x89c0
subsd %xmm3, %xmm2
movq -0x18(%rbp), %rax
movslq -0x20(%rbp), %rcx
movss (%rax,%rcx,4), %xmm3
cvtss2sd %xmm3, %xmm3
mulsd %xmm3, %xmm2
addsd %xmm1, %xmm2
movss -0x30(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x30(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x5540(%rip), %xmm0     # 0x89c8
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
movss -0x4(%rbp), %xmm0
addq $0x30, %rsp
popq %rbp
retq