user: What is the c source code of the assembly code below:

```asm
<image_c_resampling_lanczos2>:
  endbr64
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  push   %r15
  cvtsi2ss %r8d,%xmm0
  push   %r14
  cvtsi2ss %esi,%xmm1
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  divss  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2ss %r9d,%xmm0
  sub    $0x88,%rsp
  mov    %rdi,0x30(%rsp)
  mov    %esi,0x1c(%rsp)
  mov    %rcx,0x70(%rsp)
  mov    %r8d,0x78(%rsp)
  mov    %r9d,0x64(%rsp)
  movl   $0x0,0x68(%rsp)
  movl   $0x0,0x60(%rsp)
  movss  %xmm1,0x6c(%rsp)
  pxor   %xmm1,%xmm1
  cvtsi2ss %edx,%xmm1
  divss  %xmm0,%xmm1
  movss  %xmm1,0x5c(%rsp)
  test   %r8d,%r8d
  jle    L208
  mov    %edx,%r15d
  nop
L153:
  pxor   %xmm0,%xmm0
  mov    0x64(%rsp),%edx
  cvtsi2ssl 0x60(%rsp),%xmm0
  mulss  0x6c(%rsp),%xmm0
  cvttss2si %xmm0,%eax
  movss  %xmm0,0x58(%rsp)
  test   %edx,%edx
  jle    L0
  mov    0x64(%rsp),%edx
  xor    %ebx,%ebx
  lea    -0x1(%rdx),%edi
  movslq 0x68(%rsp),%rdx
  mov    %rdi,0x40(%rsp)
  lea    -0x1(%rax),%edi
  add    $0x3,%eax
  mov    %edi,0x50(%rsp)
  imul   %r15d,%edi
  mov    %eax,0x18(%rsp)
  mov    %edi,0x54(%rsp)
  mov    0x70(%rsp),%rdi
  lea    (%rdi,%rdx,4),%rdx
  mov    %rdx,0x48(%rsp)
  nopl   (%rax)
L129:
  pxor   %xmm0,%xmm0
  mov    0x54(%rsp),%r13d
  mov    0x50(%rsp),%r14d
  movl   $0x0,(%rsp)
  cvtsi2ss %ebx,%xmm0
  mulss  0x5c(%rsp),%xmm0
  mov    %r13d,%ebp
  mov    %r15d,%r13d
  cvttss2si %xmm0,%eax
  movss  %xmm0,0x28(%rsp)
  mov    %eax,0x2c(%rsp)
L130:
  test   %r14d,%r14d
  js     L147
  cmp    %r14d,0x1c(%rsp)
  jg     L5
L147:
  add    $0x1,%r14d
  add    %r13d,%ebp
  cmp    %r14d,0x18(%rsp)
  jne    L130
  mov    0x48(%rsp),%rax
  movss  (%rsp),%xmm1
  mov    %r13d,%r15d
  addss  (%rax,%rbx,4),%xmm1
  movss  %xmm1,(%rax,%rbx,4)
  lea    0x1(%rbx),%rax
  cmp    %rbx,0x40(%rsp)
  je     L0
  mov    %rax,%rbx
  jmp    L129
  nopl   0x0(%rax,%rax,1)
L5:
  pxor   %xmm0,%xmm0
  movss  0x58(%rsp),%xmm5
  cvtsi2ss %r14d,%xmm0
  subss  %xmm0,%xmm5
  movaps %xmm5,%xmm0
  movss  %xmm5,0x8(%rsp)
  call   <abs@plt>
  comiss D4(%rip),%xmm0
  jbe    L207
  movss  D4(%rip),%xmm5
  movss  %xmm5,0x8(%rsp)
L207:
  mov    0x2c(%rsp),%eax
  pxor   %xmm1,%xmm1
  lea    -0x1(%rax),%r15d
  lea    0x3(%rax),%r12d
L53:
  test   %r15d,%r15d
  js     L3
  cmp    %r15d,%r13d
  jle    L3
  pxor   %xmm0,%xmm0
  movss  0x28(%rsp),%xmm4
  movss  %xmm1,0x10(%rsp)
  cvtsi2ss %r15d,%xmm0
  subss  %xmm0,%xmm4
  movaps %xmm4,%xmm0
  movss  %xmm4,0x20(%rsp)
  call   <abs@plt>
  mov    0x30(%rsp),%rcx
  lea    (%r15,%rbp,1),%eax
  comiss D4(%rip),%xmm0
  movss  0x10(%rsp),%xmm1
  cltq
  pxor   %xmm3,%xmm3
  lea    (%rcx,%rax,4),%rax
  cvtss2sd %xmm1,%xmm1
  cvtss2sd (%rax),%xmm3
  ja     L79
  movss  0x20(%rsp),%xmm4
  pxor   %xmm6,%xmm6
  movss  D105(%rip),%xmm2
  mulss  %xmm4,%xmm2
  ucomiss %xmm6,%xmm4
  jp     L12
  jne    L12
L142:
  pxor   %xmm6,%xmm6
  ucomiss %xmm6,%xmm2
  jp     L135
  je     L227
L135:
  cvtss2sd %xmm2,%xmm2
  mulsd  D42(%rip),%xmm2
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm3,0x20(%rsp)
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x10(%rsp)
  call   <sin@plt>
  movsd  0x10(%rsp),%xmm2
  movsd  0x20(%rsp),%xmm3
  movsd  0x38(%rsp),%xmm1
  divsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm3
L227:
  addsd  %xmm3,%xmm1
  cvtsd2ss %xmm1,%xmm1
L3:
  add    $0x1,%r15d
  cmp    %r12d,%r15d
  jne    L53
  movss  0x8(%rsp),%xmm6
  pxor   %xmm7,%xmm7
  cvtss2sd %xmm1,%xmm1
  cvtss2sd (%rsp),%xmm7
  movsd  %xmm7,(%rsp)
  pxor   %xmm7,%xmm7
  ucomiss %xmm7,%xmm6
  jp     L11
  je     L230
L11:
  pxor   %xmm2,%xmm2
  movsd  %xmm1,0x20(%rsp)
  cvtss2sd 0x8(%rsp),%xmm2
  mulsd  D42(%rip),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x10(%rsp)
  call   <sin@plt>
  movsd  0x10(%rsp),%xmm2
  movsd  0x20(%rsp),%xmm1
  divsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
L230:
  movss  D105(%rip),%xmm2
  mulss  0x8(%rsp),%xmm2
  pxor   %xmm5,%xmm5
  ucomiss %xmm5,%xmm2
  jp     L55
  je     L80
L55:
  cvtss2sd %xmm2,%xmm2
  mulsd  D42(%rip),%xmm2
  movsd  %xmm1,0x10(%rsp)
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <sin@plt>
  movsd  0x8(%rsp),%xmm2
  movsd  0x10(%rsp),%xmm1
  divsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
L80:
  addsd  (%rsp),%xmm1
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm1,%xmm3
  movss  %xmm3,(%rsp)
  jmp    L147
  nopl   0x0(%rax,%rax,1)
L79:
  mov    D47(%rip),%rax
  movss  D87(%rip),%xmm2
  movq   %rax,%xmm0
L146:
  mulsd  %xmm0,%xmm3
  jmp    L142
  nopl   (%rax)
L0:
  addl   $0x1,0x60(%rsp)
  mov    0x64(%rsp),%edi
  mov    0x60(%rsp),%eax
  add    %edi,0x68(%rsp)
  cmp    %eax,0x78(%rsp)
  jne    L153
L208:
  add    $0x88,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L12:
  cvtss2sd %xmm4,%xmm4
  mulsd  D42(%rip),%xmm4
  movss  %xmm2,0x7c(%rsp)
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm3,0x20(%rsp)
  movapd %xmm4,%xmm0
  movsd  %xmm4,0x10(%rsp)
  call   <sin@plt>
  movsd  0x10(%rsp),%xmm4
  movss  0x7c(%rsp),%xmm2
  movsd  0x38(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm3
  divsd  %xmm4,%xmm0
  jmp    L146
```

tool_calls: name: parse_data
arguments: data_tag: D4
type: byte[4]
name: parse_data
arguments: data_tag: D105
type: byte[4]
name: parse_data
arguments: data_tag: D42
type: f64
name: parse_data
arguments: data_tag: D47
type: byte[8]
name: parse_data
arguments: data_tag: D87
type: byte[4]

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

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

tool: D42: 3.141592653589793

tool: {"D47": [0xd1,0xcd,0x35,0xae,0xaf,0x78,0x86,0xbc]}

tool: {"D87": [0x00,0x00,0x80,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;
    }
  }
}
```