void MD4Transform(unsigned long state[4], unsigned char block[64]) {
  unsigned long a = state[0], b = state[1], c = state[2], d = state[3], x[16];
  md4decode(x, block, 64);
  {
    (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[0]);
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[1]);
    (d) = ((((d)) << ((7))) | (((d)) >> (32 - ((7)))));
  };
  {
    (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[2]);
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[3]);
    (b) = ((((b)) << ((19))) | (((b)) >> (32 - ((19)))));
  };
  {
    (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[4]);
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[5]);
    (d) = ((((d)) << ((7))) | (((d)) >> (32 - ((7)))));
  };
  {
    (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[6]);
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[7]);
    (b) = ((((b)) << ((19))) | (((b)) >> (32 - ((19)))));
  };
  {
    (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[8]);
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[9]);
    (d) = ((((d)) << ((7))) | (((d)) >> (32 - ((7)))));
  };
  {
    (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[10]);
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[11]);
    (b) = ((((b)) << ((19))) | (((b)) >> (32 - ((19)))));
  };
  {
    (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (x[12]);
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (x[13]);
    (d) = ((((d)) << ((7))) | (((d)) >> (32 - ((7)))));
  };
  {
    (c) += ((((d)) & ((a))) | ((~(d)) & ((b)))) + (x[14]);
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (x[15]);
    (b) = ((((b)) << ((19))) | (((b)) >> (32 - ((19)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[0]) +
           (unsigned long)0x5a827999;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[4]) +
           (unsigned long)0x5a827999;
    (d) = ((((d)) << ((5))) | (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[8]) +
           (unsigned long)0x5a827999;
    (c) = ((((c)) << ((9))) | (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[12]) +
           (unsigned long)0x5a827999;
    (b) = ((((b)) << ((13))) | (((b)) >> (32 - ((13)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[1]) +
           (unsigned long)0x5a827999;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[5]) +
           (unsigned long)0x5a827999;
    (d) = ((((d)) << ((5))) | (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[9]) +
           (unsigned long)0x5a827999;
    (c) = ((((c)) << ((9))) | (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[13]) +
           (unsigned long)0x5a827999;
    (b) = ((((b)) << ((13))) | (((b)) >> (32 - ((13)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[2]) +
           (unsigned long)0x5a827999;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[6]) +
           (unsigned long)0x5a827999;
    (d) = ((((d)) << ((5))) | (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[10]) +
           (unsigned long)0x5a827999;
    (c) = ((((c)) << ((9))) | (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[14]) +
           (unsigned long)0x5a827999;
    (b) = ((((b)) << ((13))) | (((b)) >> (32 - ((13)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[3]) +
           (unsigned long)0x5a827999;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[7]) +
           (unsigned long)0x5a827999;
    (d) = ((((d)) << ((5))) | (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[11]) +
           (unsigned long)0x5a827999;
    (c) = ((((c)) << ((9))) | (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[15]) +
           (unsigned long)0x5a827999;
    (b) = ((((b)) << ((13))) | (((b)) >> (32 - ((13)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[0]) + (unsigned long)0x6ed9eba1;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[8]) + (unsigned long)0x6ed9eba1;
    (d) = ((((d)) << ((9))) | (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[4]) + (unsigned long)0x6ed9eba1;
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[12]) + (unsigned long)0x6ed9eba1;
    (b) = ((((b)) << ((15))) | (((b)) >> (32 - ((15)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[2]) + (unsigned long)0x6ed9eba1;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[10]) + (unsigned long)0x6ed9eba1;
    (d) = ((((d)) << ((9))) | (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[6]) + (unsigned long)0x6ed9eba1;
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[14]) + (unsigned long)0x6ed9eba1;
    (b) = ((((b)) << ((15))) | (((b)) >> (32 - ((15)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[1]) + (unsigned long)0x6ed9eba1;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[9]) + (unsigned long)0x6ed9eba1;
    (d) = ((((d)) << ((9))) | (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[5]) + (unsigned long)0x6ed9eba1;
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[13]) + (unsigned long)0x6ed9eba1;
    (b) = ((((b)) << ((15))) | (((b)) >> (32 - ((15)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[3]) + (unsigned long)0x6ed9eba1;
    (a) = ((((a)) << ((3))) | (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[11]) + (unsigned long)0x6ed9eba1;
    (d) = ((((d)) << ((9))) | (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[7]) + (unsigned long)0x6ed9eba1;
    (c) = ((((c)) << ((11))) | (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[15]) + (unsigned long)0x6ed9eba1;
    (b) = ((((b)) << ((15))) | (((b)) >> (32 - ((15)))));
  };
  state[0] += a;
  state[1] += b;
  state[2] += c;
  state[3] += d;
  memset((unsigned char *)x, 0, sizeof(x));
}


x86 assembly (clang, -O0):
<MD4Transform>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
mov    0x18(%rax),%rax
mov    %rax,-0x30(%rbp)
lea    -0xb0(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    $0x40,%edx
mov    $0x0,%al
call   1040 <md4decode@plt>
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0xb0(%rbp),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0xa8(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x7,%rax
mov    -0x30(%rbp),%rcx
shr    $0x19,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0xa0(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x98(%rbp),%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0x13,%rax
mov    -0x20(%rbp),%rcx
shr    $0xd,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0x90(%rbp),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0x88(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x7,%rax
mov    -0x30(%rbp),%rcx
shr    $0x19,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0x80(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x78(%rbp),%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0x13,%rax
mov    -0x20(%rbp),%rcx
shr    $0xd,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0x70(%rbp),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0x68(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x7,%rax
mov    -0x30(%rbp),%rcx
shr    $0x19,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0x60(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x58(%rbp),%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0x13,%rax
mov    -0x20(%rbp),%rcx
shr    $0xd,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0x50(%rbp),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0x48(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x7,%rax
mov    -0x30(%rbp),%rcx
shr    $0x19,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0x40(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
xor    $0xffffffffffffffff,%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x38(%rbp),%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0x13,%rax
mov    -0x20(%rbp),%rcx
shr    $0xd,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
mov    -0x28(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0xb0(%rbp),%rax
add    $0x5a827999,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
mov    -0x20(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0x90(%rbp),%rax
add    $0x5a827999,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x5,%rax
mov    -0x30(%rbp),%rcx
shr    $0x1b,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
mov    -0x18(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0x70(%rbp),%rax
add    $0x5a827999,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0x9,%rax
mov    -0x28(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
mov    -0x30(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x50(%rbp),%rax
add    $0x5a827999,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xd,%rax
mov    -0x20(%rbp),%rcx
shr    $0x13,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
mov    -0x28(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0xa8(%rbp),%rax
add    $0x5a827999,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
mov    -0x20(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0x88(%rbp),%rax
add    $0x5a827999,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x5,%rax
mov    -0x30(%rbp),%rcx
shr    $0x1b,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
mov    -0x18(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0x68(%rbp),%rax
add    $0x5a827999,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0x9,%rax
mov    -0x28(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
mov    -0x30(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x48(%rbp),%rax
add    $0x5a827999,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xd,%rax
mov    -0x20(%rbp),%rcx
shr    $0x13,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
mov    -0x28(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0xa0(%rbp),%rax
add    $0x5a827999,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
mov    -0x20(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0x80(%rbp),%rax
add    $0x5a827999,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x5,%rax
mov    -0x30(%rbp),%rcx
shr    $0x1b,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
mov    -0x18(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0x60(%rbp),%rax
add    $0x5a827999,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0x9,%rax
mov    -0x28(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
mov    -0x30(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x40(%rbp),%rax
add    $0x5a827999,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xd,%rax
mov    -0x20(%rbp),%rcx
shr    $0x13,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
and    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
mov    -0x28(%rbp),%rcx
and    -0x30(%rbp),%rcx
or     %rcx,%rax
add    -0x98(%rbp),%rax
add    $0x5a827999,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
mov    -0x20(%rbp),%rcx
and    -0x28(%rbp),%rcx
or     %rcx,%rax
add    -0x78(%rbp),%rax
add    $0x5a827999,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x5,%rax
mov    -0x30(%rbp),%rcx
shr    $0x1b,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
and    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
mov    -0x18(%rbp),%rcx
and    -0x20(%rbp),%rcx
or     %rcx,%rax
add    -0x58(%rbp),%rax
add    $0x5a827999,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0x9,%rax
mov    -0x28(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
and    -0x30(%rbp),%rax
mov    -0x28(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
mov    -0x30(%rbp),%rcx
and    -0x18(%rbp),%rcx
or     %rcx,%rax
add    -0x38(%rbp),%rax
add    $0x5a827999,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xd,%rax
mov    -0x20(%rbp),%rcx
shr    $0x13,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
add    -0xb0(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
add    -0x70(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x9,%rax
mov    -0x30(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
add    -0x90(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
add    -0x50(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xf,%rax
mov    -0x20(%rbp),%rcx
shr    $0x11,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
add    -0xa0(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
add    -0x60(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x9,%rax
mov    -0x30(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
add    -0x80(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
add    -0x40(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xf,%rax
mov    -0x20(%rbp),%rcx
shr    $0x11,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
add    -0xa8(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
add    -0x68(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x9,%rax
mov    -0x30(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
add    -0x88(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
add    -0x48(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xf,%rax
mov    -0x20(%rbp),%rcx
shr    $0x11,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
add    -0x98(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
shl    $0x3,%rax
mov    -0x18(%rbp),%rcx
shr    $0x1d,%rcx
or     %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
xor    -0x28(%rbp),%rax
add    -0x58(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
shl    $0x9,%rax
mov    -0x30(%rbp),%rcx
shr    $0x17,%rcx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
xor    -0x20(%rbp),%rax
add    -0x78(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
shl    $0xb,%rax
mov    -0x28(%rbp),%rcx
shr    $0x15,%rcx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
xor    -0x30(%rbp),%rax
xor    -0x18(%rbp),%rax
add    -0x38(%rbp),%rax
add    $0x6ed9eba1,%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
shl    $0xf,%rax
mov    -0x20(%rbp),%rcx
shr    $0x11,%rcx
or     %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rcx
mov    -0x8(%rbp),%rax
add    (%rax),%rcx
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rcx
mov    -0x8(%rbp),%rax
add    0x8(%rax),%rcx
mov    %rcx,0x8(%rax)
mov    -0x28(%rbp),%rcx
mov    -0x8(%rbp),%rax
add    0x10(%rax),%rcx
mov    %rcx,0x10(%rax)
mov    -0x30(%rbp),%rcx
mov    -0x8(%rbp),%rax
add    0x18(%rax),%rcx
mov    %rcx,0x18(%rax)
lea    -0xb0(%rbp),%rdi
xor    %esi,%esi
mov    $0x80,%edx
call   1030 <memset@plt>
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<MD4Transform>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x108,%rsp
mov    %rdi,0x70(%rsp)
mov    0x8(%rdi),%r12
mov    0x10(%rdi),%r14
mov    0x18(%rdi),%rbx
mov    %r14,%rbp
and    %r12,%rbp
add    (%rdi),%rbp
lea    0x80(%rsp),%rdi
mov    $0x40,%edx
xor    %eax,%eax
call   1030 <md4decode@plt>
mov    %r12,%r15
not    %r15
and    %rbx,%r15
add    %rbp,%r15
mov    0x80(%rsp),%r8
mov    0x88(%rsp),%r13
add    %r8,%r15
mov    %r8,0x10(%rsp)
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
and    %r12,%rax
mov    %r15,%rcx
not    %rcx
and    %r14,%rcx
add    %r13,%rbx
mov    %r13,0x40(%rsp)
add    %rcx,%rbx
add    %rax,%rbx
mov    %rbx,%rax
shl    $0x7,%rax
shr    $0x19,%rbx
or     %rax,%rbx
mov    %rbx,%rax
and    %r15,%rax
mov    %rbx,%rcx
not    %rcx
and    %r12,%rcx
mov    0x90(%rsp),%rdx
mov    %rdx,0x60(%rsp)
add    %rdx,%r14
add    %rcx,%r14
add    %rax,%r14
mov    %r14,%rax
shl    $0xb,%rax
shr    $0x15,%r14
or     %rax,%r14
mov    %r14,%rax
and    %rbx,%rax
mov    %r14,%rcx
not    %rcx
and    %r15,%rcx
mov    0x98(%rsp),%rdx
mov    %rdx,0x78(%rsp)
add    %rdx,%r12
add    %rcx,%r12
add    %rax,%r12
mov    %r12,%rax
shl    $0x13,%rax
shr    $0xd,%r12
or     %rax,%r12
mov    %r12,%rax
and    %r14,%rax
mov    %r12,%rcx
not    %rcx
and    %rbx,%rcx
mov    0xa0(%rsp),%rdx
add    %rdx,%r15
mov    %rdx,%r11
mov    %rdx,0x20(%rsp)
add    %rcx,%r15
add    %rax,%r15
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
and    %r12,%rax
mov    %r15,%rcx
not    %rcx
and    %r14,%rcx
mov    0xa8(%rsp),%rdx
add    %rdx,%rbx
mov    %rdx,%r10
mov    %rdx,0x48(%rsp)
add    %rcx,%rbx
add    %rax,%rbx
mov    %rbx,%rax
shl    $0x7,%rax
shr    $0x19,%rbx
or     %rax,%rbx
mov    %rbx,%rax
and    %r15,%rax
mov    %rbx,%rcx
not    %rcx
and    %r12,%rcx
mov    0xb0(%rsp),%rdx
mov    %rdx,0x58(%rsp)
add    %rdx,%r14
add    %rcx,%r14
add    %rax,%r14
mov    %r14,%rax
shl    $0xb,%rax
shr    $0x15,%r14
or     %rax,%r14
mov    %r14,%rax
and    %rbx,%rax
mov    %r14,%rcx
not    %rcx
and    %r15,%rcx
mov    0xb8(%rsp),%rdx
mov    %rdx,0x68(%rsp)
add    %rdx,%r12
add    %rcx,%r12
add    %rax,%r12
mov    %r12,%rax
shl    $0x13,%rax
shr    $0xd,%r12
or     %rax,%r12
mov    %r12,%rax
not    %rax
and    %rbx,%rax
mov    0xc0(%rsp),%rbp
add    %rbp,%r15
add    %rax,%r15
mov    %r12,%rax
and    %r14,%rax
add    %rax,%r15
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
not    %rax
and    %r14,%rax
mov    0xc8(%rsp),%rcx
add    %rcx,%rbx
mov    %rcx,%rdi
mov    %rcx,0x28(%rsp)
add    %rax,%rbx
mov    %r15,%rax
and    %r12,%rax
add    %rax,%rbx
mov    %rbx,%rax
shl    $0x7,%rax
shr    $0x19,%rbx
or     %rax,%rbx
mov    %rbx,%rax
not    %rax
and    %r12,%rax
mov    0xd0(%rsp),%rcx
mov    %rcx,0x30(%rsp)
add    %rcx,%r14
add    %rax,%r14
mov    %rbx,%rax
and    %r15,%rax
add    %rax,%r14
mov    %r14,%rax
shl    $0xb,%rax
shr    $0x15,%r14
or     %rax,%r14
mov    %r14,%rax
not    %rax
and    %r15,%rax
mov    0xd8(%rsp),%rcx
mov    %rcx,0x50(%rsp)
add    %rcx,%r12
add    %rax,%r12
mov    %r14,%rax
and    %rbx,%rax
add    %rax,%r12
mov    %r12,%rax
shl    $0x13,%rax
shr    $0xd,%r12
or     %rax,%r12
mov    %r12,%rax
not    %rax
and    %rbx,%rax
mov    0xe0(%rsp),%rdx
add    %rdx,%r15
add    %rax,%r15
mov    %r12,%rax
and    %r14,%rax
add    %rax,%r15
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
not    %rax
and    %r14,%rax
mov    0xe8(%rsp),%rcx
add    %rcx,%rbx
mov    %rcx,%rsi
mov    %rcx,0x38(%rsp)
add    %rax,%rbx
mov    %r15,%rax
and    %r12,%rax
add    %rax,%rbx
mov    %rbx,%rax
shl    $0x7,%rax
shr    $0x19,%rbx
or     %rax,%rbx
mov    %rbx,%rax
not    %rax
and    %r12,%rax
mov    0xf0(%rsp),%r9
add    %r9,%r14
mov    %r9,0x8(%rsp)
add    %rax,%r14
mov    %rbx,%rax
and    %r15,%rax
add    %rax,%r14
mov    %r14,%rax
shl    $0xb,%rax
shr    $0x15,%r14
or     %rax,%r14
mov    %r14,%rax
not    %rax
and    %r15,%rax
mov    0xf8(%rsp),%rcx
mov    %rcx,0x18(%rsp)
add    %rcx,%r12
add    %rax,%r12
mov    %r14,%rcx
and    %rbx,%rcx
add    %rcx,%r12
mov    %r12,%rax
shl    $0x13,%rax
shr    $0xd,%r12
or     %rax,%r12
mov    %r12,%rax
and    %rbx,%rax
or     %rcx,%rax
mov    %r12,%rcx
and    %r14,%rcx
or     %rcx,%rax
add    %r8,%r15
add    %rax,%r15
add    $0x5a827999,%r15
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
and    %r14,%rax
or     %rcx,%rax
mov    %r15,%rcx
and    %r12,%rcx
or     %rcx,%rax
add    %r11,%rbx
add    %rax,%rbx
add    $0x5a827999,%rbx
mov    %rbx,%rax
shl    $0x5,%rax
shr    $0x1b,%rbx
or     %rax,%rbx
mov    %rbx,%rax
and    %r12,%rax
or     %rcx,%rax
mov    %rbx,%rcx
and    %r15,%rcx
or     %rcx,%rax
add    %rbp,%r14
add    %rax,%r14
add    $0x5a827999,%r14
mov    %r14,%rax
shl    $0x9,%rax
shr    $0x17,%r14
or     %rax,%r14
mov    %r14,%rax
and    %r15,%rax
or     %rcx,%rax
mov    %r14,%rcx
and    %rbx,%rcx
or     %rcx,%rax
add    %rdx,%r12
add    %rax,%r12
add    $0x5a827999,%r12
mov    %r12,%rax
shl    $0xd,%rax
shr    $0x13,%r12
or     %rax,%r12
mov    %r12,%rax
and    %rbx,%rax
or     %rcx,%rax
mov    %r12,%rcx
and    %r14,%rcx
or     %rcx,%rax
add    %r13,%r15
add    %rax,%r15
add    $0x5a827999,%r15
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
and    %r14,%rax
or     %rcx,%rax
mov    %r15,%rcx
and    %r12,%rcx
or     %rcx,%rax
add    %r10,%rbx
add    %rax,%rbx
add    $0x5a827999,%rbx
mov    %rbx,%rax
shl    $0x5,%rax
shr    $0x1b,%rbx
or     %rax,%rbx
mov    %rbx,%rax
and    %r12,%rax
or     %rcx,%rax
mov    %rbx,%rcx
and    %r15,%rcx
or     %rcx,%rax
add    %rdi,%r14
add    %rax,%r14
add    $0x5a827999,%r14
mov    %r14,%rax
shl    $0x9,%rax
shr    $0x17,%r14
or     %rax,%r14
mov    %r14,%rax
and    %r15,%rax
or     %rcx,%rax
mov    %r14,%rcx
and    %rbx,%rcx
or     %rcx,%rax
add    %rsi,%r12
add    %rax,%r12
add    $0x5a827999,%r12
mov    %r12,%rax
shl    $0xd,%rax
shr    $0x13,%r12
or     %rax,%r12
mov    %r12,%rax
and    %rbx,%rax
or     %rcx,%rax
mov    %r12,%rcx
and    %r14,%rcx
or     %rcx,%rax
mov    0x60(%rsp),%rdi
add    %rdi,%r15
add    %rax,%r15
add    $0x5a827999,%r15
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
and    %r14,%rax
or     %rcx,%rax
mov    %r15,%rcx
and    %r12,%rcx
or     %rcx,%rax
mov    0x58(%rsp),%r8
add    %r8,%rbx
add    %rax,%rbx
add    $0x5a827999,%rbx
mov    %rbx,%rax
shl    $0x5,%rax
shr    $0x1b,%rbx
or     %rax,%rbx
mov    %rbx,%rax
and    %r12,%rax
or     %rcx,%rax
mov    %rbx,%rcx
and    %r15,%rcx
or     %rcx,%rax
mov    0x30(%rsp),%rsi
add    %rsi,%r14
add    %rax,%r14
add    $0x5a827999,%r14
mov    %r14,%rax
shl    $0x9,%rax
shr    $0x17,%r14
or     %rax,%r14
mov    %r14,%rax
and    %r15,%rax
or     %rcx,%rax
mov    %r14,%rcx
and    %rbx,%rcx
or     %rcx,%rax
add    %r9,%r12
add    %rax,%r12
add    $0x5a827999,%r12
mov    %r12,%rax
shl    $0xd,%rax
shr    $0x13,%r12
or     %rax,%r12
mov    %r12,%rax
and    %rbx,%rax
or     %rcx,%rax
mov    %r12,%rcx
and    %r14,%rcx
or     %rcx,%rax
mov    0x78(%rsp),%r10
add    %r10,%r15
add    %rax,%r15
add    $0x5a827999,%r15
lea    0x0(,%r15,8),%rax
shr    $0x1d,%r15
or     %rax,%r15
mov    %r15,%rax
and    %r14,%rax
or     %rcx,%rax
mov    %r15,%rcx
and    %r12,%rcx
or     %rcx,%rax
mov    0x68(%rsp),%r13
add    %r13,%rbx
add    %rax,%rbx
add    $0x5a827999,%rbx
mov    %rbx,%rax
shl    $0x5,%rax
shr    $0x1b,%rbx
or     %rax,%rbx
mov    %rbx,%rax
and    %r12,%rax
or     %rcx,%rax
mov    %rbx,%rcx
and    %r15,%rcx
or     %rcx,%rax
mov    0x50(%rsp),%r9
add    %r9,%r14
add    %rax,%r14
add    $0x5a827999,%r14
mov    %r14,%rax
shl    $0x9,%rax
shr    $0x17,%r14
or     %rax,%r14
mov    %rbx,%rax
or     %r15,%rax
and    %r14,%rax
or     %rcx,%rax
mov    0x18(%rsp),%r11
add    %r11,%r12
add    %rax,%r12
add    $0x5a827999,%r12
mov    %r12,%rax
shl    $0xd,%rax
shr    $0x13,%r12
or     %rax,%r12
add    0x10(%rsp),%r15
mov    %r12,%rcx
xor    %r14,%rcx
mov    %rcx,%rax
xor    %rbx,%rax
add    %r15,%rax
add    $0x6ed9eba1,%rax
lea    0x0(,%rax,8),%r15
shr    $0x1d,%rax
or     %r15,%rax
add    %rbp,%rbx
xor    %rax,%rcx
lea    (%rcx,%rbx,1),%r15
add    $0x6ed9eba1,%r15
mov    %r15,%rcx
shl    $0x9,%rcx
shr    $0x17,%r15
or     %rcx,%r15
add    0x20(%rsp),%r14
mov    %rax,%rcx
xor    %r12,%rcx
xor    %r15,%rcx
lea    (%rcx,%r14,1),%rbp
add    $0x6ed9eba1,%rbp
mov    %rbp,%rcx
shl    $0xb,%rcx
shr    $0x15,%rbp
or     %rcx,%rbp
add    %rdx,%r12
mov    %r15,%rcx
xor    %rax,%rcx
xor    %rbp,%rcx
add    %r12,%rcx
add    $0x6ed9eba1,%rcx
mov    %rcx,%rdx
shl    $0xf,%rdx
shr    $0x11,%rcx
or     %rdx,%rcx
add    %rdi,%rax
mov    %rbp,%rdx
xor    %r15,%rdx
xor    %rcx,%rdx
lea    (%rdx,%rax,1),%rbx
add    $0x6ed9eba1,%rbx
lea    0x0(,%rbx,8),%rax
shr    $0x1d,%rbx
or     %rax,%rbx
add    %rsi,%r15
mov    %rcx,%rax
xor    %rbp,%rax
xor    %rbx,%rax
lea    (%rax,%r15,1),%rdx
add    $0x6ed9eba1,%rdx
mov    %rdx,%rax
shl    $0x9,%rax
shr    $0x17,%rdx
or     %rax,%rdx
add    %r8,%rbp
mov    %rbx,%rax
xor    %rcx,%rax
xor    %rdx,%rax
add    %rax,%rbp
add    $0x6ed9eba1,%rbp
mov    %rbp,%rax
shl    $0xb,%rax
shr    $0x15,%rbp
or     %rax,%rbp
add    0x8(%rsp),%rcx
mov    %rdx,%rax
xor    %rbx,%rax
xor    %rbp,%rax
add    %rax,%rcx
add    $0x6ed9eba1,%rcx
mov    %rcx,%rax
shl    $0xf,%rax
shr    $0x11,%rcx
or     %rax,%rcx
add    0x40(%rsp),%rbx
mov    %rbp,%rax
xor    %rdx,%rax
xor    %rcx,%rax
add    %rax,%rbx
add    $0x6ed9eba1,%rbx
lea    0x0(,%rbx,8),%rax
shr    $0x1d,%rbx
or     %rax,%rbx
add    0x28(%rsp),%rdx
mov    %rcx,%rax
xor    %rbp,%rax
xor    %rbx,%rax
add    %rax,%rdx
add    $0x6ed9eba1,%rdx
mov    %rdx,%rax
shl    $0x9,%rax
shr    $0x17,%rdx
or     %rax,%rdx
add    0x48(%rsp),%rbp
mov    %rbx,%rax
xor    %rcx,%rax
xor    %rdx,%rax
add    %rbp,%rax
add    $0x6ed9eba1,%rax
mov    %rax,%rsi
shl    $0xb,%rsi
shr    $0x15,%rax
or     %rsi,%rax
add    0x38(%rsp),%rcx
mov    %rdx,%rsi
xor    %rbx,%rsi
xor    %rax,%rsi
add    %rsi,%rcx
add    $0x6ed9eba1,%rcx
mov    %rcx,%rsi
shl    $0xf,%rsi
shr    $0x11,%rcx
or     %rsi,%rcx
add    %r10,%rbx
mov    %rax,%rsi
xor    %rdx,%rsi
xor    %rcx,%rsi
add    %rbx,%rsi
add    $0x6ed9eba1,%rsi
lea    0x0(,%rsi,8),%rdi
shr    $0x1d,%rsi
or     %rdi,%rsi
add    %r9,%rdx
mov    %rcx,%rdi
xor    %rax,%rdi
xor    %rsi,%rdi
add    %rdi,%rdx
add    $0x6ed9eba1,%rdx
mov    %rdx,%rdi
shl    $0x9,%rdi
shr    $0x17,%rdx
or     %rdi,%rdx
add    %r13,%rax
mov    %rdx,%rdi
mov    0x70(%rsp),%rbp
add    %rsi,0x0(%rbp)
xor    %rsi,%rdi
xor    %rcx,%rsi
xor    %rdx,%rsi
add    %rsi,%rax
add    $0x6ed9eba1,%rax
mov    %rax,%rsi
shl    $0xb,%rsi
shr    $0x15,%rax
or     %rsi,%rax
add    %r11,%rcx
xor    %rax,%rdi
add    %rdi,%rcx
add    $0x6ed9eba1,%rcx
mov    %rcx,%rsi
shl    $0xf,%rsi
shr    $0x11,%rcx
or     %rsi,%rcx
add    %rcx,0x8(%rbp)
add    %rax,0x10(%rbp)
add    %rdx,0x18(%rbp)
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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