user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<npt_move_vertex>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x2a8,%rsp
  mov    %rdx,0x20(%rsp)
  mov    %rcx,0x40(%rsp)
  mov    %r8,%r14
  mov    %r9,%r13
  mov    0x2e0(%rsp),%r12
  mov    0x2e8(%rsp),%rbp
  mov    0x2f0(%rsp),%rbx
  mov    0x2f8(%rsp),%r15
  mov    0x300(%rsp),%rax
  mov    %rax,0x8(%rsp)
  mov    0x308(%rsp),%r9
  mov    %r9,0x30(%rsp)
  mov    0x310(%rsp),%r8
  mov    %r8,0x48(%rsp)
  mov    0x318(%rsp),%r10
  mov    %r10,0x50(%rsp)
  mov    0x320(%rsp),%r11
  mov    %r11,0x58(%rsp)
  mov    0x328(%rsp),%r10
  mov    %r10,0x60(%rsp)
  mov    0x330(%rsp),%r11
  mov    %r11,0x68(%rsp)
  mov    0x338(%rsp),%r10
  mov    %r10,0x70(%rsp)
  mov    0x340(%rsp),%r11
  mov    %r11,0x78(%rsp)
  mov    0x348(%rsp),%r10
  mov    %r10,0x80(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x298(%rsp)
  xor    %eax,%eax
  lea    0x98(%rsp),%r11
  lea    0xa8(%rsp),%rax
  mov    %r11,0x28(%rsp)
  mov    %r11,%rcx
  mov    %rax,0x10(%rsp)
  mov    %rax,%rdx
  mov    %rdi,0x38(%rsp)
  call   <CalcLineVec@plt>
  lea    0x9c(%rsp),%r10
  mov    %r10,0x18(%rsp)
  mov    %r10,%rdx
  mov    0x20(%rsp),%rsi
  mov    0x38(%rsp),%rdi
  call   <CalcVec@plt>
  lea    0xc0(%rsp),%r11
  mov    %r11,0x20(%rsp)
  mov    %r11,%rdx
  mov    0x18(%rsp),%rsi
  mov    0x10(%rsp),%rdi
  call   <CalcOutProduct@plt>
  mov    0x20(%rsp),%rdi
  call   <CalcNormalize@plt>
  lea    0xb4(%rsp),%rdx
  mov    %rdx,0x88(%rsp)
  mov    0x10(%rsp),%rsi
  mov    0x20(%rsp),%rdi
  call   <CalcOutProduct@plt>
  lea    0xcc(%rsp),%r9
  mov    0x28(%rsp),%rcx
  mov    %r9,0x28(%rsp)
  mov    %r9,%rdx
  mov    0x30(%rsp),%rsi
  mov    0x8(%rsp),%rdi
  call   <CalcLineVec@plt>
  mov    0x18(%rsp),%rdx
  mov    0x48(%rsp),%rsi
  mov    0x8(%rsp),%rdi
  call   <CalcVec@plt>
  lea    0xe4(%rsp),%r10
  mov    %r10,0x30(%rsp)
  mov    %r10,%rdx
  mov    0x18(%rsp),%rsi
  mov    0x28(%rsp),%rdi
  call   <CalcOutProduct@plt>
  mov    0x30(%rsp),%rdi
  call   <CalcNormalize@plt>
  lea    0xd8(%rsp),%r8
  mov    %r8,0x18(%rsp)
  mov    %r8,%rdx
  mov    0x28(%rsp),%rsi
  mov    0x30(%rsp),%rdi
  call   <CalcOutProduct@plt>
  lea    0xf0(%rsp),%r10
  mov    %r10,0x48(%rsp)
  mov    %r10,%r8
  mov    0x20(%rsp),%rcx
  mov    0x88(%rsp),%rdx
  mov    0x10(%rsp),%rsi
  mov    0x38(%rsp),%rdi
  call   <Calc_3dMat4TranAxis@plt>
  lea    0x130(%rsp),%r11
  mov    %r11,0x10(%rsp)
  mov    %r11,%r8
  mov    0x30(%rsp),%rcx
  mov    0x18(%rsp),%rdx
  mov    0x28(%rsp),%rsi
  mov    0x8(%rsp),%rdi
  call   <Calc_3dMat4TranAxisInv@plt>
  lea    0x170(%rsp),%rdx
  mov    0x10(%rsp),%rsi
  mov    0x48(%rsp),%rdi
  call   <Calc_3dMat4Multi44@plt>
  mov    0x40(%rsp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,0x1b0(%rsp)
  movss  0x4(%rax),%xmm0
  movss  %xmm0,0x1b4(%rsp)
  movss  0x8(%rax),%xmm0
  movss  %xmm0,0x1b8(%rsp)
  movss  D8(%rip),%xmm0
  movss  %xmm0,0x1bc(%rsp)
  movss  (%r14),%xmm1
  movss  %xmm1,0x1c0(%rsp)
  movss  0x4(%r14),%xmm1
  movss  %xmm1,0x1c4(%rsp)
  movss  0x8(%r14),%xmm1
  movss  %xmm1,0x1c8(%rsp)
  movss  %xmm0,0x1cc(%rsp)
  movss  0x0(%r13),%xmm1
  movss  %xmm1,0x1d0(%rsp)
  movss  0x4(%r13),%xmm1
  movss  %xmm1,0x1d4(%rsp)
  movss  0x8(%r13),%xmm1
  movss  %xmm1,0x1d8(%rsp)
  movss  %xmm0,0x1dc(%rsp)
  movss  (%r12),%xmm1
  movss  %xmm1,0x1e0(%rsp)
  movss  0x4(%r12),%xmm1
  movss  %xmm1,0x1e4(%rsp)
  movss  0x8(%r12),%xmm1
  movss  %xmm1,0x1e8(%rsp)
  movss  %xmm0,0x1ec(%rsp)
  movss  0x0(%rbp),%xmm1
  movss  %xmm1,0x1f0(%rsp)
  movss  0x4(%rbp),%xmm1
  movss  %xmm1,0x1f4(%rsp)
  movss  0x8(%rbp),%xmm1
  movss  %xmm1,0x1f8(%rsp)
  movss  %xmm0,0x1fc(%rsp)
  movss  (%rbx),%xmm1
  movss  %xmm1,0x200(%rsp)
  movss  0x4(%rbx),%xmm1
  movss  %xmm1,0x204(%rsp)
  movss  0x8(%rbx),%xmm1
  movss  %xmm1,0x208(%rsp)
  movss  %xmm0,0x20c(%rsp)
  movss  (%r15),%xmm1
  movss  %xmm1,0x210(%rsp)
  movss  0x4(%r15),%xmm1
  movss  %xmm1,0x214(%rsp)
  movss  0x8(%r15),%xmm1
  movss  %xmm1,0x218(%rsp)
  movss  %xmm0,0x21c(%rsp)
  lea    0x1b0(%rsp),%rbx
  lea    0x220(%rsp),%rbp
  mov    %rbp,%r13
  lea    0x170(%rsp),%r12
L7:
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <Calc_3dMat4Multi14@plt>
  add    $0x10,%rbx
  add    $0x10,%rbp
  cmp    %r13,%rbx
  jne    L7
  movss  0x220(%rsp),%xmm0
  mov    0x50(%rsp),%rax
  movss  %xmm0,(%rax)
  movss  0x224(%rsp),%xmm0
  movss  %xmm0,0x4(%rax)
  movss  0x228(%rsp),%xmm0
  movss  %xmm0,0x8(%rax)
  movss  0x230(%rsp),%xmm0
  mov    0x58(%rsp),%rax
  movss  %xmm0,(%rax)
  movss  0x234(%rsp),%xmm0
  movss  %xmm0,0x4(%rax)
  movss  0x238(%rsp),%xmm0
  movss  %xmm0,0x8(%rax)
  movss  0x240(%rsp),%xmm0
  mov    0x60(%rsp),%rax
  movss  %xmm0,(%rax)
  movss  0x244(%rsp),%xmm0
  movss  %xmm0,0x4(%rax)
  movss  0x248(%rsp),%xmm0
  movss  %xmm0,0x8(%rax)
  movss  0x250(%rsp),%xmm0
  mov    0x68(%rsp),%rax
  movss  %xmm0,(%rax)
  movss  0x254(%rsp),%xmm0
  movss  %xmm0,0x4(%rax)
  movss  0x258(%rsp),%xmm0
  movss  %xmm0,0x8(%rax)
  movss  0x260(%rsp),%xmm0
  mov    0x70(%rsp),%rax
  movss  %xmm0,(%rax)
  movss  0x264(%rsp),%xmm0
  movss  %xmm0,0x4(%rax)
  movss  0x268(%rsp),%xmm0
  movss  %xmm0,0x8(%rax)
  movss  0x270(%rsp),%xmm0
  mov    0x78(%rsp),%rax
  movss  %xmm0,(%rax)
  movss  0x274(%rsp),%xmm0
  movss  %xmm0,0x4(%rax)
  movss  0x278(%rsp),%xmm0
  movss  %xmm0,0x8(%rax)
  movss  0x280(%rsp),%xmm0
  mov    0x80(%rsp),%rax
  movss  %xmm0,(%rax)
  movss  0x284(%rsp),%xmm0
  movss  %xmm0,0x4(%rax)
  movss  0x288(%rsp),%xmm0
  movss  %xmm0,0x8(%rax)
  mov    0x298(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L11
  add    $0x2a8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L11:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: label: D8
type: f32

tool: D8: 1

assistant: ```c
void npt_move_vertex(float p1[3], float p2[3], float p3[3], float cp_side1_1[3], float cp_side1_2[3], float cp_side2_1[3], float cp_side2_2[3], float cp_side3_1[3], float cp_side3_2[3], float cp_center[3], float p1_n[3], float p2_n[3], float p3_n[3], float cp_side1_1_n[3], float cp_side1_2_n[3], float cp_side2_1_n[3], float cp_side2_2_n[3], float cp_side3_1_n[3], float cp_side3_2_n[3], float cp_center_n[3]) {
  float len12, vec13[3];
  float x_axis[3], y_axis[3], z_axis[3];
  float x_axis_n[3], y_axis_n[3], z_axis_n[3];
  int i;
  CalcLineVec(p1, p2, x_axis, &len12);
  CalcVec(p1, p3, vec13);
  CalcOutProduct(x_axis, vec13, z_axis);
  CalcNormalize(z_axis);
  CalcOutProduct(z_axis, x_axis, y_axis);
  CalcLineVec(p1_n, p2_n, x_axis_n, &len12);
  CalcVec(p1_n, p3_n, vec13);
  CalcOutProduct(x_axis_n, vec13, z_axis_n);
  CalcNormalize(z_axis_n);
  CalcOutProduct(z_axis_n, x_axis_n, y_axis_n);
  float change_mat[4][4];
  float change_mat_n[4][4];
  float change_mat_all[4][4];
  Calc_3dMat4TranAxis(p1, x_axis, y_axis, z_axis, change_mat);
  Calc_3dMat4TranAxisInv(p1_n, x_axis_n, y_axis_n, z_axis_n, change_mat_n);
  Calc_3dMat4Multi44(change_mat, change_mat_n, change_mat_all);
  float pnts_in[7][4], pnts_out[7][4];
  pnts_in[0][0] = cp_side1_1[0];
  pnts_in[0][1] = cp_side1_1[1];
  pnts_in[0][2] = cp_side1_1[2];
  pnts_in[0][3] = 1.0;
  pnts_in[1][0] = cp_side1_2[0];
  pnts_in[1][1] = cp_side1_2[1];
  pnts_in[1][2] = cp_side1_2[2];
  pnts_in[1][3] = 1.0;
  pnts_in[2][0] = cp_side2_1[0];
  pnts_in[2][1] = cp_side2_1[1];
  pnts_in[2][2] = cp_side2_1[2];
  pnts_in[2][3] = 1.0;
  pnts_in[3][0] = cp_side2_2[0];
  pnts_in[3][1] = cp_side2_2[1];
  pnts_in[3][2] = cp_side2_2[2];
  pnts_in[3][3] = 1.0;
  pnts_in[4][0] = cp_side3_1[0];
  pnts_in[4][1] = cp_side3_1[1];
  pnts_in[4][2] = cp_side3_1[2];
  pnts_in[4][3] = 1.0;
  pnts_in[5][0] = cp_side3_2[0];
  pnts_in[5][1] = cp_side3_2[1];
  pnts_in[5][2] = cp_side3_2[2];
  pnts_in[5][3] = 1.0;
  pnts_in[6][0] = cp_center[0];
  pnts_in[6][1] = cp_center[1];
  pnts_in[6][2] = cp_center[2];
  pnts_in[6][3] = 1.0;
  for (i = 0; i < 7; i++) {
    Calc_3dMat4Multi14(pnts_in[i], change_mat_all, pnts_out[i]);
  }
  cp_side1_1_n[0] = pnts_out[0][0];
  cp_side1_1_n[1] = pnts_out[0][1];
  cp_side1_1_n[2] = pnts_out[0][2];
  cp_side1_2_n[0] = pnts_out[1][0];
  cp_side1_2_n[1] = pnts_out[1][1];
  cp_side1_2_n[2] = pnts_out[1][2];
  cp_side2_1_n[0] = pnts_out[2][0];
  cp_side2_1_n[1] = pnts_out[2][1];
  cp_side2_1_n[2] = pnts_out[2][2];
  cp_side2_2_n[0] = pnts_out[3][0];
  cp_side2_2_n[1] = pnts_out[3][1];
  cp_side2_2_n[2] = pnts_out[3][2];
  cp_side3_1_n[0] = pnts_out[4][0];
  cp_side3_1_n[1] = pnts_out[4][1];
  cp_side3_1_n[2] = pnts_out[4][2];
  cp_side3_2_n[0] = pnts_out[5][0];
  cp_side3_2_n[1] = pnts_out[5][1];
  cp_side3_2_n[2] = pnts_out[5][2];
  cp_center_n[0] = pnts_out[6][0];
  cp_center_n[1] = pnts_out[6][1];
  cp_center_n[2] = pnts_out[6][2];
}
```