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

```asm
<_sigfil>:
  endbr64
  test   %rcx,%rcx
  jle    L99
  push   %r15
  pxor   %xmm2,%xmm2
  movaps %xmm0,%xmm5
  xor    %eax,%eax
  push   %r14
  movaps %xmm2,%xmm0
  movaps %xmm2,%xmm1
  push   %r13
  mov    %rsi,%r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  mov    %rcx,%rbp
  lea    -0x1(%rdx),%rcx
  not    %rdx
  push   %rbx
  lea    -0x1(%rbp),%rdi
  xor    %ebx,%ebx
  sub    $0x28,%rsp
  movss  D12(%rip),%xmm6
  jmp    L192
  nopw   0x0(%rax,%rax,1)
L11:
  movss  (%r12,%rbx,4),%xmm0
  mulss  %xmm5,%xmm3
  xor    %eax,%eax
  movaps %xmm0,%xmm4
  subss  %xmm1,%xmm4
  andps  %xmm6,%xmm4
  comiss %xmm3,%xmm4
  seta   %al
  mov    %ax,0x0(%r13,%rbx,2)
  cmp    %rbx,%rdi
  je     L47
  test   %rbx,%rbx
  js     L152
  cmp    %rbx,%rbp
  jle    L152
  movaps %xmm0,%xmm1
  mov    $0x1,%eax
  mulss  %xmm0,%xmm0
  addss  %xmm2,%xmm1
  addss  %xmm2,%xmm0
L1:
  mov    %r15,%rdx
  mov    %rsi,%rcx
  mov    %r14,%rbx
L192:
  lea    0x1(%rbx),%r14
  cmp    %r14,%rbp
  jle    L95
  movss  0x4(%r12,%rbx,4),%xmm3
  add    $0x1,%rax
  addss  %xmm3,%xmm1
  mulss  %xmm3,%xmm3
  addss  %xmm3,%xmm0
L95:
  mov    %rdx,%r15
  add    $0x1,%r15
  js     L228
  cmp    %r15,%rbp
  jle    L228
  movss  0x4(%r12,%rdx,4),%xmm3
  add    $0x1,%rax
  addss  %xmm3,%xmm1
  mulss  %xmm3,%xmm3
  addss  %xmm3,%xmm0
L228:
  test   %rdx,%rdx
  js     L46
  cmp    %rdx,%rbp
  jle    L46
  movss  (%r12,%rdx,4),%xmm3
  add    $0x1,%rax
  addss  %xmm3,%xmm1
  mulss  %xmm3,%xmm3
  addss  %xmm3,%xmm0
L46:
  mov    %rdx,%rsi
  add    $0x2,%rsi
  js     L202
  cmp    %rsi,%rbp
  jle    L202
  movss  0x8(%r12,%rdx,4),%xmm3
  add    $0x1,%rax
  addss  %xmm3,%xmm1
  mulss  %xmm3,%xmm3
  addss  %xmm3,%xmm0
L202:
  mov    %rcx,%rsi
  add    $0x1,%rsi
  js     L173
  cmp    %rsi,%rbp
  jle    L173
  movss  0x4(%r12,%rcx,4),%xmm3
  add    $0x1,%rax
  addss  %xmm3,%xmm1
  mulss  %xmm3,%xmm3
  addss  %xmm3,%xmm0
L173:
  test   %rcx,%rcx
  js     L18
  cmp    %rcx,%rbp
  jle    L18
  movss  (%r12,%rcx,4),%xmm3
  add    $0x1,%rax
  addss  %xmm3,%xmm1
  mulss  %xmm3,%xmm3
  addss  %xmm3,%xmm0
L18:
  mov    %rcx,%rdx
  add    $0x2,%rdx
  js     L212
  cmp    %rdx,%rbp
  jle    L212
  movss  0x8(%r12,%rcx,4),%xmm3
  add    $0x1,%rax
  addss  %xmm3,%xmm1
  mulss  %xmm3,%xmm3
  addss  %xmm3,%xmm0
L212:
  pxor   %xmm3,%xmm3
  cvtsi2ss %rax,%xmm3
  divss  %xmm3,%xmm1
  divss  %xmm3,%xmm0
  movaps %xmm1,%xmm3
  mulss  %xmm1,%xmm3
  subss  %xmm3,%xmm0
  movaps %xmm2,%xmm3
  comiss %xmm0,%xmm2
  ja     L11
  ucomiss %xmm0,%xmm2
  ja     L0
  sqrtss %xmm0,%xmm0
  movaps %xmm0,%xmm3
  jmp    L11
  nopw   0x0(%rax,%rax,1)
L152:
  movaps %xmm2,%xmm0
  movaps %xmm2,%xmm1
  xor    %eax,%eax
  jmp    L1
  nopl   (%rax)
L47:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L99:
  ret
L0:
  mov    %rdi,0x10(%rsp)
  mov    %rsi,0x8(%rsp)
  movss  %xmm5,0x1c(%rsp)
  movss  %xmm1,0x18(%rsp)
  call   <sqrtf@plt>
  movss  0x1c(%rsp),%xmm5
  mov    0x10(%rsp),%rdi
  movss  D12(%rip),%xmm6
  mov    0x8(%rsp),%rsi
  movss  0x18(%rsp),%xmm1
  movaps %xmm0,%xmm3
  pxor   %xmm2,%xmm2
  jmp    L11
```

tool_calls: name: retrieve_data
arguments: data_tag: D12
type_guessed: dword

tool: D12: 2147483647

assistant: ```c
void _sigfil(float *ima, short *bpm, float nsigma, long stride, long npix) {
  long i, k, n;
  float avg1, avg2, val, std;
  for (i = 0; i < npix; i++) {
    avg1 = avg2 = 0.0f;
    n = 0;
    k = i - 1;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    k = i + 1;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    k = i - stride;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    k = i - stride - 1;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    k = i - stride + 1;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    k = i + stride;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    k = i + stride - 1;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    k = i + stride + 1;
    if ((k >= 0) && (k < npix)) {
      avg1 += ima[k];
      avg2 += ima[k] * ima[k];
      n++;
    }
    avg1 = avg1 / (float)n;
    avg2 = avg2 / (float)n;
    std = avg2 - avg1 * avg1;
    if (std < 0.)
      std = 0.0f;
    else
      std = sqrtf(std);
    val = fabsf(ima[i] - avg1);
    if (val > (nsigma * std))
      bpm[i] = 1;
    else
      bpm[i] = 0;
  }
}
```