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

```asm
<tautString_TV1>:
  endbr64
  movsd  (%rdi),%xmm4
  movapd %xmm0,%xmm6
  movapd %xmm0,%xmm8
  movq   D13(%rip),%xmm12
  addsd  %xmm0,%xmm8
  movapd %xmm4,%xmm2
  movapd %xmm4,%xmm3
  xorpd  %xmm12,%xmm6
  subsd  %xmm0,%xmm2
  addsd  %xmm0,%xmm3
  test   %edx,%edx
  jle    L192
  pxor   %xmm10,%xmm10
  push   %rbp
  mov    %rdi,%r10
  movapd %xmm0,%xmm5
  movsd  D22(%rip),%xmm9
  push   %rbx
  lea    -0x1(%rdx),%r11d
  mov    %edx,%ebx
  movsd  D5(%rip),%xmm11
  xor    %eax,%eax
  xor    %ecx,%ecx
  xor    %edx,%edx
  mov    $0xffffffff,%edi
  movapd %xmm10,%xmm1
  movapd %xmm10,%xmm0
  lea    0x8(%rsi),%rbp
  nopl   0x0(%rax,%rax,1)
L256:
  lea    0x1(%rdi),%r8d
  cmp    %r11d,%eax
  jl     L162
  jmp    L231
  nopw   0x0(%rax,%rax,1)
L206:
  movapd %xmm3,%xmm7
  subsd  %xmm4,%xmm7
  addsd  %xmm7,%xmm1
  comisd %xmm1,%xmm6
  ja     L184
  comisd %xmm5,%xmm1
  jb     L64
  mov    %eax,%ecx
  movapd %xmm5,%xmm4
  pxor   %xmm7,%xmm7
  sub    %edi,%ecx
  subsd  %xmm1,%xmm4
  cvtsi2sd %ecx,%xmm7
  mov    %eax,%ecx
  movapd %xmm4,%xmm1
  divsd  %xmm7,%xmm1
  addsd  %xmm1,%xmm3
  movapd %xmm5,%xmm1
L64:
  comisd %xmm0,%xmm6
  jb     L127
  mov    %eax,%edx
  movapd %xmm6,%xmm4
  pxor   %xmm7,%xmm7
  sub    %edi,%edx
  subsd  %xmm0,%xmm4
  cvtsi2sd %edx,%xmm7
  mov    %eax,%edx
  movapd %xmm4,%xmm0
  divsd  %xmm7,%xmm0
  addsd  %xmm0,%xmm2
  movapd %xmm6,%xmm0
L127:
  add    $0x1,%eax
L156:
  movslq %eax,%r9
  movsd  (%r10,%r9,8),%xmm4
  cmp    %r11d,%eax
  jge    L231
L162:
  movapd %xmm2,%xmm7
  lea    0x1(%rdi),%r8d
  subsd  %xmm4,%xmm7
  addsd  %xmm7,%xmm0
  comisd %xmm5,%xmm0
  jbe    L206
  lea    0x1(%rdx),%ecx
  movslq %r8d,%rax
  cmp    %r8d,%edx
  jl     L79
  nopl   0x0(%rax)
L186:
  movsd  %xmm2,(%rsi,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%edx
  jge    L186
L79:
  movslq %ecx,%rax
  movapd %xmm8,%xmm3
  mov    %edx,%edi
  mov    %ecx,%r8d
  movsd  (%r10,%rax,8),%xmm2
  lea    0x2(%rdx),%eax
  movapd %xmm5,%xmm1
  mov    %ecx,%edx
  movslq %eax,%r9
  movapd %xmm6,%xmm0
  addsd  %xmm2,%xmm3
  movsd  (%r10,%r9,8),%xmm4
  cmp    %r11d,%eax
  jl     L162
  nop
L231:
  movapd %xmm2,%xmm7
  subsd  %xmm4,%xmm7
  addsd  %xmm7,%xmm0
  comisd %xmm9,%xmm0
  ja     L160
  movapd %xmm3,%xmm7
  subsd  %xmm4,%xmm7
  addsd  %xmm7,%xmm1
  comisd %xmm1,%xmm11
  ja     L247
  comisd %xmm0,%xmm10
  jb     L252
  mov    %eax,%r9d
  pxor   %xmm7,%xmm7
  movapd %xmm0,%xmm4
  sub    %edi,%r9d
  xorpd  %xmm12,%xmm4
  cvtsi2sd %r9d,%xmm7
  divsd  %xmm7,%xmm4
  addsd  %xmm4,%xmm2
L252:
  add    $0x1,%eax
L233:
  cmp    %ebx,%eax
  jge    L250
L5:
  movslq %eax,%r8
  movsd  (%r10,%r8,8),%xmm4
  jmp    L256
  xchg   %ax,%ax
L184:
  lea    0x1(%rcx),%edx
  movslq %r8d,%rax
  cmp    %r8d,%ecx
  jl     L154
  nopl   0x0(%rax,%rax,1)
L6:
  movsd  %xmm3,(%rsi,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%ecx
  jge    L6
L154:
  movslq %edx,%rax
  mov    %ecx,%edi
  movapd %xmm5,%xmm1
  mov    %edx,%r8d
  movsd  (%r10,%rax,8),%xmm3
  movapd %xmm6,%xmm0
  lea    0x2(%rcx),%eax
  mov    %edx,%ecx
  movapd %xmm3,%xmm2
  subsd  %xmm8,%xmm2
  jmp    L156
  cs nopw 0x0(%rax,%rax,1)
L160:
  lea    0x1(%rdx),%ecx
  cmp    %r8d,%edx
  jl     L179
  mov    %edx,%edi
  movslq %r8d,%r9
  sub    %r8d,%edi
  lea    (%rsi,%r9,8),%rax
  add    %r9,%rdi
  lea    0x0(%rbp,%rdi,8),%rdi
  nopl   0x0(%rax)
L128:
  movsd  %xmm2,(%rax)
  add    $0x8,%rax
  cmp    %rax,%rdi
  jne    L128
L179:
  movslq %ecx,%rax
  movapd %xmm8,%xmm3
  mov    %edx,%edi
  mov    %ecx,%r8d
  movsd  (%r10,%rax,8),%xmm2
  mov    %ecx,%eax
  mov    %ecx,%edx
  movapd %xmm6,%xmm1
  movapd %xmm6,%xmm0
  addsd  %xmm2,%xmm3
  cmp    %ebx,%eax
  jl     L5
L250:
  cmp    %r8d,%ebx
  jle    L180
  movslq %r8d,%rax
  sub    %r8d,%r11d
  lea    (%rsi,%rax,8),%rdx
  add    %r11,%rax
  lea    0x8(%rsi,%rax,8),%rax
  nop
L183:
  movsd  %xmm2,(%rdx)
  add    $0x8,%rdx
  cmp    %rdx,%rax
  jne    L183
L180:
  mov    $0x1,%eax
  pop    %rbx
  pop    %rbp
  ret
  nopl   (%rax)
L247:
  lea    0x1(%rcx),%edx
  cmp    %r8d,%ecx
  jl     L178
  mov    %ecx,%edi
  movslq %r8d,%r9
  sub    %r8d,%edi
  lea    (%rsi,%r9,8),%rax
  add    %r9,%rdi
  lea    0x0(%rbp,%rdi,8),%rdi
  nopl   0x0(%rax)
L18:
  movsd  %xmm3,(%rax)
  add    $0x8,%rax
  cmp    %rax,%rdi
  jne    L18
L178:
  movslq %edx,%rax
  mov    %ecx,%edi
  mov    %edx,%r8d
  mov    %edx,%ecx
  movsd  (%r10,%rax,8),%xmm3
  movapd %xmm5,%xmm1
  mov    %edx,%eax
  movapd %xmm5,%xmm0
  movapd %xmm3,%xmm2
  subsd  %xmm8,%xmm2
  jmp    L233
L192:
  mov    $0x1,%eax
  ret
```

tool_calls: name: read_data
arguments: data_tag: D13
type: byte[8]
name: read_data
arguments: data_tag: D22
type: byte[8]
name: read_data
arguments: data_tag: D5
type: byte[8]

tool: {"D13": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

tool: {"D22": [0xbb,0xbd,0xd7,0xd9,0xdf,0x7c,0xdb,0x3d]}

tool: {"D5": [0xbb,0xbd,0xd7,0xd9,0xdf,0x7c,0xdb,0xbd]}

assistant: ```c
int tautString_TV1(double *y, double lambda, double *x, int n) {
  double mn, mx;
  double mnHeight, mxHeight;
  int mnBreak, mxBreak;
  int lastBreak;
  int i, j;
  const double minuslambda = -lambda;
  const double lambda2 = 2 * lambda;
  const double minuslambda2 = 2 * minuslambda;
  mnHeight = mxHeight = 0;
  mn = minuslambda + y[0];
  mx = lambda + y[0];
  lastBreak = -1;
  mnBreak = mxBreak = 0;
  i = 0;
  while (i < n) {
    while (i < n - 1) {
      mnHeight += mn - y[i];
      if (lambda < mnHeight) {
        i = mnBreak + 1;
        for (j = lastBreak + 1; j <= mnBreak; j++)
          x[j] = mn;
        lastBreak = mnBreak;
        mn = y[i];
        mx = lambda2 + y[i];
        mxHeight = lambda;
        mnHeight = minuslambda;
        mnBreak = mxBreak = i;
        i++;
        continue;
      }
      mxHeight += mx - y[i];
      if (minuslambda > mxHeight) {
        i = mxBreak + 1;
        for (j = lastBreak + 1; j <= mxBreak; j++)
          x[j] = mx;
        lastBreak = mxBreak;
        mx = y[i];
        mn = minuslambda2 + y[i];
        mxHeight = lambda;
        mnHeight = minuslambda;
        mnBreak = mxBreak = i;
        i++;
        continue;
      }
      if (mxHeight >= lambda) {
        mx += (lambda - mxHeight) / (i - lastBreak);
        mxHeight = lambda;
        mxBreak = i;
      }
      if (mnHeight <= minuslambda) {
        mn += (minuslambda - mnHeight) / (i - lastBreak);
        mnHeight = minuslambda;
        mnBreak = i;
      }
      i++;
    }
    mnHeight += mn - y[i];
    if ((mnHeight > 1e-10)) {
      i = mnBreak + 1;
      for (j = lastBreak + 1; j <= mnBreak; j++)
        x[j] = mn;
      lastBreak = mnBreak;
      mn = y[i];
      mx = lambda2 + y[i];
      mxHeight = mnHeight = minuslambda;
      mnBreak = mxBreak = i;
      continue;
    }
    mxHeight += mx - y[i];
    if ((mxHeight < -1e-10)) {
      i = mxBreak + 1;
      for (j = lastBreak + 1; j <= mxBreak; j++)
        x[j] = mx;
      lastBreak = mxBreak;
      mx = y[i];
      mn = minuslambda2 + y[i];
      mxHeight = mnHeight = lambda;
      mnBreak = mxBreak = i;
      continue;
    }
    if (mnHeight <= 0) {
      mn += (-mnHeight) / (i - lastBreak);
    }
    i++;
  }
  for (i = lastBreak + 1; i < n; i++)
    x[i] = mn;
  return 1;
}
```