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

```asm
<mtxSRT>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %rdi,%rbx
  movss  %xmm0,0x18(%rsp)
  movss  %xmm1,0x1c(%rsp)
  movss  %xmm2,0x20(%rsp)
  movss  %xmm3,0x24(%rsp)
  movss  %xmm4,0xc(%rsp)
  movaps %xmm5,%xmm0
  movd   %xmm6,%r14d
  movd   %xmm7,%r15d
  lea    0x2c(%rsp),%r12
  lea    0x28(%rsp),%r13
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <sincosf@plt>
  movss  0x28(%rsp),%xmm8
  movss  %xmm8,0x14(%rsp)
  mov    0x2c(%rsp),%ebp
  mov    %r13,%rsi
  mov    %r12,%rdi
  movss  0xc(%rsp),%xmm0
  call   <sincosf@plt>
  movss  0x28(%rsp),%xmm9
  movss  %xmm9,0xc(%rsp)
  movss  0x2c(%rsp),%xmm7
  movss  %xmm7,0x10(%rsp)
  mov    %r13,%rsi
  mov    %r12,%rdi
  movss  0x24(%rsp),%xmm0
  call   <sincosf@plt>
  movss  0x28(%rsp),%xmm3
  movss  0x2c(%rsp),%xmm2
  movd   %ebp,%xmm4
  mulss  %xmm2,%xmm4
  movaps %xmm4,%xmm6
  movss  0xc(%rsp),%xmm9
  movaps %xmm9,%xmm5
  movss  0x14(%rsp),%xmm8
  mulss  %xmm8,%xmm5
  movss  0x10(%rsp),%xmm7
  movaps %xmm7,%xmm4
  mulss  %xmm6,%xmm4
  movaps %xmm4,%xmm1
  movaps %xmm5,%xmm4
  subss  %xmm1,%xmm4
  movaps %xmm4,%xmm0
  movss  0x18(%rsp),%xmm10
  mulss  %xmm10,%xmm0
  movss  %xmm0,(%rbx)
  movss  D4(%rip),%xmm4
  movaps %xmm3,%xmm1
  xorps  %xmm4,%xmm1
  movaps %xmm10,%xmm0
  mulss  %xmm1,%xmm0
  movd   %ebp,%xmm12
  mulss  %xmm12,%xmm0
  movss  %xmm0,0x4(%rbx)
  movaps %xmm7,%xmm0
  mulss  %xmm8,%xmm0
  mulss  %xmm9,%xmm6
  addss  %xmm6,%xmm0
  mulss  %xmm10,%xmm0
  movss  %xmm0,0x8(%rbx)
  movl   $0x0,0xc(%rbx)
  movaps %xmm8,%xmm0
  mulss  %xmm2,%xmm0
  mulss  %xmm7,%xmm0
  movd   %ebp,%xmm11
  mulss  %xmm9,%xmm11
  addss  %xmm11,%xmm0
  movss  0x1c(%rsp),%xmm6
  mulss  %xmm6,%xmm0
  movss  %xmm0,0x10(%rbx)
  mulss  %xmm6,%xmm3
  mulss  %xmm8,%xmm3
  movss  %xmm3,0x14(%rbx)
  movd   %ebp,%xmm0
  mulss  %xmm7,%xmm0
  mulss  %xmm2,%xmm5
  subss  %xmm5,%xmm0
  mulss  %xmm6,%xmm0
  movss  %xmm0,0x18(%rbx)
  movl   $0x0,0x1c(%rbx)
  movss  0x20(%rsp),%xmm3
  mulss  %xmm3,%xmm1
  movaps %xmm1,%xmm0
  mulss  %xmm1,%xmm7
  movss  %xmm7,0x20(%rbx)
  mulss  %xmm3,%xmm2
  movss  %xmm2,0x24(%rbx)
  xorps  %xmm4,%xmm0
  mulss  %xmm9,%xmm0
  movss  %xmm0,0x28(%rbx)
  movl   $0x0,0x2c(%rbx)
  mov    %r14d,0x30(%rbx)
  mov    %r15d,0x34(%rbx)
  movss  0x70(%rsp),%xmm0
  movss  %xmm0,0x38(%rbx)
  movl   $0x3f800000,0x3c(%rbx)
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: parse_data
arguments: label: D4
type: byte[4]

tool: {"D4": [0x00,0x00,0x00,0x80]}

assistant: ```c
void mtxSRT(float *_result, float _sx, float _sy, float _sz, float _ax, float _ay, float _az, float _tx, float _ty, float _tz) {
  const float sx = sinf(_ax);
  const float cx = cosf(_ax);
  const float sy = sinf(_ay);
  const float cy = cosf(_ay);
  const float sz = sinf(_az);
  const float cz = cosf(_az);
  const float sxsz = sx * sz;
  const float cycz = cy * cz;
  _result[0] = _sx * (cycz - sxsz * sy);
  _result[1] = _sx * -cx * sz;
  _result[2] = _sx * (cz * sy + cy * sxsz);
  _result[3] = 0.0f;
  _result[4] = _sy * (cz * sx * sy + cy * sz);
  _result[5] = _sy * cx * cz;
  _result[6] = _sy * (sy * sz - cycz * sx);
  _result[7] = 0.0f;
  _result[8] = _sz * -cx * sy;
  _result[9] = _sz * sx;
  _result[10] = _sz * cx * cy;
  _result[11] = 0.0f;
  _result[12] = _tx;
  _result[13] = _ty;
  _result[14] = _tz;
  _result[15] = 1.0f;
}
```