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

```asm
<image_c_resampling_lanczos2>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %rdi,-0x48(%rbp)
  mov    %esi,-0x4c(%rbp)
  mov    %edx,-0x50(%rbp)
  mov    %rcx,-0x58(%rbp)
  mov    %r8d,-0x5c(%rbp)
  mov    %r9d,-0x60(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x4c(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x5c(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x20(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x50(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x60(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movl   $0x0,-0x3c(%rbp)
  jmp    L213
L292:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x3c(%rbp),%xmm0
  movss  -0x20(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  -0x18(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x0,-0x40(%rbp)
  jmp    L194
L289:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x40(%rbp),%xmm0
  movss  -0x1c(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movl   $0xffffffff,-0x38(%rbp)
  jmp    L70
L254:
  mov    -0x14(%rbp),%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  jge    L193
  cmpl   $0x0,-0x8(%rbp)
  js     L123
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x8(%rbp),%xmm1
  movss  -0x18(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <abs@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm2
  comiss D22(%rip),%xmm2
  jbe    L77
  movss  D22(%rip),%xmm0
  movss  %xmm0,-0x24(%rbp)
L77:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x30(%rbp)
  movl   $0xffffffff,-0x34(%rbp)
  jmp    L161
L184:
  mov    -0xc(%rbp),%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jge    L205
  cmpl   $0x0,-0x4(%rbp)
  js     L272
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x4(%rbp),%xmm1
  movss  -0x10(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x28(%rbp)
  mov    -0x28(%rbp),%eax
  movd   %eax,%xmm0
  call   <abs@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm3
  comiss D22(%rip),%xmm3
  jbe    L28
  movss  D22(%rip),%xmm0
  movss  %xmm0,-0x28(%rbp)
L28:
  pxor   %xmm4,%xmm4
  cvtss2sd -0x30(%rbp),%xmm4
  movsd  %xmm4,-0x68(%rbp)
  mov    -0x8(%rbp),%eax
  imul   -0x50(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm5,%xmm5
  cvtss2sd %xmm0,%xmm5
  movsd  %xmm5,-0x70(%rbp)
  pxor   %xmm0,%xmm0
  ucomiss -0x28(%rbp),%xmm0
  jp     L56
  pxor   %xmm0,%xmm0
  ucomiss -0x28(%rbp),%xmm0
  je     L241
L56:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x28(%rbp),%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  pxor   %xmm1,%xmm1
  cvtss2sd -0x28(%rbp),%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %rax,%xmm0
  divsd  %xmm1,%xmm0
  jmp    L152
L241:
  movsd  D207(%rip),%xmm0
L152:
  mulsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movss  -0x28(%rbp),%xmm1
  movss  D151(%rip),%xmm0
  mulss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L53
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  je     L166
L53:
  movss  -0x28(%rbp),%xmm1
  movss  D151(%rip),%xmm0
  mulss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movss  -0x28(%rbp),%xmm1
  movss  D151(%rip),%xmm0
  mulss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %rax,%xmm0
  divsd  %xmm1,%xmm0
  jmp    L243
L166:
  movsd  D207(%rip),%xmm0
L243:
  mulsd  -0x70(%rbp),%xmm0
  addsd  -0x68(%rbp),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x30(%rbp)
  jmp    L239
L205:
  nop
  jmp    L239
L272:
  nop
L239:
  addl   $0x1,-0x34(%rbp)
L161:
  cmpl   $0x2,-0x34(%rbp)
  jle    L184
  pxor   %xmm3,%xmm3
  cvtss2sd -0x2c(%rbp),%xmm3
  movsd  %xmm3,-0x68(%rbp)
  pxor   %xmm4,%xmm4
  cvtss2sd -0x30(%rbp),%xmm4
  movsd  %xmm4,-0x70(%rbp)
  pxor   %xmm0,%xmm0
  ucomiss -0x24(%rbp),%xmm0
  jp     L262
  pxor   %xmm0,%xmm0
  ucomiss -0x24(%rbp),%xmm0
  je     L22
L262:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x24(%rbp),%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  pxor   %xmm1,%xmm1
  cvtss2sd -0x24(%rbp),%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %rax,%xmm0
  divsd  %xmm1,%xmm0
  jmp    L246
L22:
  movsd  D207(%rip),%xmm0
L246:
  mulsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movss  -0x24(%rbp),%xmm1
  movss  D151(%rip),%xmm0
  mulss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L38
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  je     L65
L38:
  movss  -0x24(%rbp),%xmm1
  movss  D151(%rip),%xmm0
  mulss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movss  -0x24(%rbp),%xmm1
  movss  D151(%rip),%xmm0
  mulss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D198(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %rax,%xmm0
  divsd  %xmm1,%xmm0
  jmp    L149
L65:
  movsd  D207(%rip),%xmm0
L149:
  mulsd  -0x70(%rbp),%xmm0
  addsd  -0x68(%rbp),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  jmp    L18
L193:
  nop
  jmp    L18
L123:
  nop
L18:
  addl   $0x1,-0x38(%rbp)
L70:
  cmpl   $0x2,-0x38(%rbp)
  jle    L254
  mov    -0x3c(%rbp),%eax
  imul   -0x60(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x3c(%rbp),%eax
  imul   -0x60(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  addss  -0x2c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L194:
  mov    -0x40(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  jl     L289
  addl   $0x1,-0x3c(%rbp)
L213:
  mov    -0x3c(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L292
  nop
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D22
data_type: byte[4]
name: parse_data
arguments: tag: D198
data_type: f64
name: parse_data
arguments: tag: D207
data_type: byte[8]
name: parse_data
arguments: tag: D151
data_type: byte[4]

tool: {"D22": [0x00,0x00,0x00,0x40]}

tool: D198: 3.141592653589793

tool: {"D207": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D151": [0x00,0x00,0x00,0x3f]}

assistant: ```c
void image_c_resampling_lanczos2(float *org, int noy, int nox, float *trg, int ny, int nx) {
  float scaley = noy / (float)ny;
  float scalex = nox / (float)nx;
  int x, y;
  int xi, yi;
  float xt, yt;
  int u, v;
  int wy, wx;
  float p, q;
  float dx, dy;
  for (y = 0; y < ny; ++y) {
    yt = y * scaley;
    yi = (int)yt;
    for (x = 0; x < nx; ++x) {
      xt = x * scalex;
      xi = (int)xt;
      q = 0;
      for (wy = -1; wy < 3; ++wy) {
        v = yi + wy;
        if (v >= noy) {
          continue;
        }
        if (v < 0) {
          continue;
        }
        dy = yt - v;
        if (abs(dy) > 2.0f) {
          dy = 2.0f;
        }
        p = 0;
        for (wx = -1; wx < 3; ++wx) {
          u = xi + wx;
          if (u >= nox) {
            continue;
          }
          if (u < 0) {
            continue;
          }
          dx = xt - u;
          if (abs(dx) > 2.0f) {
            dx = 2.0f;
          }
          p = p + org[v * nox + u] * ((dx) == (0) ? 1 : sin(3.141592653589793238462643383279 * (dx)) / (3.141592653589793238462643383279 * (dx))) * ((dx * 0.5f) == (0) ? 1 : sin(3.141592653589793238462643383279 * (dx * 0.5f)) / (3.141592653589793238462643383279 * (dx * 0.5f)));
        }
        q = q + p * ((dy) == (0) ? 1 : sin(3.141592653589793238462643383279 * (dy)) / (3.141592653589793238462643383279 * (dy))) * ((dy * 0.5f) == (0) ? 1 : sin(3.141592653589793238462643383279 * (dy * 0.5f)) / (3.141592653589793238462643383279 * (dy * 0.5f)));
      }
      trg[y * nx + x] += q;
    }
  }
}
```