#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 */
typedef int __u32;

/* Variables and functions */
int F(int, int, int);
int G(int, int, int);
int H(int, int, int);
int lshift(int, int);
void mdfour64(__u32 *M, __u32 *A, __u32 *B, __u32 *C, __u32 *D) {
  int j;
  __u32 AA, BB, CC, DD;
  __u32 X[16];
  for (j = 0; j < 16; j++)
    X[j] = M[j];
  AA = *A;
  BB = *B;
  CC = *C;
  DD = *D;
  (*A) = lshift((*A) + F(*B, *C, *D) + X[0], 3);
  (*D) = lshift((*D) + F(*A, *B, *C) + X[1], 7);
  (*C) = lshift((*C) + F(*D, *A, *B) + X[2], 11);
  (*B) = lshift((*B) + F(*C, *D, *A) + X[3], 19);
  (*A) = lshift((*A) + F(*B, *C, *D) + X[4], 3);
  (*D) = lshift((*D) + F(*A, *B, *C) + X[5], 7);
  (*C) = lshift((*C) + F(*D, *A, *B) + X[6], 11);
  (*B) = lshift((*B) + F(*C, *D, *A) + X[7], 19);
  (*A) = lshift((*A) + F(*B, *C, *D) + X[8], 3);
  (*D) = lshift((*D) + F(*A, *B, *C) + X[9], 7);
  (*C) = lshift((*C) + F(*D, *A, *B) + X[10], 11);
  (*B) = lshift((*B) + F(*C, *D, *A) + X[11], 19);
  (*A) = lshift((*A) + F(*B, *C, *D) + X[12], 3);
  (*D) = lshift((*D) + F(*A, *B, *C) + X[13], 7);
  (*C) = lshift((*C) + F(*D, *A, *B) + X[14], 11);
  (*B) = lshift((*B) + F(*C, *D, *A) + X[15], 19);
  (*A) = lshift((*A) + G(*B, *C, *D) + X[0] + (__u32)0x5A827999, 3);
  (*D) = lshift((*D) + G(*A, *B, *C) + X[4] + (__u32)0x5A827999, 5);
  (*C) = lshift((*C) + G(*D, *A, *B) + X[8] + (__u32)0x5A827999, 9);
  (*B) = lshift((*B) + G(*C, *D, *A) + X[12] + (__u32)0x5A827999, 13);
  (*A) = lshift((*A) + G(*B, *C, *D) + X[1] + (__u32)0x5A827999, 3);
  (*D) = lshift((*D) + G(*A, *B, *C) + X[5] + (__u32)0x5A827999, 5);
  (*C) = lshift((*C) + G(*D, *A, *B) + X[9] + (__u32)0x5A827999, 9);
  (*B) = lshift((*B) + G(*C, *D, *A) + X[13] + (__u32)0x5A827999, 13);
  (*A) = lshift((*A) + G(*B, *C, *D) + X[2] + (__u32)0x5A827999, 3);
  (*D) = lshift((*D) + G(*A, *B, *C) + X[6] + (__u32)0x5A827999, 5);
  (*C) = lshift((*C) + G(*D, *A, *B) + X[10] + (__u32)0x5A827999, 9);
  (*B) = lshift((*B) + G(*C, *D, *A) + X[14] + (__u32)0x5A827999, 13);
  (*A) = lshift((*A) + G(*B, *C, *D) + X[3] + (__u32)0x5A827999, 3);
  (*D) = lshift((*D) + G(*A, *B, *C) + X[7] + (__u32)0x5A827999, 5);
  (*C) = lshift((*C) + G(*D, *A, *B) + X[11] + (__u32)0x5A827999, 9);
  (*B) = lshift((*B) + G(*C, *D, *A) + X[15] + (__u32)0x5A827999, 13);
  (*A) = lshift((*A) + H(*B, *C, *D) + X[0] + (__u32)0x6ED9EBA1, 3);
  (*D) = lshift((*D) + H(*A, *B, *C) + X[8] + (__u32)0x6ED9EBA1, 9);
  (*C) = lshift((*C) + H(*D, *A, *B) + X[4] + (__u32)0x6ED9EBA1, 11);
  (*B) = lshift((*B) + H(*C, *D, *A) + X[12] + (__u32)0x6ED9EBA1, 15);
  (*A) = lshift((*A) + H(*B, *C, *D) + X[2] + (__u32)0x6ED9EBA1, 3);
  (*D) = lshift((*D) + H(*A, *B, *C) + X[10] + (__u32)0x6ED9EBA1, 9);
  (*C) = lshift((*C) + H(*D, *A, *B) + X[6] + (__u32)0x6ED9EBA1, 11);
  (*B) = lshift((*B) + H(*C, *D, *A) + X[14] + (__u32)0x6ED9EBA1, 15);
  (*A) = lshift((*A) + H(*B, *C, *D) + X[1] + (__u32)0x6ED9EBA1, 3);
  (*D) = lshift((*D) + H(*A, *B, *C) + X[9] + (__u32)0x6ED9EBA1, 9);
  (*C) = lshift((*C) + H(*D, *A, *B) + X[5] + (__u32)0x6ED9EBA1, 11);
  (*B) = lshift((*B) + H(*C, *D, *A) + X[13] + (__u32)0x6ED9EBA1, 15);
  (*A) = lshift((*A) + H(*B, *C, *D) + X[3] + (__u32)0x6ED9EBA1, 3);
  (*D) = lshift((*D) + H(*A, *B, *C) + X[11] + (__u32)0x6ED9EBA1, 9);
  (*C) = lshift((*C) + H(*D, *A, *B) + X[7] + (__u32)0x6ED9EBA1, 11);
  (*B) = lshift((*B) + H(*C, *D, *A) + X[15] + (__u32)0x6ED9EBA1, 15);
  *A += AA;
  *B += BB;
  *C += CC;
  *D += DD;
  *A &= 0xFFFFFFFF;
  *B &= 0xFFFFFFFF;
  *C &= 0xFFFFFFFF;
  *D &= 0xFFFFFFFF;
  for (j = 0; j < 16; j++)
    X[j] = 0;
}


x86 assembly (clang, -O0):
<mdfour64>:
push   %rbp
mov    %rsp,%rbp
sub    $0x140,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x10,-0x2c(%rbp)
jge    1191 <mdfour64+0x51>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x2c(%rbp),%rax
mov    %ecx,-0x80(%rbp,%rax,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1166 <mdfour64+0x26>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x140(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x140(%rbp),%edi
add    %eax,%edi
add    -0x80(%rbp),%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x13c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x13c(%rbp),%edi
add    %eax,%edi
add    -0x7c(%rbp),%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x138(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x138(%rbp),%edi
add    %eax,%edi
add    -0x78(%rbp),%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x134(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x134(%rbp),%edi
add    %eax,%edi
add    -0x74(%rbp),%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x130(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x130(%rbp),%edi
add    %eax,%edi
add    -0x70(%rbp),%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x12c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x12c(%rbp),%edi
add    %eax,%edi
add    -0x6c(%rbp),%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x128(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x128(%rbp),%edi
add    %eax,%edi
add    -0x68(%rbp),%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x124(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x124(%rbp),%edi
add    %eax,%edi
add    -0x64(%rbp),%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x120(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x120(%rbp),%edi
add    %eax,%edi
add    -0x60(%rbp),%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x11c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x11c(%rbp),%edi
add    %eax,%edi
add    -0x5c(%rbp),%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x118(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x118(%rbp),%edi
add    %eax,%edi
add    -0x58(%rbp),%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x114(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x114(%rbp),%edi
add    %eax,%edi
add    -0x54(%rbp),%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x110(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x110(%rbp),%edi
add    %eax,%edi
add    -0x50(%rbp),%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x10c(%rbp),%edi
add    %eax,%edi
add    -0x4c(%rbp),%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x108(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x108(%rbp),%edi
add    %eax,%edi
add    -0x48(%rbp),%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x104(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1040 <F@plt>
mov    -0x104(%rbp),%edi
add    %eax,%edi
add    -0x44(%rbp),%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x100(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0x100(%rbp),%edi
add    %eax,%edi
add    -0x80(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xfc(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xfc(%rbp),%edi
add    %eax,%edi
add    -0x70(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xf8(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xf8(%rbp),%edi
add    %eax,%edi
add    -0x60(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xf4(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xf4(%rbp),%edi
add    %eax,%edi
add    -0x50(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xf0(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xf0(%rbp),%edi
add    %eax,%edi
add    -0x7c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xec(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xec(%rbp),%edi
add    %eax,%edi
add    -0x6c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xe8(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xe8(%rbp),%edi
add    %eax,%edi
add    -0x5c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xe4(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xe4(%rbp),%edi
add    %eax,%edi
add    -0x4c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xe0(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xe0(%rbp),%edi
add    %eax,%edi
add    -0x78(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xdc(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xdc(%rbp),%edi
add    %eax,%edi
add    -0x68(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xd8(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xd8(%rbp),%edi
add    %eax,%edi
add    -0x58(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xd4(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xd4(%rbp),%edi
add    %eax,%edi
add    -0x48(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xd0(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xd0(%rbp),%edi
add    %eax,%edi
add    -0x74(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xcc(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xcc(%rbp),%edi
add    %eax,%edi
add    -0x64(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xc8(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xc8(%rbp),%edi
add    %eax,%edi
add    -0x54(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xc4(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1060 <G@plt>
mov    -0xc4(%rbp),%edi
add    %eax,%edi
add    -0x44(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xc0(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xc0(%rbp),%edi
add    %eax,%edi
add    -0x80(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xbc(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xbc(%rbp),%edi
add    %eax,%edi
add    -0x60(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xb8(%rbp),%edi
add    %eax,%edi
add    -0x70(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xb4(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xb4(%rbp),%edi
add    %eax,%edi
add    -0x50(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xb0(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xb0(%rbp),%edi
add    %eax,%edi
add    -0x78(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xac(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xac(%rbp),%edi
add    %eax,%edi
add    -0x58(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xa8(%rbp),%edi
add    %eax,%edi
add    -0x68(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xa4(%rbp),%edi
add    %eax,%edi
add    -0x48(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0xa0(%rbp),%edi
add    %eax,%edi
add    -0x7c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0x9c(%rbp),%edi
add    %eax,%edi
add    -0x5c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x98(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0x98(%rbp),%edi
add    %eax,%edi
add    -0x6c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x94(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0x94(%rbp),%edi
add    %eax,%edi
add    -0x4c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x90(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0x90(%rbp),%edi
add    %eax,%edi
add    -0x74(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0x8c(%rbp),%edi
add    %eax,%edi
add    -0x54(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x88(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0x88(%rbp),%edi
add    %eax,%edi
add    -0x64(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x84(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%edi
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1030 <H@plt>
mov    -0x84(%rbp),%edi
add    %eax,%edi
add    -0x44(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x30(%rbp),%ecx
mov    -0x10(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x34(%rbp),%ecx
mov    -0x18(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x38(%rbp),%ecx
mov    -0x20(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x3c(%rbp),%ecx
mov    -0x28(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
and    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
and    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
and    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
and    $0xffffffff,%ecx
mov    %ecx,(%rax)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x10,-0x2c(%rbp)
jge    1ef8 <mdfour64+0xdb8>
movslq -0x2c(%rbp),%rax
movl   $0x0,-0x80(%rbp,%rax,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1ed4 <mdfour64+0xd94>
add    $0x140,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mdfour64>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %r8,%r14
mov    %rcx,%r15
mov    %rdx,%r13
mov    %rsi,%r12
mov    (%rdi),%ebx
mov    %rbx,0x88(%rsp)
mov    0x4(%rdi),%eax
mov    %rax,0x38(%rsp)
mov    0x8(%rdi),%eax
mov    %rax,0x28(%rsp)
mov    0xc(%rdi),%eax
mov    %rax,0x48(%rsp)
mov    0x10(%rdi),%eax
mov    %rax,0x20(%rsp)
mov    0x14(%rdi),%eax
mov    %rax,0x58(%rsp)
mov    0x18(%rdi),%eax
mov    %rax,0x40(%rsp)
mov    0x1c(%rdi),%eax
mov    %rax,0x30(%rsp)
mov    0x20(%rdi),%eax
mov    %rax,0x18(%rsp)
mov    0x24(%rdi),%eax
mov    %rax,0x50(%rsp)
mov    0x28(%rdi),%eax
mov    %rax,0x80(%rsp)
mov    0x2c(%rdi),%eax
mov    %rax,0x60(%rsp)
mov    0x30(%rdi),%eax
mov    %rax,0x78(%rsp)
mov    0x34(%rdi),%eax
mov    %rax,0x8(%rsp)
mov    0x38(%rdi),%eax
mov    %rax,0x10(%rsp)
mov    0x3c(%rdi),%eax
mov    %rax,(%rsp)
mov    (%rsi),%ebp
mov    %rbp,0x90(%rsp)
mov    (%rdx),%edi
mov    %edi,0x74(%rsp)
mov    (%rcx),%esi
mov    %esi,0x70(%rsp)
mov    (%r8),%edx
mov    %edx,0x6c(%rsp)
call   1040 <F@plt>
lea    (%rax,%rbp,1),%edi
add    %ebx,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    (%r14),%ebp
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x38(%rsp),%ebp
mov    %ebp,%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r15),%ebp
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x28(%rsp),%ebp
mov    %ebp,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    0x0(%r13),%ebp
mov    (%r14),%esi
mov    (%r12),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x48(%rsp),%ebp
mov    %ebp,%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r12),%ebp
mov    (%r15),%esi
mov    (%r14),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x20(%rsp),%ebp
mov    %ebp,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    (%r14),%ebp
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x58(%rsp),%ebp
mov    %ebp,%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r15),%ebp
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x40(%rsp),%ebp
mov    %ebp,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    0x0(%r13),%ebp
mov    (%r14),%esi
mov    (%r12),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x30(%rsp),%ebp
mov    %ebp,%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r12),%ebp
mov    (%r15),%esi
mov    (%r14),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x18(%rsp),%ebp
mov    %ebp,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    (%r14),%ebp
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x50(%rsp),%ebp
mov    %ebp,%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r15),%ebp
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x80(%rsp),%ebp
mov    %ebp,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    0x0(%r13),%ebp
mov    (%r14),%esi
mov    (%r12),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x60(%rsp),%ebp
mov    %ebp,%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r12),%ebp
mov    (%r15),%esi
mov    (%r14),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
mov    0x78(%rsp),%rbx
add    %ebx,%ebp
mov    %ebp,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    (%r14),%ebp
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x8(%rsp),%ebp
mov    %ebp,%edi
mov    $0x7,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r15),%ebp
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    0x10(%rsp),%ebp
mov    %ebp,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    0x0(%r13),%ebp
mov    (%r14),%esi
mov    (%r12),%edx
mov    %eax,%edi
call   1040 <F@plt>
add    %eax,%ebp
add    (%rsp),%ebp
mov    %ebp,%edi
mov    $0x13,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    (%r12),%ebp
add    0x88(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    (%r14),%ebp
add    0x20(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    (%r15),%ebp
add    0x18(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    0x0(%r13),%ebp
add    %ebx,%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    (%r12),%ebp
add    0x38(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    (%r14),%ebp
add    0x58(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    (%r15),%ebp
add    0x50(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    0x0(%r13),%ebp
add    0x8(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    (%r12),%ebp
add    0x28(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    (%r14),%ebp
add    0x40(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    (%r15),%ebp
mov    0x80(%rsp),%rbx
add    %ebx,%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    0x0(%r13),%ebp
add    0x10(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    (%r12),%ebp
add    0x48(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    (%r14),%ebp
add    0x30(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    (%r15),%ebp
add    0x60(%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    0x0(%r13),%ebp
add    (%rsp),%ebp
mov    %eax,%edi
call   1060 <G@plt>
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    0x88(%rsp),%rbp
add    (%r12),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    0x18(%rsp),%rbp
add    (%r14),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    0x20(%rsp),%rbp
add    (%r15),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    0x78(%rsp),%rbp
add    0x0(%r13),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    0x28(%rsp),%rbp
add    (%r12),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
add    (%r14),%ebx
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbx,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    0x40(%rsp),%rbp
add    (%r15),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    0x10(%rsp),%rbp
add    0x0(%r13),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    0x38(%rsp),%rbp
add    (%r12),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    0x50(%rsp),%rbp
add    (%r14),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    0x58(%rsp),%rbp
add    (%r15),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    0x8(%rsp),%rbp
add    0x0(%r13),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    (%r15),%esi
mov    (%r14),%edx
mov    0x48(%rsp),%rbp
add    (%r12),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1050 <lshift@plt>
mov    %eax,(%r12)
mov    0x0(%r13),%esi
mov    (%r15),%edx
mov    0x60(%rsp),%rbp
add    (%r14),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1050 <lshift@plt>
mov    %eax,(%r14)
mov    (%r12),%esi
mov    0x0(%r13),%edx
mov    0x30(%rsp),%rbp
add    (%r15),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1050 <lshift@plt>
mov    %eax,(%r15)
mov    (%r14),%esi
mov    (%r12),%edx
mov    (%rsp),%rbp
add    0x0(%r13),%ebp
mov    %eax,%edi
call   1030 <H@plt>
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1050 <lshift@plt>
mov    %eax,0x0(%r13)
mov    0x90(%rsp),%rax
add    %eax,(%r12)
mov    0x74(%rsp),%eax
add    %eax,0x0(%r13)
mov    0x70(%rsp),%eax
add    %eax,(%r15)
mov    0x6c(%rsp),%eax
add    %eax,(%r14)
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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