user: What is the c source code of the assembly code below:

```asm
<neoscrypt_salsa>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x58(%rbp)
  mov    %esi,-0x5c(%rbp)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x44(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    %eax,-0x40(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x8(%rax),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0xc(%rax),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x10(%rax),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x14(%rax),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x18(%rax),%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x1c(%rax),%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x20(%rax),%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x24(%rax),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x28(%rax),%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x2c(%rax),%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x30(%rax),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x34(%rax),%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x38(%rax),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x58(%rbp),%rax
  mov    0x3c(%rax),%eax
  mov    %eax,-0x8(%rbp)
  jmp    L16
L13:
  mov    -0x44(%rbp),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x44(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%edx
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%edx
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x40(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x1c(%rbp)
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x8(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x40(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x44(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x30(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x1c(%rbp)
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x19,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x9,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x17,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0xd,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x13,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x12,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0xe,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    %eax,-0x8(%rbp)
  subl   $0x2,-0x5c(%rbp)
L16:
  cmpl   $0x0,-0x5c(%rbp)
  jne    L13
  mov    -0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x44(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  mov    -0x40(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    -0x3c(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    -0x38(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    -0x34(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    -0x30(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x18,%rax
  mov    -0x2c(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x1c,%rax
  mov    -0x28(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x20,%rax
  mov    -0x24(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x24,%rax
  mov    -0x20(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x28,%rax
  mov    -0x1c(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x2c,%rax
  mov    -0x18(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x30,%rax
  mov    -0x14(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x34,%rax
  mov    -0x10(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x38,%rax
  mov    -0xc(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x3c,%rax
  mov    -0x8(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void neoscrypt_salsa(uint *X, uint rounds) {
  uint x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, t;
  x0 = X[0];
  x1 = X[1];
  x2 = X[2];
  x3 = X[3];
  x4 = X[4];
  x5 = X[5];
  x6 = X[6];
  x7 = X[7];
  x8 = X[8];
  x9 = X[9];
  x10 = X[10];
  x11 = X[11];
  x12 = X[12];
  x13 = X[13];
  x14 = X[14];
  x15 = X[15];
  for (; rounds; rounds -= 2) {
    t = x0 + x12;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x4 ^= t;
    t = x4 + x0;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x8 ^= t;
    t = x8 + x4;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x12 ^= t;
    t = x12 + x8;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x0 ^= t;
    ;
    t = x5 + x1;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x9 ^= t;
    t = x9 + x5;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x13 ^= t;
    t = x13 + x9;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x1 ^= t;
    t = x1 + x13;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x5 ^= t;
    ;
    t = x10 + x6;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x14 ^= t;
    t = x14 + x10;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x2 ^= t;
    t = x2 + x14;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x6 ^= t;
    t = x6 + x2;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x10 ^= t;
    ;
    t = x15 + x11;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x3 ^= t;
    t = x3 + x15;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x7 ^= t;
    t = x7 + x3;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x11 ^= t;
    t = x11 + x7;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x15 ^= t;
    ;
    t = x0 + x3;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x1 ^= t;
    t = x1 + x0;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x2 ^= t;
    t = x2 + x1;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x3 ^= t;
    t = x3 + x2;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x0 ^= t;
    ;
    t = x5 + x4;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x6 ^= t;
    t = x6 + x5;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x7 ^= t;
    t = x7 + x6;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x4 ^= t;
    t = x4 + x7;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x5 ^= t;
    ;
    t = x10 + x9;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x11 ^= t;
    t = x11 + x10;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x8 ^= t;
    t = x8 + x11;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x9 ^= t;
    t = x9 + x8;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x10 ^= t;
    ;
    t = x15 + x14;
    t = (((t) << (7)) | ((t) >> (32 - 7)));
    x12 ^= t;
    t = x12 + x15;
    t = (((t) << (9)) | ((t) >> (32 - 9)));
    x13 ^= t;
    t = x13 + x12;
    t = (((t) << (13)) | ((t) >> (32 - 13)));
    x14 ^= t;
    t = x14 + x13;
    t = (((t) << (18)) | ((t) >> (32 - 18)));
    x15 ^= t;
    ;
  }
  X[0] += x0;
  X[1] += x1;
  X[2] += x2;
  X[3] += x3;
  X[4] += x4;
  X[5] += x5;
  X[6] += x6;
  X[7] += x7;
  X[8] += x8;
  X[9] += x9;
  X[10] += x10;
  X[11] += x11;
  X[12] += x12;
  X[13] += x13;
  X[14] += x14;
  X[15] += x15;
}
```