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

/* Forward declarations */

/* Type definitions */
typedef int uint8_t;
typedef int int64_t;
typedef int int32_t;
typedef int /*<<< orphan*/ input;

/* Variables and functions */
void fcontract(uint8_t *output, int64_t *input) {
  int i;
  int j;
  for (j = 0; j < 2; ++j) {
    for (i = 0; i < 9; ++i) {
      if ((i & 1) == 1) {
        const int32_t mask = (int32_t)(input[i]) >> 31;
        const int32_t carry = -(((int32_t)(input[i]) & mask) >> 25);
        input[i] = (int32_t)(input[i]) + (carry << 25);
        input[i + 1] = (int32_t)(input[i + 1]) - carry;
      } else {
        const int32_t mask = (int32_t)(input[i]) >> 31;
        const int32_t carry = -(((int32_t)(input[i]) & mask) >> 26);
        input[i] = (int32_t)(input[i]) + (carry << 26);
        input[i + 1] = (int32_t)(input[i + 1]) - carry;
      }
    }
    const int32_t mask = (int32_t)(input[9]) >> 31;
    const int32_t carry = -(((int32_t)(input[9]) & mask) >> 25);
    input[9] = (int32_t)(input[9]) + (carry << 25);
    input[0] = (int32_t)(input[0]) - (carry * 19);
  }
  const int32_t mask = (int32_t)(input[0]) >> 31;
  const int32_t carry = -(((int32_t)(input[0]) & mask) >> 26);
  input[0] = (int32_t)(input[0]) + (carry << 26);
  input[1] = (int32_t)(input[1]) - carry;
  input[1] <<= 2;
  input[2] <<= 3;
  input[3] <<= 5;
  input[4] <<= 6;
  input[6] <<= 1;
  input[7] <<= 3;
  input[8] <<= 4;
  input[9] <<= 6;
  output[0] = 0;
  output[16] = 0;
  output[0 + 0] |= input[0] & 0xff;
  output[0 + 1] = (input[0] >> 8) & 0xff;
  output[0 + 2] = (input[0] >> 16) & 0xff;
  output[0 + 3] = (input[0] >> 24) & 0xff;
  ;
  output[3 + 0] |= input[1] & 0xff;
  output[3 + 1] = (input[1] >> 8) & 0xff;
  output[3 + 2] = (input[1] >> 16) & 0xff;
  output[3 + 3] = (input[1] >> 24) & 0xff;
  ;
  output[6 + 0] |= input[2] & 0xff;
  output[6 + 1] = (input[2] >> 8) & 0xff;
  output[6 + 2] = (input[2] >> 16) & 0xff;
  output[6 + 3] = (input[2] >> 24) & 0xff;
  ;
  output[9 + 0] |= input[3] & 0xff;
  output[9 + 1] = (input[3] >> 8) & 0xff;
  output[9 + 2] = (input[3] >> 16) & 0xff;
  output[9 + 3] = (input[3] >> 24) & 0xff;
  ;
  output[12 + 0] |= input[4] & 0xff;
  output[12 + 1] = (input[4] >> 8) & 0xff;
  output[12 + 2] = (input[4] >> 16) & 0xff;
  output[12 + 3] = (input[4] >> 24) & 0xff;
  ;
  output[16 + 0] |= input[5] & 0xff;
  output[16 + 1] = (input[5] >> 8) & 0xff;
  output[16 + 2] = (input[5] >> 16) & 0xff;
  output[16 + 3] = (input[5] >> 24) & 0xff;
  ;
  output[19 + 0] |= input[6] & 0xff;
  output[19 + 1] = (input[6] >> 8) & 0xff;
  output[19 + 2] = (input[6] >> 16) & 0xff;
  output[19 + 3] = (input[6] >> 24) & 0xff;
  ;
  output[22 + 0] |= input[7] & 0xff;
  output[22 + 1] = (input[7] >> 8) & 0xff;
  output[22 + 2] = (input[7] >> 16) & 0xff;
  output[22 + 3] = (input[7] >> 24) & 0xff;
  ;
  output[25 + 0] |= input[8] & 0xff;
  output[25 + 1] = (input[8] >> 8) & 0xff;
  output[25 + 2] = (input[8] >> 16) & 0xff;
  output[25 + 3] = (input[8] >> 24) & 0xff;
  ;
  output[28 + 0] |= input[9] & 0xff;
  output[28 + 1] = (input[9] >> 8) & 0xff;
  output[28 + 2] = (input[9] >> 16) & 0xff;
  output[28 + 3] = (input[9] >> 24) & 0xff;
  ;
}


x86 assembly (clang, -O0):
<fcontract>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x2,-0x18(%rbp)
jge    1280 <fcontract+0x180>
movl   $0x0,-0x14(%rbp)
cmpl   $0x9,-0x14(%rbp)
jge    1229 <fcontract+0x129>
mov    -0x14(%rbp),%eax
and    $0x1,%eax
cmp    $0x1,%eax
jne    11ac <fcontract+0xac>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1f,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
and    -0x1c(%rbp),%ecx
sar    $0x19,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%eax
shl    $0x19,%eax
add    %eax,%edx
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1216 <fcontract+0x116>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1f,%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
and    -0x24(%rbp),%ecx
sar    $0x1a,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x28(%rbp),%eax
shl    $0x1a,%eax
add    %eax,%edx
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    -0x28(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
jmp    121b <fcontract+0x11b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1124 <fcontract+0x24>
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
sar    $0x1f,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
and    -0x2c(%rbp),%ecx
sar    $0x19,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
mov    -0x30(%rbp),%eax
shl    $0x19,%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x24(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
imul   $0x13,-0x30(%rbp),%eax
sub    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1113 <fcontract+0x13>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
sar    $0x1f,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
and    -0x34(%rbp),%ecx
sar    $0x1a,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    -0x38(%rbp),%eax
shl    $0x1a,%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
sub    -0x38(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
shl    $0x2,%ecx
mov    %ecx,0x4(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
shl    $0x3,%ecx
mov    %ecx,0x8(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
shl    $0x5,%ecx
mov    %ecx,0xc(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
shl    $0x6,%ecx
mov    %ecx,0x10(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
shl    $0x1,%ecx
mov    %ecx,0x18(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
shl    $0x3,%ecx
mov    %ecx,0x1c(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
shl    $0x4,%ecx
mov    %ecx,0x20(%rax)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
shl    $0x6,%ecx
mov    %ecx,0x24(%rax)
mov    -0x8(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x8(%rbp),%rax
movl   $0x0,0x40(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0xc(%rax),%ecx
mov    %ecx,0xc(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x18(%rax),%ecx
mov    %ecx,0x18(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x20(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x24(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x24(%rax),%ecx
mov    %ecx,0x24(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x28(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x2c(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x30(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x30(%rax),%ecx
mov    %ecx,0x30(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x34(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x38(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x3c(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x40(%rax),%ecx
mov    %ecx,0x40(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x44(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x48(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4c(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x4c(%rax),%ecx
mov    %ecx,0x4c(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x50(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x54(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x58(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x58(%rax),%ecx
mov    %ecx,0x58(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x5c(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x60(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x64(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x64(%rax),%ecx
mov    %ecx,0x64(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x68(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x6c(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x70(%rax)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
or     0x70(%rax),%ecx
mov    %ecx,0x70(%rax)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
sar    $0x8,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x74(%rax)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
sar    $0x10,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x78(%rax)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
sar    $0x18,%ecx
and    $0xff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x7c(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<fcontract>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    (%rsi),%r10d
mov    %r10d,%edx
sar    $0x1f,%edx
and    %r10d,%edx
mov    %edx,%ebp
sar    $0x1a,%ebp
and    $0xfc000000,%edx
sub    %edx,%r10d
add    0x4(%rsi),%ebp
mov    %ebp,%ecx
sar    $0x1f,%ecx
and    %ebp,%ecx
mov    %ecx,%edx
sar    $0x19,%edx
and    $0xfe000000,%ecx
sub    %ecx,%ebp
add    0x8(%rsi),%edx
mov    %edx,%ecx
sar    $0x1f,%ecx
and    %edx,%ecx
mov    %ecx,%r8d
sar    $0x1a,%r8d
and    $0xfc000000,%ecx
sub    %ecx,%edx
add    0xc(%rsi),%r8d
mov    %r8d,%ecx
sar    $0x1f,%ecx
and    %r8d,%ecx
mov    %ecx,%r9d
sar    $0x19,%r9d
and    $0xfe000000,%ecx
add    0x10(%rsi),%r9d
sub    %ecx,%r8d
mov    %r9d,%ecx
sar    $0x1f,%ecx
and    %r9d,%ecx
mov    %ecx,%ebx
sar    $0x1a,%ebx
and    $0xfc000000,%ecx
sub    %ecx,%r9d
add    0x14(%rsi),%ebx
mov    %ebx,%ecx
sar    $0x1f,%ecx
and    %ebx,%ecx
mov    %ecx,%r11d
sar    $0x19,%r11d
and    $0xfe000000,%ecx
sub    %ecx,%ebx
add    0x18(%rsi),%r11d
mov    %r11d,%ecx
sar    $0x1f,%ecx
and    %r11d,%ecx
mov    %ecx,%r12d
sar    $0x1a,%r12d
and    $0xfc000000,%ecx
sub    %ecx,%r11d
add    0x1c(%rsi),%r12d
mov    %r12d,%ecx
sar    $0x1f,%ecx
and    %r12d,%ecx
mov    %ecx,%r13d
sar    $0x19,%r13d
and    $0xfe000000,%ecx
add    0x20(%rsi),%r13d
sub    %ecx,%r12d
mov    %r13d,%ecx
sar    $0x1f,%ecx
and    %r13d,%ecx
mov    %ecx,%r14d
sar    $0x1a,%r14d
and    $0xfc000000,%ecx
sub    %ecx,%r13d
add    0x24(%rsi),%r14d
mov    %r14d,%ecx
sar    $0x1f,%ecx
and    %r14d,%ecx
mov    %ecx,%eax
sar    $0x19,%eax
and    $0xfe000000,%ecx
sub    %ecx,%r14d
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,2),%r15d
add    %r10d,%r15d
mov    %r15d,%ecx
sar    $0x1f,%ecx
and    %r15d,%ecx
mov    %ecx,%eax
sar    $0x1a,%eax
add    %ebp,%eax
and    $0xfc000000,%ecx
sub    %ecx,%r15d
mov    %eax,%ebp
sar    $0x1f,%ebp
and    %eax,%ebp
mov    %ebp,%ecx
sar    $0x19,%ecx
add    %edx,%ecx
and    $0xfe000000,%ebp
sub    %ebp,%eax
mov    %ecx,%ebp
sar    $0x1f,%ebp
and    %ecx,%ebp
mov    %ebp,%edx
sar    $0x1a,%edx
add    %r8d,%edx
and    $0xfc000000,%ebp
sub    %ebp,%ecx
mov    %edx,%ebp
sar    $0x1f,%ebp
and    %edx,%ebp
mov    %ebp,%r8d
sar    $0x19,%r8d
add    %r9d,%r8d
and    $0xfe000000,%ebp
sub    %ebp,%edx
mov    %r8d,%ebp
sar    $0x1f,%ebp
and    %r8d,%ebp
mov    %ebp,%r10d
sar    $0x1a,%r10d
add    %ebx,%r10d
and    $0xfc000000,%ebp
sub    %ebp,%r8d
mov    %r10d,%ebx
sar    $0x1f,%ebx
and    %r10d,%ebx
mov    %ebx,%r9d
sar    $0x19,%r9d
add    %r11d,%r9d
and    $0xfe000000,%ebx
sub    %ebx,%r10d
mov    %r9d,%ebx
sar    $0x1f,%ebx
and    %r9d,%ebx
mov    %ebx,%r11d
sar    $0x1a,%r11d
add    %r12d,%r11d
and    $0xfc000000,%ebx
sub    %ebx,%r9d
mov    %r11d,%ebx
sar    $0x1f,%ebx
and    %r11d,%ebx
mov    %ebx,%r12d
sar    $0x19,%r12d
add    %r13d,%r12d
and    $0xfe000000,%ebx
sub    %ebx,%r11d
mov    %r12d,%ebp
sar    $0x1f,%ebp
and    %r12d,%ebp
mov    %ebp,%r13d
sar    $0x1a,%r13d
add    %r14d,%r13d
and    $0xfc000000,%ebp
sub    %ebp,%r12d
mov    %r13d,%ebp
sar    $0x1f,%ebp
and    %r13d,%ebp
mov    %ebp,%ebx
sar    $0x19,%ebx
and    $0x2000000,%ebp
sub    %ebp,%r13d
lea    (%rbx,%rbx,8),%ebp
lea    (%rbx,%rbp,2),%r14d
add    %r15d,%r14d
mov    %r14d,(%rsi)
mov    %eax,0x4(%rsi)
mov    %ecx,0x8(%rsi)
mov    %edx,0xc(%rsi)
mov    %r8d,0x10(%rsi)
mov    %r10d,0x14(%rsi)
mov    %r9d,0x18(%rsi)
mov    %r11d,0x1c(%rsi)
mov    %r12d,0x20(%rsi)
mov    %r14d,%ebx
sar    $0x1f,%ebx
and    %r14d,%ebx
mov    %ebx,%ebp
sar    $0x1a,%ebp
and    $0xfc000000,%ebx
sub    %ebx,%r14d
mov    %r14d,(%rsi)
add    %eax,%ebp
shl    $0x2,%ebp
mov    %ebp,0x4(%rsi)
shl    $0x3,%ecx
mov    %ecx,0x8(%rsi)
shl    $0x5,%edx
mov    %edx,0xc(%rsi)
shl    $0x6,%r8d
mov    %r8d,0x10(%rsi)
add    %r9d,%r9d
mov    %r9d,0x18(%rsi)
shl    $0x3,%r11d
mov    %r11d,0x1c(%rsi)
shl    $0x4,%r12d
mov    %r12d,0x20(%rsi)
shl    $0x6,%r13d
mov    %r13d,0x24(%rsi)
movl   $0x0,(%rdi)
movl   $0x0,0x40(%rdi)
movzbl (%rsi),%eax
mov    %eax,(%rdi)
movzbl 0x1(%rsi),%eax
mov    %eax,0x4(%rdi)
movzbl 0x2(%rsi),%eax
mov    %eax,0x8(%rdi)
mov    (%rsi),%eax
shr    $0x18,%eax
mov    %eax,0xc(%rdi)
movzbl 0x4(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0xc(%rdi)
movzbl 0x5(%rsi),%eax
mov    %eax,0x10(%rdi)
movzbl 0x6(%rsi),%eax
mov    %eax,0x14(%rdi)
mov    0x4(%rsi),%eax
shr    $0x18,%eax
mov    %eax,0x18(%rdi)
movzbl 0x8(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0x18(%rdi)
movzbl 0x9(%rsi),%eax
mov    %eax,0x1c(%rdi)
movzbl 0xa(%rsi),%eax
mov    %eax,0x20(%rdi)
mov    0x8(%rsi),%eax
shr    $0x18,%eax
mov    %eax,0x24(%rdi)
movzbl 0xc(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0x24(%rdi)
movzbl 0xd(%rsi),%eax
mov    %eax,0x28(%rdi)
movzbl 0xe(%rsi),%eax
mov    %eax,0x2c(%rdi)
mov    0xc(%rsi),%eax
shr    $0x18,%eax
mov    %eax,0x30(%rdi)
movzbl 0x10(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0x30(%rdi)
movzbl 0x11(%rsi),%eax
mov    %eax,0x34(%rdi)
movzbl 0x12(%rsi),%eax
mov    %eax,0x38(%rdi)
movzbl 0x13(%rsi),%eax
mov    %eax,0x3c(%rdi)
movzbl 0x14(%rsi),%eax
mov    %eax,0x40(%rdi)
movzbl 0x15(%rsi),%eax
mov    %eax,0x44(%rdi)
movzbl 0x16(%rsi),%eax
mov    %eax,0x48(%rdi)
mov    0x14(%rsi),%eax
shr    $0x18,%eax
mov    %eax,0x4c(%rdi)
movzbl 0x18(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0x4c(%rdi)
movzbl 0x19(%rsi),%eax
mov    %eax,0x50(%rdi)
movzbl 0x1a(%rsi),%eax
mov    %eax,0x54(%rdi)
mov    0x18(%rsi),%eax
shr    $0x18,%eax
mov    %eax,0x58(%rdi)
movzbl 0x1c(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0x58(%rdi)
movzbl 0x1d(%rsi),%eax
mov    %eax,0x5c(%rdi)
movzbl 0x1e(%rsi),%eax
mov    %eax,0x60(%rdi)
mov    0x1c(%rsi),%eax
shr    $0x18,%eax
mov    %eax,0x64(%rdi)
movzbl 0x20(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0x64(%rdi)
movzbl 0x21(%rsi),%eax
mov    %eax,0x68(%rdi)
movzbl 0x22(%rsi),%eax
mov    %eax,0x6c(%rdi)
mov    0x20(%rsi),%eax
shr    $0x18,%eax
mov    %eax,0x70(%rdi)
movzbl 0x24(%rsi),%ecx
or     %eax,%ecx
mov    %ecx,0x70(%rdi)
movzbl 0x25(%rsi),%eax
mov    %eax,0x74(%rdi)
movzbl 0x26(%rsi),%eax
mov    %eax,0x78(%rdi)
movzbl 0x27(%rsi),%eax
mov    %eax,0x7c(%rdi)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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