user: What would the C source look like for the assembly code provided here:

```asm
<kernel_dgetrf_pivot_4_vs_lib4>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  test   %edi,%edi
  jle    L95
  mov    %edi,%ebp
  mov    %esi,%r15d
  mov    %rdx,%rbx
  mov    %ecx,%r12d
  mov    %r8,%r14
  mov    %r9,%r13
  test   %esi,%esi
  jle    L95
  lea    -0x4(%rdi),%eax
  mov    %eax,0xc(%rsp)
  lea    0x28(%rsp),%r9
  lea    0x24(%rsp),%r8
  mov    $0x0,%esi
  mov    $0x0,%eax
  call   <idamax_lib4@plt>
  mov    0x24(%rsp),%eax
  mov    %eax,0x0(%r13)
  pxor   %xmm0,%xmm0
  ucomisd 0x28(%rsp),%xmm0
  jp     L831
  jne    L831
  movq   $0x0,(%r14)
  cmp    $0x1,%r15d
  je     L95
  cmp    $0x1,%ebp
  je     L95
  cmp    $0x3,%ebp
  jle    L43
L185:
  movsd  0x20(%rbx),%xmm0
  movsd  0x30(%rbx),%xmm2
  movsd  0x38(%rbx),%xmm1
  movapd %xmm0,%xmm4
  mulsd  0x8(%rbx),%xmm4
  movsd  0x28(%rbx),%xmm3
  subsd  %xmm4,%xmm3
  movsd  %xmm3,0x30(%rsp)
  movapd %xmm0,%xmm4
  mulsd  0x10(%rbx),%xmm4
  subsd  %xmm4,%xmm2
  movsd  %xmm2,0x38(%rsp)
  movapd %xmm0,%xmm4
  mulsd  0x18(%rbx),%xmm4
  subsd  %xmm4,%xmm1
  movsd  %xmm1,0x40(%rsp)
  movsd  %xmm3,0x28(%rbx)
  movsd  %xmm2,0x30(%rbx)
  movsd  %xmm1,0x38(%rbx)
  lea    0x0(,%r12,4),%ecx
  movslq %ecx,%rcx
  shl    $0x3,%rcx
  lea    (%rbx,%rcx,1),%rdi
  lea    -0x7(%rbp),%esi
  test   %esi,%esi
  jle    L601
  mov    %rdi,%rax
  mov    $0x0,%edx
L759:
  movapd %xmm0,%xmm1
  mulsd  (%rax),%xmm1
  movsd  0x20(%rax),%xmm4
  subsd  %xmm1,%xmm4
  movapd %xmm0,%xmm1
  mulsd  0x8(%rax),%xmm1
  movsd  0x28(%rax),%xmm3
  subsd  %xmm1,%xmm3
  movapd %xmm0,%xmm1
  mulsd  0x10(%rax),%xmm1
  movsd  0x30(%rax),%xmm2
  subsd  %xmm1,%xmm2
  movapd %xmm0,%xmm5
  mulsd  0x18(%rax),%xmm5
  movsd  0x38(%rax),%xmm1
  subsd  %xmm5,%xmm1
  movsd  %xmm4,0x20(%rax)
  movsd  %xmm3,0x28(%rax)
  movsd  %xmm2,0x30(%rax)
  movsd  %xmm1,0x38(%rax)
  add    %rcx,%rax
  add    $0x4,%edx
  cmp    %esi,%edx
  jl     L759
  lea    -0x8(%rbp),%edx
  shr    $0x2,%edx
  mov    %edx,%esi
  lea    0x1(%rsi),%rax
  imul   %rcx,%rax
  add    %rdi,%rax
  lea    0x4(,%rdx,4),%edx
  imul   %rsi,%rcx
  add    %rdi,%rcx
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm3,0x30(%rsp)
  movsd  %xmm2,0x38(%rsp)
  movsd  %xmm1,0x40(%rsp)
  movsd  %xmm4,0x20(%rcx)
  movsd  %xmm3,0x28(%rcx)
  movsd  %xmm2,0x30(%rcx)
  movsd  %xmm1,0x38(%rcx)
L806:
  cmp    %edx,0xc(%rsp)
  jle    L56
  lea    -0x5(%rbp),%esi
  sub    %edx,%esi
  lea    0x8(%rax,%rsi,8),%rcx
  mov    %rax,%rdx
L735:
  movapd %xmm0,%xmm2
  mulsd  (%rdx),%xmm2
  movsd  0x20(%rdx),%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%rdx)
  add    $0x8,%rdx
  cmp    %rcx,%rdx
  jne    L735
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm1,0x20(%rax,%rsi,8)
L56:
  lea    0x28(%rbx),%rdx
  lea    -0x1(%rbp),%edi
  lea    0x30(%rsp),%r9
  lea    0x24(%rsp),%r8
  mov    %r12d,%ecx
  mov    $0x1,%esi
  mov    $0x0,%eax
  call   <idamax_lib4@plt>
  mov    0x24(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,0x4(%r13)
  pxor   %xmm0,%xmm0
  ucomisd 0x30(%rsp),%xmm0
  jp     L24
  jne    L24
  movq   $0x0,0x8(%r14)
  cmp    $0x2,%r15d
  je     L95
  cmp    $0x3,%ebp
  jg     L244
  movsd  0x40(%rbx),%xmm1
  movsd  0x48(%rbx),%xmm0
  movapd %xmm1,%xmm2
  mulsd  0x8(%rbx),%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x48(%rbx)
  je     L841
L397:
  cmp    $0x2,%ebp
  jg     L793
L605:
  cmp    $0x3,%r15d
  jle    L95
  cmp    $0x3,%ebp
  jle    L446
L340:
  movsd  0x60(%rbx),%xmm6
  movsd  0x68(%rbx),%xmm5
  movapd %xmm6,%xmm0
  mulsd  0x8(%rbx),%xmm0
  subsd  %xmm0,%xmm5
  movsd  %xmm5,0x68(%rbx)
  movsd  0x70(%rbx),%xmm4
  movapd %xmm6,%xmm0
  mulsd  0x10(%rbx),%xmm0
  subsd  %xmm0,%xmm4
  movapd %xmm5,%xmm0
  mulsd  0x30(%rbx),%xmm0
  subsd  %xmm0,%xmm4
  movsd  %xmm4,0x70(%rbx)
  movapd %xmm6,%xmm1
  mulsd  0x18(%rbx),%xmm1
  movsd  0x78(%rbx),%xmm0
  subsd  %xmm1,%xmm0
  movapd %xmm5,%xmm1
  mulsd  0x38(%rbx),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm4,%xmm1
  mulsd  0x58(%rbx),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm0,0x78(%rbx)
  lea    0x0(,%r12,4),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,0x10(%rsp)
  add    %rbx,%rax
  mov    %rax,0x18(%rsp)
  lea    -0x7(%rbp),%r15d
  test   %r15d,%r15d
  jle    L635
  mov    $0x0,%edx
L827:
  movapd %xmm6,%xmm0
  mulsd  (%rax),%xmm0
  movsd  0x60(%rax),%xmm3
  subsd  %xmm0,%xmm3
  movapd %xmm5,%xmm0
  mulsd  0x20(%rax),%xmm0
  subsd  %xmm0,%xmm3
  movapd %xmm4,%xmm0
  mulsd  0x40(%rax),%xmm0
  subsd  %xmm0,%xmm3
  movapd %xmm6,%xmm0
  mulsd  0x8(%rax),%xmm0
  movsd  0x68(%rax),%xmm2
  subsd  %xmm0,%xmm2
  movapd %xmm5,%xmm0
  mulsd  0x28(%rax),%xmm0
  subsd  %xmm0,%xmm2
  movapd %xmm4,%xmm0
  mulsd  0x48(%rax),%xmm0
  subsd  %xmm0,%xmm2
  movapd %xmm6,%xmm0
  mulsd  0x10(%rax),%xmm0
  movsd  0x70(%rax),%xmm1
  subsd  %xmm0,%xmm1
  movapd %xmm5,%xmm0
  mulsd  0x30(%rax),%xmm0
  subsd  %xmm0,%xmm1
  movapd %xmm4,%xmm0
  mulsd  0x50(%rax),%xmm0
  subsd  %xmm0,%xmm1
  movapd %xmm6,%xmm7
  mulsd  0x18(%rax),%xmm7
  movsd  0x78(%rax),%xmm0
  subsd  %xmm7,%xmm0
  movapd %xmm5,%xmm7
  mulsd  0x38(%rax),%xmm7
  subsd  %xmm7,%xmm0
  movapd %xmm4,%xmm7
  mulsd  0x58(%rax),%xmm7
  subsd  %xmm7,%xmm0
  movsd  %xmm3,0x60(%rax)
  movsd  %xmm2,0x68(%rax)
  movsd  %xmm1,0x70(%rax)
  movsd  %xmm0,0x78(%rax)
  add    0x10(%rsp),%rax
  add    $0x4,%edx
  cmp    %r15d,%edx
  jl     L827
  lea    -0x8(%rbp),%ecx
  shr    $0x2,%ecx
  mov    %ecx,%eax
  lea    0x1(%rax),%rdx
  mov    0x10(%rsp),%rdi
  imul   %rdi,%rdx
  mov    0x18(%rsp),%rsi
  add    %rsi,%rdx
  lea    0x4(,%rcx,4),%ecx
  imul   %rdi,%rax
  add    %rsi,%rax
  movsd  %xmm3,0x28(%rsp)
  movsd  %xmm2,0x30(%rsp)
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm3,0x60(%rax)
  movsd  %xmm2,0x68(%rax)
  movsd  %xmm1,0x70(%rax)
  movsd  %xmm0,0x78(%rax)
L861:
  cmp    %ecx,0xc(%rsp)
  jle    L438
  lea    -0x5(%rbp),%esi
  sub    %ecx,%esi
  lea    0x8(%rdx,%rsi,8),%rcx
  mov    %rdx,%rax
L136:
  movapd %xmm6,%xmm1
  mulsd  (%rax),%xmm1
  movsd  0x60(%rax),%xmm0
  subsd  %xmm1,%xmm0
  movapd %xmm5,%xmm1
  mulsd  0x20(%rax),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm4,%xmm1
  mulsd  0x40(%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x60(%rax)
  add    $0x8,%rax
  cmp    %rcx,%rax
  jne    L136
  movsd  %xmm0,0x28(%rsp)
  movsd  %xmm0,0x60(%rdx,%rsi,8)
L438:
  lea    0x78(%rbx),%rdx
  lea    -0x3(%rbp),%edi
  lea    0x40(%rsp),%r9
  lea    0x24(%rsp),%r8
  mov    %r12d,%ecx
  mov    $0x3,%esi
  mov    $0x0,%eax
  call   <idamax_lib4@plt>
  mov    0x24(%rsp),%eax
  add    $0x3,%eax
  mov    %eax,0xc(%r13)
  pxor   %xmm0,%xmm0
  ucomisd 0x40(%rsp),%xmm0
  jp     L271
  jne    L271
  movq   $0x0,0x18(%r14)
  jmp    L95
L831:
  test   %eax,%eax
  jne    L161
L642:
  movsd  D22(%rip),%xmm0
  divsd  (%rbx),%xmm0
  movsd  %xmm0,0x28(%rsp)
  movsd  %xmm0,(%r14)
  cmp    $0x3,%ebp
  jle    L101
  movapd %xmm0,%xmm1
  mulsd  0x8(%rbx),%xmm1
  movsd  %xmm1,0x8(%rbx)
  movapd %xmm0,%xmm1
  mulsd  0x10(%rbx),%xmm1
  movsd  %xmm1,0x10(%rbx)
  movapd %xmm0,%xmm1
  mulsd  0x18(%rbx),%xmm1
  movsd  %xmm1,0x18(%rbx)
  lea    0x0(,%r12,4),%esi
  movslq %esi,%rsi
  shl    $0x3,%rsi
  lea    (%rbx,%rsi,1),%rcx
  lea    -0x7(%rbp),%edi
  test   %edi,%edi
  jle    L626
  mov    %rcx,%rax
  mov    $0x0,%edx
L627:
  movapd %xmm0,%xmm1
  mulsd  (%rax),%xmm1
  movsd  %xmm1,(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x8(%rax),%xmm1
  movsd  %xmm1,0x8(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x10(%rax),%xmm1
  movsd  %xmm1,0x10(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x18(%rax),%xmm1
  movsd  %xmm1,0x18(%rax)
  add    %rsi,%rax
  add    $0x4,%edx
  cmp    %edi,%edx
  jl     L627
  lea    -0x8(%rbp),%eax
  shr    $0x2,%eax
  add    $0x1,%eax
  mov    %eax,%edx
  imul   %rsi,%rdx
  add    %rdx,%rcx
  shl    $0x2,%eax
L339:
  cmp    %eax,0xc(%rsp)
  jle    L87
  lea    -0x5(%rbp),%edx
  sub    %eax,%edx
  lea    0x8(%rcx,%rdx,8),%rax
L582:
  movapd %xmm0,%xmm1
  mulsd  (%rcx),%xmm1
  movsd  %xmm1,(%rcx)
  add    $0x8,%rcx
  cmp    %rax,%rcx
  jne    L582
L87:
  cmp    $0x1,%r15d
  jne    L185
  jmp    L95
L161:
  lea    0x3(%rax),%edx
  cmovns %eax,%edx
  sar    $0x2,%edx
  imul   %r12d,%edx
  shl    $0x2,%edx
  movslq %edx,%rdx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  shr    $0x1e,%ecx
  add    %ecx,%eax
  and    $0x3,%eax
  sub    %ecx,%eax
  cltq
  add    %rdx,%rax
  lea    (%rbx,%rax,8),%rdx
  mov    %rbx,%rsi
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <drowsw_lib@plt>
  jmp    L642
L626:
  mov    $0x0,%eax
  jmp    L339
L101:
  cmp    $0x1,%ebp
  jle    L109
  movapd %xmm0,%xmm1
  mulsd  0x8(%rbx),%xmm1
  movsd  %xmm1,0x8(%rbx)
  cmp    $0x3,%ebp
  jne    L109
  mulsd  0x10(%rbx),%xmm0
  movsd  %xmm0,0x10(%rbx)
L109:
  cmp    $0x1,%ebp
  je     L95
  cmp    $0x1,%r15d
  je     L95
L43:
  movsd  0x20(%rbx),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x8(%rbx),%xmm2
  movsd  0x28(%rbx),%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x30(%rsp)
  movsd  %xmm0,0x28(%rbx)
  cmp    $0x3,%ebp
  jne    L56
  mulsd  0x10(%rbx),%xmm1
  movsd  0x30(%rbx),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x38(%rsp)
  movsd  %xmm0,0x30(%rbx)
  jmp    L56
L601:
  mov    %rdi,%rax
  mov    $0x0,%edx
  jmp    L806
L24:
  cmp    $0x1,%eax
  jne    L479
L42:
  movsd  D22(%rip),%xmm0
  divsd  0x28(%rbx),%xmm0
  movsd  %xmm0,0x30(%rsp)
  movsd  %xmm0,0x8(%r14)
  cmp    $0x3,%ebp
  jle    L391
  movapd %xmm0,%xmm1
  mulsd  0x30(%rbx),%xmm1
  movsd  %xmm1,0x30(%rbx)
  movapd %xmm0,%xmm1
  mulsd  0x38(%rbx),%xmm1
  movsd  %xmm1,0x38(%rbx)
  lea    0x0(,%r12,4),%esi
  movslq %esi,%rsi
  shl    $0x3,%rsi
  lea    (%rbx,%rsi,1),%rcx
  lea    -0x7(%rbp),%edi
  test   %edi,%edi
  jle    L387
  mov    %rcx,%rax
  mov    $0x0,%edx
L182:
  movapd %xmm0,%xmm1
  mulsd  0x20(%rax),%xmm1
  movsd  %xmm1,0x20(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x28(%rax),%xmm1
  movsd  %xmm1,0x28(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x30(%rax),%xmm1
  movsd  %xmm1,0x30(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x38(%rax),%xmm1
  movsd  %xmm1,0x38(%rax)
  add    %rsi,%rax
  add    $0x4,%edx
  cmp    %edi,%edx
  jl     L182
  lea    -0x8(%rbp),%eax
  shr    $0x2,%eax
  add    $0x1,%eax
  mov    %eax,%edx
  imul   %rsi,%rdx
  add    %rdx,%rcx
  shl    $0x2,%eax
L651:
  cmp    %eax,0xc(%rsp)
  jle    L603
  lea    -0x5(%rbp),%edx
  sub    %eax,%edx
  lea    0x8(%rcx,%rdx,8),%rax
L467:
  movapd %xmm0,%xmm1
  mulsd  0x20(%rcx),%xmm1
  movsd  %xmm1,0x20(%rcx)
  add    $0x8,%rcx
  cmp    %rax,%rcx
  jne    L467
L603:
  cmp    $0x2,%r15d
  je     L95
L244:
  movsd  0x40(%rbx),%xmm5
  movsd  0x48(%rbx),%xmm4
  movapd %xmm5,%xmm0
  mulsd  0x8(%rbx),%xmm0
  subsd  %xmm0,%xmm4
  movsd  %xmm4,0x48(%rbx)
  movapd %xmm5,%xmm1
  mulsd  0x18(%rbx),%xmm1
  movsd  0x58(%rbx),%xmm0
  subsd  %xmm1,%xmm0
  movapd %xmm5,%xmm2
  mulsd  0x10(%rbx),%xmm2
  movsd  0x50(%rbx),%xmm1
  subsd  %xmm2,%xmm1
  movapd %xmm4,%xmm2
  mulsd  0x30(%rbx),%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x38(%rsp)
  movapd %xmm4,%xmm2
  mulsd  0x38(%rbx),%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm1,0x50(%rbx)
  movsd  %xmm0,0x58(%rbx)
  lea    0x0(,%r12,4),%ecx
  movslq %ecx,%rcx
  shl    $0x3,%rcx
  lea    (%rbx,%rcx,1),%rdi
  lea    -0x7(%rbp),%esi
  test   %esi,%esi
  jle    L700
  mov    %rdi,%rax
  mov    $0x0,%edx
L367:
  movapd %xmm5,%xmm0
  mulsd  (%rax),%xmm0
  movsd  0x40(%rax),%xmm3
  subsd  %xmm0,%xmm3
  movapd %xmm4,%xmm0
  mulsd  0x20(%rax),%xmm0
  subsd  %xmm0,%xmm3
  movapd %xmm5,%xmm0
  mulsd  0x8(%rax),%xmm0
  movsd  0x48(%rax),%xmm2
  subsd  %xmm0,%xmm2
  movapd %xmm4,%xmm0
  mulsd  0x28(%rax),%xmm0
  subsd  %xmm0,%xmm2
  movapd %xmm5,%xmm0
  mulsd  0x10(%rax),%xmm0
  movsd  0x50(%rax),%xmm1
  subsd  %xmm0,%xmm1
  movapd %xmm4,%xmm0
  mulsd  0x30(%rax),%xmm0
  subsd  %xmm0,%xmm1
  movapd %xmm5,%xmm6
  mulsd  0x18(%rax),%xmm6
  movsd  0x58(%rax),%xmm0
  subsd  %xmm6,%xmm0
  movapd %xmm4,%xmm6
  mulsd  0x38(%rax),%xmm6
  subsd  %xmm6,%xmm0
  movsd  %xmm3,0x40(%rax)
  movsd  %xmm2,0x48(%rax)
  movsd  %xmm1,0x50(%rax)
  movsd  %xmm0,0x58(%rax)
  add    %rcx,%rax
  add    $0x4,%edx
  cmp    %esi,%edx
  jl     L367
  lea    -0x8(%rbp),%esi
  shr    $0x2,%esi
  mov    %esi,%eax
  lea    0x1(%rax),%rdx
  imul   %rcx,%rdx
  add    %rdi,%rdx
  lea    0x4(,%rsi,4),%esi
  imul   %rcx,%rax
  add    %rdi,%rax
  movsd  %xmm3,0x28(%rsp)
  movsd  %xmm2,0x30(%rsp)
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm3,0x40(%rax)
  movsd  %xmm2,0x48(%rax)
  movsd  %xmm1,0x50(%rax)
  movsd  %xmm0,0x58(%rax)
L251:
  cmp    %esi,0xc(%rsp)
  jle    L793
  lea    -0x5(%rbp),%ecx
  sub    %esi,%ecx
  lea    0x8(%rdx,%rcx,8),%rsi
  mov    %rdx,%rax
L287:
  movapd %xmm5,%xmm1
  mulsd  (%rax),%xmm1
  movsd  0x40(%rax),%xmm0
  subsd  %xmm1,%xmm0
  movapd %xmm4,%xmm1
  mulsd  0x20(%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x40(%rax)
  add    $0x8,%rax
  cmp    %rsi,%rax
  jne    L287
  movsd  %xmm0,0x28(%rsp)
  movsd  %xmm0,0x40(%rdx,%rcx,8)
L793:
  lea    0x50(%rbx),%rdx
  lea    -0x2(%rbp),%edi
  lea    0x38(%rsp),%r9
  lea    0x24(%rsp),%r8
  mov    %r12d,%ecx
  mov    $0x2,%esi
  mov    $0x0,%eax
  call   <idamax_lib4@plt>
  mov    0x24(%rsp),%eax
  add    $0x2,%eax
  mov    %eax,0x8(%r13)
  pxor   %xmm0,%xmm0
  ucomisd 0x38(%rsp),%xmm0
  jp     L542
  jne    L542
  movq   $0x0,0x10(%r14)
  jmp    L605
L479:
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovns %eax,%edx
  sar    $0x2,%edx
  imul   %r12d,%edx
  shl    $0x2,%edx
  movslq %edx,%rdx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  shr    $0x1e,%ecx
  add    %ecx,%eax
  and    $0x3,%eax
  sub    %ecx,%eax
  cltq
  add    %rdx,%rax
  lea    (%rbx,%rax,8),%rdx
  lea    0x8(%rbx),%rsi
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <drowsw_lib@plt>
  jmp    L42
L387:
  mov    $0x0,%eax
  jmp    L651
L391:
  jne    L543
  mulsd  0x30(%rbx),%xmm0
  movsd  %xmm0,0x30(%rbx)
  cmp    $0x2,%r15d
  je     L95
  movsd  0x40(%rbx),%xmm1
  movsd  0x48(%rbx),%xmm0
  movapd %xmm1,%xmm2
  mulsd  0x8(%rbx),%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x48(%rbx)
L841:
  movapd %xmm1,%xmm2
  mulsd  0x10(%rbx),%xmm2
  movsd  0x50(%rbx),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  0x30(%rbx),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm1,0x50(%rbx)
  jmp    L793
L700:
  mov    %rdi,%rdx
  mov    $0x0,%esi
  jmp    L251
L542:
  cmp    $0x2,%eax
  jne    L281
L481:
  movsd  D22(%rip),%xmm0
  divsd  0x50(%rbx),%xmm0
  movsd  %xmm0,0x38(%rsp)
  movsd  %xmm0,0x10(%r14)
  cmp    $0x3,%ebp
  jle    L178
  movapd %xmm0,%xmm1
  mulsd  0x58(%rbx),%xmm1
  movsd  %xmm1,0x58(%rbx)
  lea    0x0(,%r12,4),%esi
  movslq %esi,%rsi
  shl    $0x3,%rsi
  lea    (%rbx,%rsi,1),%rcx
  lea    -0x7(%rbp),%edi
  test   %edi,%edi
  jle    L717
  mov    %rcx,%rax
  mov    $0x0,%edx
L13:
  movapd %xmm0,%xmm1
  mulsd  0x40(%rax),%xmm1
  movsd  %xmm1,0x40(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x48(%rax),%xmm1
  movsd  %xmm1,0x48(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x50(%rax),%xmm1
  movsd  %xmm1,0x50(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x58(%rax),%xmm1
  movsd  %xmm1,0x58(%rax)
  add    %rsi,%rax
  add    $0x4,%edx
  cmp    %edi,%edx
  jl     L13
  lea    -0x8(%rbp),%eax
  shr    $0x2,%eax
  add    $0x1,%eax
  mov    %eax,%edx
  imul   %rsi,%rdx
  add    %rdx,%rcx
  shl    $0x2,%eax
L564:
  cmp    %eax,0xc(%rsp)
  jle    L771
  lea    -0x5(%rbp),%edx
  sub    %eax,%edx
  lea    0x8(%rcx,%rdx,8),%rax
L504:
  movapd %xmm0,%xmm1
  mulsd  0x40(%rcx),%xmm1
  movsd  %xmm1,0x40(%rcx)
  add    $0x8,%rcx
  cmp    %rax,%rcx
  jne    L504
L771:
  cmp    $0x3,%r15d
  jg     L340
  jmp    L95
L281:
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovns %eax,%edx
  sar    $0x2,%edx
  imul   %r12d,%edx
  shl    $0x2,%edx
  movslq %edx,%rdx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  shr    $0x1e,%ecx
  add    %ecx,%eax
  and    $0x3,%eax
  sub    %ecx,%eax
  cltq
  add    %rdx,%rax
  lea    (%rbx,%rax,8),%rdx
  lea    0x10(%rbx),%rsi
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <drowsw_lib@plt>
  jmp    L481
L717:
  mov    $0x0,%eax
  jmp    L564
L635:
  mov    0x18(%rsp),%rdx
  mov    $0x0,%ecx
  jmp    L861
L271:
  cmp    $0x3,%eax
  jne    L649
L196:
  movsd  D22(%rip),%xmm0
  divsd  0x78(%rbx),%xmm0
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm0,0x18(%r14)
  test   %r15d,%r15d
  jle    L535
  mov    0x18(%rsp),%rax
  mov    $0x0,%edx
L464:
  movapd %xmm0,%xmm1
  mulsd  0x60(%rax),%xmm1
  movsd  %xmm1,0x60(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x68(%rax),%xmm1
  movsd  %xmm1,0x68(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x70(%rax),%xmm1
  movsd  %xmm1,0x70(%rax)
  movapd %xmm0,%xmm1
  mulsd  0x78(%rax),%xmm1
  movsd  %xmm1,0x78(%rax)
  add    0x10(%rsp),%rax
  add    $0x4,%edx
  cmp    %r15d,%edx
  jl     L464
  lea    -0x8(%rbp),%eax
  shr    $0x2,%eax
  add    $0x1,%eax
  mov    %eax,%edx
  imul   0x10(%rsp),%rdx
  add    %rdx,0x18(%rsp)
  shl    $0x2,%eax
L768:
  cmp    %eax,0xc(%rsp)
  jle    L95
  sub    $0x5,%ebp
  sub    %eax,%ebp
  mov    0x18(%rsp),%rdx
  lea    0x8(%rdx,%rbp,8),%rax
L190:
  movapd %xmm0,%xmm1
  mulsd  0x60(%rdx),%xmm1
  movsd  %xmm1,0x60(%rdx)
  add    $0x8,%rdx
  cmp    %rdx,%rax
  jne    L190
  jmp    L95
L649:
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovns %eax,%edx
  sar    $0x2,%edx
  imul   %r12d,%edx
  shl    $0x2,%edx
  movslq %edx,%rdx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  shr    $0x1e,%ecx
  add    %ecx,%eax
  and    $0x3,%eax
  sub    %ecx,%eax
  cltq
  add    %rdx,%rax
  lea    (%rbx,%rax,8),%rdx
  lea    0x18(%rbx),%rsi
  mov    $0x4,%edi
  mov    $0x0,%eax
  call   <drowsw_lib@plt>
  jmp    L196
L535:
  mov    $0x0,%eax
  jmp    L768
L178:
  cmp    $0x3,%r15d
  jle    L95
L446:
  movsd  0x60(%rbx),%xmm1
  movsd  0x68(%rbx),%xmm0
  movapd %xmm1,%xmm2
  mulsd  0x8(%rbx),%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x68(%rbx)
  cmp    $0x3,%ebp
  jne    L95
  movsd  0x70(%rbx),%xmm2
  mulsd  0x10(%rbx),%xmm1
  subsd  %xmm1,%xmm2
  mulsd  0x30(%rbx),%xmm0
  subsd  %xmm0,%xmm2
  movsd  %xmm2,0x70(%rbx)
L95:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L826
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L543:
  cmp    $0x2,%r15d
  je     L95
  movsd  0x48(%rbx),%xmm0
  movsd  0x8(%rbx),%xmm1
  mulsd  0x40(%rbx),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x48(%rbx)
  jmp    L397
L826:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D22
type_guessed: f64

tool: D22: 1

assistant: ```c
void kernel_dgetrf_pivot_4_vs_lib4(int m, int n, double *pA, int sda, double *inv_diag_A, int *ipiv) {
  if (m <= 0 || n <= 0)
    return;
  const int bs = 4;
  int ma = m - 4;
  double tmp0, tmp1, tmp2, tmp3, u_00, u_01, u_02, u_03, u_11, u_12, u_13, u_22, u_23, u_33;
  double *pB;
  int k, idamax;
  idamax_lib4(m - 0, 0, &pA[0 + bs * 0], sda, &idamax, &tmp0);
  ipiv[0] = idamax;
  if (tmp0 != 0.0) {
    if (ipiv[0] != 0)
      drowsw_lib(4, pA + 0, pA + ipiv[0] / bs * bs * sda + ipiv[0] % bs);
    tmp0 = 1.0 / pA[0 + bs * 0];
    inv_diag_A[0] = tmp0;
    if (m >= 4) {
      pA[1 + bs * 0] *= tmp0;
      pA[2 + bs * 0] *= tmp0;
      pA[3 + bs * 0] *= tmp0;
      pB = pA + bs * sda;
      for (k = 0; k < ma - 3; k += 4) {
        pB[0 + bs * 0] *= tmp0;
        pB[1 + bs * 0] *= tmp0;
        pB[2 + bs * 0] *= tmp0;
        pB[3 + bs * 0] *= tmp0;
        pB += bs * sda;
      }
      for (; k < ma; k++) {
        pB[0 + bs * 0] *= tmp0;
        pB += 1;
      }
    } else {
      if (m > 1) {
        pA[1 + bs * 0] *= tmp0;
        if (m > 2)
          pA[2 + bs * 0] *= tmp0;
      }
    }
  } else {
    inv_diag_A[0] = 0.0;
  }
  if (n == 1 || m == 1)
    return;
  if (m >= 4) {
    u_01 = pA[0 + bs * 1];
    tmp1 = pA[1 + bs * 1];
    tmp2 = pA[2 + bs * 1];
    tmp3 = pA[3 + bs * 1];
    tmp1 -= pA[1 + bs * 0] * u_01;
    tmp2 -= pA[2 + bs * 0] * u_01;
    tmp3 -= pA[3 + bs * 0] * u_01;
    pA[1 + bs * 1] = tmp1;
    pA[2 + bs * 1] = tmp2;
    pA[3 + bs * 1] = tmp3;
    pB = pA + bs * sda;
    for (k = 0; k < ma - 3; k += 4) {
      tmp0 = pB[0 + bs * 1];
      tmp1 = pB[1 + bs * 1];
      tmp2 = pB[2 + bs * 1];
      tmp3 = pB[3 + bs * 1];
      tmp0 -= pB[0 + bs * 0] * u_01;
      tmp1 -= pB[1 + bs * 0] * u_01;
      tmp2 -= pB[2 + bs * 0] * u_01;
      tmp3 -= pB[3 + bs * 0] * u_01;
      pB[0 + bs * 1] = tmp0;
      pB[1 + bs * 1] = tmp1;
      pB[2 + bs * 1] = tmp2;
      pB[3 + bs * 1] = tmp3;
      pB += bs * sda;
    }
    for (; k < ma; k++) {
      tmp0 = pB[0 + bs * 1];
      tmp0 -= pB[0 + bs * 0] * u_01;
      pB[0 + bs * 1] = tmp0;
      pB += 1;
    }
  } else {
    u_01 = pA[0 + bs * 1];
    tmp1 = pA[1 + bs * 1];
    tmp1 -= pA[1 + bs * 0] * u_01;
    pA[1 + bs * 1] = tmp1;
    if (m > 2) {
      tmp2 = pA[2 + bs * 1];
      tmp2 -= pA[2 + bs * 0] * u_01;
      pA[2 + bs * 1] = tmp2;
    }
  }
  idamax_lib4(m - 1, 1, &pA[1 + bs * 1], sda, &idamax, &tmp1);
  ipiv[1] = idamax + 1;
  if (tmp1 != 0) {
    if (ipiv[1] != 1)
      drowsw_lib(4, pA + 1, pA + ipiv[1] / bs * bs * sda + ipiv[1] % bs);
    tmp1 = 1.0 / pA[1 + bs * 1];
    inv_diag_A[1] = tmp1;
    if (m >= 4) {
      pA[2 + bs * 1] *= tmp1;
      pA[3 + bs * 1] *= tmp1;
      pB = pA + bs * sda;
      for (k = 0; k < ma - 3; k += 4) {
        pB[0 + bs * 1] *= tmp1;
        pB[1 + bs * 1] *= tmp1;
        pB[2 + bs * 1] *= tmp1;
        pB[3 + bs * 1] *= tmp1;
        pB += bs * sda;
      }
      for (; k < ma; k++) {
        pB[0 + bs * 1] *= tmp1;
        pB += 1;
      }
    } else {
      if (m > 2)
        pA[2 + bs * 1] *= tmp1;
    }
  } else {
    inv_diag_A[1] = 0.0;
  }
  if (n == 2)
    return;
  if (m >= 4) {
    u_02 = pA[0 + bs * 2];
    u_12 = pA[1 + bs * 2];
    u_12 -= pA[1 + bs * 0] * u_02;
    pA[1 + bs * 2] = u_12;
    tmp2 = pA[2 + bs * 2];
    tmp3 = pA[3 + bs * 2];
    tmp2 -= pA[2 + bs * 0] * u_02;
    tmp3 -= pA[3 + bs * 0] * u_02;
    tmp2 -= pA[2 + bs * 1] * u_12;
    tmp3 -= pA[3 + bs * 1] * u_12;
    pA[2 + bs * 2] = tmp2;
    pA[3 + bs * 2] = tmp3;
    pB = pA + bs * sda;
    for (k = 0; k < ma - 3; k += 4) {
      tmp0 = pB[0 + bs * 2];
      tmp1 = pB[1 + bs * 2];
      tmp2 = pB[2 + bs * 2];
      tmp3 = pB[3 + bs * 2];
      tmp0 -= pB[0 + bs * 0] * u_02;
      tmp1 -= pB[1 + bs * 0] * u_02;
      tmp2 -= pB[2 + bs * 0] * u_02;
      tmp3 -= pB[3 + bs * 0] * u_02;
      tmp0 -= pB[0 + bs * 1] * u_12;
      tmp1 -= pB[1 + bs * 1] * u_12;
      tmp2 -= pB[2 + bs * 1] * u_12;
      tmp3 -= pB[3 + bs * 1] * u_12;
      pB[0 + bs * 2] = tmp0;
      pB[1 + bs * 2] = tmp1;
      pB[2 + bs * 2] = tmp2;
      pB[3 + bs * 2] = tmp3;
      pB += bs * sda;
    }
    for (; k < ma; k++) {
      tmp0 = pB[0 + bs * 2];
      tmp0 -= pB[0 + bs * 0] * u_02;
      tmp0 -= pB[0 + bs * 1] * u_12;
      pB[0 + bs * 2] = tmp0;
      pB += 1;
    }
  } else {
    u_02 = pA[0 + bs * 2];
    u_12 = pA[1 + bs * 2];
    u_12 -= pA[1 + bs * 0] * u_02;
    pA[1 + bs * 2] = u_12;
    if (m > 2) {
      tmp2 = pA[2 + bs * 2];
      tmp2 -= pA[2 + bs * 0] * u_02;
      tmp2 -= pA[2 + bs * 1] * u_12;
      pA[2 + bs * 2] = tmp2;
    }
  }
  if (m > 2) {
    idamax_lib4(m - 2, 2, &pA[2 + bs * 2], sda, &idamax, &tmp2);
    ipiv[2] = idamax + 2;
    if (tmp2 != 0) {
      if (ipiv[2] != 2)
        drowsw_lib(4, pA + 2, pA + ipiv[2] / bs * bs * sda + ipiv[2] % bs);
      tmp2 = 1.0 / pA[2 + bs * 2];
      inv_diag_A[2] = tmp2;
      if (m >= 4) {
        pA[3 + bs * 2] *= tmp2;
        pB = pA + bs * sda;
        for (k = 0; k < ma - 3; k += 4) {
          pB[0 + bs * 2] *= tmp2;
          pB[1 + bs * 2] *= tmp2;
          pB[2 + bs * 2] *= tmp2;
          pB[3 + bs * 2] *= tmp2;
          pB += bs * sda;
        }
        for (; k < ma; k++) {
          pB[0 + bs * 2] *= tmp2;
          pB += 1;
        }
      }
    } else {
      inv_diag_A[2] = 0.0;
    }
  }
  if (n < 4)
    return;
  if (m >= 4) {
    u_03 = pA[0 + bs * 3];
    u_13 = pA[1 + bs * 3];
    u_13 -= pA[1 + bs * 0] * u_03;
    pA[1 + bs * 3] = u_13;
    u_23 = pA[2 + bs * 3];
    u_23 -= pA[2 + bs * 0] * u_03;
    u_23 -= pA[2 + bs * 1] * u_13;
    pA[2 + bs * 3] = u_23;
    tmp3 = pA[3 + bs * 3];
    tmp3 -= pA[3 + bs * 0] * u_03;
    tmp3 -= pA[3 + bs * 1] * u_13;
    tmp3 -= pA[3 + bs * 2] * u_23;
    pA[3 + bs * 3] = tmp3;
    pB = pA + bs * sda;
    for (k = 0; k < ma - 3; k += 4) {
      tmp0 = pB[0 + bs * 3];
      tmp1 = pB[1 + bs * 3];
      tmp2 = pB[2 + bs * 3];
      tmp3 = pB[3 + bs * 3];
      tmp0 -= pB[0 + bs * 0] * u_03;
      tmp1 -= pB[1 + bs * 0] * u_03;
      tmp2 -= pB[2 + bs * 0] * u_03;
      tmp3 -= pB[3 + bs * 0] * u_03;
      tmp0 -= pB[0 + bs * 1] * u_13;
      tmp1 -= pB[1 + bs * 1] * u_13;
      tmp2 -= pB[2 + bs * 1] * u_13;
      tmp3 -= pB[3 + bs * 1] * u_13;
      tmp0 -= pB[0 + bs * 2] * u_23;
      tmp1 -= pB[1 + bs * 2] * u_23;
      tmp2 -= pB[2 + bs * 2] * u_23;
      tmp3 -= pB[3 + bs * 2] * u_23;
      pB[0 + bs * 3] = tmp0;
      pB[1 + bs * 3] = tmp1;
      pB[2 + bs * 3] = tmp2;
      pB[3 + bs * 3] = tmp3;
      pB += bs * sda;
    }
    for (; k < ma; k++) {
      tmp0 = pB[0 + bs * 3];
      tmp0 -= pB[0 + bs * 0] * u_03;
      tmp0 -= pB[0 + bs * 1] * u_13;
      tmp0 -= pB[0 + bs * 2] * u_23;
      pB[0 + bs * 3] = tmp0;
      pB += 1;
    }
  } else {
    u_03 = pA[0 + bs * 3];
    u_13 = pA[1 + bs * 3];
    u_13 -= pA[1 + bs * 0] * u_03;
    pA[1 + bs * 3] = u_13;
    if (m > 2) {
      u_23 = pA[2 + bs * 3];
      u_23 -= pA[2 + bs * 0] * u_03;
      u_23 -= pA[2 + bs * 1] * u_13;
      pA[2 + bs * 3] = u_23;
    }
  }
  if (m > 3) {
    idamax_lib4(m - 3, 3, &pA[3 + bs * 3], sda, &idamax, &tmp3);
    ipiv[3] = idamax + 3;
    if (tmp3 != 0) {
      if (ipiv[3] != 3)
        drowsw_lib(4, pA + 3, pA + ipiv[3] / bs * bs * sda + ipiv[3] % bs);
      tmp3 = 1.0 / pA[3 + bs * 3];
      inv_diag_A[3] = tmp3;
      pB = pA + bs * sda;
      for (k = 0; k < ma - 3; k += 4) {
        pB[0 + bs * 3] *= tmp3;
        pB[1 + bs * 3] *= tmp3;
        pB[2 + bs * 3] *= tmp3;
        pB[3 + bs * 3] *= tmp3;
        pB += bs * sda;
      }
      for (; k < ma; k++) {
        pB[0 + bs * 3] *= tmp3;
        pB += 1;
      }
    } else {
      inv_diag_A[3] = 0.0;
    }
  }
  return;
}
```