user: Demonstrate the C code that generates the assembly output below:

```asm
<npt_move_vertex>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x2b0,%rsp
  mov    %rdi,-0x218(%rbp)
  mov    %rsi,-0x220(%rbp)
  mov    %rdx,-0x228(%rbp)
  mov    %rcx,-0x230(%rbp)
  mov    %r8,-0x238(%rbp)
  mov    %r9,-0x240(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x248(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x250(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x258(%rbp)
  mov    0x28(%rbp),%rax
  mov    %rax,-0x260(%rbp)
  mov    0x30(%rbp),%rax
  mov    %rax,-0x268(%rbp)
  mov    0x38(%rbp),%rax
  mov    %rax,-0x270(%rbp)
  mov    0x40(%rbp),%rax
  mov    %rax,-0x278(%rbp)
  mov    0x48(%rbp),%rax
  mov    %rax,-0x280(%rbp)
  mov    0x50(%rbp),%rax
  mov    %rax,-0x288(%rbp)
  mov    0x58(%rbp),%rax
  mov    %rax,-0x290(%rbp)
  mov    0x60(%rbp),%rax
  mov    %rax,-0x298(%rbp)
  mov    0x68(%rbp),%rax
  mov    %rax,-0x2a0(%rbp)
  mov    0x70(%rbp),%rax
  mov    %rax,-0x2a8(%rbp)
  mov    0x78(%rbp),%rax
  mov    %rax,-0x2b0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x20c(%rbp),%rcx
  lea    -0x1f8(%rbp),%rdx
  mov    -0x220(%rbp),%rsi
  mov    -0x218(%rbp),%rax
  mov    %rax,%rdi
  call   <CalcLineVec@plt>
  lea    -0x204(%rbp),%rdx
  mov    -0x228(%rbp),%rcx
  mov    -0x218(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <CalcVec@plt>
  lea    -0x1e0(%rbp),%rdx
  lea    -0x204(%rbp),%rcx
  lea    -0x1f8(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <CalcOutProduct@plt>
  lea    -0x1e0(%rbp),%rax
  mov    %rax,%rdi
  call   <CalcNormalize@plt>
  lea    -0x1ec(%rbp),%rdx
  lea    -0x1f8(%rbp),%rcx
  lea    -0x1e0(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <CalcOutProduct@plt>
  lea    -0x20c(%rbp),%rcx
  lea    -0x1d4(%rbp),%rdx
  mov    -0x270(%rbp),%rsi
  mov    -0x268(%rbp),%rax
  mov    %rax,%rdi
  call   <CalcLineVec@plt>
  lea    -0x204(%rbp),%rdx
  mov    -0x278(%rbp),%rcx
  mov    -0x268(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <CalcVec@plt>
  lea    -0x1bc(%rbp),%rdx
  lea    -0x204(%rbp),%rcx
  lea    -0x1d4(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <CalcOutProduct@plt>
  lea    -0x1bc(%rbp),%rax
  mov    %rax,%rdi
  call   <CalcNormalize@plt>
  lea    -0x1c8(%rbp),%rdx
  lea    -0x1d4(%rbp),%rcx
  lea    -0x1bc(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <CalcOutProduct@plt>
  lea    -0x1b0(%rbp),%rdi
  lea    -0x1e0(%rbp),%rcx
  lea    -0x1ec(%rbp),%rdx
  lea    -0x1f8(%rbp),%rsi
  mov    -0x218(%rbp),%rax
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <Calc_3dMat4TranAxis@plt>
  lea    -0x170(%rbp),%rdi
  lea    -0x1bc(%rbp),%rcx
  lea    -0x1c8(%rbp),%rdx
  lea    -0x1d4(%rbp),%rsi
  mov    -0x268(%rbp),%rax
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <Calc_3dMat4TranAxisInv@plt>
  lea    -0x130(%rbp),%rdx
  lea    -0x170(%rbp),%rcx
  lea    -0x1b0(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <Calc_3dMat4Multi44@plt>
  mov    -0x230(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0xf0(%rbp)
  mov    -0x230(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0xec(%rbp)
  mov    -0x230(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0xe8(%rbp)
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0xe4(%rbp)
  mov    -0x238(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0xe0(%rbp)
  mov    -0x238(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0xdc(%rbp)
  mov    -0x238(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0xd8(%rbp)
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0xd4(%rbp)
  mov    -0x240(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0xd0(%rbp)
  mov    -0x240(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0xcc(%rbp)
  mov    -0x240(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0xc8(%rbp)
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0xc4(%rbp)
  mov    -0x248(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0xc0(%rbp)
  mov    -0x248(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0xbc(%rbp)
  mov    -0x248(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0xb8(%rbp)
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0xb4(%rbp)
  mov    -0x250(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0xb0(%rbp)
  mov    -0x250(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0xac(%rbp)
  mov    -0x250(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0xa8(%rbp)
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0xa4(%rbp)
  mov    -0x258(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0xa0(%rbp)
  mov    -0x258(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x9c(%rbp)
  mov    -0x258(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x98(%rbp)
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0x94(%rbp)
  mov    -0x260(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x90(%rbp)
  mov    -0x260(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x8c(%rbp)
  mov    -0x260(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x88(%rbp)
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0x84(%rbp)
  movl   $0x0,-0x208(%rbp)
  jmp    L4
L23:
  lea    -0x80(%rbp),%rdx
  mov    -0x208(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rax,%rdx
  lea    -0xf0(%rbp),%rcx
  mov    -0x208(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rax,%rcx
  lea    -0x130(%rbp),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <Calc_3dMat4Multi14@plt>
  addl   $0x1,-0x208(%rbp)
L4:
  cmpl   $0x6,-0x208(%rbp)
  jle    L23
  movss  -0x80(%rbp),%xmm0
  mov    -0x280(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x280(%rbp),%rax
  add    $0x4,%rax
  movss  -0x7c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x280(%rbp),%rax
  add    $0x8,%rax
  movss  -0x78(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x70(%rbp),%xmm0
  mov    -0x288(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x288(%rbp),%rax
  add    $0x4,%rax
  movss  -0x6c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x288(%rbp),%rax
  add    $0x8,%rax
  movss  -0x68(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x60(%rbp),%xmm0
  mov    -0x290(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x290(%rbp),%rax
  add    $0x4,%rax
  movss  -0x5c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x290(%rbp),%rax
  add    $0x8,%rax
  movss  -0x58(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x50(%rbp),%xmm0
  mov    -0x298(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x298(%rbp),%rax
  add    $0x4,%rax
  movss  -0x4c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x298(%rbp),%rax
  add    $0x8,%rax
  movss  -0x48(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x40(%rbp),%xmm0
  mov    -0x2a0(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x2a0(%rbp),%rax
  add    $0x4,%rax
  movss  -0x3c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x2a0(%rbp),%rax
  add    $0x8,%rax
  movss  -0x38(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x30(%rbp),%xmm0
  mov    -0x2a8(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x2a8(%rbp),%rax
  add    $0x4,%rax
  movss  -0x2c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x2a8(%rbp),%rax
  add    $0x8,%rax
  movss  -0x28(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x20(%rbp),%xmm0
  mov    -0x2b0(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x2b0(%rbp),%rax
  add    $0x4,%rax
  movss  -0x1c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x2b0(%rbp),%rax
  add    $0x8,%rax
  movss  -0x18(%rbp),%xmm0
  movss  %xmm0,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D38
type: f32

tool: D38: 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];
}
```