user: Please show me the C implementation that matches the assembly code listed below:

```asm
<internal_fiat_secp256k1_sub>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %rdi,%r13
  mov    %rsi,%rbp
  mov    %rdx,%rbx
  mov    $0x8,%esi
  mov    %ebp,%edi
  call   <_br2_load@plt>
  mov    %rax,%r14
  lea    0x4(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x8(%rsp)
  lea    0x8(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%r12
  lea    0xc(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%r15
  lea    0x10(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x10(%rsp)
  lea    0x14(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x18(%rsp)
  lea    0x18(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x20(%rsp)
  lea    0x1c(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x28(%rsp)
  mov    $0x8,%esi
  mov    %ebx,%edi
  call   <_br2_load@plt>
  mov    %rax,%rbp
  lea    0x4(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x30(%rsp)
  lea    0x8(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x38(%rsp)
  lea    0xc(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x40(%rsp)
  lea    0x10(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x48(%rsp)
  lea    0x14(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x50(%rsp)
  lea    0x18(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x58(%rsp)
  lea    0x1c(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %r14,%rbx
  sub    %rbp,%rbx
  mov    0x8(%rsp),%rdx
  mov    %rdx,%rsi
  sub    0x30(%rsp),%rsi
  cmp    %rbx,%r14
  mov    %rsi,%rbp
  sbb    $0x0,%rbp
  mov    %r12,%rcx
  sub    0x38(%rsp),%rcx
  cmp    %rsi,%rdx
  setb   %dl
  movzbl %dl,%edx
  cmp    %rbp,%rsi
  adc    $0x0,%edx
  movslq %edx,%rdx
  mov    %rcx,%r11
  sub    %rdx,%r11
  mov    %r15,%rsi
  sub    0x40(%rsp),%rsi
  cmp    %rcx,%r12
  setb   %dl
  movzbl %dl,%edx
  cmp    %r11,%rcx
  adc    $0x0,%edx
  movslq %edx,%rdx
  mov    %rsi,%r10
  sub    %rdx,%r10
  mov    0x10(%rsp),%rdi
  mov    %rdi,%rcx
  sub    0x48(%rsp),%rcx
  cmp    %rsi,%r15
  setb   %dl
  movzbl %dl,%edx
  cmp    %r10,%rsi
  adc    $0x0,%edx
  movslq %edx,%rdx
  mov    %rcx,%r9
  sub    %rdx,%r9
  mov    0x18(%rsp),%r14
  mov    %r14,%rsi
  sub    0x50(%rsp),%rsi
  cmp    %rcx,%rdi
  setb   %dl
  movzbl %dl,%edx
  cmp    %r9,%rcx
  adc    $0x0,%edx
  movslq %edx,%rdx
  mov    %rsi,%r8
  sub    %rdx,%r8
  mov    0x20(%rsp),%r15
  mov    %r15,%rcx
  sub    0x58(%rsp),%rcx
  cmp    %rsi,%r14
  setb   %dl
  movzbl %dl,%edx
  cmp    %r8,%rsi
  adc    $0x0,%edx
  movslq %edx,%rdx
  mov    %rcx,%rdi
  sub    %rdx,%rdi
  mov    0x28(%rsp),%rsi
  mov    %rsi,%rdx
  sub    %rax,%rdx
  cmp    %rcx,%r15
  setb   %al
  movzbl %al,%eax
  cmp    %rdi,%rcx
  adc    $0x0,%eax
  cltq
  mov    %rdx,%rcx
  sub    %rax,%rcx
  cmp    %rdx,%rsi
  setb   %al
  movzbl %al,%eax
  cmp    %rcx,%rdx
  adc    $0x0,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  mov    %rax,%rdx
  neg    %rdx
  mov    %rdx,%rsi
  and    $0xfffffc2f,%esi
  add    %rbx,%rsi
  mov    %rbp,%r12
  adc    $0x0,%r12
  mov    %rdx,%rbx
  and    $0xfffffffe,%ebx
  cmp    %r12,%rbp
  seta   %bpl
  movzbl %bpl,%ebp
  add    %r12,%rbx
  mov    %rbx,0x8(%rsp)
  adc    $0x0,%ebp
  movslq %ebp,%rbp
  add    %r11,%rbp
  mov    %rbp,%r15
  sub    %rax,%r15
  cmp    %rbp,%r11
  seta   %r11b
  movzbl %r11b,%r11d
  cmp    %rdx,%r15
  adc    $0x0,%r11d
  movslq %r11d,%r11
  add    %r10,%r11
  mov    %r11,%r14
  sub    %rax,%r14
  cmp    %r11,%r10
  seta   %r10b
  movzbl %r10b,%r10d
  cmp    %r14,%rdx
  seta   %r11b
  movzbl %r11b,%r11d
  add    %r11d,%r10d
  movslq %r10d,%r10
  add    %r9,%r10
  mov    %r10,%rbx
  sub    %rax,%rbx
  cmp    %r10,%r9
  seta   %r9b
  movzbl %r9b,%r9d
  cmp    %rbx,%rdx
  seta   %r10b
  movzbl %r10b,%r10d
  add    %r10d,%r9d
  movslq %r9d,%r9
  add    %r8,%r9
  mov    %r9,%r12
  sub    %rax,%r12
  cmp    %r9,%r8
  seta   %r8b
  movzbl %r8b,%r8d
  cmp    %r12,%rdx
  seta   %r9b
  movzbl %r9b,%r9d
  add    %r9d,%r8d
  movslq %r8d,%r8
  add    %rdi,%r8
  mov    %r8,%rbp
  sub    %rax,%rbp
  cmp    %r8,%rdi
  seta   %dil
  movzbl %dil,%edi
  cmp    %rbp,%rdx
  seta   %dl
  movzbl %dl,%edx
  add    %edi,%edx
  movslq %edx,%rdx
  sub    %rax,%rcx
  lea    (%rdx,%rcx,1),%rax
  mov    %rax,0x10(%rsp)
  mov    $0x8,%edx
  mov    %r13d,%edi
  call   <_br2_store@plt>
  lea    0x4(%r13),%edi
  mov    $0x8,%edx
  mov    0x8(%rsp),%rsi
  call   <_br2_store@plt>
  lea    0x8(%r13),%edi
  mov    $0x8,%edx
  mov    %r15,%rsi
  call   <_br2_store@plt>
  lea    0xc(%r13),%edi
  mov    $0x8,%edx
  mov    %r14,%rsi
  call   <_br2_store@plt>
  lea    0x10(%r13),%edi
  mov    $0x8,%edx
  mov    %rbx,%rsi
  call   <_br2_store@plt>
  lea    0x14(%r13),%edi
  mov    $0x8,%edx
  mov    %r12,%rsi
  call   <_br2_store@plt>
  lea    0x18(%r13),%edi
  mov    $0x8,%edx
  mov    %rbp,%rsi
  call   <_br2_store@plt>
  lea    0x1c(%r13),%edi
  mov    $0x8,%edx
  mov    0x10(%rsp),%rsi
  call   <_br2_store@plt>
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void internal_fiat_secp256k1_sub(uintptr_t out0, uintptr_t in0, uintptr_t in1) {
  uintptr_t x8, x9, x0, x10, x1, x17, x11, x2, x19, x12, x3, x21, x13, x4, x23, x14, x5, x25, x15, x6, x27, x7, x29, x16, x33, x18, x35, x20, x37, x22, x39, x24, x41, x26, x43, x28, x30, x31, x32, x34, x36, x38, x40, x42, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53;
  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 = (x1) - (x9);
  x18 = (x17) - ((x0) < (x16));
  x19 = (x2) - (x10);
  x20 = (x19) - (((x1) < (x17)) + ((x17) < (x18)));
  x21 = (x3) - (x11);
  x22 = (x21) - (((x2) < (x19)) + ((x19) < (x20)));
  x23 = (x4) - (x12);
  x24 = (x23) - (((x3) < (x21)) + ((x21) < (x22)));
  x25 = (x5) - (x13);
  x26 = (x25) - (((x4) < (x23)) + ((x23) < (x24)));
  x27 = (x6) - (x14);
  x28 = (x27) - (((x5) < (x25)) + ((x25) < (x26)));
  x29 = (x7) - (x15);
  x30 = (x29) - (((x6) < (x27)) + ((x27) < (x28)));
  x31 = ((uintptr_t)-1ULL) + ((((x7) < (x29)) + ((x29) < (x30))) == ((uintptr_t)0ULL));
  x32 = (x16) + ((x31) & ((uintptr_t)4294966319ULL));
  x33 = ((x32) < (x16)) + (x18);
  x34 = (x33) + ((x31) & ((uintptr_t)4294967294ULL));
  x35 = (((x33) < (x18)) + ((x34) < ((x31) & ((uintptr_t)4294967294ULL)))) + (x20);
  x36 = (x35) + (x31);
  x37 = (((x35) < (x20)) + ((x36) < (x31))) + (x22);
  x38 = (x37) + (x31);
  x39 = (((x37) < (x22)) + ((x38) < (x31))) + (x24);
  x40 = (x39) + (x31);
  x41 = (((x39) < (x24)) + ((x40) < (x31))) + (x26);
  x42 = (x41) + (x31);
  x43 = (((x41) < (x26)) + ((x42) < (x31))) + (x28);
  x44 = (x43) + (x31);
  x45 = ((((x43) < (x28)) + ((x44) < (x31))) + (x30)) + (x31);
  x46 = x32;
  x47 = x34;
  x48 = x36;
  x49 = x38;
  x50 = x40;
  x51 = x42;
  x52 = x44;
  x53 = x45;
  _br2_store((out0) + ((uintptr_t)0ULL), x46, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)4ULL), x47, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)8ULL), x48, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)12ULL), x49, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)16ULL), x50, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)20ULL), x51, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)24ULL), x52, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)28ULL), x53, sizeof(uintptr_t));
  return;
}
```