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

```asm
<fiat_25519_opp>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    $0x7ffffda,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x50(%rbp)
  mov    $0x3fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x8,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  mov    $0x7fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x10,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    $0x3fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x18,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x38(%rbp)
  mov    $0x7fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x20,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x30(%rbp)
  mov    $0x3fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x28,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x28(%rbp)
  mov    $0x7fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x30,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x20(%rbp)
  mov    $0x3fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x38,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    $0x7fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x40,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  mov    $0x3fffffe,%edi
  call   <UINT32_C@plt>
  mov    -0x60(%rbp),%rdx
  add    $0x48,%rdx
  mov    (%rdx),%rdx
  sub    %rdx,%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x58(%rbp),%rax
  mov    -0x50(%rbp),%rdx
  mov    %rdx,(%rax)
  mov    -0x58(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x48(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x10(%rax),%rdx
  mov    -0x40(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x18(%rax),%rdx
  mov    -0x38(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x20(%rax),%rdx
  mov    -0x30(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x28(%rax),%rdx
  mov    -0x28(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x30(%rax),%rdx
  mov    -0x20(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x38(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x40(%rax),%rdx
  mov    -0x10(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x58(%rbp),%rax
  lea    0x48(%rax),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rax,(%rdx)
  nop
  leave
  ret
```

assistant: ```c
void fiat_25519_opp(uint32_t out1[10], const uint32_t arg1[10]) {
  uint32_t x1 = (UINT32_C(0x7ffffda) - (arg1[0]));
  uint32_t x2 = (UINT32_C(0x3fffffe) - (arg1[1]));
  uint32_t x3 = (UINT32_C(0x7fffffe) - (arg1[2]));
  uint32_t x4 = (UINT32_C(0x3fffffe) - (arg1[3]));
  uint32_t x5 = (UINT32_C(0x7fffffe) - (arg1[4]));
  uint32_t x6 = (UINT32_C(0x3fffffe) - (arg1[5]));
  uint32_t x7 = (UINT32_C(0x7fffffe) - (arg1[6]));
  uint32_t x8 = (UINT32_C(0x3fffffe) - (arg1[7]));
  uint32_t x9 = (UINT32_C(0x7fffffe) - (arg1[8]));
  uint32_t x10 = (UINT32_C(0x3fffffe) - (arg1[9]));
  out1[0] = x1;
  out1[1] = x2;
  out1[2] = x3;
  out1[3] = x4;
  out1[4] = x5;
  out1[5] = x6;
  out1[6] = x7;
  out1[7] = x8;
  out1[8] = x9;
  out1[9] = x10;
}
```