user: Demonstrate the C code that generates the assembly output below:

```asm
<kernel_dgetrf_pivot_4_vs_lib4>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %r8,(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  test   %edi,%edi
  jle    L965
  mov    %esi,%r12d
  test   %esi,%esi
  jle    L965
  lea    -0x4(%rdi),%eax
  lea    0x24(%rsp),%r8
  mov    %r9,%r13
  xor    %esi,%esi
  mov    %eax,0x18(%rsp)
  lea    0x28(%rsp),%r9
  xor    %eax,%eax
  mov    %edi,%ebp
  mov    %r8,0x8(%rsp)
  mov    %rdx,%rbx
  mov    %ecx,%r14d
  call   <idamax_lib4@plt>
  pxor   %xmm7,%xmm7
  ucomisd 0x28(%rsp),%xmm7
  mov    0x24(%rsp),%eax
  mov    0x8(%rsp),%r8
  mov    %eax,0x0(%r13)
  jp     L180
  je     L986
L180:
  test   %eax,%eax
  jne    L117
L999:
  mov    (%rsp),%rax
  movsd  D31(%rip),%xmm2
  divsd  (%rbx),%xmm2
  movapd %xmm2,%xmm3
  unpcklpd %xmm3,%xmm3
  movsd  %xmm2,0x28(%rsp)
  movsd  %xmm2,(%rax)
  cmp    $0x3,%ebp
  jle    L929
  movupd 0x8(%rbx),%xmm0
  lea    0x0(,%r14,4),%edi
  lea    -0x7(%rbp),%edx
  xor    %esi,%esi
  movslq %edi,%rdi
  mulpd  %xmm3,%xmm0
  shl    $0x3,%rdi
  lea    (%rbx,%rdi,1),%r9
  mov    %r9,%rax
  movups %xmm0,0x8(%rbx)
  movsd  0x18(%rbx),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x18(%rbx)
  test   %edx,%edx
  jle    L248
  cmp    $0x1,%r14d
  jne    L188
  nopl   0x0(%rax)
L648:
  movupd 0x10(%rax),%xmm0
  movupd (%rax),%xmm1
  add    $0x4,%esi
  mulpd  %xmm3,%xmm0
  mulpd  %xmm3,%xmm1
  movups %xmm0,0x10(%rax)
  movups %xmm1,(%rax)
  add    %rdi,%rax
  cmp    %esi,%edx
  jg     L648
L781:
  lea    -0x8(%rbp),%esi
  shr    $0x2,%esi
  lea    0x1(%rsi),%eax
  mov    %rax,%rsi
  imul   %rdi,%rax
  shl    $0x2,%esi
  add    %r9,%rax
L248:
  cmp    %esi,0x18(%rsp)
  jle    L719
  mov    %ebp,%r10d
  sub    %esi,%r10d
  lea    -0x4(%r10),%esi
  cmp    $0x5,%r10d
  je     L865
  movupd (%rax),%xmm0
  mov    %esi,%r10d
  shr    %r10d
  mulpd  %xmm3,%xmm0
  movups %xmm0,(%rax)
  cmp    $0x1,%r10d
  jne    L309
L157:
  mov    %esi,%r10d
  and    $0xfffffffe,%r10d
  mov    %r10d,%r11d
  lea    (%rax,%r11,8),%rax
  cmp    %r10d,%esi
  je     L719
L865:
  mulsd  (%rax),%xmm2
  movsd  %xmm2,(%rax)
L719:
  cmp    $0x1,%r12d
  je     L965
L393:
  movsd  0x20(%rbx),%xmm0
  movsd  0x8(%rbx),%xmm4
  movsd  0x28(%rbx),%xmm3
  movsd  0x30(%rbx),%xmm2
  mulsd  %xmm0,%xmm4
  movsd  0x38(%rbx),%xmm1
  subsd  %xmm4,%xmm3
  movsd  0x10(%rbx),%xmm4
  mulsd  %xmm0,%xmm4
  movsd  %xmm3,0x30(%rsp)
  movsd  %xmm3,0x28(%rbx)
  subsd  %xmm4,%xmm2
  movsd  0x18(%rbx),%xmm4
  mulsd  %xmm0,%xmm4
  movsd  %xmm2,0x38(%rsp)
  movsd  %xmm2,0x30(%rbx)
  subsd  %xmm4,%xmm1
  movsd  %xmm1,0x40(%rsp)
  movsd  %xmm1,0x38(%rbx)
  test   %edx,%edx
  jle    L31
  mov    %r9,%rax
  xor    %esi,%esi
  nopw   0x0(%rax,%rax,1)
L899:
  movsd  (%rax),%xmm1
  movsd  0x20(%rax),%xmm4
  add    $0x4,%esi
  movsd  0x28(%rax),%xmm3
  movsd  0x18(%rax),%xmm5
  mulsd  %xmm0,%xmm1
  movsd  0x30(%rax),%xmm2
  mulsd  %xmm0,%xmm5
  subsd  %xmm1,%xmm4
  movsd  0x8(%rax),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm4,0x20(%rax)
  subsd  %xmm1,%xmm3
  movsd  0x10(%rax),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm3,0x28(%rax)
  subsd  %xmm1,%xmm2
  movsd  0x38(%rax),%xmm1
  subsd  %xmm5,%xmm1
  movsd  %xmm2,0x30(%rax)
  movsd  %xmm1,0x38(%rax)
  add    %rdi,%rax
  cmp    %edx,%esi
  jl     L899
  sub    $0x1,%edx
  movsd  %xmm4,0x28(%rsp)
  shr    $0x2,%edx
  movsd  %xmm3,0x30(%rsp)
  lea    0x1(%rdx),%eax
  movsd  %xmm2,0x38(%rsp)
  mov    %rax,%rdx
  imul   %rdi,%rax
  movsd  %xmm1,0x40(%rsp)
  shl    $0x2,%edx
  add    %rax,%r9
L305:
  cmp    %edx,0x18(%rsp)
  jle    L266
  mov    %ebp,%eax
  sub    %edx,%eax
  lea    -0x4(%rax),%edx
  cmp    $0x5,%eax
  je     L571
  movupd (%r9),%xmm2
  movapd %xmm0,%xmm3
  movupd 0x20(%r9),%xmm1
  mov    %edx,%eax
  unpcklpd %xmm3,%xmm3
  shr    %eax
  mulpd  %xmm3,%xmm2
  subpd  %xmm2,%xmm1
  movups %xmm1,0x20(%r9)
  cmp    $0x1,%eax
  je     L334
  movupd 0x10(%r9),%xmm2
  movupd 0x30(%r9),%xmm1
  mulpd  %xmm3,%xmm2
  subpd  %xmm2,%xmm1
  movups %xmm1,0x30(%r9)
L334:
  mov    %edx,%eax
  unpckhpd %xmm1,%xmm1
  and    $0xfffffffe,%eax
  mov    %eax,%esi
  lea    (%r9,%rsi,8),%r9
  cmp    %edx,%eax
  je     L373
L571:
  mulsd  (%r9),%xmm0
  movsd  0x20(%r9),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x20(%r9)
L373:
  movsd  %xmm1,0x28(%rsp)
  jmp    L266
  nopl   0x0(%rax,%rax,1)
L986:
  mov    (%rsp),%rax
  movq   $0x0,(%rax)
  cmp    $0x1,%r12d
  je     L965
  cmp    $0x1,%ebp
  je     L965
  movsd  0x8(%rbx),%xmm1
  cmp    $0x3,%ebp
  jg     L1042
  movsd  0x20(%rbx),%xmm2
  movsd  0x28(%rbx),%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x30(%rsp)
  movsd  %xmm0,0x28(%rbx)
  je     L119
L266:
  xor    %eax,%eax
  lea    0x28(%rbx),%rdx
  lea    -0x1(%rbp),%edi
  mov    %r14d,%ecx
  lea    0x30(%rsp),%r9
  mov    $0x1,%esi
  mov    %r8,0x8(%rsp)
  call   <idamax_lib4@plt>
  mov    0x24(%rsp),%eax
  pxor   %xmm7,%xmm7
  mov    0x8(%rsp),%r8
  add    $0x1,%eax
  ucomisd 0x30(%rsp),%xmm7
  mov    %eax,0x4(%r13)
  jp     L623
  je     L176
L623:
  cmp    $0x1,%eax
  je     L491
  test   %eax,%eax
  lea    0x3(%rax),%edx
  mov    %eax,%esi
  mov    $0x4,%edi
  cmovns %eax,%edx
  sar    $0x1f,%esi
  mov    %r8,0x8(%rsp)
  shr    $0x1e,%esi
  sar    $0x2,%edx
  add    %esi,%eax
  imul   %r14d,%edx
  and    $0x3,%eax
  sub    %esi,%eax
  lea    0x8(%rbx),%rsi
  cltq
  shl    $0x2,%edx
  movslq %edx,%rdx
  add    %rax,%rdx
  xor    %eax,%eax
  lea    (%rbx,%rdx,8),%rdx
  call   <drowsw_lib@plt>
  mov    0x8(%rsp),%r8
L491:
  mov    (%rsp),%rax
  movsd  D31(%rip),%xmm3
  divsd  0x28(%rbx),%xmm3
  movapd %xmm3,%xmm2
  unpcklpd %xmm2,%xmm2
  movsd  %xmm3,0x30(%rsp)
  movsd  %xmm3,0x8(%rax)
  cmp    $0x3,%ebp
  jle    L1057
  movupd 0x30(%rbx),%xmm0
  lea    0x0(,%r14,4),%r9d
  lea    -0x7(%rbp),%esi
  xor    %edx,%edx
  movslq %r9d,%r9
  mulpd  %xmm2,%xmm0
  shl    $0x3,%r9
  lea    (%rbx,%r9,1),%rdi
  mov    %rdi,%rax
  movups %xmm0,0x30(%rbx)
  test   %esi,%esi
  jle    L412
  cmp    $0x1,%r14d
  jne    L506
L327:
  movupd 0x30(%rax),%xmm0
  movupd 0x20(%rax),%xmm1
  add    $0x4,%edx
  mulpd  %xmm2,%xmm0
  mulpd  %xmm2,%xmm1
  movups %xmm0,0x30(%rax)
  movups %xmm1,0x20(%rax)
  add    %r9,%rax
  cmp    %edx,%esi
  jg     L327
L637:
  lea    -0x8(%rbp),%edx
  shr    $0x2,%edx
  lea    0x1(%rdx),%eax
  mov    %rax,%rdx
  imul   %r9,%rax
  shl    $0x2,%edx
  add    %rdi,%rax
L412:
  cmp    %edx,0x18(%rsp)
  jle    L509
  mov    %ebp,%r10d
  sub    %edx,%r10d
  lea    -0x4(%r10),%edx
  cmp    $0x5,%r10d
  je     L351
  movupd 0x20(%rax),%xmm0
  mov    %edx,%r10d
  shr    %r10d
  mulpd  %xmm2,%xmm0
  movups %xmm0,0x20(%rax)
  cmp    $0x1,%r10d
  je     L311
  movupd 0x30(%rax),%xmm0
  mulpd  %xmm2,%xmm0
  movups %xmm0,0x30(%rax)
L311:
  mov    %edx,%r10d
  and    $0xfffffffe,%r10d
  mov    %r10d,%r11d
  lea    (%rax,%r11,8),%rax
  cmp    %edx,%r10d
  je     L509
L351:
  mulsd  0x20(%rax),%xmm3
  movsd  %xmm3,0x20(%rax)
L509:
  cmp    $0x2,%r12d
  je     L965
L659:
  movsd  0x40(%rbx),%xmm6
  movsd  0x10(%rbx),%xmm2
  movsd  0x50(%rbx),%xmm1
  movsd  0x48(%rbx),%xmm0
  mulsd  %xmm6,%xmm2
  movapd %xmm0,%xmm7
  subsd  %xmm2,%xmm1
  movsd  0x8(%rbx),%xmm2
  mulsd  %xmm6,%xmm2
  unpcklpd %xmm1,%xmm7
  movupd 0x28(%rbx),%xmm1
  movlpd 0x8(%rbx),%xmm1
  subsd  %xmm2,%xmm0
  movapd %xmm6,%xmm2
  unpcklpd %xmm0,%xmm2
  movsd  0x58(%rbx),%xmm0
  mulpd  %xmm2,%xmm1
  subpd  %xmm1,%xmm7
  movsd  0x18(%rbx),%xmm1
  mulsd  %xmm6,%xmm1
  movapd %xmm7,%xmm5
  movhpd %xmm7,0x38(%rsp)
  movups %xmm7,0x48(%rbx)
  subsd  %xmm1,%xmm0
  movsd  0x38(%rbx),%xmm1
  mulsd  %xmm7,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm0,0x58(%rbx)
  test   %esi,%esi
  jle    L962
  sub    $0x1,%esi
  movapd %xmm6,%xmm4
  movapd %xmm7,%xmm3
  xor    %edx,%edx
  unpcklpd %xmm4,%xmm4
  shr    $0x2,%esi
  unpcklpd %xmm7,%xmm3
  lea    0x40(%rdi),%rax
  add    $0x1,%esi
  nopw   0x0(%rax,%rax,1)
L961:
  movupd -0x40(%rax),%xmm0
  movupd (%rax),%xmm1
  add    $0x1,%edx
  movupd -0x30(%rax),%xmm2
  mulpd  %xmm4,%xmm0
  mulpd  %xmm4,%xmm2
  subpd  %xmm0,%xmm1
  movupd -0x20(%rax),%xmm0
  mulpd  %xmm3,%xmm0
  subpd  %xmm0,%xmm1
  movupd 0x10(%rax),%xmm0
  subpd  %xmm2,%xmm0
  movupd -0x10(%rax),%xmm2
  movups %xmm1,(%rax)
  mulpd  %xmm3,%xmm2
  subpd  %xmm2,%xmm0
  movups %xmm0,0x10(%rax)
  add    %r9,%rax
  cmp    %edx,%esi
  ja     L961
  mov    %esi,%eax
  movups %xmm1,0x28(%rsp)
  shl    $0x2,%esi
  imul   %r9,%rax
  movups %xmm0,0x38(%rsp)
  add    %rax,%rdi
L910:
  cmp    %esi,0x18(%rsp)
  jle    L803
  mov    %ebp,%eax
  sub    %esi,%eax
  lea    -0x4(%rax),%edx
  cmp    $0x5,%eax
  je     L849
  movupd (%rdi),%xmm1
  movapd %xmm6,%xmm2
  movupd 0x40(%rdi),%xmm0
  mov    %edx,%eax
  unpcklpd %xmm2,%xmm2
  unpcklpd %xmm7,%xmm7
  shr    %eax
  mulpd  %xmm2,%xmm1
  subpd  %xmm1,%xmm0
  movupd 0x20(%rdi),%xmm1
  mulpd  %xmm7,%xmm1
  subpd  %xmm1,%xmm0
  movups %xmm0,0x40(%rdi)
  cmp    $0x1,%eax
  je     L1055
  movupd 0x10(%rdi),%xmm1
  movupd 0x50(%rdi),%xmm0
  mulpd  %xmm2,%xmm1
  subpd  %xmm1,%xmm0
  movupd 0x30(%rdi),%xmm1
  mulpd  %xmm7,%xmm1
  subpd  %xmm1,%xmm0
  movups %xmm0,0x50(%rdi)
L1055:
  mov    %edx,%eax
  unpckhpd %xmm0,%xmm0
  and    $0xfffffffe,%eax
  mov    %eax,%esi
  lea    (%rdi,%rsi,8),%rdi
  cmp    %edx,%eax
  je     L890
L849:
  mulsd  (%rdi),%xmm6
  movsd  0x40(%rdi),%xmm0
  mulsd  0x20(%rdi),%xmm5
  subsd  %xmm6,%xmm0
  subsd  %xmm5,%xmm0
  movsd  %xmm0,0x40(%rdi)
L890:
  movsd  %xmm0,0x28(%rsp)
L803:
  xor    %eax,%eax
  lea    0x50(%rbx),%rdx
  lea    -0x2(%rbp),%edi
  mov    %r14d,%ecx
  lea    0x38(%rsp),%r9
  mov    $0x2,%esi
  mov    %r8,0x8(%rsp)
  call   <idamax_lib4@plt>
  mov    0x24(%rsp),%eax
  pxor   %xmm6,%xmm6
  mov    0x8(%rsp),%r8
  add    $0x2,%eax
  ucomisd 0x38(%rsp),%xmm6
  mov    %eax,0x8(%r13)
  jp     L275
  jne    L275
  mov    (%rsp),%rax
  movq   $0x0,0x10(%rax)
  cmp    $0x3,%r12d
  je     L965
  cmp    $0x3,%ebp
  jle    L814
  lea    0x0(,%r14,4),%r15d
  lea    -0x7(%rbp),%r11d
  movslq %r15d,%r15
  shl    $0x3,%r15
  lea    (%rbx,%r15,1),%r10
L724:
  movsd  0x60(%rbx),%xmm8
  movsd  0x10(%rbx),%xmm2
  movsd  0x70(%rbx),%xmm1
  movsd  0x68(%rbx),%xmm0
  mulsd  %xmm8,%xmm2
  movapd %xmm0,%xmm6
  subsd  %xmm2,%xmm1
  movsd  0x8(%rbx),%xmm2
  mulsd  %xmm8,%xmm2
  unpcklpd %xmm1,%xmm6
  movupd 0x28(%rbx),%xmm1
  movlpd 0x8(%rbx),%xmm1
  subsd  %xmm2,%xmm0
  movapd %xmm8,%xmm2
  unpcklpd %xmm0,%xmm2
  movsd  0x78(%rbx),%xmm0
  mulpd  %xmm2,%xmm1
  subpd  %xmm1,%xmm6
  movsd  0x18(%rbx),%xmm1
  mulsd  %xmm8,%xmm1
  movapd %xmm6,%xmm7
  movapd %xmm6,%xmm9
  movups %xmm6,0x68(%rbx)
  unpckhpd %xmm7,%xmm7
  subsd  %xmm1,%xmm0
  movsd  0x38(%rbx),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbx),%xmm1
  mulsd  %xmm7,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x40(%rsp)
  movsd  %xmm0,0x78(%rbx)
  test   %r11d,%r11d
  jle    L775
  lea    -0x1(%r11),%esi
  movapd %xmm8,%xmm5
  movapd %xmm6,%xmm4
  xor    %edx,%edx
  movapd %xmm6,%xmm3
  shr    $0x2,%esi
  unpcklpd %xmm5,%xmm5
  unpcklpd %xmm6,%xmm4
  add    $0x1,%esi
  unpckhpd %xmm6,%xmm3
  lea    0x60(%r10),%rax
  xchg   %ax,%ax
L1007:
  movupd -0x60(%rax),%xmm0
  movupd (%rax),%xmm1
  add    $0x1,%edx
  movupd -0x50(%rax),%xmm2
  mulpd  %xmm5,%xmm0
  mulpd  %xmm5,%xmm2
  subpd  %xmm0,%xmm1
  movupd -0x40(%rax),%xmm0
  mulpd  %xmm4,%xmm0
  subpd  %xmm0,%xmm1
  movupd -0x20(%rax),%xmm0
  mulpd  %xmm3,%xmm0
  subpd  %xmm0,%xmm1
  movupd 0x10(%rax),%xmm0
  subpd  %xmm2,%xmm0
  movupd -0x30(%rax),%xmm2
  movups %xmm1,(%rax)
  mulpd  %xmm4,%xmm2
  subpd  %xmm2,%xmm0
  movupd -0x10(%rax),%xmm2
  mulpd  %xmm3,%xmm2
  subpd  %xmm2,%xmm0
  movups %xmm0,0x10(%rax)
  add    %r15,%rax
  cmp    %esi,%edx
  jb     L1007
  mov    %esi,%r12d
  lea    0x0(,%rsi,4),%eax
  movups %xmm1,0x28(%rsp)
  imul   %r15,%r12
  mov    %eax,0x8(%rsp)
  mov    %eax,%ecx
  movups %xmm0,0x38(%rsp)
  add    %r10,%r12
L913:
  cmp    %ecx,0x18(%rsp)
  jle    L542
  mov    %ebp,%eax
  sub    %ecx,%eax
  lea    -0x4(%rax),%edx
  cmp    $0x5,%eax
  je     L943
  movupd (%r12),%xmm1
  movapd %xmm8,%xmm3
  movapd %xmm6,%xmm2
  mov    %edx,%eax
  unpcklpd %xmm3,%xmm3
  movupd 0x60(%r12),%xmm0
  unpcklpd %xmm6,%xmm2
  shr    %eax
  mulpd  %xmm3,%xmm1
  unpckhpd %xmm6,%xmm6
  subpd  %xmm1,%xmm0
  movupd 0x20(%r12),%xmm1
  mulpd  %xmm2,%xmm1
  subpd  %xmm1,%xmm0
  movupd 0x40(%r12),%xmm1
  mulpd  %xmm6,%xmm1
  subpd  %xmm1,%xmm0
  movups %xmm0,0x60(%r12)
  cmp    $0x1,%eax
  je     L30
  movupd 0x10(%r12),%xmm1
  movupd 0x70(%r12),%xmm0
  mulpd  %xmm3,%xmm1
  subpd  %xmm1,%xmm0
  movupd 0x30(%r12),%xmm1
  mulpd  %xmm2,%xmm1
  subpd  %xmm1,%xmm0
  movupd 0x50(%r12),%xmm1
  mulpd  %xmm6,%xmm1
  subpd  %xmm1,%xmm0
  movups %xmm0,0x70(%r12)
L30:
  mov    %edx,%esi
  unpckhpd %xmm0,%xmm0
  and    $0xfffffffe,%esi
  mov    %esi,%eax
  lea    (%r12,%rax,8),%rax
  cmp    %edx,%esi
  je     L203
L930:
  mulsd  (%rax),%xmm8
  movsd  0x60(%rax),%xmm0
  mulsd  0x20(%rax),%xmm9
  mulsd  0x40(%rax),%xmm7
  subsd  %xmm8,%xmm0
  subsd  %xmm9,%xmm0
  subsd  %xmm7,%xmm0
  movsd  %xmm0,0x60(%rax)
L203:
  movsd  %xmm0,0x28(%rsp)
L542:
  xor    %eax,%eax
  lea    0x78(%rbx),%rdx
  lea    -0x3(%rbp),%edi
  mov    %r14d,%ecx
  lea    0x40(%rsp),%r9
  mov    $0x3,%esi
  mov    %r11d,0x1c(%rsp)
  mov    %r10,0x10(%rsp)
  call   <idamax_lib4@plt>
  mov    0x24(%rsp),%eax
  pxor   %xmm6,%xmm6
  mov    0x10(%rsp),%r10
  mov    0x1c(%rsp),%r11d
  add    $0x3,%eax
  ucomisd 0x40(%rsp),%xmm6
  mov    %eax,0xc(%r13)
  jp     L716
  je     L384
L716:
  cmp    $0x3,%eax
  je     L612
  test   %eax,%eax
  lea    0x3(%rax),%edx
  mov    %eax,%ecx
  mov    $0x4,%edi
  cmovns %eax,%edx
  sar    $0x1f,%ecx
  lea    0x18(%rbx),%rsi
  mov    %r11d,0x1c(%rsp)
  shr    $0x1e,%ecx
  mov    %r10,0x10(%rsp)
  sar    $0x2,%edx
  add    %ecx,%eax
  imul   %r14d,%edx
  and    $0x3,%eax
  sub    %ecx,%eax
  cltq
  shl    $0x2,%edx
  movslq %edx,%rdx
  add    %rax,%rdx
  xor    %eax,%eax
  lea    (%rbx,%rdx,8),%rdx
  call   <drowsw_lib@plt>
  mov    0x1c(%rsp),%r11d
  mov    0x10(%rsp),%r10
L612:
  mov    (%rsp),%rax
  movsd  D31(%rip),%xmm3
  divsd  0x78(%rbx),%xmm3
  movapd %xmm3,%xmm2
  unpcklpd %xmm2,%xmm2
  movsd  %xmm3,0x40(%rsp)
  movsd  %xmm3,0x18(%rax)
  test   %r11d,%r11d
  jle    L873
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L310:
  movupd 0x70(%r10),%xmm0
  movupd 0x60(%r10),%xmm1
  add    $0x4,%eax
  mulpd  %xmm2,%xmm0
  mulpd  %xmm2,%xmm1
  movups %xmm0,0x70(%r10)
  movups %xmm1,0x60(%r10)
  add    %r15,%r10
  cmp    %r11d,%eax
  jl     L310
L873:
  mov    0x8(%rsp),%eax
  cmp    %eax,0x18(%rsp)
  jle    L965
  sub    %eax,%ebp
  lea    -0x4(%rbp),%eax
  cmp    $0x5,%ebp
  je     L525
  movupd 0x60(%r12),%xmm0
  mov    %eax,%edx
  shr    %edx
  mulpd  %xmm2,%xmm0
  movups %xmm0,0x60(%r12)
  cmp    $0x1,%edx
  je     L595
  movupd 0x70(%r12),%xmm0
  mulpd  %xmm2,%xmm0
  movups %xmm0,0x70(%r12)
L595:
  mov    %eax,%edx
  and    $0xfffffffe,%edx
  mov    %edx,%ecx
  lea    (%r12,%rcx,8),%r12
  cmp    %eax,%edx
  je     L965
L525:
  mulsd  0x60(%r12),%xmm3
  movsd  %xmm3,0x60(%r12)
  nopl   (%rax)
L965:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L831
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L929:
  cmp    $0x1,%ebp
  je     L965
  movsd  0x8(%rbx),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x8(%rbx)
  cmp    $0x3,%ebp
  je     L127
  cmp    $0x1,%r12d
  je     L965
  mulsd  0x20(%rbx),%xmm0
  movsd  0x28(%rbx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x30(%rsp)
  movsd  %xmm1,0x28(%rbx)
  jmp    L266
  nopl   0x0(%rax,%rax,1)
L188:
  movupd 0x10(%rax),%xmm0
  movupd (%rax),%xmm1
  add    $0x4,%esi
  mulpd  %xmm3,%xmm0
  mulpd  %xmm3,%xmm1
  movups %xmm0,0x10(%rax)
  movups %xmm1,(%rax)
  add    %rdi,%rax
  cmp    %edx,%esi
  jl     L188
  jmp    L781
  nopw   0x0(%rax,%rax,1)
L506:
  movupd 0x30(%rax),%xmm0
  movupd 0x20(%rax),%xmm1
  add    $0x4,%edx
  mulpd  %xmm2,%xmm0
  mulpd  %xmm2,%xmm1
  movups %xmm0,0x30(%rax)
  movups %xmm1,0x20(%rax)
  add    %r9,%rax
  cmp    %esi,%edx
  jl     L506
  jmp    L637
  nopl   0x0(%rax)
L117:
  lea    0x3(%rax),%edx
  mov    %eax,%esi
  mov    $0x4,%edi
  mov    %r8,0x8(%rsp)
  cmovns %eax,%edx
  sar    $0x1f,%esi
  shr    $0x1e,%esi
  sar    $0x2,%edx
  add    %esi,%eax
  imul   %r14d,%edx
  and    $0x3,%eax
  sub    %esi,%eax
  mov    %rbx,%rsi
  cltq
  shl    $0x2,%edx
  movslq %edx,%rdx
  add    %rax,%rdx
  xor    %eax,%eax
  lea    (%rbx,%rdx,8),%rdx
  call   <drowsw_lib@plt>
  mov    0x8(%rsp),%r8
  jmp    L999
  nopl   0x0(%rax)
L176:
  mov    (%rsp),%rax
  movq   $0x0,0x8(%rax)
  cmp    $0x2,%r12d
  je     L965
  cmp    $0x3,%ebp
  jle    L755
  lea    0x0(,%r14,4),%r9d
  lea    -0x7(%rbp),%esi
  movslq %r9d,%r9
  shl    $0x3,%r9
  lea    (%rbx,%r9,1),%rdi
  jmp    L659
  nopw   0x0(%rax,%rax,1)
L1057:
  je     L928
  cmp    $0x2,%r12d
  je     L965
  movsd  0x8(%rbx),%xmm1
  mulsd  0x40(%rbx),%xmm1
  movsd  0x48(%rbx),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x48(%rbx)
L58:
  cmp    $0x2,%ebp
  jne    L803
  cmp    $0x3,%r12d
  je     L965
L814:
  movsd  0x60(%rbx),%xmm1
  movsd  0x8(%rbx),%xmm2
  movsd  0x68(%rbx),%xmm0
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x68(%rbx)
  cmp    $0x3,%ebp
  jne    L965
  jmp    L558
  nopl   (%rax)
L1042:
  lea    0x0(,%r14,4),%edi
  lea    -0x7(%rbp),%edx
  movslq %edi,%rdi
  shl    $0x3,%rdi
  lea    (%rbx,%rdi,1),%r9
  jmp    L393
  nopl   0x0(%rax,%rax,1)
L755:
  movsd  0x40(%rbx),%xmm1
  movsd  0x8(%rbx),%xmm2
  movsd  0x48(%rbx),%xmm0
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x48(%rbx)
  jne    L58
L149:
  movsd  0x10(%rbx),%xmm2
  mulsd  0x30(%rbx),%xmm0
  mulsd  %xmm1,%xmm2
  movsd  0x50(%rbx),%xmm1
  subsd  %xmm2,%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm1,0x50(%rbx)
  jmp    L803
  nopl   0x0(%rax)
L275:
  cmp    $0x2,%eax
  jne    L170
L656:
  mov    (%rsp),%rax
  movsd  D31(%rip),%xmm3
  divsd  0x50(%rbx),%xmm3
  movapd %xmm3,%xmm2
  unpcklpd %xmm2,%xmm2
  movsd  %xmm3,0x38(%rsp)
  movsd  %xmm3,0x10(%rax)
  cmp    $0x3,%ebp
  je     L427
  movsd  0x58(%rbx),%xmm0
  lea    0x0(,%r14,4),%r15d
  lea    -0x7(%rbp),%r11d
  xor    %edx,%edx
  movslq %r15d,%r15
  mulsd  %xmm3,%xmm0
  shl    $0x3,%r15
  lea    (%rbx,%r15,1),%r10
  mov    %r10,%rax
  movsd  %xmm0,0x58(%rbx)
  test   %r11d,%r11d
  jle    L1098
  cmp    $0x1,%r14d
  jne    L980
  nopw   0x0(%rax,%rax,1)
L639:
  movupd 0x50(%rax),%xmm0
  movupd 0x40(%rax),%xmm1
  add    $0x4,%edx
  mulpd  %xmm2,%xmm0
  mulpd  %xmm2,%xmm1
  movups %xmm0,0x50(%rax)
  movups %xmm1,0x40(%rax)
  add    %r15,%rax
  cmp    %edx,%r11d
  jg     L639
L81:
  lea    -0x8(%rbp),%edx
  shr    $0x2,%edx
  lea    0x1(%rdx),%eax
  mov    %rax,%rdx
  imul   %r15,%rax
  shl    $0x2,%edx
  add    %r10,%rax
L1098:
  cmp    %edx,0x18(%rsp)
  jle    L529
  mov    %ebp,%esi
  sub    %edx,%esi
  lea    -0x4(%rsi),%edx
  cmp    $0x5,%esi
  je     L1000
  movupd 0x40(%rax),%xmm0
  mov    %edx,%esi
  shr    %esi
  mulpd  %xmm2,%xmm0
  movups %xmm0,0x40(%rax)
  cmp    $0x1,%esi
  je     L498
  movupd 0x50(%rax),%xmm0
  mulpd  %xmm2,%xmm0
  movups %xmm0,0x50(%rax)
L498:
  mov    %edx,%esi
  and    $0xfffffffe,%esi
  mov    %esi,%edi
  lea    (%rax,%rdi,8),%rax
  cmp    %edx,%esi
  je     L529
L1000:
  mulsd  0x40(%rax),%xmm3
  movsd  %xmm3,0x40(%rax)
L529:
  cmp    $0x3,%r12d
  jne    L724
  jmp    L965
  nopl   0x0(%rax,%rax,1)
L127:
  mulsd  0x10(%rbx),%xmm2
  movsd  %xmm2,0x10(%rbx)
  cmp    $0x1,%r12d
  je     L965
  movsd  0x20(%rbx),%xmm2
  movsd  0x28(%rbx),%xmm1
  mulsd  %xmm2,%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x30(%rsp)
  movsd  %xmm1,0x28(%rbx)
L119:
  mulsd  0x10(%rbx),%xmm2
  movsd  0x30(%rbx),%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x38(%rsp)
  movsd  %xmm0,0x30(%rbx)
  jmp    L266
  nop
L309:
  movupd 0x10(%rax),%xmm0
  mulpd  %xmm3,%xmm0
  movups %xmm0,0x10(%rax)
  jmp    L157
  nopw   0x0(%rax,%rax,1)
L980:
  movupd 0x50(%rax),%xmm0
  movupd 0x40(%rax),%xmm1
  add    $0x4,%edx
  mulpd  %xmm2,%xmm0
  mulpd  %xmm2,%xmm1
  movups %xmm0,0x50(%rax)
  movups %xmm1,0x40(%rax)
  add    %r15,%rax
  cmp    %r11d,%edx
  jl     L980
  jmp    L81
  nopw   0x0(%rax,%rax,1)
L384:
  mov    (%rsp),%rax
  movq   $0x0,0x18(%rax)
  jmp    L965
  nopl   0x0(%rax)
L170:
  test   %eax,%eax
  lea    0x3(%rax),%edx
  mov    %eax,%esi
  mov    $0x4,%edi
  cmovns %eax,%edx
  sar    $0x1f,%esi
  mov    %r8,0x8(%rsp)
  shr    $0x1e,%esi
  sar    $0x2,%edx
  add    %esi,%eax
  imul   %r14d,%edx
  and    $0x3,%eax
  sub    %esi,%eax
  lea    0x10(%rbx),%rsi
  cltq
  shl    $0x2,%edx
  movslq %edx,%rdx
  add    %rax,%rdx
  xor    %eax,%eax
  lea    (%rbx,%rdx,8),%rdx
  call   <drowsw_lib@plt>
  mov    0x8(%rsp),%r8
  jmp    L656
  nopl   0x0(%rax)
L427:
  cmp    $0x3,%r12d
  je     L965
  movsd  0x60(%rbx),%xmm1
  movsd  0x8(%rbx),%xmm2
  movsd  0x68(%rbx),%xmm0
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x68(%rbx)
L558:
  mulsd  0x10(%rbx),%xmm1
  movsd  0x70(%rbx),%xmm2
  mulsd  0x30(%rbx),%xmm0
  subsd  %xmm1,%xmm2
  subsd  %xmm0,%xmm2
  movsd  %xmm2,0x70(%rbx)
  jmp    L965
  nopw   0x0(%rax,%rax,1)
L928:
  mulsd  0x30(%rbx),%xmm3
  movsd  %xmm3,0x30(%rbx)
  cmp    $0x2,%r12d
  je     L965
  movsd  0x40(%rbx),%xmm1
  movsd  0x8(%rbx),%xmm2
  movsd  0x48(%rbx),%xmm0
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x48(%rbx)
  jmp    L149
  nopl   (%rax)
L31:
  xor    %edx,%edx
  jmp    L305
L962:
  xor    %esi,%esi
  jmp    L910
L775:
  movl   $0x0,0x8(%rsp)
  mov    %r10,%r12
  mov    0x8(%rsp),%ecx
  jmp    L913
L943:
  mov    %r12,%rax
  jmp    L930
L831:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D31
data_type: f64

tool: D31: 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;
}
```