user: Converte this assembly snippet into its equivalent C code:

```asm
<bitrv2conj>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xb8,%rsp
  mov    %rsi,%r13
  mov    %edi,%r14d
  sar    $0x2,%r14d
  cmp    $0x23,%edi
  jle    L129
  mov    %r14d,%eax
  mov    $0x4,%edx
L105:
  add    %edx,%edx
  sar    $0x2,%eax
  cmp    $0x8,%eax
  jg     L105
  mov    %edx,-0x68(%rsp)
  sar    %edi
  mov    %edi,-0x5c(%rsp)
  cmp    $0x8,%eax
  je     L166
L204:
  mov    $0x0,%r10d
  mov    $0x0,%r9d
  mov    $0x0,%r12d
  mov    -0x68(%rsp),%r8d
  test   %r8d,%r8d
  jle    L36
  movq   D7(%rip),%xmm3
  movslq %r8d,%rdi
  movslq -0x5c(%rsp),%rbx
  mov    %rbx,-0x78(%rsp)
  mov    $0x2,%eax
  sub    %rbx,%rax
  mov    %rax,-0x70(%rsp)
  lea    0x20(%r13),%r15
  movapd %xmm3,%xmm0
  mov    %r15,-0x68(%rsp)
  jmp    L95
L166:
  cmpl   $0x0,-0x68(%rsp)
  jle    L36
L28:
  mov    -0x68(%rsp),%ebx
  lea    (%rbx,%rbx,1),%eax
  mov    %eax,-0x78(%rsp)
  sub    $0x2,%eax
  mov    %eax,0x60(%rsp)
  mov    -0x5c(%rsp),%ecx
  movslq %ecx,%rdi
  mov    %rdi,0x48(%rsp)
  movslq %ebx,%rbx
  mov    %rbx,0x38(%rsp)
  lea    (%rbx,%rbx,1),%rsi
  mov    %rsi,0x40(%rsp)
  mov    %rdi,%rax
  add    %rsi,%rax
  mov    %rax,0x58(%rsp)
  mov    %rbx,%rax
  neg    %rax
  shl    $0x3,%rax
  mov    %rax,0x78(%rsp)
  lea    0x0(,%rdi,8),%rax
  mov    %rax,0x68(%rsp)
  mov    %rbx,%rax
  neg    %rax
  shl    $0x4,%rax
  mov    %rax,0x80(%rsp)
  lea    0x0(,%rbx,4),%rdx
  mov    %rbx,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,0x88(%rsp)
  mov    %rdi,%rax
  neg    %rax
  shl    $0x3,%rax
  mov    %rax,0x90(%rsp)
  mov    %rsi,%rax
  add    %rbx,%rax
  shl    $0x3,%rax
  mov    %rax,0x98(%rsp)
  mov    %rbx,%rax
  shl    $0x4,%rax
  mov    %rax,0x70(%rsp)
  movl   $0x0,-0x70(%rsp)
  movl   $0x0,0x34(%rsp)
  movl   $0x0,0x54(%rsp)
  movq   D7(%rip),%xmm3
  lea    0x2(%rcx),%eax
  mov    %eax,0x64(%rsp)
  sub    %rdi,%rsi
  mov    %rsi,%rax
  sub    %rbx,%rax
  mov    %rax,0xa0(%rsp)
  sub    %rbx,%rax
  mov    %rax,0xa8(%rsp)
  mov    $0x1,%eax
  sub    %rdi,%rax
  sub    %rbx,%rax
  sub    %rbx,%rax
  mov    %rax,0xb0(%rsp)
  movapd %xmm3,%xmm0
  mov    %r14d,0x30(%rsp)
  jmp    L12
L121:
  mov    0x34(%rsp),%edi
  movslq %edi,%r14
  lea    0x0(%r13,%r14,8),%rsi
  mov    0x38(%rsp),%r15
  lea    (%r14,%r15,1),%rax
  lea    0x0(%r13,%rax,8),%r11
  mov    0x40(%rsp),%rbx
  lea    (%r14,%rbx,1),%rax
  lea    0x0(%r13,%rax,8),%r10
  mov    %r15,%rdx
  add    %rbx,%rdx
  lea    (%rdx,%r14,1),%rax
  lea    0x0(%r13,%rax,8),%r9
  mov    %r15,%rax
  add    0x58(%rsp),%rax
  mov    %rax,-0x38(%rsp)
  add    %r14,%rax
  lea    0x0(%r13,%rax,8),%r8
  mov    -0x68(%rsp),%eax
  mov    %eax,%ebp
  add    %edi,%ebp
  mov    %eax,%ebx
  mov    %ebp,-0x28(%rsp)
  add    %ebp,%ebx
  mov    %eax,%ebp
  mov    %eax,%ecx
  mov    %ebx,-0x20(%rsp)
  add    %ebx,%ecx
  mov    0x48(%rsp),%r12
  sub    0x40(%rsp),%r12
  mov    %r12,%rax
  sub    %r15,%rax
  movslq %ecx,%rdi
  add    %rdi,%rax
  lea    0x0(%r13,%rax,8),%rdi
  add    -0x5c(%rsp),%ecx
  mov    %ecx,%r12d
  sub    %ebp,%r12d
  mov    %r12d,%eax
  movslq %r12d,%r12
  mov    %r12,-0x18(%rsp)
  sub    %r15,%r12
  lea    0x10(%r13,%r12,8),%r15
  mov    %r15,-0x58(%rsp)
  movslq %ecx,%r15
  mov    %r15,%rcx
  sub    0x40(%rsp),%rcx
  lea    0x18(%r13,%rcx,8),%r12
  mov    %eax,%ecx
  sub    %ebp,%ecx
  mov    %ecx,-0x10(%rsp)
  sub    %ebp,%ecx
  movslq %ecx,%rbx
  mov    %rbx,-0x8(%rsp)
  add    %rbx,%rdx
  lea    0x0(%r13,%rdx,8),%rdx
  mov    %rdx,-0x50(%rsp)
  lea    0x2(%rbp,%rcx,1),%edx
  movslq %edx,%rcx
  mov    0xa0(%rsp),%rbx
  lea    (%rbx,%rcx,1),%rax
  lea    0x0(%r13,%rax,8),%rbx
  mov    %rbx,-0x48(%rsp)
  add    %ebp,%edx
  movslq %edx,%rax
  mov    %rax,%rbp
  sub    0x48(%rsp),%rbp
  mov    %rbp,%rbx
  sub    0x38(%rsp),%rbx
  lea    0x0(%r13,%rbx,8),%rbp
  mov    %rbp,-0x40(%rsp)
  add    0xa8(%rsp),%rcx
  lea    0x0(%r13,%rcx,8),%rbp
  add    -0x68(%rsp),%edx
  movslq %edx,%rdx
  sub    -0x38(%rsp),%rdx
  lea    0x0(%r13,%rdx,8),%rdx
  mov    %rdx,-0x38(%rsp)
  add    0xb0(%rsp),%rax
  lea    0x0(%r13,%rax,8),%rdx
  mov    %rdx,-0x30(%rsp)
  mov    -0x70(%rsp),%edx
  add    $0x3,%edx
  mov    %edx,%eax
  shr    $0x2,%eax
  mov    %eax,%eax
  lea    (%r14,%rax,4),%rax
  lea    0x20(%r13,%rax,8),%rdx
  mov    %rdx,0x28(%rsp)
  movslq -0x28(%rsp),%rdx
  mov    0x48(%rsp),%rax
  add    0x38(%rsp),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,8),%rax
  mov    %rax,(%rsp)
  mov    0x58(%rsp),%rax
  add    %r14,%rax
  lea    0x0(%r13,%rax,8),%r14
  mov    %r14,-0x28(%rsp)
  movslq -0x20(%rsp),%rax
  shl    $0x3,%rax
  mov    0x78(%rsp),%rbx
  mov    0x68(%rsp),%r14
  add    %r14,%rbx
  mov    %rbx,%rcx
  add    %rax,%rcx
  lea    0x0(%r13,%rcx,1),%rbx
  mov    %rbx,0x8(%rsp)
  add    0x48(%rsp),%rdx
  lea    0x0(%r13,%rdx,8),%rdx
  mov    %rdx,-0x20(%rsp)
  mov    %r14,%rdx
  add    0x80(%rsp),%rdx
  add    %rax,%rdx
  lea    0x0(%r13,%rdx,1),%rax
  mov    %rax,0x10(%rsp)
  mov    0x88(%rsp),%rax
  lea    (%rax,%r15,8),%rax
  add    %r13,%rax
  mov    %rax,0x18(%rsp)
  movslq -0x10(%rsp),%rax
  mov    0x38(%rsp),%r15
  lea    (%r15,%rax,1),%rdx
  lea    0x0(%r13,%rdx,8),%rdx
  mov    %rdx,0x20(%rsp)
  mov    -0x18(%rsp),%rcx
  lea    0x0(%r13,%rcx,8),%rcx
  mov    %rcx,-0x18(%rsp)
  add    0x40(%rsp),%rax
  lea    0x0(%r13,%rax,8),%rax
  mov    %rax,-0x10(%rsp)
  mov    -0x8(%rsp),%rbx
  lea    0x0(,%rbx,8),%rax
  mov    0x90(%rsp),%rcx
  mov    %rcx,%rbx
  add    0x98(%rsp),%rbx
  add    %rax,%rbx
  add    %r13,%rbx
  add    0x70(%rsp),%rcx
  mov    %rcx,%rdx
  add    %rax,%rdx
  lea    0x0(%r13,%rdx,1),%rax
  mov    %rax,-0x8(%rsp)
  mov    0x50(%rsp),%edx
  mov    $0x0,%ecx
  mov    %rbp,-0x70(%rsp)
L216:
  movsd  (%rsi),%xmm4
  movsd  0x8(%rsi),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %edx,%rax
  shl    $0x3,%rax
  lea    0x0(%r13,%rax,1),%r14
  movsd  (%r14),%xmm5
  lea    0x8(%r13,%rax,1),%rax
  movsd  (%rax),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%rsi)
  movsd  %xmm2,0x8(%rsi)
  movsd  %xmm4,(%r14)
  movsd  %xmm1,(%rax)
  mov    -0x78(%rsp),%ebp
  mov    %ebp,%eax
  add    %edx,%eax
  movsd  (%r11),%xmm4
  movsd  0x8(%r11),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%r11)
  movsd  %xmm2,0x8(%r11)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  sub    -0x68(%rsp),%eax
  movsd  (%r10),%xmm4
  movsd  0x8(%r10),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%r10)
  movsd  %xmm2,0x8(%r10)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  add    %ebp,%eax
  movsd  (%r9),%xmm4
  movsd  0x8(%r9),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%r9)
  movsd  %xmm2,0x8(%r9)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  add    $0x2,%eax
  movsd  (%r8),%xmm4
  movsd  0x8(%r8),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%r8)
  movsd  %xmm2,0x8(%r8)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  sub    %ebp,%eax
  mov    (%rsp),%rbp
  movsd  0x0(%rbp,%rcx,1),%xmm4
  mov    -0x28(%rsp),%r14
  movsd  0x8(%r14,%rcx,1),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x0(%rbp,%rcx,1)
  mov    -0x28(%rsp),%rbp
  movsd  %xmm2,0x8(%rbp,%rcx,1)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  add    -0x68(%rsp),%eax
  mov    0x8(%rsp),%rbp
  movsd  0x0(%rbp,%rcx,1),%xmm4
  mov    -0x20(%rsp),%r15
  movsd  0x8(%r15,%rcx,1),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x0(%rbp,%rcx,1)
  mov    -0x20(%rsp),%rbp
  movsd  %xmm2,0x8(%rbp,%rcx,1)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  sub    -0x78(%rsp),%eax
  movsd  (%rdi),%xmm4
  mov    0x10(%rsp),%rbp
  movsd  0x8(%rbp,%rcx,1),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%rdi)
  movsd  %xmm2,0x8(%rbp,%rcx,1)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  add    -0x5c(%rsp),%eax
  mov    0x18(%rsp),%rbp
  movsd  0x10(%rbp,%rcx,1),%xmm4
  movsd  0x18(%rdi),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x10(%rbp,%rcx,1)
  movsd  %xmm2,0x18(%rdi)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  add    -0x78(%rsp),%eax
  mov    -0x58(%rsp),%rbp
  movsd  0x0(%rbp),%xmm4
  movsd  (%r12),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x0(%rbp)
  movsd  %xmm2,(%r12)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  sub    -0x68(%rsp),%eax
  mov    0x20(%rsp),%rbp
  movsd  0x10(%rbp,%rcx,1),%xmm4
  mov    -0x18(%rsp),%r15
  movsd  0x18(%r15,%rcx,1),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x10(%rbp,%rcx,1)
  mov    -0x18(%rsp),%rbp
  movsd  %xmm2,0x18(%rbp,%rcx,1)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  add    -0x78(%rsp),%eax
  mov    -0x50(%rsp),%rbp
  movsd  0x10(%rbp),%xmm4
  mov    -0x10(%rsp),%r15
  movsd  0x18(%r15,%rcx,1),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x10(%rbp)
  mov    -0x10(%rsp),%rbp
  movsd  %xmm2,0x18(%rbp,%rcx,1)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  sub    $0x2,%eax
  movsd  0x10(%rbx,%rcx,1),%xmm4
  movsd  0x18(%rbx,%rcx,1),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x10(%rbx,%rcx,1)
  movsd  %xmm2,0x18(%rbx,%rcx,1)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  sub    -0x78(%rsp),%eax
  mov    -0x48(%rsp),%rbp
  movsd  0x0(%rbp),%xmm4
  mov    -0x8(%rsp),%r15
  movsd  0x18(%r15,%rcx,1),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x0(%rbp)
  mov    -0x8(%rsp),%rbp
  movsd  %xmm2,0x18(%rbp,%rcx,1)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  add    -0x68(%rsp),%eax
  mov    -0x40(%rsp),%rbp
  movsd  0x0(%rbp),%xmm4
  mov    -0x70(%rsp),%r14
  movsd  0x8(%r14),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%r14
  shl    $0x3,%r14
  lea    0x0(%r13,%r14,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%r14,1),%r14
  movsd  (%r14),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x0(%rbp)
  mov    -0x70(%rsp),%rbp
  movsd  %xmm2,0x8(%rbp)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,(%r14)
  mov    -0x38(%rsp),%r15
  movsd  (%r15),%xmm4
  mov    -0x30(%rsp),%rbp
  movsd  0x0(%rbp),%xmm1
  xorpd  %xmm0,%xmm1
  sub    -0x78(%rsp),%eax
  cltq
  shl    $0x3,%rax
  lea    0x0(%r13,%rax,1),%r14
  movsd  (%r14),%xmm5
  lea    0x8(%r13,%rax,1),%rax
  movsd  (%rax),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%r15)
  movsd  %xmm2,0x0(%rbp)
  movsd  %xmm4,(%r14)
  movsd  %xmm1,(%rax)
  mov    0x30(%rsp),%eax
  xor    %eax,%edx
  cmp    %edx,%eax
  jle    L51
  mov    -0x70(%rsp),%rbp
L211:
  sar    %eax
  xor    %eax,%edx
  cmp    %eax,%edx
  jl     L211
  mov    %rbp,-0x70(%rsp)
L51:
  add    $0x20,%rsi
  add    $0x20,%r11
  add    $0x20,%r10
  add    $0x20,%r9
  add    $0x20,%r8
  add    $0x20,%rdi
  addq   $0x20,-0x58(%rsp)
  add    $0x20,%r12
  addq   $0x20,-0x50(%rsp)
  addq   $0x20,-0x48(%rsp)
  addq   $0x20,-0x40(%rsp)
  addq   $0x20,-0x70(%rsp)
  addq   $0x20,-0x38(%rsp)
  addq   $0x20,-0x30(%rsp)
  add    $0x20,%rcx
  cmp    0x28(%rsp),%rsi
  jne    L216
L175:
  mov    0x50(%rsp),%eax
  mov    %eax,-0x70(%rsp)
L12:
  mov    0x54(%rsp),%ebx
  lea    0x2(%rbx),%eax
  mov    %ebx,%edx
  mov    -0x5c(%rsp),%ebx
  add    %ebx,%edx
  movslq %eax,%rcx
  shl    $0x3,%rcx
  lea    -0x8(%r13,%rcx,1),%rsi
  movsd  (%rsi),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rsi)
  lea    0x0(%r13,%rcx,1),%r9
  movsd  (%r9),%xmm4
  lea    0x8(%r13,%rcx,1),%r8
  movsd  (%r8),%xmm1
  xorpd  %xmm3,%xmm1
  movslq %edx,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%rdi
  movsd  (%rdi),%xmm5
  lea    0x8(%r13,%rcx,1),%rsi
  movsd  (%rsi),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%r9)
  movsd  %xmm2,(%r8)
  movsd  %xmm4,(%rdi)
  movsd  %xmm1,(%rsi)
  lea    0x18(%r13,%rcx,1),%rcx
  movsd  (%rcx),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rcx)
  mov    -0x68(%rsp),%r10d
  add    %r10d,%eax
  add    -0x78(%rsp),%edx
  movslq %eax,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%r8
  movsd  (%r8),%xmm4
  lea    0x8(%r13,%rcx,1),%rdi
  movsd  (%rdi),%xmm1
  xorpd  %xmm3,%xmm1
  movslq %edx,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%rsi
  movsd  (%rsi),%xmm5
  lea    0x8(%r13,%rcx,1),%rcx
  movsd  (%rcx),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%r8)
  movsd  %xmm2,(%rdi)
  movsd  %xmm4,(%rsi)
  movsd  %xmm1,(%rcx)
  add    %r10d,%eax
  sub    %r10d,%edx
  movslq %eax,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%r8
  movsd  (%r8),%xmm4
  lea    0x8(%r13,%rcx,1),%rdi
  movsd  (%rdi),%xmm1
  xorpd  %xmm3,%xmm1
  movslq %edx,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%rsi
  movsd  (%rsi),%xmm5
  lea    0x8(%r13,%rcx,1),%rcx
  movsd  (%rcx),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%r8)
  movsd  %xmm2,(%rdi)
  movsd  %xmm4,(%rsi)
  movsd  %xmm1,(%rcx)
  sub    $0x2,%eax
  movslq %eax,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%r8
  movsd  (%r8),%xmm4
  lea    0x8(%r13,%rcx,1),%rdi
  movsd  (%rdi),%xmm1
  xorpd  %xmm3,%xmm1
  mov    %edx,%ecx
  sub    %ebx,%ecx
  movslq %ecx,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%rsi
  movsd  (%rsi),%xmm5
  lea    0x8(%r13,%rcx,1),%rcx
  movsd  (%rcx),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%r8)
  movsd  %xmm2,(%rdi)
  movsd  %xmm4,(%rsi)
  movsd  %xmm1,(%rcx)
  add    0x64(%rsp),%eax
  add    $0x2,%edx
  movslq %eax,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%r8
  movsd  (%r8),%xmm4
  lea    0x8(%r13,%rcx,1),%rdi
  movsd  (%rdi),%xmm1
  xorpd  %xmm3,%xmm1
  movslq %edx,%rcx
  shl    $0x3,%rcx
  lea    0x0(%r13,%rcx,1),%rsi
  movsd  (%rsi),%xmm5
  lea    0x8(%r13,%rcx,1),%rcx
  movsd  (%rcx),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%r8)
  movsd  %xmm2,(%rdi)
  movsd  %xmm4,(%rsi)
  movsd  %xmm1,(%rcx)
  sub    %r10d,%ebx
  sub    %ebx,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%r13,%rax,1),%rcx
  movsd  (%rcx),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rcx)
  lea    0x0(%r13,%rax,1),%rsi
  movsd  (%rsi),%xmm4
  lea    0x8(%r13,%rax,1),%rcx
  movsd  (%rcx),%xmm1
  xorpd  %xmm3,%xmm1
  mov    0x60(%rsp),%eax
  add    %edx,%eax
  cltq
  shl    $0x3,%rax
  lea    0x0(%r13,%rax,1),%rdi
  movsd  (%rdi),%xmm5
  lea    0x8(%r13,%rax,1),%rdx
  movsd  (%rdx),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%rsi)
  movsd  %xmm2,(%rcx)
  movsd  %xmm4,(%rdi)
  movsd  %xmm1,(%rdx)
  lea    0x18(%r13,%rax,1),%rax
  movsd  (%rax),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rax)
  mov    0x30(%rsp),%eax
  xor    %eax,0x34(%rsp)
  mov    0x34(%rsp),%edx
  cmp    %edx,%eax
  jle    L180
L179:
  sar    %eax
  xor    %eax,%edx
  cmp    %eax,%edx
  jl     L179
  mov    %edx,0x34(%rsp)
L180:
  mov    -0x70(%rsp),%eax
  add    $0x4,%eax
  mov    %eax,0x50(%rsp)
  cmp    -0x68(%rsp),%eax
  jge    L36
  mov    0x34(%rsp),%ebx
  add    %ebx,%eax
  mov    %eax,0x54(%rsp)
  cmp    %ebx,%eax
  jg     L121
  jmp    L175
L212:
  movslq %r9d,%rax
  lea    0x0(%r13,%rax,8),%rsi
  mov    -0x78(%rsp),%rcx
  lea    (%rax,%rcx,1),%rdx
  lea    0x0(%r13,%rdx,8),%rcx
  mov    -0x5c(%rsp),%edx
  add    %r9d,%edx
  movslq %edx,%rdx
  add    -0x70(%rsp),%rdx
  lea    0x0(%r13,%rdx,8),%r11
  add    $0x3,%r10d
  shr    $0x2,%r10d
  mov    %r10d,%edx
  lea    (%rax,%rdx,4),%rax
  mov    -0x68(%rsp),%rdx
  lea    (%rdx,%rax,8),%r10
  mov    %ebx,%eax
L183:
  movsd  (%rsi),%xmm4
  movsd  0x8(%rsi),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %eax,%rdx
  shl    $0x3,%rdx
  lea    0x0(%r13,%rdx,1),%rbp
  movsd  0x0(%rbp),%xmm5
  lea    0x8(%r13,%rdx,1),%rdx
  movsd  (%rdx),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%rsi)
  movsd  %xmm2,0x8(%rsi)
  movsd  %xmm4,0x0(%rbp)
  movsd  %xmm1,(%rdx)
  lea    (%r8,%rax,1),%edx
  movsd  (%rsi,%rdi,8),%xmm4
  movsd  0x8(%rsi,%rdi,8),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %edx,%rbp
  shl    $0x3,%rbp
  lea    0x0(%r13,%rbp,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%rbp,1),%rbp
  movsd  0x0(%rbp),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%rsi,%rdi,8)
  movsd  %xmm2,0x8(%rsi,%rdi,8)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,0x0(%rbp)
  add    $0x2,%edx
  movsd  (%rcx,%rdi,8),%xmm4
  movsd  0x8(%rcx,%rdi,8),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %edx,%rbp
  shl    $0x3,%rbp
  lea    0x0(%r13,%rbp,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%rbp,1),%rbp
  movsd  0x0(%rbp),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%rcx,%rdi,8)
  movsd  %xmm2,0x8(%rcx,%rdi,8)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,0x0(%rbp)
  sub    %r8d,%edx
  movsd  (%rcx),%xmm4
  movsd  0x8(%rcx),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %edx,%rbp
  shl    $0x3,%rbp
  lea    0x0(%r13,%rbp,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%rbp,1),%rbp
  movsd  0x0(%rbp),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%rcx)
  movsd  %xmm2,0x8(%rcx)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,0x0(%rbp)
  add    -0x5c(%rsp),%edx
  movsd  0x10(%rcx),%xmm4
  movsd  0x18(%rcx),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %edx,%rbp
  shl    $0x3,%rbp
  lea    0x0(%r13,%rbp,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%rbp,1),%rbp
  movsd  0x0(%rbp),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x10(%rcx)
  movsd  %xmm2,0x18(%rcx)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,0x0(%rbp)
  add    %r8d,%edx
  movsd  0x10(%rcx,%rdi,8),%xmm4
  movsd  0x18(%rcx,%rdi,8),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %edx,%rbp
  shl    $0x3,%rbp
  lea    0x0(%r13,%rbp,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%rbp,1),%rbp
  movsd  0x0(%rbp),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x10(%rcx,%rdi,8)
  movsd  %xmm2,0x18(%rcx,%rdi,8)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,0x0(%rbp)
  sub    $0x2,%edx
  movsd  0x10(%rsi,%rdi,8),%xmm4
  movsd  0x18(%rsi,%rdi,8),%xmm1
  xorpd  %xmm0,%xmm1
  movslq %edx,%rbp
  shl    $0x3,%rbp
  lea    0x0(%r13,%rbp,1),%r15
  movsd  (%r15),%xmm5
  lea    0x8(%r13,%rbp,1),%rbp
  movsd  0x0(%rbp),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,0x10(%rsi,%rdi,8)
  movsd  %xmm2,0x18(%rsi,%rdi,8)
  movsd  %xmm4,(%r15)
  movsd  %xmm1,0x0(%rbp)
  movsd  (%r11),%xmm4
  movsd  0x18(%rsi),%xmm1
  xorpd  %xmm0,%xmm1
  sub    %r8d,%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  lea    0x0(%r13,%rdx,1),%rbp
  movsd  0x0(%rbp),%xmm5
  lea    0x8(%r13,%rdx,1),%rdx
  movsd  (%rdx),%xmm2
  xorpd  %xmm0,%xmm2
  movsd  %xmm5,(%r11)
  movsd  %xmm2,0x18(%rsi)
  movsd  %xmm4,0x0(%rbp)
  movsd  %xmm1,(%rdx)
  xor    %r14d,%eax
  cmp    %eax,%r14d
  jle    L70
  mov    %r14d,%edx
L239:
  sar    %edx
  xor    %edx,%eax
  cmp    %edx,%eax
  jl     L239
L70:
  add    $0x20,%rsi
  add    $0x20,%rcx
  add    $0x20,%r11
  cmp    %r10,%rsi
  jne    L183
L59:
  mov    %ebx,%r10d
L95:
  lea    0x2(%r12),%eax
  add    -0x5c(%rsp),%r12d
  movslq %eax,%rdx
  shl    $0x3,%rdx
  lea    -0x8(%r13,%rdx,1),%rcx
  movsd  (%rcx),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rcx)
  lea    0x0(%r13,%rdx,1),%rbx
  movsd  (%rbx),%xmm4
  lea    0x8(%r13,%rdx,1),%r11
  movsd  (%r11),%xmm1
  xorpd  %xmm3,%xmm1
  movslq %r12d,%rdx
  shl    $0x3,%rdx
  lea    0x0(%r13,%rdx,1),%rsi
  movsd  (%rsi),%xmm5
  lea    0x8(%r13,%rdx,1),%rcx
  movsd  (%rcx),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%rbx)
  movsd  %xmm2,(%r11)
  movsd  %xmm4,(%rsi)
  movsd  %xmm1,(%rcx)
  lea    0x18(%r13,%rdx,1),%rdx
  movsd  (%rdx),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rdx)
  add    %r8d,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%r13,%rax,1),%rdx
  movsd  (%rdx),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rdx)
  lea    0x0(%r13,%rax,1),%rdx
  movsd  (%rdx),%xmm4
  lea    0x8(%r13,%rax,1),%rcx
  movsd  (%rcx),%xmm1
  xorpd  %xmm3,%xmm1
  lea    (%r8,%r12,1),%eax
  cltq
  shl    $0x3,%rax
  lea    0x0(%r13,%rax,1),%r11
  movsd  (%r11),%xmm5
  lea    0x8(%r13,%rax,1),%rsi
  movsd  (%rsi),%xmm2
  xorpd  %xmm3,%xmm2
  movsd  %xmm5,(%rdx)
  movsd  %xmm2,(%rcx)
  movsd  %xmm4,(%r11)
  movsd  %xmm1,(%rsi)
  lea    0x18(%r13,%rax,1),%rax
  movsd  (%rax),%xmm1
  xorpd  %xmm3,%xmm1
  movsd  %xmm1,(%rax)
  xor    %r14d,%r9d
  cmp    %r9d,%r14d
  jle    L190
  mov    %r14d,%eax
L107:
  sar    %eax
  xor    %eax,%r9d
  cmp    %eax,%r9d
  jl     L107
L190:
  lea    0x4(%r10),%ebx
  cmp    %ebx,%r8d
  jle    L36
  lea    (%rbx,%r9,1),%r12d
  cmp    %r9d,%r12d
  jg     L212
  jmp    L59
L144:
  movl   $0x4,-0x68(%rsp)
  jmp    L28
L129:
  sar    %edi
  mov    %edi,-0x5c(%rsp)
  cmp    $0x8,%r14d
  je     L144
  movl   $0x4,-0x68(%rsp)
  jmp    L204
L36:
  add    $0xb8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: read_data
arguments: data_tag: D7
type_infered: byte[8]

tool: {"D7": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
void bitrv2conj(int n, double *a) {
  int j0, k0, j1, k1, l, m, i, j, k, nh;
  double xr, xi, yr, yi;
  m = 4;
  for (l = n >> 2; l > 8; l >>= 2) {
    m <<= 1;
  }
  nh = n >> 1;
  if (l == 8) {
    j0 = 0;
    for (k0 = 0; k0 < m; k0 += 4) {
      k = k0;
      for (j = j0; j < j0 + k0; j += 4) {
        xr = a[j];
        xi = -a[j + 1];
        yr = a[k];
        yi = -a[k + 1];
        a[j] = yr;
        a[j + 1] = yi;
        a[k] = xr;
        a[k + 1] = xi;
        j1 = j + m;
        k1 = k + 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 -= m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += nh;
        k1 += 2;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 += m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += 2;
        k1 += nh;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 -= m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= nh;
        k1 -= 2;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 += m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        for (i = nh >> 1; i > (k ^= i); i >>= 1)
          ;
      }
      k1 = j0 + k0;
      j1 = k1 + 2;
      k1 += nh;
      a[j1 - 1] = -a[j1 - 1];
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      a[k1 + 3] = -a[k1 + 3];
      j1 += m;
      k1 += 2 * m;
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 += m;
      k1 -= m;
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 -= 2;
      k1 -= nh;
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 += nh + 2;
      k1 += nh + 2;
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 -= nh - m;
      k1 += 2 * m - 2;
      a[j1 - 1] = -a[j1 - 1];
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      a[k1 + 3] = -a[k1 + 3];
      for (i = nh >> 1; i > (j0 ^= i); i >>= 1)
        ;
    }
  } else {
    j0 = 0;
    for (k0 = 0; k0 < m; k0 += 4) {
      k = k0;
      for (j = j0; j < j0 + k0; j += 4) {
        xr = a[j];
        xi = -a[j + 1];
        yr = a[k];
        yi = -a[k + 1];
        a[j] = yr;
        a[j + 1] = yi;
        a[k] = xr;
        a[k + 1] = xi;
        j1 = j + m;
        k1 = k + m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += nh;
        k1 += 2;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += 2;
        k1 += nh;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= nh;
        k1 -= 2;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= m;
        xr = a[j1];
        xi = -a[j1 + 1];
        yr = a[k1];
        yi = -a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        for (i = nh >> 1; i > (k ^= i); i >>= 1)
          ;
      }
      k1 = j0 + k0;
      j1 = k1 + 2;
      k1 += nh;
      a[j1 - 1] = -a[j1 - 1];
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      a[k1 + 3] = -a[k1 + 3];
      j1 += m;
      k1 += m;
      a[j1 - 1] = -a[j1 - 1];
      xr = a[j1];
      xi = -a[j1 + 1];
      yr = a[k1];
      yi = -a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      a[k1 + 3] = -a[k1 + 3];
      for (i = nh >> 1; i > (j0 ^= i); i >>= 1)
        ;
    }
  }
}
```