user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  sub    $0x1f8,%rsp
  movsd  D285(%rip),%xmm3
  movsd  D71(%rip),%xmm1
  mov    %fs:0x28,%rax
  mov    %rax,0x1e8(%rsp)
  xor    %eax,%eax
  mov    D357(%rip),%rax
  movsd  D122(%rip),%xmm0
  movsd  %xmm3,0x70(%rsp)
  mov    %rax,0x80(%rsp)
  mov    D157(%rip),%rax
  movsd  %xmm1,0x78(%rsp)
  mov    %rax,0x88(%rsp)
  mov    D338(%rip),%rax
  movsd  %xmm0,0x90(%rsp)
  mov    %rax,0x98(%rsp)
  mov    D205(%rip),%rax
  movsd  %xmm1,0xa8(%rsp)
  mov    %rax,0xa0(%rsp)
  mov    D100(%rip),%rax
  movsd  %xmm0,0xc0(%rsp)
  mov    %rax,0xb0(%rsp)
  mov    D92(%rip),%rax
  mov    %rax,0xb8(%rsp)
  mov    D241(%rip),%rax
  mov    %rax,0xc8(%rsp)
  mov    D249(%rip),%rax
  mov    %rax,0xd0(%rsp)
  mov    D190(%rip),%rax
  mov    %rax,0xd8(%rsp)
  mov    D164(%rip),%rax
  mov    %rax,0xe0(%rsp)
  mov    D131(%rip),%rax
  mov    %rax,0xf0(%rsp)
  mov    D367(%rip),%rax
  movsd  D248(%rip),%xmm2
  movsd  D5(%rip),%xmm0
  mov    %rax,0xf8(%rsp)
  mov    D33(%rip),%rax
  movsd  %xmm2,(%rsp)
  mov    %rax,0x100(%rsp)
  mov    D209(%rip),%rax
  movsd  %xmm0,0x8(%rsp)
  mov    %rax,0x108(%rsp)
  mov    D143(%rip),%rax
  mov    %rax,0x110(%rsp)
  mov    D176(%rip),%rax
  mov    %rax,0x118(%rsp)
  mov    D308(%rip),%rax
  mov    %rax,0x120(%rsp)
  mov    D339(%rip),%rax
  mov    %rax,0x128(%rsp)
  mov    D362(%rip),%rax
  mov    %rax,0x130(%rsp)
  mov    D247(%rip),%rax
  mov    %rax,0x138(%rsp)
  mov    D29(%rip),%rax
  mov    %rax,0x140(%rsp)
  mov    D113(%rip),%rax
  mov    %rax,0x148(%rsp)
  mov    D312(%rip),%rax
  mov    %rax,0x150(%rsp)
  mov    D52(%rip),%rax
  mov    %rax,0x158(%rsp)
  mov    D273(%rip),%rax
  mov    %rax,0x160(%rsp)
  movsd  %xmm1,0x10(%rsp)
  mov    D294(%rip),%rax
  movsd  D160(%rip),%xmm4
  movsd  D219(%rip),%xmm5
  movsd  D320(%rip),%xmm6
  movsd  %xmm1,0x20(%rsp)
  mov    %rax,0x188(%rsp)
  mov    D192(%rip),%rax
  movsd  D307(%rip),%xmm1
  movsd  %xmm3,0x18(%rsp)
  mov    %rax,0x1a8(%rsp)
  mov    D96(%rip),%rax
  movsd  %xmm1,0x28(%rsp)
  mov    %rax,0x1e0(%rsp)
  xor    %eax,%eax
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm2,0x38(%rsp)
  movsd  %xmm4,0x40(%rsp)
  movsd  %xmm0,0x48(%rsp)
  movsd  %xmm3,0x50(%rsp)
  movsd  %xmm5,0x58(%rsp)
  movsd  %xmm1,0x60(%rsp)
  movsd  %xmm5,0x170(%rsp)
  movsd  %xmm4,0x178(%rsp)
  movsd  %xmm5,0x180(%rsp)
  movsd  %xmm6,0x190(%rsp)
  movsd  %xmm2,0x198(%rsp)
  movsd  %xmm1,0x1a0(%rsp)
  movsd  %xmm3,0x1b0(%rsp)
  movsd  %xmm0,0x1b8(%rsp)
  movsd  %xmm2,0x1c0(%rsp)
  movsd  %xmm1,0x1c8(%rsp)
  movsd  %xmm4,0x1d0(%rsp)
  movsd  %xmm0,0x1d8(%rsp)
  call   <testcenter@plt>
  lea    0x70(%rsp),%r8
  mov    $0x3,%ecx
  mov    $0x5,%edx
  mov    %r8,%r9
  mov    $0x3,%esi
  mov    $0x5,%edi
  call   <testcov@plt>
  mov    $0x3,%ecx
  mov    $0x5,%edx
  lea    0xf0(%rsp),%r8
  mov    %r8,%r9
  mov    $0x3,%esi
  mov    $0x5,%edi
  call   <testcov@plt>
  mov    %rsp,%r8
  mov    $0x2,%ecx
  mov    $0x2,%edx
  mov    %r8,%r9
  mov    $0x2,%esi
  mov    $0x2,%edi
  call   <testcov@plt>
  lea    0x20(%rsp),%r8
  mov    $0x3,%ecx
  mov    $0x3,%edx
  mov    %r8,%r9
  mov    $0x3,%esi
  mov    $0x3,%edi
  call   <testcov@plt>
  mov    $0x3,%ecx
  mov    $0x5,%edx
  lea    0x170(%rsp),%r8
  mov    %r8,%r9
  mov    $0x3,%esi
  mov    $0x5,%edi
  call   <testcov@plt>
  mov    0x1e8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L9
  xor    %eax,%eax
  add    $0x1f8,%rsp
  ret
L9:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D285
type_infered: f64
name: unpack_data
arguments: tag: D71
type_infered: f64
name: unpack_data
arguments: tag: D357
type_infered: f64
name: unpack_data
arguments: tag: D122
type_infered: f64
name: unpack_data
arguments: tag: D157
type_infered: f64
name: unpack_data
arguments: tag: D338
type_infered: f64
name: unpack_data
arguments: tag: D205
type_infered: f64
name: unpack_data
arguments: tag: D100
type_infered: f64
name: unpack_data
arguments: tag: D92
type_infered: f64
name: unpack_data
arguments: tag: D241
type_infered: f64
name: unpack_data
arguments: tag: D249
type_infered: f64
name: unpack_data
arguments: tag: D190
type_infered: f64
name: unpack_data
arguments: tag: D164
type_infered: f64
name: unpack_data
arguments: tag: D131
type_infered: f64
name: unpack_data
arguments: tag: D367
type_infered: f64
name: unpack_data
arguments: tag: D248
type_infered: f64
name: unpack_data
arguments: tag: D5
type_infered: f64
name: unpack_data
arguments: tag: D33
type_infered: f64
name: unpack_data
arguments: tag: D209
type_infered: f64
name: unpack_data
arguments: tag: D143
type_infered: f64
name: unpack_data
arguments: tag: D176
type_infered: f64
name: unpack_data
arguments: tag: D308
type_infered: f64
name: unpack_data
arguments: tag: D339
type_infered: f64
name: unpack_data
arguments: tag: D362
type_infered: f64
name: unpack_data
arguments: tag: D247
type_infered: f64
name: unpack_data
arguments: tag: D29
type_infered: f64
name: unpack_data
arguments: tag: D113
type_infered: f64
name: unpack_data
arguments: tag: D312
type_infered: f64
name: unpack_data
arguments: tag: D52
type_infered: f64
name: unpack_data
arguments: tag: D273
type_infered: f64
name: unpack_data
arguments: tag: D294
type_infered: byte[8]
name: unpack_data
arguments: tag: D160
type_infered: byte[8]
name: unpack_data
arguments: tag: D219
type_infered: byte[8]
name: unpack_data
arguments: tag: D320
type_infered: byte[8]
name: unpack_data
arguments: tag: D192
type_infered: byte[8]
name: unpack_data
arguments: tag: D307
type_infered: byte[8]
name: unpack_data
arguments: tag: D96
type_infered: byte[8]

tool: D285: 4

tool: D71: 2

tool: D357: 0.6

tool: D122: 2.1

tool: D157: 4.2

tool: D338: 0.59

tool: D205: 3.9

tool: D100: 0.58

tool: D92: 4.3

tool: D241: 0.62

tool: D249: 4.1

tool: D190: 2.2

tool: D164: 0.63

tool: D131: 64

tool: D367: 580

tool: D248: 3

tool: D5: 7

tool: D33: 29

tool: D209: 66

tool: D143: 570

tool: D176: 33

tool: D308: 68

tool: D339: 590

tool: D362: 37

tool: D247: 69

tool: D29: 660

tool: D113: 46

tool: D312: 73

tool: D52: 600

tool: D273: 55

tool: {"D294": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xc0]}

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

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

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

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

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

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

assistant: ```c
int main(void) {
  double X1[5][3] = {
      {4.0, 2.0, 0.6}, {4.2, 2.1, 0.59}, {3.9, 2.0, 0.58}, {4.3, 2.1, 0.62}, {4.1, 2.2, 0.63},
  };
  double X2[5][3] = {
      {64.0, 580.0, 29.0}, {66.0, 570.0, 33.0}, {68.0, 590.0, 37.0}, {69.0, 660.0, 46.0}, {73.0, 600.0, 55.0},
  };
  double X3[2][2] = {
      {3.0, 7.0},
      {2.0, 4.0},
  };
  double X4[3][3] = {
      {2, 5, 9},
      {3, 8, 7},
      {4, 1, 5},
  };
  double X5[5][3] = {
      {1, 8, 1}, {-4, 9, 3}, {5, 10, 4}, {7, 3, 5}, {8, 7, 6},
  };
  testcenter();
  testcov(5, 3, 5, 3, X1, X1);
  testcov(5, 3, 5, 3, X2, X2);
  testcov(2, 2, 2, 2, X3, X3);
  testcov(3, 3, 3, 3, X4, X4);
  testcov(5, 3, 5, 3, X5, X5);
  return 0;
}
```