user: 请从给定的汇编指令推导出C源代码:

```asm
<internal_fiat_poly1305_selectznz>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %rdx,%r12
  push   %rbp
  mov    %rcx,%rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %edx,%edi
  sub    $0x38,%rsp
  mov    %rsi,0x28(%rsp)
  mov    $0x8,%esi
  call   <_br2_load@plt>
  lea    0x4(%r12),%edi
  mov    $0x8,%esi
  mov    %rax,(%rsp)
  call   <_br2_load@plt>
  lea    0x8(%r12),%edi
  mov    $0x8,%esi
  mov    %rax,%r15
  call   <_br2_load@plt>
  lea    0xc(%r12),%edi
  mov    $0x8,%esi
  mov    %rax,%r14
  call   <_br2_load@plt>
  lea    0x10(%r12),%edi
  mov    $0x8,%esi
  mov    %rax,0x8(%rsp)
  call   <_br2_load@plt>
  mov    %ebp,%edi
  mov    $0x8,%esi
  mov    %rax,0x10(%rsp)
  call   <_br2_load@plt>
  lea    0x4(%rbp),%edi
  mov    $0x8,%esi
  mov    %rax,0x18(%rsp)
  call   <_br2_load@plt>
  lea    0x8(%rbp),%edi
  mov    $0x8,%esi
  mov    %rax,%r13
  call   <_br2_load@plt>
  lea    0xc(%rbp),%edi
  mov    $0x8,%esi
  mov    %rax,%r12
  call   <_br2_load@plt>
  lea    0x10(%rbp),%edi
  mov    $0x8,%esi
  mov    %rax,0x20(%rsp)
  call   <_br2_load@plt>
  mov    0x28(%rsp),%r8
  mov    0x8(%rsp),%rdx
  mov    %ebx,%edi
  mov    %rax,%rbp
  mov    $0xffffffff,%eax
  neg    %r8
  sbb    %rsi,%rsi
  xor    %rsi,%rax
  and    %rsi,%r12
  and    %rsi,%r13
  and    %rsi,%rbp
  and    %rax,%r14
  and    %rax,%rdx
  and    %rax,%r15
  or     %r14,%r12
  mov    0x20(%rsp),%r14
  or     %r15,%r13
  and    %rsi,%r14
  and    0x18(%rsp),%rsi
  or     %rdx,%r14
  mov    0x10(%rsp),%rdx
  and    %rax,%rdx
  and    (%rsp),%rax
  or     %rdx,%rbp
  or     %rax,%rsi
  mov    $0x8,%edx
  call   <_br2_store@plt>
  lea    0x4(%rbx),%edi
  mov    %r13,%rsi
  mov    $0x8,%edx
  call   <_br2_store@plt>
  lea    0x8(%rbx),%edi
  mov    %r12,%rsi
  mov    $0x8,%edx
  call   <_br2_store@plt>
  lea    0xc(%rbx),%edi
  mov    %r14,%rsi
  mov    $0x8,%edx
  call   <_br2_store@plt>
  add    $0x38,%rsp
  lea    0x10(%rbx),%edi
  mov    %rbp,%rsi
  pop    %rbx
  mov    $0x8,%edx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1060 <_br2_store@plt>
```

assistant: ```c
void internal_fiat_poly1305_selectznz(uintptr_t out0, uintptr_t in0, uintptr_t in1, uintptr_t in2) {
  uintptr_t x5, x10, x0, x11, x6, x13, x1, x14, x7, x16, x2, x17, x8, x19, x3, x20, x9, x22, x4, x23, x12, x15, x18, x21, x24, x25, x26, x27, x28, x29;
  x0 = _br2_load((in1) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x1 = _br2_load((in1) + ((uintptr_t)4ULL), sizeof(uintptr_t));
  x2 = _br2_load((in1) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x3 = _br2_load((in1) + ((uintptr_t)12ULL), sizeof(uintptr_t));
  x4 = _br2_load((in1) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x5 = _br2_load((in2) + ((uintptr_t)0ULL), sizeof(uintptr_t));
  x6 = _br2_load((in2) + ((uintptr_t)4ULL), sizeof(uintptr_t));
  x7 = _br2_load((in2) + ((uintptr_t)8ULL), sizeof(uintptr_t));
  x8 = _br2_load((in2) + ((uintptr_t)12ULL), sizeof(uintptr_t));
  x9 = _br2_load((in2) + ((uintptr_t)16ULL), sizeof(uintptr_t));
  x10 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x11 = (x10) ^ ((uintptr_t)4294967295ULL);
  x12 = ((x5) & (x10)) | ((x0) & (x11));
  x13 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x14 = (x13) ^ ((uintptr_t)4294967295ULL);
  x15 = ((x6) & (x13)) | ((x1) & (x14));
  x16 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x17 = (x16) ^ ((uintptr_t)4294967295ULL);
  x18 = ((x7) & (x16)) | ((x2) & (x17));
  x19 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x20 = (x19) ^ ((uintptr_t)4294967295ULL);
  x21 = ((x8) & (x19)) | ((x3) & (x20));
  x22 = ((uintptr_t)-1ULL) + ((in0) == ((uintptr_t)0ULL));
  x23 = (x22) ^ ((uintptr_t)4294967295ULL);
  x24 = ((x9) & (x22)) | ((x4) & (x23));
  x25 = x12;
  x26 = x15;
  x27 = x18;
  x28 = x21;
  x29 = x24;
  _br2_store((out0) + ((uintptr_t)0ULL), x25, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)4ULL), x26, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)8ULL), x27, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)12ULL), x28, sizeof(uintptr_t));
  _br2_store((out0) + ((uintptr_t)16ULL), x29, sizeof(uintptr_t));
  return;
}
```