#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ mul_mdmd_md_l0g(int const, int const, int const,
                                   double const *, double const *, double *,
                                   int const, int const, int const);
int /*<<< orphan*/ mul_mdmd_md_l0nf(int const, int const, int const,
                                    double const *, double const *, double *,
                                    int const, int const, int const);
void mul_mdmd_md(const int M, const int K, const int N, const double *const A,
                 const double *const B, double *const C, const int Astride,
                 const int Bstride, const int Cstride) {
  int m, k, n;
  const double *a, *b;
  double *c;
  const double *ap, *bp;
  double *cp;
  const int m_marg = (M % 10) - (M % 2);
  const int k_marg = (K % 81) - ((K % 81) - 1) % 16;
  const int n_marg = (N % 10) - (N % 2);
  {
    double *cprb, *cpre, *cp, *cpe;
    cpre = C + M * Cstride;
    for (cprb = C; cprb != cpre; cprb += Cstride) {
      cpe = cprb + N;
      for (cp = cprb; cp != cpe; cp++) {
        *cp = 0.0;
      }
    }
  }
  for (m = 0; (m + 10) <= M; m += 10) {
    c = C + m * Cstride;
    a = A + m * Astride;
    for (n = 0, b = B, cp = c; (n + 10) <= N; n += 10, b += 10, cp += 10) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0nf(10, 81, 10, ap, bp, cp, Astride, Bstride, Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0nf(10, k_marg, 10, ap, bp, cp, Astride, Bstride, Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(10, K - k, 10, ap, bp, cp, Astride, Bstride, Cstride);
      }
    }
    if (n + 2 <= N) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0nf(10, 81, n_marg, ap, bp, cp, Astride, Bstride, Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0nf(10, k_marg, n_marg, ap, bp, cp, Astride, Bstride,
                         Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(10, K - k, n_marg, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
      n += n_marg;
      b += n_marg;
      cp += n_marg;
    }
    if (n < N) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0g(10, 81, N - n, ap, bp, cp, Astride, Bstride, Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0g(10, k_marg, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(10, K - k, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
    }
  }
  if (m + 2 <= M) {
    c = C + m * Cstride;
    a = A + m * Astride;
    for (n = 0, b = B, cp = c; (n + 10) <= N; n += 10, b += 10, cp += 10) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0nf(m_marg, 81, 10, ap, bp, cp, Astride, Bstride, Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0nf(m_marg, k_marg, 10, ap, bp, cp, Astride, Bstride,
                         Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(m_marg, K - k, 10, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
    }
    if (n + 2 <= N) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0nf(m_marg, 81, n_marg, ap, bp, cp, Astride, Bstride,
                         Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0nf(m_marg, k_marg, n_marg, ap, bp, cp, Astride, Bstride,
                         Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(m_marg, K - k, n_marg, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
      n += n_marg;
      b += n_marg;
      cp += n_marg;
    }
    if (n < N) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0g(m_marg, 81, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0g(m_marg, k_marg, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(m_marg, K - k, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
    }
    m += m_marg;
  }
  if (m < M) {
    c = C + m * Cstride;
    a = A + m * Astride;
    for (n = 0, b = B, cp = c; (n + 10) <= N; n += 10, b += 10, cp += 10) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0g(M - m, 81, 10, ap, bp, cp, Astride, Bstride, Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0g(M - m, k_marg, 10, ap, bp, cp, Astride, Bstride,
                        Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(M - m, K - k, 10, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
    }
    if (n + 2 <= N) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0g(M - m, 81, n_marg, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0g(M - m, k_marg, n_marg, ap, bp, cp, Astride, Bstride,
                        Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(M - m, K - k, n_marg, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
      n += n_marg;
      b += n_marg;
      cp += n_marg;
    }
    if (n < N) {
      for (k = 0, bp = b, ap = a; (k + 81) <= K;
           k += 81, bp += 81 * Bstride, ap += 81) {
        mul_mdmd_md_l0g(M - m, 81, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
      if (k + 17 <= K) {
        mul_mdmd_md_l0g(M - m, k_marg, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
        k += k_marg;
        bp += k_marg * Bstride;
        ap += k_marg;
      }
      if (k < K) {
        mul_mdmd_md_l0g(M - m, K - k, N - n, ap, bp, cp, Astride, Bstride,
                        Cstride);
      }
    }
  }
}


x86 assembly (clang, -O0):
<mul_mdmd_md>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
mov    -0x4(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0xa4(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0xa4(%rbp),%edx
sub    %eax,%edx
mov    %edx,-0x6c(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x51,%ecx
cltd
idiv   %ecx
mov    %edx,-0xa0(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x51,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
sub    $0x1,%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0xa0(%rbp),%edx
sub    %eax,%edx
mov    %edx,-0x70(%rbp)
mov    -0xc(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x9c(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0x9c(%rbp),%edx
sub    %eax,%edx
mov    %edx,-0x74(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x88(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
cmp    -0x88(%rbp),%rax
je     127f <mul_mdmd_md+0x15f>
mov    -0x80(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x98(%rbp)
mov    -0x80(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
cmp    -0x98(%rbp),%rax
je     1260 <mul_mdmd_md+0x140>
mov    -0x90(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x90(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x90(%rbp)
jmp    1227 <mul_mdmd_md+0x107>
jmp    1265 <mul_mdmd_md+0x145>
mov    0x20(%rbp),%ecx
mov    -0x80(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x80(%rbp)
jmp    11f5 <mul_mdmd_md+0xd5>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xa,%eax
cmp    -0x4(%rbp),%eax
jg     1765 <mul_mdmd_md+0x645>
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   0x10(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x34(%rbp),%eax
add    $0xa,%eax
cmp    -0xc(%rbp),%eax
jg     1460 <mul_mdmd_md+0x340>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     137a <mul_mdmd_md+0x25a>
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edx
mov    $0x51,%esi
mov    %edx,%edi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1304 <mul_mdmd_md+0x1e4>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     13f3 <mul_mdmd_md+0x2d3>
mov    -0x70(%rbp),%esi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edx
mov    %edx,%edi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1435 <mul_mdmd_md+0x315>
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edx
mov    %edx,%edi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
jmp    143a <mul_mdmd_md+0x31a>
mov    -0x34(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x48(%rbp)
mov    -0x68(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x68(%rbp)
jmp    12de <mul_mdmd_md+0x1be>
mov    -0x34(%rbp),%eax
add    $0x2,%eax
cmp    -0xc(%rbp),%eax
jg     15ed <mul_mdmd_md+0x4cd>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     14fd <mul_mdmd_md+0x3dd>
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edi
mov    $0x51,%esi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1486 <mul_mdmd_md+0x366>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     1577 <mul_mdmd_md+0x457>
mov    -0x70(%rbp),%esi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    15ba <mul_mdmd_md+0x49a>
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x74(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1752 <mul_mdmd_md+0x632>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     168a <mul_mdmd_md+0x56a>
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edi
mov    $0x51,%esi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1610 <mul_mdmd_md+0x4f0>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     1707 <mul_mdmd_md+0x5e7>
mov    -0x70(%rbp),%esi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    174d <mul_mdmd_md+0x62d>
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
jmp    1752 <mul_mdmd_md+0x632>
jmp    1757 <mul_mdmd_md+0x637>
mov    -0x2c(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x2c(%rbp)
jmp    1286 <mul_mdmd_md+0x166>
mov    -0x2c(%rbp),%eax
add    $0x2,%eax
cmp    -0x4(%rbp),%eax
jg     1c31 <mul_mdmd_md+0xb11>
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   0x10(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x34(%rbp),%eax
add    $0xa,%eax
cmp    -0xc(%rbp),%eax
jg     1942 <mul_mdmd_md+0x822>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     185a <mul_mdmd_md+0x73a>
mov    -0x6c(%rbp),%edi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0x51,%esi
mov    $0xa,%edx
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    17e3 <mul_mdmd_md+0x6c3>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     18d4 <mul_mdmd_md+0x7b4>
mov    -0x6c(%rbp),%edi
mov    -0x70(%rbp),%esi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edx
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1917 <mul_mdmd_md+0x7f7>
mov    -0x6c(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edx
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
jmp    191c <mul_mdmd_md+0x7fc>
mov    -0x34(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x48(%rbp)
mov    -0x68(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x68(%rbp)
jmp    17bd <mul_mdmd_md+0x69d>
mov    -0x34(%rbp),%eax
add    $0x2,%eax
cmp    -0xc(%rbp),%eax
jg     1ac9 <mul_mdmd_md+0x9a9>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     19dd <mul_mdmd_md+0x8bd>
mov    -0x6c(%rbp),%edi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0x51,%esi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1968 <mul_mdmd_md+0x848>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     1a55 <mul_mdmd_md+0x935>
mov    -0x6c(%rbp),%edi
mov    -0x70(%rbp),%esi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1040 <mul_mdmd_md_l0nf@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1a96 <mul_mdmd_md+0x976>
mov    -0x6c(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x74(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1c28 <mul_mdmd_md+0xb08>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     1b64 <mul_mdmd_md+0xa44>
mov    -0x6c(%rbp),%edi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0x51,%esi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1aec <mul_mdmd_md+0x9cc>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     1bdf <mul_mdmd_md+0xabf>
mov    -0x6c(%rbp),%edi
mov    -0x70(%rbp),%esi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1c23 <mul_mdmd_md+0xb03>
mov    -0x6c(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
jmp    1c28 <mul_mdmd_md+0xb08>
mov    -0x6c(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    2111 <mul_mdmd_md+0xff1>
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   0x10(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x34(%rbp),%eax
add    $0xa,%eax
cmp    -0xc(%rbp),%eax
jg     1e14 <mul_mdmd_md+0xcf4>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     1d26 <mul_mdmd_md+0xc06>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0x51,%esi
mov    $0xa,%edx
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1cac <mul_mdmd_md+0xb8c>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     1da3 <mul_mdmd_md+0xc83>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x70(%rbp),%esi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edx
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1de9 <mul_mdmd_md+0xcc9>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0xa,%edx
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
jmp    1dee <mul_mdmd_md+0xcce>
mov    -0x34(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x48(%rbp)
mov    -0x68(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x68(%rbp)
jmp    1c86 <mul_mdmd_md+0xb66>
mov    -0x34(%rbp),%eax
add    $0x2,%eax
cmp    -0xc(%rbp),%eax
jg     1fa4 <mul_mdmd_md+0xe84>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     1eb2 <mul_mdmd_md+0xd92>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0x51,%esi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1e3a <mul_mdmd_md+0xd1a>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     1f2d <mul_mdmd_md+0xe0d>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x70(%rbp),%esi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1f71 <mul_mdmd_md+0xe51>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0x74(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x74(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    210c <mul_mdmd_md+0xfec>
movl   $0x0,-0x30(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x51,%eax
cmp    -0x8(%rbp),%eax
jg     2042 <mul_mdmd_md+0xf22>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    $0x51,%esi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x30(%rbp),%eax
add    $0x51,%eax
mov    %eax,-0x30(%rbp)
imul   $0x51,0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x288,%rax
mov    %rax,-0x58(%rbp)
jmp    1fc7 <mul_mdmd_md+0xea7>
mov    -0x30(%rbp),%eax
add    $0x11,%eax
cmp    -0x8(%rbp),%eax
jg     20c0 <mul_mdmd_md+0xfa0>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x70(%rbp),%esi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    -0x70(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x70(%rbp),%ecx
imul   0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    2107 <mul_mdmd_md+0xfe7>
mov    -0x4(%rbp),%edi
sub    -0x2c(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    -0x30(%rbp),%esi
mov    -0xc(%rbp),%edx
sub    -0x34(%rbp),%edx
mov    -0x58(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    0x10(%rbp),%r11d
mov    0x18(%rbp),%r10d
mov    0x20(%rbp),%eax
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
jmp    210c <mul_mdmd_md+0xfec>
jmp    2111 <mul_mdmd_md+0xff1>
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mul_mdmd_md>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xb8,%rsp
mov    %r9,0x80(%rsp)
mov    %r8,0x68(%rsp)
mov    %rcx,0x88(%rsp)
mov    0x100(%rsp),%ebp
mov    0xf8(%rsp),%eax
mov    %rax,0x10(%rsp)
mov    0xf0(%rsp),%eax
mov    %rax,0x18(%rsp)
mov    %esi,0x4(%rsp)
movslq %esi,%rsi
imul   $0x1948b0fd,%rsi,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x23,%rax
add    %ecx,%eax
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,8),%eax
sub    %eax,%esi
mov    %rsi,0x58(%rsp)
lea    -0x1(%rsi),%eax
mov    %eax,%ecx
sar    $0x7,%cl
shr    $0x4,%cl
add    %al,%cl
and    $0xf0,%cl
sub    %cl,%al
movsbl %al,%eax
mov    %eax,0x8(%rsp)
movslq %edx,%r12
imul   $0x66666667,%r12,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x22,%rax
add    %ecx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%r15d
mov    %r12d,%r14d
shr    $0x1f,%r14d
mov    %edx,(%rsp)
add    %edx,%r14d
and    $0xfffffffe,%r14d
mov    %ebp,%eax
mov    %edi,0x28(%rsp)
imul   %edi,%eax
mov    %rbp,0x20(%rsp)
movslq %ebp,%rcx
mov    %rcx,0x90(%rsp)
test   %eax,%eax
je     1246 <mul_mdmd_md+0x116>
movslq %eax,%rbp
shl    $0x3,%r12
mov    0x90(%rsp),%rax
lea    0x0(,%rax,8),%r13
shl    $0x3,%rbp
xor    %ebx,%ebx
jmp    1228 <mul_mdmd_md+0xf8>
add    %r13,%rbx
cmp    %rbx,%rbp
je     1246 <mul_mdmd_md+0x116>
cmpl   $0x0,(%rsp)
je     1220 <mul_mdmd_md+0xf0>
mov    0x80(%rsp),%rax
lea    (%rax,%rbx,1),%rdi
xor    %esi,%esi
mov    %r12,%rdx
call   1040 <memset@plt>
jmp    1220 <mul_mdmd_md+0xf0>
mov    0x58(%rsp),%rax
sub    0x8(%rsp),%eax
mov    %rax,0x58(%rsp)
mov    %r14d,%eax
sub    %r15d,%eax
xor    %ebx,%ebx
mov    0x28(%rsp),%ebp
cmp    $0xa,%ebp
mov    0x68(%rsp),%r14
mov    0x4(%rsp),%r12d
mov    %eax,0x2c(%rsp)
jl     17f2 <mul_mdmd_md+0x6c2>
mov    0x10(%rsp),%rdx
lea    (%rdx,%rdx,8),%eax
lea    (%rax,%rax,8),%eax
movslq %eax,%rsi
mov    0x58(%rsp),%rcx
mov    %ecx,%eax
imul   %edx,%eax
cltq
mov    %rax,0x70(%rsp)
movslq %ecx,%rax
mov    %rax,0x78(%rsp)
movslq 0x2c(%rsp),%rax
mov    %rax,0x98(%rsp)
mov    %ebp,%eax
mov    %rax,0xa8(%rsp)
mov    0x18(%rsp),%r10
movslq %r10d,%rax
mov    %rax,0xa0(%rsp)
shl    $0x3,%rsi
mov    %rsi,0x38(%rsp)
mov    $0xa,%eax
xor    %edi,%edi
mov    %r12d,%ebp
jmp    1303 <mul_mdmd_md+0x1d3>
nopw   0x0(%rax,%rax,1)
mov    0xb0(%rsp),%rdi
add    $0xa,%rdi
lea    0xa(%rbx),%rax
cmp    0xa8(%rsp),%rax
mov    0x68(%rsp),%r14
jg     17eb <mul_mdmd_md+0x6bb>
mov    %rax,%rdx
mov    %rdi,%rax
imul   0x90(%rsp),%rax
mov    %rdi,%rcx
imul   0xa0(%rsp),%rcx
mov    0x80(%rsp),%rsi
lea    (%rsi,%rax,8),%r9
mov    0x88(%rsp),%rax
lea    (%rax,%rcx,8),%rbx
cmpl   $0xa,(%rsp)
mov    %rdx,0x50(%rsp)
mov    %rdi,0xb0(%rsp)
mov    %rbx,0x60(%rsp)
jge    1370 <mul_mdmd_md+0x240>
mov    %r14,%r13
xor    %ecx,%ecx
mov    0x10(%rsp),%r15
lea    0x2(%rcx),%eax
cmp    (%rsp),%eax
jle    1510 <mul_mdmd_md+0x3e0>
mov    0x50(%rsp),%rbx
jmp    1685 <mul_mdmd_md+0x555>
xchg   %ax,%ax
mov    $0xa,%eax
mov    %r14,%r13
mov    0x10(%rsp),%r15
jmp    13a4 <mul_mdmd_md+0x274>
nop
mov    0x48(%rsp),%r13
add    $0x50,%r13
mov    0x40(%rsp),%r9
add    $0x50,%r9
mov    0x30(%rsp),%rcx
lea    0xa(%rcx),%eax
cmp    (%rsp),%eax
mov    0x60(%rsp),%rbx
jg     1358 <mul_mdmd_md+0x228>
mov    %rax,0x30(%rsp)
xor    %r14d,%r14d
mov    %rbx,%rcx
mov    %r13,0x48(%rsp)
cmp    $0x51,%ebp
mov    %ebp,%edx
mov    0x20(%rsp),%rbx
jl     143f <mul_mdmd_md+0x30f>
mov    %r10,%r12
mov    %r15,%rax
xor    %r15d,%r15d
mov    0x48(%rsp),%r13
mov    0x60(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %rcx,0x8(%rsp)
sub    $0x8,%rsp
mov    $0xa,%edi
mov    $0x51,%esi
mov    $0xa,%edx
mov    %r13,%r8
mov    %r9,%rbp
push   %rbx
push   %rax
push   %r12
mov    %rax,%r14
call   1050 <mul_mdmd_md_l0nf@plt>
mov    0x58(%rsp),%rsi
mov    0x28(%rsp),%rcx
mov    %r14,%rax
mov    0x24(%rsp),%edx
mov    %rbp,%r9
add    $0x20,%rsp
add    $0x288,%rcx
lea    0x51(%r15),%r14d
add    $0xa2,%r15d
add    %rsi,%r13
cmp    %edx,%r15d
mov    %r14d,%r15d
jle    13e0 <mul_mdmd_md+0x2b0>
lea    0x11(%r14),%eax
cmp    %edx,%eax
mov    %r9,0x40(%rsp)
jle    1470 <mul_mdmd_md+0x340>
mov    %edx,%ebp
mov    0x10(%rsp),%r15
mov    0x18(%rsp),%r10
cmp    %ebp,%r14d
jge    1380 <mul_mdmd_md+0x250>
jmp    14cf <mul_mdmd_md+0x39f>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
sub    $0x8,%rsp
mov    $0xa,%edi
mov    0x80(%rsp),%rbp
mov    %ebp,%esi
mov    $0xa,%edx
mov    %rcx,%rbx
mov    %r13,%r8
push   0x28(%rsp)
mov    0x20(%rsp),%r15
push   %r15
mov    0x30(%rsp),%r12
push   %r12
call   1050 <mul_mdmd_md_l0nf@plt>
mov    %rbx,%rcx
mov    %r12,%r10
add    $0x20,%rsp
add    0x58(%rsp),%r14d
mov    0x70(%rsp),%rax
lea    0x0(%r13,%rax,8),%r13
lea    (%rbx,%rbp,8),%rcx
mov    0x4(%rsp),%ebp
cmp    %ebp,%r14d
jge    1380 <mul_mdmd_md+0x250>
mov    %ebp,%esi
sub    %r14d,%esi
sub    $0x8,%rsp
mov    $0xa,%edi
mov    $0xa,%edx
mov    %r13,%r8
mov    0x48(%rsp),%r9
push   0x28(%rsp)
push   %r15
push   %r10
mov    %r10,%rbx
call   1030 <mul_mdmd_md_l0g@plt>
mov    %rbx,%r10
add    $0x20,%rsp
jmp    1380 <mul_mdmd_md+0x250>
cs nopw 0x0(%rax,%rax,1)
mov    %rcx,0x30(%rsp)
mov    %ebp,%edx
xor    %ebp,%ebp
mov    %rbx,%rcx
mov    %r13,0x48(%rsp)
mov    %r13,%r8
cmp    $0x51,%edx
mov    %r15,%r12
mov    0x20(%rsp),%r15
mov    0x2c(%rsp),%r13d
jl     15ad <mul_mdmd_md+0x47d>
xor    %ebx,%ebx
mov    0x48(%rsp),%r8
mov    0x60(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %rcx,0x8(%rsp)
sub    $0x8,%rsp
mov    $0xa,%edi
mov    $0x51,%esi
mov    %r13d,%edx
mov    %r8,%r14
mov    %r9,%rbp
push   %r15
push   %r12
push   %r10
call   1050 <mul_mdmd_md_l0nf@plt>
mov    0x58(%rsp),%rsi
mov    %r14,%r8
mov    0x28(%rsp),%rcx
mov    0x24(%rsp),%edx
mov    0x38(%rsp),%r10
mov    %rbp,%r9
add    $0x20,%rsp
add    $0x288,%rcx
lea    0x51(%rbx),%ebp
add    $0xa2,%ebx
add    %rsi,%r8
cmp    %edx,%ebx
mov    %ebp,%ebx
jle    1550 <mul_mdmd_md+0x420>
lea    0x11(%rbp),%eax
cmp    %edx,%eax
jle    15d0 <mul_mdmd_md+0x4a0>
mov    %r9,%r15
mov    0x50(%rsp),%rbx
mov    0x2c(%rsp),%r12d
cmp    0x4(%rsp),%ebp
jl     1633 <mul_mdmd_md+0x503>
jmp    1660 <mul_mdmd_md+0x530>
nopl   0x0(%rax)
sub    $0x8,%rsp
mov    $0xa,%edi
mov    %rcx,%rbx
mov    0x80(%rsp),%r14
mov    %r14d,%esi
mov    0x34(%rsp),%r12d
mov    %r12d,%edx
mov    %r8,%r13
mov    %r9,%r15
push   0x28(%rsp)
push   0x20(%rsp)
push   %r10
call   1050 <mul_mdmd_md_l0nf@plt>
mov    %r13,%r8
mov    0x38(%rsp),%r10
add    $0x20,%rsp
add    0x58(%rsp),%ebp
mov    0x70(%rsp),%rax
lea    0x0(,%rax,8),%r8
add    %r13,%r8
lea    (%rbx,%r14,8),%rcx
mov    0x50(%rsp),%rbx
cmp    0x4(%rsp),%ebp
jge    1660 <mul_mdmd_md+0x530>
mov    0x4(%rsp),%esi
sub    %ebp,%esi
sub    $0x8,%rsp
mov    $0xa,%edi
mov    %r12d,%edx
mov    %r15,%r9
push   0x28(%rsp)
push   0x20(%rsp)
push   %r10
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x38(%rsp),%r10
add    $0x20,%rsp
mov    0x30(%rsp),%rcx
add    %r12d,%ecx
mov    0x98(%rsp),%rax
mov    0x48(%rsp),%r13
lea    0x0(%r13,%rax,8),%r13
mov    %r15,%r9
lea    (%r15,%rax,8),%r9
mov    0x4(%rsp),%ebp
mov    %rcx,0x30(%rsp)
cmp    (%rsp),%ecx
jge    12e0 <mul_mdmd_md+0x1b0>
xor    %r14d,%r14d
cmp    $0x51,%ebp
jge    16b0 <mul_mdmd_md+0x580>
mov    %r13,%r12
mov    0x60(%rsp),%r13
jmp    1723 <mul_mdmd_md+0x5f3>
nopl   0x0(%rax,%rax,1)
mov    (%rsp),%eax
sub    0x30(%rsp),%eax
mov    %eax,0x8(%rsp)
xor    %ebx,%ebx
mov    0x10(%rsp),%r15
mov    %r13,%r12
mov    0x60(%rsp),%r13
nopw   0x0(%rax,%rax,1)
sub    $0x8,%rsp
mov    $0xa,%edi
mov    $0x51,%esi
mov    0x10(%rsp),%edx
mov    %r13,%rcx
mov    %r12,%r8
mov    %r9,%rbp
push   0x28(%rsp)
push   %r15
push   %r10
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x38(%rsp),%r10
mov    %rbp,%r9
add    $0x20,%rsp
add    $0x288,%r13
lea    0x51(%rbx),%r14d
add    $0xa2,%ebx
add    0x38(%rsp),%r12
cmp    0x4(%rsp),%ebx
mov    %r14d,%ebx
jle    16d0 <mul_mdmd_md+0x5a0>
mov    %r12,%r8
mov    %r13,%rcx
lea    0x11(%r14),%eax
mov    0x4(%rsp),%ebp
cmp    %ebp,%eax
jle    1750 <mul_mdmd_md+0x620>
mov    0x50(%rsp),%rbx
mov    %r8,%r13
cmp    %ebp,%r14d
jge    12e0 <mul_mdmd_md+0x1b0>
jmp    17b6 <mul_mdmd_md+0x686>
nopl   0x0(%rax,%rax,1)
mov    (%rsp),%edx
sub    0x30(%rsp),%edx
sub    $0x8,%rsp
mov    $0xa,%edi
mov    0x80(%rsp),%r12
mov    %r12d,%esi
mov    %rcx,%rbx
mov    %r8,%r13
mov    %ebp,%r15d
mov    %r9,%rbp
push   0x28(%rsp)
push   0x20(%rsp)
push   %r10
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x38(%rsp),%r10
mov    %rbp,%r9
mov    %r15d,%ebp
add    $0x20,%rsp
add    0x58(%rsp),%r14d
mov    0x70(%rsp),%rax
lea    0x0(%r13,%rax,8),%r13
lea    (%rbx,%r12,8),%rcx
mov    0x50(%rsp),%rbx
cmp    %ebp,%r14d
jge    12e0 <mul_mdmd_md+0x1b0>
mov    %ebp,%esi
sub    %r14d,%esi
mov    (%rsp),%edx
sub    0x30(%rsp),%edx
sub    $0x8,%rsp
mov    $0xa,%edi
mov    %r13,%r8
push   0x28(%rsp)
push   0x20(%rsp)
push   %r10
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x38(%rsp),%r10
add    $0x20,%rsp
jmp    12e0 <mul_mdmd_md+0x1b0>
mov    %ebp,%r12d
mov    0x28(%rsp),%ebp
lea    0x2(%rbx),%eax
cmp    %ebp,%eax
jg     1d54 <mul_mdmd_md+0xc24>
movslq %ebp,%rdi
imul   $0x66666667,%rdi,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x22,%rax
add    %ecx,%eax
add    %eax,%eax
shr    $0x1f,%edi
add    %ebp,%edi
lea    (%rax,%rax,4),%eax
and    $0xfffffffe,%edi
sub    %eax,%edi
mov    %ebx,%eax
imul   0x20(%rsp),%eax
cltq
mov    0x80(%rsp),%rcx
lea    (%rcx,%rax,8),%r9
mov    %rbx,0x50(%rsp)
mov    %ebx,%eax
imul   0x18(%rsp),%eax
cltq
mov    0x88(%rsp),%rcx
lea    (%rcx,%rax,8),%rbx
xor    %edx,%edx
cmpl   $0xa,(%rsp)
mov    %rdi,0x8(%rsp)
mov    %rbx,0x60(%rsp)
jge    187d <mul_mdmd_md+0x74d>
mov    %r14,%r13
lea    0x2(%rdx),%eax
cmp    (%rsp),%eax
jle    1a4d <mul_mdmd_md+0x91d>
mov    0x68(%rsp),%r14
jmp    1be2 <mul_mdmd_md+0xab2>
mov    %r12d,%esi
mov    0x10(%rsp),%r12
lea    (%r12,%r12,8),%eax
lea    (%rax,%rax,8),%eax
movslq %eax,%rdx
mov    0x58(%rsp),%rcx
mov    %ecx,%eax
imul   %r12d,%eax
mov    %esi,%r12d
cltq
mov    %rax,0x70(%rsp)
movslq %ecx,%rax
mov    %rax,0x78(%rsp)
shl    $0x3,%rdx
mov    %rdx,0x48(%rsp)
mov    $0xa,%eax
mov    %r14,%r13
jmp    18e2 <mul_mdmd_md+0x7b2>
nop
mov    0x40(%rsp),%r13
add    $0x50,%r13
mov    %r15,%r9
add    $0x50,%r9
mov    0x30(%rsp),%rdx
lea    0xa(%rdx),%eax
cmp    (%rsp),%eax
mov    0x60(%rsp),%rbx
jg     1867 <mul_mdmd_md+0x737>
mov    %rax,0x30(%rsp)
xor    %r14d,%r14d
mov    %r13,0x40(%rsp)
cmp    $0x51,%r12d
mov    %r12d,%ecx
mov    0x10(%rsp),%r10
mov    0x18(%rsp),%rbp
mov    0x20(%rsp),%rax
jl     1990 <mul_mdmd_md+0x860>
xor    %r15d,%r15d
mov    0x40(%rsp),%r13
mov    0x60(%rsp),%rbx
nopl   0x0(%rax,%rax,1)
mov    %rbx,0x38(%rsp)
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    $0x51,%esi
mov    $0xa,%edx
mov    %rbx,%rcx
mov    %r13,%r8
mov    %r9,%r14
push   %rax
push   %r10
push   %rbp
mov    %r10,%r12
mov    %r13,%rbx
mov    %rax,%r13
call   1050 <mul_mdmd_md_l0nf@plt>
mov    %r13,%rax
mov    %rbx,%r13
mov    0x58(%rsp),%rbx
mov    %r12,%r10
mov    0x24(%rsp),%ecx
mov    %r14,%r9
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
add    $0x288,%rbx
lea    0x51(%r15),%r14d
add    $0xa2,%r15d
add    0x48(%rsp),%r13
cmp    %ecx,%r15d
mov    %r14d,%r15d
jle    1920 <mul_mdmd_md+0x7f0>
lea    0x11(%r14),%eax
cmp    %ecx,%eax
jle    19b0 <mul_mdmd_md+0x880>
mov    %r9,%r15
mov    0x20(%rsp),%rax
jmp    1a08 <mul_mdmd_md+0x8d8>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    0x60(%rsp),%r12
mov    %r12d,%esi
mov    $0xa,%edx
mov    %rbx,%rcx
mov    %r13,%r8
mov    %r9,%r15
mov    0x28(%rsp),%rbp
push   %rbp
push   0x20(%rsp)
push   0x30(%rsp)
call   1050 <mul_mdmd_md_l0nf@plt>
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
add    %r12d,%r14d
mov    0x4(%rsp),%ecx
mov    %rbp,%rax
mov    0x70(%rsp),%rsi
lea    0x0(%r13,%rsi,8),%r13
mov    0x78(%rsp),%rsi
lea    (%rbx,%rsi,8),%rbx
mov    %ecx,%r12d
cmp    %ecx,%r14d
jge    18c0 <mul_mdmd_md+0x790>
mov    %r12d,%esi
sub    %r14d,%esi
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    $0xa,%edx
mov    %rbx,%rcx
mov    %r13,%r8
mov    %r15,%r9
push   %rax
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
jmp    18c0 <mul_mdmd_md+0x790>
mov    %rdx,0x30(%rsp)
mov    %r12d,%ecx
xor    %r8d,%r8d
mov    %rbx,%r15
mov    %r13,0x40(%rsp)
cmp    $0x51,%r12d
mov    0x18(%rsp),%rbx
mov    0x20(%rsp),%rbp
mov    0x2c(%rsp),%r14d
mov    %r9,0x38(%rsp)
jl     1b09 <mul_mdmd_md+0x9d9>
mov    0x10(%rsp),%rax
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,8),%eax
cltq
shl    $0x3,%rax
mov    %rax,0x48(%rsp)
xor    %r12d,%r12d
mov    0x40(%rsp),%r13
mov    0x60(%rsp),%r15
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    $0x51,%esi
mov    %r14d,%edx
mov    %r15,%rcx
mov    %r13,%r8
mov    0x40(%rsp),%r9
push   %rbp
push   0x20(%rsp)
push   %rbx
call   1050 <mul_mdmd_md_l0nf@plt>
mov    0x24(%rsp),%ecx
mov    0x58(%rsp),%r9
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
add    $0x288,%r15
lea    0x51(%r12),%r8d
add    $0xa2,%r12d
add    0x48(%rsp),%r13
cmp    %ecx,%r12d
mov    %r8d,%r12d
jle    1ab0 <mul_mdmd_md+0x980>
lea    0x11(%r8),%eax
cmp    %ecx,%eax
mov    0x68(%rsp),%r14
jle    1b27 <mul_mdmd_md+0x9f7>
mov    0x2c(%rsp),%r12d
cmp    0x4(%rsp),%r8d
jl     1b87 <mul_mdmd_md+0xa57>
jmp    1bbf <mul_mdmd_md+0xa8f>
sub    $0x8,%rsp
mov    %r8,%rbx
mov    0x10(%rsp),%rdi
mov    0x60(%rsp),%rbp
mov    %ebp,%esi
mov    0x34(%rsp),%edx
mov    %r15,%rcx
mov    %r13,%r8
push   0x28(%rsp)
mov    0x20(%rsp),%r12
push   %r12
push   0x30(%rsp)
call   1050 <mul_mdmd_md_l0nf@plt>
mov    %rbx,%r8
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
add    %ebp,%r8d
mov    %ebp,%eax
imul   %r12d,%eax
mov    0x2c(%rsp),%r12d
cltq
lea    0x0(%r13,%rax,8),%r13
movslq %ebp,%rax
lea    (%r15,%rax,8),%r15
cmp    0x4(%rsp),%r8d
jge    1bbf <mul_mdmd_md+0xa8f>
mov    0x4(%rsp),%esi
sub    %r8d,%esi
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    %r12d,%edx
mov    %r15,%rcx
mov    %r13,%r8
mov    0x40(%rsp),%r9
push   0x28(%rsp)
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
mov    0x30(%rsp),%rdx
add    %r12d,%edx
movslq %r12d,%rax
mov    0x40(%rsp),%r13
lea    0x0(%r13,%rax,8),%r13
mov    0x38(%rsp),%r9
lea    (%r9,%rax,8),%r9
mov    0x4(%rsp),%r12d
cmp    (%rsp),%edx
mov    0x28(%rsp),%ebp
jge    1d4d <mul_mdmd_md+0xc1d>
mov    %r13,%rsi
xor    %ebx,%ebx
cmp    $0x51,%r12d
mov    %rdx,0x30(%rsp)
jge    1c11 <mul_mdmd_md+0xae1>
mov    0x4(%rsp),%r13d
mov    0x60(%rsp),%r15
mov    %rsi,%r12
jmp    1c94 <mul_mdmd_md+0xb64>
mov    (%rsp),%eax
sub    %edx,%eax
mov    %eax,0x38(%rsp)
mov    0x10(%rsp),%rax
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,8),%eax
cltq
shl    $0x3,%rax
mov    %rax,0x48(%rsp)
xor    %ebp,%ebp
mov    0x4(%rsp),%r13d
mov    0x60(%rsp),%r15
mov    %rsi,%r12
nop
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    $0x51,%esi
mov    0x40(%rsp),%edx
mov    %r15,%rcx
mov    %r12,%r8
mov    %r9,%rbx
push   0x28(%rsp)
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    %rbx,%r9
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
add    $0x288,%r15
lea    0x51(%rbp),%ebx
add    $0xa2,%ebp
add    0x48(%rsp),%r12
cmp    %r13d,%ebp
mov    %ebx,%ebp
jle    1c40 <mul_mdmd_md+0xb10>
mov    %r12,%r8
lea    0x11(%rbx),%eax
cmp    %r13d,%eax
jle    1caa <mul_mdmd_md+0xb7a>
mov    0x28(%rsp),%ebp
mov    0x30(%rsp),%rax
jmp    1d15 <mul_mdmd_md+0xbe5>
mov    (%rsp),%edx
sub    0x30(%rsp),%edx
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    0x60(%rsp),%r12
mov    %r12d,%esi
mov    %r15,%rcx
mov    %r8,0x48(%rsp)
mov    %r9,%r13
push   0x28(%rsp)
mov    0x20(%rsp),%rbp
push   %rbp
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    %r13,%r9
mov    0x60(%rsp),%r8
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
add    %r12d,%ebx
mov    %r12d,%eax
imul   %ebp,%eax
cltq
lea    (%r8,%rax,8),%r8
movslq %r12d,%rax
mov    0x4(%rsp),%r13d
lea    (%r15,%rax,8),%r15
mov    0x30(%rsp),%rax
mov    0x28(%rsp),%ebp
mov    %r13d,%r12d
cmp    %r13d,%ebx
jge    1d4d <mul_mdmd_md+0xc1d>
mov    %r12d,%esi
sub    %ebx,%esi
mov    (%rsp),%edx
sub    %eax,%edx
sub    $0x8,%rsp
mov    0x10(%rsp),%rdi
mov    %r15,%rcx
push   0x28(%rsp)
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x28(%rsp),%rdi
add    $0x20,%rsp
mov    0x50(%rsp),%rbx
add    %edi,%ebx
cmp    %ebp,%ebx
jge    21be <mul_mdmd_md+0x108e>
mov    %r12d,%r15d
mov    %ebx,%eax
imul   0x20(%rsp),%eax
cltq
mov    0x80(%rsp),%rcx
lea    (%rcx,%rax,8),%r9
mov    %ebx,%eax
imul   0x18(%rsp),%eax
cltq
mov    0x88(%rsp),%rcx
lea    (%rcx,%rax,8),%r13
xor    %ecx,%ecx
cmpl   $0xa,(%rsp)
mov    %rbx,0x50(%rsp)
mov    %r13,0x30(%rsp)
jge    1db1 <mul_mdmd_md+0xc81>
lea    0x2(%rcx),%eax
cmp    (%rsp),%eax
jle    1f6c <mul_mdmd_md+0xe3c>
mov    0x50(%rsp),%rbx
jmp    20f7 <mul_mdmd_md+0xfc7>
mov    0x28(%rsp),%eax
sub    %ebx,%eax
mov    %eax,0x38(%rsp)
mov    0x10(%rsp),%rdx
lea    (%rdx,%rdx,8),%eax
lea    (%rax,%rax,8),%eax
movslq %eax,%rsi
mov    0x58(%rsp),%rcx
mov    %ecx,%eax
imul   %edx,%eax
cltq
mov    %rax,0x60(%rsp)
movslq %ecx,%rax
mov    %rax,0x70(%rsp)
shl    $0x3,%rsi
mov    %rsi,0x48(%rsp)
mov    $0xa,%eax
jmp    1e21 <mul_mdmd_md+0xcf1>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x68(%rsp),%r14
add    $0x50,%r14
mov    %rbp,%r9
add    $0x50,%r9
mov    0x40(%rsp),%rcx
lea    0xa(%rcx),%eax
cmp    (%rsp),%eax
jg     1d9b <mul_mdmd_md+0xc6b>
mov    %rax,0x40(%rsp)
mov    %r14,%r12
xor    %r14d,%r14d
mov    %r13,%rbx
mov    %r12,0x68(%rsp)
cmp    $0x51,%r15d
mov    0x10(%rsp),%r10
mov    %r15d,%ecx
mov    0x18(%rsp),%rbp
mov    0x20(%rsp),%rax
jl     1eca <mul_mdmd_md+0xd9a>
xor    %r15d,%r15d
mov    0x68(%rsp),%r12
mov    0x30(%rsp),%rbx
nopl   (%rax)
mov    %rbx,0x8(%rsp)
sub    $0x8,%rsp
mov    0x40(%rsp),%edi
mov    $0x51,%esi
mov    $0xa,%edx
mov    %rbx,%rcx
mov    %r12,%r8
mov    %r9,%r14
push   %rax
push   %r10
push   %rbp
mov    %r10,%r13
mov    %r12,%rbx
mov    %rax,%r12
call   1030 <mul_mdmd_md_l0g@plt>
mov    %r12,%rax
mov    %rbx,%r12
mov    0x28(%rsp),%rbx
mov    %r13,%r10
mov    0x24(%rsp),%ecx
mov    %r14,%r9
add    $0x20,%rsp
add    $0x288,%rbx
lea    0x51(%r15),%r14d
add    $0xa2,%r15d
add    0x48(%rsp),%r12
cmp    %ecx,%r15d
mov    %r14d,%r15d
jle    1e60 <mul_mdmd_md+0xd30>
lea    0x11(%r14),%eax
cmp    %ecx,%eax
mov    %ecx,%r15d
jle    1ee0 <mul_mdmd_md+0xdb0>
mov    %r9,%rbp
jmp    1f28 <mul_mdmd_md+0xdf8>
nopw   0x0(%rax,%rax,1)
sub    $0x8,%rsp
mov    0x40(%rsp),%edi
mov    0x60(%rsp),%r13
mov    %r13d,%esi
mov    $0xa,%edx
mov    %rbx,%rcx
mov    %r12,%r8
mov    %r9,%rbp
push   0x28(%rsp)
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
add    $0x20,%rsp
add    %r13d,%r14d
mov    0x60(%rsp),%rax
lea    (%r12,%rax,8),%r12
mov    0x70(%rsp),%rax
lea    (%rbx,%rax,8),%rbx
mov    0x30(%rsp),%r13
cmp    %r15d,%r14d
jge    1e00 <mul_mdmd_md+0xcd0>
mov    %r15d,%esi
sub    %r14d,%esi
sub    $0x8,%rsp
mov    0x40(%rsp),%edi
mov    $0xa,%edx
mov    %rbx,%rcx
mov    %r12,%r8
mov    %rbp,%r9
push   0x28(%rsp)
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
add    $0x20,%rsp
jmp    1e00 <mul_mdmd_md+0xcd0>
mov    %rcx,0x40(%rsp)
mov    0x2c(%rsp),%edx
xor    %ecx,%ecx
mov    %r13,%r12
mov    %r14,0x68(%rsp)
mov    %r14,%r13
cmp    $0x51,%r15d
mov    0x18(%rsp),%rbp
mov    0x20(%rsp),%r10
mov    %r9,0x8(%rsp)
jl     2036 <mul_mdmd_md+0xf06>
mov    0x28(%rsp),%eax
sub    0x50(%rsp),%eax
mov    %eax,0x38(%rsp)
mov    0x10(%rsp),%rax
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,8),%eax
cltq
shl    $0x3,%rax
mov    %rax,0x48(%rsp)
xor    %ebx,%ebx
mov    0x68(%rsp),%r13
mov    0x30(%rsp),%r12
nopl   0x0(%rax)
sub    $0x8,%rsp
mov    0x40(%rsp),%edi
mov    $0x51,%esi
mov    %edx,%r15d
mov    %r12,%rcx
mov    %r13,%r8
mov    0x10(%rsp),%r9
push   %r10
push   0x20(%rsp)
push   %rbp
mov    %r12,%r14
mov    %r13,%r12
mov    %r10,%r13
call   1030 <mul_mdmd_md_l0g@plt>
mov    %r13,%r10
mov    %r12,%r13
mov    %r14,%r12
mov    %r15d,%edx
mov    0x24(%rsp),%r15d
mov    0x28(%rsp),%r9
add    $0x20,%rsp
add    $0x288,%r12
lea    0x51(%rbx),%ecx
add    $0xa2,%ebx
add    0x48(%rsp),%r13
cmp    %r15d,%ebx
mov    %ecx,%ebx
jle    1fd0 <mul_mdmd_md+0xea0>
lea    0x11(%rcx),%eax
cmp    %r15d,%eax
jle    2045 <mul_mdmd_md+0xf15>
mov    0x50(%rsp),%rbx
jmp    20a0 <mul_mdmd_md+0xf70>
mov    0x28(%rsp),%edi
mov    0x50(%rsp),%rbp
sub    %ebp,%edi
sub    $0x8,%rsp
mov    0x60(%rsp),%rbx
mov    %ebx,%esi
mov    0x34(%rsp),%edx
mov    %rcx,0x40(%rsp)
mov    %r12,%rcx
mov    %r13,%r8
push   0x28(%rsp)
mov    0x20(%rsp),%r14
push   %r14
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    0x58(%rsp),%rcx
add    $0x20,%rsp
add    %ebx,%ecx
mov    %ebx,%eax
imul   %r14d,%eax
cltq
lea    0x0(%r13,%rax,8),%r13
movslq %ebx,%rax
mov    %rbp,%rbx
lea    (%r12,%rax,8),%r12
cmp    %r15d,%ecx
mov    0x68(%rsp),%r14
jge    20dd <mul_mdmd_md+0xfad>
mov    0x28(%rsp),%edi
sub    %ebx,%edi
mov    %r15d,%esi
sub    %ecx,%esi
sub    $0x8,%rsp
mov    0x34(%rsp),%edx
mov    %r12,%rcx
mov    %r13,%r8
mov    0x10(%rsp),%r9
push   0x28(%rsp)
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
add    $0x20,%rsp
mov    0x2c(%rsp),%eax
mov    0x40(%rsp),%rcx
add    %eax,%ecx
cltq
lea    (%r14,%rax,8),%r14
mov    0x8(%rsp),%r9
lea    (%r9,%rax,8),%r9
mov    %rcx,0x40(%rsp)
cmp    (%rsp),%ecx
jge    21be <mul_mdmd_md+0x108e>
xor    %ebp,%ebp
cmp    $0x51,%r15d
jge    211c <mul_mdmd_md+0xfec>
mov    0x4(%rsp),%r12d
mov    0x30(%rsp),%r13
jmp    21ac <mul_mdmd_md+0x107c>
mov    0x28(%rsp),%eax
sub    %ebx,%eax
mov    %eax,0x8(%rsp)
mov    (%rsp),%eax
sub    0x40(%rsp),%eax
mov    %eax,0x38(%rsp)
mov    0x10(%rsp),%rax
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,8),%eax
cltq
shl    $0x3,%rax
mov    %rax,0x48(%rsp)
xor    %ebx,%ebx
mov    0x4(%rsp),%r12d
mov    0x20(%rsp),%r15
mov    0x30(%rsp),%r13
nopl   0x0(%rax,%rax,1)
sub    $0x8,%rsp
mov    0x10(%rsp),%edi
mov    $0x51,%esi
mov    0x40(%rsp),%edx
mov    %r13,%rcx
mov    %r14,%r8
mov    %r9,%rbp
push   %r15
push   0x20(%rsp)
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    %rbp,%r9
add    $0x20,%rsp
add    $0x288,%r13
lea    0x51(%rbx),%ebp
add    $0xa2,%ebx
add    0x48(%rsp),%r14
cmp    %r12d,%ebx
mov    %ebp,%ebx
jle    2160 <mul_mdmd_md+0x1030>
lea    0x11(%rbp),%eax
cmp    %r12d,%eax
jle    21d0 <mul_mdmd_md+0x10a0>
mov    0x50(%rsp),%rdx
cmp    %r12d,%ebp
jl     2238 <mul_mdmd_md+0x1108>
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x28(%rsp),%edi
sub    0x50(%rsp),%edi
mov    (%rsp),%edx
sub    0x40(%rsp),%edx
sub    $0x8,%rsp
mov    0x60(%rsp),%r15
mov    %r15d,%esi
mov    %r13,0x38(%rsp)
mov    %r13,%rcx
mov    %r14,%r8
mov    %r9,%r13
push   0x28(%rsp)
mov    0x20(%rsp),%rbx
push   %rbx
push   0x30(%rsp)
call   1030 <mul_mdmd_md_l0g@plt>
mov    %r13,%r9
mov    0x50(%rsp),%r13
add    $0x20,%rsp
add    %r15d,%ebp
imul   %r15d,%ebx
movslq %ebx,%rax
mov    0x50(%rsp),%rdx
lea    (%r14,%rax,8),%r14
movslq %r15d,%rax
lea    0x0(%r13,%rax,8),%r13
cmp    %r12d,%ebp
jge    21be <mul_mdmd_md+0x108e>
mov    0x28(%rsp),%edi
sub    %edx,%edi
sub    %ebp,%r12d
mov    (%rsp),%edx
sub    0x40(%rsp),%edx
mov    %r12d,%esi
mov    %r13,%rcx
mov    %r14,%r8
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <mul_mdmd_md_l0g@plt>

LLVM IR (-O0):
define void @mul_mdmd_md(i32 %0, i32 %1, i32 %2, double* %3, double* %4, double* %5, i32 %6, i32 %7, i32 %8) {
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca double*
%23 = alloca double*
%24 = alloca double*
%25 = alloca double*
%26 = alloca double*
%27 = alloca double*
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca double*
%32 = alloca double*
%33 = alloca double*
%34 = alloca double*
store i32 %0, i32* %10
store i32 %1, i32* %11
store i32 %2, i32* %12
store double* %3, double** %13
store double* %4, double** %14
store double* %5, double** %15
store i32 %6, i32* %16
store i32 %7, i32* %17
store i32 %8, i32* %18
%35 = load i32, i32* %10
%36 = srem i32 %35, 10
%37 = load i32, i32* %10
%38 = srem i32 %37, 2
%39 = sub nsw i32 %36, %38
store i32 %39, i32* %28
%40 = load i32, i32* %11
%41 = srem i32 %40, 81
%42 = load i32, i32* %11
%43 = srem i32 %42, 81
%44 = sub nsw i32 %43, 1
%45 = srem i32 %44, 16
%46 = sub nsw i32 %41, %45
store i32 %46, i32* %29
%47 = load i32, i32* %12
%48 = srem i32 %47, 10
%49 = load i32, i32* %12
%50 = srem i32 %49, 2
%51 = sub nsw i32 %48, %50
store i32 %51, i32* %30
%52 = load double*, double** %15
%53 = load i32, i32* %10
%54 = load i32, i32* %18
%55 = mul nsw i32 %53, %54
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds double, double* %52, i64 %56
store double* %57, double** %32
%58 = load double*, double** %15
store double* %58, double** %31
br label %59
59: ; preds = %79, %9
%60 = load double*, double** %31
%61 = load double*, double** %32
%62 = icmp ne double* %60, %61
br i1 %62, label %63, label %84
63: ; preds = %59
%64 = load double*, double** %31
%65 = load i32, i32* %12
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds double, double* %64, i64 %66
store double* %67, double** %34
%68 = load double*, double** %31
store double* %68, double** %33
br label %69
69: ; preds = %75, %63
%70 = load double*, double** %33
%71 = load double*, double** %34
%72 = icmp ne double* %70, %71
br i1 %72, label %73, label %78
73: ; preds = %69
%74 = load double*, double** %33
store double 0.000000e+00, double* %74
br label %75
75: ; preds = %73
%76 = load double*, double** %33
%77 = getelementptr inbounds double, double* %76, i32 1
store double* %77, double** %33
br label %69
78: ; preds = %69
br label %79
79: ; preds = %78
%80 = load i32, i32* %18
%81 = load double*, double** %31
%82 = sext i32 %80 to i64
%83 = getelementptr inbounds double, double* %81, i64 %82
store double* %83, double** %31
br label %59
84: ; preds = %59
store i32 0, i32* %19
br label %85
85: ; preds = %357, %84
%86 = load i32, i32* %19
%87 = add nsw i32 %86, 10
%88 = load i32, i32* %10
%89 = icmp sle i32 %87, %88
br i1 %89, label %90, label %360
90: ; preds = %85
%91 = load double*, double** %15
%92 = load i32, i32* %19
%93 = load i32, i32* %18
%94 = mul nsw i32 %92, %93
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds double, double* %91, i64 %95
store double* %96, double** %24
%97 = load double*, double** %13
%98 = load i32, i32* %19
%99 = load i32, i32* %16
%100 = mul nsw i32 %98, %99
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds double, double* %97, i64 %101
store double* %102, double** %22
store i32 0, i32* %21
%103 = load double*, double** %14
store double* %103, double** %23
%104 = load double*, double** %24
store double* %104, double** %27
br label %105
105: ; preds = %179, %90
%106 = load i32, i32* %21
%107 = add nsw i32 %106, 10
%108 = load i32, i32* %12
%109 = icmp sle i32 %107, %108
br i1 %109, label %110, label %186
110: ; preds = %105
store i32 0, i32* %20
%111 = load double*, double** %23
store double* %111, double** %26
%112 = load double*, double** %22
store double* %112, double** %25
br label %113
113: ; preds = %126, %110
%114 = load i32, i32* %20
%115 = add nsw i32 %114, 81
%116 = load i32, i32* %11
%117 = icmp sle i32 %115, %116
br i1 %117, label %118, label %136
118: ; preds = %113
%119 = load double*, double** %25
%120 = load double*, double** %26
%121 = load double*, double** %27
%122 = load i32, i32* %16
%123 = load i32, i32* %17
%124 = load i32, i32* %18
%125 = call i32 @mul_mdmd_md_l0nf(i32 10, i32 81, i32 10, double* %119, double* %120, double* %121, i32 %122, i32 %123, i32 %124)
br label %126
126: ; preds = %118
%127 = load i32, i32* %20
%128 = add nsw i32 %127, 81
store i32 %128, i32* %20
%129 = load i32, i32* %17
%130 = mul nsw i32 81, %129
%131 = load double*, double** %26
%132 = sext i32 %130 to i64
%133 = getelementptr inbounds double, double* %131, i64 %132
store double* %133, double** %26
%134 = load double*, double** %25
%135 = getelementptr inbounds double, double* %134, i64 81
store double* %135, double** %25
br label %113
136: ; preds = %113
%137 = load i32, i32* %20
%138 = add nsw i32 %137, 17
%139 = load i32, i32* %11
%140 = icmp sle i32 %138, %139
br i1 %140, label %141, label %163
141: ; preds = %136
%142 = load i32, i32* %29
%143 = load double*, double** %25
%144 = load double*, double** %26
%145 = load double*, double** %27
%146 = load i32, i32* %16
%147 = load i32, i32* %17
%148 = load i32, i32* %18
%149 = call i32 @mul_mdmd_md_l0nf(i32 10, i32 %142, i32 10, double* %143, double* %144, double* %145, i32 %146, i32 %147, i32 %148)
%150 = load i32, i32* %29
%151 = load i32, i32* %20
%152 = add nsw i32 %151, %150
store i32 %152, i32* %20
%153 = load i32, i32* %29
%154 = load i32, i32* %17
%155 = mul nsw i32 %153, %154
%156 = load double*, double** %26
%157 = sext i32 %155 to i64
%158 = getelementptr inbounds double, double* %156, i64 %157
store double* %158, double** %26
%159 = load i32, i32* %29
%160 = load double*, double** %25
%161 = sext i32 %159 to i64
%162 = getelementptr inbounds double, double* %160, i64 %161
store double* %162, double** %25
br label %163
163: ; preds = %141, %136
%164 = load i32, i32* %20
%165 = load i32, i32* %11
%166 = icmp slt i32 %164, %165
br i1 %166, label %167, label %178
167: ; preds = %163
%168 = load i32, i32* %11
%169 = load i32, i32* %20
%170 = sub nsw i32 %168, %169
%171 = load double*, double** %25
%172 = load double*, double** %26
%173 = load double*, double** %27
%174 = load i32, i32* %16
%175 = load i32, i32* %17
%176 = load i32, i32* %18
%177 = call i32 @mul_mdmd_md_l0g(i32 10, i32 %170, i32 10, double* %171, double* %172, double* %173, i32 %174, i32 %175, i32 %176)
br label %178
178: ; preds = %167, %163
br label %179
179: ; preds = %178
%180 = load i32, i32* %21
%181 = add nsw i32 %180, 10
store i32 %181, i32* %21
%182 = load double*, double** %23
%183 = getelementptr inbounds double, double* %182, i64 10
store double* %183, double** %23
%184 = load double*, double** %27
%185 = getelementptr inbounds double, double* %184, i64 10
store double* %185, double** %27
br label %105
186: ; preds = %105
%187 = load i32, i32* %21
%188 = add nsw i32 %187, 2
%189 = load i32, i32* %12
%190 = icmp sle i32 %188, %189
br i1 %190, label %191, label %274
191: ; preds = %186
store i32 0, i32* %20
%192 = load double*, double** %23
store double* %192, double** %26
%193 = load double*, double** %22
store double* %193, double** %25
br label %194
194: ; preds = %208, %191
%195 = load i32, i32* %20
%196 = add nsw i32 %195, 81
%197 = load i32, i32* %11
%198 = icmp sle i32 %196, %197
br i1 %198, label %199, label %218
199: ; preds = %194
%200 = load i32, i32* %30
%201 = load double*, double** %25
%202 = load double*, double** %26
%203 = load double*, double** %27
%204 = load i32, i32* %16
%205 = load i32, i32* %17
%206 = load i32, i32* %18
%207 = call i32 @mul_mdmd_md_l0nf(i32 10, i32 81, i32 %200, double* %201, double* %202, double* %203, i32 %204, i32 %205, i32 %206)
br label %208
208: ; preds = %199
%209 = load i32, i32* %20
%210 = add nsw i32 %209, 81
store i32 %210, i32* %20
%211 = load i32, i32* %17
%212 = mul nsw i32 81, %211
%213 = load double*, double** %26
%214 = sext i32 %212 to i64
%215 = getelementptr inbounds double, double* %213, i64 %214
store double* %215, double** %26
%216 = load double*, double** %25
%217 = getelementptr inbounds double, double* %216, i64 81
store double* %217, double** %25
br label %194
218: ; preds = %194
%219 = load i32, i32* %20
%220 = add nsw i32 %219, 17
%221 = load i32, i32* %11
%222 = icmp sle i32 %220, %221
br i1 %222, label %223, label %246
223: ; preds = %218
%224 = load i32, i32* %29
%225 = load i32, i32* %30
%226 = load double*, double** %25
%227 = load double*, double** %26
%228 = load double*, double** %27
%229 = load i32, i32* %16
%230 = load i32, i32* %17
%231 = load i32, i32* %18
%232 = call i32 @mul_mdmd_md_l0nf(i32 10, i32 %224, i32 %225, double* %226, double* %227, double* %228, i32 %229, i32 %230, i32 %231)
%233 = load i32, i32* %29
%234 = load i32, i32* %20
%235 = add nsw i32 %234, %233
store i32 %235, i32* %20
%236 = load i32, i32* %29
%237 = load i32, i32* %17
%238 = mul nsw i32 %236, %237
%239 = load double*, double** %26
%240 = sext i32 %238 to i64
%241 = getelementptr inbounds double, double* %239, i64 %240
store double* %241, double** %26
%242 = load i32, i32* %29
%243 = load double*, double** %25
%244 = sext i32 %242 to i64
%245 = getelementptr inbounds double, double* %243, i64 %244
store double* %245, double** %25
br label %246
246: ; preds = %223, %218
%247 = load i32, i32* %20
%248 = load i32, i32* %11
%249 = icmp slt i32 %247, %248
br i1 %249, label %250, label %262
250: ; preds = %246
%251 = load i32, i32* %11
%252 = load i32, i32* %20
%253 = sub nsw i32 %251, %252
%254 = load i32, i32* %30
%255 = load double*, double** %25
%256 = load double*, double** %26
%257 = load double*, double** %27
%258 = load i32, i32* %16
%259 = load i32, i32* %17
%260 = load i32, i32* %18
%261 = call i32 @mul_mdmd_md_l0g(i32 10, i32 %253, i32 %254, double* %255, double* %256, double* %257, i32 %258, i32 %259, i32 %260)
br label %262
262: ; preds = %250, %246
%263 = load i32, i32* %30
%264 = load i32, i32* %21
%265 = add nsw i32 %264, %263
store i32 %265, i32* %21
%266 = load i32, i32* %30
%267 = load double*, double** %23
%268 = sext i32 %266 to i64
%269 = getelementptr inbounds double, double* %267, i64 %268
store double* %269, double** %23
%270 = load i32, i32* %30
%271 = load double*, double** %27
%272 = sext i32 %270 to i64
%273 = getelementptr inbounds double, double* %271, i64 %272
store double* %273, double** %27
br label %274
274: ; preds = %262, %186
%275 = load i32, i32* %21
%276 = load i32, i32* %12
%277 = icmp slt i32 %275, %276
br i1 %277, label %278, label %356
278: ; preds = %274
store i32 0, i32* %20
%279 = load double*, double** %23
store double* %279, double** %26
%280 = load double*, double** %22
store double* %280, double** %25
br label %281
281: ; preds = %297, %278
%282 = load i32, i32* %20
%283 = add nsw i32 %282, 81
%284 = load i32, i32* %11
%285 = icmp sle i32 %283, %284
br i1 %285, label %286, label %307
286: ; preds = %281
%287 = load i32, i32* %12
%288 = load i32, i32* %21
%289 = sub nsw i32 %287, %288
%290 = load double*, double** %25
%291 = load double*, double** %26
%292 = load double*, double** %27
%293 = load i32, i32* %16
%294 = load i32, i32* %17
%295 = load i32, i32* %18
%296 = call i32 @mul_mdmd_md_l0g(i32 10, i32 81, i32 %289, double* %290, double* %291, double* %292, i32 %293, i32 %294, i32 %295)
br label %297
297: ; preds = %286
%298 = load i32, i32* %20
%299 = add nsw i32 %298, 81
store i32 %299, i32* %20
%300 = load i32, i32* %17
%301 = mul nsw i32 81, %300
%302 = load double*, double** %26
%303 = sext i32 %301 to i64
%304 = getelementptr inbounds double, double* %302, i64 %303
store double* %304, double** %26
%305 = load double*, double** %25
%306 = getelementptr inbounds double, double* %305, i64 81
store double* %306, double** %25
br label %281
307: ; preds = %281
%308 = load i32, i32* %20
%309 = add nsw i32 %308, 17
%310 = load i32, i32* %11
%311 = icmp sle i32 %309, %310
br i1 %311, label %312, label %337
312: ; preds = %307
%313 = load i32, i32* %29
%314 = load i32, i32* %12
%315 = load i32, i32* %21
%316 = sub nsw i32 %314, %315
%317 = load double*, double** %25
%318 = load double*, double** %26
%319 = load double*, double** %27
%320 = load i32, i32* %16
%321 = load i32, i32* %17
%322 = load i32, i32* %18
%323 = call i32 @mul_mdmd_md_l0g(i32 10, i32 %313, i32 %316, double* %317, double* %318, double* %319, i32 %320, i32 %321, i32 %322)
%324 = load i32, i32* %29
%325 = load i32, i32* %20
%326 = add nsw i32 %325, %324
store i32 %326, i32* %20
%327 = load i32, i32* %29
%328 = load i32, i32* %17
%329 = mul nsw i32 %327, %328
%330 = load double*, double** %26
%331 = sext i32 %329 to i64
%332 = getelementptr inbounds double, double* %330, i64 %331
store double* %332, double** %26
%333 = load i32, i32* %29
%334 = load double*, double** %25
%335 = sext i32 %333 to i64
%336 = getelementptr inbounds double, double* %334, i64 %335
store double* %336, double** %25
br label %337
337: ; preds = %312, %307
%338 = load i32, i32* %20
%339 = load i32, i32* %11
%340 = icmp slt i32 %338, %339
br i1 %340, label %341, label %355
341: ; preds = %337
%342 = load i32, i32* %11
%343 = load i32, i32* %20
%344 = sub nsw i32 %342, %343
%345 = load i32, i32* %12
%346 = load i32, i32* %21
%347 = sub nsw i32 %345, %346
%348 = load double*, double** %25
%349 = load double*, double** %26
%350 = load double*, double** %27
%351 = load i32, i32* %16
%352 = load i32, i32* %17
%353 = load i32, i32* %18
%354 = call i32 @mul_mdmd_md_l0g(i32 10, i32 %344, i32 %347, double* %348, double* %349, double* %350, i32 %351, i32 %352, i32 %353)
br label %355
355: ; preds = %341, %337
br label %356
356: ; preds = %355, %274
br label %357
357: ; preds = %356
%358 = load i32, i32* %19
%359 = add nsw i32 %358, 10
store i32 %359, i32* %19
br label %85
360: ; preds = %85
%361 = load i32, i32* %19
%362 = add nsw i32 %361, 2
%363 = load i32, i32* %10
%364 = icmp sle i32 %362, %363
br i1 %364, label %365, label %644
365: ; preds = %360
%366 = load double*, double** %15
%367 = load i32, i32* %19
%368 = load i32, i32* %18
%369 = mul nsw i32 %367, %368
%370 = sext i32 %369 to i64
%371 = getelementptr inbounds double, double* %366, i64 %370
store double* %371, double** %24
%372 = load double*, double** %13
%373 = load i32, i32* %19
%374 = load i32, i32* %16
%375 = mul nsw i32 %373, %374
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds double, double* %372, i64 %376
store double* %377, double** %22
store i32 0, i32* %21
%378 = load double*, double** %14
store double* %378, double** %23
%379 = load double*, double** %24
store double* %379, double** %27
br label %380
380: ; preds = %457, %365
%381 = load i32, i32* %21
%382 = add nsw i32 %381, 10
%383 = load i32, i32* %12
%384 = icmp sle i32 %382, %383
br i1 %384, label %385, label %464
385: ; preds = %380
store i32 0, i32* %20
%386 = load double*, double** %23
store double* %386, double** %26
%387 = load double*, double** %22
store double* %387, double** %25
br label %388
388: ; preds = %402, %385
%389 = load i32, i32* %20
%390 = add nsw i32 %389, 81
%391 = load i32, i32* %11
%392 = icmp sle i32 %390, %391
br i1 %392, label %393, label %412
393: ; preds = %388
%394 = load i32, i32* %28
%395 = load double*, double** %25
%396 = load double*, double** %26
%397 = load double*, double** %27
%398 = load i32, i32* %16
%399 = load i32, i32* %17
%400 = load i32, i32* %18
%401 = call i32 @mul_mdmd_md_l0nf(i32 %394, i32 81, i32 10, double* %395, double* %396, double* %397, i32 %398, i32 %399, i32 %400)
br label %402
402: ; preds = %393
%403 = load i32, i32* %20
%404 = add nsw i32 %403, 81
store i32 %404, i32* %20
%405 = load i32, i32* %17
%406 = mul nsw i32 81, %405
%407 = load double*, double** %26
%408 = sext i32 %406 to i64
%409 = getelementptr inbounds double, double* %407, i64 %408
store double* %409, double** %26
%410 = load double*, double** %25
%411 = getelementptr inbounds double, double* %410, i64 81
store double* %411, double** %25
br label %388
412: ; preds = %388
%413 = load i32, i32* %20
%414 = add nsw i32 %413, 17
%415 = load i32, i32* %11
%416 = icmp sle i32 %414, %415
br i1 %416, label %417, label %440
417: ; preds = %412
%418 = load i32, i32* %28
%419 = load i32, i32* %29
%420 = load double*, double** %25
%421 = load double*, double** %26
%422 = load double*, double** %27
%423 = load i32, i32* %16
%424 = load i32, i32* %17
%425 = load i32, i32* %18
%426 = call i32 @mul_mdmd_md_l0nf(i32 %418, i32 %419, i32 10, double* %420, double* %421, double* %422, i32 %423, i32 %424, i32 %425)
%427 = load i32, i32* %29
%428 = load i32, i32* %20
%429 = add nsw i32 %428, %427
store i32 %429, i32* %20
%430 = load i32, i32* %29
%431 = load i32, i32* %17
%432 = mul nsw i32 %430, %431
%433 = load double*, double** %26
%434 = sext i32 %432 to i64
%435 = getelementptr inbounds double, double* %433, i64 %434
store double* %435, double** %26
%436 = load i32, i32* %29
%437 = load double*, double** %25
%438 = sext i32 %436 to i64
%439 = getelementptr inbounds double, double* %437, i64 %438
store double* %439, double** %25
br label %440
440: ; preds = %417, %412
%441 = load i32, i32* %20
%442 = load i32, i32* %11
%443 = icmp slt i32 %441, %442
br i1 %443, label %444, label %456
444: ; preds = %440
%445 = load i32, i32* %28
%446 = load i32, i32* %11
%447 = load i32, i32* %20
%448 = sub nsw i32 %446, %447
%449 = load double*, double** %25
%450 = load double*, double** %26
%451 = load double*, double** %27
%452 = load i32, i32* %16
%453 = load i32, i32* %17
%454 = load i32, i32* %18
%455 = call i32 @mul_mdmd_md_l0g(i32 %445, i32 %448, i32 10, double* %449, double* %450, double* %451, i32 %452, i32 %453, i32 %454)
br label %456
456: ; preds = %444, %440
br label %457
457: ; preds = %456
%458 = load i32, i32* %21
%459 = add nsw i32 %458, 10
store i32 %459, i32* %21
%460 = load double*, double** %23
%461 = getelementptr inbounds double, double* %460, i64 10
store double* %461, double** %23
%462 = load double*, double** %27
%463 = getelementptr inbounds double, double* %462, i64 10
store double* %463, double** %27
br label %380
464: ; preds = %380
%465 = load i32, i32* %21
%466 = add nsw i32 %465, 2
%467 = load i32, i32* %12
%468 = icmp sle i32 %466, %467
br i1 %468, label %469, label %555
469: ; preds = %464
store i32 0, i32* %20
%470 = load double*, double** %23
store double* %470, double** %26
%471 = load double*, double** %22
store double* %471, double** %25
br label %472
472: ; preds = %487, %469
%473 = load i32, i32* %20
%474 = add nsw i32 %473, 81
%475 = load i32, i32* %11
%476 = icmp sle i32 %474, %475
br i1 %476, label %477, label %497
477: ; preds = %472
%478 = load i32, i32* %28
%479 = load i32, i32* %30
%480 = load double*, double** %25
%481 = load double*, double** %26
%482 = load double*, double** %27
%483 = load i32, i32* %16
%484 = load i32, i32* %17
%485 = load i32, i32* %18
%486 = call i32 @mul_mdmd_md_l0nf(i32 %478, i32 81, i32 %479, double* %480, double* %481, double* %482, i32 %483, i32 %484, i32 %485)
br label %487
487: ; preds = %477
%488 = load i32, i32* %20
%489 = add nsw i32 %488, 81
store i32 %489, i32* %20
%490 = load i32, i32* %17
%491 = mul nsw i32 81, %490
%492 = load double*, double** %26
%493 = sext i32 %491 to i64
%494 = getelementptr inbounds double, double* %492, i64 %493
store double* %494, double** %26
%495 = load double*, double** %25
%496 = getelementptr inbounds double, double* %495, i64 81
store double* %496, double** %25
br label %472
497: ; preds = %472
%498 = load i32, i32* %20
%499 = add nsw i32 %498, 17
%500 = load i32, i32* %11
%501 = icmp sle i32 %499, %500
br i1 %501, label %502, label %526
502: ; preds = %497
%503 = load i32, i32* %28
%504 = load i32, i32* %29
%505 = load i32, i32* %30
%506 = load double*, double** %25
%507 = load double*, double** %26
%508 = load double*, double** %27
%509 = load i32, i32* %16
%510 = load i32, i32* %17
%511 = load i32, i32* %18
%512 = call i32 @mul_mdmd_md_l0nf(i32 %503, i32 %504, i32 %505, double* %506, double* %507, double* %508, i32 %509, i32 %510, i32 %511)
%513 = load i32, i32* %29
%514 = load i32, i32* %20
%515 = add nsw i32 %514, %513
store i32 %515, i32* %20
%516 = load i32, i32* %29
%517 = load i32, i32* %17
%518 = mul nsw i32 %516, %517
%519 = load double*, double** %26
%520 = sext i32 %518 to i64
%521 = getelementptr inbounds double, double* %519, i64 %520
store double* %521, double** %26
%522 = load i32, i32* %29
%523 = load double*, double** %25
%524 = sext i32 %522 to i64
%525 = getelementptr inbounds double, double* %523, i64 %524
store double* %525, double** %25
br label %526
526: ; preds = %502, %497
%527 = load i32, i32* %20
%528 = load i32, i32* %11
%529 = icmp slt i32 %527, %528
br i1 %529, label %530, label %543
530: ; preds = %526
%531 = load i32, i32* %28
%532 = load i32, i32* %11
%533 = load i32, i32* %20
%534 = sub nsw i32 %532, %533
%535 = load i32, i32* %30
%536 = load double*, double** %25
%537 = load double*, double** %26
%538 = load double*, double** %27
%539 = load i32, i32* %16
%540 = load i32, i32* %17
%541 = load i32, i32* %18
%542 = call i32 @mul_mdmd_md_l0g(i32 %531, i32 %534, i32 %535, double* %536, double* %537, double* %538, i32 %539, i32 %540, i32 %541)
br label %543
543: ; preds = %530, %526
%544 = load i32, i32* %30
%545 = load i32, i32* %21
%546 = add nsw i32 %545, %544
store i32 %546, i32* %21
%547 = load i32, i32* %30
%548 = load double*, double** %23
%549 = sext i32 %547 to i64
%550 = getelementptr inbounds double, double* %548, i64 %549
store double* %550, double** %23
%551 = load i32, i32* %30
%552 = load double*, double** %27
%553 = sext i32 %551 to i64
%554 = getelementptr inbounds double, double* %552, i64 %553
store double* %554, double** %27
br label %555
555: ; preds = %543, %464
%556 = load i32, i32* %21
%557 = load i32, i32* %12
%558 = icmp slt i32 %556, %557
br i1 %558, label %559, label %640
559: ; preds = %555
store i32 0, i32* %20
%560 = load double*, double** %23
store double* %560, double** %26
%561 = load double*, double** %22
store double* %561, double** %25
br label %562
562: ; preds = %579, %559
%563 = load i32, i32* %20
%564 = add nsw i32 %563, 81
%565 = load i32, i32* %11
%566 = icmp sle i32 %564, %565
br i1 %566, label %567, label %589
567: ; preds = %562
%568 = load i32, i32* %28
%569 = load i32, i32* %12
%570 = load i32, i32* %21
%571 = sub nsw i32 %569, %570
%572 = load double*, double** %25
%573 = load double*, double** %26
%574 = load double*, double** %27
%575 = load i32, i32* %16
%576 = load i32, i32* %17
%577 = load i32, i32* %18
%578 = call i32 @mul_mdmd_md_l0g(i32 %568, i32 81, i32 %571, double* %572, double* %573, double* %574, i32 %575, i32 %576, i32 %577)
br label %579
579: ; preds = %567
%580 = load i32, i32* %20
%581 = add nsw i32 %580, 81
store i32 %581, i32* %20
%582 = load i32, i32* %17
%583 = mul nsw i32 81, %582
%584 = load double*, double** %26
%585 = sext i32 %583 to i64
%586 = getelementptr inbounds double, double* %584, i64 %585
store double* %586, double** %26
%587 = load double*, double** %25
%588 = getelementptr inbounds double, double* %587, i64 81
store double* %588, double** %25
br label %562
589: ; preds = %562
%590 = load i32, i32* %20
%591 = add nsw i32 %590, 17
%592 = load i32, i32* %11
%593 = icmp sle i32 %591, %592
br i1 %593, label %594, label %620
594: ; preds = %589
%595 = load i32, i32* %28
%596 = load i32, i32* %29
%597 = load i32, i32* %12
%598 = load i32, i32* %21
%599 = sub nsw i32 %597, %598
%600 = load double*, double** %25
%601 = load double*, double** %26
%602 = load double*, double** %27
%603 = load i32, i32* %16
%604 = load i32, i32* %17
%605 = load i32, i32* %18
%606 = call i32 @mul_mdmd_md_l0g(i32 %595, i32 %596, i32 %599, double* %600, double* %601, double* %602, i32 %603, i32 %604, i32 %605)
%607 = load i32, i32* %29
%608 = load i32, i32* %20
%609 = add nsw i32 %608, %607
store i32 %609, i32* %20
%610 = load i32, i32* %29
%611 = load i32, i32* %17
%612 = mul nsw i32 %610, %611
%613 = load double*, double** %26
%614 = sext i32 %612 to i64
%615 = getelementptr inbounds double, double* %613, i64 %614
store double* %615, double** %26
%616 = load i32, i32* %29
%617 = load double*, double** %25
%618 = sext i32 %616 to i64
%619 = getelementptr inbounds double, double* %617, i64 %618
store double* %619, double** %25
br label %620
620: ; preds = %594, %589
%621 = load i32, i32* %20
%622 = load i32, i32* %11
%623 = icmp slt i32 %621, %622
br i1 %623, label %624, label %639
624: ; preds = %620
%625 = load i32, i32* %28
%626 = load i32, i32* %11
%627 = load i32, i32* %20
%628 = sub nsw i32 %626, %627
%629 = load i32, i32* %12
%630 = load i32, i32* %21
%631 = sub nsw i32 %629, %630
%632 = load double*, double** %25
%633 = load double*, double** %26
%634 = load double*, double** %27
%635 = load i32, i32* %16
%636 = load i32, i32* %17
%637 = load i32, i32* %18
%638 = call i32 @mul_mdmd_md_l0g(i32 %625, i32 %628, i32 %631, double* %632, double* %633, double* %634, i32 %635, i32 %636, i32 %637)
br label %639
639: ; preds = %624, %620
br label %640
640: ; preds = %639, %555
%641 = load i32, i32* %28
%642 = load i32, i32* %19
%643 = add nsw i32 %642, %641
store i32 %643, i32* %19
br label %644
644: ; preds = %640, %360
%645 = load i32, i32* %19
%646 = load i32, i32* %10
%647 = icmp slt i32 %645, %646
br i1 %647, label %648, label %942
648: ; preds = %644
%649 = load double*, double** %15
%650 = load i32, i32* %19
%651 = load i32, i32* %18
%652 = mul nsw i32 %650, %651
%653 = sext i32 %652 to i64
%654 = getelementptr inbounds double, double* %649, i64 %653
store double* %654, double** %24
%655 = load double*, double** %13
%656 = load i32, i32* %19
%657 = load i32, i32* %16
%658 = mul nsw i32 %656, %657
%659 = sext i32 %658 to i64
%660 = getelementptr inbounds double, double* %655, i64 %659
store double* %660, double** %22
store i32 0, i32* %21
%661 = load double*, double** %14
store double* %661, double** %23
%662 = load double*, double** %24
store double* %662, double** %27
br label %663
663: ; preds = %746, %648
%664 = load i32, i32* %21
%665 = add nsw i32 %664, 10
%666 = load i32, i32* %12
%667 = icmp sle i32 %665, %666
br i1 %667, label %668, label %753
668: ; preds = %663
store i32 0, i32* %20
%669 = load double*, double** %23
store double* %669, double** %26
%670 = load double*, double** %22
store double* %670, double** %25
br label %671
671: ; preds = %687, %668
%672 = load i32, i32* %20
%673 = add nsw i32 %672, 81
%674 = load i32, i32* %11
%675 = icmp sle i32 %673, %674
br i1 %675, label %676, label %697
676: ; preds = %671
%677 = load i32, i32* %10
%678 = load i32, i32* %19
%679 = sub nsw i32 %677, %678
%680 = load double*, double** %25
%681 = load double*, double** %26
%682 = load double*, double** %27
%683 = load i32, i32* %16
%684 = load i32, i32* %17
%685 = load i32, i32* %18
%686 = call i32 @mul_mdmd_md_l0g(i32 %679, i32 81, i32 10, double* %680, double* %681, double* %682, i32 %683, i32 %684, i32 %685)
br label %687
687: ; preds = %676
%688 = load i32, i32* %20
%689 = add nsw i32 %688, 81
store i32 %689, i32* %20
%690 = load i32, i32* %17
%691 = mul nsw i32 81, %690
%692 = load double*, double** %26
%693 = sext i32 %691 to i64
%694 = getelementptr inbounds double, double* %692, i64 %693
store double* %694, double** %26
%695 = load double*, double** %25
%696 = getelementptr inbounds double, double* %695, i64 81
store double* %696, double** %25
br label %671
697: ; preds = %671
%698 = load i32, i32* %20
%699 = add nsw i32 %698, 17
%700 = load i32, i32* %11
%701 = icmp sle i32 %699, %700
br i1 %701, label %702, label %727
702: ; preds = %697
%703 = load i32, i32* %10
%704 = load i32, i32* %19
%705 = sub nsw i32 %703, %704
%706 = load i32, i32* %29
%707 = load double*, double** %25
%708 = load double*, double** %26
%709 = load double*, double** %27
%710 = load i32, i32* %16
%711 = load i32, i32* %17
%712 = load i32, i32* %18
%713 = call i32 @mul_mdmd_md_l0g(i32 %705, i32 %706, i32 10, double* %707, double* %708, double* %709, i32 %710, i32 %711, i32 %712)
%714 = load i32, i32* %29
%715 = load i32, i32* %20
%716 = add nsw i32 %715, %714
store i32 %716, i32* %20
%717 = load i32, i32* %29
%718 = load i32, i32* %17
%719 = mul nsw i32 %717, %718
%720 = load double*, double** %26
%721 = sext i32 %719 to i64
%722 = getelementptr inbounds double, double* %720, i64 %721
store double* %722, double** %26
%723 = load i32, i32* %29
%724 = load double*, double** %25
%725 = sext i32 %723 to i64
%726 = getelementptr inbounds double, double* %724, i64 %725
store double* %726, double** %25
br label %727
727: ; preds = %702, %697
%728 = load i32, i32* %20
%729 = load i32, i32* %11
%730 = icmp slt i32 %728, %729
br i1 %730, label %731, label %745
731: ; preds = %727
%732 = load i32, i32* %10
%733 = load i32, i32* %19
%734 = sub nsw i32 %732, %733
%735 = load i32, i32* %11
%736 = load i32, i32* %20
%737 = sub nsw i32 %735, %736
%738 = load double*, double** %25
%739 = load double*, double** %26
%740 = load double*, double** %27
%741 = load i32, i32* %16
%742 = load i32, i32* %17
%743 = load i32, i32* %18
%744 = call i32 @mul_mdmd_md_l0g(i32 %734, i32 %737, i32 10, double* %738, double* %739, double* %740, i32 %741, i32 %742, i32 %743)
br label %745
745: ; preds = %731, %727
br label %746
746: ; preds = %745
%747 = load i32, i32* %21
%748 = add nsw i32 %747, 10
store i32 %748, i32* %21
%749 = load double*, double** %23
%750 = getelementptr inbounds double, double* %749, i64 10
store double* %750, double** %23
%751 = load double*, double** %27
%752 = getelementptr inbounds double, double* %751, i64 10
store double* %752, double** %27
br label %663
753: ; preds = %663
%754 = load i32, i32* %21
%755 = add nsw i32 %754, 2
%756 = load i32, i32* %12
%757 = icmp sle i32 %755, %756
br i1 %757, label %758, label %850
758: ; preds = %753
store i32 0, i32* %20
%759 = load double*, double** %23
store double* %759, double** %26
%760 = load double*, double** %22
store double* %760, double** %25
br label %761
761: ; preds = %778, %758
%762 = load i32, i32* %20
%763 = add nsw i32 %762, 81
%764 = load i32, i32* %11
%765 = icmp sle i32 %763, %764
br i1 %765, label %766, label %788
766: ; preds = %761
%767 = load i32, i32* %10
%768 = load i32, i32* %19
%769 = sub nsw i32 %767, %768
%770 = load i32, i32* %30
%771 = load double*, double** %25
%772 = load double*, double** %26
%773 = load double*, double** %27
%774 = load i32, i32* %16
%775 = load i32, i32* %17
%776 = load i32, i32* %18
%777 = call i32 @mul_mdmd_md_l0g(i32 %769, i32 81, i32 %770, double* %771, double* %772, double* %773, i32 %774, i32 %775, i32 %776)
br label %778
778: ; preds = %766
%779 = load i32, i32* %20
%780 = add nsw i32 %779, 81
store i32 %780, i32* %20
%781 = load i32, i32* %17
%782 = mul nsw i32 81, %781
%783 = load double*, double** %26
%784 = sext i32 %782 to i64
%785 = getelementptr inbounds double, double* %783, i64 %784
store double* %785, double** %26
%786 = load double*, double** %25
%787 = getelementptr inbounds double, double* %786, i64 81
store double* %787, double** %25
br label %761
788: ; preds = %761
%789 = load i32, i32* %20
%790 = add nsw i32 %789, 17
%791 = load i32, i32* %11
%792 = icmp sle i32 %790, %791
br i1 %792, label %793, label %819
793: ; preds = %788
%794 = load i32, i32* %10
%795 = load i32, i32* %19
%796 = sub nsw i32 %794, %795
%797 = load i32, i32* %29
%798 = load i32, i32* %30
%799 = load double*, double** %25
%800 = load double*, double** %26
%801 = load double*, double** %27
%802 = load i32, i32* %16
%803 = load i32, i32* %17
%804 = load i32, i32* %18
%805 = call i32 @mul_mdmd_md_l0g(i32 %796, i32 %797, i32 %798, double* %799, double* %800, double* %801, i32 %802, i32 %803, i32 %804)
%806 = load i32, i32* %29
%807 = load i32, i32* %20
%808 = add nsw i32 %807, %806
store i32 %808, i32* %20
%809 = load i32, i32* %29
%810 = load i32, i32* %17
%811 = mul nsw i32 %809, %810
%812 = load double*, double** %26
%813 = sext i32 %811 to i64
%814 = getelementptr inbounds double, double* %812, i64 %813
store double* %814, double** %26
%815 = load i32, i32* %29
%816 = load double*, double** %25
%817 = sext i32 %815 to i64
%818 = getelementptr inbounds double, double* %816, i64 %817
store double* %818, double** %25
br label %819
819: ; preds = %793, %788
%820 = load i32, i32* %20
%821 = load i32, i32* %11
%822 = icmp slt i32 %820, %821
br i1 %822, label %823, label %838
823: ; preds = %819
%824 = load i32, i32* %10
%825 = load i32, i32* %19
%826 = sub nsw i32 %824, %825
%827 = load i32, i32* %11
%828 = load i32, i32* %20
%829 = sub nsw i32 %827, %828
%830 = load i32, i32* %30
%831 = load double*, double** %25
%832 = load double*, double** %26
%833 = load double*, double** %27
%834 = load i32, i32* %16
%835 = load i32, i32* %17
%836 = load i32, i32* %18
%837 = call i32 @mul_mdmd_md_l0g(i32 %826, i32 %829, i32 %830, double* %831, double* %832, double* %833, i32 %834, i32 %835, i32 %836)
br label %838
838: ; preds = %823, %819
%839 = load i32, i32* %30
%840 = load i32, i32* %21
%841 = add nsw i32 %840, %839
store i32 %841, i32* %21
%842 = load i32, i32* %30
%843 = load double*, double** %23
%844 = sext i32 %842 to i64
%845 = getelementptr inbounds double, double* %843, i64 %844
store double* %845, double** %23
%846 = load i32, i32* %30
%847 = load double*, double** %27
%848 = sext i32 %846 to i64
%849 = getelementptr inbounds double, double* %847, i64 %848
store double* %849, double** %27
br label %850
850: ; preds = %838, %753
%851 = load i32, i32* %21
%852 = load i32, i32* %12
%853 = icmp slt i32 %851, %852
br i1 %853, label %854, label %941
854: ; preds = %850
store i32 0, i32* %20
%855 = load double*, double** %23
store double* %855, double** %26
%856 = load double*, double** %22
store double* %856, double** %25
br label %857
857: ; preds = %876, %854
%858 = load i32, i32* %20
%859 = add nsw i32 %858, 81
%860 = load i32, i32* %11
%861 = icmp sle i32 %859, %860
br i1 %861, label %862, label %886
862: ; preds = %857
%863 = load i32, i32* %10
%864 = load i32, i32* %19
%865 = sub nsw i32 %863, %864
%866 = load i32, i32* %12
%867 = load i32, i32* %21
%868 = sub nsw i32 %866, %867
%869 = load double*, double** %25
%870 = load double*, double** %26
%871 = load double*, double** %27
%872 = load i32, i32* %16
%873 = load i32, i32* %17
%874 = load i32, i32* %18
%875 = call i32 @mul_mdmd_md_l0g(i32 %865, i32 81, i32 %868, double* %869, double* %870, double* %871, i32 %872, i32 %873, i32 %874)
br label %876
876: ; preds = %862
%877 = load i32, i32* %20
%878 = add nsw i32 %877, 81
store i32 %878, i32* %20
%879 = load i32, i32* %17
%880 = mul nsw i32 81, %879
%881 = load double*, double** %26
%882 = sext i32 %880 to i64
%883 = getelementptr inbounds double, double* %881, i64 %882
store double* %883, double** %26
%884 = load double*, double** %25
%885 = getelementptr inbounds double, double* %884, i64 81
store double* %885, double** %25
br label %857
886: ; preds = %857
%887 = load i32, i32* %20
%888 = add nsw i32 %887, 17
%889 = load i32, i32* %11
%890 = icmp sle i32 %888, %889
br i1 %890, label %891, label %919
891: ; preds = %886
%892 = load i32, i32* %10
%893 = load i32, i32* %19
%894 = sub nsw i32 %892, %893
%895 = load i32, i32* %29
%896 = load i32, i32* %12
%897 = load i32, i32* %21
%898 = sub nsw i32 %896, %897
%899 = load double*, double** %25
%900 = load double*, double** %26
%901 = load double*, double** %27
%902 = load i32, i32* %16
%903 = load i32, i32* %17
%904 = load i32, i32* %18
%905 = call i32 @mul_mdmd_md_l0g(i32 %894, i32 %895, i32 %898, double* %899, double* %900, double* %901, i32 %902, i32 %903, i32 %904)
%906 = load i32, i32* %29
%907 = load i32, i32* %20
%908 = add nsw i32 %907, %906
store i32 %908, i32* %20
%909 = load i32, i32* %29
%910 = load i32, i32* %17
%911 = mul nsw i32 %909, %910
%912 = load double*, double** %26
%913 = sext i32 %911 to i64
%914 = getelementptr inbounds double, double* %912, i64 %913
store double* %914, double** %26
%915 = load i32, i32* %29
%916 = load double*, double** %25
%917 = sext i32 %915 to i64
%918 = getelementptr inbounds double, double* %916, i64 %917
store double* %918, double** %25
br label %919
919: ; preds = %891, %886
%920 = load i32, i32* %20
%921 = load i32, i32* %11
%922 = icmp slt i32 %920, %921
br i1 %922, label %923, label %940
923: ; preds = %919
%924 = load i32, i32* %10
%925 = load i32, i32* %19
%926 = sub nsw i32 %924, %925
%927 = load i32, i32* %11
%928 = load i32, i32* %20
%929 = sub nsw i32 %927, %928
%930 = load i32, i32* %12
%931 = load i32, i32* %21
%932 = sub nsw i32 %930, %931
%933 = load double*, double** %25
%934 = load double*, double** %26
%935 = load double*, double** %27
%936 = load i32, i32* %16
%937 = load i32, i32* %17
%938 = load i32, i32* %18
%939 = call i32 @mul_mdmd_md_l0g(i32 %926, i32 %929, i32 %932, double* %933, double* %934, double* %935, i32 %936, i32 %937, i32 %938)
br label %940
940: ; preds = %923, %919
br label %941
941: ; preds = %940, %850
br label %942
942: ; preds = %941, %644
ret void
}

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