user: 请从给定的汇编指令推导出C源代码：

```asm
<dgemm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x88,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8,-0x48(%rbp)
  mov    %r9,-0x50(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x58(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  mov    0x28(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  mov    0x30(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  mov    0x38(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  mov    0x40(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x1c(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jns    L75
  movl   $0x3,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L75:
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jns    L2
  movl   $0x4,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L2:
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jns    L343
  movl   $0x5,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L343:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x6e,%al
  je     L549
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x4e,%al
  jne    L375
L549:
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x6e,%al
  je     L132
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x4e,%al
  jne    L442
L132:
  mov    -0x60(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L282
  movl   $0x8,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L112
L282:
  mov    -0x70(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L516
  movl   $0xa,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L112
L516:
  mov    -0x88(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L134
  movl   $0xd,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L112
L134:
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L614
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jne    L614
  mov    -0x78(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x1,%eax
  call   <mm_double_NN_1@plt>
  add    $0x20,%rsp
  jmp    L112
L614:
  mov    -0x78(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x2,%eax
  call   <mm_double_NN_c@plt>
  add    $0x20,%rsp
  jmp    L112
L442:
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x63,%al
  je     L92
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L92
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x74,%al
  je     L92
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x54,%al
  je     L92
  movl   $0x2,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L112
L92:
  mov    -0x60(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L474
  movl   $0x8,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L474:
  mov    -0x70(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L449
  movl   $0xa,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L449:
  mov    -0x88(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L394
  movl   $0xd,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L394:
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L278
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jne    L278
  mov    -0x78(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x1,%eax
  call   <mm_double_TN_1@plt>
  add    $0x20,%rsp
  jmp    L627
L278:
  mov    -0x78(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x2,%eax
  call   <mm_double_TN_c@plt>
  add    $0x20,%rsp
  jmp    L627
L112:
  jmp    L627
L375:
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x6e,%al
  je     L529
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x4e,%al
  jne    L685
L529:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x63,%al
  je     L494
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L494
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x74,%al
  je     L494
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x54,%al
  je     L494
  movl   $0x1,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  nop
  jmp    L627
L494:
  mov    -0x60(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L511
  movl   $0x8,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L511:
  mov    -0x70(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L407
  movl   $0xa,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L407:
  mov    -0x88(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L96
  movl   $0xd,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L96:
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L584
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jne    L584
  mov    -0x78(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x1,%eax
  call   <mm_double_NT_1@plt>
  add    $0x20,%rsp
  jmp    L627
L584:
  mov    -0x78(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x2,%eax
  call   <mm_double_NT_c@plt>
  add    $0x20,%rsp
  jmp    L627
L685:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x63,%al
  je     L289
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L289
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x74,%al
  je     L289
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x54,%al
  je     L289
  movl   $0x1,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L289:
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x63,%al
  je     L668
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L668
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x74,%al
  je     L668
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x54,%al
  je     L668
  movl   $0x2,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L668:
  mov    -0x60(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L601
  movl   $0x8,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L601:
  mov    -0x70(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L287
  movl   $0xa,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L287:
  mov    -0x88(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%ecx
  test   %eax,%eax
  cmovle %ecx,%eax
  cmp    %eax,%edx
  jge    L265
  movl   $0xd,-0x1c(%rbp)
  lea    -0x1c(%rbp),%rax
  mov    %rax,%rsi
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <xerbla@plt>
  jmp    L627
L265:
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L94
  movsd  D188(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jne    L94
  mov    -0x78(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x1,%eax
  call   <mm_double_TT_1@plt>
  add    $0x20,%rsp
  jmp    L627
L94:
  mov    -0x78(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  mov    (%rax),%rdi
  mov    -0x88(%rbp),%rax
  mov    (%rax),%r10d
  mov    -0x60(%rbp),%rax
  mov    (%rax),%r9d
  mov    -0x70(%rbp),%rax
  mov    (%rax),%r8d
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x80(%rbp),%rbx
  mov    -0x58(%rbp),%r11
  mov    -0x68(%rbp),%rcx
  sub    $0x8,%rsp
  push   %r10
  push   %r9
  push   %r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rbx,%r9
  mov    %r11,%r8
  mov    %eax,%edi
  mov    $0x2,%eax
  call   <mm_double_TT_c@plt>
  add    $0x20,%rsp
L627:
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L565
  call   <__stack_chk_fail@plt>
L565:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D244
type: string
name: extract_symbolic_data
arguments: data_tag: D188
type: byte[8]

tool: D244: DGEMM 

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

assistant: ```c
void dgemm(char *transA, char *transB, int *M, int *N, int *K, double *alpha, double *A, int *Astride, double *B, int *Bstride, double *beta, double *C, int *Cstride) {
  int info = 0;
  if (*M < 0) {
    info = 3;
    xerbla("DGEMM ", &info);
    return;
  } else if (*N < 0) {
    info = 4;
    xerbla("DGEMM ", &info);
    return;
  } else if (*K < 0) {
    info = 5;
    xerbla("DGEMM ", &info);
    return;
  }
  if (*transA == 'n' || *transA == 'N') {
    if (*transB == 'n' || *transB == 'N') {
      if (*Astride < (((1) > (*M)) ? (1) : (*M))) {
        info = 8;
        xerbla("DGEMM ", &info);
      } else if (*Bstride < (((1) > (*K)) ? (1) : (*K))) {
        info = 10;
        xerbla("DGEMM ", &info);
      } else if (*Cstride < (((1) > (*M)) ? (1) : (*M))) {
        info = 13;
        xerbla("DGEMM ", &info);
      } else if (*alpha == 1) {
        mm_double_NN_1(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *beta);
      } else {
        mm_double_NN_c(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *alpha, *beta);
      }
    } else {
      if (*transB != 'c' && *transB != 'C' && *transB != 't' && *transB != 'T') {
        info = 2;
        xerbla("DGEMM ", &info);
      } else if (*Astride < (((1) > (*M)) ? (1) : (*M))) {
        info = 8;
        xerbla("DGEMM ", &info);
      } else if (*Bstride < (((1) > (*N)) ? (1) : (*N))) {
        info = 10;
        xerbla("DGEMM ", &info);
      } else if (*Cstride < (((1) > (*M)) ? (1) : (*M))) {
        info = 13;
        xerbla("DGEMM ", &info);
      } else if (*alpha == 1) {
        mm_double_TN_1(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *beta);
      } else {
        mm_double_TN_c(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *alpha, *beta);
      }
    }
  } else {
    if (*transB == 'n' || *transB == 'N') {
      if (*transA != 'c' && *transA != 'C' && *transA != 't' && *transA != 'T') {
        info = 1;
        xerbla("DGEMM ", &info);
      } else if (*Astride < (((1) > (*K)) ? (1) : (*K))) {
        info = 8;
        xerbla("DGEMM ", &info);
      } else if (*Bstride < (((1) > (*K)) ? (1) : (*K))) {
        info = 10;
        xerbla("DGEMM ", &info);
      } else if (*Cstride < (((1) > (*M)) ? (1) : (*M))) {
        info = 13;
        xerbla("DGEMM ", &info);
      } else if (*alpha == 1) {
        mm_double_NT_1(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *beta);
      } else {
        mm_double_NT_c(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *alpha, *beta);
      }
    } else {
      if (*transA != 'c' && *transA != 'C' && *transA != 't' && *transA != 'T') {
        info = 1;
        xerbla("DGEMM ", &info);
      } else if (*transB != 'c' && *transB != 'C' && *transB != 't' && *transB != 'T') {
        info = 2;
        xerbla("DGEMM ", &info);
      } else if (*Astride < (((1) > (*K)) ? (1) : (*K))) {
        info = 8;
        xerbla("DGEMM ", &info);
      } else if (*Bstride < (((1) > (*N)) ? (1) : (*N))) {
        info = 10;
        xerbla("DGEMM ", &info);
      } else if (*Cstride < (((1) > (*M)) ? (1) : (*M))) {
        info = 13;
        xerbla("DGEMM ", &info);
      } else if (*alpha == 1) {
        mm_double_TT_1(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *beta);
      } else {
        mm_double_TT_c(*N, *K, *M, B, A, C, *Bstride, *Astride, *Cstride, *alpha, *beta);
      }
    }
  }
}
```