#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 int64_t;

/* Variables and functions */
int load_3(unsigned char const *);
int load_4(unsigned char const *);
void sc_sub(unsigned char *s, const unsigned char *a, const unsigned char *b) {
  int64_t a0 = 2097151 & load_3(a);
  int64_t a1 = 2097151 & (load_4(a + 2) >> 5);
  int64_t a2 = 2097151 & (load_3(a + 5) >> 2);
  int64_t a3 = 2097151 & (load_4(a + 7) >> 7);
  int64_t a4 = 2097151 & (load_4(a + 10) >> 4);
  int64_t a5 = 2097151 & (load_3(a + 13) >> 1);
  int64_t a6 = 2097151 & (load_4(a + 15) >> 6);
  int64_t a7 = 2097151 & (load_3(a + 18) >> 3);
  int64_t a8 = 2097151 & load_3(a + 21);
  int64_t a9 = 2097151 & (load_4(a + 23) >> 5);
  int64_t a10 = 2097151 & (load_3(a + 26) >> 2);
  int64_t a11 = (load_4(a + 28) >> 7);
  int64_t b0 = 2097151 & load_3(b);
  int64_t b1 = 2097151 & (load_4(b + 2) >> 5);
  int64_t b2 = 2097151 & (load_3(b + 5) >> 2);
  int64_t b3 = 2097151 & (load_4(b + 7) >> 7);
  int64_t b4 = 2097151 & (load_4(b + 10) >> 4);
  int64_t b5 = 2097151 & (load_3(b + 13) >> 1);
  int64_t b6 = 2097151 & (load_4(b + 15) >> 6);
  int64_t b7 = 2097151 & (load_3(b + 18) >> 3);
  int64_t b8 = 2097151 & load_3(b + 21);
  int64_t b9 = 2097151 & (load_4(b + 23) >> 5);
  int64_t b10 = 2097151 & (load_3(b + 26) >> 2);
  int64_t b11 = (load_4(b + 28) >> 7);
  int64_t s0 = a0 - b0;
  int64_t s1 = a1 - b1;
  int64_t s2 = a2 - b2;
  int64_t s3 = a3 - b3;
  int64_t s4 = a4 - b4;
  int64_t s5 = a5 - b5;
  int64_t s6 = a6 - b6;
  int64_t s7 = a7 - b7;
  int64_t s8 = a8 - b8;
  int64_t s9 = a9 - b9;
  int64_t s10 = a10 - b10;
  int64_t s11 = a11 - b11;
  int64_t s12 = 0;
  int64_t carry0;
  int64_t carry1;
  int64_t carry2;
  int64_t carry3;
  int64_t carry4;
  int64_t carry5;
  int64_t carry6;
  int64_t carry7;
  int64_t carry8;
  int64_t carry9;
  int64_t carry10;
  int64_t carry11;
  carry0 = (s0 + (1 << 20)) >> 21;
  s1 += carry0;
  s0 -= carry0 << 21;
  carry2 = (s2 + (1 << 20)) >> 21;
  s3 += carry2;
  s2 -= carry2 << 21;
  carry4 = (s4 + (1 << 20)) >> 21;
  s5 += carry4;
  s4 -= carry4 << 21;
  carry6 = (s6 + (1 << 20)) >> 21;
  s7 += carry6;
  s6 -= carry6 << 21;
  carry8 = (s8 + (1 << 20)) >> 21;
  s9 += carry8;
  s8 -= carry8 << 21;
  carry10 = (s10 + (1 << 20)) >> 21;
  s11 += carry10;
  s10 -= carry10 << 21;
  carry1 = (s1 + (1 << 20)) >> 21;
  s2 += carry1;
  s1 -= carry1 << 21;
  carry3 = (s3 + (1 << 20)) >> 21;
  s4 += carry3;
  s3 -= carry3 << 21;
  carry5 = (s5 + (1 << 20)) >> 21;
  s6 += carry5;
  s5 -= carry5 << 21;
  carry7 = (s7 + (1 << 20)) >> 21;
  s8 += carry7;
  s7 -= carry7 << 21;
  carry9 = (s9 + (1 << 20)) >> 21;
  s10 += carry9;
  s9 -= carry9 << 21;
  carry11 = (s11 + (1 << 20)) >> 21;
  s12 += carry11;
  s11 -= carry11 << 21;
  s0 += s12 * 666643;
  s1 += s12 * 470296;
  s2 += s12 * 654183;
  s3 -= s12 * 997805;
  s4 += s12 * 136657;
  s5 -= s12 * 683901;
  s12 = 0;
  carry0 = s0 >> 21;
  s1 += carry0;
  s0 -= carry0 << 21;
  carry1 = s1 >> 21;
  s2 += carry1;
  s1 -= carry1 << 21;
  carry2 = s2 >> 21;
  s3 += carry2;
  s2 -= carry2 << 21;
  carry3 = s3 >> 21;
  s4 += carry3;
  s3 -= carry3 << 21;
  carry4 = s4 >> 21;
  s5 += carry4;
  s4 -= carry4 << 21;
  carry5 = s5 >> 21;
  s6 += carry5;
  s5 -= carry5 << 21;
  carry6 = s6 >> 21;
  s7 += carry6;
  s6 -= carry6 << 21;
  carry7 = s7 >> 21;
  s8 += carry7;
  s7 -= carry7 << 21;
  carry8 = s8 >> 21;
  s9 += carry8;
  s8 -= carry8 << 21;
  carry9 = s9 >> 21;
  s10 += carry9;
  s9 -= carry9 << 21;
  carry10 = s10 >> 21;
  s11 += carry10;
  s10 -= carry10 << 21;
  carry11 = s11 >> 21;
  s12 += carry11;
  s11 -= carry11 << 21;
  s0 += s12 * 666643;
  s1 += s12 * 470296;
  s2 += s12 * 654183;
  s3 -= s12 * 997805;
  s4 += s12 * 136657;
  s5 -= s12 * 683901;
  carry0 = s0 >> 21;
  s1 += carry0;
  s0 -= carry0 << 21;
  carry1 = s1 >> 21;
  s2 += carry1;
  s1 -= carry1 << 21;
  carry2 = s2 >> 21;
  s3 += carry2;
  s2 -= carry2 << 21;
  carry3 = s3 >> 21;
  s4 += carry3;
  s3 -= carry3 << 21;
  carry4 = s4 >> 21;
  s5 += carry4;
  s4 -= carry4 << 21;
  carry5 = s5 >> 21;
  s6 += carry5;
  s5 -= carry5 << 21;
  carry6 = s6 >> 21;
  s7 += carry6;
  s6 -= carry6 << 21;
  carry7 = s7 >> 21;
  s8 += carry7;
  s7 -= carry7 << 21;
  carry8 = s8 >> 21;
  s9 += carry8;
  s8 -= carry8 << 21;
  carry9 = s9 >> 21;
  s10 += carry9;
  s9 -= carry9 << 21;
  carry10 = s10 >> 21;
  s11 += carry10;
  s10 -= carry10 << 21;
  s[0] = (unsigned char)(s0 >> 0);
  s[1] = (unsigned char)(s0 >> 8);
  s[2] = (unsigned char)((s0 >> 16) | (s1 << 5));
  s[3] = (unsigned char)(s1 >> 3);
  s[4] = (unsigned char)(s1 >> 11);
  s[5] = (unsigned char)((s1 >> 19) | (s2 << 2));
  s[6] = (unsigned char)(s2 >> 6);
  s[7] = (unsigned char)((s2 >> 14) | (s3 << 7));
  s[8] = (unsigned char)(s3 >> 1);
  s[9] = (unsigned char)(s3 >> 9);
  s[10] = (unsigned char)((s3 >> 17) | (s4 << 4));
  s[11] = (unsigned char)(s4 >> 4);
  s[12] = (unsigned char)(s4 >> 12);
  s[13] = (unsigned char)((s4 >> 20) | (s5 << 1));
  s[14] = (unsigned char)(s5 >> 7);
  s[15] = (unsigned char)((s5 >> 15) | (s6 << 6));
  s[16] = (unsigned char)(s6 >> 2);
  s[17] = (unsigned char)(s6 >> 10);
  s[18] = (unsigned char)((s6 >> 18) | (s7 << 3));
  s[19] = (unsigned char)(s7 >> 5);
  s[20] = (unsigned char)(s7 >> 13);
  s[21] = (unsigned char)(s8 >> 0);
  s[22] = (unsigned char)(s8 >> 8);
  s[23] = (unsigned char)((s8 >> 16) | (s9 << 5));
  s[24] = (unsigned char)(s9 >> 3);
  s[25] = (unsigned char)(s9 >> 11);
  s[26] = (unsigned char)((s9 >> 19) | (s10 << 2));
  s[27] = (unsigned char)(s10 >> 6);
  s[28] = (unsigned char)((s10 >> 14) | (s11 << 7));
  s[29] = (unsigned char)(s11 >> 1);
  s[30] = (unsigned char)(s11 >> 9);
  s[31] = (unsigned char)(s11 >> 17);
}


x86 assembly (clang, -O0):
<sc_sub>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x2,%rdi
call   1040 <load_4@plt>
sar    $0x5,%eax
and    $0x1fffff,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x5,%rdi
call   1030 <load_3@plt>
sar    $0x2,%eax
and    $0x1fffff,%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x7,%rdi
call   1040 <load_4@plt>
sar    $0x7,%eax
and    $0x1fffff,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rdi
add    $0xa,%rdi
call   1040 <load_4@plt>
sar    $0x4,%eax
and    $0x1fffff,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rdi
add    $0xd,%rdi
call   1030 <load_3@plt>
sar    $0x1,%eax
and    $0x1fffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rdi
add    $0xf,%rdi
call   1040 <load_4@plt>
sar    $0x6,%eax
and    $0x1fffff,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x12,%rdi
call   1030 <load_3@plt>
sar    $0x3,%eax
and    $0x1fffff,%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x15,%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x17,%rdi
call   1040 <load_4@plt>
sar    $0x5,%eax
and    $0x1fffff,%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x1a,%rdi
call   1030 <load_3@plt>
sar    $0x2,%eax
and    $0x1fffff,%eax
mov    %eax,-0x44(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x1c,%rdi
call   1040 <load_4@plt>
sar    $0x7,%eax
mov    %eax,-0x48(%rbp)
mov    -0x18(%rbp),%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x2,%rdi
call   1040 <load_4@plt>
sar    $0x5,%eax
and    $0x1fffff,%eax
mov    %eax,-0x50(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x5,%rdi
call   1030 <load_3@plt>
sar    $0x2,%eax
and    $0x1fffff,%eax
mov    %eax,-0x54(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x7,%rdi
call   1040 <load_4@plt>
sar    $0x7,%eax
and    $0x1fffff,%eax
mov    %eax,-0x58(%rbp)
mov    -0x18(%rbp),%rdi
add    $0xa,%rdi
call   1040 <load_4@plt>
sar    $0x4,%eax
and    $0x1fffff,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x18(%rbp),%rdi
add    $0xd,%rdi
call   1030 <load_3@plt>
sar    $0x1,%eax
and    $0x1fffff,%eax
mov    %eax,-0x60(%rbp)
mov    -0x18(%rbp),%rdi
add    $0xf,%rdi
call   1040 <load_4@plt>
sar    $0x6,%eax
and    $0x1fffff,%eax
mov    %eax,-0x64(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x12,%rdi
call   1030 <load_3@plt>
sar    $0x3,%eax
and    $0x1fffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x15,%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    %eax,-0x6c(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x17,%rdi
call   1040 <load_4@plt>
sar    $0x5,%eax
and    $0x1fffff,%eax
mov    %eax,-0x70(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x1a,%rdi
call   1030 <load_3@plt>
sar    $0x2,%eax
and    $0x1fffff,%eax
mov    %eax,-0x74(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x1c,%rdi
call   1040 <load_4@plt>
sar    $0x7,%eax
mov    %eax,-0x78(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x4c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x20(%rbp),%eax
sub    -0x50(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x24(%rbp),%eax
sub    -0x54(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x28(%rbp),%eax
sub    -0x58(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x5c(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x60(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x64(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x68(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x6c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x40(%rbp),%eax
sub    -0x70(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x44(%rbp),%eax
sub    -0x74(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x48(%rbp),%eax
sub    -0x78(%rbp),%eax
mov    %eax,-0xa8(%rbp)
movl   $0x0,-0xac(%rbp)
mov    -0x7c(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
add    -0x80(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0xb0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x7c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x84(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
add    -0x88(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0xb8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x84(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x8c(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0xc0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x8c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x94(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
add    -0x98(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0xc8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x94(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x94(%rbp)
mov    -0x9c(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xd0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x9c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x9c(%rbp)
mov    -0xa4(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
add    -0xa8(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0xd8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa4(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa4(%rbp)
mov    -0x80(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0xb4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x80(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x80(%rbp)
mov    -0x88(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
add    -0x8c(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xbc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x88(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x88(%rbp)
mov    -0x90(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
add    -0x94(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0xc4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x90(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x90(%rbp)
mov    -0x98(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
add    -0x9c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0xcc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x98(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x98(%rbp)
mov    -0xa0(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
add    -0xa4(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0xd4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa8(%rbp),%eax
add    $0x100000,%eax
sar    $0x15,%eax
mov    %eax,-0xdc(%rbp)
mov    -0xdc(%rbp),%eax
add    -0xac(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0xdc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa8(%rbp)
imul   $0xa2c13,-0xac(%rbp),%eax
add    -0x7c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
imul   $0x72d18,-0xac(%rbp),%eax
add    -0x80(%rbp),%eax
mov    %eax,-0x80(%rbp)
imul   $0x9fb67,-0xac(%rbp),%eax
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
imul   $0xf39ad,-0xac(%rbp),%ecx
mov    -0x88(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x88(%rbp)
imul   $0x215d1,-0xac(%rbp),%eax
add    -0x8c(%rbp),%eax
mov    %eax,-0x8c(%rbp)
imul   $0xa6f7d,-0xac(%rbp),%ecx
mov    -0x90(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x90(%rbp)
movl   $0x0,-0xac(%rbp)
mov    -0x7c(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
add    -0x80(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0xb0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x7c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x80(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0xb4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x80(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x80(%rbp)
mov    -0x84(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
add    -0x88(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0xb8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x84(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x88(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
add    -0x8c(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xbc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x88(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x88(%rbp)
mov    -0x8c(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0xc0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x8c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x90(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
add    -0x94(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0xc4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x90(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x90(%rbp)
mov    -0x94(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
add    -0x98(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0xc8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x94(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x94(%rbp)
mov    -0x98(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
add    -0x9c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0xcc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x98(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x98(%rbp)
mov    -0x9c(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xd0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x9c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x9c(%rbp)
mov    -0xa0(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
add    -0xa4(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0xd4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa4(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
add    -0xa8(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0xd8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa4(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa4(%rbp)
mov    -0xa8(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xdc(%rbp)
mov    -0xdc(%rbp),%eax
add    -0xac(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0xdc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa8(%rbp)
imul   $0xa2c13,-0xac(%rbp),%eax
add    -0x7c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
imul   $0x72d18,-0xac(%rbp),%eax
add    -0x80(%rbp),%eax
mov    %eax,-0x80(%rbp)
imul   $0x9fb67,-0xac(%rbp),%eax
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
imul   $0xf39ad,-0xac(%rbp),%ecx
mov    -0x88(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x88(%rbp)
imul   $0x215d1,-0xac(%rbp),%eax
add    -0x8c(%rbp),%eax
mov    %eax,-0x8c(%rbp)
imul   $0xa6f7d,-0xac(%rbp),%ecx
mov    -0x90(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x90(%rbp)
mov    -0x7c(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
add    -0x80(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0xb0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x7c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x80(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0xb4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x80(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x80(%rbp)
mov    -0x84(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
add    -0x88(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0xb8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x84(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x88(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
add    -0x8c(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xbc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x88(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x88(%rbp)
mov    -0x8c(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0xc0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x8c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x90(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
add    -0x94(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0xc4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x90(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x90(%rbp)
mov    -0x94(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
add    -0x98(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0xc8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x94(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x94(%rbp)
mov    -0x98(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
add    -0x9c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0xcc(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x98(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x98(%rbp)
mov    -0x9c(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xd0(%rbp),%ecx
shl    $0x15,%ecx
mov    -0x9c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x9c(%rbp)
mov    -0xa0(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
add    -0xa4(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0xd4(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa4(%rbp),%eax
sar    $0x15,%eax
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
add    -0xa8(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0xd8(%rbp),%ecx
shl    $0x15,%ecx
mov    -0xa4(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa4(%rbp)
mov    -0x7c(%rbp),%eax
sar    $0x0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,(%rax)
mov    -0x7c(%rbp),%eax
sar    $0x8,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1(%rax)
mov    -0x7c(%rbp),%eax
sar    $0x10,%eax
mov    -0x80(%rbp),%ecx
shl    $0x5,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x2(%rax)
mov    -0x80(%rbp),%eax
sar    $0x3,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x3(%rax)
mov    -0x80(%rbp),%eax
sar    $0xb,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x4(%rax)
mov    -0x80(%rbp),%eax
sar    $0x13,%eax
mov    -0x84(%rbp),%ecx
shl    $0x2,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x5(%rax)
mov    -0x84(%rbp),%eax
sar    $0x6,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x6(%rax)
mov    -0x84(%rbp),%eax
sar    $0xe,%eax
mov    -0x88(%rbp),%ecx
shl    $0x7,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x7(%rax)
mov    -0x88(%rbp),%eax
sar    $0x1,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x8(%rax)
mov    -0x88(%rbp),%eax
sar    $0x9,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x9(%rax)
mov    -0x88(%rbp),%eax
sar    $0x11,%eax
mov    -0x8c(%rbp),%ecx
shl    $0x4,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0xa(%rax)
mov    -0x8c(%rbp),%eax
sar    $0x4,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0xb(%rax)
mov    -0x8c(%rbp),%eax
sar    $0xc,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0xc(%rax)
mov    -0x8c(%rbp),%eax
sar    $0x14,%eax
mov    -0x90(%rbp),%ecx
shl    $0x1,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0xd(%rax)
mov    -0x90(%rbp),%eax
sar    $0x7,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0xe(%rax)
mov    -0x90(%rbp),%eax
sar    $0xf,%eax
mov    -0x94(%rbp),%ecx
shl    $0x6,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0xf(%rax)
mov    -0x94(%rbp),%eax
sar    $0x2,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x10(%rax)
mov    -0x94(%rbp),%eax
sar    $0xa,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x11(%rax)
mov    -0x94(%rbp),%eax
sar    $0x12,%eax
mov    -0x98(%rbp),%ecx
shl    $0x3,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x12(%rax)
mov    -0x98(%rbp),%eax
sar    $0x5,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x13(%rax)
mov    -0x98(%rbp),%eax
sar    $0xd,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x14(%rax)
mov    -0x9c(%rbp),%eax
sar    $0x0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x15(%rax)
mov    -0x9c(%rbp),%eax
sar    $0x8,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x16(%rax)
mov    -0x9c(%rbp),%eax
sar    $0x10,%eax
mov    -0xa0(%rbp),%ecx
shl    $0x5,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x17(%rax)
mov    -0xa0(%rbp),%eax
sar    $0x3,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x18(%rax)
mov    -0xa0(%rbp),%eax
sar    $0xb,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x19(%rax)
mov    -0xa0(%rbp),%eax
sar    $0x13,%eax
mov    -0xa4(%rbp),%ecx
shl    $0x2,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1a(%rax)
mov    -0xa4(%rbp),%eax
sar    $0x6,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1b(%rax)
mov    -0xa4(%rbp),%eax
sar    $0xe,%eax
mov    -0xa8(%rbp),%ecx
shl    $0x7,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1c(%rax)
mov    -0xa8(%rbp),%eax
sar    $0x1,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1d(%rax)
mov    -0xa8(%rbp),%eax
sar    $0x9,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1e(%rax)
mov    -0xa8(%rbp),%eax
sar    $0x11,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1f(%rax)
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sc_sub>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %rdx,%r13
mov    %rsi,%r12
mov    %rdi,0x50(%rsp)
mov    %rsi,%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    %rax,0x10(%rsp)
lea    0x2(%r12),%rdi
call   1040 <load_4@plt>
shr    $0x5,%eax
and    $0x1fffff,%eax
mov    %rax,%rbp
lea    0x5(%r12),%rdi
call   1030 <load_3@plt>
shr    $0x2,%eax
and    $0x1fffff,%eax
mov    %rax,0x40(%rsp)
lea    0x7(%r12),%rdi
call   1040 <load_4@plt>
shr    $0x7,%eax
and    $0x1fffff,%eax
mov    %rax,0x8(%rsp)
lea    0xa(%r12),%rdi
call   1040 <load_4@plt>
shr    $0x4,%eax
and    $0x1fffff,%eax
mov    %rax,0x20(%rsp)
lea    0xd(%r12),%rdi
call   1030 <load_3@plt>
shr    %eax
and    $0x1fffff,%eax
mov    %rax,0x38(%rsp)
lea    0xf(%r12),%rdi
call   1040 <load_4@plt>
mov    %eax,%r15d
shr    $0x6,%r15d
and    $0x1fffff,%r15d
lea    0x12(%r12),%rdi
call   1030 <load_3@plt>
shr    $0x3,%eax
and    $0x1fffff,%eax
mov    %rax,0x30(%rsp)
lea    0x15(%r12),%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    %rax,0x18(%rsp)
lea    0x17(%r12),%rdi
call   1040 <load_4@plt>
shr    $0x5,%eax
and    $0x1fffff,%eax
mov    %rax,0x28(%rsp)
lea    0x1a(%r12),%rdi
call   1030 <load_3@plt>
mov    %eax,%r14d
shr    $0x2,%r14d
and    $0x1fffff,%r14d
add    $0x1c,%r12
mov    %r12,%rdi
call   1040 <load_4@plt>
mov    %eax,%ebx
sar    $0x7,%ebx
mov    %r13,%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    0x10(%rsp),%rcx
sub    %eax,%ecx
mov    %rcx,0x10(%rsp)
lea    0x2(%r13),%rdi
call   1040 <load_4@plt>
shr    $0x5,%eax
and    $0x1fffff,%eax
sub    %eax,%ebp
mov    %rbp,0x48(%rsp)
lea    0x5(%r13),%rdi
call   1030 <load_3@plt>
shr    $0x2,%eax
and    $0x1fffff,%eax
mov    0x40(%rsp),%rbp
sub    %eax,%ebp
lea    0x7(%r13),%rdi
call   1040 <load_4@plt>
shr    $0x7,%eax
and    $0x1fffff,%eax
mov    0x8(%rsp),%rcx
sub    %eax,%ecx
mov    %rcx,0x8(%rsp)
lea    0xa(%r13),%rdi
call   1040 <load_4@plt>
shr    $0x4,%eax
and    $0x1fffff,%eax
mov    0x20(%rsp),%rcx
sub    %eax,%ecx
mov    %rcx,0x20(%rsp)
lea    0xd(%r13),%rdi
call   1030 <load_3@plt>
shr    %eax
and    $0x1fffff,%eax
mov    0x38(%rsp),%rcx
sub    %eax,%ecx
mov    %rcx,0x38(%rsp)
lea    0xf(%r13),%rdi
call   1040 <load_4@plt>
shr    $0x6,%eax
and    $0x1fffff,%eax
sub    %eax,%r15d
lea    0x12(%r13),%rdi
call   1030 <load_3@plt>
shr    $0x3,%eax
and    $0x1fffff,%eax
mov    0x30(%rsp),%rcx
sub    %eax,%ecx
mov    %rcx,0x30(%rsp)
lea    0x15(%r13),%rdi
call   1030 <load_3@plt>
and    $0x1fffff,%eax
mov    0x18(%rsp),%r12
sub    %eax,%r12d
lea    0x17(%r13),%rdi
call   1040 <load_4@plt>
shr    $0x5,%eax
and    $0x1fffff,%eax
mov    0x28(%rsp),%rcx
sub    %eax,%ecx
mov    %rcx,0x28(%rsp)
lea    0x1a(%r13),%rdi
call   1030 <load_3@plt>
shr    $0x2,%eax
and    $0x1fffff,%eax
sub    %eax,%r14d
add    $0x1c,%r13
mov    %r13,%rdi
call   1040 <load_4@plt>
sar    $0x7,%eax
sub    %eax,%ebx
mov    %rbx,0x18(%rsp)
mov    0x10(%rsp),%rdx
lea    0x100000(%rdx),%ecx
mov    %ecx,%eax
and    $0xffe00000,%ecx
sub    %ecx,%edx
mov    %rdx,0x10(%rsp)
mov    %rbp,%r8
lea    0x100000(%rbp),%edx
mov    %edx,%ecx
and    $0xffe00000,%edx
sub    %edx,%r8d
mov    0x20(%rsp),%r9
lea    0x100000(%r9),%edx
mov    %edx,%esi
and    $0xffe00000,%edx
sub    %edx,%r9d
lea    0x100000(%r15),%edx
mov    %edx,%edi
and    $0xffe00000,%edx
sub    %edx,%r15d
lea    0x100000(%r12),%edx
mov    %edx,%ebp
and    $0xffe00000,%edx
sub    %edx,%r12d
mov    %r12,%r11
lea    0x100000(%r14),%ebx
mov    %ebx,%edx
and    $0xffe00000,%ebx
sub    %ebx,%r14d
sar    $0x15,%eax
mov    0x48(%rsp),%rbx
lea    (%rbx,%rax,1),%r12d
add    %ebx,%eax
add    $0x100000,%eax
mov    %eax,%ebx
sar    $0x15,%ebx
add    %r8d,%ebx
and    $0xffe00000,%eax
sub    %eax,%r12d
sar    $0x15,%ecx
mov    0x8(%rsp),%rax
lea    (%rcx,%rax,1),%r13d
add    %ecx,%eax
add    $0x100000,%eax
mov    %eax,%ecx
sar    $0x15,%ecx
add    %r9d,%ecx
and    $0xffe00000,%eax
sub    %eax,%r13d
sar    $0x15,%esi
mov    0x38(%rsp),%rax
lea    (%rsi,%rax,1),%r9d
add    %eax,%esi
add    $0x100000,%esi
mov    %esi,%eax
sar    $0x15,%eax
add    %r15d,%eax
and    $0xffe00000,%esi
sub    %esi,%r9d
sar    $0x15,%edi
mov    0x30(%rsp),%rsi
lea    (%rdi,%rsi,1),%r10d
add    %edi,%esi
add    $0x100000,%esi
mov    %esi,%edi
sar    $0x15,%edi
add    %r11d,%edi
and    $0xffe00000,%esi
sub    %esi,%r10d
sar    $0x15,%ebp
mov    0x28(%rsp),%rsi
lea    (%rsi,%rbp,1),%r11d
add    %ebp,%esi
add    $0x100000,%esi
mov    %esi,%r8d
sar    $0x15,%r8d
add    %r14d,%r8d
sar    $0x15,%edx
and    $0xffe00000,%esi
sub    %esi,%r11d
mov    0x18(%rsp),%rsi
lea    (%rdx,%rsi,1),%ebp
add    %esi,%edx
add    $0x100000,%edx
mov    %edx,%esi
sar    $0x15,%esi
and    $0xffe00000,%edx
sub    %edx,%ebp
mov    %ebp,0x8(%rsp)
imul   $0xa2c13,%esi,%r14d
add    0x10(%rsp),%r14d
imul   $0x72d18,%esi,%edx
add    %r12d,%edx
imul   $0x9fb67,%esi,%ebp
add    %ebx,%ebp
imul   $0xfff0c653,%esi,%ebx
add    %r13d,%ebx
imul   $0x215d1,%esi,%r12d
add    %ecx,%r12d
imul   $0xfff59083,%esi,%r13d
add    %r9d,%r13d
mov    %r14d,%r15d
sar    $0x15,%r15d
add    %edx,%r15d
and    $0x1fffff,%r14d
mov    %r15d,%r9d
sar    $0x15,%r9d
add    %ebp,%r9d
and    $0x1fffff,%r15d
mov    %r9d,%ecx
sar    $0x15,%ecx
add    %ebx,%ecx
and    $0x1fffff,%r9d
mov    %ecx,%ebp
sar    $0x15,%ebp
add    %r12d,%ebp
and    $0x1fffff,%ecx
mov    %ebp,%ebx
sar    $0x15,%ebx
add    %r13d,%ebx
and    $0x1fffff,%ebp
mov    %ebx,%edx
sar    $0x15,%edx
add    %eax,%edx
and    $0x1fffff,%ebx
mov    %edx,%r12d
sar    $0x15,%r12d
add    %r10d,%r12d
and    $0x1fffff,%edx
mov    %edx,0x10(%rsp)
mov    %r12d,%r10d
sar    $0x15,%r10d
add    %edi,%r10d
and    $0x1fffff,%r12d
mov    %r10d,%r13d
sar    $0x15,%r13d
add    %r11d,%r13d
and    $0x1fffff,%r10d
mov    %r13d,%edi
sar    $0x15,%edi
add    %r8d,%edi
and    $0x1fffff,%r13d
mov    %edi,%r8d
sar    $0x15,%r8d
add    0x8(%rsp),%r8d
and    $0x1fffff,%edi
mov    %r8d,%esi
sar    $0x15,%esi
and    $0x1fffff,%r8d
imul   $0xa2c13,%esi,%eax
add    %r14d,%eax
imul   $0x72d18,%esi,%r11d
add    %r15d,%r11d
imul   $0x9fb67,%esi,%r14d
add    %r9d,%r14d
imul   $0xfff0c653,%esi,%r15d
add    %ecx,%r15d
imul   $0x215d1,%esi,%edx
add    %ebp,%edx
imul   $0xfff59083,%esi,%ecx
add    %ebx,%ecx
mov    %ecx,0x8(%rsp)
mov    %eax,%esi
sar    $0x15,%esi
add    %r11d,%esi
mov    %esi,%r9d
sar    $0x15,%r9d
add    %r14d,%r9d
mov    %esi,%ebx
and    $0x1fffff,%ebx
mov    %r9d,%ecx
sar    $0x15,%ecx
add    %r15d,%ecx
mov    %ecx,%ebp
sar    $0x15,%ebp
add    %edx,%ebp
mov    %ebp,%r14d
sar    $0x15,%r14d
add    0x8(%rsp),%r14d
mov    %r14d,%r15d
sar    $0x15,%r15d
add    0x10(%rsp),%r15d
mov    %r15d,%r11d
sar    $0x15,%r11d
add    %r12d,%r11d
mov    %r11d,%edx
sar    $0x15,%edx
add    %r10d,%edx
mov    %edx,%r10d
sar    $0x15,%r10d
add    %r13d,%r10d
mov    %r10d,%r12d
sar    $0x15,%r12d
add    %edi,%r12d
mov    %r12d,%r13d
sar    $0x15,%r13d
add    %r8d,%r13d
mov    0x50(%rsp),%rdi
mov    %al,(%rdi)
mov    %ah,0x1(%rdi)
mov    %rdi,%r8
shr    $0x10,%eax
and    $0x1f,%eax
mov    %ebx,%edi
shl    $0x5,%edi
or     %eax,%edi
mov    %dil,0x2(%r8)
mov    %esi,%eax
shr    $0x3,%eax
mov    %r8,%rdi
mov    %al,0x3(%r8)
shr    $0xb,%esi
mov    %sil,0x4(%r8)
mov    %r9d,%eax
and    $0x1fffff,%eax
shr    $0x13,%ebx
lea    (%rbx,%rax,4),%esi
mov    %sil,0x5(%rdi)
mov    %ecx,%esi
and    $0x1fffff,%esi
shr    $0x6,%r9d
mov    %r9b,0x6(%rdi)
mov    %rdi,%rbx
shr    $0xe,%eax
mov    %esi,%edi
shl    $0x7,%edi
or     %eax,%edi
mov    %dil,0x7(%rbx)
mov    %ecx,%eax
shr    %eax
mov    %al,0x8(%rbx)
mov    %ebp,%eax
and    $0x1fffff,%eax
shr    $0x9,%ecx
mov    %cl,0x9(%rbx)
shr    $0x11,%esi
mov    %eax,%ecx
shl    $0x4,%ecx
or     %esi,%ecx
mov    %cl,0xa(%rbx)
mov    %ebp,%ecx
shr    $0x4,%ecx
mov    %cl,0xb(%rbx)
shr    $0xc,%ebp
mov    %bpl,0xc(%rbx)
mov    %r14d,%ecx
and    $0x1fffff,%ecx
shr    $0x14,%eax
lea    (%rax,%rcx,2),%eax
mov    %al,0xd(%rbx)
mov    %r15d,%eax
and    $0x1fffff,%eax
shr    $0x7,%r14d
mov    %r14b,0xe(%rbx)
shr    $0xf,%ecx
mov    %eax,%esi
shl    $0x6,%esi
or     %ecx,%esi
mov    %sil,0xf(%rbx)
mov    %r15d,%ecx
shr    $0x2,%ecx
mov    %rbx,%rsi
mov    %cl,0x10(%rbx)
shr    $0xa,%r15d
mov    %r15b,0x11(%rbx)
shr    $0x12,%eax
lea    (%rax,%r11,8),%eax
mov    %al,0x12(%rsi)
mov    %r11d,%eax
shr    $0x5,%eax
mov    %al,0x13(%rsi)
mov    %r10d,%eax
and    $0x1fffff,%eax
shr    $0xd,%r11d
mov    %r11b,0x14(%rsi)
mov    %dl,0x15(%rsi)
mov    %dh,0x16(%rsi)
shr    $0x10,%edx
and    $0x1f,%edx
mov    %eax,%ecx
shl    $0x5,%ecx
or     %edx,%ecx
mov    %cl,0x17(%rsi)
mov    %r10d,%ecx
shr    $0x3,%ecx
mov    %cl,0x18(%rsi)
shr    $0xb,%r10d
mov    %r10b,0x19(%rsi)
mov    %r12d,%ecx
and    $0x1fffff,%ecx
shr    $0x13,%eax
lea    (%rax,%rcx,4),%eax
mov    %al,0x1a(%rsi)
shr    $0x6,%r12d
mov    %r12b,0x1b(%rsi)
shr    $0xe,%ecx
mov    %r13d,%eax
shl    $0x7,%eax
or     %ecx,%eax
mov    %al,0x1c(%rsi)
mov    %r13d,%eax
shr    %eax
mov    %al,0x1d(%rsi)
mov    %r13d,%eax
shr    $0x9,%eax
mov    %al,0x1e(%rsi)
shr    $0x11,%r13d
mov    %r13b,0x1f(%rsi)
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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