user: 这段汇编代码用C语言表示是什么样的：

```asm
<mtxInvert>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %rdi,%r13
  mov    %fs:0x28,%rax
  mov    %rax,0x68(%rsp)
  xor    %eax,%eax
  lea    0x20(%rsp),%r14
  mov    %r14,%rdi
  call   <mtxTranspose@plt>
  mov    %r13,%rdi
  call   <mtxLoadIdentity@plt>
  mov    %r14,0x10(%rsp)
  mov    %r13,%r15
  lea    0x24(%rsp),%rax
  mov    %rax,0x18(%rsp)
  movq   $0x0,0x8(%rsp)
  jmp    L102
L70:
  add    $0x1,%ebp
  add    $0x4,%r12
  cmp    $0x4,%ebp
  je     L39
L12:
  movss  (%r12),%xmm0
  call   <fabsf@plt>
  mov    %rax,%rbx
  movss  (%rsp),%xmm0
  call   <fabsf@plt>
  cmp    %rax,%rbx
  jle    L70
  movss  (%r12),%xmm4
  movss  %xmm4,(%rsp)
  mov    %ebp,0x4(%rsp)
  jmp    L70
L39:
  mov    0x4(%rsp),%edi
  mov    0x8(%rsp),%eax
  cmp    %eax,%edi
  je     L0
  movss  (%r15),%xmm0
  movslq %edi,%rax
  lea    0x0(,%rax,4),%rdx
  lea    0x0(%r13,%rdx,1),%rcx
  movss  (%rcx),%xmm1
  movss  %xmm1,(%r15)
  movss  %xmm0,(%rcx)
  movss  (%r14),%xmm0
  movss  0x20(%rsp,%rax,4),%xmm1
  movss  %xmm1,(%r14)
  movss  %xmm0,0x20(%rsp,%rax,4)
  lea    0x4(%rdi),%eax
  movss  0x10(%r15),%xmm0
  lea    0x10(%r13,%rdx,1),%rcx
  movss  (%rcx),%xmm1
  movss  %xmm1,0x10(%r15)
  movss  %xmm0,(%rcx)
  movss  0x10(%r14),%xmm0
  cltq
  movss  0x20(%rsp,%rax,4),%xmm1
  movss  %xmm1,0x10(%r14)
  movss  %xmm0,0x20(%rsp,%rax,4)
  lea    0x8(%rdi),%eax
  movss  0x20(%r15),%xmm0
  lea    0x20(%r13,%rdx,1),%rcx
  movss  (%rcx),%xmm1
  movss  %xmm1,0x20(%r15)
  movss  %xmm0,(%rcx)
  movss  0x20(%r14),%xmm0
  cltq
  movss  0x20(%rsp,%rax,4),%xmm1
  movss  %xmm1,0x20(%r14)
  movss  %xmm0,0x20(%rsp,%rax,4)
  lea    0xc(%rdi),%eax
  movss  0x30(%r15),%xmm0
  lea    0x30(%r13,%rdx,1),%rdx
  movss  (%rdx),%xmm1
  movss  %xmm1,0x30(%r15)
  movss  %xmm0,(%rdx)
  movss  0x30(%r14),%xmm0
  cltq
  movss  0x20(%rsp,%rax,4),%xmm1
  movss  %xmm1,0x30(%r14)
  movss  %xmm0,0x20(%rsp,%rax,4)
L0:
  pxor   %xmm0,%xmm0
  movss  (%rsp),%xmm5
  ucomiss %xmm5,%xmm0
  jp     L128
  je     L27
L128:
  pxor   %xmm0,%xmm0
  divss  (%rsp),%xmm0
  mov    %r14,%rdx
  movaps %xmm0,%xmm2
  mulss  (%r14),%xmm2
  movss  %xmm2,(%r14)
  mov    %r15,%rax
  movaps %xmm0,%xmm1
  mulss  (%r15),%xmm1
  movss  %xmm1,(%r15)
  movaps %xmm0,%xmm3
  mulss  0x10(%r14),%xmm3
  movss  %xmm3,0x10(%r14)
  movaps %xmm0,%xmm3
  mulss  0x10(%r15),%xmm3
  movss  %xmm3,0x10(%r15)
  movaps %xmm0,%xmm3
  mulss  0x20(%r14),%xmm3
  movss  %xmm3,0x20(%r14)
  movaps %xmm0,%xmm3
  mulss  0x20(%r15),%xmm3
  movss  %xmm3,0x20(%r15)
  movaps %xmm0,%xmm3
  mulss  0x30(%r14),%xmm3
  movss  %xmm3,0x30(%r14)
  mulss  0x30(%r15),%xmm0
  movss  %xmm0,0x30(%r15)
  mov    0x8(%rsp),%rsi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L145
  mov    0x10(%rsp),%rbx
  movss  (%rbx),%xmm0
  mulss  %xmm0,%xmm2
  movss  0x20(%rsp),%xmm3
  subss  %xmm2,%xmm3
  movss  %xmm3,0x20(%rsp)
  mulss  %xmm0,%xmm1
  movss  0x0(%r13),%xmm2
  subss  %xmm1,%xmm2
  movss  %xmm2,0x0(%r13)
  movaps %xmm0,%xmm2
  mulss  0x10(%r14),%xmm2
  movss  0x30(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x30(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x10(%r15),%xmm2
  movss  0x10(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x10(%r13)
  movaps %xmm0,%xmm2
  mulss  0x20(%r14),%xmm2
  movss  0x40(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x40(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x20(%r15),%xmm2
  movss  0x20(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x20(%r13)
  movaps %xmm0,%xmm2
  mulss  0x30(%r14),%xmm2
  movss  0x50(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x50(%rsp)
  mulss  0x30(%r15),%xmm0
  movss  0x30(%r13),%xmm1
  subss  %xmm0,%xmm1
  movss  %xmm1,0x30(%r13)
  cmp    $0x1,%esi
  je     L111
L145:
  mov    0x10(%rsp),%rsi
  movss  0x4(%rsi),%xmm0
  movaps %xmm0,%xmm2
  mulss  (%rdx),%xmm2
  movss  0x24(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x24(%rsp)
  movaps %xmm0,%xmm2
  mulss  (%rax),%xmm2
  movss  0x4(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x4(%r13)
  movaps %xmm0,%xmm2
  mulss  0x10(%rdx),%xmm2
  movss  0x34(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x34(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x10(%rax),%xmm2
  movss  0x14(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x14(%r13)
  movaps %xmm0,%xmm2
  mulss  0x20(%rdx),%xmm2
  movss  0x44(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x44(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x20(%rax),%xmm2
  movss  0x24(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x24(%r13)
  movaps %xmm0,%xmm2
  mulss  0x30(%rdx),%xmm2
  movss  0x54(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x54(%rsp)
  mulss  0x30(%rax),%xmm0
  movss  0x34(%r13),%xmm1
  subss  %xmm0,%xmm1
  movss  %xmm1,0x34(%r13)
  cmp    $0x2,%ecx
  je     L117
L111:
  mov    0x10(%rsp),%rsi
  movss  0x8(%rsi),%xmm0
  movaps %xmm0,%xmm2
  mulss  (%rdx),%xmm2
  movss  0x28(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x28(%rsp)
  movaps %xmm0,%xmm2
  mulss  (%rax),%xmm2
  movss  0x8(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x8(%r13)
  movaps %xmm0,%xmm2
  mulss  0x10(%rdx),%xmm2
  movss  0x38(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x38(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x10(%rax),%xmm2
  movss  0x18(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x18(%r13)
  movaps %xmm0,%xmm2
  mulss  0x20(%rdx),%xmm2
  movss  0x48(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x48(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x20(%rax),%xmm2
  movss  0x28(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x28(%r13)
  movaps %xmm0,%xmm2
  mulss  0x30(%rdx),%xmm2
  movss  0x58(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x58(%rsp)
  mulss  0x30(%rax),%xmm0
  movss  0x38(%r13),%xmm1
  subss  %xmm0,%xmm1
  movss  %xmm1,0x38(%r13)
  cmp    $0x3,%ecx
  je     L35
L117:
  mov    0x10(%rsp),%rsi
  movss  0xc(%rsi),%xmm0
  movaps %xmm0,%xmm2
  mulss  (%rdx),%xmm2
  movss  0x2c(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x2c(%rsp)
  movaps %xmm0,%xmm2
  mulss  (%rax),%xmm2
  movss  0xc(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0xc(%r13)
  movaps %xmm0,%xmm2
  mulss  0x10(%rdx),%xmm2
  movss  0x3c(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x3c(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x10(%rax),%xmm2
  movss  0x1c(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x1c(%r13)
  movaps %xmm0,%xmm2
  mulss  0x20(%rdx),%xmm2
  movss  0x4c(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x4c(%rsp)
  movaps %xmm0,%xmm2
  mulss  0x20(%rax),%xmm2
  movss  0x2c(%r13),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x2c(%r13)
  movaps %xmm0,%xmm2
  mulss  0x30(%rdx),%xmm2
  movss  0x5c(%rsp),%xmm1
  subss  %xmm2,%xmm1
  movss  %xmm1,0x5c(%rsp)
  mulss  0x30(%rax),%xmm0
  movss  0x3c(%r13),%xmm1
  subss  %xmm0,%xmm1
  movss  %xmm1,0x3c(%r13)
  addq   $0x1,0x8(%rsp)
  mov    0x8(%rsp),%rax
  add    $0x10,%rsi
  mov    %rsi,0x10(%rsp)
  add    $0x4,%r14
  add    $0x4,%r15
  addq   $0x14,0x18(%rsp)
  cmp    $0x4,%rax
  je     L35
L102:
  mov    0x8(%rsp),%rax
  mov    %eax,0x4(%rsp)
  mov    0x18(%rsp),%r12
  movss  -0x4(%r12),%xmm6
  movss  %xmm6,(%rsp)
  lea    0x1(%rax),%ebp
  cmp    $0x3,%eax
  jne    L12
  jmp    L0
L27:
  mov    %r13,%rdi
  call   <mtxLoadIdentity@plt>
L35:
  mov    0x68(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L125
  add    $0x78,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L125:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void mtxInvert(float *mtx, const float *src) {
  float tmp[16];
  float val, val2, val_inv, zero, one;
  int i, j, i4, i8, i12, ind;
  mtxTranspose(tmp, src);
  mtxLoadIdentity(mtx);
  for (i = 0; i != 4; i++) {
    val = tmp[(i << 2) + i];
    ind = i;
    i4 = i + 4;
    i8 = i + 8;
    i12 = i + 12;
    for (j = i + 1; j != 4; j++) {
      if (fabsf(tmp[(i << 2) + j]) > fabsf(val)) {
        ind = j;
        val = tmp[(i << 2) + j];
      }
    }
    if (ind != i) {
      val2 = mtx[i];
      mtx[i] = mtx[ind];
      mtx[ind] = val2;
      val2 = tmp[i];
      tmp[i] = tmp[ind];
      tmp[ind] = val2;
      ind += 4;
      val2 = mtx[i4];
      mtx[i4] = mtx[ind];
      mtx[ind] = val2;
      val2 = tmp[i4];
      tmp[i4] = tmp[ind];
      tmp[ind] = val2;
      ind += 4;
      val2 = mtx[i8];
      mtx[i8] = mtx[ind];
      mtx[ind] = val2;
      val2 = tmp[i8];
      tmp[i8] = tmp[ind];
      tmp[ind] = val2;
      ind += 4;
      val2 = mtx[i12];
      mtx[i12] = mtx[ind];
      mtx[ind] = val2;
      val2 = tmp[i12];
      tmp[i12] = tmp[ind];
      tmp[ind] = val2;
    }
    if (val == zero) {
      mtxLoadIdentity(mtx);
      return;
    }
    val_inv = one / val;
    tmp[i] *= val_inv;
    mtx[i] *= val_inv;
    tmp[i4] *= val_inv;
    mtx[i4] *= val_inv;
    tmp[i8] *= val_inv;
    mtx[i8] *= val_inv;
    tmp[i12] *= val_inv;
    mtx[i12] *= val_inv;
    if (i != 0) {
      val = tmp[i << 2];
      tmp[0] -= tmp[i] * val;
      mtx[0] -= mtx[i] * val;
      tmp[4] -= tmp[i4] * val;
      mtx[4] -= mtx[i4] * val;
      tmp[8] -= tmp[i8] * val;
      mtx[8] -= mtx[i8] * val;
      tmp[12] -= tmp[i12] * val;
      mtx[12] -= mtx[i12] * val;
    }
    if (i != 1) {
      val = tmp[(i << 2) + 1];
      tmp[1] -= tmp[i] * val;
      mtx[1] -= mtx[i] * val;
      tmp[5] -= tmp[i4] * val;
      mtx[5] -= mtx[i4] * val;
      tmp[9] -= tmp[i8] * val;
      mtx[9] -= mtx[i8] * val;
      tmp[13] -= tmp[i12] * val;
      mtx[13] -= mtx[i12] * val;
    }
    if (i != 2) {
      val = tmp[(i << 2) + 2];
      tmp[2] -= tmp[i] * val;
      mtx[2] -= mtx[i] * val;
      tmp[6] -= tmp[i4] * val;
      mtx[6] -= mtx[i4] * val;
      tmp[10] -= tmp[i8] * val;
      mtx[10] -= mtx[i8] * val;
      tmp[14] -= tmp[i12] * val;
      mtx[14] -= mtx[i12] * val;
    }
    if (i != 3) {
      val = tmp[(i << 2) + 3];
      tmp[3] -= tmp[i] * val;
      mtx[3] -= mtx[i] * val;
      tmp[7] -= tmp[i4] * val;
      mtx[7] -= mtx[i4] * val;
      tmp[11] -= tmp[i8] * val;
      mtx[11] -= mtx[i8] * val;
      tmp[15] -= tmp[i12] * val;
      mtx[15] -= mtx[i12] * val;
    }
  }
}
```