user: What is the c source code of the assembly code below?

```asm
<pdef>:
  endbr64
  push   %r15
  movapd %xmm0,%xmm3
  pxor   %xmm2,%xmm2
  xor    %eax,%eax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  movsd  0xa8(%rdi),%xmm0
  mov    %rsi,0x8(%rsp)
  comisd %xmm0,%xmm2
  mov    %edx,0x14(%rsp)
  jae    L142
  ucomisd %xmm0,%xmm2
  mov    %rdi,%r13
  ja     L332
  sqrtsd %xmm0,%xmm0
  mov    %rsi,%rax
L151:
  cmpl   $0x1,0x14(%rsp)
  movsd  %xmm0,0xa8(%rax)
  jle    L79
  lea    0x148(%rax),%rbx
  add    $0xa8,%rax
  movq   D6(%rip),%xmm4
  mov    $0x150,%r15d
  mov    %rbx,0x20(%rsp)
  mov    $0x1,%r12d
  mov    $0x2,%ebp
  mov    %rax,0x28(%rsp)
  xchg   %ax,%ax
L155:
  lea    0x0(%rbp,%rbp,4),%r10
  mov    %ebp,0x18(%rsp)
  mov    0x28(%rsp),%r9
  lea    -0x8(%rbx),%rcx
  shl    $0x5,%r10
  mov    0x20(%rsp),%rdx
  mov    $0x1,%eax
  movapd %xmm2,%xmm0
  add    %r13,%r10
  nopw   0x0(%rax,%rax,1)
L369:
  movsd  (%r10,%rax,8),%xmm1
  subsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  andpd  %xmm4,%xmm0
  comisd %xmm3,%xmm0
  jbe    L258
  divsd  (%r9),%xmm1
L277:
  movsd  %xmm1,(%rcx,%rax,8)
  movq   $0x0,-0xa8(%rdx,%rbp,8)
  cmp    %r12,%rax
  je     L125
  lea    0x1(%rax),%esi
  lea    -0x8(%rdx),%rdi
  mov    %eax,%r8d
  cmp    $0x1,%esi
  jle    L134
  mov    %eax,%esi
  cmp    $0x1,%eax
  je     L237
  movupd (%rdx),%xmm1
  movupd (%rbx),%xmm6
  mov    %r8d,%esi
  shr    %esi
  mulpd  %xmm6,%xmm1
  movapd %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  cmp    $0x1,%esi
  je     L46
  movupd 0x10(%rdx),%xmm1
  movupd 0x10(%rbx),%xmm7
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x2,%esi
  je     L46
  movupd 0x20(%rdx),%xmm1
  movupd 0x20(%rbx),%xmm7
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x3,%esi
  je     L46
  movupd 0x30(%rdx),%xmm1
  movupd 0x30(%rbx),%xmm6
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x4,%esi
  je     L46
  movupd 0x40(%rdx),%xmm1
  movupd 0x40(%rbx),%xmm7
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x5,%esi
  je     L46
  movupd 0x50(%rdx),%xmm1
  movupd 0x50(%rbx),%xmm6
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x6,%esi
  je     L46
  movupd 0x60(%rdx),%xmm1
  movupd 0x60(%rbx),%xmm6
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x7,%esi
  je     L46
  movupd 0x70(%rdx),%xmm1
  movupd 0x70(%rbx),%xmm7
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x8,%esi
  je     L46
  movupd 0x80(%rdx),%xmm1
  movupd 0x80(%rbx),%xmm7
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x9,%esi
  je     L46
  movupd 0x90(%rdx),%xmm1
  movupd 0x90(%rbx),%xmm6
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0xa,%esi
  je     L46
  mov    $0xa0,%r11d
  mov    $0xa,%r14d
L228:
  movupd (%rdx,%r11,1),%xmm1
  movupd (%rbx,%r11,1),%xmm6
  add    $0x1,%r14d
  add    $0x10,%r11
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %r14d,%esi
  jne    L228
  nopw   0x0(%rax,%rax,1)
L46:
  mov    %r8d,%esi
  or     $0x1,%esi
  and    $0x1,%r8d
  je     L429
L229:
  movslq %esi,%rsi
  movsd  (%rcx,%rsi,8),%xmm1
  mulsd  (%rdi,%rsi,8),%xmm1
  addsd  %xmm1,%xmm0
L429:
  add    $0x1,%rax
  add    $0xa8,%r9
  add    $0xa0,%rdx
  jmp    L369
  nopl   0x0(%rax)
L258:
  movapd %xmm2,%xmm1
  jmp    L277
  nopl   0x0(%rax)
L125:
  mov    %r12d,%edx
  cmp    $0x2,%rbp
  je     L69
  movupd (%rbx),%xmm0
  mov    %r12d,%eax
  shr    %eax
  mulpd  %xmm0,%xmm0
  movapd %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm1
  cmp    $0x1,%eax
  je     L234
  movupd 0x10(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x2,%eax
  je     L234
  movupd 0x20(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x3,%eax
  je     L234
  movupd 0x30(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x4,%eax
  je     L234
  movupd 0x40(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x5,%eax
  je     L234
  movupd 0x50(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x6,%eax
  je     L234
  movupd 0x60(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x7,%eax
  je     L234
  movupd 0x70(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x8,%eax
  je     L234
  movupd 0x80(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x9,%eax
  je     L234
  movupd 0x90(%rbx),%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0xa,%eax
  je     L234
  xor    %esi,%esi
L89:
  mov    %rsi,%rdi
  add    $0x1,%rsi
  shl    $0x4,%rdi
  movupd 0xa0(%rbx,%rdi,1),%xmm0
  lea    0xa(%rsi),%edi
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %edi,%eax
  ja     L89
L234:
  mov    %edx,%eax
  or     $0x1,%eax
  and    $0x1,%edx
  je     L246
L1:
  cltq
  movsd  (%rcx,%rax,8),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
L246:
  movsd  0x0(%r13,%r15,1),%xmm0
  subsd  %xmm1,%xmm0
  comisd %xmm0,%xmm2
  jae    L123
  ucomisd %xmm0,%xmm2
  ja     L333
  sqrtsd %xmm0,%xmm0
  mov    0x8(%rsp),%rax
  add    $0x1,%rbp
  add    $0xa0,%rbx
  add    $0x1,%r12
  movsd  %xmm0,(%rax,%r15,1)
  add    $0xa8,%r15
  cmp    %ebp,0x14(%rsp)
  jge    L155
L79:
  mov    $0x1,%eax
L142:
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L237:
  movapd %xmm2,%xmm0
  jmp    L229
L69:
  movapd %xmm2,%xmm1
  mov    $0x1,%eax
  jmp    L1
L123:
  movslq 0x18(%rsp),%rax
  movq   $0x0,(%rcx,%rax,8)
  add    $0x38,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L134:
  movapd %xmm2,%xmm0
  jmp    L429
L332:
  movsd  %xmm3,0x18(%rsp)
  call   <sqrt@plt>
  movsd  0x18(%rsp),%xmm3
  mov    0x8(%rsp),%rax
  pxor   %xmm2,%xmm2
  jmp    L151
L333:
  movsd  %xmm3,0x18(%rsp)
  add    $0x1,%rbp
  add    $0xa0,%rbx
  add    $0x1,%r12
  call   <sqrt@plt>
  mov    0x8(%rsp),%rax
  movsd  0x18(%rsp),%xmm3
  pxor   %xmm2,%xmm2
  movq   D6(%rip),%xmm4
  movsd  %xmm0,(%rax,%r15,1)
  add    $0xa8,%r15
  cmp    %ebp,0x14(%rsp)
  jge    L155
  jmp    L79
```

tool_calls: name: disassemble_data
arguments: tag: D6
type_guessed: qword

tool: D6: 9223372036854775807

assistant: ```c
int pdef(double a[][20], double l[][20], int n, double toler) {
  int i, j, k;
  double sum;
  if (a[1][1] <= 0) {
    return 0;
  } else
    l[1][1] = sqrt(a[1][1]);
  for (k = 2; k <= n; k++) {
    for (i = 1; i < k; i++) {
      sum = 0.;
      for (j = 1; j < i; j++)
        sum += l[i][j] * l[k][j];
      if (fabs(a[k][i] - sum) > toler) {
        l[k][i] = (a[k][i] - sum) / l[i][i];
      } else
        l[k][i] = 0.;
      l[i][k] = 0.;
    }
    for (j = 1, sum = 0.; j < k; j++)
      sum += l[k][j] * l[k][j];
    if (a[k][k] - sum <= 0.) {
      l[k][k] = 0.;
      return 0;
    } else
      l[k][k] = sqrt(a[k][k] - sum);
  }
  return 1;
}
```