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);
      }
    }
  }
}


x86 assembly (clang, -O0):
<dgemm>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
sub    $0xb8,%rsp
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
movl   $0x0,-0x3c(%rbp)
mov    -0x20(%rbp),%rax
cmpl   $0x0,(%rax)
jge    1202 <dgemm+0x72>
movl   $0x3,-0x3c(%rbp)
lea    0xe16(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c52 <dgemm+0xac2>
mov    -0x28(%rbp),%rax
cmpl   $0x0,(%rax)
jge    122d <dgemm+0x9d>
movl   $0x4,-0x3c(%rbp)
lea    0xdeb(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c52 <dgemm+0xac2>
mov    -0x30(%rbp),%rax
cmpl   $0x0,(%rax)
jge    1258 <dgemm+0xc8>
movl   $0x5,-0x3c(%rbp)
lea    0xdc0(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c52 <dgemm+0xac2>
jmp    125d <dgemm+0xcd>
jmp    1262 <dgemm+0xd2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6e,%eax
je     1282 <dgemm+0xf2>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4e,%eax
jne    16ec <dgemm+0x55c>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6e,%eax
je     12a2 <dgemm+0x112>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4e,%eax
jne    1493 <dgemm+0x303>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x40(%rbp)
mov    -0x20(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    12c9 <dgemm+0x139>
mov    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    12d2 <dgemm+0x142>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x44(%rbp)
mov    -0x40(%rbp),%eax
mov    -0x44(%rbp),%ecx
cmp    %ecx,%eax
jge    12fe <dgemm+0x16e>
movl   $0x8,-0x3c(%rbp)
lea    0xd1a(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    148e <dgemm+0x2fe>
mov    0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1325 <dgemm+0x195>
mov    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    132e <dgemm+0x19e>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%eax
mov    -0x4c(%rbp),%ecx
cmp    %ecx,%eax
jge    135a <dgemm+0x1ca>
movl   $0xa,-0x3c(%rbp)
lea    0xcbe(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1489 <dgemm+0x2f9>
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x50(%rbp)
mov    -0x20(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1381 <dgemm+0x1f1>
mov    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    138a <dgemm+0x1fa>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x54(%rbp)
mov    -0x50(%rbp),%eax
mov    -0x54(%rbp),%ecx
cmp    %ecx,%eax
jge    13b6 <dgemm+0x226>
movl   $0xd,-0x3c(%rbp)
lea    0xc62(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1484 <dgemm+0x2f4>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xc3a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1429 <dgemm+0x299>
jp     1429 <dgemm+0x299>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x1,%al
call   10b0 <mm_double_NN_1@plt>
jmp    147f <dgemm+0x2ef>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm1
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x2,%al
call   1090 <mm_double_NN_c@plt>
jmp    1484 <dgemm+0x2f4>
jmp    1489 <dgemm+0x2f9>
jmp    148e <dgemm+0x2fe>
jmp    16e7 <dgemm+0x557>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x63,%eax
je     14f1 <dgemm+0x361>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x43,%eax
je     14f1 <dgemm+0x361>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x74,%eax
je     14f1 <dgemm+0x361>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x54,%eax
je     14f1 <dgemm+0x361>
movl   $0x2,-0x3c(%rbp)
lea    0xb27(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    16e2 <dgemm+0x552>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x58(%rbp)
mov    -0x20(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1518 <dgemm+0x388>
mov    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1521 <dgemm+0x391>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    -0x5c(%rbp),%ecx
cmp    %ecx,%eax
jge    154d <dgemm+0x3bd>
movl   $0x8,-0x3c(%rbp)
lea    0xacb(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    16dd <dgemm+0x54d>
mov    0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x60(%rbp)
mov    -0x28(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1574 <dgemm+0x3e4>
mov    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    157d <dgemm+0x3ed>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    -0x64(%rbp),%ecx
cmp    %ecx,%eax
jge    15a9 <dgemm+0x419>
movl   $0xa,-0x3c(%rbp)
lea    0xa6f(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    16d8 <dgemm+0x548>
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x68(%rbp)
mov    -0x20(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    15d0 <dgemm+0x440>
mov    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    15d9 <dgemm+0x449>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x68(%rbp),%eax
mov    -0x6c(%rbp),%ecx
cmp    %ecx,%eax
jge    1605 <dgemm+0x475>
movl   $0xd,-0x3c(%rbp)
lea    0xa13(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    16d3 <dgemm+0x543>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x9eb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1678 <dgemm+0x4e8>
jp     1678 <dgemm+0x4e8>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x1,%al
call   1040 <mm_double_TN_1@plt>
jmp    16ce <dgemm+0x53e>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm1
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x2,%al
call   1030 <mm_double_TN_c@plt>
jmp    16d3 <dgemm+0x543>
jmp    16d8 <dgemm+0x548>
jmp    16dd <dgemm+0x54d>
jmp    16e2 <dgemm+0x552>
jmp    16e7 <dgemm+0x557>
jmp    1c52 <dgemm+0xac2>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6e,%eax
je     170c <dgemm+0x57c>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4e,%eax
jne    1969 <dgemm+0x7d9>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x63,%eax
je     176a <dgemm+0x5da>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x43,%eax
je     176a <dgemm+0x5da>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x74,%eax
je     176a <dgemm+0x5da>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x54,%eax
je     176a <dgemm+0x5da>
movl   $0x1,-0x3c(%rbp)
lea    0x8ae(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1964 <dgemm+0x7d4>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x70(%rbp)
mov    -0x30(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1791 <dgemm+0x601>
mov    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    179a <dgemm+0x60a>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x74(%rbp)
mov    -0x70(%rbp),%eax
mov    -0x74(%rbp),%ecx
cmp    %ecx,%eax
jge    17c6 <dgemm+0x636>
movl   $0x8,-0x3c(%rbp)
lea    0x852(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    195f <dgemm+0x7cf>
mov    0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x78(%rbp)
mov    -0x30(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    17ed <dgemm+0x65d>
mov    $0x1,%eax
mov    %eax,-0x7c(%rbp)
jmp    17f6 <dgemm+0x666>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x78(%rbp),%eax
mov    -0x7c(%rbp),%ecx
cmp    %ecx,%eax
jge    1822 <dgemm+0x692>
movl   $0xa,-0x3c(%rbp)
lea    0x7f6(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    195a <dgemm+0x7ca>
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x80(%rbp)
mov    -0x20(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    184c <dgemm+0x6bc>
mov    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    1858 <dgemm+0x6c8>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x84(%rbp)
mov    -0x80(%rbp),%eax
mov    -0x84(%rbp),%ecx
cmp    %ecx,%eax
jge    1887 <dgemm+0x6f7>
movl   $0xd,-0x3c(%rbp)
lea    0x791(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1955 <dgemm+0x7c5>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x769(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    18fa <dgemm+0x76a>
jp     18fa <dgemm+0x76a>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x1,%al
call   10a0 <mm_double_NT_1@plt>
jmp    1950 <dgemm+0x7c0>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm1
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x2,%al
call   1050 <mm_double_NT_c@plt>
jmp    1955 <dgemm+0x7c5>
jmp    195a <dgemm+0x7ca>
jmp    195f <dgemm+0x7cf>
jmp    1964 <dgemm+0x7d4>
jmp    1c4d <dgemm+0xabd>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x63,%eax
je     19c7 <dgemm+0x837>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x43,%eax
je     19c7 <dgemm+0x837>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x74,%eax
je     19c7 <dgemm+0x837>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x54,%eax
je     19c7 <dgemm+0x837>
movl   $0x1,-0x3c(%rbp)
lea    0x651(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c48 <dgemm+0xab8>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x63,%eax
je     1a25 <dgemm+0x895>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x43,%eax
je     1a25 <dgemm+0x895>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x74,%eax
je     1a25 <dgemm+0x895>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x54,%eax
je     1a25 <dgemm+0x895>
movl   $0x2,-0x3c(%rbp)
lea    0x5f3(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c43 <dgemm+0xab3>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x88(%rbp)
mov    -0x30(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1a52 <dgemm+0x8c2>
mov    $0x1,%eax
mov    %eax,-0x8c(%rbp)
jmp    1a5e <dgemm+0x8ce>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x88(%rbp),%eax
mov    -0x8c(%rbp),%ecx
cmp    %ecx,%eax
jge    1a90 <dgemm+0x900>
movl   $0x8,-0x3c(%rbp)
lea    0x588(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c3e <dgemm+0xaae>
mov    0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x90(%rbp)
mov    -0x28(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1abd <dgemm+0x92d>
mov    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1ac9 <dgemm+0x939>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x94(%rbp)
mov    -0x90(%rbp),%eax
mov    -0x94(%rbp),%ecx
cmp    %ecx,%eax
jge    1afb <dgemm+0x96b>
movl   $0xa,-0x3c(%rbp)
lea    0x51d(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c39 <dgemm+0xaa9>
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x98(%rbp)
mov    -0x20(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1b28 <dgemm+0x998>
mov    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    1b34 <dgemm+0x9a4>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x98(%rbp),%eax
mov    -0x9c(%rbp),%ecx
cmp    %ecx,%eax
jge    1b66 <dgemm+0x9d6>
movl   $0xd,-0x3c(%rbp)
lea    0x4b2(%rip),%rdi
lea    -0x3c(%rbp),%rsi
mov    $0x0,%al
call   1060 <xerbla@plt>
jmp    1c34 <dgemm+0xaa4>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x48a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1bd9 <dgemm+0xa49>
jp     1bd9 <dgemm+0xa49>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x1,%al
call   1080 <mm_double_TT_1@plt>
jmp    1c2f <dgemm+0xa9f>
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x30(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x38(%rbp),%r9
mov    0x28(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rbx
movsd  (%rbx),%xmm0
mov    0x30(%rbp),%rbx
movsd  (%rbx),%xmm1
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x2,%al
call   1070 <mm_double_TT_c@plt>
jmp    1c34 <dgemm+0xaa4>
jmp    1c39 <dgemm+0xaa9>
jmp    1c3e <dgemm+0xaae>
jmp    1c43 <dgemm+0xab3>
jmp    1c48 <dgemm+0xab8>
jmp    1c4d <dgemm+0xabd>
jmp    1c52 <dgemm+0xac2>
add    $0xb8,%rsp
pop    %rbx
pop    %rbp
ret

x86 assembly (clang, -O2):
<dgemm>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    (%rdx),%edx
test   %edx,%edx
js     1287 <dgemm+0xf7>
mov    %rdi,%rax
mov    (%rcx),%edi
test   %edi,%edi
js     1294 <dgemm+0x104>
mov    %rsi,%r11
mov    (%r8),%esi
test   %esi,%esi
js     12a1 <dgemm+0x111>
mov    %r9,%r10
mov    0x70(%rsp),%r15
mov    0x68(%rsp),%r9
mov    0x60(%rsp),%r14
mov    0x58(%rsp),%r12
mov    0x50(%rsp),%rcx
mov    0x48(%rsp),%r13
mov    0x40(%rsp),%r8
mov    (%rax),%al
mov    %eax,%ebx
or     $0x20,%bl
cmp    $0x6e,%bl
jne    12ae <dgemm+0x11e>
mov    (%r11),%al
add    $0xbd,%al
cmp    $0x31,%al
ja     141b <dgemm+0x28b>
movzbl %al,%eax
movabs $0x2000100020001,%rbp
bt     %rax,%rbp
jae    1351 <dgemm+0x1c1>
mov    0x0(%r13),%ebx
test   %edx,%edx
mov    $0x1,%ebp
mov    %edx,%eax
cmove  %ebp,%eax
cmp    %eax,%ebx
jl     1411 <dgemm+0x281>
mov    (%r12),%r11d
test   %edi,%edi
cmovne %edi,%ebp
cmp    %ebp,%r11d
jl     143d <dgemm+0x2ad>
mov    (%r15),%r15d
cmp    %eax,%r15d
jl     146e <dgemm+0x2de>
movsd  (%r10),%xmm0
ucomisd 0xda3(%rip),%xmm0
movsd  (%r14),%xmm1
jne    1447 <dgemm+0x2b7>
jp     1447 <dgemm+0x2b7>
sub    $0x8,%rsp
movapd %xmm1,%xmm0
mov    $0x1,%al
push   %r15
push   %rbx
push   %r11
call   1040 <mm_double_TN_1@plt>
jmp    14f8 <dgemm+0x368>
movl   $0x3,0x4(%rsp)
jmp    1476 <dgemm+0x2e6>
movl   $0x4,0x4(%rsp)
jmp    1476 <dgemm+0x2e6>
movl   $0x5,0x4(%rsp)
jmp    1476 <dgemm+0x2e6>
mov    (%r11),%r11b
mov    %r11d,%ebx
or     $0x20,%bl
add    $0xbd,%al
cmp    $0x6e,%bl
jne    13d2 <dgemm+0x242>
cmp    $0x31,%al
ja     1425 <dgemm+0x295>
movzbl %al,%eax
movabs $0x2000100020001,%rbp
bt     %rax,%rbp
jae    1425 <dgemm+0x295>
mov    0x0(%r13),%ebx
test   %esi,%esi
mov    $0x1,%eax
cmovne %esi,%eax
cmp    %eax,%ebx
jl     1411 <dgemm+0x281>
mov    (%r12),%r11d
cmp    %eax,%r11d
jl     143d <dgemm+0x2ad>
mov    (%r15),%r15d
test   %edx,%edx
mov    $0x1,%eax
cmovne %edx,%eax
cmp    %eax,%r15d
jl     146e <dgemm+0x2de>
movsd  (%r10),%xmm0
ucomisd 0xcd9(%rip),%xmm0
movsd  (%r14),%xmm1
jne    14d6 <dgemm+0x346>
jp     14d6 <dgemm+0x346>
sub    $0x8,%rsp
movapd %xmm1,%xmm0
mov    $0x1,%al
push   %r15
push   %rbx
push   %r11
call   10a0 <mm_double_NT_1@plt>
jmp    14f8 <dgemm+0x368>
movabs $0x80000000800,%rbp
bt     %rax,%rbp
jae    141b <dgemm+0x28b>
mov    0x0(%r13),%ebx
test   %edx,%edx
mov    $0x1,%ebp
mov    %edx,%eax
cmove  %ebp,%eax
cmp    %eax,%ebx
jl     1411 <dgemm+0x281>
mov    (%r12),%r11d
test   %esi,%esi
cmovne %esi,%ebp
cmp    %ebp,%r11d
jl     143d <dgemm+0x2ad>
mov    (%r15),%r15d
cmp    %eax,%r15d
jl     146e <dgemm+0x2de>
movsd  (%r10),%xmm0
ucomisd 0xc58(%rip),%xmm0
movsd  (%r14),%xmm1
jne    1498 <dgemm+0x308>
jp     1498 <dgemm+0x308>
sub    $0x8,%rsp
movapd %xmm1,%xmm0
mov    $0x1,%al
push   %r15
push   %rbx
push   %r11
call   10b0 <mm_double_NN_1@plt>
jmp    14f8 <dgemm+0x368>
cmp    $0x31,%al
ja     1425 <dgemm+0x295>
movzbl %al,%ebx
movabs $0x2000100020001,%rax
bt     %rbx,%rax
jae    1425 <dgemm+0x295>
add    $0xbd,%r11b
cmp    $0x31,%r11b
ja     141b <dgemm+0x28b>
movzbl %r11b,%ebp
bt     %rbp,%rax
jae    141b <dgemm+0x28b>
mov    0x0(%r13),%ebx
test   %esi,%esi
mov    $0x1,%eax
mov    %esi,%ebp
cmove  %eax,%ebp
cmp    %ebp,%ebx
jge    142f <dgemm+0x29f>
movl   $0x8,0x4(%rsp)
jmp    1476 <dgemm+0x2e6>
movl   $0x2,0x4(%rsp)
jmp    1476 <dgemm+0x2e6>
movl   $0x1,0x4(%rsp)
jmp    1476 <dgemm+0x2e6>
mov    (%r12),%r11d
test   %edi,%edi
cmovne %edi,%eax
cmp    %eax,%r11d
jge    145c <dgemm+0x2cc>
movl   $0xa,0x4(%rsp)
jmp    1476 <dgemm+0x2e6>
sub    $0x8,%rsp
mov    $0x2,%al
push   %r15
push   %rbx
push   %r11
call   1030 <mm_double_TN_c@plt>
jmp    14f8 <dgemm+0x368>
mov    (%r15),%r15d
test   %edx,%edx
mov    $0x1,%eax
cmovne %edx,%eax
cmp    %eax,%r15d
jge    14aa <dgemm+0x31a>
movl   $0xd,0x4(%rsp)
lea    0xb8b(%rip),%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1060 <xerbla@plt>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
sub    $0x8,%rsp
mov    $0x2,%al
push   %r15
push   %rbx
push   %r11
call   1090 <mm_double_NN_c@plt>
jmp    14f8 <dgemm+0x368>
movsd  (%r10),%xmm0
ucomisd 0xb49(%rip),%xmm0
movsd  (%r14),%xmm1
jne    14e8 <dgemm+0x358>
jp     14e8 <dgemm+0x358>
sub    $0x8,%rsp
movapd %xmm1,%xmm0
mov    $0x1,%al
push   %r15
push   %rbx
push   %r11
call   1080 <mm_double_TT_1@plt>
jmp    14f8 <dgemm+0x368>
sub    $0x8,%rsp
mov    $0x2,%al
push   %r15
push   %rbx
push   %r11
call   1050 <mm_double_NT_c@plt>
jmp    14f8 <dgemm+0x368>
sub    $0x8,%rsp
mov    $0x2,%al
push   %r15
push   %rbx
push   %r11
call   1070 <mm_double_TT_c@plt>
add    $0x28,%rsp
jmp    148d <dgemm+0x2fd>

LLVM IR (-O0):
@.str = [7 x i8] c"DGEMM \00"
define void @dgemm(i8* %0, i8* %1, i32* %2, i32* %3, i32* %4, double* %5, double* %6, i32* %7, double* %8, i32* %9, double* %10, double* %11, i32* %12) {
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i32*
%17 = alloca i32*
%18 = alloca i32*
%19 = alloca double*
%20 = alloca double*
%21 = alloca i32*
%22 = alloca double*
%23 = alloca i32*
%24 = alloca double*
%25 = alloca double*
%26 = alloca i32*
%27 = alloca i32
store i8* %0, i8** %14
store i8* %1, i8** %15
store i32* %2, i32** %16
store i32* %3, i32** %17
store i32* %4, i32** %18
store double* %5, double** %19
store double* %6, double** %20
store i32* %7, i32** %21
store double* %8, double** %22
store i32* %9, i32** %23
store double* %10, double** %24
store double* %11, double** %25
store i32* %12, i32** %26
store i32 0, i32* %27
%28 = load i32*, i32** %16
%29 = load i32, i32* %28
%30 = icmp slt i32 %29, 0
br i1 %30, label %31, label %33
31: ; preds = %13
store i32 3, i32* %27
%32 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %543
33: ; preds = %13
%34 = load i32*, i32** %17
%35 = load i32, i32* %34
%36 = icmp slt i32 %35, 0
br i1 %36, label %37, label %39
37: ; preds = %33
store i32 4, i32* %27
%38 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %543
39: ; preds = %33
%40 = load i32*, i32** %18
%41 = load i32, i32* %40
%42 = icmp slt i32 %41, 0
br i1 %42, label %43, label %45
43: ; preds = %39
store i32 5, i32* %27
%44 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %543
45: ; preds = %39
br label %46
46: ; preds = %45
br label %47
47: ; preds = %46
%48 = load i8*, i8** %14
%49 = load i8, i8* %48
%50 = sext i8 %49 to i32
%51 = icmp eq i32 %50, 110
br i1 %51, label %57, label %52
52: ; preds = %47
%53 = load i8*, i8** %14
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 78
br i1 %56, label %57, label %277
57: ; preds = %52, %47
%58 = load i8*, i8** %15
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = icmp eq i32 %60, 110
br i1 %61, label %67, label %62
62: ; preds = %57
%63 = load i8*, i8** %15
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 78
br i1 %66, label %67, label %160
67: ; preds = %62, %57
%68 = load i32*, i32** %21
%69 = load i32, i32* %68
%70 = load i32*, i32** %16
%71 = load i32, i32* %70
%72 = icmp sgt i32 1, %71
br i1 %72, label %73, label %74
73: ; preds = %67
br label %77
74: ; preds = %67
%75 = load i32*, i32** %16
%76 = load i32, i32* %75
br label %77
77: ; preds = %74, %73
%78 = phi i32 [ 1, %73 ], [ %76, %74 ]
%79 = icmp slt i32 %69, %78
br i1 %79, label %80, label %82
80: ; preds = %77
store i32 8, i32* %27
%81 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %159
82: ; preds = %77
%83 = load i32*, i32** %23
%84 = load i32, i32* %83
%85 = load i32*, i32** %18
%86 = load i32, i32* %85
%87 = icmp sgt i32 1, %86
br i1 %87, label %88, label %89
88: ; preds = %82
br label %92
89: ; preds = %82
%90 = load i32*, i32** %18
%91 = load i32, i32* %90
br label %92
92: ; preds = %89, %88
%93 = phi i32 [ 1, %88 ], [ %91, %89 ]
%94 = icmp slt i32 %84, %93
br i1 %94, label %95, label %97
95: ; preds = %92
store i32 10, i32* %27
%96 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %158
97: ; preds = %92
%98 = load i32*, i32** %26
%99 = load i32, i32* %98
%100 = load i32*, i32** %16
%101 = load i32, i32* %100
%102 = icmp sgt i32 1, %101
br i1 %102, label %103, label %104
103: ; preds = %97
br label %107
104: ; preds = %97
%105 = load i32*, i32** %16
%106 = load i32, i32* %105
br label %107
107: ; preds = %104, %103
%108 = phi i32 [ 1, %103 ], [ %106, %104 ]
%109 = icmp slt i32 %99, %108
br i1 %109, label %110, label %112
110: ; preds = %107
store i32 13, i32* %27
%111 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %157
112: ; preds = %107
%113 = load double*, double** %19
%114 = load double, double* %113
%115 = fcmp oeq double %114, 1.000000e+00
br i1 %115, label %116, label %135
116: ; preds = %112
%117 = load i32*, i32** %17
%118 = load i32, i32* %117
%119 = load i32*, i32** %18
%120 = load i32, i32* %119
%121 = load i32*, i32** %16
%122 = load i32, i32* %121
%123 = load double*, double** %22
%124 = load double*, double** %20
%125 = load double*, double** %25
%126 = load i32*, i32** %23
%127 = load i32, i32* %126
%128 = load i32*, i32** %21
%129 = load i32, i32* %128
%130 = load i32*, i32** %26
%131 = load i32, i32* %130
%132 = load double*, double** %24
%133 = load double, double* %132
%134 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_NN_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %118, i32 %120, i32 %122, double* %123, double* %124, double* %125, i32 %127, i32 %129, i32 %131, double %133)
br label %156
135: ; preds = %112
%136 = load i32*, i32** %17
%137 = load i32, i32* %136
%138 = load i32*, i32** %18
%139 = load i32, i32* %138
%140 = load i32*, i32** %16
%141 = load i32, i32* %140
%142 = load double*, double** %22
%143 = load double*, double** %20
%144 = load double*, double** %25
%145 = load i32*, i32** %23
%146 = load i32, i32* %145
%147 = load i32*, i32** %21
%148 = load i32, i32* %147
%149 = load i32*, i32** %26
%150 = load i32, i32* %149
%151 = load double*, double** %19
%152 = load double, double* %151
%153 = load double*, double** %24
%154 = load double, double* %153
%155 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_NN_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %137, i32 %139, i32 %141, double* %142, double* %143, double* %144, i32 %146, i32 %148, i32 %150, double %152, double %154)
br label %156
156: ; preds = %135, %116
br label %157
157: ; preds = %156, %110
br label %158
158: ; preds = %157, %95
br label %159
159: ; preds = %158, %80
br label %276
160: ; preds = %62
%161 = load i8*, i8** %15
%162 = load i8, i8* %161
%163 = sext i8 %162 to i32
%164 = icmp ne i32 %163, 99
br i1 %164, label %165, label %182
165: ; preds = %160
%166 = load i8*, i8** %15
%167 = load i8, i8* %166
%168 = sext i8 %167 to i32
%169 = icmp ne i32 %168, 67
br i1 %169, label %170, label %182
170: ; preds = %165
%171 = load i8*, i8** %15
%172 = load i8, i8* %171
%173 = sext i8 %172 to i32
%174 = icmp ne i32 %173, 116
br i1 %174, label %175, label %182
175: ; preds = %170
%176 = load i8*, i8** %15
%177 = load i8, i8* %176
%178 = sext i8 %177 to i32
%179 = icmp ne i32 %178, 84
br i1 %179, label %180, label %182
180: ; preds = %175
store i32 2, i32* %27
%181 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %275
182: ; preds = %175, %170, %165, %160
%183 = load i32*, i32** %21
%184 = load i32, i32* %183
%185 = load i32*, i32** %16
%186 = load i32, i32* %185
%187 = icmp sgt i32 1, %186
br i1 %187, label %188, label %189
188: ; preds = %182
br label %192
189: ; preds = %182
%190 = load i32*, i32** %16
%191 = load i32, i32* %190
br label %192
192: ; preds = %189, %188
%193 = phi i32 [ 1, %188 ], [ %191, %189 ]
%194 = icmp slt i32 %184, %193
br i1 %194, label %195, label %197
195: ; preds = %192
store i32 8, i32* %27
%196 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %274
197: ; preds = %192
%198 = load i32*, i32** %23
%199 = load i32, i32* %198
%200 = load i32*, i32** %17
%201 = load i32, i32* %200
%202 = icmp sgt i32 1, %201
br i1 %202, label %203, label %204
203: ; preds = %197
br label %207
204: ; preds = %197
%205 = load i32*, i32** %17
%206 = load i32, i32* %205
br label %207
207: ; preds = %204, %203
%208 = phi i32 [ 1, %203 ], [ %206, %204 ]
%209 = icmp slt i32 %199, %208
br i1 %209, label %210, label %212
210: ; preds = %207
store i32 10, i32* %27
%211 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %273
212: ; preds = %207
%213 = load i32*, i32** %26
%214 = load i32, i32* %213
%215 = load i32*, i32** %16
%216 = load i32, i32* %215
%217 = icmp sgt i32 1, %216
br i1 %217, label %218, label %219
218: ; preds = %212
br label %222
219: ; preds = %212
%220 = load i32*, i32** %16
%221 = load i32, i32* %220
br label %222
222: ; preds = %219, %218
%223 = phi i32 [ 1, %218 ], [ %221, %219 ]
%224 = icmp slt i32 %214, %223
br i1 %224, label %225, label %227
225: ; preds = %222
store i32 13, i32* %27
%226 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %272
227: ; preds = %222
%228 = load double*, double** %19
%229 = load double, double* %228
%230 = fcmp oeq double %229, 1.000000e+00
br i1 %230, label %231, label %250
231: ; preds = %227
%232 = load i32*, i32** %17
%233 = load i32, i32* %232
%234 = load i32*, i32** %18
%235 = load i32, i32* %234
%236 = load i32*, i32** %16
%237 = load i32, i32* %236
%238 = load double*, double** %22
%239 = load double*, double** %20
%240 = load double*, double** %25
%241 = load i32*, i32** %23
%242 = load i32, i32* %241
%243 = load i32*, i32** %21
%244 = load i32, i32* %243
%245 = load i32*, i32** %26
%246 = load i32, i32* %245
%247 = load double*, double** %24
%248 = load double, double* %247
%249 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_TN_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %233, i32 %235, i32 %237, double* %238, double* %239, double* %240, i32 %242, i32 %244, i32 %246, double %248)
br label %271
250: ; preds = %227
%251 = load i32*, i32** %17
%252 = load i32, i32* %251
%253 = load i32*, i32** %18
%254 = load i32, i32* %253
%255 = load i32*, i32** %16
%256 = load i32, i32* %255
%257 = load double*, double** %22
%258 = load double*, double** %20
%259 = load double*, double** %25
%260 = load i32*, i32** %23
%261 = load i32, i32* %260
%262 = load i32*, i32** %21
%263 = load i32, i32* %262
%264 = load i32*, i32** %26
%265 = load i32, i32* %264
%266 = load double*, double** %19
%267 = load double, double* %266
%268 = load double*, double** %24
%269 = load double, double* %268
%270 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_TN_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %252, i32 %254, i32 %256, double* %257, double* %258, double* %259, i32 %261, i32 %263, i32 %265, double %267, double %269)
br label %271
271: ; preds = %250, %231
br label %272
272: ; preds = %271, %225
br label %273
273: ; preds = %272, %210
br label %274
274: ; preds = %273, %195
br label %275
275: ; preds = %274, %180
br label %276
276: ; preds = %275, %159
br label %543
277: ; preds = %52
%278 = load i8*, i8** %15
%279 = load i8, i8* %278
%280 = sext i8 %279 to i32
%281 = icmp eq i32 %280, 110
br i1 %281, label %287, label %282
282: ; preds = %277
%283 = load i8*, i8** %15
%284 = load i8, i8* %283
%285 = sext i8 %284 to i32
%286 = icmp eq i32 %285, 78
br i1 %286, label %287, label %403
287: ; preds = %282, %277
%288 = load i8*, i8** %14
%289 = load i8, i8* %288
%290 = sext i8 %289 to i32
%291 = icmp ne i32 %290, 99
br i1 %291, label %292, label %309
292: ; preds = %287
%293 = load i8*, i8** %14
%294 = load i8, i8* %293
%295 = sext i8 %294 to i32
%296 = icmp ne i32 %295, 67
br i1 %296, label %297, label %309
297: ; preds = %292
%298 = load i8*, i8** %14
%299 = load i8, i8* %298
%300 = sext i8 %299 to i32
%301 = icmp ne i32 %300, 116
br i1 %301, label %302, label %309
302: ; preds = %297
%303 = load i8*, i8** %14
%304 = load i8, i8* %303
%305 = sext i8 %304 to i32
%306 = icmp ne i32 %305, 84
br i1 %306, label %307, label %309
307: ; preds = %302
store i32 1, i32* %27
%308 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %402
309: ; preds = %302, %297, %292, %287
%310 = load i32*, i32** %21
%311 = load i32, i32* %310
%312 = load i32*, i32** %18
%313 = load i32, i32* %312
%314 = icmp sgt i32 1, %313
br i1 %314, label %315, label %316
315: ; preds = %309
br label %319
316: ; preds = %309
%317 = load i32*, i32** %18
%318 = load i32, i32* %317
br label %319
319: ; preds = %316, %315
%320 = phi i32 [ 1, %315 ], [ %318, %316 ]
%321 = icmp slt i32 %311, %320
br i1 %321, label %322, label %324
322: ; preds = %319
store i32 8, i32* %27
%323 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %401
324: ; preds = %319
%325 = load i32*, i32** %23
%326 = load i32, i32* %325
%327 = load i32*, i32** %18
%328 = load i32, i32* %327
%329 = icmp sgt i32 1, %328
br i1 %329, label %330, label %331
330: ; preds = %324
br label %334
331: ; preds = %324
%332 = load i32*, i32** %18
%333 = load i32, i32* %332
br label %334
334: ; preds = %331, %330
%335 = phi i32 [ 1, %330 ], [ %333, %331 ]
%336 = icmp slt i32 %326, %335
br i1 %336, label %337, label %339
337: ; preds = %334
store i32 10, i32* %27
%338 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %400
339: ; preds = %334
%340 = load i32*, i32** %26
%341 = load i32, i32* %340
%342 = load i32*, i32** %16
%343 = load i32, i32* %342
%344 = icmp sgt i32 1, %343
br i1 %344, label %345, label %346
345: ; preds = %339
br label %349
346: ; preds = %339
%347 = load i32*, i32** %16
%348 = load i32, i32* %347
br label %349
349: ; preds = %346, %345
%350 = phi i32 [ 1, %345 ], [ %348, %346 ]
%351 = icmp slt i32 %341, %350
br i1 %351, label %352, label %354
352: ; preds = %349
store i32 13, i32* %27
%353 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %399
354: ; preds = %349
%355 = load double*, double** %19
%356 = load double, double* %355
%357 = fcmp oeq double %356, 1.000000e+00
br i1 %357, label %358, label %377
358: ; preds = %354
%359 = load i32*, i32** %17
%360 = load i32, i32* %359
%361 = load i32*, i32** %18
%362 = load i32, i32* %361
%363 = load i32*, i32** %16
%364 = load i32, i32* %363
%365 = load double*, double** %22
%366 = load double*, double** %20
%367 = load double*, double** %25
%368 = load i32*, i32** %23
%369 = load i32, i32* %368
%370 = load i32*, i32** %21
%371 = load i32, i32* %370
%372 = load i32*, i32** %26
%373 = load i32, i32* %372
%374 = load double*, double** %24
%375 = load double, double* %374
%376 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_NT_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %360, i32 %362, i32 %364, double* %365, double* %366, double* %367, i32 %369, i32 %371, i32 %373, double %375)
br label %398
377: ; preds = %354
%378 = load i32*, i32** %17
%379 = load i32, i32* %378
%380 = load i32*, i32** %18
%381 = load i32, i32* %380
%382 = load i32*, i32** %16
%383 = load i32, i32* %382
%384 = load double*, double** %22
%385 = load double*, double** %20
%386 = load double*, double** %25
%387 = load i32*, i32** %23
%388 = load i32, i32* %387
%389 = load i32*, i32** %21
%390 = load i32, i32* %389
%391 = load i32*, i32** %26
%392 = load i32, i32* %391
%393 = load double*, double** %19
%394 = load double, double* %393
%395 = load double*, double** %24
%396 = load double, double* %395
%397 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_NT_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %379, i32 %381, i32 %383, double* %384, double* %385, double* %386, i32 %388, i32 %390, i32 %392, double %394, double %396)
br label %398
398: ; preds = %377, %358
br label %399
399: ; preds = %398, %352
br label %400
400: ; preds = %399, %337
br label %401
401: ; preds = %400, %322
br label %402
402: ; preds = %401, %307
br label %542
403: ; preds = %282
%404 = load i8*, i8** %14
%405 = load i8, i8* %404
%406 = sext i8 %405 to i32
%407 = icmp ne i32 %406, 99
br i1 %407, label %408, label %425
408: ; preds = %403
%409 = load i8*, i8** %14
%410 = load i8, i8* %409
%411 = sext i8 %410 to i32
%412 = icmp ne i32 %411, 67
br i1 %412, label %413, label %425
413: ; preds = %408
%414 = load i8*, i8** %14
%415 = load i8, i8* %414
%416 = sext i8 %415 to i32
%417 = icmp ne i32 %416, 116
br i1 %417, label %418, label %425
418: ; preds = %413
%419 = load i8*, i8** %14
%420 = load i8, i8* %419
%421 = sext i8 %420 to i32
%422 = icmp ne i32 %421, 84
br i1 %422, label %423, label %425
423: ; preds = %418
store i32 1, i32* %27
%424 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %541
425: ; preds = %418, %413, %408, %403
%426 = load i8*, i8** %15
%427 = load i8, i8* %426
%428 = sext i8 %427 to i32
%429 = icmp ne i32 %428, 99
br i1 %429, label %430, label %447
430: ; preds = %425
%431 = load i8*, i8** %15
%432 = load i8, i8* %431
%433 = sext i8 %432 to i32
%434 = icmp ne i32 %433, 67
br i1 %434, label %435, label %447
435: ; preds = %430
%436 = load i8*, i8** %15
%437 = load i8, i8* %436
%438 = sext i8 %437 to i32
%439 = icmp ne i32 %438, 116
br i1 %439, label %440, label %447
440: ; preds = %435
%441 = load i8*, i8** %15
%442 = load i8, i8* %441
%443 = sext i8 %442 to i32
%444 = icmp ne i32 %443, 84
br i1 %444, label %445, label %447
445: ; preds = %440
store i32 2, i32* %27
%446 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %540
447: ; preds = %440, %435, %430, %425
%448 = load i32*, i32** %21
%449 = load i32, i32* %448
%450 = load i32*, i32** %18
%451 = load i32, i32* %450
%452 = icmp sgt i32 1, %451
br i1 %452, label %453, label %454
453: ; preds = %447
br label %457
454: ; preds = %447
%455 = load i32*, i32** %18
%456 = load i32, i32* %455
br label %457
457: ; preds = %454, %453
%458 = phi i32 [ 1, %453 ], [ %456, %454 ]
%459 = icmp slt i32 %449, %458
br i1 %459, label %460, label %462
460: ; preds = %457
store i32 8, i32* %27
%461 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %539
462: ; preds = %457
%463 = load i32*, i32** %23
%464 = load i32, i32* %463
%465 = load i32*, i32** %17
%466 = load i32, i32* %465
%467 = icmp sgt i32 1, %466
br i1 %467, label %468, label %469
468: ; preds = %462
br label %472
469: ; preds = %462
%470 = load i32*, i32** %17
%471 = load i32, i32* %470
br label %472
472: ; preds = %469, %468
%473 = phi i32 [ 1, %468 ], [ %471, %469 ]
%474 = icmp slt i32 %464, %473
br i1 %474, label %475, label %477
475: ; preds = %472
store i32 10, i32* %27
%476 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %538
477: ; preds = %472
%478 = load i32*, i32** %26
%479 = load i32, i32* %478
%480 = load i32*, i32** %16
%481 = load i32, i32* %480
%482 = icmp sgt i32 1, %481
br i1 %482, label %483, label %484
483: ; preds = %477
br label %487
484: ; preds = %477
%485 = load i32*, i32** %16
%486 = load i32, i32* %485
br label %487
487: ; preds = %484, %483
%488 = phi i32 [ 1, %483 ], [ %486, %484 ]
%489 = icmp slt i32 %479, %488
br i1 %489, label %490, label %492
490: ; preds = %487
store i32 13, i32* %27
%491 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %27)
br label %537
492: ; preds = %487
%493 = load double*, double** %19
%494 = load double, double* %493
%495 = fcmp oeq double %494, 1.000000e+00
br i1 %495, label %496, label %515
496: ; preds = %492
%497 = load i32*, i32** %17
%498 = load i32, i32* %497
%499 = load i32*, i32** %18
%500 = load i32, i32* %499
%501 = load i32*, i32** %16
%502 = load i32, i32* %501
%503 = load double*, double** %22
%504 = load double*, double** %20
%505 = load double*, double** %25
%506 = load i32*, i32** %23
%507 = load i32, i32* %506
%508 = load i32*, i32** %21
%509 = load i32, i32* %508
%510 = load i32*, i32** %26
%511 = load i32, i32* %510
%512 = load double*, double** %24
%513 = load double, double* %512
%514 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_TT_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %498, i32 %500, i32 %502, double* %503, double* %504, double* %505, i32 %507, i32 %509, i32 %511, double %513)
br label %536
515: ; preds = %492
%516 = load i32*, i32** %17
%517 = load i32, i32* %516
%518 = load i32*, i32** %18
%519 = load i32, i32* %518
%520 = load i32*, i32** %16
%521 = load i32, i32* %520
%522 = load double*, double** %22
%523 = load double*, double** %20
%524 = load double*, double** %25
%525 = load i32*, i32** %23
%526 = load i32, i32* %525
%527 = load i32*, i32** %21
%528 = load i32, i32* %527
%529 = load i32*, i32** %26
%530 = load i32, i32* %529
%531 = load double*, double** %19
%532 = load double, double* %531
%533 = load double*, double** %24
%534 = load double, double* %533
%535 = call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_TT_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %517, i32 %519, i32 %521, double* %522, double* %523, double* %524, i32 %526, i32 %528, i32 %530, double %532, double %534)
br label %536
536: ; preds = %515, %496
br label %537
537: ; preds = %536, %490
br label %538
538: ; preds = %537, %475
br label %539
539: ; preds = %538, %460
br label %540
540: ; preds = %539, %445
br label %541
541: ; preds = %540, %423
br label %542
542: ; preds = %541, %402
br label %543
543: ; preds = %31, %37, %43, %542, %276
ret void
}

LLVM IR (-O2):
@.str = [7 x i8] c"DGEMM \00"
define void @dgemm(i8* nocapture %0, i8* nocapture %1, i32* nocapture %2, i32* nocapture %3, i32* nocapture %4, double* nocapture %5, double* %6, i32* nocapture %7, double* %8, i32* nocapture %9, double* nocapture %10, double* %11, i32* nocapture %12) {
%14 = alloca i32
%15 = bitcast i32* %14 to i8*
%16 = load i32, i32* %2
%17 = icmp slt i32 %16, 0
br i1 %17, label %18, label %20
18: ; preds = %13
store i32 3, i32* %14
%19 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
20: ; preds = %13
%21 = load i32, i32* %3
%22 = icmp slt i32 %21, 0
br i1 %22, label %23, label %25
23: ; preds = %20
store i32 4, i32* %14
%24 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
25: ; preds = %20
%26 = load i32, i32* %4
%27 = icmp slt i32 %26, 0
br i1 %27, label %28, label %30
28: ; preds = %25
store i32 5, i32* %14
%29 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
30: ; preds = %25
%31 = load i8, i8* %0
switch i8 %31, label %90 [
i8 110, label %32
i8 78, label %32
]
32: ; preds = %30, %30
%33 = load i8, i8* %1
switch i8 %33, label %61 [
i8 110, label %34
i8 78, label %34
i8 99, label %63
i8 67, label %63
i8 116, label %63
i8 84, label %63
]
34: ; preds = %32, %32
%35 = load i32, i32* %7
%36 = icmp eq i32 %16, 0
%37 = select i1 %36, i32 1, i32 %16
%38 = icmp slt i32 %35, %37
br i1 %38, label %39, label %41
39: ; preds = %34
store i32 8, i32* %14
%40 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
41: ; preds = %34
%42 = load i32, i32* %9
%43 = icmp eq i32 %26, 0
%44 = select i1 %43, i32 1, i32 %26
%45 = icmp slt i32 %42, %44
br i1 %45, label %46, label %48
46: ; preds = %41
store i32 10, i32* %14
%47 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
48: ; preds = %41
%49 = load i32, i32* %12
%50 = icmp slt i32 %49, %37
br i1 %50, label %51, label %53
51: ; preds = %48
store i32 13, i32* %14
%52 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
53: ; preds = %48
%54 = load double, double* %5
%55 = fcmp oeq double %54, 1.000000e+00
%56 = load double, double* %10
br i1 %55, label %57, label %59
57: ; preds = %53
%58 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_NN_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %42, i32 %35, i32 %49, double %56)
br label %157
59: ; preds = %53
%60 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_NN_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %42, i32 %35, i32 %49, double %54, double %56)
br label %157
61: ; preds = %32
store i32 2, i32* %14
%62 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
63: ; preds = %32, %32, %32, %32
%64 = load i32, i32* %7
%65 = icmp eq i32 %16, 0
%66 = select i1 %65, i32 1, i32 %16
%67 = icmp slt i32 %64, %66
br i1 %67, label %68, label %70
68: ; preds = %63
store i32 8, i32* %14
%69 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
70: ; preds = %63
%71 = load i32, i32* %9
%72 = icmp eq i32 %21, 0
%73 = select i1 %72, i32 1, i32 %21
%74 = icmp slt i32 %71, %73
br i1 %74, label %75, label %77
75: ; preds = %70
store i32 10, i32* %14
%76 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
77: ; preds = %70
%78 = load i32, i32* %12
%79 = icmp slt i32 %78, %66
br i1 %79, label %80, label %82
80: ; preds = %77
store i32 13, i32* %14
%81 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
82: ; preds = %77
%83 = load double, double* %5
%84 = fcmp oeq double %83, 1.000000e+00
%85 = load double, double* %10
br i1 %84, label %86, label %88
86: ; preds = %82
%87 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_TN_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %71, i32 %64, i32 %78, double %85)
br label %157
88: ; preds = %82
%89 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_TN_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %71, i32 %64, i32 %78, double %83, double %85)
br label %157
90: ; preds = %30
%91 = load i8, i8* %1
switch i8 %91, label %122 [
i8 110, label %92
i8 78, label %92
]
92: ; preds = %90, %90
switch i8 %31, label %93 [
i8 99, label %95
i8 67, label %95
i8 116, label %95
i8 84, label %95
]
93: ; preds = %92
store i32 1, i32* %14
%94 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
95: ; preds = %92, %92, %92, %92
%96 = load i32, i32* %7
%97 = icmp eq i32 %26, 0
%98 = select i1 %97, i32 1, i32 %26
%99 = icmp slt i32 %96, %98
br i1 %99, label %100, label %102
100: ; preds = %95
store i32 8, i32* %14
%101 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
102: ; preds = %95
%103 = load i32, i32* %9
%104 = icmp slt i32 %103, %98
br i1 %104, label %105, label %107
105: ; preds = %102
store i32 10, i32* %14
%106 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
107: ; preds = %102
%108 = load i32, i32* %12
%109 = icmp eq i32 %16, 0
%110 = select i1 %109, i32 1, i32 %16
%111 = icmp slt i32 %108, %110
br i1 %111, label %112, label %114
112: ; preds = %107
store i32 13, i32* %14
%113 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
114: ; preds = %107
%115 = load double, double* %5
%116 = fcmp oeq double %115, 1.000000e+00
%117 = load double, double* %10
br i1 %116, label %118, label %120
118: ; preds = %114
%119 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_NT_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %103, i32 %96, i32 %108, double %117)
br label %157
120: ; preds = %114
%121 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_NT_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %103, i32 %96, i32 %108, double %115, double %117)
br label %157
122: ; preds = %90
switch i8 %31, label %123 [
i8 99, label %125
i8 67, label %125
i8 116, label %125
i8 84, label %125
]
123: ; preds = %122
store i32 1, i32* %14
%124 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
125: ; preds = %122, %122, %122, %122
switch i8 %91, label %126 [
i8 99, label %128
i8 67, label %128
i8 116, label %128
i8 84, label %128
]
126: ; preds = %125
store i32 2, i32* %14
%127 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
128: ; preds = %125, %125, %125, %125
%129 = load i32, i32* %7
%130 = icmp eq i32 %26, 0
%131 = select i1 %130, i32 1, i32 %26
%132 = icmp slt i32 %129, %131
br i1 %132, label %133, label %135
133: ; preds = %128
store i32 8, i32* %14
%134 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
135: ; preds = %128
%136 = load i32, i32* %9
%137 = icmp eq i32 %21, 0
%138 = select i1 %137, i32 1, i32 %21
%139 = icmp slt i32 %136, %138
br i1 %139, label %140, label %142
140: ; preds = %135
store i32 10, i32* %14
%141 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
142: ; preds = %135
%143 = load i32, i32* %12
%144 = icmp eq i32 %16, 0
%145 = select i1 %144, i32 1, i32 %16
%146 = icmp slt i32 %143, %145
br i1 %146, label %147, label %149
147: ; preds = %142
store i32 13, i32* %14
%148 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @xerbla to i32 (i8*, i32*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %14)
br label %157
149: ; preds = %142
%150 = load double, double* %5
%151 = fcmp oeq double %150, 1.000000e+00
%152 = load double, double* %10
br i1 %151, label %153, label %155
153: ; preds = %149
%154 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...) bitcast (i32 (...)* @mm_double_TT_1 to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %136, i32 %129, i32 %143, double %152)
br label %157
155: ; preds = %149
%156 = tail call i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @mm_double_TT_c to i32 (i32, i32, i32, double*, double*, double*, i32, i32, i32, double, double, ...)*)(i32 %21, i32 %26, i32 %16, double* %8, double* %6, double* %11, i32 %136, i32 %129, i32 %143, double %150, double %152)
br label %157
157: ; preds = %61, %75, %86, %88, %80, %68, %39, %51, %59, %57, %46, %123, %133, %147, %155, %153, %140, %126, %93, %105, %118, %120, %112, %100, %28, %23, %18
ret void
}