void md4_transform(unsigned int *hash, unsigned int const *in) {
  unsigned int a, b, c, d;
  a = hash[0];
  b = hash[1];
  c = hash[2];
  d = hash[3];
  ROUND1(&a, b, c, d, in[0], 3);
  ROUND1(&d, a, b, c, in[1], 7);
  ROUND1(&c, d, a, b, in[2], 11);
  ROUND1(&b, c, d, a, in[3], 19);
  ROUND1(&a, b, c, d, in[4], 3);
  ROUND1(&d, a, b, c, in[5], 7);
  ROUND1(&c, d, a, b, in[6], 11);
  ROUND1(&b, c, d, a, in[7], 19);
  ROUND1(&a, b, c, d, in[8], 3);
  ROUND1(&d, a, b, c, in[9], 7);
  ROUND1(&c, d, a, b, in[10], 11);
  ROUND1(&b, c, d, a, in[11], 19);
  ROUND1(&a, b, c, d, in[12], 3);
  ROUND1(&d, a, b, c, in[13], 7);
  ROUND1(&c, d, a, b, in[14], 11);
  ROUND1(&b, c, d, a, in[15], 19);
  ROUND2(&a, b, c, d, in[0], 3);
  ROUND2(&d, a, b, c, in[4], 5);
  ROUND2(&c, d, a, b, in[8], 9);
  ROUND2(&b, c, d, a, in[12], 13);
  ROUND2(&a, b, c, d, in[1], 3);
  ROUND2(&d, a, b, c, in[5], 5);
  ROUND2(&c, d, a, b, in[9], 9);
  ROUND2(&b, c, d, a, in[13], 13);
  ROUND2(&a, b, c, d, in[2], 3);
  ROUND2(&d, a, b, c, in[6], 5);
  ROUND2(&c, d, a, b, in[10], 9);
  ROUND2(&b, c, d, a, in[14], 13);
  ROUND2(&a, b, c, d, in[3], 3);
  ROUND2(&d, a, b, c, in[7], 5);
  ROUND2(&c, d, a, b, in[11], 9);
  ROUND2(&b, c, d, a, in[15], 13);
  ROUND3(&a, b, c, d, in[0], 3);
  ROUND3(&d, a, b, c, in[8], 9);
  ROUND3(&c, d, a, b, in[4], 11);
  ROUND3(&b, c, d, a, in[12], 15);
  ROUND3(&a, b, c, d, in[2], 3);
  ROUND3(&d, a, b, c, in[10], 9);
  ROUND3(&c, d, a, b, in[6], 11);
  ROUND3(&b, c, d, a, in[14], 15);
  ROUND3(&a, b, c, d, in[1], 3);
  ROUND3(&d, a, b, c, in[9], 9);
  ROUND3(&c, d, a, b, in[5], 11);
  ROUND3(&b, c, d, a, in[13], 15);
  ROUND3(&a, b, c, d, in[3], 3);
  ROUND3(&d, a, b, c, in[11], 9);
  ROUND3(&c, d, a, b, in[7], 11);
  ROUND3(&b, c, d, a, in[15], 15);
  hash[0] += a;
  hash[1] += b;
  hash[2] += c;
  hash[3] += d;
}


x86 assembly (clang, -O0):
<md4_transform>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
mov    0xc(%rax),%eax
mov    %eax,-0x20(%rbp)
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x7,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0x13,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x7,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0x13,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x7,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0x13,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x7,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0x13,%r9d
mov    $0x0,%al
call   1030 <ROUND1@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x5,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xd,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x5,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xd,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x5,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xd,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x5,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xd,%r9d
mov    $0x0,%al
call   1050 <ROUND2@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xf,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xf,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xf,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%r8d
lea    -0x14(%rbp),%rdi
mov    $0x3,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%r8d
lea    -0x20(%rbp),%rdi
mov    $0x9,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x20(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%r8d
lea    -0x1c(%rbp),%rdi
mov    $0xb,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%r8d
lea    -0x18(%rbp),%rdi
mov    $0xf,%r9d
mov    $0x0,%al
call   1040 <ROUND3@plt>
mov    -0x14(%rbp),%ecx
mov    -0x8(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x18(%rbp),%ecx
mov    -0x8(%rbp),%rax
add    0x4(%rax),%ecx
mov    %ecx,0x4(%rax)
mov    -0x1c(%rbp),%ecx
mov    -0x8(%rbp),%rax
add    0x8(%rax),%ecx
mov    %ecx,0x8(%rax)
mov    -0x20(%rbp),%ecx
mov    -0x8(%rbp),%rax
add    0xc(%rax),%ecx
mov    %ecx,0xc(%rax)
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<md4_transform>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rsi,%rbx
mov    %rdi,%r14
mov    (%rdi),%eax
mov    %eax,0x8(%rsp)
mov    0x4(%rdi),%esi
mov    %esi,0x14(%rsp)
mov    0x8(%rdi),%edx
mov    %edx,0x10(%rsp)
mov    0xc(%rdi),%ecx
mov    %ecx,0xc(%rsp)
mov    (%rbx),%r8d
lea    0x8(%rsp),%r15
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x4(%rbx),%r8d
lea    0xc(%rsp),%r12
mov    %r12,%rdi
mov    $0x7,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x8(%rbx),%r8d
lea    0x10(%rsp),%r13
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0xc(%rbx),%r8d
lea    0x14(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x13,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0x10(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x14(%rbx),%r8d
mov    %r12,%rdi
mov    $0x7,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x18(%rbx),%r8d
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x1c(%rbx),%r8d
mov    %rbp,%rdi
mov    $0x13,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0x20(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x24(%rbx),%r8d
mov    %r12,%rdi
mov    $0x7,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x28(%rbx),%r8d
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x2c(%rbx),%r8d
mov    %rbp,%rdi
mov    $0x13,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0x30(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x34(%rbx),%r8d
mov    %r12,%rdi
mov    $0x7,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x38(%rbx),%r8d
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x3c(%rbx),%r8d
mov    %rbp,%rdi
mov    $0x13,%r9d
xor    %eax,%eax
call   1030 <ROUND1@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    (%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x10(%rbx),%r8d
mov    %r12,%rdi
mov    $0x5,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x20(%rbx),%r8d
mov    %r13,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x30(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xd,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0x4(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x14(%rbx),%r8d
mov    %r12,%rdi
mov    $0x5,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x24(%rbx),%r8d
mov    %r13,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x34(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xd,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0x8(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x18(%rbx),%r8d
mov    %r12,%rdi
mov    $0x5,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x28(%rbx),%r8d
mov    %r13,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x38(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xd,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0xc(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x1c(%rbx),%r8d
mov    %r12,%rdi
mov    $0x5,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x2c(%rbx),%r8d
mov    %r13,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x3c(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xd,%r9d
xor    %eax,%eax
call   1050 <ROUND2@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    (%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x20(%rbx),%r8d
mov    %r12,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x10(%rbx),%r8d
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x30(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xf,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0x8(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x28(%rbx),%r8d
mov    %r12,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x18(%rbx),%r8d
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x38(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xf,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0x4(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x24(%rbx),%r8d
mov    %r12,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x14(%rbx),%r8d
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x34(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xf,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x14(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0xc(%rsp),%ecx
mov    0xc(%rbx),%r8d
mov    %r15,%rdi
mov    $0x3,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x8(%rsp),%esi
mov    0x14(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x2c(%rbx),%r8d
mov    %r12,%rdi
mov    $0x9,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0xc(%rsp),%esi
mov    0x8(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    0x1c(%rbx),%r8d
mov    %r13,%rdi
mov    $0xb,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
mov    0x10(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x3c(%rbx),%r8d
mov    %rbp,%rdi
mov    $0xf,%r9d
xor    %eax,%eax
call   1040 <ROUND3@plt>
movdqu (%r14),%xmm0
movd   0xc(%rsp),%xmm1
movd   0x10(%rsp),%xmm2
punpckldq %xmm1,%xmm2
movd   0x14(%rsp),%xmm1
movd   0x8(%rsp),%xmm3
punpckldq %xmm1,%xmm3
punpcklqdq %xmm2,%xmm3
paddd  %xmm0,%xmm3
movdqu %xmm3,(%r14)
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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