user: 下面的汇编指令对应的C源代码是什么：

```asm
<neuralops_batchnorm2d_bwd_input>:
  endbr64
  push   %r15
  mov    %rdi,%rax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %r8,%rbp
  mov    %r9,%r8
  push   %rbx
  sub    $0x58,%rsp
  mov    %rdi,0x18(%rsp)
  mov    0x90(%rsp),%r9
  mov    0x98(%rsp),%r10
  mov    0xa0(%rsp),%r11
  mov    0xa8(%rsp),%r12
  mov    0xb0(%rsp),%r13
  test   %rdi,%rdi
  je     L91
  mov    %rsi,%r14
  mov    %rax,%rsi
  mov    %rdx,%r15
  mov    %rcx,%rdi
  mov    %r14,%rax
  movaps %xmm0,%xmm9
  pxor   %xmm11,%xmm11
  xor    %ebx,%ebx
  movq   $0x0,0x8(%rsp)
  imul   %rdx,%rax
  movss  D33(%rip),%xmm10
  imul   %rsi,%rax
  lea    -0x1(%rax),%rsi
  mov    %rax,0x10(%rsp)
  mov    %rsi,%rax
  and    $0x1,%eax
  mov    %rax,(%rsp)
L119:
  test   %rdi,%rdi
  je     L26
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  js     L75
  pxor   %xmm0,%xmm0
  cvtsi2ss %rax,%xmm0
L107:
  movss  D26(%rip),%xmm12
  movaps %xmm10,%xmm8
  xor    %ecx,%ecx
  divss  %xmm0,%xmm8
  nopl   0x0(%rax)
L19:
  movss  (%r10,%rcx,4),%xmm0
  movss  (%r8,%rcx,4),%xmm4
  movss  (%r9,%rcx,4),%xmm7
  addss  %xmm9,%xmm0
  ucomiss %xmm0,%xmm11
  ja     L34
  sqrtss %xmm0,%xmm0
L67:
  movaps %xmm10,%xmm5
  movss  (%r11,%rcx,4),%xmm13
  divss  %xmm0,%xmm5
  test   %rsi,%rsi
  js     L71
  pxor   %xmm0,%xmm0
  cvtsi2ss %rsi,%xmm0
L41:
  movaps %xmm12,%xmm6
  xor    %edx,%edx
  divss  %xmm0,%xmm6
  test   %r15,%r15
  je     L64
  nopl   0x0(%rax)
L51:
  test   %r14,%r14
  je     L1
  movaps %xmm7,%xmm3
  movaps %xmm13,%xmm2
  lea    (%r14,%rbx,1),%rax
  mulss  %xmm8,%xmm3
  mulss  %xmm6,%xmm2
  nopl   0x0(%rax)
L108:
  movss  (%r12,%rbx,4),%xmm0
  movss  0x0(%rbp,%rbx,4),%xmm1
  mulss  %xmm5,%xmm0
  subss  %xmm4,%xmm1
  mulss  %xmm2,%xmm1
  addss  %xmm3,%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,0x0(%r13,%rbx,4)
  add    $0x1,%rbx
  cmp    %rax,%rbx
  jne    L108
L1:
  add    $0x1,%rdx
  cmp    %rdx,%r15
  jne    L51
L64:
  add    $0x1,%rcx
  cmp    %rcx,%rdi
  jne    L19
L26:
  addq   $0x1,0x8(%rsp)
  mov    0x8(%rsp),%rax
  cmp    %rax,0x18(%rsp)
  jne    L119
L91:
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L71:
  mov    %rsi,%rax
  pxor   %xmm0,%xmm0
  shr    %rax
  or     (%rsp),%rax
  cvtsi2ss %rax,%xmm0
  addss  %xmm0,%xmm0
  jmp    L41
L75:
  mov    0x10(%rsp),%rcx
  pxor   %xmm0,%xmm0
  mov    %rcx,%rax
  and    $0x1,%ecx
  shr    %rax
  or     %rcx,%rax
  cvtsi2ss %rax,%xmm0
  addss  %xmm0,%xmm0
  jmp    L107
L34:
  mov    %r11,0xa0(%rsp)
  mov    %r10,0x98(%rsp)
  mov    %r9,0x90(%rsp)
  mov    %r8,0x40(%rsp)
  mov    %rdi,0x38(%rsp)
  mov    %rcx,0x30(%rsp)
  mov    %rsi,0x28(%rsp)
  movss  %xmm9,0x4c(%rsp)
  movss  %xmm8,0x48(%rsp)
  movss  %xmm7,0x24(%rsp)
  movss  %xmm4,0x20(%rsp)
  call   <sqrtf@plt>
  movss  0x4c(%rsp),%xmm9
  mov    0xa0(%rsp),%r11
  pxor   %xmm11,%xmm11
  mov    0x98(%rsp),%r10
  mov    0x90(%rsp),%r9
  mov    0x40(%rsp),%r8
  mov    0x38(%rsp),%rdi
  mov    0x30(%rsp),%rcx
  mov    0x28(%rsp),%rsi
  movss  D33(%rip),%xmm10
  movss  0x48(%rsp),%xmm8
  movss  D26(%rip),%xmm12
  movss  0x24(%rsp),%xmm7
  movss  0x20(%rsp),%xmm4
  jmp    L67
```

tool_calls: name: retrieve_data
arguments: data_label: D33
type_guessed: f32
name: retrieve_data
arguments: data_label: D26
type_guessed: byte[4]

tool: D33: 1

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

assistant: ```c
void neuralops_batchnorm2d_bwd_input(size_t batch_sz, size_t width, size_t height, size_t chan, const float *in_buf, const float *mean, const float *mean_grad, const float *var, const float *var_grad, const float *out_grad, float *in_grad, float epsilon) {
  size_t p = 0;
  for (size_t idx = 0; idx < batch_sz; idx += 1) {
    for (size_t a = 0; a < chan; a += 1) {
      float m = mean[a];
      float v = var[a];
      float dm = mean_grad[a];
      float cm = 1.0f / ((float)(width * height * batch_sz));
      float rs = 1.0f / sqrtf(v + epsilon);
      float dv = var_grad[a];
      float cv = 2.0f / ((float)(width * height * batch_sz - 1));
      for (size_t y = 0; y < height; y += 1) {
        for (size_t x = 0; x < width; x += 1) {
          in_grad[p] = out_grad[p] * rs + dm * cm + dv * cv * (in_buf[p] - m);
          p += 1;
        }
      }
    }
  }
}
```