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

```asm
<d_copy_pmat_panel>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %esi,-0x48(%rbp)
  mov    %edx,-0x4c(%rbp)
  mov    %rcx,-0x58(%rbp)
  mov    %r8,-0x60(%rbp)
  mov    %r9d,-0x50(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  cmpl   $0x0,-0x44(%rbp)
  jle    L83
  cmpl   $0x0,-0x48(%rbp)
  jle    L83
  movl   $0x4,-0x3c(%rbp)
  mov    -0x4c(%rbp),%eax
  cltd
  idivl  -0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  sub    %edx,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x44(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x44(%rbp),%eax
  sub    -0x38(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  movl   $0x0,-0x40(%rbp)
  jmp    L31
L74:
  mov    -0x40(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rax,%rdx
  mov    -0x40(%rbp),%eax
  cltq
  mov    %rdx,-0x30(%rbp,%rax,8)
  addl   $0x1,-0x40(%rbp)
L31:
  mov    -0x40(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jl     L74
  movl   $0x0,-0x40(%rbp)
  jmp    L165
L173:
  mov    -0x38(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x50(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0x40(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x38(%rbp),%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  mov    -0x60(%rbp),%rdx
  add    %rcx,%rdx
  cltq
  mov    %rdx,-0x30(%rbp,%rax,8)
  addl   $0x1,-0x40(%rbp)
L165:
  mov    -0x40(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jl     L173
  cmpl   $0x1,-0x44(%rbp)
  jne    L134
  movl   $0x0,-0x40(%rbp)
  jmp    L138
L267:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x4,-0x40(%rbp)
L138:
  mov    -0x48(%rbp),%eax
  sub    $0x3,%eax
  cmp    %eax,-0x40(%rbp)
  jl     L267
  jmp    L39
L183:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L39:
  mov    -0x40(%rbp),%eax
  cmp    -0x48(%rbp),%eax
  jl     L183
  jmp    L109
L134:
  cmpl   $0x2,-0x44(%rbp)
  jne    L217
  movl   $0x0,-0x40(%rbp)
  jmp    L100
L274:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x4,-0x40(%rbp)
L100:
  mov    -0x48(%rbp),%eax
  sub    $0x3,%eax
  cmp    %eax,-0x40(%rbp)
  jl     L274
  jmp    L148
L4:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L148:
  mov    -0x40(%rbp),%eax
  cmp    -0x48(%rbp),%eax
  jl     L4
  jmp    L109
L217:
  cmpl   $0x3,-0x44(%rbp)
  jne    L228
  movl   $0x0,-0x40(%rbp)
  jmp    L19
L77:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x4,-0x40(%rbp)
L19:
  mov    -0x48(%rbp),%eax
  sub    $0x3,%eax
  cmp    %eax,-0x40(%rbp)
  jl     L77
  jmp    L255
L120:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L255:
  mov    -0x40(%rbp),%eax
  cmp    -0x48(%rbp),%eax
  jl     L120
  jmp    L109
L228:
  movl   $0x0,-0x40(%rbp)
  jmp    L45
L169:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x1,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x2,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  add    $0x3,%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x4,-0x40(%rbp)
L45:
  mov    -0x48(%rbp),%eax
  sub    $0x3,%eax
  cmp    %eax,-0x40(%rbp)
  jl     L169
  jmp    L117
L141:
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rcx
  mov    -0x40(%rbp),%eax
  imul   -0x3c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x40(%rbp)
L117:
  mov    -0x40(%rbp),%eax
  cmp    -0x48(%rbp),%eax
  jl     L141
  jmp    L109
L83:
  nop
L109:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L102
  call   <__stack_chk_fail@plt>
L102:
  leave
  ret
```

assistant: ```c
void d_copy_pmat_panel(int row, int col, int offset, double *A, double *B, int sdb) {
  if (row <= 0 || col <= 0)
    return;
  const int bs = 4;
  int i, ii;
  int row0 = bs - offset % bs;
  row0 = row0 > row ? row : row0;
  int row1 = row - row0;
  double *(ptrB[4]);
  for (i = 0; i < row0; i++)
    ptrB[i] = B + i;
  for (i = 0; i < row1; i++)
    ptrB[row0 + i] = B + row0 + (sdb - 1) * bs + i;
  if (row == 1) {
    i = 0;
    for (; i < col - 3; i += 4) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
      ptrB[0][(i + 1) * bs] = A[0 + (i + 1) * bs];
      ptrB[0][(i + 2) * bs] = A[0 + (i + 2) * bs];
      ptrB[0][(i + 3) * bs] = A[0 + (i + 3) * bs];
    }
    for (; i < col; i++) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
    }
  } else if (row == 2) {
    i = 0;
    for (; i < col - 3; i += 4) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
      ptrB[1][(i + 0) * bs] = A[1 + (i + 0) * bs];
      ptrB[0][(i + 1) * bs] = A[0 + (i + 1) * bs];
      ptrB[1][(i + 1) * bs] = A[1 + (i + 1) * bs];
      ptrB[0][(i + 2) * bs] = A[0 + (i + 2) * bs];
      ptrB[1][(i + 2) * bs] = A[1 + (i + 2) * bs];
      ptrB[0][(i + 3) * bs] = A[0 + (i + 3) * bs];
      ptrB[1][(i + 3) * bs] = A[1 + (i + 3) * bs];
    }
    for (; i < col; i++) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
      ptrB[1][(i + 0) * bs] = A[1 + (i + 0) * bs];
    }
  } else if (row == 3) {
    i = 0;
    for (; i < col - 3; i += 4) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
      ptrB[1][(i + 0) * bs] = A[1 + (i + 0) * bs];
      ptrB[2][(i + 0) * bs] = A[2 + (i + 0) * bs];
      ptrB[0][(i + 1) * bs] = A[0 + (i + 1) * bs];
      ptrB[1][(i + 1) * bs] = A[1 + (i + 1) * bs];
      ptrB[2][(i + 1) * bs] = A[2 + (i + 1) * bs];
      ptrB[0][(i + 2) * bs] = A[0 + (i + 2) * bs];
      ptrB[1][(i + 2) * bs] = A[1 + (i + 2) * bs];
      ptrB[2][(i + 2) * bs] = A[2 + (i + 2) * bs];
      ptrB[0][(i + 3) * bs] = A[0 + (i + 3) * bs];
      ptrB[1][(i + 3) * bs] = A[1 + (i + 3) * bs];
      ptrB[2][(i + 3) * bs] = A[2 + (i + 3) * bs];
    }
    for (; i < col; i++) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
      ptrB[1][(i + 0) * bs] = A[1 + (i + 0) * bs];
      ptrB[2][(i + 0) * bs] = A[2 + (i + 0) * bs];
    }
  } else {
    i = 0;
    for (; i < col - 3; i += 4) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
      ptrB[1][(i + 0) * bs] = A[1 + (i + 0) * bs];
      ptrB[2][(i + 0) * bs] = A[2 + (i + 0) * bs];
      ptrB[3][(i + 0) * bs] = A[3 + (i + 0) * bs];
      ptrB[0][(i + 1) * bs] = A[0 + (i + 1) * bs];
      ptrB[1][(i + 1) * bs] = A[1 + (i + 1) * bs];
      ptrB[2][(i + 1) * bs] = A[2 + (i + 1) * bs];
      ptrB[3][(i + 0) * bs] = A[3 + (i + 0) * bs];
      ptrB[0][(i + 2) * bs] = A[0 + (i + 2) * bs];
      ptrB[1][(i + 2) * bs] = A[1 + (i + 2) * bs];
      ptrB[2][(i + 2) * bs] = A[2 + (i + 2) * bs];
      ptrB[3][(i + 0) * bs] = A[3 + (i + 0) * bs];
      ptrB[0][(i + 3) * bs] = A[0 + (i + 3) * bs];
      ptrB[1][(i + 3) * bs] = A[1 + (i + 3) * bs];
      ptrB[2][(i + 3) * bs] = A[2 + (i + 3) * bs];
      ptrB[3][(i + 0) * bs] = A[3 + (i + 0) * bs];
    }
    for (; i < col; i++) {
      ptrB[0][(i + 0) * bs] = A[0 + (i + 0) * bs];
      ptrB[1][(i + 0) * bs] = A[1 + (i + 0) * bs];
      ptrB[2][(i + 0) * bs] = A[2 + (i + 0) * bs];
      ptrB[3][(i + 0) * bs] = A[3 + (i + 0) * bs];
    }
  }
}
```