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

```asm
<GNAW>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rsi,%rbx
  mov    %rdi,%rsi
  mov    %rbx,%rdi
  sub    $0x48,%rsp
  movaps %xmm3,0x30(%rsp)
  movaps %xmm2,0x20(%rsp)
  movaps %xmm5,0x10(%rsp)
  movss  %xmm0,0xc(%rsp)
  call   <CHEW@plt>
  movaps 0x30(%rsp),%xmm3
  lea    0x4(%rbp),%rdx
  xor    %esi,%esi
  movss  0xc(%rsp),%xmm1
  movaps 0x20(%rsp),%xmm2
  lea    0x8(%rbx),%r10
  lea    0x180004(%rbp),%r9
  movsd  D12(%rip),%xmm4
  movapd D12(%rip),%xmm6
  lea    0x180088(%rbp),%r8
  lea    0x18008c(%rbp),%rdi
  subss  %xmm0,%xmm1
  movss  0x180148(%rbp),%xmm0
  movaps 0x10(%rsp),%xmm5
  mulss  %xmm1,%xmm0
  unpcklps %xmm0,%xmm1
  movlps %xmm1,0x180034(%rbp)
L18:
  pxor   %xmm1,%xmm1
  lea    0x3fffc(%rdx),%rax
  lea    -0x4(%rdx),%rcx
  mulss  0x1801c8(%rbp,%rsi,1),%xmm0
  cmp    %rax,%r8
  mulss  0x180000(%rbp,%rsi,1),%xmm0
  setae  %al
  cmp    %rdi,%rdx
  setae  %r11b
  or     %r11b,%al
  movss  %xmm0,0x180088(%rbp)
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm4,%xmm0
  cvtss2sd (%rbx),%xmm1
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd -0x4(%rdx),%xmm1
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4(%rdx)
  je     L48
  mov    %rdx,%rax
  sub    %r10,%rax
  cmp    $0x8,%rax
  jbe    L48
  movss  0x180088(%rbp),%xmm0
  xor    %eax,%eax
  shufps $0x0,%xmm0,%xmm0
  movhlps %xmm0,%xmm5
  cvtps2pd %xmm0,%xmm8
  cvtps2pd %xmm5,%xmm7
  mulpd  %xmm6,%xmm8
  mulpd  %xmm6,%xmm7
  nopl   0x0(%rax)
L15:
  cvtps2pd 0x4(%rbx,%rax,1),%xmm0
  mulpd  %xmm8,%xmm0
  cvtps2pd (%rdx,%rax,1),%xmm1
  movlps 0x8(%rdx,%rax,1),%xmm3
  movlps 0xc(%rbx,%rax,1),%xmm2
  cvtps2pd %xmm3,%xmm9
  addpd  %xmm1,%xmm0
  cvtps2pd %xmm2,%xmm1
  mulpd  %xmm7,%xmm1
  cvtpd2ps %xmm0,%xmm0
  addpd  %xmm9,%xmm1
  cvtpd2ps %xmm1,%xmm1
  movlhps %xmm1,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    $0x3fff0,%rax
  jne    L15
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x180088(%rbp),%xmm0
  mulsd  %xmm4,%xmm0
  cvtss2sd 0x3fff4(%rbx),%xmm1
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x3fff0(%rdx),%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0x3fff0(%rdx)
  pxor   %xmm0,%xmm0
  cvtss2sd 0x180088(%rbp),%xmm0
  mulsd  %xmm4,%xmm0
  cvtss2sd 0x3fff8(%rbx),%xmm1
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x3fff4(%rdx),%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0x3fff4(%rdx)
  pxor   %xmm0,%xmm0
  cvtss2sd 0x180088(%rbp),%xmm0
  mulsd  %xmm4,%xmm0
  cvtss2sd 0x3fffc(%rbx),%xmm1
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x3fff8(%rdx),%xmm1
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0x3fff8(%rdx)
L47:
  movss  0x180038(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  pxor   %xmm7,%xmm7
  add    $0x40000,%rdx
  cvtss2sd 0x40000(%rbx,%rsi,1),%xmm7
  cvtss2sd %xmm0,%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  %xmm7,%xmm1
  pxor   %xmm7,%xmm7
  cvtss2sd 0x180000(%rbp,%rsi,1),%xmm7
  addsd  %xmm7,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x180000(%rbp,%rsi,1)
  add    $0x4,%rsi
  cmp    %r9,%rdx
  jne    L18
  movss  0x180034(%rbp),%xmm0
  add    $0x48,%rsp
  mov    $0x2,%edi
  pop    %rbx
  pop    %rbp
  jmp    1060 <powf@plt>
L48:
  mov    $0x4,%eax
  nopw   0x0(%rax,%rax,1)
L50:
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x180088(%rbp),%xmm0
  mulsd  %xmm4,%xmm0
  cvtss2sd (%rbx,%rax,1),%xmm1
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%rcx,%rax,1),%xmm1
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rcx,%rax,1)
  add    $0x4,%rax
  cmp    $0x40000,%rax
  jne    L50
  jmp    L47
```

tool_calls: name: disassemble_data
arguments: data_tag: D12
data_type: byte[16]

tool: {"D12": [0x33,0x33,0x33,0x33,0x33,0x33,0xd3,0x3f,0x33,0x33,0x33,0x33,0x33,0x33,0xd3,0x3f]}

assistant: ```c
float GNAW(float FLESH, float LEG[][2 << 15], float *EYE) {
  int UG, MMM;
  LEG[6][13] = FLESH - CHEW(EYE, LEG);
  LEG[6][14] = LEG[6][82] * LEG[6][13];
  for (UG = 0; UG < 6; ++UG) {
    LEG[6][34] = LEG[6][UG + (1 << 7) - 14] * LEG[6][7 << 1] * LEG[6][UG];
    for (MMM = 0; MMM < 4 << 14; ++MMM)
      LEG[UG][MMM] += LEG[6][34] * .3 * EYE[MMM];
    LEG[6][UG] += .3 * LEG[6][14] * EYE[256 * 256 + UG];
  }
  return powf(LEG[6][13], 2);
}
```