user: Demonstrate the C code that generates the assembly output below:

```asm
<BatchInterpolatedGradX2DTranZeroWarp>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x88,%rsp
  movsd  %xmm0,0x28(%rsp)
  mulsd  %xmm3,%xmm0
  mov    0xc0(%rsp),%r14
  movsd  %xmm5,0x40(%rsp)
  pxor   %xmm5,%xmm5
  movsd  %xmm1,0x30(%rsp)
  movapd %xmm3,%xmm1
  mov    %rsi,0x60(%rsp)
  mov    %rdx,0x10(%rsp)
  comisd %xmm5,%xmm0
  mov    %rcx,0x58(%rsp)
  mov    %r8,0x68(%rsp)
  mov    %r9,0x70(%rsp)
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm4,0x38(%rsp)
  movsd  %xmm0,0x78(%rsp)
  jbe    L56
  xor    %eax,%eax
  movapd %xmm0,%xmm2
  nopl   0x0(%rax)
L31:
  movl   $0x0,(%r15,%rax,4)
  pxor   %xmm0,%xmm0
  add    $0x1,%rax
  cvtsi2sd %rax,%xmm0
  comisd %xmm0,%xmm2
  ja     L31
  cmpq   $0x0,0x58(%rsp)
  jle    L78
L69:
  movq   $0x0,0x48(%rsp)
  movq   $0x0,0x50(%rsp)
  nopl   0x0(%rax)
L96:
  cmpq   $0x0,0x10(%rsp)
  jle    L58
  mov    0x50(%rsp),%rax
  pxor   %xmm7,%xmm7
  xor    %ebp,%ebp
  cvtsi2ssq 0x48(%rsp),%xmm7
  lea    0x0(,%rax,4),%rbx
  mov    0x68(%rsp),%rax
  lea    (%rax,%rbx,1),%r13
  mov    0x70(%rsp),%rax
  movss  %xmm7,0x24(%rsp)
  lea    (%rax,%rbx,1),%r12
  add    0x60(%rsp),%rbx
  nopl   0x0(%rax,%rax,1)
L92:
  pxor   %xmm3,%xmm3
  movss  0x24(%rsp),%xmm4
  mov    %r14,%rsi
  mov    %r15,%rdi
  cvtsi2ss %rbp,%xmm3
  addss  (%r12,%rbp,4),%xmm4
  movss  (%rbx,%rbp,4),%xmm2
  movsd  %xmm1,0x8(%rsp)
  addss  0x0(%r13,%rbp,4),%xmm3
  movsd  0x28(%rsp),%xmm0
  add    $0x1,%rbp
  cvtss2sd %xmm4,%xmm4
  subsd  0x38(%rsp),%xmm4
  divsd  0x40(%rsp),%xmm4
  cvtss2sd %xmm3,%xmm3
  subsd  0x30(%rsp),%xmm3
  divsd  0x18(%rsp),%xmm3
  call   <InterpolatedGradXTranZero@plt>
  cmp    %rbp,0x10(%rsp)
  movsd  0x8(%rsp),%xmm1
  jne    L92
  mov    0x10(%rsp),%rcx
  add    %rcx,0x50(%rsp)
L58:
  addq   $0x1,0x48(%rsp)
  mov    0x48(%rsp),%rax
  cmp    %rax,0x58(%rsp)
  jg     L96
L45:
  movsd  0x78(%rsp),%xmm5
  pxor   %xmm7,%xmm7
  comisd %xmm7,%xmm5
  jbe    L62
L78:
  movsd  0x78(%rsp),%xmm1
  xor    %eax,%eax
  nopl   0x0(%rax)
L71:
  pxor   %xmm0,%xmm0
  cvtss2sd (%r15,%rax,4),%xmm0
  divsd  0x18(%rsp),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%r15,%rax,4)
  add    $0x1,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  comisd %xmm0,%xmm1
  ja     L71
L62:
  add    $0x88,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L56:
  cmpq   $0x0,0x58(%rsp)
  jg     L69
  jmp    L45
```

assistant: ```c
extern void BatchInterpolatedGradX2DTranZeroWarp(float *Bout, float *Bcoeff, long Width, long Height, double nx, double offx, double mx, float *WarpX, double ny, double offy, double my, float *WarpY, long SplineDegree) {
  double x, y;
  long idx;
  long idcoordx, idcoordy;
  for (idx = 0; idx < nx * ny; idx++)
    Bout[idx] = 0;
  idx = 0;
  for (idcoordy = 0; idcoordy < Height; idcoordy++) {
    for (idcoordx = 0; idcoordx < Width; idcoordx++) {
      x = (idcoordx + WarpX[idx] - offx) / mx;
      y = (idcoordy + WarpY[idx] - offy) / my;
      InterpolatedGradXTranZero(Bout, nx, ny, Bcoeff[idx++], x, y, SplineDegree);
    }
  }
  for (idx = 0; idx < nx * ny; idx++)
    Bout[idx] = Bout[idx] / mx;
}
```