user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<jacobi_decompose>:
  endbr64
  push   %r15
  pxor   %xmm5,%xmm5
  mov    %rdi,%r11
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xb8,%rsp
  movsd  0x8(%rdi),%xmm0
  movq   D115(%rip),%xmm1
  movsd  0x10(%rdi),%xmm2
  mov    %rsi,0x20(%rsp)
  andpd  %xmm1,%xmm0
  mov    %rdx,0x18(%rsp)
  maxsd  %xmm5,%xmm0
  andpd  %xmm1,%xmm2
  mov    %fs:0x28,%rax
  mov    %rax,0xa8(%rsp)
  xor    %eax,%eax
  xor    %eax,%eax
  movl   $0x1,0x9c(%rsp)
  comisd %xmm0,%xmm2
  movq   D58(%rip),%xmm2
  pxor   %xmm0,%xmm0
  movups %xmm0,0x10(%rdx)
  movups %xmm2,(%rdx)
  seta   %al
  movups %xmm2,0x20(%rdx)
  add    $0x1,%eax
  movups %xmm0,0x30(%rdx)
  mov    %eax,0x90(%rsp)
  movabs $0x300000002,%rax
  mov    %rax,0x94(%rsp)
  mov    D58(%rip),%rax
  mov    %rax,0x40(%rdx)
  movsd  (%rdi),%xmm0
  movsd  %xmm0,(%rsi)
  ucomisd 0x8(%rdi),%xmm5
  jp     L197
  jne    L197
  ucomisd 0x10(%rdi),%xmm5
  jp     L197
  jne    L197
  movl   $0x0,0x9c(%rsp)
  mov    $0xffffffff,%eax
  mov    %rsi,%rbx
L285:
  movsd  0x20(%r11),%xmm0
  movl   $0x1,0xa0(%rsp)
  movsd  %xmm0,0x8(%rbx)
  ucomisd 0x18(%r11),%xmm5
  jp     L248
  jne    L248
  ucomisd 0x28(%r11),%xmm5
  jp     L248
  jne    L248
  movl   $0x0,0xa0(%rsp)
  sub    $0x1,%eax
L248:
  movsd  0x40(%r11),%xmm0
  movl   $0x1,0xa4(%rsp)
  movsd  %xmm0,0x10(%rbx)
  ucomisd 0x30(%r11),%xmm5
  jp     L234
  jne    L234
  ucomisd 0x38(%r11),%xmm5
  jp     L234
  jne    L234
  movl   $0x0,0xa4(%rsp)
  add    $0x2,%eax
  mov    %eax,0xc(%rsp)
  je     L71
L470:
  movsd  D111(%rip),%xmm7
  movsd  D135(%rip),%xmm6
  fldz
  movq   D44(%rip),%xmm8
  nop
L40:
  movslq 0x90(%rsp),%rax
  movslq 0x94(%rsp),%rdx
  xor    %r10d,%r10d
  mov    $0x18,%ecx
  movsd  0x18(%r11,%rdx,8),%xmm9
  movsd  (%r11,%rax,8),%xmm10
  mov    $0x0,%edx
  mov    %rax,%r15
  andpd  %xmm1,%xmm10
  andpd  %xmm1,%xmm9
  comisd %xmm10,%xmm9
  seta   %r12b
  cmova  %rcx,%rdx
  seta   %r10b
  movzbl %r12b,%r12d
  movslq 0x90(%rsp,%r12,4),%rbp
  lea    (%r11,%rdx,1),%rbx
  mov    %rdx,(%rsp)
  lea    0x0(,%rbp,8),%r14
  mov    %rbp,%r13
  lea    (%rbx,%r14,1),%rcx
  movsd  (%rcx),%xmm0
  ucomisd %xmm5,%xmm0
  jp     L138
  je     L295
L138:
  xor    %esi,%esi
  comisd %xmm10,%xmm9
  mov    0x20(%rsp),%rdi
  movapd %xmm0,%xmm2
  mulsd  %xmm0,%xmm2
  lea    (%rdi,%r14,1),%rdx
  seta   %sil
  movsd  (%rdx),%xmm11
  lea    (%rdi,%rsi,8),%rsi
  movsd  (%rsi),%xmm4
  subsd  %xmm4,%xmm11
  mulsd  %xmm7,%xmm11
  movapd %xmm11,%xmm3
  andpd  %xmm1,%xmm3
  movsd  %xmm3,0x10(%rsp)
  movapd %xmm11,%xmm3
  fldl   0x10(%rsp)
  mulsd  %xmm11,%xmm3
  addsd  %xmm2,%xmm3
  movsd  %xmm3,0x10(%rsp)
  fldl   0x10(%rsp)
  fld    %st(2)
  fucomip %st(1),%st
  ja     L74
  fsqrt
L394:
  faddp  %st,%st(1)
  fstpl  0x10(%rsp)
  movsd  0x10(%rsp),%xmm12
  movapd %xmm12,%xmm3
  mulsd  %xmm12,%xmm3
  addsd  %xmm2,%xmm3
  movsd  %xmm3,0x10(%rsp)
  fldl   0x10(%rsp)
  fld    %st(1)
  fucomip %st(1),%st
  ja     L14
  fsqrt
L318:
  comisd %xmm11,%xmm5
  fstpl  0x10(%rsp)
  movsd  0x10(%rsp),%xmm13
  movapd %xmm12,%xmm3
  divsd  %xmm12,%xmm2
  divsd  %xmm13,%xmm3
  divsd  %xmm13,%xmm0
  jbe    L151
  xorpd  %xmm8,%xmm0
  xorpd  %xmm8,%xmm2
L151:
  subsd  %xmm2,%xmm4
  movapd %xmm2,%xmm11
  andpd  %xmm1,%xmm11
  movsd  %xmm4,(%rsi)
  mov    0x9c(%rsp,%r12,4),%esi
  andpd  %xmm1,%xmm4
  mulsd  %xmm6,%xmm4
  test   %esi,%esi
  jne    L254
  comisd %xmm4,%xmm11
  jbe    L286
  addl   $0x1,0xc(%rsp)
  movl   $0x1,0x9c(%rsp,%r12,4)
L286:
  addsd  (%rdx),%xmm2
  movsd  %xmm2,(%rdx)
  mov    0x9c(%rsp,%rbp,4),%edx
  andpd  %xmm1,%xmm2
  mulsd  %xmm6,%xmm2
  test   %edx,%edx
  jne    L54
  comisd %xmm2,%xmm11
  jbe    L277
  addl   $0x1,0xc(%rsp)
  movl   $0x1,0x9c(%rsp,%rbp,4)
L277:
  comisd %xmm10,%xmm9
  movq   $0x0,(%rcx)
  jbe    L407
  movsd  0x8(%r11),%xmm2
  movsd  (%r11,%rbp,8),%xmm4
  movapd %xmm3,%xmm11
  movapd %xmm0,%xmm12
  mulsd  %xmm2,%xmm11
  mulsd  %xmm4,%xmm12
  mulsd  %xmm0,%xmm2
  mulsd  %xmm3,%xmm4
  subsd  %xmm12,%xmm11
  addsd  %xmm4,%xmm2
  movsd  %xmm11,0x8(%r11)
  movsd  %xmm2,(%r11,%rbp,8)
  movsd  0x8(%r11),%xmm4
  movsd  (%r11,%rax,8),%xmm11
  andpd  %xmm1,%xmm4
  andpd  %xmm1,%xmm11
  comisd %xmm11,%xmm4
  jbe    L121
  mov    $0x1,%r15d
L232:
  andpd  %xmm1,%xmm2
  ucomisd %xmm4,%xmm2
  cmova  %r13d,%r15d
  mov    %r15d,0x90(%rsp)
L407:
  lea    0x0(%rbp,%rbp,2),%rax
  lea    0x1(%r10),%r8d
  shl    $0x3,%rax
  cmp    %r8d,%r13d
  jle    L452
  mov    $0x2,%edx
  lea    -0x1(%r13),%ecx
  movslq %r8d,%r9
  cmp    %edx,%ecx
  lea    (%r9,%r9,2),%rdi
  cmovg  %edx,%ecx
  xor    %edx,%edx
  comisd %xmm10,%xmm9
  seta   %dl
  shl    $0x3,%rdi
  lea    (%r11,%rdi,1),%r15
  lea    (%rbx,%rdx,8),%rdx
  mov    %rdi,0x10(%rsp)
  movslq 0x90(%rsp,%r12,4),%rdi
  lea    (%r15,%r14,1),%rsi
  movsd  0x8(%rdx),%xmm2
  movsd  (%rsi),%xmm4
  movapd %xmm2,%xmm11
  mulsd  %xmm3,%xmm11
  movapd %xmm4,%xmm12
  mulsd  %xmm0,%xmm12
  mulsd  %xmm3,%xmm4
  mulsd  %xmm0,%xmm2
  subsd  %xmm12,%xmm11
  addsd  %xmm4,%xmm2
  movsd  %xmm11,0x8(%rdx)
  movsd  %xmm2,(%rsi)
  movsd  (%rbx,%rdi,8),%xmm4
  mov    %rdi,%rsi
  andpd  %xmm1,%xmm2
  movsd  0x8(%rdx),%xmm11
  andpd  %xmm1,%xmm4
  andpd  %xmm1,%xmm11
  ucomisd %xmm4,%xmm11
  cmova  %r8d,%esi
  mov    %esi,0x90(%rsp,%r12,4)
  movslq 0x90(%rsp,%r9,4),%rsi
  movsd  (%r15,%rsi,8),%xmm4
  andpd  %xmm1,%xmm4
  comisd %xmm4,%xmm2
  jbe    L434
  mov    %r13d,0x90(%rsp,%r9,4)
L434:
  lea    0x2(%r10),%esi
  cmp    %esi,%ecx
  jl     L17
  mov    0x10(%rsp),%rcx
  movsd  0x10(%rdx),%xmm2
  movapd %xmm3,%xmm11
  movapd %xmm0,%xmm12
  lea    0x18(%r11,%rcx,1),%rsi
  mulsd  %xmm2,%xmm11
  lea    (%rsi,%r14,1),%rcx
  mulsd  %xmm0,%xmm2
  movsd  (%rcx),%xmm4
  mulsd  %xmm4,%xmm12
  mulsd  %xmm3,%xmm4
  subsd  %xmm12,%xmm11
  addsd  %xmm4,%xmm2
  movsd  %xmm11,0x10(%rdx)
  movsd  %xmm2,(%rcx)
  mov    0x90(%rsp,%r12,4),%ecx
  movsd  0x10(%rdx),%xmm11
  andpd  %xmm1,%xmm2
  movslq %ecx,%rdx
  andpd  %xmm1,%xmm11
  movsd  (%rbx,%rdx,8),%xmm4
  mov    $0x2,%edx
  andpd  %xmm1,%xmm4
  ucomisd %xmm4,%xmm11
  cmova  %edx,%ecx
  movslq 0x98(%rsp),%rdx
  movsd  (%rsi,%rdx,8),%xmm4
  mov    %ecx,0x90(%rsp,%r12,4)
  andpd  %xmm1,%xmm4
  comisd %xmm4,%xmm2
  jbe    L127
  mov    %r13d,0x98(%rsp)
L127:
  mov    $0x3,%esi
L17:
  cmp    %esi,%r13d
  jle    L431
  xor    %edx,%edx
  comisd %xmm10,%xmm9
  movapd %xmm3,%xmm9
  movslq %esi,%rdi
  lea    (%rdi,%rdi,2),%r10
  movapd %xmm0,%xmm10
  lea    0x0(,%r10,8),%r9
  seta   %dl
  mov    0x90(%rsp,%rdx,4),%ecx
  lea    (%rbx,%rdi,8),%rdx
  lea    (%r14,%r9,1),%rdi
  add    %r11,%rdi
  movsd  (%rdx),%xmm4
  movsd  (%rdi),%xmm2
  mulsd  %xmm4,%xmm9
  mulsd  %xmm2,%xmm10
  mulsd  %xmm0,%xmm4
  mulsd  %xmm3,%xmm2
  subsd  %xmm10,%xmm9
  addsd  %xmm4,%xmm2
  movsd  %xmm9,(%rdx)
  movsd  %xmm2,(%rdi)
  movslq %ecx,%rdi
  movsd  (%rdx),%xmm4
  movsd  (%rbx,%rdi,8),%xmm2
  lea    0x1(%rsi),%edi
  andpd  %xmm1,%xmm4
  andpd  %xmm1,%xmm2
  ucomisd %xmm2,%xmm4
  cmova  %esi,%ecx
  mov    %ecx,0x90(%rsp,%r12,4)
  cmp    %edi,%r13d
  jle    L431
  lea    0x18(%r14,%r9,1),%r8
  movsd  0x8(%rdx),%xmm2
  movapd %xmm3,%xmm9
  add    %r11,%r8
  movsd  (%r8),%xmm4
  mulsd  %xmm2,%xmm9
  mulsd  %xmm0,%xmm2
  movapd %xmm4,%xmm10
  mulsd  %xmm0,%xmm10
  mulsd  %xmm3,%xmm4
  subsd  %xmm10,%xmm9
  addsd  %xmm4,%xmm2
  movsd  %xmm9,0x8(%rdx)
  movsd  %xmm2,(%r8)
  movsd  0x8(%rdx),%xmm2
  movslq %ecx,%r8
  movapd %xmm2,%xmm4
  movsd  (%rbx,%r8,8),%xmm2
  andpd  %xmm1,%xmm4
  andpd  %xmm1,%xmm2
  comisd %xmm2,%xmm4
  cmovbe %ecx,%edi
  lea    0x2(%rsi),%ecx
  mov    %edi,0x90(%rsp,%r12,4)
  cmp    %r13d,%ecx
  jge    L431
  lea    0x30(%r14,%r9,1),%r8
  movsd  0x10(%rdx),%xmm2
  add    %r11,%r8
  movsd  (%r8),%xmm4
  movapd %xmm2,%xmm9
  mulsd  %xmm3,%xmm9
  mulsd  %xmm0,%xmm2
  movapd %xmm4,%xmm10
  mulsd  %xmm0,%xmm10
  mulsd  %xmm3,%xmm4
  subsd  %xmm10,%xmm9
  addsd  %xmm4,%xmm2
  movsd  %xmm9,0x10(%rdx)
  movsd  %xmm2,(%r8)
  movsd  0x10(%rdx),%xmm4
  movslq %edi,%rdx
  movsd  (%rbx,%rdx,8),%xmm2
  andpd  %xmm1,%xmm4
  andpd  %xmm1,%xmm2
  comisd %xmm2,%xmm4
  cmovbe %edi,%ecx
  add    $0x3,%esi
  mov    %ecx,0x90(%rsp,%r12,4)
  cmp    %r13d,%esi
  jge    L431
  add    %rbp,%r10
  movslq %esi,%rsi
  movslq %ecx,%rdi
  lea    (%r11,%r10,8),%rdx
L488:
  movsd  0x48(%rdx),%xmm2
  movsd  (%rbx,%rsi,8),%xmm4
  movapd %xmm3,%xmm9
  mov    %esi,%r8d
  movapd %xmm0,%xmm10
  add    $0x18,%rdx
  mulsd  %xmm4,%xmm9
  mulsd  %xmm2,%xmm10
  mulsd  %xmm0,%xmm4
  mulsd  %xmm3,%xmm2
  subsd  %xmm10,%xmm9
  addsd  %xmm4,%xmm2
  movsd  %xmm9,(%rbx,%rsi,8)
  movsd  %xmm2,0x30(%rdx)
  movsd  (%rbx,%rsi,8),%xmm4
  movsd  (%rbx,%rdi,8),%xmm2
  add    $0x1,%rsi
  andpd  %xmm1,%xmm2
  andpd  %xmm1,%xmm4
  comisd %xmm2,%xmm4
  jbe    L421
  cmp    %esi,%r13d
  jle    L326
  movslq %r8d,%rdi
  mov    %rdi,%rcx
  jmp    L488
  nopl   0x0(%rax,%rax,1)
L121:
  movapd %xmm11,%xmm4
  jmp    L232
  nopw   0x0(%rax,%rax,1)
L452:
  lea    0x1(%r13),%edx
  cmp    $0x2,%r13d
  je     L431
  lea    (%r11,%rax,1),%rsi
  movslq %edx,%rdx
L171:
  movsd  (%rbx,%rdx,8),%xmm2
  movsd  (%rsi,%rdx,8),%xmm4
  movapd %xmm3,%xmm9
  movapd %xmm0,%xmm10
  movslq 0x90(%rsp,%r12,4),%rdi
  mulsd  %xmm2,%xmm9
  mulsd  %xmm4,%xmm10
  mov    %rdi,%rcx
  mulsd  %xmm3,%xmm4
  mulsd  %xmm0,%xmm2
  subsd  %xmm10,%xmm9
  addsd  %xmm4,%xmm2
  movsd  %xmm9,(%rbx,%rdx,8)
  movsd  %xmm2,(%rsi,%rdx,8)
  movsd  (%rbx,%rdx,8),%xmm4
  andpd  %xmm1,%xmm2
  andpd  %xmm1,%xmm4
  movapd %xmm4,%xmm9
  movsd  (%rbx,%rdi,8),%xmm4
  andpd  %xmm1,%xmm4
  ucomisd %xmm4,%xmm9
  cmova  %edx,%ecx
  mov    %ecx,0x90(%rsp,%r12,4)
  movslq 0x90(%rsp,%rbp,4),%rcx
  movsd  (%rsi,%rcx,8),%xmm4
  andpd  %xmm1,%xmm4
  comisd %xmm4,%xmm2
  jbe    L225
  mov    %edx,0x90(%rsp,%rbp,4)
L225:
  add    $0x1,%rdx
  cmp    $0x2,%edx
  jle    L171
L431:
  mov    0x18(%rsp),%rbx
  mov    (%rsp),%rdx
  movapd %xmm3,%xmm9
  movapd %xmm0,%xmm10
  add    %rbx,%rax
  add    %rbx,%rdx
  movsd  (%rax),%xmm4
  movsd  (%rdx),%xmm2
  mulsd  %xmm4,%xmm10
  mulsd  %xmm2,%xmm9
  mulsd  %xmm3,%xmm4
  mulsd  %xmm0,%xmm2
  subsd  %xmm10,%xmm9
  movapd %xmm0,%xmm10
  addsd  %xmm4,%xmm2
  movsd  %xmm9,(%rdx)
  movsd  0x8(%rax),%xmm4
  movapd %xmm3,%xmm9
  movsd  %xmm2,(%rax)
  movsd  0x8(%rdx),%xmm2
  mulsd  %xmm4,%xmm10
  mulsd  %xmm3,%xmm4
  mulsd  %xmm2,%xmm9
  mulsd  %xmm0,%xmm2
  subsd  %xmm10,%xmm9
  movapd %xmm0,%xmm10
  addsd  %xmm4,%xmm2
  movsd  %xmm9,0x8(%rdx)
  movsd  0x10(%rax),%xmm4
  movapd %xmm3,%xmm9
  movsd  %xmm2,0x8(%rax)
  movsd  0x10(%rdx),%xmm2
  mulsd  %xmm4,%xmm10
  mulsd  %xmm2,%xmm9
  mulsd  %xmm3,%xmm4
  mulsd  %xmm0,%xmm2
  subsd  %xmm10,%xmm9
  addsd  %xmm4,%xmm2
  movsd  %xmm9,0x10(%rdx)
  movsd  %xmm2,0x10(%rax)
  mov    0xc(%rsp),%eax
  test   %eax,%eax
  jne    L40
  fstp   %st(0)
  jmp    L71
L295:
  fstp   %st(0)
L71:
  movupd 0x28(%r11),%xmm7
  movsd  0x38(%r11),%xmm0
  movlpd 0x18(%r11),%xmm7
  movsd  %xmm0,0x28(%r11)
  movups %xmm7,0x8(%r11)
  mov    0xa8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L177
  add    $0xb8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L254:
  comisd %xmm11,%xmm4
  jbe    L286
  subl   $0x1,0xc(%rsp)
  movl   $0x0,0x9c(%rsp,%r12,4)
  jmp    L286
  nopl   0x0(%rax)
L54:
  comisd %xmm11,%xmm2
  jbe    L277
  subl   $0x1,0xc(%rsp)
  movl   $0x0,0x9c(%rsp,%rbp,4)
  jmp    L277
L421:
  cmp    %esi,%r13d
  jg     L488
  mov    %ecx,0x90(%rsp,%r12,4)
  jmp    L431
L326:
  mov    %r8d,%ecx
  mov    %ecx,0x90(%rsp,%r12,4)
  jmp    L431
L234:
  add    $0x3,%eax
  mov    %eax,0xc(%rsp)
  jmp    L470
L197:
  mov    0x20(%rsp),%rbx
  xor    %eax,%eax
  jmp    L285
L177:
  call   <__stack_chk_fail@plt>
  nopl   0x0(%rax,%rax,1)
L14:
  fstp   %st(1)
  mov    %rax,0x80(%rsp)
  sub    $0x10,%rsp
  mov    %r11,0x98(%rsp)
  mov    %rcx,0x88(%rsp)
  movsd  %xmm12,0x80(%rsp)
  movsd  %xmm11,0x78(%rsp)
  movsd  %xmm0,0x70(%rsp)
  movsd  %xmm10,0x68(%rsp)
  mov    %r10d,0x60(%rsp)
  movsd  %xmm2,0x50(%rsp)
  movsd  %xmm4,0x48(%rsp)
  mov    %rsi,0x40(%rsp)
  mov    %rdx,0x38(%rsp)
  movsd  %xmm9,0x20(%rsp)
  fstpt  (%rsp)
  call   <sqrtl@plt>
  mov    D135(%rip),%rax
  pop    %rdi
  pxor   %xmm5,%xmm5
  pop    %r8
  movq   D115(%rip),%xmm1
  fldz
  fxch   %st(1)
  movq   %rax,%xmm6
  mov    0x78(%rsp),%rcx
  mov    D111(%rip),%rax
  mov    0x88(%rsp),%r11
  movsd  0x70(%rsp),%xmm12
  movq   %rax,%xmm7
  mov    0x50(%rsp),%r10d
  mov    0x30(%rsp),%rsi
  movq   D44(%rip),%xmm8
  mov    0x80(%rsp),%rax
  movsd  0x68(%rsp),%xmm11
  movsd  0x60(%rsp),%xmm0
  movsd  0x58(%rsp),%xmm10
  movsd  0x40(%rsp),%xmm2
  movsd  0x38(%rsp),%xmm4
  mov    0x28(%rsp),%rdx
  movsd  0x10(%rsp),%xmm9
  jmp    L318
L74:
  fstp   %st(2)
  fstpt  0x40(%rsp)
  sub    $0x10,%rsp
  mov    %rax,0x90(%rsp)
  mov    %r11,0x98(%rsp)
  mov    %rcx,0x88(%rsp)
  movsd  %xmm11,0x80(%rsp)
  movsd  %xmm0,0x78(%rsp)
  movsd  %xmm10,0x70(%rsp)
  mov    %r10d,0x68(%rsp)
  movsd  %xmm2,0x60(%rsp)
  movsd  %xmm4,0x48(%rsp)
  mov    %rsi,0x40(%rsp)
  mov    %rdx,0x38(%rsp)
  movsd  %xmm9,0x20(%rsp)
  fstpt  (%rsp)
  call   <sqrtl@plt>
  mov    D135(%rip),%rax
  pop    %r9
  pxor   %xmm5,%xmm5
  pop    %r10
  fldt   0x40(%rsp)
  fldz
  fxch   %st(2)
  mov    0x88(%rsp),%r11
  movq   %rax,%xmm6
  mov    D111(%rip),%rax
  movq   D44(%rip),%xmm8
  movq   D115(%rip),%xmm1
  movq   %rax,%xmm7
  mov    0x78(%rsp),%rcx
  mov    0x80(%rsp),%rax
  movsd  0x70(%rsp),%xmm11
  movsd  0x68(%rsp),%xmm0
  movsd  0x60(%rsp),%xmm10
  mov    0x58(%rsp),%r10d
  movsd  0x50(%rsp),%xmm2
  movsd  0x38(%rsp),%xmm4
  mov    0x30(%rsp),%rsi
  mov    0x28(%rsp),%rdx
  movsd  0x10(%rsp),%xmm9
  jmp    L394
```

tool_calls: name: unpack_data
arguments: data_tag: D115
type_infered: qword
name: unpack_data
arguments: data_tag: D58
type_infered: byte[8]
name: unpack_data
arguments: data_tag: D111
type_infered: f64
name: unpack_data
arguments: data_tag: D135
type_infered: byte[8]
name: unpack_data
arguments: data_tag: D44
type_infered: byte[8]

tool: D115: 9223372036854775807

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

tool: D111: 0.5

tool: {"D135": [0x8d,0xed,0xb5,0xa0,0xf7,0xc6,0xb0,0x3e]}

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

assistant: ```c
void jacobi_decompose(double cov_matrix[][3], double *eigenvalues, double orth_matrix[][3]) {
  int i, j, k, l;
  int max_col[3];
  int changed[3];
  int n = 3;
  int max_row;
  int state = 0;
  double max, c, s, t, u, a;
  int count = 0;
  for (i = 0; i < n; i++) {
    max = 0;
    max_col[i] = i + 1;
    for (j = i + 1; j < n; j++) {
      if (fabs(cov_matrix[i][j]) > max) {
        max_col[i] = j;
        max = fabs(cov_matrix[i][j]);
      }
    }
  }
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++)
      orth_matrix[i][j] = (i == j) ? 1 : 0;
  for (i = 0; i < n; i++) {
    eigenvalues[i] = cov_matrix[i][i];
    changed[i] = 1;
    for (j = 0; j < n; j++)
      if (j != i && cov_matrix[i][j])
        break;
    if (j == n) {
      state--;
      changed[i] = 0;
    }
  }
  state += n;
  while (state) {
    count++;
    max = fabs(cov_matrix[0][max_col[0]]);
    max_row = 0;
    for (i = 1; i < n - 1; i++) {
      if (fabs(cov_matrix[i][max_col[i]]) > max) {
        max = fabs(cov_matrix[i][max_col[i]]);
        max_row = i;
      }
    }
    k = max_row;
    l = max_col[k];
    max = cov_matrix[k][l];
    if (max == 0)
      break;
    a = (eigenvalues[l] - eigenvalues[k]) * 0.5;
    t = fabsl(a) + sqrtl(max * max + a * a);
    s = sqrtl(max * max + t * t);
    c = t / s;
    s = max / s;
    t = max * max / t;
    if (a < 0) {
      s = -s;
      t = -t;
    }
    a = eigenvalues[k];
    eigenvalues[k] += -t;
    if (changed[k] && (fabs(-t) < 1e-6 * fabs(eigenvalues[k]))) {
      changed[k] = 0;
      state--;
    } else if (!changed[k] && (fabs(-t) > 1e-6 * fabs(eigenvalues[k]))) {
      changed[k] = 1;
      state++;
    };
    a = eigenvalues[l];
    eigenvalues[l] += t;
    if (changed[l] && (fabs(t) < 1e-6 * fabs(eigenvalues[l]))) {
      changed[l] = 0;
      state--;
    } else if (!changed[l] && (fabs(t) > 1e-6 * fabs(eigenvalues[l]))) {
      changed[l] = 1;
      state++;
    };
    cov_matrix[k][l] = 0;
    for (i = 0; i < k; i++) {
      t = cov_matrix[i][k];
      u = cov_matrix[i][l];
      cov_matrix[i][k] = t * c - s * u;
      cov_matrix[i][l] = s * t + c * u;
      if (1) {
        if (fabs(cov_matrix[i][k]) > fabs(cov_matrix[i][max_col[i]]))
          max_col[i] = k;
        if (i < 3 && fabs(cov_matrix[i][l]) > fabs(cov_matrix[i][max_col[i]]))
          max_col[i] = l;
      };
    }
    for (i = k + 1; i < l; i++) {
      t = cov_matrix[k][i];
      u = cov_matrix[i][l];
      cov_matrix[k][i] = t * c - s * u;
      cov_matrix[i][l] = s * t + c * u;
      if (1) {
        if (fabs(cov_matrix[k][i]) > fabs(cov_matrix[k][max_col[k]]))
          max_col[k] = i;
        if (i < 3 && fabs(cov_matrix[i][l]) > fabs(cov_matrix[i][max_col[i]]))
          max_col[i] = l;
      };
    }
    for (i = l + 1; i < n; i++) {
      t = cov_matrix[k][i];
      u = cov_matrix[l][i];
      cov_matrix[k][i] = t * c - s * u;
      cov_matrix[l][i] = s * t + c * u;
      if (1) {
        if (fabs(cov_matrix[k][i]) > fabs(cov_matrix[k][max_col[k]]))
          max_col[k] = i;
        if (l < 3 && fabs(cov_matrix[l][i]) > fabs(cov_matrix[l][max_col[l]]))
          max_col[l] = i;
      };
    }
    for (i = 0; i < n; i++) {
      t = orth_matrix[k][i];
      u = orth_matrix[l][i];
      orth_matrix[k][i] = t * c - s * u;
      orth_matrix[l][i] = s * t + c * u;
      if (0) {
        if (fabs(orth_matrix[k][i]) > fabs(orth_matrix[k][max_col[k]]))
          max_col[k] = i;
        if (l < 3 && fabs(orth_matrix[l][i]) > fabs(orth_matrix[l][max_col[l]]))
          max_col[l] = i;
      };
    }
  }
  for (k = 0; k < n - 1; k++) {
    for (l = k + 1; l < n; l++) {
      cov_matrix[k][l] = cov_matrix[l][k];
    }
  }
}
```