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

```asm
<PredictionCostSpatial>:
  endbr64
  mov    0x4(%rdi),%edx
  movapd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  pxor   %xmm2,%xmm2
  add    0x3fc(%rdi),%edx
  imul   (%rdi),%esi
  pxor   %xmm3,%xmm3
  cvtsi2sd %edx,%xmm0
  mov    0x8(%rdi),%edx
  add    0x3f8(%rdi),%edx
  cvtsi2sd %edx,%xmm3
  mov    0x3f4(%rdi),%edx
  add    0xc(%rdi),%edx
  cvtsi2sd %esi,%xmm2
  mulsd  %xmm1,%xmm0
  addsd  %xmm2,%xmm0
  movsd  D13(%rip),%xmm2
  mulsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm3
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mov    0x3f0(%rdi),%edx
  add    0x10(%rdi),%edx
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  %xmm3,%xmm0
  pxor   %xmm3,%xmm3
  cvtsi2sd %edx,%xmm3
  mov    0x3ec(%rdi),%edx
  add    0x14(%rdi),%edx
  mulsd  %xmm1,%xmm3
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mov    0x3e8(%rdi),%edx
  add    0x18(%rdi),%edx
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  %xmm3,%xmm0
  pxor   %xmm3,%xmm3
  cvtsi2sd %edx,%xmm3
  mov    0x3e4(%rdi),%edx
  add    0x1c(%rdi),%edx
  mulsd  %xmm1,%xmm3
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mov    0x3e0(%rdi),%edx
  add    0x20(%rdi),%edx
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  %xmm3,%xmm0
  pxor   %xmm3,%xmm3
  cvtsi2sd %edx,%xmm3
  mov    0x3dc(%rdi),%edx
  add    0x24(%rdi),%edx
  mulsd  %xmm1,%xmm3
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mov    0x3d8(%rdi),%edx
  add    0x28(%rdi),%edx
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  %xmm3,%xmm0
  pxor   %xmm3,%xmm3
  cvtsi2sd %edx,%xmm3
  mov    0x3d4(%rdi),%edx
  add    0x2c(%rdi),%edx
  mulsd  %xmm1,%xmm3
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mov    0x3d0(%rdi),%edx
  add    0x30(%rdi),%edx
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  %xmm3,%xmm0
  pxor   %xmm3,%xmm3
  cvtsi2sd %edx,%xmm3
  mov    0x3cc(%rdi),%edx
  add    0x34(%rdi),%edx
  mulsd  %xmm1,%xmm3
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mov    0x3c8(%rdi),%edx
  add    0x38(%rdi),%edx
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  %xmm3,%xmm0
  pxor   %xmm3,%xmm3
  cvtsi2sd %edx,%xmm3
  mov    0x3c4(%rdi),%edx
  add    0x3c(%rdi),%edx
  mulsd  %xmm1,%xmm3
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  %xmm3,%xmm0
  mulsd  D7(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D13
type_infered: f64
name: extract_symbolic_data
arguments: label: D7
type_infered: byte[8]

tool: D13: 0.6

tool: {"D7": [0x9a,0x99,0x99,0x99,0x99,0x99,0xb9,0xbf]}

assistant: ```c
float PredictionCostSpatial(const int *counts, int weight_0, double exp_val) {
  const int significant_symbols = 16;
  const double exp_decay_factor = 0.6;
  double bits = weight_0 * counts[0];
  int i;
  for (i = 1; i < significant_symbols; ++i) {
    bits += exp_val * (counts[i] + counts[256 - i]);
    exp_val *= exp_decay_factor;
  }
  return (float)(-0.1 * bits);
}
```