user: 请将以下的汇编代码转换成C语言代码：

```asm
<invert>:
  endbr64
  push   %r15
  xor    %r15d,%r15d
  push   %r14
  mov    %rdx,%r14
  push   %r13
  push   %r12
  xor    %r12d,%r12d
  push   %rbp
  xor    %ebp,%ebp
  push   %rbx
  sub    $0x1f8,%rsp
  mov    %rdi,0x40(%rsp)
  lea    0x50(%rsp),%r13
  mov    %rsi,0x48(%rsp)
  mov    %r13,%rbx
  mov    %fs:0x28,%rax
  mov    %rax,0x1e8(%rsp)
  xor    %eax,%eax
  mov    %r13,0x28(%rsp)
  movq   $0xa,0x8(%rsp)
  nopl   0x0(%rax,%rax,1)
L335:
  mov    0x8(%rsp),%rax
  mov    0x40(%rsp),%rsi
  shl    $0x2,%rax
  lea    (%rsi,%rbp,4),%rcx
  cmp    $0x8,%eax
  jae    L247
  test   $0x4,%al
  jne    L440
  test   %eax,%eax
  je     L490
  movzbl (%rcx),%eax
  mov    %al,(%rbx)
L490:
  test   %r15,%r15
  je     L226
L455:
  mov    $0x9,%eax
  lea    -0x1(%r12),%rcx
  mov    %r13,%r8
  xor    %edx,%edx
  sub    %r15,%rax
  mov    %r14,0x30(%rsp)
  mov    %rcx,%r14
  mov    %rax,0x10(%rsp)
  mov    0x8(%rsp),%rax
  mov    %rax,%rsi
  and    $0xfffffffffffffffc,%rax
  lea    (%rax,%r15,1),%r11
  mov    %rax,%r10
  mov    $0xa,%eax
  shr    $0x2,%rsi
  mov    %rax,%rdi
  sub    %r11,%rax
  mov    %rsi,0x18(%rsp)
  mov    0x28(%rsp),%rsi
  sub    %r15,%rdi
  mov    %rax,0x20(%rsp)
  mov    %rdi,0x38(%rsp)
  nopl   (%rax)
L162:
  movss  (%rsi),%xmm1
  movss  (%r8),%xmm0
  mov    %r14,%rax
  sub    %rdx,%rax
  mulss  %xmm1,%xmm0
  cmp    $0x2,%rax
  jbe    L220
  cmp    $0x9,%r15
  je     L220
  cmpq   $0x2,0x10(%rsp)
  jbe    L157
  movups (%rsi),%xmm2
  movaps %xmm0,%xmm3
  movups (%rbx),%xmm1
  shufps $0x0,%xmm3,%xmm3
  cmpq   $0x2,0x18(%rsp)
  mulps  %xmm3,%xmm2
  subps  %xmm2,%xmm1
  movups %xmm1,(%rbx)
  jne    L353
  movups 0x10(%rsi),%xmm2
  movups 0x10(%rbx),%xmm1
  mulps  %xmm3,%xmm2
  subps  %xmm2,%xmm1
  movups %xmm1,0x10(%rbx)
L353:
  cmp    0x8(%rsp),%r10
  je     L245
  mov    0x20(%rsp),%r9
  cmp    $0x9,%r11
  je     L479
  mov    %r11,%rax
  mov    %r10,%rcx
L218:
  lea    0x0(%rbp,%rcx,1),%rdi
  add    %rdx,%rcx
  movaps %xmm0,%xmm3
  add    %r15,%rcx
  shufps $0xe0,%xmm3,%xmm3
  lea    0x0(%r13,%rdi,4),%rdi
  movq   0x50(%rsp,%rcx,4),%xmm2
  movq   (%rdi),%xmm1
  mov    %r9,%rcx
  and    $0xfffffffffffffffe,%rcx
  mulps  %xmm3,%xmm2
  add    %rcx,%rax
  subps  %xmm2,%xmm1
  movlps %xmm1,(%rdi)
  cmp    %rcx,%r9
  je     L245
L81:
  lea    (%r12,%rax,1),%rcx
  add    %rdx,%rax
  mulss  0x50(%rsp,%rax,4),%xmm0
  movss  0x50(%rsp,%rcx,4),%xmm1
  subss  %xmm0,%xmm1
  movss  %xmm1,0x50(%rsp,%rcx,4)
L245:
  add    $0xa,%rdx
  add    $0x28,%rsi
  add    $0x2c,%r8
  cmp    %r12,%rdx
  jne    L162
  movss  (%rbx),%xmm2
  mov    0x30(%rsp),%r14
  movaps %xmm2,%xmm0
  movss  %xmm2,0x10(%rsp)
  call   <fabs@plt>
  movss  D46(%rip),%xmm5
  movss  0x10(%rsp),%xmm2
  comiss %xmm0,%xmm5
  ja     L431
  mov    0x48(%rsp),%rax
  movss  (%rax,%r15,4),%xmm0
  mov    0x28(%rsp),%rax
  movss  %xmm0,(%r14,%r15,4)
  movss  (%rax),%xmm1
  mulss  (%r14),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x1,%r15
  je     L464
  movss  0x4(%r14),%xmm1
  mulss  0x28(%rax),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x2,%r15
  je     L464
  movss  0x8(%r14),%xmm1
  mulss  0x50(%rax),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x3,%r15
  je     L464
  movss  0xc(%r14),%xmm1
  mulss  0x78(%rax),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x4,%r15
  je     L464
  movss  0x10(%r14),%xmm1
  mulss  0xa0(%rax),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x5,%r15
  je     L464
  movss  0x14(%r14),%xmm1
  mulss  0xc8(%rax),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x6,%r15
  je     L464
  movss  0x18(%r14),%xmm1
  mulss  0xf0(%rax),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x7,%r15
  je     L464
  movss  0x1c(%r14),%xmm1
  mulss  0x118(%rax),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,(%r14,%r15,4)
  cmp    $0x9,%r15
  jne    L464
  movss  0x20(%r14),%xmm1
  mulss  0x140(%rax),%xmm1
  subss  %xmm1,%xmm0
L464:
  movss  D57(%rip),%xmm1
  movss  D18(%rip),%xmm4
  divss  %xmm2,%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm1,(%rbx)
  comiss %xmm0,%xmm4
  jb     L487
  comiss D26(%rip),%xmm0
  jae    L483
  movss  D26(%rip),%xmm0
L483:
  addq   $0x4,0x28(%rsp)
  add    $0x2c,%rbx
  add    $0xa,%r12
  add    $0xb,%rbp
  movss  %xmm0,(%r14,%r15,4)
  add    $0x1,%r15
  subq   $0x1,0x8(%rsp)
  jne    L335
L477:
  mov    0x1e8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L86
  add    $0x1f8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L220:
  mulss  %xmm0,%xmm1
  movss  (%rbx),%xmm2
  subss  %xmm1,%xmm2
  movss  %xmm2,(%rbx)
  cmp    $0x9,%r15
  je     L245
  movss  0x4(%rsi),%xmm2
  movss  0x4(%rbx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,0x4(%rbx)
  cmp    $0x8,%r15
  je     L245
  movss  0x8(%rsi),%xmm2
  movss  0x8(%rbx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,0x8(%rbx)
  cmp    $0x7,%r15
  je     L245
  movss  0xc(%rsi),%xmm2
  movss  0xc(%rbx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,0xc(%rbx)
  cmp    $0x6,%r15
  je     L245
  movss  0x10(%rsi),%xmm2
  movss  0x10(%rbx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,0x10(%rbx)
  cmp    $0x5,%r15
  je     L245
  movss  0x14(%rsi),%xmm2
  movss  0x14(%rbx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,0x14(%rbx)
  cmp    $0x4,%r15
  je     L245
  movss  0x18(%rsi),%xmm2
  movss  0x18(%rbx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,0x18(%rbx)
  cmp    $0x3,%r15
  je     L245
  movss  0x1c(%rsi),%xmm2
  movss  0x1c(%rbx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,0x1c(%rbx)
  cmp    $0x2,%r15
  je     L245
  mulss  0x20(%rsi),%xmm0
  movss  0x20(%rbx),%xmm1
  subss  %xmm0,%xmm1
  movss  %xmm1,0x20(%rbx)
  jmp    L245
L157:
  mov    0x38(%rsp),%r9
  mov    %r15,%rax
  xor    %ecx,%ecx
  jmp    L218
L479:
  mov    $0x9,%eax
  jmp    L81
L247:
  mov    (%rcx),%rdx
  lea    0x8(%rbx),%rdi
  and    $0xfffffffffffffff8,%rdi
  mov    %rdx,(%rbx)
  mov    %eax,%edx
  mov    -0x8(%rcx,%rdx,1),%rsi
  mov    %rsi,-0x8(%rbx,%rdx,1)
  mov    %rbx,%rdx
  sub    %rdi,%rdx
  add    %edx,%eax
  sub    %rdx,%rcx
  and    $0xfffffff8,%eax
  cmp    $0x8,%eax
  jb     L490
  and    $0xfffffff8,%eax
  xor    %edx,%edx
L420:
  mov    %edx,%esi
  add    $0x8,%edx
  mov    (%rcx,%rsi,1),%r8
  mov    %r8,(%rdi,%rsi,1)
  cmp    %eax,%edx
  jb     L420
  test   %r15,%r15
  jne    L455
L226:
  movss  (%rbx),%xmm2
  movaps %xmm2,%xmm0
  movss  %xmm2,0x10(%rsp)
  call   <fabs@plt>
  movss  D46(%rip),%xmm6
  movss  0x10(%rsp),%xmm2
  comiss %xmm0,%xmm6
  ja     L431
  mov    0x48(%rsp),%rax
  movss  (%rax),%xmm0
  jmp    L464
L487:
  movaps %xmm4,%xmm0
  jmp    L483
L440:
  mov    (%rcx),%edx
  mov    %eax,%eax
  mov    %edx,(%rbx)
  mov    -0x4(%rcx,%rax,1),%edx
  mov    %edx,-0x4(%rbx,%rax,1)
  jmp    L490
L431:
  mov    $0xa,%eax
  lea    (%r14,%r15,4),%rdx
  xor    %esi,%esi
  sub    %r15,%rax
  shl    $0x2,%rax
  cmp    $0x8,%eax
  jb     L248
  mov    %eax,%ecx
  movq   $0x0,(%rdx)
  movq   $0x0,-0x8(%rdx,%rcx,1)
  lea    0x8(%rdx),%rcx
  and    $0xfffffffffffffff8,%rcx
  sub    %rcx,%rdx
  add    %edx,%eax
  and    $0xfffffff8,%eax
  cmp    $0x8,%eax
  jb     L477
  and    $0xfffffff8,%eax
  xor    %edx,%edx
L54:
  mov    %edx,%edi
  add    $0x8,%edx
  mov    %rsi,(%rcx,%rdi,1)
  cmp    %eax,%edx
  jb     L54
  jmp    L477
L248:
  test   $0x4,%al
  jne    L258
  test   %eax,%eax
  je     L477
  movb   $0x0,(%rdx)
  jmp    L477
L258:
  mov    %eax,%eax
  movl   $0x0,(%rdx)
  movl   $0x0,-0x4(%rdx,%rax,1)
  jmp    L477
L86:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D46
datatype: byte[4]
name: parse_data
arguments: data_label: D57
datatype: byte[4]
name: parse_data
arguments: data_label: D18
datatype: byte[4]
name: parse_data
arguments: data_label: D26
datatype: byte[4]

tool: {"D46": [0xff,0xe6,0xdb,0x2e]}

tool: {"D57": [0x00,0x00,0x80,0x3f]}

tool: {"D18": [0x77,0xbe,0x7f,0x3f]}

tool: {"D26": [0x77,0xbe,0x7f,0xbf]}

assistant: ```c
void invert(float *phi, float *psi, float *rc) {
  float save;
  long i, j, k;
  float v[100];
  for (j = 0; j < 10; ++j) {
    for (i = j; i < 10; ++i) {
      v[i + j * 10] = phi[i + j * 10];
    }
    for (k = 0; k < j; ++k) {
      save = v[j + k * 10] * v[k + k * 10];
      for (i = j; i < 10; ++i) {
        v[i + j * 10] -= v[i + k * 10] * save;
      }
    }
    if ((fabs(v[j + j * 10])) < 1e-10f) {
      goto L100;
    }
    rc[j] = psi[j];
    for (k = 0; k < j; ++k) {
      rc[j] -= rc[k] * v[j + k * 10];
    }
    v[j + j * 10] = 1.f / v[j + j * 10];
    rc[j] *= v[j + j * 10];
    rc[j] = ((((rc[j]) <= (.999f) ? (rc[j]) : (.999f))) >= (-.999f) ? (((rc[j]) <= (.999f) ? (rc[j]) : (.999f))) : (-.999f));
  }
  return;
L100:
  for (i = j; i < 10; ++i) {
    rc[i] = 0.f;
  }
}
```