#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 uintptr_t x6;
typedef uintptr_t x5;
typedef uintptr_t x4;
typedef uintptr_t x37;
typedef uintptr_t x35;
typedef uintptr_t x33;
typedef uintptr_t x31;
typedef uintptr_t x3;
typedef uintptr_t x29;
typedef uintptr_t x27;
typedef uintptr_t x25;
typedef uintptr_t x23;
typedef uintptr_t x21;
typedef uintptr_t x2;
typedef uintptr_t x19;
typedef uintptr_t x17;
typedef uintptr_t x15;
typedef uintptr_t x14;
typedef uintptr_t x1;
typedef uintptr_t x0;
typedef int /*<<< orphan*/ out0;
typedef int /*<<< orphan*/ in1;
typedef int /*<<< orphan*/ in0;

/* Variables and functions */
uintptr_t _br2_load(int /*<<< orphan*/, int);
int /*<<< orphan*/ _br2_store(int /*<<< orphan*/, uintptr_t, int);
void internal_fiat_p434_sub(uintptr_t out0, uintptr_t in0, uintptr_t in1) {
  uintptr_t x7, x8, x0, x9, x1, x15, x10, x2, x17, x11, x3, x19, x12, x4, x21,
      x13, x5, x23, x6, x25, x14, x29, x16, x31, x18, x33, x20, x35, x22, x37,
      x24, x26, x27, x28, x30, x32, x34, x36, x38, x39, x40, x41, x42, x43, x44,
      x45, x46;
  x0 = _br2_load((in0) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x1 = _br2_load((in0) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x2 = _br2_load((in0) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x3 = _br2_load((in0) + ((uintptr_t)24ULL), sizeof(uintptr_t));
  x4 = _br2_load((in0) + ((uintptr_t)32ULL), sizeof(uintptr_t));
  x5 = _br2_load((in0) + ((uintptr_t)40ULL), sizeof(uintptr_t));
  x6 = _br2_load((in0) + ((uintptr_t)48ULL), sizeof(uintptr_t));
  x7 = _br2_load((in1) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x8 = _br2_load((in1) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x9 = _br2_load((in1) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x10 = _br2_load((in1) + ((uintptr_t)24ULL), sizeof(uintptr_t));
  x11 = _br2_load((in1) + ((uintptr_t)32ULL), sizeof(uintptr_t));
  x12 = _br2_load((in1) + ((uintptr_t)40ULL), sizeof(uintptr_t));
  x13 = _br2_load((in1) + ((uintptr_t)48ULL), sizeof(uintptr_t));
  x14 = (x0) - (x7);
  x15 = (x1) - (x8);
  x16 = (x15) - ((x0) < (x14));
  x17 = (x2) - (x9);
  x18 = (x17) - (((x1) < (x15)) + ((x15) < (x16)));
  x19 = (x3) - (x10);
  x20 = (x19) - (((x2) < (x17)) + ((x17) < (x18)));
  x21 = (x4) - (x11);
  x22 = (x21) - (((x3) < (x19)) + ((x19) < (x20)));
  x23 = (x5) - (x12);
  x24 = (x23) - (((x4) < (x21)) + ((x21) < (x22)));
  x25 = (x6) - (x13);
  x26 = (x25) - (((x5) < (x23)) + ((x23) < (x24)));
  x27 = ((uintptr_t)-1ULL) +
        ((((x6) < (x25)) + ((x25) < (x26))) == ((uintptr_t)0ULL));
  x28 = (x14) + (x27);
  x29 = ((x28) < (x14)) + (x16);
  x30 = (x29) + (x27);
  x31 = (((x29) < (x16)) + ((x30) < (x27))) + (x18);
  x32 = (x31) + (x27);
  x33 = (((x31) < (x18)) + ((x32) < (x27))) + (x20);
  x34 = (x33) + ((x27) & ((uintptr_t)18285026232267440127ULL));
  x35 = (((x33) < (x20)) +
         ((x34) < ((x27) & ((uintptr_t)18285026232267440127ULL)))) +
        (x22);
  x36 = (x35) + ((x27) & ((uintptr_t)8918917783347572387ULL));
  x37 = (((x35) < (x22)) +
         ((x36) < ((x27) & ((uintptr_t)8918917783347572387ULL)))) +
        (x24);
  x38 = (x37) + ((x27) & ((uintptr_t)7853257225132122198ULL));
  x39 = ((((x37) < (x24)) +
          ((x38) < ((x27) & ((uintptr_t)7853257225132122198ULL)))) +
         (x26)) +
        ((x27) & ((uintptr_t)620258357900100ULL));
  x40 = x28;
  x41 = x30;
  x42 = x32;
  x43 = x34;
  x44 = x36;
  x45 = x38;
  x46 = x39;
  _br2_store((out0) + ((uintptr_t)0ULL), x40, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)8ULL), x41, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)16ULL), x42, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)24ULL), x43, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)32ULL), x44, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)40ULL), x45, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)48ULL), x46, sizeof(uintptr_t));
  return;
}


x86 assembly (clang, -O0):
<internal_fiat_p434_sub>:
push   %rbp
mov    %rsp,%rbp
sub    $0x190,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0x0,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
add    $0x10,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
add    $0x18,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x70(%rbp)
mov    -0x10(%rbp),%rax
add    $0x20,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x88(%rbp)
mov    -0x10(%rbp),%rax
add    $0x28,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0xa0(%rbp)
mov    -0x10(%rbp),%rax
add    $0x30,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0xb0(%rbp)
mov    -0x18(%rbp),%rax
add    $0x0,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    $0x8,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x10,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
add    $0x18,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
add    $0x20,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x68(%rbp)
mov    -0x18(%rbp),%rax
add    $0x28,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x80(%rbp)
mov    -0x18(%rbp),%rax
add    $0x30,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x98(%rbp)
mov    -0x30(%rbp),%rax
sub    -0x20(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0x40(%rbp),%rax
sub    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x30(%rbp),%rcx
cmp    -0xc0(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0xd0(%rbp)
mov    -0x58(%rbp),%rax
sub    -0x38(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
mov    -0x40(%rbp),%rcx
cmp    -0x48(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0x48(%rbp),%rdx
cmp    -0xd0(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    -0x70(%rbp),%rax
sub    -0x50(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
mov    -0x58(%rbp),%rcx
cmp    -0x60(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0x60(%rbp),%rdx
cmp    -0xe0(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x88(%rbp),%rax
sub    -0x68(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
mov    -0x70(%rbp),%rcx
cmp    -0x78(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0x78(%rbp),%rdx
cmp    -0xf0(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0xa0(%rbp),%rax
sub    -0x80(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
mov    -0x88(%rbp),%rcx
cmp    -0x90(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0x90(%rbp),%rdx
cmp    -0x100(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x110(%rbp)
mov    -0xb0(%rbp),%rax
sub    -0x98(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    -0xa0(%rbp),%rcx
cmp    -0xa8(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0xa8(%rbp),%rdx
cmp    -0x110(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x118(%rbp)
mov    -0xb0(%rbp),%rax
cmp    -0xb8(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0xb8(%rbp),%rcx
cmp    -0x118(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0x120(%rbp)
mov    -0xc0(%rbp),%rax
add    -0x120(%rbp),%rax
mov    %rax,-0x128(%rbp)
mov    -0x128(%rbp),%rax
cmp    -0xc0(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    -0xd0(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0xc8(%rbp),%rax
add    -0x120(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0xc8(%rbp),%rax
cmp    -0xd0(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x130(%rbp),%rcx
cmp    -0x120(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0xe0(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
add    -0x120(%rbp),%rax
mov    %rax,-0x138(%rbp)
mov    -0xd8(%rbp),%rax
cmp    -0xe0(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x138(%rbp),%rcx
cmp    -0x120(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0xf0(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
movabs $0xfdc1767ae2ffffff,%rcx
76 c1 fd
and    -0x120(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x140(%rbp)
mov    -0xe8(%rbp),%rax
cmp    -0xf0(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x140(%rbp),%rcx
movabs $0xfdc1767ae2ffffff,%rdx
76 c1 fd
and    -0x120(%rbp),%rdx
cmp    %rdx,%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0x100(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
movabs $0x7bc65c783158aea3,%rcx
and    -0x120(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x148(%rbp)
mov    -0xf8(%rbp),%rax
cmp    -0x100(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x148(%rbp),%rcx
movabs $0x7bc65c783158aea3,%rdx
5c c6 7b
and    -0x120(%rbp),%rdx
cmp    %rdx,%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0x110(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
movabs $0x6cfc5fd681c52056,%rcx
5f fc 6c
and    -0x120(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x150(%rbp)
mov    -0x108(%rbp),%rax
cmp    -0x110(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x150(%rbp),%rcx
movabs $0x6cfc5fd681c52056,%rdx
5f fc 6c
and    -0x120(%rbp),%rdx
cmp    %rdx,%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0x118(%rbp),%rax
movabs $0x2341f27177344,%rcx
and    -0x120(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x158(%rbp)
mov    -0x128(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    -0x130(%rbp),%rax
mov    %rax,-0x168(%rbp)
mov    -0x138(%rbp),%rax
mov    %rax,-0x170(%rbp)
mov    -0x140(%rbp),%rax
mov    %rax,-0x178(%rbp)
mov    -0x148(%rbp),%rax
mov    %rax,-0x180(%rbp)
mov    -0x150(%rbp),%rax
mov    %rax,-0x188(%rbp)
mov    -0x158(%rbp),%rax
mov    %rax,-0x190(%rbp)
mov    -0x8(%rbp),%rax
add    $0x0,%rax
mov    %eax,%edi
mov    -0x160(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x8,%rax
mov    %eax,%edi
mov    -0x168(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x10,%rax
mov    %eax,%edi
mov    -0x170(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x18,%rax
mov    %eax,%edi
mov    -0x178(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x20,%rax
mov    %eax,%edi
mov    -0x180(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x28,%rax
mov    %eax,%edi
mov    -0x188(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x30,%rax
mov    %eax,%edi
mov    -0x190(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
add    $0x190,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<internal_fiat_p434_sub>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %rdx,%rbx
mov    %rsi,%rbp
mov    %rdi,0x40(%rsp)
mov    %ebp,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r13
lea    0x8(%rbp),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,(%rsp)
lea    0x10(%rbp),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r12
lea    0x18(%rbp),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r15
lea    0x20(%rbp),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r14
lea    0x28(%rbp),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x30(%rsp)
add    $0x30,%ebp
mov    %ebp,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x38(%rsp)
mov    %ebx,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x18(%rsp)
lea    0x8(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%rbp
lea    0x10(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x8(%rsp)
lea    0x18(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x10(%rsp)
lea    0x20(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x20(%rsp)
lea    0x28(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x28(%rsp)
add    $0x30,%ebx
mov    %ebx,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
xor    %esi,%esi
sub    0x18(%rsp),%r13
setb   %sil
xor    %ecx,%ecx
mov    (%rsp),%rdx
sub    %rbp,%rdx
mov    %rdx,(%rsp)
setb   %cl
mov    %rdx,%r10
sub    %rsi,%r10
xor    %edi,%edi
sub    0x8(%rsp),%r12
setb   %dil
cmp    %r10,%rdx
mov    %r12,%r11
sbb    %rcx,%r11
xor    %ecx,%ecx
sub    0x10(%rsp),%r15
setb   %cl
cmp    %r11,%r12
mov    %r15,%r12
sbb    %rdi,%r12
xor    %ebp,%ebp
sub    0x20(%rsp),%r14
setb   %bpl
cmp    %r12,%r15
mov    %r14,%rdi
sbb    %rcx,%rdi
xor    %ecx,%ecx
mov    0x30(%rsp),%rdx
sub    0x28(%rsp),%rdx
setb   %cl
cmp    %rdi,%r14
mov    %rdx,%r9
mov    %rdx,%rbx
sbb    %rbp,%r9
xor    %ebp,%ebp
mov    0x38(%rsp),%rdx
sub    %rax,%rdx
setb   %bpl
cmp    %r9,%rbx
mov    %rdx,%rbx
sbb    %rcx,%rbx
cmp    %rbx,%rdx
sbb    %rcx,%rcx
movabs $0x2341f27177344,%rax
add    %rbx,%rax
xor    %r14d,%r14d
xor    %r15d,%r15d
cmp    %rcx,%rbp
cmove  %rbx,%rax
movabs $0xfdc1767ae2ffffff,%rbp
76 c1 fd
cmove  %r14,%rbp
setne  %r15b
movabs $0x7bc65c783158aea3,%rcx
5c c6 7b
cmove  %r14,%rcx
movabs $0x6cfc5fd681c52056,%r8
5f fc 6c
cmove  %r14,%r8
mov    %rsi,%rbx
neg    %rbx
mov    %r15,%rdx
neg    %rdx
mov    %r13,%rsi
add    %rdx,%rsi
adc    (%rsp),%rbx
add    %rdx,%r13
mov    %r13,%rsi
adc    %rdx,%r10
mov    %r11,%r14
adc    $0x0,%r14
sub    %r15,%rbx
mov    %rbx,(%rsp)
xor    %r15d,%r15d
cmp    %r11,%r14
setb   %r15b
add    %rdx,%r14
adc    %r12,%r15
xor    %ebx,%ebx
cmp    %r12,%r15
setb   %bl
add    %rbp,%r15
adc    %rdi,%rbx
xor    %ebp,%ebp
cmp    %rdi,%rbx
setb   %bpl
add    %rcx,%rbx
adc    %r9,%rbp
xor    %r13d,%r13d
cmp    %r9,%rbp
setb   %r13b
add    %r8,%rbp
adc    %rax,%r13
mov    0x40(%rsp),%r12
mov    %r12d,%edi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x8(%r12),%edi
mov    (%rsp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x10(%r12),%edi
mov    %r14,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x18(%r12),%edi
mov    %r15,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x20(%r12),%edi
mov    %rbx,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x28(%r12),%edi
mov    %rbp,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
add    $0x30,%r12d
mov    %r12d,%edi
mov    %r13,%rsi
mov    $0x8,%edx
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <_br2_store@plt>

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

LLVM IR (-O2):
define void @internal_fiat_p434_sub(i64 %0, i64 %1, i64 %2) {
%4 = trunc i64 %1 to i32
%5 = tail call i64 @_br2_load(i32 %4, i32 8)
%6 = add i32 %4, 8
%7 = tail call i64 @_br2_load(i32 %6, i32 8)
%8 = add i32 %4, 16
%9 = tail call i64 @_br2_load(i32 %8, i32 8)
%10 = add i32 %4, 24
%11 = tail call i64 @_br2_load(i32 %10, i32 8)
%12 = add i32 %4, 32
%13 = tail call i64 @_br2_load(i32 %12, i32 8)
%14 = add i32 %4, 40
%15 = tail call i64 @_br2_load(i32 %14, i32 8)
%16 = add i32 %4, 48
%17 = tail call i64 @_br2_load(i32 %16, i32 8)
%18 = trunc i64 %2 to i32
%19 = tail call i64 @_br2_load(i32 %18, i32 8)
%20 = add i32 %18, 8
%21 = tail call i64 @_br2_load(i32 %20, i32 8)
%22 = add i32 %18, 16
%23 = tail call i64 @_br2_load(i32 %22, i32 8)
%24 = add i32 %18, 24
%25 = tail call i64 @_br2_load(i32 %24, i32 8)
%26 = add i32 %18, 32
%27 = tail call i64 @_br2_load(i32 %26, i32 8)
%28 = add i32 %18, 40
%29 = tail call i64 @_br2_load(i32 %28, i32 8)
%30 = add i32 %18, 48
%31 = tail call i64 @_br2_load(i32 %30, i32 8)
%32 = sub i64 %5, %19
%33 = sub i64 %7, %21
%34 = icmp ult i64 %5, %19
%35 = sext i1 %34 to i64
%36 = add i64 %33, %35
%37 = sub i64 %9, %23
%38 = icmp ult i64 %7, %21
%39 = sext i1 %38 to i64
%40 = icmp ult i64 %33, %36
%41 = sext i1 %40 to i64
%42 = add i64 %37, %39
%43 = add i64 %42, %41
%44 = sub i64 %11, %25
%45 = icmp ult i64 %9, %23
%46 = sext i1 %45 to i64
%47 = icmp ult i64 %37, %43
%48 = sext i1 %47 to i64
%49 = add i64 %44, %46
%50 = add i64 %49, %48
%51 = sub i64 %13, %27
%52 = icmp ult i64 %11, %25
%53 = sext i1 %52 to i64
%54 = icmp ult i64 %44, %50
%55 = sext i1 %54 to i64
%56 = add i64 %51, %53
%57 = add i64 %56, %55
%58 = sub i64 %15, %29
%59 = icmp ult i64 %13, %27
%60 = sext i1 %59 to i64
%61 = icmp ult i64 %51, %57
%62 = sext i1 %61 to i64
%63 = add i64 %58, %60
%64 = add i64 %63, %62
%65 = sub i64 %17, %31
%66 = icmp ult i64 %15, %29
%67 = sext i1 %66 to i64
%68 = icmp ult i64 %58, %64
%69 = sext i1 %68 to i64
%70 = add i64 %65, %67
%71 = add i64 %70, %69
%72 = icmp ult i64 %17, %31
%73 = zext i1 %72 to i64
%74 = icmp ult i64 %65, %71
%75 = sext i1 %74 to i64
%76 = icmp ne i64 %73, %75
%77 = sext i1 %76 to i64
%78 = add i64 %32, %77
%79 = icmp ult i64 %78, %32
%80 = zext i1 %79 to i64
%81 = add i64 %36, %80
%82 = add i64 %81, %77
%83 = icmp ult i64 %81, %36
%84 = zext i1 %83 to i64
%85 = icmp ult i64 %82, %77
%86 = zext i1 %85 to i64
%87 = add i64 %43, %84
%88 = add i64 %87, %86
%89 = add i64 %88, %77
%90 = icmp ult i64 %88, %43
%91 = zext i1 %90 to i64
%92 = icmp ult i64 %89, %77
%93 = zext i1 %92 to i64
%94 = add i64 %50, %91
%95 = add i64 %94, %93
%96 = select i1 %76, i64 -161717841442111489, i64 0
%97 = add i64 %95, %96
%98 = icmp ult i64 %95, %50
%99 = zext i1 %98 to i64
%100 = icmp ult i64 %97, %96
%101 = zext i1 %100 to i64
%102 = add i64 %57, %99
%103 = add i64 %102, %101
%104 = select i1 %76, i64 8918917783347572387, i64 0
%105 = add i64 %103, %104
%106 = icmp ult i64 %103, %57
%107 = zext i1 %106 to i64
%108 = icmp ult i64 %105, %104
%109 = zext i1 %108 to i64
%110 = add i64 %64, %107
%111 = add i64 %110, %109
%112 = select i1 %76, i64 7853257225132122198, i64 0
%113 = add i64 %111, %112
%114 = icmp ult i64 %111, %64
%115 = zext i1 %114 to i64
%116 = icmp ult i64 %113, %112
%117 = zext i1 %116 to i64
%118 = select i1 %76, i64 620258357900100, i64 0
%119 = add i64 %118, %71
%120 = add i64 %119, %115
%121 = add i64 %120, %117
%122 = trunc i64 %0 to i32
%123 = tail call i32 @_br2_store(i32 %122, i64 %78, i32 8)
%124 = add i32 %122, 8
%125 = tail call i32 @_br2_store(i32 %124, i64 %82, i32 8)
%126 = add i32 %122, 16
%127 = tail call i32 @_br2_store(i32 %126, i64 %89, i32 8)
%128 = add i32 %122, 24
%129 = tail call i32 @_br2_store(i32 %128, i64 %97, i32 8)
%130 = add i32 %122, 32
%131 = tail call i32 @_br2_store(i32 %130, i64 %105, i32 8)
%132 = add i32 %122, 40
%133 = tail call i32 @_br2_store(i32 %132, i64 %113, i32 8)
%134 = add i32 %122, 48
%135 = tail call i32 @_br2_store(i32 %134, i64 %121, i32 8)
ret void
}