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

```asm
<internal_fiat_p521_selectznz>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %rdi,%r12
  mov    %rsi,%r14
  mov    %rdx,%rbp
  mov    %rcx,%rbx
  mov    $0x8,%esi
  mov    %edx,%edi
  call   <_br2_load@plt>
  mov    %rax,(%rsp)
  lea    0x8(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x8(%rsp)
  lea    0x10(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x10(%rsp)
  lea    0x18(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x18(%rsp)
  lea    0x20(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x20(%rsp)
  lea    0x28(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x28(%rsp)
  lea    0x30(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x30(%rsp)
  lea    0x38(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x38(%rsp)
  lea    0x40(%rbp),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x40(%rsp)
  mov    $0x8,%esi
  mov    %ebx,%edi
  call   <_br2_load@plt>
  mov    %rax,0x48(%rsp)
  lea    0x8(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x50(%rsp)
  lea    0x10(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x58(%rsp)
  lea    0x18(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%r15
  lea    0x20(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x60(%rsp)
  lea    0x28(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%r13
  lea    0x30(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,0x68(%rsp)
  lea    0x38(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%rbp
  lea    0x40(%rbx),%edi
  mov    $0x8,%esi
  call   <_br2_load@plt>
  mov    %rax,%rbx
  neg    %r14
  sbb    %rax,%rax
  mov    0x50(%rsp),%rdx
  mov    0x8(%rsp),%rsi
  xor    %rsi,%rdx
  and    %rax,%rdx
  xor    %rsi,%rdx
  mov    %rdx,0x8(%rsp)
  mov    0x58(%rsp),%rcx
  mov    0x10(%rsp),%rsi
  xor    %rsi,%rcx
  mov    %rcx,%rdx
  and    %rax,%rdx
  mov    %rdx,%rcx
  xor    %rsi,%rcx
  mov    %rcx,0x10(%rsp)
  mov    0x18(%rsp),%r8
  xor    %r8,%r15
  and    %rax,%r15
  xor    %r8,%r15
  mov    0x60(%rsp),%r14
  mov    0x20(%rsp),%rdi
  xor    %rdi,%r14
  and    %rax,%r14
  xor    %rdi,%r14
  mov    0x28(%rsp),%rcx
  xor    %rcx,%r13
  and    %rax,%r13
  xor    %rcx,%r13
  mov    0x68(%rsp),%rdx
  mov    0x30(%rsp),%r11
  xor    %r11,%rdx
  and    %rax,%rdx
  xor    %r11,%rdx
  mov    %rdx,0x18(%rsp)
  mov    0x38(%rsp),%r10
  xor    %r10,%rbp
  and    %rax,%rbp
  xor    %r10,%rbp
  mov    0x40(%rsp),%r9
  xor    %r9,%rbx
  and    %rax,%rbx
  xor    %r9,%rbx
  mov    0x48(%rsp),%rdi
  mov    (%rsp),%r8
  xor    %r8,%rdi
  mov    %rdi,%rsi
  and    %rax,%rsi
  xor    %r8,%rsi
  mov    $0x8,%edx
  mov    %r12d,%edi
  call   <_br2_store@plt>
  lea    0x8(%r12),%edi
  mov    $0x8,%edx
  mov    0x8(%rsp),%rsi
  call   <_br2_store@plt>
  lea    0x10(%r12),%edi
  mov    $0x8,%edx
  mov    0x10(%rsp),%rsi
  call   <_br2_store@plt>
  lea    0x18(%r12),%edi
  mov    $0x8,%edx
  mov    %r15,%rsi
  call   <_br2_store@plt>
  lea    0x20(%r12),%edi
  mov    $0x8,%edx
  mov    %r14,%rsi
  call   <_br2_store@plt>
  lea    0x28(%r12),%edi
  mov    $0x8,%edx
  mov    %r13,%rsi
  call   <_br2_store@plt>
  lea    0x30(%r12),%edi
  mov    $0x8,%edx
  mov    0x18(%rsp),%rsi
  call   <_br2_store@plt>
  lea    0x38(%r12),%edi
  mov    $0x8,%edx
  mov    %rbp,%rsi
  call   <_br2_store@plt>
  lea    0x40(%r12),%edi
  mov    $0x8,%edx
  mov    %rbx,%rsi
  call   <_br2_store@plt>
  add    $0x78,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void internal_fiat_p521_selectznz(uintptr_t out0, uintptr_t in0, uintptr_t in1, uintptr_t in2) {
  uintptr_t x9, x18, x0, x19, x10, x21, x1, x22, x11, x24, x2, x25, x12, x27, x3, x28, x13, x30, x4, x31, x14, x33, x5, x34, x15, x36, x6, x37, x16, x39, x7, x40, x17, x42, x8, x43, x20, x23, x26, x29, x32, x35, x38, x41, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53;
  x0 = _br2_load((in1) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x1 = _br2_load((in1) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x2 = _br2_load((in1) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x3 = _br2_load((in1) + ((uintptr_t)24ULL), sizeof(uintptr_t));
  x4 = _br2_load((in1) + ((uintptr_t)32ULL), sizeof(uintptr_t));
  x5 = _br2_load((in1) + ((uintptr_t)40ULL), sizeof(uintptr_t));
  x6 = _br2_load((in1) + ((uintptr_t)48ULL), sizeof(uintptr_t));
  x7 = _br2_load((in1) + ((uintptr_t)56ULL), sizeof(uintptr_t));
  x8 = _br2_load((in1) + ((uintptr_t)64ULL), sizeof(uintptr_t));
  x9 = _br2_load((in2) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x10 = _br2_load((in2) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x11 = _br2_load((in2) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x12 = _br2_load((in2) + ((uintptr_t)24ULL), sizeof(uintptr_t));
  x13 = _br2_load((in2) + ((uintptr_t)32ULL), sizeof(uintptr_t));
  x14 = _br2_load((in2) + ((uintptr_t)40ULL), sizeof(uintptr_t));
  x15 = _br2_load((in2) + ((uintptr_t)48ULL), sizeof(uintptr_t));
  x16 = _br2_load((in2) + ((uintptr_t)56ULL), sizeof(uintptr_t));
  x17 = _br2_load((in2) + ((uintptr_t)64ULL), sizeof(uintptr_t));
  x18 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x19 = (x18) ^ ((uintptr_t)18446744073709551615ULL);
  x20 = ((x9) & (x18)) | ((x0) & (x19));
  x21 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x22 = (x21) ^ ((uintptr_t)18446744073709551615ULL);
  x23 = ((x10) & (x21)) | ((x1) & (x22));
  x24 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x25 = (x24) ^ ((uintptr_t)18446744073709551615ULL);
  x26 = ((x11) & (x24)) | ((x2) & (x25));
  x27 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x28 = (x27) ^ ((uintptr_t)18446744073709551615ULL);
  x29 = ((x12) & (x27)) | ((x3) & (x28));
  x30 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x31 = (x30) ^ ((uintptr_t)18446744073709551615ULL);
  x32 = ((x13) & (x30)) | ((x4) & (x31));
  x33 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x34 = (x33) ^ ((uintptr_t)18446744073709551615ULL);
  x35 = ((x14) & (x33)) | ((x5) & (x34));
  x36 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x37 = (x36) ^ ((uintptr_t)18446744073709551615ULL);
  x38 = ((x15) & (x36)) | ((x6) & (x37));
  x39 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x40 = (x39) ^ ((uintptr_t)18446744073709551615ULL);
  x41 = ((x16) & (x39)) | ((x7) & (x40));
  x42 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x43 = (x42) ^ ((uintptr_t)18446744073709551615ULL);
  x44 = ((x17) & (x42)) | ((x8) & (x43));
  x45 = x20;
  x46 = x23;
  x47 = x26;
  x48 = x29;
  x49 = x32;
  x50 = x35;
  x51 = x38;
  x52 = x41;
  x53 = x44;
  _br2_store((out0) + ((uintptr_t)0ULL), x45, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)8ULL), x46, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)16ULL), x47, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)24ULL), x48, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)32ULL), x49, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)40ULL), x50, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)48ULL), x51, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)56ULL), x52, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)64ULL), x53, sizeof(uintptr_t));
  return;
}
```