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


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

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

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