user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<internal_fiat_p256_add>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,%rbp
  mov    %rsi,%rbx
  mov    %rdx,%r12
  mov    $0x8,%esi
  mov    %ebx,%edi
  call   <_br2_load@plt>
  mov    %rax,%r13
  lea    0x8(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%r15
  lea    0x10(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x8(%rsp)
  lea    0x18(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%r14
  mov    $0x8,%esi
  mov    %r12d,%edi
  call   <_br2_load@plt>
  mov    %rax,%rbx
  lea    0x8(%r12),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x10(%rsp)
  lea    0x10(%r12),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x18(%rsp)
  lea    0x18(%r12),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%rsi
  add    %r13,%rbx
  mov    %r15,%r13
  adc    $0x0,%r13
  cmp    %r13,%r15
  seta   %al
  movzbl %al,%eax
  add    0x10(%rsp),%r13
  adc    $0x0,%eax
  cltq
  add    0x8(%rsp),%rax
  setb   %dl
  movzbl %dl,%edx
  add    0x18(%rsp),%rax
  adc    $0x0,%edx
  movslq %edx,%rdx
  add    %r14,%rdx
  lea    (%rsi,%rdx,1),%r8
  lea    0x1(%rbx),%rcx
  movabs $0xffffffff00000001,%r9
  add    %r13,%r9
  cmp    %rcx,%rbx
  mov    %r9,%r10
  sbb    $0x0,%r10
  cmp    %r9,%r13
  setb   %dil
  movzbl %dil,%edi
  cmp    %r10,%r9
  adc    $0x0,%edi
  movslq %edi,%rdi
  mov    %rax,%r9
  sub    %rdi,%r9
  mov    $0xffffffff,%r12d
  add    %r8,%r12
  cmp    %r9,%rax
  mov    %r12,%rdi
  sbb    $0x0,%rdi
  cmp    %r12,%r8
  setb   %r11b
  movzbl %r11b,%r11d
  cmp    %rdi,%r12
  adc    $0x0,%r11d
  movslq %r11d,%r11
  cmp    %rdx,%r14
  seta   %dl
  movzbl %dl,%edx
  cmp    %r8,%rsi
  seta   %sil
  movzbl %sil,%esi
  add    %esi,%edx
  movslq %edx,%rdx
  cmp    %rdx,%r11
  seta   %dl
  movzbl %dl,%edx
  neg    %rdx
  xor    %r10,%r13
  and    %rdx,%r13
  xor    %r10,%r13
  xor    %r9,%rax
  mov    %rax,%r12
  and    %rdx,%r12
  xor    %r9,%r12
  xor    %rdi,%r8
  mov    %r8,%r14
  and    %rdx,%r14
  xor    %rdi,%r14
  xor    %rcx,%rbx
  mov    %rbx,%rsi
  and    %rdx,%rsi
  xor    %rcx,%rsi
  mov    $0x8,%edx
  mov    %ebp,%edi
  call   <_br2_store@plt>
  lea    0x8(%rbp),%edi
  mov    $0x8,%edx
  mov    %r13,%rsi
  call   <_br2_store@plt>
  lea    0x10(%rbp),%edi
  mov    $0x8,%edx
  mov    %r12,%rsi
  call   <_br2_store@plt>
  lea    0x18(%rbp),%edi
  mov    $0x8,%edx
  mov    %r14,%rsi
  call   <_br2_store@plt>
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void internal_fiat_p256_add(uintptr_t out0, uintptr_t in0, uintptr_t in1) {
  uintptr_t x4, x0, x9, x1, x5, x11, x2, x6, x13, x3, x7, x17, x15, x20, x8, x23, x16, x24, x10, x26, x18, x27, x12, x29, x19, x30, x22, x14, x32, x21, x33, x25, x28, x31, x34, x35, x36, x37, x38;
  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((in1) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x5 = _br2_load((in1) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x6 = _br2_load((in1) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x7 = _br2_load((in1) + ((uintptr_t)24ULL), sizeof(uintptr_t));
  x8 = (x0) + (x4);
  x9 = ((x8) < (x0)) + (x1);
  x10 = (x9) + (x5);
  x11 = (((x9) < (x1)) + ((x10) < (x5))) + (x2);
  x12 = (x11) + (x6);
  x13 = (((x11) < (x2)) + ((x12) < (x6))) + (x3);
  x14 = (x13) + (x7);
  x15 = ((x13) < (x3)) + ((x14) < (x7));
  x16 = (x8) - ((uintptr_t)18446744073709551615ULL);
  x17 = (x10) - ((uintptr_t)4294967295ULL);
  x18 = (x17) - ((x8) < (x16));
  x19 = (x12) - (((x10) < (x17)) + ((x17) < (x18)));
  x20 = (x14) - ((uintptr_t)18446744069414584321ULL);
  x21 = (x20) - ((x12) < (x19));
  x22 = (x15) < ((x15) - (((x14) < (x20)) + ((x20) < (x21))));
  x23 = ((uintptr_t)-1ULL) + ((x22) == ((uintptr_t)0ULL));
  x24 = (x23) ^ ((uintptr_t)18446744073709551615ULL);
  x25 = ((x8) & (x23)) | ((x16) & (x24));
  x26 = ((uintptr_t)-1ULL) + ((x22) == ((uintptr_t)0ULL));
  x27 = (x26) ^ ((uintptr_t)18446744073709551615ULL);
  x28 = ((x10) & (x26)) | ((x18) & (x27));
  x29 = ((uintptr_t)-1ULL) + ((x22) == ((uintptr_t)0ULL));
  x30 = (x29) ^ ((uintptr_t)18446744073709551615ULL);
  x31 = ((x12) & (x29)) | ((x19) & (x30));
  x32 = ((uintptr_t)-1ULL) + ((x22) == ((uintptr_t)0ULL));
  x33 = (x32) ^ ((uintptr_t)18446744073709551615ULL);
  x34 = ((x14) & (x32)) | ((x21) & (x33));
  x35 = x25;
  x36 = x28;
  x37 = x31;
  x38 = x34;
  _br2_store((out0) + ((uintptr_t)0ULL), x35, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)8ULL), x36, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)16ULL), x37, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)24ULL), x38, sizeof(uintptr_t));
  return;
}
```