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

```asm
<logDetFillFxy>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %rdx,-0x68(%rbp)
  mov    %rcx,-0x70(%rbp)
  mov    %r8d,-0x74(%rbp)
  mov    %r9d,-0x78(%rbp)
  mov    0x38(%rbp),%eax
  imul   %eax,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x58(%rbp),%rax
  movl   $0x0,(%rax)
  mov    -0x60(%rbp),%rax
  movl   $0x0,(%rax)
  mov    -0x68(%rbp),%rax
  movl   $0x0,(%rax)
  movl   $0x0,-0x3c(%rbp)
  jmp    L1157
L197:
  mov    -0x74(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x78(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,-0x1c(%rbp)
  cmpl   $0x0,-0x20(%rbp)
  js     L1461
  cmpl   $0x0,-0x1c(%rbp)
  js     L1461
  mov    -0x20(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x1c(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x10(%rbp),%rax
  add    %rcx,%rax
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    -0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L411
L1461:
  cmpl   $0xfffffffd,-0x20(%rbp)
  jne    L592
  cmpl   $0xfffffffd,-0x1c(%rbp)
  jne    L592
  mov    -0x68(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    -0x68(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L411
L592:
  movl   $0x0,-0x34(%rbp)
  movl   $0x0,-0x30(%rbp)
  movl   $0x0,-0x40(%rbp)
  jmp    L923
L726:
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x20(%rbp)
  jne    L422
  mov    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  jmp    L8
L422:
  addl   $0x1,-0x40(%rbp)
L923:
  mov    -0x40(%rbp),%eax
  cmp    0x40(%rbp),%eax
  jl     L726
L8:
  movl   $0x0,-0x40(%rbp)
  jmp    L374
L111:
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x1c(%rbp)
  jne    L355
  mov    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  jmp    L697
L355:
  addl   $0x1,-0x40(%rbp)
L374:
  mov    -0x40(%rbp),%eax
  cmp    0x40(%rbp),%eax
  jl     L111
L697:
  mov    -0x34(%rbp),%eax
  imul   0x40(%rbp),%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x34(%rbp),%eax
  imul   0x40(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x30(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0x60(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    -0x60(%rbp),%rax
  mov    %edx,(%rax)
L411:
  addl   $0x1,-0x3c(%rbp)
L1157:
  mov    -0x3c(%rbp),%eax
  cmp    0x30(%rbp),%eax
  jl     L197
  mov    -0x60(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x68(%rbp),%rax
  mov    (%rax),%eax
  add    %edx,%eax
  cmp    %eax,0x30(%rbp)
  je     L160
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L160:
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L415
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L415:
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movl   $0x0,-0x3c(%rbp)
  jmp    L640
L222:
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  divsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x3c(%rbp)
L640:
  mov    -0x3c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jl     L222
  movl   $0x0,-0x3c(%rbp)
  jmp    L1200
L569:
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    0x50(%rbp),%rax
  add    %rcx,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x3c(%rbp)
L1200:
  mov    -0x3c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jl     L569
  mov    -0x60(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1083
  movl   $0x0,-0x3c(%rbp)
  jmp    L7
L544:
  movl   $0x0,-0x38(%rbp)
  jmp    L1411
L1233:
  mov    0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x24(%rbp)
  cmpl   $0x0,-0x24(%rbp)
  je     L31
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movl   $0x0,-0x2c(%rbp)
  mov    -0x3c(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L1234
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L1286
  movl   $0x0,-0x40(%rbp)
  jmp    L758
L944:
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x2c(%rbp)
  addl   $0x1,-0x40(%rbp)
L758:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L944
  jmp    L186
L1286:
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L1151
  movl   $0x0,-0x40(%rbp)
  jmp    L1360
L200:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1363
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x2c(%rbp)
L1363:
  addl   $0x1,-0x40(%rbp)
L1360:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L200
  jmp    L186
L1151:
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L1234:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x3c(%rbp)
  jne    L559
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L421
  movl   $0x0,-0x44(%rbp)
  jmp    L334
L1474:
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x2c(%rbp)
  addl   $0x1,-0x44(%rbp)
L334:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L1474
  jmp    L186
L421:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L399
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L399:
  movl   $0x0,-0x44(%rbp)
  jmp    L19
L1464:
  movl   $0x0,-0x40(%rbp)
  jmp    L466
L73:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L826
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x2c(%rbp)
L826:
  addl   $0x1,-0x40(%rbp)
L466:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L73
  addl   $0x1,-0x44(%rbp)
L19:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L1464
  jmp    L186
L559:
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L12
  movl   $0x0,-0x44(%rbp)
  jmp    L272
L425:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1022
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x2c(%rbp)
L1022:
  addl   $0x1,-0x44(%rbp)
L272:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L425
  jmp    L186
L12:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L1101
  movl   $0x0,-0x44(%rbp)
  jmp    L441
L546:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1084
  movl   $0x0,-0x40(%rbp)
  jmp    L128
L563:
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x2c(%rbp)
  addl   $0x1,-0x40(%rbp)
L128:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L563
L1084:
  addl   $0x1,-0x44(%rbp)
L441:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L546
  jmp    L186
L1101:
  movl   $0x0,-0x44(%rbp)
  jmp    L1050
L568:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L50
  movl   $0x0,-0x40(%rbp)
  jmp    L1231
L1136:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1127
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x2c(%rbp)
L1127:
  addl   $0x1,-0x40(%rbp)
L1231:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L1136
L50:
  addl   $0x1,-0x44(%rbp)
L1050:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L568
L186:
  movsd  D88(%rip),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L838
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x2c(%rbp),%xmm1
  movsd  D56(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x3c(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L151
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L821
  movl   $0x0,-0x40(%rbp)
  jmp    L1271
L622:
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L1271:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L622
  jmp    L31
L821:
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L808
  movl   $0x0,-0x40(%rbp)
  jmp    L366
L491:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1294
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L1294:
  addl   $0x1,-0x40(%rbp)
L366:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L491
  jmp    L31
L808:
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L151:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x3c(%rbp)
  jne    L263
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L599
  movl   $0x0,-0x44(%rbp)
  jmp    L797
L492:
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L797:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L492
  jmp    L31
L599:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L96
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L96:
  movl   $0x0,-0x44(%rbp)
  jmp    L949
L722:
  movl   $0x0,-0x40(%rbp)
  jmp    L1366
L861:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1228
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L1228:
  addl   $0x1,-0x40(%rbp)
L1366:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L861
  addl   $0x1,-0x44(%rbp)
L949:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L722
  jmp    L31
L263:
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L877
  movl   $0x0,-0x44(%rbp)
  jmp    L184
L531:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L485
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L485:
  addl   $0x1,-0x44(%rbp)
L184:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L531
  jmp    L31
L877:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L1266
  movl   $0x0,-0x44(%rbp)
  jmp    L1457
L724:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L284
  movl   $0x0,-0x40(%rbp)
  jmp    L1110
L33:
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L1110:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L33
L284:
  addl   $0x1,-0x44(%rbp)
L1457:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L724
  jmp    L31
L1266:
  movl   $0x0,-0x44(%rbp)
  jmp    L1203
L982:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1177
  movl   $0x0,-0x40(%rbp)
  jmp    L107
L901:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L866
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L866:
  addl   $0x1,-0x40(%rbp)
L107:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L901
L1177:
  addl   $0x1,-0x44(%rbp)
L1203:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L982
  jmp    L31
L838:
  mov    -0x3c(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L215
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L784
  movl   $0x0,-0x40(%rbp)
  jmp    L732
L343:
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x24(%rbp),%xmm2
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  -0x18(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L732:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L343
  jmp    L31
L784:
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L37
  movl   $0x0,-0x40(%rbp)
  jmp    L644
L771:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1195
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x24(%rbp),%xmm2
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  -0x18(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L1195:
  addl   $0x1,-0x40(%rbp)
L644:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L771
  jmp    L31
L37:
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L215:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x3c(%rbp)
  jne    L1051
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L844
  movl   $0x0,-0x44(%rbp)
  jmp    L710
L1364:
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x24(%rbp),%xmm2
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  -0x18(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x44(%rbp)
L710:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L1364
  jmp    L31
L844:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L368
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L368:
  movl   $0x0,-0x44(%rbp)
  jmp    L649
L607:
  movl   $0x0,-0x40(%rbp)
  jmp    L1037
L541:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L453
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x24(%rbp),%xmm2
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  -0x18(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L453:
  addl   $0x1,-0x40(%rbp)
L1037:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L541
  addl   $0x1,-0x44(%rbp)
L649:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L607
  jmp    L31
L1051:
  mov    -0x38(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jge    L136
  movl   $0x0,-0x44(%rbp)
  jmp    L655
L497:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L1123
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x24(%rbp),%xmm2
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  -0x18(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L1123:
  addl   $0x1,-0x44(%rbp)
L655:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L497
  jmp    L31
L136:
  mov    0x40(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x38(%rbp)
  jne    L692
  movl   $0x0,-0x44(%rbp)
  jmp    L1273
L969:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L294
  movl   $0x0,-0x40(%rbp)
  jmp    L929
L1068:
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x24(%rbp),%xmm2
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  -0x18(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L929:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L1068
L294:
  addl   $0x1,-0x44(%rbp)
L1273:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L969
  jmp    L31
L692:
  movl   $0x0,-0x44(%rbp)
  jmp    L912
L24:
  mov    -0x3c(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L298
  movl   $0x0,-0x40(%rbp)
  jmp    L193
L372:
  mov    -0x38(%rbp),%eax
  sub    0x38(%rbp),%eax
  imul   0x38(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L126
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x24(%rbp),%xmm2
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  -0x18(%rbp),%xmm0
  mov    0x38(%rbp),%eax
  imul   -0x44(%rbp),%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L126:
  addl   $0x1,-0x40(%rbp)
L193:
  mov    -0x40(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L372
L298:
  addl   $0x1,-0x44(%rbp)
L912:
  mov    -0x44(%rbp),%eax
  cmp    0x38(%rbp),%eax
  jl     L24
L31:
  addl   $0x1,-0x38(%rbp)
L1411:
  mov    -0x38(%rbp),%eax
  cmp    0x40(%rbp),%eax
  jl     L1233
  addl   $0x1,-0x3c(%rbp)
L7:
  mov    -0x3c(%rbp),%eax
  cmp    0x40(%rbp),%eax
  jl     L544
L1083:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D44
type_infered: string
name: retrieve_data
arguments: data_tag: D7
type_infered: string
name: retrieve_data
arguments: data_tag: D91
type_infered: string
name: retrieve_data
arguments: data_tag: D88
type_infered: byte[8]
name: retrieve_data
arguments: data_tag: D56
type_infered: f64

tool: D44: problem with Fxy

tool: D7: logDetFillFxy().  No unambiguous chars.

tool: D91: error in logDetFillFxy

tool: {"D88": [0x16,0x56,0xe7,0x9e,0xaf,0x03,0xd2,0x3c]}

tool: D56: 1

assistant: ```c
void logDetFillFxy(int *nUnambig, int *nAmbig, int *nDoubleGap, char *seq, int sNum1, int sNum2, int *refUnambigCountMatrix, int *refAmbigCountMatrix, int *allSymbolNums, int nTax, int nChar, int dim, int bigDim, double *normUnambig, double *bigFxy, int *equatesArray) {
  int i, j, i1, j1;
  int firstChar, secondChar, firstIndx, secondIndx;
  int na, nSlots;
  double nUnambigD, fsum, oneOverNSlots;
  int dimSquared = dim * dim;
  nUnambig[0] = 0;
  nAmbig[0] = 0;
  nDoubleGap[0] = 0;
  for (i = 0; i < nChar; i++) {
    firstChar = (int)seq[(sNum1 * nChar) + i];
    secondChar = (int)seq[(sNum2 * nChar) + i];
    if (firstChar >= 0 && secondChar >= 0) {
      refUnambigCountMatrix[(firstChar * dim) + secondChar] += 1;
      nUnambig[0] += 1;
    } else {
      if (firstChar == -3 && secondChar == -3) {
        nDoubleGap[0] += 1;
      } else {
        firstIndx = 0;
        secondIndx = 0;
        for (j1 = 0; j1 < bigDim; j1++) {
          if (allSymbolNums[j1] == firstChar) {
            firstIndx = j1;
            break;
          }
        }
        for (j1 = 0; j1 < bigDim; j1++) {
          if (allSymbolNums[j1] == secondChar) {
            secondIndx = j1;
            break;
          }
        }
        refAmbigCountMatrix[(firstIndx * bigDim) + secondIndx] += 1;
        nAmbig[0] += 1;
      }
    }
  }
  if ((nAmbig[0] + nUnambig[0] + nDoubleGap[0]) != nChar) {
    printf("problem with Fxy\n");
    exit(0);
  }
  if (!nUnambig[0]) {
    printf("logDetFillFxy().  No unambiguous chars.\n");
    exit(0);
  }
  nUnambigD = (double)nUnambig[0];
  for (i = 0; i < dimSquared; i++) {
    normUnambig[i] = refUnambigCountMatrix[i] / nUnambigD;
  }
  if (0) {
    printf("refUnambigCountMatrix = \n");
    for (i = 0; i < dim; i++) {
      for (j = 0; j < dim; j++) {
        printf("%6i", refUnambigCountMatrix[(dim * i) + j]);
      }
      printf("\n");
    }
  }
  if (0) {
    printf("normUnambig = \n");
    for (i = 0; i < dim; i++) {
      for (j = 0; j < dim; j++) {
        printf("%6.2f", normUnambig[(dim * i) + j]);
      }
      printf("\n");
    }
  }
  if (0) {
    printf("refAmbigCountMatrix = \n");
    for (i = 0; i < bigDim; i++) {
      for (j = 0; j < bigDim; j++) {
        printf("%6i", refAmbigCountMatrix[(bigDim * i) + j]);
      }
      printf("\n");
    }
    exit(0);
  }
  for (i = 0; i < dimSquared; i++) {
    bigFxy[i] = (double)refUnambigCountMatrix[i];
  }
  if (nAmbig[0]) {
    for (i = 0; i < bigDim; i++) {
      for (j = 0; j < bigDim; j++) {
        na = refAmbigCountMatrix[(bigDim * i) + j];
        if (na) {
          fsum = 0.0;
          nSlots = 0;
          if (i < dim) {
            if (j == bigDim - 1) {
              for (j1 = 0; j1 < dim; j1++) {
                fsum += normUnambig[(dim * i) + j1];
                nSlots += 1;
              }
            } else if (j >= dim) {
              for (j1 = 0; j1 < dim; j1++) {
                if (equatesArray[(dim * (j - dim)) + j1]) {
                  fsum += normUnambig[(dim * i) + j1];
                  nSlots += 1;
                }
              }
            } else {
              printf("error in logDetFillFxy\n");
              exit(0);
            }
          } else if (i == bigDim - 1) {
            if (j < dim) {
              for (i1 = 0; i1 < dim; i1++) {
                fsum += normUnambig[(dim * i1) + j];
                nSlots += 1;
              }
            } else if (j == bigDim - 1) {
              printf("error in logDetFillFxy\n");
              exit(0);
            } else {
              for (i1 = 0; i1 < dim; i1++) {
                for (j1 = 0; j1 < dim; j1++) {
                  if (equatesArray[(dim * (j - dim)) + j1]) {
                    fsum += normUnambig[(dim * i1) + j1];
                    nSlots += 1;
                  }
                }
              }
            }
          } else {
            if (j < dim) {
              for (i1 = 0; i1 < dim; i1++) {
                if (equatesArray[(dim * (i - dim)) + i1]) {
                  fsum += normUnambig[(dim * i1) + j];
                  nSlots += 1;
                }
              }
            } else if (j == (bigDim - 1)) {
              for (i1 = 0; i1 < dim; i1++) {
                if (equatesArray[(dim * (i - dim)) + i1]) {
                  for (j1 = 0; j1 < dim; j1++) {
                    fsum += normUnambig[(dim * i1) + j1];
                    nSlots += 1;
                  }
                }
              }
            } else {
              for (i1 = 0; i1 < dim; i1++) {
                if (equatesArray[(dim * (i - dim)) + i1]) {
                  for (j1 = 0; j1 < dim; j1++) {
                    if (equatesArray[(dim * (j - dim)) + j1]) {
                      fsum += normUnambig[(dim * i1) + j1];
                      nSlots += 1;
                    }
                  }
                }
              }
            }
          }
          if (fsum < 1.e-15) {
            oneOverNSlots = 1.0 / (double)nSlots;
            if (i < dim) {
              if (j == (bigDim - 1)) {
                for (j1 = 0; j1 < dim; j1++) {
                  bigFxy[(dim * i) + j1] += na * oneOverNSlots;
                }
              } else if (j >= dim) {
                for (j1 = 0; j1 < dim; j1++) {
                  if (equatesArray[(dim * (j - dim)) + j1]) {
                    bigFxy[(dim * i) + j1] += na * oneOverNSlots;
                  }
                }
              } else {
                printf("error in logDetFillFxy\n");
                exit(0);
              }
            } else if (i == (bigDim - 1)) {
              if (j < dim) {
                for (i1 = 0; i1 < dim; i1++) {
                  bigFxy[(dim * i1) + j] += na * oneOverNSlots;
                }
              } else if (j == (bigDim - 1)) {
                printf("error in logDetFillFxy\n");
                exit(0);
              } else {
                for (i1 = 0; i1 < dim; i1++) {
                  for (j1 = 0; j1 < dim; j1++) {
                    if (equatesArray[(dim * (j - dim)) + j1]) {
                      bigFxy[(dim * i1) + j1] += na * oneOverNSlots;
                    }
                  }
                }
              }
            } else {
              if (j < dim) {
                for (i1 = 0; i1 < dim; i1++) {
                  if (equatesArray[(dim * (i - dim)) + i1]) {
                    bigFxy[(dim * i1) + j] += na * oneOverNSlots;
                  }
                }
              } else if (j == (bigDim - 1)) {
                for (i1 = 0; i1 < dim; i1++) {
                  if (equatesArray[(dim * (i - dim)) + i1]) {
                    for (j1 = 0; j1 < dim; j1++) {
                      bigFxy[(dim * i1) + j1] += na * oneOverNSlots;
                    }
                  }
                }
              } else {
                for (i1 = 0; i1 < dim; i1++) {
                  if (equatesArray[(dim * (i - dim)) + i1]) {
                    for (j1 = 0; j1 < dim; j1++) {
                      if (equatesArray[(dim * (j - dim)) + j1]) {
                        bigFxy[(dim * i1) + j1] += na * oneOverNSlots;
                      }
                    }
                  }
                }
              }
            }
          } else {
            if (i < dim) {
              if (j == (bigDim - 1)) {
                for (j1 = 0; j1 < dim; j1++) {
                  bigFxy[(dim * i) + j1] += na * normUnambig[(dim * i) + j1] / fsum;
                }
              } else if (j >= dim) {
                for (j1 = 0; j1 < dim; j1++) {
                  if (equatesArray[(dim * (j - dim)) + j1]) {
                    bigFxy[(dim * i) + j1] += na * normUnambig[(dim * i) + j1] / fsum;
                  }
                }
              } else {
                printf("error in logDetFillFxy\n");
                exit(0);
              }
            } else if (i == (bigDim - 1)) {
              if (j < dim) {
                for (i1 = 0; i1 < dim; i1++) {
                  bigFxy[(dim * i1) + j] += na * normUnambig[(dim * i1) + j] / fsum;
                }
              } else if (j == (bigDim - 1)) {
                printf("error in logDetFillFxy\n");
                exit(0);
              } else {
                for (i1 = 0; i1 < dim; i1++) {
                  for (j1 = 0; j1 < dim; j1++) {
                    if (equatesArray[(dim * (j - dim)) + j1]) {
                      bigFxy[(dim * i1) + j1] += na * normUnambig[(dim * i1) + j1] / fsum;
                    }
                  }
                }
              }
            } else {
              if (j < dim) {
                for (i1 = 0; i1 < dim; i1++) {
                  if (equatesArray[(dim * (i - dim)) + i1]) {
                    bigFxy[(dim * i1) + j] += na * normUnambig[(dim * i1) + j] / fsum;
                  }
                }
              } else if (j == (bigDim - 1)) {
                for (i1 = 0; i1 < dim; i1++) {
                  if (equatesArray[(dim * (i - dim)) + i1]) {
                    for (j1 = 0; j1 < dim; j1++) {
                      bigFxy[(dim * i1) + j1] += na * normUnambig[(dim * i1) + j1] / fsum;
                    }
                  }
                }
              } else {
                for (i1 = 0; i1 < dim; i1++) {
                  if (equatesArray[(dim * (i - dim)) + i1]) {
                    for (j1 = 0; j1 < dim; j1++) {
                      if (equatesArray[(dim * (j - dim)) + j1]) {
                        bigFxy[(dim * i1) + j1] += na * normUnambig[(dim * i1) + j1] / fsum;
                      }
                    }
                  }
                }
              }
            }
          }
          if (0) {
            printf("bigFxy, after partial ambig resolution\n");
            for (i1 = 0; i1 < dim; i1++) {
              for (j1 = 0; j1 < dim; j1++) {
                printf("%7.3f", bigFxy[(dim * i1) + j1]);
              }
              printf("\n");
            }
          }
        }
      }
    }
  }
}
```