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

```asm
<test_basic_mtx_op>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x270,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x268(%rsp)
  xor    %eax,%eax
  mov    D304(%rip),%rax
  mov    %rax,(%rsp)
  mov    D55(%rip),%rax
  mov    %rax,0x8(%rsp)
  mov    D248(%rip),%rax
  mov    %rax,0x10(%rsp)
  mov    D345(%rip),%rax
  mov    %rax,0x18(%rsp)
  mov    D283(%rip),%rax
  mov    %rax,0x20(%rsp)
  mov    D6(%rip),%rax
  mov    %rax,0x28(%rsp)
  mov    D140(%rip),%rax
  mov    %rax,0x30(%rsp)
  mov    D38(%rip),%rax
  mov    %rax,0x38(%rsp)
  mov    D21(%rip),%rax
  mov    %rax,0x40(%rsp)
  mov    D320(%rip),%rax
  mov    %rax,0x140(%rsp)
  mov    D253(%rip),%rax
  mov    %rax,0x148(%rsp)
  mov    D8(%rip),%rax
  mov    %rax,0x150(%rsp)
  mov    D334(%rip),%rax
  mov    %rax,0x158(%rsp)
  mov    D351(%rip),%rax
  mov    %rax,0x160(%rsp)
  mov    D157(%rip),%rax
  mov    %rax,0x168(%rsp)
  mov    D90(%rip),%rax
  mov    %rax,0x170(%rsp)
  mov    D46(%rip),%rax
  mov    %rax,0x178(%rsp)
  mov    D318(%rip),%rax
  mov    %rax,0x180(%rsp)
  mov    D206(%rip),%rax
  mov    %rax,0x188(%rsp)
  mov    D256(%rip),%rax
  mov    %rax,0x190(%rsp)
  mov    D231(%rip),%rax
  mov    %rax,0x198(%rsp)
  mov    D96(%rip),%rax
  mov    %rax,0x50(%rsp)
  movsd  D271(%rip),%xmm0
  movsd  %xmm0,0x58(%rsp)
  movsd  D20(%rip),%xmm1
  movsd  %xmm1,0x60(%rsp)
  movsd  %xmm0,0x68(%rsp)
  mov    D315(%rip),%rax
  mov    %rax,0x70(%rsp)
  movsd  D306(%rip),%xmm0
  movsd  %xmm0,0x78(%rsp)
  movsd  %xmm1,0x80(%rsp)
  movsd  %xmm0,0x88(%rsp)
  mov    D88(%rip),%rax
  mov    %rax,0x90(%rsp)
  lea    D132(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%r12
  mov    $0x3,%edx
  mov    $0x3,%esi
  mov    %r12,%rdi
  call   <show_matrix@plt>
  lea    D338(%rip),%rdi
  call   <printf@plt>
  lea    0x140(%rsp),%rbx
  mov    $0x4,%edx
  mov    $0x3,%esi
  mov    %rbx,%rdi
  call   <show_matrix@plt>
  lea    D73(%rip),%rdi
  call   <printf@plt>
  lea    0x1a0(%rsp),%rbp
  mov    $0x4,%r9d
  mov    $0x3,%r8d
  mov    $0x3,%ecx
  mov    %rbp,%rdx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <mtx_mult@plt>
  mov    $0x4,%edx
  mov    $0x3,%esi
  mov    %rbp,%rdi
  call   <show_matrix@plt>
  lea    D242(%rip),%rdi
  call   <printf@plt>
  lea    0x200(%rsp),%rbp
  mov    $0x4,%ecx
  mov    $0x3,%edx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <mtx_transpose@plt>
  mov    $0x3,%edx
  mov    $0x4,%esi
  mov    %rbp,%rdi
  call   <show_matrix@plt>
  lea    D249(%rip),%rdi
  call   <printf@plt>
  lea    0x50(%rsp),%rbx
  mov    $0x3,%edx
  mov    $0x3,%esi
  mov    %rbx,%rdi
  call   <show_matrix@plt>
  lea    D260(%rip),%rdi
  call   <printf@plt>
  lea    0xa0(%rsp),%rbp
  mov    $0x3,%edx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <mtx_chol@plt>
  mov    $0x3,%edx
  mov    $0x3,%esi
  mov    %rbp,%rdi
  call   <show_matrix@plt>
  lea    D254(%rip),%rdi
  call   <printf@plt>
  lea    0xf0(%rsp),%r12
  mov    $0x3,%ecx
  mov    $0x3,%edx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <mtx_transpose@plt>
  mov    $0x3,%r9d
  mov    $0x3,%r8d
  mov    $0x3,%ecx
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <mtx_mult@plt>
  mov    $0x3,%edx
  mov    $0x3,%esi
  mov    %rbx,%rdi
  call   <show_matrix@plt>
  lea    D191(%rip),%rdi
  call   <printf@plt>
  lea    D133(%rip),%rdi
  call   <printf@plt>
  mov    0x268(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L2
  add    $0x270,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L2:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_label: D304
type: f64
name: read_data
arguments: data_label: D55
type: f64
name: read_data
arguments: data_label: D248
type: f64
name: read_data
arguments: data_label: D345
type: f64
name: read_data
arguments: data_label: D283
type: f64
name: read_data
arguments: data_label: D6
type: f64
name: read_data
arguments: data_label: D140
type: f64
name: read_data
arguments: data_label: D38
type: f64
name: read_data
arguments: data_label: D21
type: f64
name: read_data
arguments: data_label: D320
type: f64
name: read_data
arguments: data_label: D253
type: f64
name: read_data
arguments: data_label: D8
type: f64
name: read_data
arguments: data_label: D334
type: f64
name: read_data
arguments: data_label: D351
type: f64
name: read_data
arguments: data_label: D157
type: f64
name: read_data
arguments: data_label: D90
type: f64
name: read_data
arguments: data_label: D46
type: f64
name: read_data
arguments: data_label: D318
type: f64
name: read_data
arguments: data_label: D206
type: f64
name: read_data
arguments: data_label: D256
type: f64
name: read_data
arguments: data_label: D231
type: f64
name: read_data
arguments: data_label: D96
type: f64
name: read_data
arguments: data_label: D271
type: f64
name: read_data
arguments: data_label: D20
type: f64
name: read_data
arguments: data_label: D315
type: f64
name: read_data
arguments: data_label: D306
type: f64
name: read_data
arguments: data_label: D88
type: f64
name: read_data
arguments: data_label: D132
type: string
name: read_data
arguments: data_label: D338
type: string
name: read_data
arguments: data_label: D73
type: string
name: read_data
arguments: data_label: D242
type: string
name: read_data
arguments: data_label: D249
type: string
name: read_data
arguments: data_label: D260
type: string
name: read_data
arguments: data_label: D254
type: string
name: read_data
arguments: data_label: D191
type: string
name: read_data
arguments: data_label: D133
type: string

tool: D304: 0.9572

tool: D55: 0.1419

tool: D248: 0.7922

tool: D345: 0.4854

tool: D283: 0.4218

tool: D6: 0.9595

tool: D140: 0.8003

tool: D38: 0.9157

tool: D21: 0.6557

tool: D320: 0.8147

tool: D253: 0.9134

tool: D8: 0.2785

tool: D334: 0.9649

tool: D351: 0.9058

tool: D157: 0.6324

tool: D90: 0.5469

tool: D46: 0.1576

tool: D318: 0.127

tool: D206: 0.0975

tool: D256: 0.9575

tool: D231: 0.9706

tool: D96: 3.5712

tool: D271: 1.4007

tool: D20: 2.5214

tool: D315: 84.9129

tool: D306: 2.703

tool: D88: 93.3993

tool: D132: Show Matrix A


tool: D338: Show Matrix B


tool: D73: C = A * B


tool: D242: B' = B


tool: D249: Show Symmetric Matrix D


tool: D260: L = chol(D)


tool: D254: D = L*L'


tool: D191: Matrix test results validated using Matlab: 


tool: D133: All good! 05/15, FS


assistant: ```c
void test_basic_mtx_op(void) {
  int dim_i = 3;
  int dim_j = 3;
  int dim_k = 4;
  double matrix_A[9] = {0.9572, 0.1419, 0.7922, 0.4854, 0.4218, 0.9595, 0.8003, 0.9157, 0.6557};
  double matrix_B[12] = {0.8147, 0.9134, 0.2785, 0.9649, 0.9058, 0.6324, 0.5469, 0.1576, 0.1270, 0.0975, 0.9575, 0.9706};
  double matrix_D[9] = {3.5712, 1.4007, 2.5214, 1.4007, 84.9129, 2.7030, 2.5214, 2.7030, 93.3993};
  double matrix_C[12];
  double matrix_B_prime[12];
  double matrix_L[9];
  double matrix_L_prime[9];
  double result = 0.0;
  printf("Show Matrix A\n");
  show_matrix(matrix_A, dim_i, dim_j);
  printf("Show Matrix B\n");
  show_matrix(matrix_B, dim_j, dim_k);
  printf("C = A * B\n");
  mtx_mult(matrix_A, matrix_B, matrix_C, dim_i, dim_j, dim_k);
  show_matrix(matrix_C, dim_i, dim_k);
  printf("B' = B\n");
  mtx_transpose(matrix_B, matrix_B_prime, dim_j, dim_k);
  show_matrix(matrix_B_prime, dim_k, dim_j);
  printf("Show Symmetric Matrix D\n");
  show_matrix(matrix_D, dim_i, dim_j);
  printf("L = chol(D)\n");
  mtx_chol(matrix_D, matrix_L, dim_i);
  show_matrix(matrix_L, dim_i, dim_i);
  printf("D = L*L'\n");
  mtx_transpose(matrix_L, matrix_L_prime, dim_i, dim_i);
  mtx_mult(matrix_L, matrix_L_prime, matrix_D, dim_i, dim_i, dim_i);
  show_matrix(matrix_D, dim_i, dim_i);
  printf("Matrix test results validated using Matlab: \n");
  printf("All good! 05/15, FS\n");
}
```