#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 x38;
typedef uintptr_t x37;
typedef uintptr_t x36;
typedef uintptr_t x35;
typedef uintptr_t x34;
typedef uintptr_t x33;
typedef uintptr_t x32;
typedef uintptr_t x31;
typedef uintptr_t x30;
typedef uintptr_t x29;
typedef uintptr_t x28;
typedef uintptr_t x27;
typedef uintptr_t x26;
typedef uintptr_t x25;
typedef uintptr_t x24;
typedef uintptr_t x23;
typedef uintptr_t x22;
typedef uintptr_t x21;
typedef uintptr_t x20;
typedef uintptr_t x19;
typedef uintptr_t x18;
typedef uintptr_t x17;
typedef uintptr_t x16;
typedef uintptr_t x15;
typedef uintptr_t x14;
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_p224_add(uintptr_t out0, uintptr_t in0, uintptr_t in1) {
  uintptr_t x7, x0, x15, x1, x8, x17, x2, x9, x19, x3, x10, x21, x4, x11, x23,
      x5, x12, x25, x6, x13, x31, x33, x35, x27, x37, x14, x40, x28, x41, x16,
      x43, x29, x44, x18, x46, x30, x47, x20, x49, x32, x50, x22, x52, x34, x53,
      x24, x55, x36, x56, x39, x26, x58, x38, x59, x42, x45, x48, x51, x54, x57,
      x60, x61, x62, x63, x64, x65, x66, x67;
  x0 = _br2_load((in0) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x1 = _br2_load((in0) + ((uintptr_t)4ULL), sizeof(uintptr_t));
  x2 = _br2_load((in0) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x3 = _br2_load((in0) + ((uintptr_t)12ULL), sizeof(uintptr_t));
  x4 = _br2_load((in0) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x5 = _br2_load((in0) + ((uintptr_t)20ULL), sizeof(uintptr_t));
  x6 = _br2_load((in0) + ((uintptr_t)24ULL), sizeof(uintptr_t));
  x7 = _br2_load((in1) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x8 = _br2_load((in1) + ((uintptr_t)4ULL), sizeof(uintptr_t));
  x9 = _br2_load((in1) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x10 = _br2_load((in1) + ((uintptr_t)12ULL), sizeof(uintptr_t));
  x11 = _br2_load((in1) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x12 = _br2_load((in1) + ((uintptr_t)20ULL), sizeof(uintptr_t));
  x13 = _br2_load((in1) + ((uintptr_t)24ULL), sizeof(uintptr_t));
  x14 = (x0) + (x7);
  x15 = ((x14) < (x0)) + (x1);
  x16 = (x15) + (x8);
  x17 = (((x15) < (x1)) + ((x16) < (x8))) + (x2);
  x18 = (x17) + (x9);
  x19 = (((x17) < (x2)) + ((x18) < (x9))) + (x3);
  x20 = (x19) + (x10);
  x21 = (((x19) < (x3)) + ((x20) < (x10))) + (x4);
  x22 = (x21) + (x11);
  x23 = (((x21) < (x4)) + ((x22) < (x11))) + (x5);
  x24 = (x23) + (x12);
  x25 = (((x23) < (x5)) + ((x24) < (x12))) + (x6);
  x26 = (x25) + (x13);
  x27 = ((x25) < (x6)) + ((x26) < (x13));
  x28 = (x14) - ((uintptr_t)1ULL);
  x29 = (x16) - ((x14) < (x28));
  x30 = (x18) - ((x16) < (x29));
  x31 = (x20) - ((uintptr_t)4294967295ULL);
  x32 = (x31) - ((x18) < (x30));
  x33 = (x22) - ((uintptr_t)4294967295ULL);
  x34 = (x33) - (((x20) < (x31)) + ((x31) < (x32)));
  x35 = (x24) - ((uintptr_t)4294967295ULL);
  x36 = (x35) - (((x22) < (x33)) + ((x33) < (x34)));
  x37 = (x26) - ((uintptr_t)4294967295ULL);
  x38 = (x37) - (((x24) < (x35)) + ((x35) < (x36)));
  x39 = (x27) < ((x27) - (((x26) < (x37)) + ((x37) < (x38))));
  x40 = ((uintptr_t)-1ULL) + ((x39) == ((uintptr_t)0ULL));
  x41 = (x40) ^ ((uintptr_t)4294967295ULL);
  x42 = ((x14) & (x40)) | ((x28) & (x41));
  x43 = ((uintptr_t)-1ULL) + ((x39) == ((uintptr_t)0ULL));
  x44 = (x43) ^ ((uintptr_t)4294967295ULL);
  x45 = ((x16) & (x43)) | ((x29) & (x44));
  x46 = ((uintptr_t)-1ULL) + ((x39) == ((uintptr_t)0ULL));
  x47 = (x46) ^ ((uintptr_t)4294967295ULL);
  x48 = ((x18) & (x46)) | ((x30) & (x47));
  x49 = ((uintptr_t)-1ULL) + ((x39) == ((uintptr_t)0ULL));
  x50 = (x49) ^ ((uintptr_t)4294967295ULL);
  x51 = ((x20) & (x49)) | ((x32) & (x50));
  x52 = ((uintptr_t)-1ULL) + ((x39) == ((uintptr_t)0ULL));
  x53 = (x52) ^ ((uintptr_t)4294967295ULL);
  x54 = ((x22) & (x52)) | ((x34) & (x53));
  x55 = ((uintptr_t)-1ULL) + ((x39) == ((uintptr_t)0ULL));
  x56 = (x55) ^ ((uintptr_t)4294967295ULL);
  x57 = ((x24) & (x55)) | ((x36) & (x56));
  x58 = ((uintptr_t)-1ULL) + ((x39) == ((uintptr_t)0ULL));
  x59 = (x58) ^ ((uintptr_t)4294967295ULL);
  x60 = ((x26) & (x58)) | ((x38) & (x59));
  x61 = x42;
  x62 = x45;
  x63 = x48;
  x64 = x51;
  x65 = x54;
  x66 = x57;
  x67 = x60;
  _br2_store((out0) + ((uintptr_t)0ULL), x61, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)4ULL), x62, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)8ULL), x63, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)12ULL), x64, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)16ULL), x65, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)20ULL), x66, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)24ULL), x67, sizeof(uintptr_t));
  return;
}


x86 assembly (clang, -O0):
<internal_fiat_p224_add>:
push   %rbp
mov    %rsp,%rbp
sub    $0x240,%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,-0x28(%rbp)
mov    -0x10(%rbp),%rax
add    $0x4,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x50(%rbp)
mov    -0x10(%rbp),%rax
add    $0xc,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x68(%rbp)
mov    -0x10(%rbp),%rax
add    $0x10,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x80(%rbp)
mov    -0x10(%rbp),%rax
add    $0x14,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x98(%rbp)
mov    -0x10(%rbp),%rax
add    $0x18,%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    $0x4,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
add    $0x8,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x58(%rbp)
mov    -0x18(%rbp),%rax
add    $0xc,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x70(%rbp)
mov    -0x18(%rbp),%rax
add    $0x10,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0x88(%rbp)
mov    -0x18(%rbp),%rax
add    $0x14,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0xa0(%rbp)
mov    -0x18(%rbp),%rax
add    $0x18,%rax
mov    %eax,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,-0xb8(%rbp)
mov    -0x28(%rbp),%rax
add    -0x20(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
cmp    -0x28(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    -0x38(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
add    -0x40(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x38(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x108(%rbp),%rcx
cmp    -0x40(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0x50(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
add    -0x58(%rbp),%rax
mov    %rax,-0x128(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x50(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x128(%rbp),%rcx
cmp    -0x58(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0x68(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x60(%rbp),%rax
cmp    -0x68(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x148(%rbp),%rcx
cmp    -0x70(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0x80(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
add    -0x88(%rbp),%rax
mov    %rax,-0x168(%rbp)
mov    -0x78(%rbp),%rax
cmp    -0x80(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x168(%rbp),%rcx
cmp    -0x88(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0x98(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
add    -0xa0(%rbp),%rax
mov    %rax,-0x188(%rbp)
mov    -0x90(%rbp),%rax
cmp    -0x98(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x188(%rbp),%rcx
cmp    -0xa0(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
add    -0xb0(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
add    -0xb8(%rbp),%rax
mov    %rax,-0x1b0(%rbp)
mov    -0xa8(%rbp),%rax
cmp    -0xb0(%rbp),%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x1b0(%rbp),%rcx
cmp    -0xb8(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cltq
mov    %rax,-0xd8(%rbp)
mov    -0xe8(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x108(%rbp),%rax
mov    -0xe8(%rbp),%rcx
cmp    -0xf8(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x118(%rbp)
mov    -0x128(%rbp),%rax
mov    -0x108(%rbp),%rcx
cmp    -0x118(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x138(%rbp)
mov    -0x148(%rbp),%rax
movabs $0xffffffff,%rcx
sub    %rcx,%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
mov    -0x128(%rbp),%rcx
cmp    -0x138(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x158(%rbp)
mov    -0x168(%rbp),%rax
movabs $0xffffffff,%rcx
sub    %rcx,%rax
mov    %rax,-0xc8(%rbp)
mov    -0xc8(%rbp),%rax
mov    -0x148(%rbp),%rcx
cmp    -0xc0(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0xc0(%rbp),%rdx
cmp    -0x158(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x178(%rbp)
mov    -0x188(%rbp),%rax
movabs $0xffffffff,%rcx
sub    %rcx,%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rax
mov    -0x168(%rbp),%rcx
cmp    -0xc8(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0xc8(%rbp),%rdx
cmp    -0x178(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x198(%rbp)
mov    -0x1b0(%rbp),%rax
movabs $0xffffffff,%rcx
sub    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rax
mov    -0x188(%rbp),%rcx
cmp    -0xd0(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
mov    -0xd0(%rbp),%rdx
cmp    -0x198(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
add    %edx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x1c0(%rbp)
mov    -0xd8(%rbp),%rax
mov    -0xd8(%rbp),%rcx
mov    -0x1b0(%rbp),%rdx
cmp    -0xe0(%rbp),%rdx
setb   %dl
and    $0x1,%dl
movzbl %dl,%edx
mov    -0xe0(%rbp),%rsi
cmp    -0x1c0(%rbp),%rsi
setb   %sil
and    $0x1,%sil
movzbl %sil,%esi
add    %esi,%edx
movslq %edx,%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setb   %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0x1a8(%rbp)
cmpq   $0x0,-0x1a8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0xf0(%rbp)
movabs $0xffffffff,%rax
xor    -0xf0(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0xe8(%rbp),%rax
and    -0xf0(%rbp),%rax
mov    -0xf8(%rbp),%rcx
and    -0x100(%rbp),%rcx
or     %rcx,%rax
mov    %rax,-0x1d0(%rbp)
cmpq   $0x0,-0x1a8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0x110(%rbp)
movabs $0xffffffff,%rax
xor    -0x110(%rbp),%rax
mov    %rax,-0x120(%rbp)
mov    -0x108(%rbp),%rax
and    -0x110(%rbp),%rax
mov    -0x118(%rbp),%rcx
and    -0x120(%rbp),%rcx
or     %rcx,%rax
mov    %rax,-0x1d8(%rbp)
cmpq   $0x0,-0x1a8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0x130(%rbp)
movabs $0xffffffff,%rax
xor    -0x130(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    -0x128(%rbp),%rax
and    -0x130(%rbp),%rax
mov    -0x138(%rbp),%rcx
and    -0x140(%rbp),%rcx
or     %rcx,%rax
mov    %rax,-0x1e0(%rbp)
cmpq   $0x0,-0x1a8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0x150(%rbp)
movabs $0xffffffff,%rax
xor    -0x150(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    -0x148(%rbp),%rax
and    -0x150(%rbp),%rax
mov    -0x158(%rbp),%rcx
and    -0x160(%rbp),%rcx
or     %rcx,%rax
mov    %rax,-0x1e8(%rbp)
cmpq   $0x0,-0x1a8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0x170(%rbp)
movabs $0xffffffff,%rax
xor    -0x170(%rbp),%rax
mov    %rax,-0x180(%rbp)
mov    -0x168(%rbp),%rax
and    -0x170(%rbp),%rax
mov    -0x178(%rbp),%rcx
and    -0x180(%rbp),%rcx
or     %rcx,%rax
mov    %rax,-0x1f0(%rbp)
cmpq   $0x0,-0x1a8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0x190(%rbp)
movabs $0xffffffff,%rax
xor    -0x190(%rbp),%rax
mov    %rax,-0x1a0(%rbp)
mov    -0x188(%rbp),%rax
and    -0x190(%rbp),%rax
mov    -0x198(%rbp),%rcx
and    -0x1a0(%rbp),%rcx
or     %rcx,%rax
mov    %rax,-0x1f8(%rbp)
cmpq   $0x0,-0x1a8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
cltq
add    $0xffffffffffffffff,%rax
mov    %rax,-0x1b8(%rbp)
movabs $0xffffffff,%rax
xor    -0x1b8(%rbp),%rax
mov    %rax,-0x1c8(%rbp)
mov    -0x1b0(%rbp),%rax
and    -0x1b8(%rbp),%rax
mov    -0x1c0(%rbp),%rcx
and    -0x1c8(%rbp),%rcx
or     %rcx,%rax
mov    %rax,-0x200(%rbp)
mov    -0x1d0(%rbp),%rax
mov    %rax,-0x208(%rbp)
mov    -0x1d8(%rbp),%rax
mov    %rax,-0x210(%rbp)
mov    -0x1e0(%rbp),%rax
mov    %rax,-0x218(%rbp)
mov    -0x1e8(%rbp),%rax
mov    %rax,-0x220(%rbp)
mov    -0x1f0(%rbp),%rax
mov    %rax,-0x228(%rbp)
mov    -0x1f8(%rbp),%rax
mov    %rax,-0x230(%rbp)
mov    -0x200(%rbp),%rax
mov    %rax,-0x238(%rbp)
mov    -0x8(%rbp),%rax
add    $0x0,%rax
mov    %eax,%edi
mov    -0x208(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x4,%rax
mov    %eax,%edi
mov    -0x210(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x8,%rax
mov    %eax,%edi
mov    -0x218(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0xc,%rax
mov    %eax,%edi
mov    -0x220(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x10,%rax
mov    %eax,%edi
mov    -0x228(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x14,%rax
mov    %eax,%edi
mov    -0x230(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
mov    -0x8(%rbp),%rax
add    $0x18,%rax
mov    %eax,%edi
mov    -0x238(%rbp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
add    $0x240,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<internal_fiat_p224_add>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %rdx,%rbx
mov    %rsi,%r15
mov    %rdi,0x50(%rsp)
mov    %r15d,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r14
lea    0x4(%r15),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r12
lea    0x8(%r15),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x10(%rsp)
lea    0xc(%r15),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x30(%rsp)
lea    0x10(%r15),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x38(%rsp)
lea    0x14(%r15),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x40(%rsp)
add    $0x18,%r15d
mov    %r15d,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x48(%rsp)
mov    %ebx,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%rbp
lea    0x4(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rbp,%rcx
add    %r14,%rcx
mov    %rax,%r13
adc    %r12,%r13
add    %r14,%rbp
mov    %rbp,0x8(%rsp)
adc    %r12,%rax
mov    0x10(%rsp),%r15
mov    %r15,%rbp
adc    $0x0,%rbp
lea    0x8(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r14
lea    0xc(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,%r12
lea    0x10(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x18(%rsp)
lea    0x14(%rbx),%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
mov    %rax,0x20(%rsp)
add    $0x18,%ebx
mov    %ebx,%edi
mov    $0x8,%esi
call   1030 <_br2_load@plt>
xor    %r10d,%r10d
cmp    %r15,%rbp
setb   %r10b
add    %rbp,%r14
mov    0x30(%rsp),%rcx
adc    %rcx,%r10
xor    %edx,%edx
cmp    %rcx,%r10
setb   %dl
add    %r12,%r10
mov    0x38(%rsp),%rcx
adc    %rcx,%rdx
xor    %edi,%edi
cmp    %rcx,%rdx
setb   %dil
add    0x18(%rsp),%rdx
mov    0x40(%rsp),%rcx
adc    %rcx,%rdi
xor    %ebp,%ebp
cmp    %rcx,%rdi
setb   %bpl
add    0x20(%rsp),%rdi
mov    0x48(%rsp),%rcx
adc    %rcx,%rbp
xor    %r8d,%r8d
cmp    %rcx,%rbp
setb   %r8b
add    %rax,%rbp
adc    $0x0,%r8
mov    0x8(%rsp),%rsi
sub    $0x1,%rsi
mov    %r13,0x28(%rsp)
mov    %r13,%r15
sbb    $0x0,%r15
cmp    %r15,%r13
mov    %r14,0x10(%rsp)
mov    %r14,%r12
sbb    $0x0,%r12
movabs $0xffffffff00000001,%rax
ff ff ff
lea    (%r10,%rax,1),%rcx
cmp    %r12,%r14
mov    %rcx,%r11
sbb    $0x0,%r11
mov    $0xffffffff,%ebx
cmp    %rbx,%r10
sbb    %r13,%r13
cmp    %r11,%rcx
sbb    $0x0,%r13
lea    (%rdx,%rax,1),%rcx
add    %rcx,%r13
cmp    %rbx,%rdx
sbb    %r14,%r14
cmp    %r13,%rcx
sbb    $0x0,%r14
lea    (%rdi,%rax,1),%rcx
add    %rcx,%r14
add    %rbp,%rax
cmp    %rbx,%rdi
sbb    %r9,%r9
cmp    %r14,%rcx
sbb    $0x0,%r9
add    %rax,%r9
xor    %ecx,%ecx
cmp    %rbx,%rbp
setb   %cl
cmp    %r9,%rax
mov    %r8,%rax
sbb    %rcx,%rax
cmp    %rax,%r8
sbb    %rax,%rax
xor    %rax,%rbx
mov    0x8(%rsp),%rcx
and    %rax,%rcx
and    %rbx,%rsi
or     %rcx,%rsi
mov    0x28(%rsp),%rcx
and    %rax,%rcx
and    %rbx,%r15
or     %rcx,%r15
mov    0x10(%rsp),%rcx
and    %rax,%rcx
and    %rbx,%r12
or     %rcx,%r12
and    %rax,%r10
and    %rbx,%r11
or     %r10,%r11
mov    %r11,0x8(%rsp)
and    %rax,%rdx
and    %rbx,%r13
or     %rdx,%r13
and    %rax,%rdi
and    %rbx,%r14
or     %rdi,%r14
and    %rax,%rbp
and    %r9,%rbx
or     %rbp,%rbx
mov    0x50(%rsp),%rbp
mov    %ebp,%edi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x4(%rbp),%edi
mov    %r15,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x8(%rbp),%edi
mov    %r12,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0xc(%rbp),%edi
mov    0x8(%rsp),%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x10(%rbp),%edi
mov    %r13,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
lea    0x14(%rbp),%edi
mov    %r14,%rsi
mov    $0x8,%edx
call   1040 <_br2_store@plt>
add    $0x18,%ebp
mov    %ebp,%edi
mov    %rbx,%rsi
mov    $0x8,%edx
add    $0x58,%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_p224_add(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
%54 = alloca i64
%55 = alloca i64
%56 = alloca i64
%57 = alloca i64
%58 = alloca i64
%59 = alloca i64
%60 = alloca i64
%61 = alloca i64
%62 = alloca i64
%63 = alloca i64
%64 = alloca i64
%65 = alloca i64
%66 = alloca i64
%67 = alloca i64
%68 = alloca i64
%69 = alloca i64
%70 = alloca i64
%71 = alloca i64
%72 = alloca i64
%73 = alloca i64
%74 = alloca i64
store i64 %0, i64* %4
store i64 %1, i64* %5
store i64 %2, i64* %6
%75 = load i64, i64* %5
%76 = add i64 %75, 0
%77 = trunc i64 %76 to i32
%78 = call i64 @_br2_load(i32 %77, i32 8)
store i64 %78, i64* %8
%79 = load i64, i64* %5
%80 = add i64 %79, 4
%81 = trunc i64 %80 to i32
%82 = call i64 @_br2_load(i32 %81, i32 8)
store i64 %82, i64* %10
%83 = load i64, i64* %5
%84 = add i64 %83, 8
%85 = trunc i64 %84 to i32
%86 = call i64 @_br2_load(i32 %85, i32 8)
store i64 %86, i64* %13
%87 = load i64, i64* %5
%88 = add i64 %87, 12
%89 = trunc i64 %88 to i32
%90 = call i64 @_br2_load(i32 %89, i32 8)
store i64 %90, i64* %16
%91 = load i64, i64* %5
%92 = add i64 %91, 16
%93 = trunc i64 %92 to i32
%94 = call i64 @_br2_load(i32 %93, i32 8)
store i64 %94, i64* %19
%95 = load i64, i64* %5
%96 = add i64 %95, 20
%97 = trunc i64 %96 to i32
%98 = call i64 @_br2_load(i32 %97, i32 8)
store i64 %98, i64* %22
%99 = load i64, i64* %5
%100 = add i64 %99, 24
%101 = trunc i64 %100 to i32
%102 = call i64 @_br2_load(i32 %101, i32 8)
store i64 %102, i64* %25
%103 = load i64, i64* %6
%104 = add i64 %103, 0
%105 = trunc i64 %104 to i32
%106 = call i64 @_br2_load(i32 %105, i32 8)
store i64 %106, i64* %7
%107 = load i64, i64* %6
%108 = add i64 %107, 4
%109 = trunc i64 %108 to i32
%110 = call i64 @_br2_load(i32 %109, i32 8)
store i64 %110, i64* %11
%111 = load i64, i64* %6
%112 = add i64 %111, 8
%113 = trunc i64 %112 to i32
%114 = call i64 @_br2_load(i32 %113, i32 8)
store i64 %114, i64* %14
%115 = load i64, i64* %6
%116 = add i64 %115, 12
%117 = trunc i64 %116 to i32
%118 = call i64 @_br2_load(i32 %117, i32 8)
store i64 %118, i64* %17
%119 = load i64, i64* %6
%120 = add i64 %119, 16
%121 = trunc i64 %120 to i32
%122 = call i64 @_br2_load(i32 %121, i32 8)
store i64 %122, i64* %20
%123 = load i64, i64* %6
%124 = add i64 %123, 20
%125 = trunc i64 %124 to i32
%126 = call i64 @_br2_load(i32 %125, i32 8)
store i64 %126, i64* %23
%127 = load i64, i64* %6
%128 = add i64 %127, 24
%129 = trunc i64 %128 to i32
%130 = call i64 @_br2_load(i32 %129, i32 8)
store i64 %130, i64* %26
%131 = load i64, i64* %8
%132 = load i64, i64* %7
%133 = add i64 %131, %132
store i64 %133, i64* %32
%134 = load i64, i64* %32
%135 = load i64, i64* %8
%136 = icmp ult i64 %134, %135
%137 = zext i1 %136 to i32
%138 = sext i32 %137 to i64
%139 = load i64, i64* %10
%140 = add i64 %138, %139
store i64 %140, i64* %9
%141 = load i64, i64* %9
%142 = load i64, i64* %11
%143 = add i64 %141, %142
store i64 %143, i64* %36
%144 = load i64, i64* %9
%145 = load i64, i64* %10
%146 = icmp ult i64 %144, %145
%147 = zext i1 %146 to i32
%148 = load i64, i64* %36
%149 = load i64, i64* %11
%150 = icmp ult i64 %148, %149
%151 = zext i1 %150 to i32
%152 = add nsw i32 %147, %151
%153 = sext i32 %152 to i64
%154 = load i64, i64* %13
%155 = add i64 %153, %154
store i64 %155, i64* %12
%156 = load i64, i64* %12
%157 = load i64, i64* %14
%158 = add i64 %156, %157
store i64 %158, i64* %40
%159 = load i64, i64* %12
%160 = load i64, i64* %13
%161 = icmp ult i64 %159, %160
%162 = zext i1 %161 to i32
%163 = load i64, i64* %40
%164 = load i64, i64* %14
%165 = icmp ult i64 %163, %164
%166 = zext i1 %165 to i32
%167 = add nsw i32 %162, %166
%168 = sext i32 %167 to i64
%169 = load i64, i64* %16
%170 = add i64 %168, %169
store i64 %170, i64* %15
%171 = load i64, i64* %15
%172 = load i64, i64* %17
%173 = add i64 %171, %172
store i64 %173, i64* %44
%174 = load i64, i64* %15
%175 = load i64, i64* %16
%176 = icmp ult i64 %174, %175
%177 = zext i1 %176 to i32
%178 = load i64, i64* %44
%179 = load i64, i64* %17
%180 = icmp ult i64 %178, %179
%181 = zext i1 %180 to i32
%182 = add nsw i32 %177, %181
%183 = sext i32 %182 to i64
%184 = load i64, i64* %19
%185 = add i64 %183, %184
store i64 %185, i64* %18
%186 = load i64, i64* %18
%187 = load i64, i64* %20
%188 = add i64 %186, %187
store i64 %188, i64* %48
%189 = load i64, i64* %18
%190 = load i64, i64* %19
%191 = icmp ult i64 %189, %190
%192 = zext i1 %191 to i32
%193 = load i64, i64* %48
%194 = load i64, i64* %20
%195 = icmp ult i64 %193, %194
%196 = zext i1 %195 to i32
%197 = add nsw i32 %192, %196
%198 = sext i32 %197 to i64
%199 = load i64, i64* %22
%200 = add i64 %198, %199
store i64 %200, i64* %21
%201 = load i64, i64* %21
%202 = load i64, i64* %23
%203 = add i64 %201, %202
store i64 %203, i64* %52
%204 = load i64, i64* %21
%205 = load i64, i64* %22
%206 = icmp ult i64 %204, %205
%207 = zext i1 %206 to i32
%208 = load i64, i64* %52
%209 = load i64, i64* %23
%210 = icmp ult i64 %208, %209
%211 = zext i1 %210 to i32
%212 = add nsw i32 %207, %211
%213 = sext i32 %212 to i64
%214 = load i64, i64* %25
%215 = add i64 %213, %214
store i64 %215, i64* %24
%216 = load i64, i64* %24
%217 = load i64, i64* %26
%218 = add i64 %216, %217
store i64 %218, i64* %57
%219 = load i64, i64* %24
%220 = load i64, i64* %25
%221 = icmp ult i64 %219, %220
%222 = zext i1 %221 to i32
%223 = load i64, i64* %57
%224 = load i64, i64* %26
%225 = icmp ult i64 %223, %224
%226 = zext i1 %225 to i32
%227 = add nsw i32 %222, %226
%228 = sext i32 %227 to i64
store i64 %228, i64* %30
%229 = load i64, i64* %32
%230 = sub i64 %229, 1
store i64 %230, i64* %34
%231 = load i64, i64* %36
%232 = load i64, i64* %32
%233 = load i64, i64* %34
%234 = icmp ult i64 %232, %233
%235 = zext i1 %234 to i32
%236 = sext i32 %235 to i64
%237 = sub i64 %231, %236
store i64 %237, i64* %38
%238 = load i64, i64* %40
%239 = load i64, i64* %36
%240 = load i64, i64* %38
%241 = icmp ult i64 %239, %240
%242 = zext i1 %241 to i32
%243 = sext i32 %242 to i64
%244 = sub i64 %238, %243
store i64 %244, i64* %42
%245 = load i64, i64* %44
%246 = sub i64 %245, 4294967295
store i64 %246, i64* %27
%247 = load i64, i64* %27
%248 = load i64, i64* %40
%249 = load i64, i64* %42
%250 = icmp ult i64 %248, %249
%251 = zext i1 %250 to i32
%252 = sext i32 %251 to i64
%253 = sub i64 %247, %252
store i64 %253, i64* %46
%254 = load i64, i64* %48
%255 = sub i64 %254, 4294967295
store i64 %255, i64* %28
%256 = load i64, i64* %28
%257 = load i64, i64* %44
%258 = load i64, i64* %27
%259 = icmp ult i64 %257, %258
%260 = zext i1 %259 to i32
%261 = load i64, i64* %27
%262 = load i64, i64* %46
%263 = icmp ult i64 %261, %262
%264 = zext i1 %263 to i32
%265 = add nsw i32 %260, %264
%266 = sext i32 %265 to i64
%267 = sub i64 %256, %266
store i64 %267, i64* %50
%268 = load i64, i64* %52
%269 = sub i64 %268, 4294967295
store i64 %269, i64* %29
%270 = load i64, i64* %29
%271 = load i64, i64* %48
%272 = load i64, i64* %28
%273 = icmp ult i64 %271, %272
%274 = zext i1 %273 to i32
%275 = load i64, i64* %28
%276 = load i64, i64* %50
%277 = icmp ult i64 %275, %276
%278 = zext i1 %277 to i32
%279 = add nsw i32 %274, %278
%280 = sext i32 %279 to i64
%281 = sub i64 %270, %280
store i64 %281, i64* %54
%282 = load i64, i64* %57
%283 = sub i64 %282, 4294967295
store i64 %283, i64* %31
%284 = load i64, i64* %31
%285 = load i64, i64* %52
%286 = load i64, i64* %29
%287 = icmp ult i64 %285, %286
%288 = zext i1 %287 to i32
%289 = load i64, i64* %29
%290 = load i64, i64* %54
%291 = icmp ult i64 %289, %290
%292 = zext i1 %291 to i32
%293 = add nsw i32 %288, %292
%294 = sext i32 %293 to i64
%295 = sub i64 %284, %294
store i64 %295, i64* %59
%296 = load i64, i64* %30
%297 = load i64, i64* %30
%298 = load i64, i64* %57
%299 = load i64, i64* %31
%300 = icmp ult i64 %298, %299
%301 = zext i1 %300 to i32
%302 = load i64, i64* %31
%303 = load i64, i64* %59
%304 = icmp ult i64 %302, %303
%305 = zext i1 %304 to i32
%306 = add nsw i32 %301, %305
%307 = sext i32 %306 to i64
%308 = sub i64 %297, %307
%309 = icmp ult i64 %296, %308
%310 = zext i1 %309 to i32
%311 = sext i32 %310 to i64
store i64 %311, i64* %56
%312 = load i64, i64* %56
%313 = icmp eq i64 %312, 0
%314 = zext i1 %313 to i32
%315 = sext i32 %314 to i64
%316 = add i64 -1, %315
store i64 %316, i64* %33
%317 = load i64, i64* %33
%318 = xor i64 %317, 4294967295
store i64 %318, i64* %35
%319 = load i64, i64* %32
%320 = load i64, i64* %33
%321 = and i64 %319, %320
%322 = load i64, i64* %34
%323 = load i64, i64* %35
%324 = and i64 %322, %323
%325 = or i64 %321, %324
store i64 %325, i64* %61
%326 = load i64, i64* %56
%327 = icmp eq i64 %326, 0
%328 = zext i1 %327 to i32
%329 = sext i32 %328 to i64
%330 = add i64 -1, %329
store i64 %330, i64* %37
%331 = load i64, i64* %37
%332 = xor i64 %331, 4294967295
store i64 %332, i64* %39
%333 = load i64, i64* %36
%334 = load i64, i64* %37
%335 = and i64 %333, %334
%336 = load i64, i64* %38
%337 = load i64, i64* %39
%338 = and i64 %336, %337
%339 = or i64 %335, %338
store i64 %339, i64* %62
%340 = load i64, i64* %56
%341 = icmp eq i64 %340, 0
%342 = zext i1 %341 to i32
%343 = sext i32 %342 to i64
%344 = add i64 -1, %343
store i64 %344, i64* %41
%345 = load i64, i64* %41
%346 = xor i64 %345, 4294967295
store i64 %346, i64* %43
%347 = load i64, i64* %40
%348 = load i64, i64* %41
%349 = and i64 %347, %348
%350 = load i64, i64* %42
%351 = load i64, i64* %43
%352 = and i64 %350, %351
%353 = or i64 %349, %352
store i64 %353, i64* %63
%354 = load i64, i64* %56
%355 = icmp eq i64 %354, 0
%356 = zext i1 %355 to i32
%357 = sext i32 %356 to i64
%358 = add i64 -1, %357
store i64 %358, i64* %45
%359 = load i64, i64* %45
%360 = xor i64 %359, 4294967295
store i64 %360, i64* %47
%361 = load i64, i64* %44
%362 = load i64, i64* %45
%363 = and i64 %361, %362
%364 = load i64, i64* %46
%365 = load i64, i64* %47
%366 = and i64 %364, %365
%367 = or i64 %363, %366
store i64 %367, i64* %64
%368 = load i64, i64* %56
%369 = icmp eq i64 %368, 0
%370 = zext i1 %369 to i32
%371 = sext i32 %370 to i64
%372 = add i64 -1, %371
store i64 %372, i64* %49
%373 = load i64, i64* %49
%374 = xor i64 %373, 4294967295
store i64 %374, i64* %51
%375 = load i64, i64* %48
%376 = load i64, i64* %49
%377 = and i64 %375, %376
%378 = load i64, i64* %50
%379 = load i64, i64* %51
%380 = and i64 %378, %379
%381 = or i64 %377, %380
store i64 %381, i64* %65
%382 = load i64, i64* %56
%383 = icmp eq i64 %382, 0
%384 = zext i1 %383 to i32
%385 = sext i32 %384 to i64
%386 = add i64 -1, %385
store i64 %386, i64* %53
%387 = load i64, i64* %53
%388 = xor i64 %387, 4294967295
store i64 %388, i64* %55
%389 = load i64, i64* %52
%390 = load i64, i64* %53
%391 = and i64 %389, %390
%392 = load i64, i64* %54
%393 = load i64, i64* %55
%394 = and i64 %392, %393
%395 = or i64 %391, %394
store i64 %395, i64* %66
%396 = load i64, i64* %56
%397 = icmp eq i64 %396, 0
%398 = zext i1 %397 to i32
%399 = sext i32 %398 to i64
%400 = add i64 -1, %399
store i64 %400, i64* %58
%401 = load i64, i64* %58
%402 = xor i64 %401, 4294967295
store i64 %402, i64* %60
%403 = load i64, i64* %57
%404 = load i64, i64* %58
%405 = and i64 %403, %404
%406 = load i64, i64* %59
%407 = load i64, i64* %60
%408 = and i64 %406, %407
%409 = or i64 %405, %408
store i64 %409, i64* %67
%410 = load i64, i64* %61
store i64 %410, i64* %68
%411 = load i64, i64* %62
store i64 %411, i64* %69
%412 = load i64, i64* %63
store i64 %412, i64* %70
%413 = load i64, i64* %64
store i64 %413, i64* %71
%414 = load i64, i64* %65
store i64 %414, i64* %72
%415 = load i64, i64* %66
store i64 %415, i64* %73
%416 = load i64, i64* %67
store i64 %416, i64* %74
%417 = load i64, i64* %4
%418 = add i64 %417, 0
%419 = trunc i64 %418 to i32
%420 = load i64, i64* %68
%421 = call i32 @_br2_store(i32 %419, i64 %420, i32 8)
%422 = load i64, i64* %4
%423 = add i64 %422, 4
%424 = trunc i64 %423 to i32
%425 = load i64, i64* %69
%426 = call i32 @_br2_store(i32 %424, i64 %425, i32 8)
%427 = load i64, i64* %4
%428 = add i64 %427, 8
%429 = trunc i64 %428 to i32
%430 = load i64, i64* %70
%431 = call i32 @_br2_store(i32 %429, i64 %430, i32 8)
%432 = load i64, i64* %4
%433 = add i64 %432, 12
%434 = trunc i64 %433 to i32
%435 = load i64, i64* %71
%436 = call i32 @_br2_store(i32 %434, i64 %435, i32 8)
%437 = load i64, i64* %4
%438 = add i64 %437, 16
%439 = trunc i64 %438 to i32
%440 = load i64, i64* %72
%441 = call i32 @_br2_store(i32 %439, i64 %440, i32 8)
%442 = load i64, i64* %4
%443 = add i64 %442, 20
%444 = trunc i64 %443 to i32
%445 = load i64, i64* %73
%446 = call i32 @_br2_store(i32 %444, i64 %445, i32 8)
%447 = load i64, i64* %4
%448 = add i64 %447, 24
%449 = trunc i64 %448 to i32
%450 = load i64, i64* %74
%451 = call i32 @_br2_store(i32 %449, i64 %450, i32 8)
ret void
}

LLVM IR (-O2):
define void @internal_fiat_p224_add(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, 4
%7 = tail call i64 @_br2_load(i32 %6, i32 8)
%8 = add i32 %4, 8
%9 = tail call i64 @_br2_load(i32 %8, i32 8)
%10 = add i32 %4, 12
%11 = tail call i64 @_br2_load(i32 %10, i32 8)
%12 = add i32 %4, 16
%13 = tail call i64 @_br2_load(i32 %12, i32 8)
%14 = add i32 %4, 20
%15 = tail call i64 @_br2_load(i32 %14, i32 8)
%16 = add i32 %4, 24
%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, 4
%21 = tail call i64 @_br2_load(i32 %20, i32 8)
%22 = add i32 %18, 8
%23 = tail call i64 @_br2_load(i32 %22, i32 8)
%24 = add i32 %18, 12
%25 = tail call i64 @_br2_load(i32 %24, i32 8)
%26 = add i32 %18, 16
%27 = tail call i64 @_br2_load(i32 %26, i32 8)
%28 = add i32 %18, 20
%29 = tail call i64 @_br2_load(i32 %28, i32 8)
%30 = add i32 %18, 24
%31 = tail call i64 @_br2_load(i32 %30, i32 8)
%32 = add i64 %19, %5
%33 = icmp ult i64 %32, %5
%34 = zext i1 %33 to i64
%35 = add i64 %7, %34
%36 = add i64 %35, %21
%37 = icmp ult i64 %35, %7
%38 = zext i1 %37 to i64
%39 = icmp ult i64 %36, %21
%40 = zext i1 %39 to i64
%41 = add i64 %9, %38
%42 = add i64 %41, %40
%43 = add i64 %42, %23
%44 = icmp ult i64 %42, %9
%45 = zext i1 %44 to i64
%46 = icmp ult i64 %43, %23
%47 = zext i1 %46 to i64
%48 = add i64 %11, %45
%49 = add i64 %48, %47
%50 = add i64 %49, %25
%51 = icmp ult i64 %49, %11
%52 = zext i1 %51 to i64
%53 = icmp ult i64 %50, %25
%54 = zext i1 %53 to i64
%55 = add i64 %13, %52
%56 = add i64 %55, %54
%57 = add i64 %56, %27
%58 = icmp ult i64 %56, %13
%59 = zext i1 %58 to i64
%60 = icmp ult i64 %57, %27
%61 = zext i1 %60 to i64
%62 = add i64 %15, %59
%63 = add i64 %62, %61
%64 = add i64 %63, %29
%65 = icmp ult i64 %63, %15
%66 = zext i1 %65 to i64
%67 = icmp ult i64 %64, %29
%68 = zext i1 %67 to i64
%69 = add i64 %17, %66
%70 = add i64 %69, %68
%71 = add i64 %70, %31
%72 = icmp ult i64 %70, %17
%73 = zext i1 %72 to i64
%74 = icmp ult i64 %71, %31
%75 = zext i1 %74 to i64
%76 = add nuw nsw i64 %75, %73
%77 = add i64 %32, -1
%78 = icmp eq i64 %32, 0
%79 = sext i1 %78 to i64
%80 = add i64 %36, %79
%81 = icmp ult i64 %36, %80
%82 = sext i1 %81 to i64
%83 = add i64 %43, %82
%84 = add i64 %50, -4294967295
%85 = icmp ult i64 %43, %83
%86 = sext i1 %85 to i64
%87 = add i64 %84, %86
%88 = add i64 %57, -4294967295
%89 = icmp ult i64 %50, 4294967295
%90 = sext i1 %89 to i64
%91 = icmp ult i64 %84, %87
%92 = sext i1 %91 to i64
%93 = add nsw i64 %92, %90
%94 = add i64 %93, %88
%95 = add i64 %64, -4294967295
%96 = icmp ult i64 %57, 4294967295
%97 = sext i1 %96 to i64
%98 = icmp ult i64 %88, %94
%99 = sext i1 %98 to i64
%100 = add nsw i64 %99, %97
%101 = add i64 %100, %95
%102 = add i64 %71, -4294967295
%103 = icmp ult i64 %64, 4294967295
%104 = sext i1 %103 to i64
%105 = icmp ult i64 %95, %101
%106 = sext i1 %105 to i64
%107 = add nsw i64 %106, %104
%108 = add i64 %107, %102
%109 = icmp ult i64 %71, 4294967295
%110 = sext i1 %109 to i64
%111 = icmp ult i64 %102, %108
%112 = sext i1 %111 to i64
%113 = add nsw i64 %76, %110
%114 = add nsw i64 %113, %112
%115 = icmp ult i64 %76, %114
%116 = sext i1 %115 to i64
%117 = xor i64 %116, 4294967295
%118 = and i64 %32, %116
%119 = and i64 %117, %77
%120 = or i64 %119, %118
%121 = and i64 %36, %116
%122 = and i64 %117, %80
%123 = or i64 %122, %121
%124 = and i64 %43, %116
%125 = and i64 %117, %83
%126 = or i64 %125, %124
%127 = and i64 %50, %116
%128 = and i64 %117, %87
%129 = or i64 %128, %127
%130 = and i64 %57, %116
%131 = and i64 %117, %94
%132 = or i64 %131, %130
%133 = and i64 %64, %116
%134 = and i64 %117, %101
%135 = or i64 %134, %133
%136 = and i64 %71, %116
%137 = and i64 %117, %108
%138 = or i64 %137, %136
%139 = trunc i64 %0 to i32
%140 = tail call i32 @_br2_store(i32 %139, i64 %120, i32 8)
%141 = add i32 %139, 4
%142 = tail call i32 @_br2_store(i32 %141, i64 %123, i32 8)
%143 = add i32 %139, 8
%144 = tail call i32 @_br2_store(i32 %143, i64 %126, i32 8)
%145 = add i32 %139, 12
%146 = tail call i32 @_br2_store(i32 %145, i64 %129, i32 8)
%147 = add i32 %139, 16
%148 = tail call i32 @_br2_store(i32 %147, i64 %132, i32 8)
%149 = add i32 %139, 20
%150 = tail call i32 @_br2_store(i32 %149, i64 %135, i32 8)
%151 = add i32 %139, 24
%152 = tail call i32 @_br2_store(i32 %151, i64 %138, i32 8)
ret void
}