user: Please show me the C implementation that matches the assembly code listed below:

```asm
<ls_cost_nm5_f0>:
  endbr64
  mov    %rdi,%rdx
  mov    %rsi,%rax
  mov    (%rdi),%rcx
  pxor   %xmm0,%xmm0
  test   %rcx,%rcx
  je     L1172
  movsd  (%rcx),%xmm0
L1172:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L477
  movsd  %xmm0,(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1182
  movsd  0x8(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L511:
  movsd  %xmm0,0x8(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1104
  movsd  0x10(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L1166:
  movsd  %xmm0,0x10(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L99
  movsd  0x18(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L1074:
  movsd  %xmm0,0x18(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L59
  movsd  0x20(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L1268:
  movsd  %xmm0,0x20(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L951
  movsd  0x28(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L272:
  movsd  %xmm0,0x28(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1002
  movsd  0x30(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L430:
  movsd  %xmm0,0x30(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L989
  movsd  0x38(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L1133:
  movsd  %xmm0,0x38(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L673
  movsd  0x40(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L912:
  movsd  %xmm0,0x40(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L58
  movsd  0x48(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L680:
  movsd  %xmm0,0x48(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L21
  movsd  0x50(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L1102:
  movsd  %xmm0,0x50(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L355
  movsd  0x58(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L1010:
  movsd  %xmm0,0x58(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1142
  movsd  0x60(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L726:
  movsd  %xmm0,0x60(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L184
  movsd  0x68(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L840:
  movsd  %xmm0,0x68(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1249
  movsd  0x70(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L915:
  movsd  %xmm0,0x70(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1173
  movsd  0x78(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L830:
  movsd  %xmm0,0x78(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1021
  movsd  0x80(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L1180:
  movsd  %xmm0,0x80(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L357
  movsd  0x88(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L856:
  movsd  %xmm0,0x88(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L351
  movsd  0x90(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L930:
  movsd  %xmm0,0x90(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L872
  movsd  0x98(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L25:
  movsd  %xmm0,0x98(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L928
  movsd  0xa0(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L929:
  movsd  %xmm0,0xa0(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L1022
  movsd  0xa8(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L601:
  movsd  %xmm0,0xa8(%rcx)
  mov    (%rdx),%rcx
  test   %rcx,%rcx
  je     L820
  movsd  0xb0(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L927
L906:
  movsd  %xmm0,0xb0(%rcx)
  mov    (%rdx),%rcx
  pxor   %xmm0,%xmm0
  test   %rcx,%rcx
  je     L973
L400:
  movsd  0xb8(%rcx),%xmm0
L973:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L589
  movsd  %xmm0,0xb8(%rcx)
  mov    0x8(%rdx),%rcx
  test   %rcx,%rcx
  je     L123
  movsd  (%rcx),%xmm0
  mov    (%rax),%rsi
  test   %rsi,%rsi
  je     L1078
L1215:
  movsd  %xmm0,0xc0(%rsi)
  mov    0x8(%rdx),%rcx
  test   %rcx,%rcx
  je     L1251
L1078:
  movsd  0x8(%rcx),%xmm0
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1332
L31:
  movsd  %xmm0,0xc8(%rcx)
  mov    0x8(%rdx),%rdx
  pxor   %xmm0,%xmm0
  test   %rdx,%rdx
  je     L955
L1222:
  movsd  0x10(%rdx),%xmm0
L955:
  mov    (%rax),%rdx
  test   %rdx,%rdx
  je     L1187
  movsd  %xmm0,0xd0(%rdx)
L1187:
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    D3(%rip),%rdi
  mov    %rdi,(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x8(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x10(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x18(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x20(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x28(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x30(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x38(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x40(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x48(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x50(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x58(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x60(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x68(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x70(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x78(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x80(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x88(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x90(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0x98(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0xa0(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0xa8(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0xb0(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0xb8(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0xc0(%rdx)
  mov    0x8(%rax),%rdx
  test   %rdx,%rdx
  je     L1136
  mov    %rdi,0xc8(%rdx)
  mov    0x8(%rax),%rax
  test   %rax,%rax
  je     L1136
  mov    %rdi,0xd0(%rax)
L1136:
  mov    $0x0,%eax
  ret
L1182:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1104
  pxor   %xmm0,%xmm0
  jmp    L511
L1104:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L99
  pxor   %xmm0,%xmm0
  jmp    L1166
L99:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L59
  pxor   %xmm0,%xmm0
  jmp    L1074
L59:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L951
  pxor   %xmm0,%xmm0
  jmp    L1268
L951:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1002
  pxor   %xmm0,%xmm0
  jmp    L272
L1002:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L989
  pxor   %xmm0,%xmm0
  jmp    L430
L989:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L673
  pxor   %xmm0,%xmm0
  jmp    L1133
L673:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L58
  pxor   %xmm0,%xmm0
  jmp    L912
L58:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L21
  pxor   %xmm0,%xmm0
  jmp    L680
L21:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L355
  pxor   %xmm0,%xmm0
  jmp    L1102
L355:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1142
  pxor   %xmm0,%xmm0
  jmp    L1010
L1142:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L184
  pxor   %xmm0,%xmm0
  jmp    L726
L184:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1249
  pxor   %xmm0,%xmm0
  jmp    L840
L1249:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1173
  pxor   %xmm0,%xmm0
  jmp    L915
L1173:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1021
  pxor   %xmm0,%xmm0
  jmp    L830
L1021:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L357
  pxor   %xmm0,%xmm0
  jmp    L1180
L357:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L351
  pxor   %xmm0,%xmm0
  jmp    L856
L351:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L872
  pxor   %xmm0,%xmm0
  jmp    L930
L872:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L928
  pxor   %xmm0,%xmm0
  jmp    L25
L928:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L1022
  pxor   %xmm0,%xmm0
  jmp    L929
L1022:
  mov    (%rax),%rcx
  test   %rcx,%rcx
  je     L820
  pxor   %xmm0,%xmm0
  jmp    L601
L820:
  mov    (%rax),%rcx
  pxor   %xmm0,%xmm0
  test   %rcx,%rcx
  jne    L906
  jmp    L973
L1332:
  mov    0x8(%rdx),%rdx
  test   %rdx,%rdx
  jne    L1222
  jmp    L1187
L1251:
  mov    (%rax),%rcx
  pxor   %xmm0,%xmm0
  test   %rcx,%rcx
  jne    L31
  jmp    L1187
L589:
  mov    0x8(%rdx),%rcx
  test   %rcx,%rcx
  jne    L1078
L123:
  mov    (%rax),%rsi
  test   %rsi,%rsi
  je     L1251
  pxor   %xmm0,%xmm0
  jmp    L1215
L477:
  cmpq   $0x0,(%rdx)
  je     L1182
L927:
  mov    (%rdx),%rcx
  jmp    L400
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D3
type_infered: f64

tool: D3: 1

assistant: ```c
int ls_cost_nm5_f0(const double **arg, double **res, int *iw, double *w, int mem) {
  double a0 = arg[0] ? arg[0][0] : 0;
  if (res[0] != 0)
    res[0][0] = a0;
  a0 = arg[0] ? arg[0][1] : 0;
  if (res[0] != 0)
    res[0][1] = a0;
  a0 = arg[0] ? arg[0][2] : 0;
  if (res[0] != 0)
    res[0][2] = a0;
  a0 = arg[0] ? arg[0][3] : 0;
  if (res[0] != 0)
    res[0][3] = a0;
  a0 = arg[0] ? arg[0][4] : 0;
  if (res[0] != 0)
    res[0][4] = a0;
  a0 = arg[0] ? arg[0][5] : 0;
  if (res[0] != 0)
    res[0][5] = a0;
  a0 = arg[0] ? arg[0][6] : 0;
  if (res[0] != 0)
    res[0][6] = a0;
  a0 = arg[0] ? arg[0][7] : 0;
  if (res[0] != 0)
    res[0][7] = a0;
  a0 = arg[0] ? arg[0][8] : 0;
  if (res[0] != 0)
    res[0][8] = a0;
  a0 = arg[0] ? arg[0][9] : 0;
  if (res[0] != 0)
    res[0][9] = a0;
  a0 = arg[0] ? arg[0][10] : 0;
  if (res[0] != 0)
    res[0][10] = a0;
  a0 = arg[0] ? arg[0][11] : 0;
  if (res[0] != 0)
    res[0][11] = a0;
  a0 = arg[0] ? arg[0][12] : 0;
  if (res[0] != 0)
    res[0][12] = a0;
  a0 = arg[0] ? arg[0][13] : 0;
  if (res[0] != 0)
    res[0][13] = a0;
  a0 = arg[0] ? arg[0][14] : 0;
  if (res[0] != 0)
    res[0][14] = a0;
  a0 = arg[0] ? arg[0][15] : 0;
  if (res[0] != 0)
    res[0][15] = a0;
  a0 = arg[0] ? arg[0][16] : 0;
  if (res[0] != 0)
    res[0][16] = a0;
  a0 = arg[0] ? arg[0][17] : 0;
  if (res[0] != 0)
    res[0][17] = a0;
  a0 = arg[0] ? arg[0][18] : 0;
  if (res[0] != 0)
    res[0][18] = a0;
  a0 = arg[0] ? arg[0][19] : 0;
  if (res[0] != 0)
    res[0][19] = a0;
  a0 = arg[0] ? arg[0][20] : 0;
  if (res[0] != 0)
    res[0][20] = a0;
  a0 = arg[0] ? arg[0][21] : 0;
  if (res[0] != 0)
    res[0][21] = a0;
  a0 = arg[0] ? arg[0][22] : 0;
  if (res[0] != 0)
    res[0][22] = a0;
  a0 = arg[0] ? arg[0][23] : 0;
  if (res[0] != 0)
    res[0][23] = a0;
  a0 = arg[1] ? arg[1][0] : 0;
  if (res[0] != 0)
    res[0][24] = a0;
  a0 = arg[1] ? arg[1][1] : 0;
  if (res[0] != 0)
    res[0][25] = a0;
  a0 = arg[1] ? arg[1][2] : 0;
  if (res[0] != 0)
    res[0][26] = a0;
  a0 = 1.;
  if (res[1] != 0)
    res[1][0] = a0;
  if (res[1] != 0)
    res[1][1] = a0;
  if (res[1] != 0)
    res[1][2] = a0;
  if (res[1] != 0)
    res[1][3] = a0;
  if (res[1] != 0)
    res[1][4] = a0;
  if (res[1] != 0)
    res[1][5] = a0;
  if (res[1] != 0)
    res[1][6] = a0;
  if (res[1] != 0)
    res[1][7] = a0;
  if (res[1] != 0)
    res[1][8] = a0;
  if (res[1] != 0)
    res[1][9] = a0;
  if (res[1] != 0)
    res[1][10] = a0;
  if (res[1] != 0)
    res[1][11] = a0;
  if (res[1] != 0)
    res[1][12] = a0;
  if (res[1] != 0)
    res[1][13] = a0;
  if (res[1] != 0)
    res[1][14] = a0;
  if (res[1] != 0)
    res[1][15] = a0;
  if (res[1] != 0)
    res[1][16] = a0;
  if (res[1] != 0)
    res[1][17] = a0;
  if (res[1] != 0)
    res[1][18] = a0;
  if (res[1] != 0)
    res[1][19] = a0;
  if (res[1] != 0)
    res[1][20] = a0;
  if (res[1] != 0)
    res[1][21] = a0;
  if (res[1] != 0)
    res[1][22] = a0;
  if (res[1] != 0)
    res[1][23] = a0;
  if (res[1] != 0)
    res[1][24] = a0;
  if (res[1] != 0)
    res[1][25] = a0;
  if (res[1] != 0)
    res[1][26] = a0;
  return 0;
}
```