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

```asm
<scrypt_core_r2_sidm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0xc8,%rsp
  mov    %rdi,-0xc8(%rbp)
  mov    %esi,-0xcc(%rbp)
  mov    %edx,-0xd0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  mov    %rsp,%rax
  mov    %rax,%rbx
  mov    -0xcc(%rbp),%eax
  shl    $0x5,%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0xa8(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%r10
  mov    $0x0,%r11d
  movslq %eax,%rdx
  mov    %rdx,%r8
  mov    $0x0,%r9d
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L26:
  cmp    %rdx,%rsp
  je     L70
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L26
L70:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L5
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L5:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0xc8(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x4,%rax
  mov    %rax,-0x90(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x8,%rax
  mov    %rax,-0x88(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0xc,%rax
  mov    %rax,-0x80(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x10,%rax
  mov    %rax,-0x78(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x18,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x1c,%rax
  mov    %rax,-0x60(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x20,%rax
  mov    %rax,-0x58(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x24,%rax
  mov    %rax,-0x50(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x28,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x2c,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x30,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x34,%rax
  mov    %rax,-0x30(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x38,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x3c,%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x38(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x30(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x20(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x48(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x40(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x50(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x50(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x48(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x40(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x68(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x78(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x60(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x70(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x78(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x68(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x70(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x60(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x78(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x70(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x68(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x60(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x88(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x98(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x80(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x90(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x98(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x88(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x90(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x80(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x98(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x90(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x88(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x80(%rbp),%rdx
  mov    %eax,(%rdx)
  movl   $0x0,-0xc0(%rbp)
  jmp    L67
L45:
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x1(%rax),%edx
  mov    -0x90(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x2(%rax),%edx
  mov    -0x88(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x3(%rax),%edx
  mov    -0x80(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x4(%rax),%edx
  mov    -0x78(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x5(%rax),%edx
  mov    -0x70(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x6(%rax),%edx
  mov    -0x68(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x7(%rax),%edx
  mov    -0x60(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x8(%rax),%edx
  mov    -0x58(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0x9(%rax),%edx
  mov    -0x50(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0xa(%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0xb(%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0xc(%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0xd(%rax),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0xe(%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xc0(%rbp),%eax
  shl    $0x4,%eax
  lea    0xf(%rax),%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0x30(%rbp),%r9
  mov    -0x38(%rbp),%r8
  mov    -0x80(%rbp),%rcx
  mov    -0x88(%rbp),%rdx
  mov    -0x90(%rbp),%rsi
  mov    -0x98(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x20(%rbp)
  push   -0x28(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm@plt>
  add    $0x20,%rsp
  mov    -0x90(%rbp),%r9
  mov    -0x98(%rbp),%r8
  mov    -0x60(%rbp),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rsi
  mov    -0x78(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x80(%rbp)
  push   -0x88(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm@plt>
  add    $0x20,%rsp
  mov    -0x70(%rbp),%r9
  mov    -0x78(%rbp),%r8
  mov    -0x40(%rbp),%rcx
  mov    -0x48(%rbp),%rdx
  mov    -0x50(%rbp),%rsi
  mov    -0x58(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x60(%rbp)
  push   -0x68(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm_swap@plt>
  add    $0x20,%rsp
  mov    -0x70(%rbp),%r9
  mov    -0x78(%rbp),%r8
  mov    -0x20(%rbp),%rcx
  mov    -0x28(%rbp),%rdx
  mov    -0x30(%rbp),%rsi
  mov    -0x38(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x60(%rbp)
  push   -0x68(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm@plt>
  add    $0x20,%rsp
  addl   $0x1,-0xc0(%rbp)
L67:
  mov    -0xc0(%rbp),%eax
  cmp    -0xcc(%rbp),%eax
  jl     L45
  movl   $0x0,-0xc0(%rbp)
  jmp    L44
L32:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <_mm_extract_epi16@plt>
  mov    %eax,%edx
  mov    -0xcc(%rbp),%eax
  sub    $0x1,%eax
  and    %edx,%eax
  shl    $0x4,%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xa0(%rbp),%rax
  mov    -0xac(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x98(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x98(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x90(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x90(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x2(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x88(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x88(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x3(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x80(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x80(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x4(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x78(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x78(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x5(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x70(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x70(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x6(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x68(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x68(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x7(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x60(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x60(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x8(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0x9(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x50(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0xa(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x48(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0xb(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x40(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0xc(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x38(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0xd(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x30(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0xe(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xac(%rbp),%eax
  lea    0xf(%rax),%edx
  mov    -0xa0(%rbp),%rax
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x20(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%r9
  mov    -0x38(%rbp),%r8
  mov    -0x80(%rbp),%rcx
  mov    -0x88(%rbp),%rdx
  mov    -0x90(%rbp),%rsi
  mov    -0x98(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x20(%rbp)
  push   -0x28(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm@plt>
  add    $0x20,%rsp
  mov    -0x90(%rbp),%r9
  mov    -0x98(%rbp),%r8
  mov    -0x60(%rbp),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rsi
  mov    -0x78(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x80(%rbp)
  push   -0x88(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm@plt>
  add    $0x20,%rsp
  mov    -0x70(%rbp),%r9
  mov    -0x78(%rbp),%r8
  mov    -0x40(%rbp),%rcx
  mov    -0x48(%rbp),%rdx
  mov    -0x50(%rbp),%rsi
  mov    -0x58(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x60(%rbp)
  push   -0x68(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm_swap@plt>
  add    $0x20,%rsp
  mov    -0x70(%rbp),%r9
  mov    -0x78(%rbp),%r8
  mov    -0x20(%rbp),%rcx
  mov    -0x28(%rbp),%rdx
  mov    -0x30(%rbp),%rsi
  mov    -0x38(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xd0(%rbp),%edi
  push   %rdi
  push   -0x60(%rbp)
  push   -0x68(%rbp)
  mov    %rax,%rdi
  call   <xor_salsa_sidm@plt>
  add    $0x20,%rsp
  addl   $0x1,-0xc0(%rbp)
L44:
  mov    -0xc0(%rbp),%eax
  cmp    -0xcc(%rbp),%eax
  jl     L32
  mov    -0x28(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x38(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x30(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x20(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x48(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x40(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x50(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x50(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x48(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x40(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x68(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x78(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x60(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x70(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x78(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x68(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x70(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x60(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x78(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x70(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x68(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x60(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x88(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x98(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xbc(%rbp)
  mov    -0x80(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x90(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb8(%rbp)
  mov    -0x98(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x88(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb4(%rbp)
  mov    -0x90(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x80(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xf,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    %eax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%ecx
  mov    -0xbc(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x98(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%ecx
  mov    -0xb8(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x90(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb8(%rbp),%ecx
  mov    -0xb4(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x88(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0xb4(%rbp),%ecx
  mov    -0xb0(%rbp),%eax
  mov    $0xcc,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <_mm_blend_epi16@plt>
  mov    -0x80(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    %rbx,%rsp
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L37
  call   <__stack_chk_fail@plt>
L37:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void scrypt_core_r2_sidm(__m128i *X, uint32_t Loops, uint32_t double_rounds) {
  uint32_t i, j;
  __m128i scratch[Loops * 8 * 4];
  __m128i *calc_1 = (__m128i *)&X[0];
  __m128i *calc_2 = (__m128i *)&X[1];
  __m128i *calc_3 = (__m128i *)&X[2];
  __m128i *calc_4 = (__m128i *)&X[3];
  __m128i *calc_11 = (__m128i *)&X[4];
  __m128i *calc_12 = (__m128i *)&X[5];
  __m128i *calc_13 = (__m128i *)&X[6];
  __m128i *calc_14 = (__m128i *)&X[7];
  __m128i *calc_21 = (__m128i *)&X[8];
  __m128i *calc_22 = (__m128i *)&X[9];
  __m128i *calc_23 = (__m128i *)&X[10];
  __m128i *calc_24 = (__m128i *)&X[11];
  __m128i *calc_31 = (__m128i *)&X[12];
  __m128i *calc_32 = (__m128i *)&X[13];
  __m128i *calc_33 = (__m128i *)&X[14];
  __m128i *calc_34 = (__m128i *)&X[15];
  __m128i _calc5;
  __m128i _calc6;
  __m128i _calc7;
  __m128i _calc8;
  _calc5 = _mm_blend_epi16(*calc_31, *calc_33, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_32, *calc_34, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_33, *calc_31, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_34, *calc_32, 0x0f);
  *calc_31 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_32 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_33 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_34 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
  _calc5 = _mm_blend_epi16(*calc_21, *calc_23, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_22, *calc_24, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_23, *calc_21, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_24, *calc_22, 0x0f);
  *calc_21 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_22 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_23 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_24 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
  _calc5 = _mm_blend_epi16(*calc_11, *calc_13, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_12, *calc_14, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_13, *calc_11, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_14, *calc_12, 0x0f);
  *calc_11 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_12 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_13 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_14 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
  _calc5 = _mm_blend_epi16(*calc_1, *calc_3, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_2, *calc_4, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_3, *calc_1, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_4, *calc_2, 0x0f);
  *calc_1 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_2 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_3 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_4 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
  for (i = 0; i < Loops; i++) {
    scratch[i * 16 + 0] = *calc_1;
    scratch[i * 16 + 1] = *calc_2;
    scratch[i * 16 + 2] = *calc_3;
    scratch[i * 16 + 3] = *calc_4;
    scratch[i * 16 + 4] = *calc_11;
    scratch[i * 16 + 5] = *calc_12;
    scratch[i * 16 + 6] = *calc_13;
    scratch[i * 16 + 7] = *calc_14;
    scratch[i * 16 + 8] = *calc_21;
    scratch[i * 16 + 9] = *calc_22;
    scratch[i * 16 + 10] = *calc_23;
    scratch[i * 16 + 11] = *calc_24;
    scratch[i * 16 + 12] = *calc_31;
    scratch[i * 16 + 13] = *calc_32;
    scratch[i * 16 + 14] = *calc_33;
    scratch[i * 16 + 15] = *calc_34;
    xor_salsa_sidm(calc_1, calc_2, calc_3, calc_4, calc_31, calc_32, calc_33, calc_34, double_rounds);
    xor_salsa_sidm(calc_11, calc_12, calc_13, calc_14, calc_1, calc_2, calc_3, calc_4, double_rounds);
    xor_salsa_sidm_swap(calc_21, calc_22, calc_23, calc_24, calc_11, calc_12, calc_13, calc_14, double_rounds);
    xor_salsa_sidm(calc_31, calc_32, calc_33, calc_34, calc_11, calc_12, calc_13, calc_14, double_rounds);
  }
  for (i = 0; i < Loops; i++) {
    j = 16 * (_mm_extract_epi16(*calc_31, 0x00) & (Loops - 1));
    *calc_1 = _mm_xor_si128(*calc_1, scratch[j]);
    *calc_2 = _mm_xor_si128(*calc_2, scratch[j + 1]);
    *calc_3 = _mm_xor_si128(*calc_3, scratch[j + 2]);
    *calc_4 = _mm_xor_si128(*calc_4, scratch[j + 3]);
    *calc_11 = _mm_xor_si128(*calc_11, scratch[j + 4]);
    *calc_12 = _mm_xor_si128(*calc_12, scratch[j + 5]);
    *calc_13 = _mm_xor_si128(*calc_13, scratch[j + 6]);
    *calc_14 = _mm_xor_si128(*calc_14, scratch[j + 7]);
    *calc_21 = _mm_xor_si128(*calc_21, scratch[j + 8]);
    *calc_22 = _mm_xor_si128(*calc_22, scratch[j + 9]);
    *calc_23 = _mm_xor_si128(*calc_23, scratch[j + 10]);
    *calc_24 = _mm_xor_si128(*calc_24, scratch[j + 11]);
    *calc_31 = _mm_xor_si128(*calc_31, scratch[j + 12]);
    *calc_32 = _mm_xor_si128(*calc_32, scratch[j + 13]);
    *calc_33 = _mm_xor_si128(*calc_33, scratch[j + 14]);
    *calc_34 = _mm_xor_si128(*calc_34, scratch[j + 15]);
    xor_salsa_sidm(calc_1, calc_2, calc_3, calc_4, calc_31, calc_32, calc_33, calc_34, double_rounds);
    xor_salsa_sidm(calc_11, calc_12, calc_13, calc_14, calc_1, calc_2, calc_3, calc_4, double_rounds);
    xor_salsa_sidm_swap(calc_21, calc_22, calc_23, calc_24, calc_11, calc_12, calc_13, calc_14, double_rounds);
    xor_salsa_sidm(calc_31, calc_32, calc_33, calc_34, calc_11, calc_12, calc_13, calc_14, double_rounds);
  }
  _calc5 = _mm_blend_epi16(*calc_31, *calc_33, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_32, *calc_34, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_33, *calc_31, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_34, *calc_32, 0x0f);
  *calc_31 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_32 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_33 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_34 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
  _calc5 = _mm_blend_epi16(*calc_21, *calc_23, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_22, *calc_24, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_23, *calc_21, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_24, *calc_22, 0x0f);
  *calc_21 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_22 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_23 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_24 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
  _calc5 = _mm_blend_epi16(*calc_11, *calc_13, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_12, *calc_14, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_13, *calc_11, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_14, *calc_12, 0x0f);
  *calc_11 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_12 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_13 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_14 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
  _calc5 = _mm_blend_epi16(*calc_1, *calc_3, 0xf0);
  _calc6 = _mm_blend_epi16(*calc_2, *calc_4, 0x0f);
  _calc7 = _mm_blend_epi16(*calc_3, *calc_1, 0xf0);
  _calc8 = _mm_blend_epi16(*calc_4, *calc_2, 0x0f);
  *calc_1 = _mm_blend_epi16(_calc5, _calc8, 0xcc);
  *calc_2 = _mm_blend_epi16(_calc6, _calc5, 0xcc);
  *calc_3 = _mm_blend_epi16(_calc7, _calc6, 0xcc);
  *calc_4 = _mm_blend_epi16(_calc8, _calc7, 0xcc);
}
```