user: Translate the below assembly code into C programming language:

```asm
<internal_fiat_p434_selectznz>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x170,%rsp
  mov    %rdi,-0x158(%rbp)
  mov    %rsi,-0x160(%rbp)
  mov    %rdx,-0x168(%rbp)
  mov    %rcx,-0x170(%rbp)
  mov    -0x168(%rbp),%rax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x150(%rbp)
  mov    -0x168(%rbp),%rax
  add    $0x8,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x148(%rbp)
  mov    -0x168(%rbp),%rax
  add    $0x10,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x140(%rbp)
  mov    -0x168(%rbp),%rax
  add    $0x18,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x138(%rbp)
  mov    -0x168(%rbp),%rax
  add    $0x20,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x130(%rbp)
  mov    -0x168(%rbp),%rax
  add    $0x28,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x128(%rbp)
  mov    -0x168(%rbp),%rax
  add    $0x30,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x120(%rbp)
  mov    -0x170(%rbp),%rax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x118(%rbp)
  mov    -0x170(%rbp),%rax
  add    $0x8,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x110(%rbp)
  mov    -0x170(%rbp),%rax
  add    $0x10,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x108(%rbp)
  mov    -0x170(%rbp),%rax
  add    $0x18,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0x100(%rbp)
  mov    -0x170(%rbp),%rax
  add    $0x20,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0xf8(%rbp)
  mov    -0x170(%rbp),%rax
  add    $0x28,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0xf0(%rbp)
  mov    -0x170(%rbp),%rax
  add    $0x30,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_br2_load@plt>
  mov    %rax,-0xe8(%rbp)
  cmpq   $0x0,-0x160(%rbp)
  jne    L70
  mov    $0x0,%eax
  jmp    L16
L70:
  mov    $0xffffffffffffffff,%rax
L16:
  mov    %rax,-0xe0(%rbp)
  mov    -0xe0(%rbp),%rax
  not    %rax
  mov    %rax,-0xd8(%rbp)
  mov    -0x118(%rbp),%rax
  and    -0xe0(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x150(%rbp),%rax
  and    -0xd8(%rbp),%rax
  or     %rdx,%rax
  mov    %rax,-0xd0(%rbp)
  cmpq   $0x0,-0x160(%rbp)
  jne    L71
  mov    $0x0,%eax
  jmp    L62
L71:
  mov    $0xffffffffffffffff,%rax
L62:
  mov    %rax,-0xc8(%rbp)
  mov    -0xc8(%rbp),%rax
  not    %rax
  mov    %rax,-0xc0(%rbp)
  mov    -0x110(%rbp),%rax
  and    -0xc8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x148(%rbp),%rax
  and    -0xc0(%rbp),%rax
  or     %rdx,%rax
  mov    %rax,-0xb8(%rbp)
  cmpq   $0x0,-0x160(%rbp)
  jne    L7
  mov    $0x0,%eax
  jmp    L104
L7:
  mov    $0xffffffffffffffff,%rax
L104:
  mov    %rax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%rax
  not    %rax
  mov    %rax,-0xa8(%rbp)
  mov    -0x108(%rbp),%rax
  and    -0xb0(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x140(%rbp),%rax
  and    -0xa8(%rbp),%rax
  or     %rdx,%rax
  mov    %rax,-0xa0(%rbp)
  cmpq   $0x0,-0x160(%rbp)
  jne    L59
  mov    $0x0,%eax
  jmp    L8
L59:
  mov    $0xffffffffffffffff,%rax
L8:
  mov    %rax,-0x98(%rbp)
  mov    -0x98(%rbp),%rax
  not    %rax
  mov    %rax,-0x90(%rbp)
  mov    -0x100(%rbp),%rax
  and    -0x98(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x138(%rbp),%rax
  and    -0x90(%rbp),%rax
  or     %rdx,%rax
  mov    %rax,-0x88(%rbp)
  cmpq   $0x0,-0x160(%rbp)
  jne    L73
  mov    $0x0,%eax
  jmp    L43
L73:
  mov    $0xffffffffffffffff,%rax
L43:
  mov    %rax,-0x80(%rbp)
  mov    -0x80(%rbp),%rax
  not    %rax
  mov    %rax,-0x78(%rbp)
  mov    -0xf8(%rbp),%rax
  and    -0x80(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x130(%rbp),%rax
  and    -0x78(%rbp),%rax
  or     %rdx,%rax
  mov    %rax,-0x70(%rbp)
  cmpq   $0x0,-0x160(%rbp)
  jne    L122
  mov    $0x0,%eax
  jmp    L28
L122:
  mov    $0xffffffffffffffff,%rax
L28:
  mov    %rax,-0x68(%rbp)
  mov    -0x68(%rbp),%rax
  not    %rax
  mov    %rax,-0x60(%rbp)
  mov    -0xf0(%rbp),%rax
  and    -0x68(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x128(%rbp),%rax
  and    -0x60(%rbp),%rax
  or     %rdx,%rax
  mov    %rax,-0x58(%rbp)
  cmpq   $0x0,-0x160(%rbp)
  jne    L121
  mov    $0x0,%eax
  jmp    L86
L121:
  mov    $0xffffffffffffffff,%rax
L86:
  mov    %rax,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  not    %rax
  mov    %rax,-0x48(%rbp)
  mov    -0xe8(%rbp),%rax
  and    -0x50(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x120(%rbp),%rax
  and    -0x48(%rbp),%rax
  or     %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0xd0(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0x30(%rbp)
  mov    -0xa0(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x88(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x58(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x158(%rbp),%rax
  mov    %eax,%ecx
  mov    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %ecx,%edi
  call   <_br2_store@plt>
  mov    -0x158(%rbp),%rax
  add    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %ecx,%edi
  call   <_br2_store@plt>
  mov    -0x158(%rbp),%rax
  add    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x28(%rbp),%rax
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %ecx,%edi
  call   <_br2_store@plt>
  mov    -0x158(%rbp),%rax
  add    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x20(%rbp),%rax
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %ecx,%edi
  call   <_br2_store@plt>
  mov    -0x158(%rbp),%rax
  add    $0x20,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %ecx,%edi
  call   <_br2_store@plt>
  mov    -0x158(%rbp),%rax
  add    $0x28,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %ecx,%edi
  call   <_br2_store@plt>
  mov    -0x158(%rbp),%rax
  add    $0x30,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %ecx,%edi
  call   <_br2_store@plt>
  nop
  leave
  ret
```

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