user: 请从给定的汇编指令推导出C源代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xe0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  D128(%rip),%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  D72(%rip),%xmm0
  movsd  %xmm0,-0xd8(%rbp)
  movsd  D123(%rip),%xmm0
  movsd  %xmm0,-0xd0(%rbp)
  movsd  D51(%rip),%xmm0
  movsd  %xmm0,-0xc8(%rbp)
  movsd  D114(%rip),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  D59(%rip),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  D128(%rip),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D72(%rip),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  D123(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D51(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D114(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D59(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D23(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D138(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D66(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D150(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D21(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D69(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movq   $0x0,-0xb0(%rbp)
  movq   $0x0,-0xa8(%rbp)
  movq   $0x0,-0xa0(%rbp)
  movq   $0x0,-0x98(%rbp)
  movq   $0x0,-0x90(%rbp)
  movq   $0x0,-0x88(%rbp)
  movq   $0x0,-0x80(%rbp)
  movq   $0x0,-0x78(%rbp)
  lea    -0xb0(%rbp),%rcx
  lea    -0x70(%rbp),%rdx
  lea    -0xe0(%rbp),%rax
  mov    %rcx,%r9
  mov    $0x4,%r8d
  mov    %rdx,%rcx
  mov    $0x3,%edx
  mov    $0x2,%esi
  mov    %rax,%rdi
  call   <MatrixMultply@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L2
  call   <__stack_chk_fail@plt>
L2:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D128
type: byte[8]
name: disassemble_data
arguments: data_tag: D72
type: byte[8]
name: disassemble_data
arguments: data_tag: D123
type: byte[8]
name: disassemble_data
arguments: data_tag: D51
type: byte[8]
name: disassemble_data
arguments: data_tag: D114
type: byte[8]
name: disassemble_data
arguments: data_tag: D59
type: byte[8]
name: disassemble_data
arguments: data_tag: D23
type: byte[8]
name: disassemble_data
arguments: data_tag: D138
type: byte[8]
name: disassemble_data
arguments: data_tag: D66
type: byte[8]
name: disassemble_data
arguments: data_tag: D150
type: byte[8]
name: disassemble_data
arguments: data_tag: D21
type: byte[8]
name: disassemble_data
arguments: data_tag: D69
type: byte[8]

tool: {"D128": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D72": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: {"D123": [0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40]}

tool: {"D51": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40]}

tool: {"D114": [0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x40]}

tool: {"D59": [0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x40]}

tool: {"D23": [0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x40]}

tool: {"D138": [0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40]}

tool: {"D66": [0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x40]}

tool: {"D150": [0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x40]}

tool: {"D21": [0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x40]}

tool: {"D69": [0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x40]}

assistant: ```c
int main() {
  double A[2][3] = {
      1, 2, 3, 4, 5, 6,
  };
  double B[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  double C[2][4] = {{0}};
  MatrixMultply(A, 2, 3, B, 4, C);
  return 0;
}
```