#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 /*<<< orphan*/ X;
typedef int /*<<< orphan*/ D;
typedef int /*<<< orphan*/ C;
typedef int /*<<< orphan*/ B;
typedef int /*<<< orphan*/ A;

/* Variables and functions */
int hexrev(unsigned int);
int /*<<< orphan*/ printf(char *, ...);
unsigned int shift(int /*<<< orphan*/, int);
unsigned int md4(unsigned int block[16]) {
  unsigned int X[16];
  int i;
  for (i = 0; i < 16; i++)
    X[i] = block[i];
  unsigned int A = hexrev(0x01234567);
  unsigned int B = hexrev(0x89abcdef);
  unsigned int C = hexrev(0xfedcba98);
  unsigned int D = hexrev(0x76543210);
  unsigned int P, Q, R, S;
  P = A;
  Q = B;
  R = C;
  S = D;
  A = shift(((A) + (f(B, C, D)) + (X[0])), (3));
  D = shift(((D) + (f(A, B, C)) + (X[1])), (7));
  C = shift(((C) + (f(D, A, B)) + (X[2])), (11));
  B = shift(((B) + (f(C, D, A)) + (X[3])), (19));
  A = shift(((A) + (f(B, C, D)) + (X[4])), (3));
  D = shift(((D) + (f(A, B, C)) + (X[5])), (7));
  C = shift(((C) + (f(D, A, B)) + (X[6])), (11));
  B = shift(((B) + (f(C, D, A)) + (X[7])), (19));
  A = shift(((A) + (f(B, C, D)) + (X[8])), (3));
  D = shift(((D) + (f(A, B, C)) + (X[9])), (7));
  C = shift(((C) + (f(D, A, B)) + (X[10])), (11));
  B = shift(((B) + (f(C, D, A)) + (X[11])), (19));
  A = shift(((A) + (f(B, C, D)) + (X[12])), (3));
  D = shift(((D) + (f(A, B, C)) + (X[13])), (7));
  C = shift(((C) + (f(D, A, B)) + (X[14])), (11));
  B = shift(((B) + (f(C, D, A)) + (X[15])), (19));
  A = shift(((A) + (g(B, C, D)) + (X[0]) + (0x5a827999)), (3));
  D = shift(((D) + (g(A, B, C)) + (X[4]) + (0x5a827999)), (5));
  C = shift(((C) + (g(D, A, B)) + (X[8]) + (0x5a827999)), (9));
  B = shift(((B) + (g(C, D, A)) + (X[12]) + (0x5a827999)), (13));
  A = shift(((A) + (g(B, C, D)) + (X[1]) + (0x5a827999)), (3));
  D = shift(((D) + (g(A, B, C)) + (X[5]) + (0x5a827999)), (5));
  C = shift(((C) + (g(D, A, B)) + (X[9]) + (0x5a827999)), (9));
  B = shift(((B) + (g(C, D, A)) + (X[13]) + (0x5a827999)), (13));
  A = shift(((A) + (g(B, C, D)) + (X[2]) + (0x5a827999)), (3));
  D = shift(((D) + (g(A, B, C)) + (X[6]) + (0x5a827999)), (5));
  C = shift(((C) + (g(D, A, B)) + (X[10]) + (0x5a827999)), (9));
  B = shift(((B) + (g(C, D, A)) + (X[14]) + (0x5a827999)), (13));
  A = shift(((A) + (g(B, C, D)) + (X[3]) + (0x5a827999)), (3));
  D = shift(((D) + (g(A, B, C)) + (X[7]) + (0x5a827999)), (5));
  C = shift(((C) + (g(D, A, B)) + (X[11]) + (0x5a827999)), (9));
  B = shift(((B) + (g(C, D, A)) + (X[15]) + (0x5a827999)), (13));
  A = (shift(((A) + (h(B, C, D)) + (X[0]) + (0x6ed9eba1)), (3)));
  D = (shift(((D) + (h(A, B, C)) + (X[8]) + (0x6ed9eba1)), (9)));
  C = (shift(((C) + (h(D, A, B)) + (X[4]) + (0x6ed9eba1)), (11)));
  B = (shift(((B) + (h(C, D, A)) + (X[12]) + (0x6ed9eba1)), (15)));
  A = (shift(((A) + (h(B, C, D)) + (X[2]) + (0x6ed9eba1)), (3)));
  D = (shift(((D) + (h(A, B, C)) + (X[10]) + (0x6ed9eba1)), (9)));
  C = (shift(((C) + (h(D, A, B)) + (X[6]) + (0x6ed9eba1)), (11)));
  B = (shift(((B) + (h(C, D, A)) + (X[14]) + (0x6ed9eba1)), (15)));
  A = (shift(((A) + (h(B, C, D)) + (X[1]) + (0x6ed9eba1)), (3)));
  D = (shift(((D) + (h(A, B, C)) + (X[9]) + (0x6ed9eba1)), (9)));
  C = (shift(((C) + (h(D, A, B)) + (X[5]) + (0x6ed9eba1)), (11)));
  B = (shift(((B) + (h(C, D, A)) + (X[13]) + (0x6ed9eba1)), (15)));
  A = (shift(((A) + (h(B, C, D)) + (X[3]) + (0x6ed9eba1)), (3)));
  D = (shift(((D) + (h(A, B, C)) + (X[11]) + (0x6ed9eba1)), (9)));
  C = (shift(((C) + (h(D, A, B)) + (X[7]) + (0x6ed9eba1)), (11)));
  B = (shift(((B) + (h(C, D, A)) + (X[15]) + (0x6ed9eba1)), (15)));
  A += P;
  B += Q;
  C += R;
  D += S;
  printf("\nThe input message is:\n");
  for (i = 0; i < 16; i++)
    printf("%#x ", X[i]);
  printf("\nThe MD4 Hash is:\n %#x %#x %#x %#x \n", hexrev(A), hexrev(B),
         hexrev(C), hexrev(D));
}


x86 assembly (clang, -O0):
<md4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x140,%rsp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x54(%rbp)
cmpl   $0x10,-0x54(%rbp)
jge    11a1 <md4+0x41>
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x54(%rbp),%rax
mov    %ecx,-0x50(%rbp,%rax,4)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1176 <md4+0x16>
mov    $0x1234567,%edi
call   1060 <hexrev@plt>
mov    %eax,-0x58(%rbp)
mov    $0x89abcdef,%edi
call   1060 <hexrev@plt>
mov    %eax,-0x5c(%rbp)
mov    $0xfedcba98,%edi
call   1060 <hexrev@plt>
mov    %eax,-0x60(%rbp)
mov    $0x76543210,%edi
call   1060 <hexrev@plt>
mov    %eax,-0x64(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x134(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x134(%rbp),%edi
add    %eax,%edi
add    -0x50(%rbp),%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x130(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x130(%rbp),%edi
add    %eax,%edi
add    -0x4c(%rbp),%edi
mov    $0x7,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x12c(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x12c(%rbp),%edi
add    %eax,%edi
add    -0x48(%rbp),%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x128(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x128(%rbp),%edi
add    %eax,%edi
add    -0x44(%rbp),%edi
mov    $0x13,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x124(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x124(%rbp),%edi
add    %eax,%edi
add    -0x40(%rbp),%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x120(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x120(%rbp),%edi
add    %eax,%edi
add    -0x3c(%rbp),%edi
mov    $0x7,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x11c(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x11c(%rbp),%edi
add    %eax,%edi
add    -0x38(%rbp),%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x118(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x118(%rbp),%edi
add    %eax,%edi
add    -0x34(%rbp),%edi
mov    $0x13,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x114(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x114(%rbp),%edi
add    %eax,%edi
add    -0x30(%rbp),%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x110(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x110(%rbp),%edi
add    %eax,%edi
add    -0x2c(%rbp),%edi
mov    $0x7,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x10c(%rbp),%edi
add    %eax,%edi
add    -0x28(%rbp),%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x108(%rbp),%edi
add    %eax,%edi
add    -0x24(%rbp),%edi
mov    $0x13,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x104(%rbp),%edi
add    %eax,%edi
add    -0x20(%rbp),%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0x100(%rbp),%edi
add    %eax,%edi
add    -0x1c(%rbp),%edi
mov    $0x7,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0xfc(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0xfc(%rbp),%edi
add    %eax,%edi
add    -0x18(%rbp),%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1040 <f@plt>
mov    -0xf8(%rbp),%edi
add    %eax,%edi
add    -0x14(%rbp),%edi
mov    $0x13,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xf4(%rbp),%edi
add    %eax,%edi
add    -0x50(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0xf0(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xf0(%rbp),%edi
add    %eax,%edi
add    -0x40(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0xec(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xec(%rbp),%edi
add    %eax,%edi
add    -0x30(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0xe8(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xe8(%rbp),%edi
add    %eax,%edi
add    -0x20(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xe4(%rbp),%edi
add    %eax,%edi
add    -0x4c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0xe0(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xe0(%rbp),%edi
add    %eax,%edi
add    -0x3c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0xdc(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xdc(%rbp),%edi
add    %eax,%edi
add    -0x2c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xd8(%rbp),%edi
add    %eax,%edi
add    -0x1c(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0xd4(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xd4(%rbp),%edi
add    %eax,%edi
add    -0x48(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xd0(%rbp),%edi
add    %eax,%edi
add    -0x38(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xcc(%rbp),%edi
add    %eax,%edi
add    -0x28(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xc8(%rbp),%edi
add    %eax,%edi
add    -0x18(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xc4(%rbp),%edi
add    %eax,%edi
add    -0x44(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0xc0(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xc0(%rbp),%edi
add    %eax,%edi
add    -0x34(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0xbc(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xbc(%rbp),%edi
add    %eax,%edi
add    -0x24(%rbp),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1070 <g@plt>
mov    -0xb8(%rbp),%edi
add    %eax,%edi
add    -0x14(%rbp),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0xb4(%rbp),%edi
add    %eax,%edi
add    -0x50(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0xb0(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0xb0(%rbp),%edi
add    %eax,%edi
add    -0x30(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0xac(%rbp),%edi
add    %eax,%edi
add    -0x40(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0xa8(%rbp),%edi
add    %eax,%edi
add    -0x20(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0xa4(%rbp),%edi
add    %eax,%edi
add    -0x48(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0xa0(%rbp),%edi
add    %eax,%edi
add    -0x28(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x9c(%rbp),%edi
add    %eax,%edi
add    -0x38(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x98(%rbp),%edi
add    %eax,%edi
add    -0x18(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x94(%rbp),%edi
add    %eax,%edi
add    -0x4c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x90(%rbp),%edi
add    %eax,%edi
add    -0x2c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x8c(%rbp),%edi
add    %eax,%edi
add    -0x3c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x88(%rbp),%edi
add    %eax,%edi
add    -0x1c(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x60(%rbp),%esi
mov    -0x64(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x84(%rbp),%edi
add    %eax,%edi
add    -0x44(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1080 <shift@plt>
mov    %eax,-0x58(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    -0x60(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x80(%rbp),%edi
add    %eax,%edi
add    -0x24(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1080 <shift@plt>
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x7c(%rbp),%edi
add    %eax,%edi
add    -0x34(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1080 <shift@plt>
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    $0x0,%al
call   1030 <h@plt>
mov    -0x78(%rbp),%edi
add    %eax,%edi
add    -0x14(%rbp),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1080 <shift@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x68(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x6c(%rbp),%eax
add    -0x5c(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x70(%rbp),%eax
add    -0x60(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x74(%rbp),%eax
add    -0x64(%rbp),%eax
mov    %eax,-0x64(%rbp)
lea    0x40a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x54(%rbp)
cmpl   $0x10,-0x54(%rbp)
jge    1c32 <md4+0xad2>
movslq -0x54(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%esi
lea    0x3fb(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1c04 <md4+0xaa4>
mov    -0x58(%rbp),%edi
call   1060 <hexrev@plt>
mov    %eax,-0x140(%rbp)
mov    -0x5c(%rbp),%edi
call   1060 <hexrev@plt>
mov    %eax,-0x13c(%rbp)
mov    -0x60(%rbp),%edi
call   1060 <hexrev@plt>
mov    %eax,-0x138(%rbp)
mov    -0x64(%rbp),%edi
call   1060 <hexrev@plt>
mov    -0x140(%rbp),%esi
mov    -0x13c(%rbp),%edx
mov    -0x138(%rbp),%ecx
mov    %eax,%r8d
lea    0x39d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0x140,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<md4>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    (%rdi),%r13d
mov    %r13d,0x44(%rsp)
mov    0x4(%rdi),%r15d
mov    %r15d,0x40(%rsp)
mov    0x8(%rdi),%eax
mov    %eax,0x34(%rsp)
mov    0xc(%rdi),%eax
mov    %eax,0x30(%rsp)
mov    0x10(%rdi),%eax
mov    %eax,0x2c(%rsp)
mov    0x14(%rdi),%eax
mov    %eax,0x28(%rsp)
mov    0x18(%rdi),%eax
mov    %eax,0x24(%rsp)
mov    0x1c(%rdi),%eax
mov    %eax,0x20(%rsp)
mov    0x20(%rdi),%eax
mov    %eax,0x1c(%rsp)
mov    0x24(%rdi),%eax
mov    %eax,0x18(%rsp)
mov    0x28(%rdi),%eax
mov    %eax,0x3c(%rsp)
mov    0x2c(%rdi),%eax
mov    %eax,0x14(%rsp)
mov    0x30(%rdi),%eax
mov    %eax,0x10(%rsp)
mov    0x34(%rdi),%eax
mov    %eax,0xc(%rsp)
mov    0x38(%rdi),%eax
mov    %eax,0x8(%rsp)
mov    0x3c(%rdi),%eax
mov    %eax,0x38(%rsp)
mov    $0x1234567,%edi
call   1070 <hexrev@plt>
mov    %eax,%r14d
mov    %r14,0x60(%rsp)
mov    $0x89abcdef,%edi
call   1070 <hexrev@plt>
mov    %eax,%r12d
mov    $0xfedcba98,%edi
call   1070 <hexrev@plt>
mov    %eax,%ebx
mov    $0x76543210,%edi
call   1070 <hexrev@plt>
mov    %r12d,%edi
mov    %ebx,%esi
mov    %eax,%edx
mov    %rax,%rbp
mov    %rax,0x58(%rsp)
xor    %eax,%eax
call   1050 <f@plt>
lea    (%rax,%r14,1),%edi
add    %r13d,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %r12d,%esi
mov    %ebx,%edx
mov    %rbx,0x50(%rsp)
xor    %eax,%eax
call   1050 <f@plt>
lea    (%rax,%rbp,1),%edi
add    %r15d,%edi
mov    $0x7,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r14d,%esi
mov    %r12,%rbp
mov    %r12,0x48(%rsp)
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <f@plt>
lea    (%rax,%rbx,1),%edi
add    0x34(%rsp),%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r12d
mov    %eax,%edi
mov    %r15d,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1050 <f@plt>
lea    (%rax,%rbp,1),%edi
add    0x30(%rsp),%edi
mov    $0x13,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %r12d,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%r14d
add    0x2c(%rsp),%r14d
mov    %r14d,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %ebx,%esi
mov    %r12d,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%r15d
add    0x28(%rsp),%r15d
mov    %r15d,%edi
mov    $0x7,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %ebp,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%r12d
add    0x24(%rsp),%r12d
mov    %r12d,%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r14d,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%ebx
add    0x20(%rsp),%ebx
mov    %ebx,%edi
mov    $0x13,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %r15d,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%ebp
add    0x1c(%rsp),%ebp
mov    %ebp,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %ebx,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%r14d
add    0x18(%rsp),%r14d
mov    %r14d,%edi
mov    $0x7,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %ebp,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%r15d
add    0x3c(%rsp),%r15d
mov    %r15d,%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r14d,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%ebx
add    0x14(%rsp),%ebx
mov    %ebx,%edi
mov    $0x13,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %r15d,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%ebp
add    0x10(%rsp),%ebp
mov    %ebp,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %ebx,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%r14d
add    0xc(%rsp),%r14d
mov    %r14d,%edi
mov    $0x7,%esi
call   1090 <shift@plt>
mov    %eax,%r12d
mov    %eax,%edi
mov    %ebp,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%r15d
add    0x8(%rsp),%r15d
mov    %r15d,%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r13d
mov    %eax,%edi
mov    %r12d,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <f@plt>
add    %eax,%ebx
add    0x38(%rsp),%ebx
mov    %ebx,%edi
mov    $0x13,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r13d,%esi
mov    %r12d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x44(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %r15d,%esi
mov    %r13d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x2c(%rsp),%r12d
lea    (%rax,%r12,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1090 <shift@plt>
mov    %eax,%r12d
mov    %eax,%edi
mov    %r14d,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x1c(%rsp),%r13d
lea    (%rax,%r13,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r13d
mov    %eax,%edi
mov    %r12d,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x10(%rsp),%r15d
lea    (%rax,%r15,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %r13d,%esi
mov    %r12d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x40(%rsp),%r14d
lea    (%rax,%r14,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %ebp,%esi
mov    %r13d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x28(%rsp),%r12d
lea    (%rax,%r12,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %ebx,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x18(%rsp),%r13d
lea    (%rax,%r13,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r14d,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0xc(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %r15d,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x34(%rsp),%ebx
lea    (%rax,%rbx,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %ebp,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x24(%rsp),%r14d
lea    (%rax,%r14,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %ebx,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <g@plt>
mov    0x3c(%rsp),%r13d
add    %r13d,%r15d
lea    (%rax,%r15,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r14d,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x8(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %r15d,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x30(%rsp),%ebx
lea    (%rax,%rbx,1),%edi
add    $0x5a827999,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %ebp,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x20(%rsp),%r14d
lea    (%rax,%r14,1),%edi
add    $0x5a827999,%edi
mov    $0x5,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %ebx,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x14(%rsp),%r15d
lea    (%rax,%r15,1),%edi
add    $0x5a827999,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r14d,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1080 <g@plt>
add    0x38(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x5a827999,%edi
mov    $0xd,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %r15d,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x44(%rsp),%ebx
lea    (%rax,%rbx,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %ebp,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x1c(%rsp),%r14d
lea    (%rax,%r14,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r12d
mov    %eax,%edi
mov    %ebx,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x2c(%rsp),%r15d
lea    (%rax,%r15,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %r12d,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x10(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %r14d,%esi
mov    %r12d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x34(%rsp),%ebx
lea    (%rax,%rbx,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %ebp,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    %r13d,%r12d
lea    (%rax,%r12,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %ebx,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x24(%rsp),%r14d
lea    (%rax,%r14,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %r15d,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x8(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %r14d,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x40(%rsp),%ebx
lea    (%rax,%rbx,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
mov    %eax,%edi
mov    %ebp,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x18(%rsp),%r15d
lea    (%rax,%r15,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %ebx,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x28(%rsp),%r14d
lea    (%rax,%r14,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %r15d,%esi
mov    %ebx,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0xc(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1090 <shift@plt>
mov    %eax,%ebp
mov    %eax,%edi
mov    %r14d,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x30(%rsp),%ebx
lea    (%rax,%rbx,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x3,%esi
call   1090 <shift@plt>
mov    %eax,%r13d
mov    %eax,%edi
mov    %ebp,%esi
mov    %r14d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x14(%rsp),%r15d
lea    (%rax,%r15,1),%edi
add    $0x6ed9eba1,%edi
mov    $0x9,%esi
call   1090 <shift@plt>
mov    %eax,%r15d
mov    %eax,%edi
mov    %r13d,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x20(%rsp),%r14d
lea    (%rax,%r14,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xb,%esi
call   1090 <shift@plt>
mov    %eax,%r14d
mov    %eax,%edi
mov    %r15d,%esi
mov    %r13d,%edx
xor    %eax,%eax
call   1040 <h@plt>
add    0x38(%rsp),%ebp
lea    (%rax,%rbp,1),%edi
add    $0x6ed9eba1,%edi
mov    $0xf,%esi
call   1090 <shift@plt>
mov    %eax,%ebx
lea    0x690(%rip),%rdi
call   1030 <puts@plt>
lea    0x65a(%rip),%r12
mov    %r12,%rdi
mov    0x44(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x40(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x34(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x30(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x2c(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x28(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x24(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x20(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x1c(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x18(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x3c(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x14(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x10(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0xc(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    0x38(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
add    0x58(%rsp),%r15d
add    0x50(%rsp),%r14d
add    0x48(%rsp),%ebx
add    0x60(%rsp),%r13d
mov    %r13d,%edi
call   1070 <hexrev@plt>
mov    %eax,%r12d
mov    %ebx,%edi
call   1070 <hexrev@plt>
mov    %eax,%ebx
mov    %r14d,%edi
call   1070 <hexrev@plt>
mov    %eax,%ebp
mov    %r15d,%edi
call   1070 <hexrev@plt>
lea    0x53f(%rip),%rdi
mov    %r12d,%esi
mov    %ebx,%edx
mov    %ebp,%ecx
mov    %eax,%r8d
xor    %eax,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1060 <printf@plt>

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

LLVM IR (-O2):
@.str.1 = [5 x i8] c"%#x \00"
@.str.2 = [37 x i8] c"\0AThe MD4 Hash is:\0A %#x %#x %#x %#x \0A\00"
@str = [23 x i8] c"\0AThe input message is:\00"
define i32 @md4(i32* nocapture %0) {
%2 = load i32, i32* %0
%3 = getelementptr inbounds i32, i32* %0, i64 1
%4 = load i32, i32* %3
%5 = getelementptr inbounds i32, i32* %0, i64 2
%6 = load i32, i32* %5
%7 = getelementptr inbounds i32, i32* %0, i64 3
%8 = load i32, i32* %7
%9 = getelementptr inbounds i32, i32* %0, i64 4
%10 = load i32, i32* %9
%11 = getelementptr inbounds i32, i32* %0, i64 5
%12 = load i32, i32* %11
%13 = getelementptr inbounds i32, i32* %0, i64 6
%14 = load i32, i32* %13
%15 = getelementptr inbounds i32, i32* %0, i64 7
%16 = load i32, i32* %15
%17 = getelementptr inbounds i32, i32* %0, i64 8
%18 = load i32, i32* %17
%19 = getelementptr inbounds i32, i32* %0, i64 9
%20 = load i32, i32* %19
%21 = getelementptr inbounds i32, i32* %0, i64 10
%22 = load i32, i32* %21
%23 = getelementptr inbounds i32, i32* %0, i64 11
%24 = load i32, i32* %23
%25 = getelementptr inbounds i32, i32* %0, i64 12
%26 = load i32, i32* %25
%27 = getelementptr inbounds i32, i32* %0, i64 13
%28 = load i32, i32* %27
%29 = getelementptr inbounds i32, i32* %0, i64 14
%30 = load i32, i32* %29
%31 = getelementptr inbounds i32, i32* %0, i64 15
%32 = load i32, i32* %31
%33 = tail call i32 @hexrev(i32 19088743)
%34 = tail call i32 @hexrev(i32 -1985229329)
%35 = tail call i32 @hexrev(i32 -19088744)
%36 = tail call i32 @hexrev(i32 1985229328)
%37 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %34, i32 %35, i32 %36)
%38 = add i32 %37, %33
%39 = add i32 %38, %2
%40 = tail call i32 @shift(i32 %39, i32 3)
%41 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %40, i32 %34, i32 %35)
%42 = add i32 %41, %36
%43 = add i32 %42, %4
%44 = tail call i32 @shift(i32 %43, i32 7)
%45 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %44, i32 %40, i32 %34)
%46 = add i32 %45, %35
%47 = add i32 %46, %6
%48 = tail call i32 @shift(i32 %47, i32 11)
%49 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %48, i32 %44, i32 %40)
%50 = add i32 %49, %34
%51 = add i32 %50, %8
%52 = tail call i32 @shift(i32 %51, i32 19)
%53 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %52, i32 %48, i32 %44)
%54 = add i32 %53, %40
%55 = add i32 %54, %10
%56 = tail call i32 @shift(i32 %55, i32 3)
%57 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %56, i32 %52, i32 %48)
%58 = add i32 %57, %44
%59 = add i32 %58, %12
%60 = tail call i32 @shift(i32 %59, i32 7)
%61 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %60, i32 %56, i32 %52)
%62 = add i32 %61, %48
%63 = add i32 %62, %14
%64 = tail call i32 @shift(i32 %63, i32 11)
%65 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %64, i32 %60, i32 %56)
%66 = add i32 %65, %52
%67 = add i32 %66, %16
%68 = tail call i32 @shift(i32 %67, i32 19)
%69 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %68, i32 %64, i32 %60)
%70 = add i32 %69, %56
%71 = add i32 %70, %18
%72 = tail call i32 @shift(i32 %71, i32 3)
%73 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %72, i32 %68, i32 %64)
%74 = add i32 %73, %60
%75 = add i32 %74, %20
%76 = tail call i32 @shift(i32 %75, i32 7)
%77 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %76, i32 %72, i32 %68)
%78 = add i32 %77, %64
%79 = add i32 %78, %22
%80 = tail call i32 @shift(i32 %79, i32 11)
%81 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %80, i32 %76, i32 %72)
%82 = add i32 %81, %68
%83 = add i32 %82, %24
%84 = tail call i32 @shift(i32 %83, i32 19)
%85 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %84, i32 %80, i32 %76)
%86 = add i32 %85, %72
%87 = add i32 %86, %26
%88 = tail call i32 @shift(i32 %87, i32 3)
%89 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %88, i32 %84, i32 %80)
%90 = add i32 %89, %76
%91 = add i32 %90, %28
%92 = tail call i32 @shift(i32 %91, i32 7)
%93 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %92, i32 %88, i32 %84)
%94 = add i32 %93, %80
%95 = add i32 %94, %30
%96 = tail call i32 @shift(i32 %95, i32 11)
%97 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @f to i32 (i32, i32, i32, ...)*)(i32 %96, i32 %92, i32 %88)
%98 = add i32 %97, %84
%99 = add i32 %98, %32
%100 = tail call i32 @shift(i32 %99, i32 19)
%101 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %100, i32 %96, i32 %92)
%102 = add i32 %2, 1518500249
%103 = add i32 %102, %88
%104 = add i32 %103, %101
%105 = tail call i32 @shift(i32 %104, i32 3)
%106 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %105, i32 %100, i32 %96)
%107 = add i32 %10, 1518500249
%108 = add i32 %107, %92
%109 = add i32 %108, %106
%110 = tail call i32 @shift(i32 %109, i32 5)
%111 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %110, i32 %105, i32 %100)
%112 = add i32 %18, 1518500249
%113 = add i32 %112, %96
%114 = add i32 %113, %111
%115 = tail call i32 @shift(i32 %114, i32 9)
%116 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %115, i32 %110, i32 %105)
%117 = add i32 %26, 1518500249
%118 = add i32 %117, %100
%119 = add i32 %118, %116
%120 = tail call i32 @shift(i32 %119, i32 13)
%121 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %120, i32 %115, i32 %110)
%122 = add i32 %4, 1518500249
%123 = add i32 %122, %105
%124 = add i32 %123, %121
%125 = tail call i32 @shift(i32 %124, i32 3)
%126 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %125, i32 %120, i32 %115)
%127 = add i32 %12, 1518500249
%128 = add i32 %127, %110
%129 = add i32 %128, %126
%130 = tail call i32 @shift(i32 %129, i32 5)
%131 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %130, i32 %125, i32 %120)
%132 = add i32 %20, 1518500249
%133 = add i32 %132, %115
%134 = add i32 %133, %131
%135 = tail call i32 @shift(i32 %134, i32 9)
%136 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %135, i32 %130, i32 %125)
%137 = add i32 %28, 1518500249
%138 = add i32 %137, %120
%139 = add i32 %138, %136
%140 = tail call i32 @shift(i32 %139, i32 13)
%141 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %140, i32 %135, i32 %130)
%142 = add i32 %6, 1518500249
%143 = add i32 %142, %125
%144 = add i32 %143, %141
%145 = tail call i32 @shift(i32 %144, i32 3)
%146 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %145, i32 %140, i32 %135)
%147 = add i32 %14, 1518500249
%148 = add i32 %147, %130
%149 = add i32 %148, %146
%150 = tail call i32 @shift(i32 %149, i32 5)
%151 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %150, i32 %145, i32 %140)
%152 = add i32 %22, 1518500249
%153 = add i32 %152, %135
%154 = add i32 %153, %151
%155 = tail call i32 @shift(i32 %154, i32 9)
%156 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %155, i32 %150, i32 %145)
%157 = add i32 %30, 1518500249
%158 = add i32 %157, %140
%159 = add i32 %158, %156
%160 = tail call i32 @shift(i32 %159, i32 13)
%161 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %160, i32 %155, i32 %150)
%162 = add i32 %8, 1518500249
%163 = add i32 %162, %145
%164 = add i32 %163, %161
%165 = tail call i32 @shift(i32 %164, i32 3)
%166 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %165, i32 %160, i32 %155)
%167 = add i32 %16, 1518500249
%168 = add i32 %167, %150
%169 = add i32 %168, %166
%170 = tail call i32 @shift(i32 %169, i32 5)
%171 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %170, i32 %165, i32 %160)
%172 = add i32 %24, 1518500249
%173 = add i32 %172, %155
%174 = add i32 %173, %171
%175 = tail call i32 @shift(i32 %174, i32 9)
%176 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @g to i32 (i32, i32, i32, ...)*)(i32 %175, i32 %170, i32 %165)
%177 = add i32 %32, 1518500249
%178 = add i32 %177, %160
%179 = add i32 %178, %176
%180 = tail call i32 @shift(i32 %179, i32 13)
%181 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %180, i32 %175, i32 %170)
%182 = add i32 %2, 1859775393
%183 = add i32 %182, %165
%184 = add i32 %183, %181
%185 = tail call i32 @shift(i32 %184, i32 3)
%186 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %185, i32 %180, i32 %175)
%187 = add i32 %18, 1859775393
%188 = add i32 %187, %170
%189 = add i32 %188, %186
%190 = tail call i32 @shift(i32 %189, i32 9)
%191 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %190, i32 %185, i32 %180)
%192 = add i32 %10, 1859775393
%193 = add i32 %192, %175
%194 = add i32 %193, %191
%195 = tail call i32 @shift(i32 %194, i32 11)
%196 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %195, i32 %190, i32 %185)
%197 = add i32 %26, 1859775393
%198 = add i32 %197, %180
%199 = add i32 %198, %196
%200 = tail call i32 @shift(i32 %199, i32 15)
%201 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %200, i32 %195, i32 %190)
%202 = add i32 %6, 1859775393
%203 = add i32 %202, %185
%204 = add i32 %203, %201
%205 = tail call i32 @shift(i32 %204, i32 3)
%206 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %205, i32 %200, i32 %195)
%207 = add i32 %22, 1859775393
%208 = add i32 %207, %190
%209 = add i32 %208, %206
%210 = tail call i32 @shift(i32 %209, i32 9)
%211 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %210, i32 %205, i32 %200)
%212 = add i32 %14, 1859775393
%213 = add i32 %212, %195
%214 = add i32 %213, %211
%215 = tail call i32 @shift(i32 %214, i32 11)
%216 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %215, i32 %210, i32 %205)
%217 = add i32 %30, 1859775393
%218 = add i32 %217, %200
%219 = add i32 %218, %216
%220 = tail call i32 @shift(i32 %219, i32 15)
%221 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %220, i32 %215, i32 %210)
%222 = add i32 %4, 1859775393
%223 = add i32 %222, %205
%224 = add i32 %223, %221
%225 = tail call i32 @shift(i32 %224, i32 3)
%226 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %225, i32 %220, i32 %215)
%227 = add i32 %20, 1859775393
%228 = add i32 %227, %210
%229 = add i32 %228, %226
%230 = tail call i32 @shift(i32 %229, i32 9)
%231 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %230, i32 %225, i32 %220)
%232 = add i32 %12, 1859775393
%233 = add i32 %232, %215
%234 = add i32 %233, %231
%235 = tail call i32 @shift(i32 %234, i32 11)
%236 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %235, i32 %230, i32 %225)
%237 = add i32 %28, 1859775393
%238 = add i32 %237, %220
%239 = add i32 %238, %236
%240 = tail call i32 @shift(i32 %239, i32 15)
%241 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %240, i32 %235, i32 %230)
%242 = add i32 %8, 1859775393
%243 = add i32 %242, %225
%244 = add i32 %243, %241
%245 = tail call i32 @shift(i32 %244, i32 3)
%246 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %245, i32 %240, i32 %235)
%247 = add i32 %24, 1859775393
%248 = add i32 %247, %230
%249 = add i32 %248, %246
%250 = tail call i32 @shift(i32 %249, i32 9)
%251 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %250, i32 %245, i32 %240)
%252 = add i32 %16, 1859775393
%253 = add i32 %252, %235
%254 = add i32 %253, %251
%255 = tail call i32 @shift(i32 %254, i32 11)
%256 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @h to i32 (i32, i32, i32, ...)*)(i32 %255, i32 %250, i32 %245)
%257 = add i32 %32, 1859775393
%258 = add i32 %257, %240
%259 = add i32 %258, %256
%260 = tail call i32 @shift(i32 %259, i32 15)
%261 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str, i64 0, i64 0))
%262 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %2)
%263 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %4)
%264 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %6)
%265 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %8)
%266 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %10)
%267 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %12)
%268 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %14)
%269 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %16)
%270 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %18)
%271 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %20)
%272 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %22)
%273 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %24)
%274 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %26)
%275 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %28)
%276 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %30)
%277 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %32)
%278 = add i32 %250, %36
%279 = add i32 %255, %35
%280 = add i32 %260, %34
%281 = add i32 %245, %33
%282 = tail call i32 @hexrev(i32 %281)
%283 = tail call i32 @hexrev(i32 %280)
%284 = tail call i32 @hexrev(i32 %279)
%285 = tail call i32 @hexrev(i32 %278)
%286 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0), i32 %282, i32 %283, i32 %284, i32 %285)
ret i32 undef
}