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

```asm
<RandomFunc>:
  endbr64
  push   %r14
  xor    %edx,%edx
  push   %rbp
  mov    $0x2,%ebp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x10,%rsp
  mov    0x8(%rdi),%r8
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  mov    (%rdi),%rax
  xor    $0x29be1cdb,%rax
  mov    %rax,(%rsp)
  test   %r8,%r8
  je     L10
  xchg   %ax,%ax
L92:
  mov    %rdx,%rcx
  shr    $0x4,%rcx
  and    $0x6,%ecx
  mov    %ecx,%eax
  or     $0x1,%eax
  cmpq   $0x0,(%rsp)
  je     L112
  movzbl 0x2(%rsp),%ecx
  movzbl 0x6(%rsp),%r10d
  movzbl 0x5(%rsp),%r9d
  mov    %cl,0x6(%rsp)
  mov    %ecx,%edi
  movzbl 0x7(%rsp),%ecx
  mov    %r10b,0x2(%rsp)
  mov    %r9b,0x7(%rsp)
  mov    %ecx,%esi
  mov    %cl,0x5(%rsp)
  cmp    $0x2,%r8
  jbe    L80
  mov    %rbp,%r14
  mov    %eax,%ecx
  mov    (%rsp),%r11
  shl    %cl,%r14
  cmp    %r14,%r11
  jne    L105
  mov    0x10(%rsp),%rsi
  movq   %r11,%xmm1
  pshuflw $0x4e,%xmm1,%xmm0
  mov    %esi,%ecx
  movq   %xmm0,(%rsp)
  and    $0x6,%ecx
  or     $0x1,%ecx
  shl    %cl,%rsi
  mov    %rsi,0x10(%rsp)
L97:
  cmp    $0x4,%r8
  jbe    L80
  mov    $0x4,%r11d
L24:
  mov    %r11,%rdi
  mov    %eax,%ecx
  mov    (%rsp),%rsi
  shl    %cl,%rdi
  cmp    %rdi,%rsi
  je     L66
  movzbl 0x2(%rsp),%r10d
  movzbl 0x6(%rsp),%edi
  movzbl 0x7(%rsp),%r9d
  movzbl 0x5(%rsp),%esi
  mov    %dil,0x2(%rsp)
  mov    %r10b,0x6(%rsp)
  mov    %sil,0x7(%rsp)
  mov    %r9b,0x5(%rsp)
L38:
  add    $0x2,%r11
  cmp    %r8,%r11
  jb     L24
  nopl   (%rax)
L80:
  add    $0x2,%rdx
  cmp    %r8,%rdx
  jb     L92
  mov    (%rsp),%rax
L10:
  shr    $0x5,%rax
  mov    %rax,(%rbx)
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L98
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r14
  ret
  nopl   0x0(%rax)
L112:
  cmp    $0x2,%r8
  jbe    L80
  movzbl 0x2(%rsp),%r10d
  movzbl 0x6(%rsp),%edi
  movzbl 0x7(%rsp),%r9d
  movzbl 0x5(%rsp),%esi
L105:
  mov    %dil,0x2(%rsp)
  mov    %r10b,0x6(%rsp)
  mov    %sil,0x7(%rsp)
  mov    %r9b,0x5(%rsp)
  jmp    L97
  nopl   (%rax)
L66:
  movq   %rsi,%xmm3
  pshuflw $0x4e,%xmm3,%xmm2
  movq   %xmm2,%rcx
  movq   %xmm2,%rsi
  and    $0x6,%ecx
  or     $0x1,%ecx
  shl    %cl,%rsi
  mov    %rsi,(%rsp,%r11,8)
  jmp    L38
L98:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void RandomFunc(unsigned long input[1], unsigned long output[1]) {
  unsigned long state[1];
  unsigned long local2;
  unsigned long local1;
  unsigned short copy11;
  char copy13;
  {
    state[0UL] = input[0UL] ^ 700325083UL;
    local1 = 0UL;
    while (local1 < input[1UL]) {
      local2 = 0UL;
      while (local2 < input[1UL]) {
        if (state[0UL] == local2 << (((local1 >> 4UL) & 7UL) | 1UL)) {
          copy11 = *((unsigned short *)(&state[0UL]) + 1);
          *((unsigned short *)(&state[0UL]) + 1) = *((unsigned short *)(&state[0UL]) + 3);
          *((unsigned short *)(&state[0UL]) + 3) = copy11;
          copy11 = *((unsigned short *)(&state[0UL]) + 0);
          *((unsigned short *)(&state[0UL]) + 0) = *((unsigned short *)(&state[0UL]) + 2);
          *((unsigned short *)(&state[0UL]) + 2) = copy11;
          state[local2] <<= (state[local2] & 7UL) | 1UL;
        } else {
          copy13 = *((char *)(&state[0UL]) + 2);
          *((char *)(&state[0UL]) + 2) = *((char *)(&state[0UL]) + 6);
          *((char *)(&state[0UL]) + 6) = copy13;
          copy13 = *((char *)(&state[0UL]) + 7);
          *((char *)(&state[0UL]) + 7) = *((char *)(&state[0UL]) + 5);
          *((char *)(&state[0UL]) + 5) = copy13;
        }
        local2 += 2UL;
      }
      local1 += 2UL;
    }
    output[0UL] = state[0UL] >> 5UL;
  }
}
```