user: 下面的汇编指令对应的C源代码是什么：

```asm
<serpent_decrypt>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%r8
  mov    %rsi,%rcx
  mov    %rdx,%rax
  mov    (%rdi),%rdx
  mov    0x8(%rdi),%rdi
  mov    0x10(%r8),%rsi
  mov    0x18(%r8),%r10
  xor    0x400(%rax),%rdx
  xor    0x408(%rax),%rdi
  xor    0x410(%rax),%rsi
  xor    0x418(%rax),%r10
  mov    %rdx,%rbx
  and    %rdi,%rbx
  mov    %rdx,%r11
  or     %rdi,%r11
  and    %r10,%r11
  mov    %rsi,%r9
  or     %rbx,%r9
  xor    %r11,%r9
  xor    %rdi,%r11
  mov    %r10,%r8
  xor    %r9,%r8
  not    %r8
  or     %r11,%r8
  xor    %rdx,%r8
  or     %r10,%rdx
  and    %rsi,%rdx
  xor    %r10,%rdi
  or     %rbx,%rdi
  xor    %rdi,%rdx
  xor    0x3e0(%rax),%rsi
  xor    %r11,%rsi
  mov    %r10,%rdi
  or     %r8,%rdi
  xor    %rdi,%rsi
  mov    %r8,%rdi
  xor    0x3e8(%rax),%rdi
  xor    0x3f0(%rax),%rdx
  xor    0x3f8(%rax),%r9
  mov    %r9,%r10
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdx,%r8
  shl    $0xa,%r8
  shr    $0x16,%rdx
  or     %rdx,%r8
  xor    %r9,%r8
  mov    %rdi,%rdx
  shl    $0x7,%rdx
  xor    %r8,%rdx
  mov    %rdi,%r9
  xor    %r10,%r9
  xor    %rsi,%r9
  mov    %r10,%r8
  shl    $0x19,%r8
  mov    %r10,%rsi
  shr    $0x7,%rsi
  or     %rsi,%r8
  xor    %rdx,%r8
  lea    0x0(,%r9,8),%rsi
  xor    %r8,%rsi
  mov    %rdi,%r8
  shl    $0x1f,%r8
  shr    %rdi
  or     %rdi,%r8
  xor    %rdx,%r8
  xor    %r9,%r8
  mov    %rdx,%rdi
  shl    $0x1d,%rdi
  shr    $0x3,%rdx
  or     %rdx,%rdi
  mov    %r9,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%r9
  or     %r9,%rdx
  mov    %rdi,%r10
  xor    %rdx,%r10
  not    %rdi
  mov    %r8,%rbx
  and    %r10,%rbx
  or     %rsi,%rbx
  mov    %r8,%r12
  or     %rdi,%r12
  and    %rdx,%r12
  mov    %rsi,%rbp
  xor    %r8,%rbp
  mov    %rdx,%r9
  or     %rdi,%r9
  xor    %r9,%rbp
  mov    %rbx,%r13
  xor    %r12,%r13
  not    %r13
  mov    %r13,%r11
  xor    0x3c0(%rax),%r11
  mov    %rbp,%r9
  xor    0x3c8(%rax),%r9
  or     %rdi,%rsi
  xor    %r10,%rsi
  xor    0x3d0(%rax),%rsi
  and    %r13,%r8
  xor    %r8,%rsi
  xor    0x3d8(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdx
  and    %rbx,%r10
  xor    %r10,%rdx
  mov    %rsi,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rsi
  or     %rdi,%rsi
  mov    %r11,%r8
  shl    $0x1b,%r8
  shr    $0x5,%r11
  or     %r11,%r8
  mov    %r9,%rdi
  shl    $0x7,%rdi
  xor    %rdx,%rdi
  xor    %rsi,%rdi
  mov    %r9,%rsi
  xor    %rdx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r8
  shl    $0x19,%r8
  shr    $0x7,%rdx
  or     %r8,%rdx
  lea    0x0(,%rsi,8),%rbp
  xor    %rdi,%rbp
  xor    %rdx,%rbp
  mov    %r9,%r8
  shl    $0x1f,%r8
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %rdi,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%rdi
  or     %rdi,%rdx
  mov    %rsi,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rsi
  or     %rsi,%rdi
  mov    %rbp,%rsi
  and    %rdi,%rsi
  mov    %rdx,%r10
  xor    %rsi,%r10
  mov    %rbp,%r9
  xor    %rdi,%r9
  mov    %r8,%r11
  and    %r10,%r11
  xor    %r11,%r9
  and    %rdi,%rdx
  or     %r8,%rdx
  xor    %rsi,%rdx
  mov    %r9,%rbx
  xor    0x3a0(%rax),%rbx
  mov    %rdx,%r11
  xor    0x3a8(%rax),%r11
  xor    %r9,%r11
  mov    %r8,%rsi
  xor    0x3b0(%rax),%rsi
  xor    %rbp,%rsi
  xor    %r10,%rsi
  or     %r9,%rdx
  xor    %rsi,%rdx
  and    %r9,%rdi
  not    %r8
  or     %r8,%rdi
  xor    0x3b8(%rax),%r10
  xor    %r10,%rdi
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rdx,%rsi
  mov    %r11,%rdx
  shl    $0x7,%rdx
  xor    %rdi,%rdx
  xor    %rsi,%rdx
  mov    %rbx,%rsi
  shl    $0x1b,%rsi
  shr    $0x5,%rbx
  or     %rsi,%rbx
  xor    %rdi,%rbx
  xor    %r11,%rbx
  mov    %r11,%r8
  shl    $0x1f,%r8
  shr    %r11
  or     %r11,%r8
  mov    %rdi,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%rdi
  or     %rsi,%rdi
  xor    %rdx,%rdi
  lea    0x0(,%rbx,8),%rsi
  xor    %rdi,%rsi
  mov    %rdx,%r9
  xor    %rbx,%r9
  xor    %r8,%r9
  mov    %rdx,%r11
  shl    $0x1d,%r11
  shr    $0x3,%rdx
  or     %rdx,%r11
  mov    %rbx,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rbx
  or     %rbx,%rdi
  mov    %rsi,%rdx
  or     %r9,%rdx
  mov    %rdi,%rbx
  and    %rdx,%rbx
  mov    %rsi,%r8
  or     %r11,%r8
  xor    %r9,%r8
  mov    %rdi,%rbp
  and    %r8,%rbp
  mov    %rsi,%r9
  xor    %r11,%r9
  xor    %rbp,%r9
  mov    %rbx,%r12
  not    %r12
  or     %r9,%r12
  mov    %rdi,%r10
  xor    0x380(%rax),%r10
  xor    %r8,%r10
  xor    %r12,%r10
  xor    0x388(%rax),%r9
  xor    0x390(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdi
  or     %r11,%rdi
  xor    %rdi,%rdx
  xor    0x398(%rax),%rsi
  xor    %rbx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rdx
  or     %rdx,%rdi
  mov    %r10,%rdx
  shl    $0x1b,%rdx
  shr    $0x5,%r10
  or     %r10,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %r9,%rdi
  xor    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %rsi,%rdx
  shl    $0x19,%rdx
  shr    $0x7,%rsi
  or     %rsi,%rdx
  lea    0x0(,%rdi,8),%r10
  xor    %r8,%r10
  xor    %rdx,%r10
  mov    %r9,%r11
  shl    $0x1f,%r11
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r8,%r11
  mov    %r8,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%r8
  or     %r8,%rdx
  mov    %rdi,%rsi
  shl    $0x13,%rsi
  shr    $0xd,%rdi
  or     %rdi,%rsi
  mov    %r10,%r8
  or     %rdx,%r8
  mov    %r10,%rdi
  or     %rsi,%rdi
  xor    %rdi,%rdx
  xor    %rsi,%r10
  xor    %r11,%rdi
  and    %rdx,%rdi
  xor    %r10,%rdi
  mov    %r11,%r9
  and    %r8,%r9
  xor    %rdx,%r9
  mov    %r9,%rbx
  xor    0x360(%rax),%rbx
  xor    %rsi,%rdx
  or     %r10,%r9
  and    %r9,%rdx
  mov    %r11,%r9
  xor    0x368(%rax),%r9
  xor    %r9,%rdx
  mov    %rdi,%r9
  xor    0x370(%rax),%r9
  xor    %r10,%r8
  xor    0x378(%rax),%r8
  and    %rdi,%rsi
  or     %r11,%rsi
  xor    %rsi,%r8
  mov    %r9,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%r9
  or     %r9,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r9
  shl    $0x7,%r9
  xor    %rsi,%r9
  mov    %rbx,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%rbx
  or     %rbx,%rdi
  xor    %rdx,%rdi
  xor    %r8,%rdi
  mov    %r8,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%r8
  or     %rsi,%r8
  xor    %r9,%r8
  lea    0x0(,%rdi,8),%rsi
  xor    %r8,%rsi
  mov    %rdx,%r11
  shl    $0x1f,%r11
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r9,%r11
  mov    %r9,%r8
  shl    $0x1d,%r8
  shr    $0x3,%r9
  or     %r9,%r8
  mov    %rdi,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%rdi
  or     %rdi,%rdx
  mov    %rsi,%r9
  xor    %r8,%r9
  mov    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %r11,%r10
  or     %r9,%r10
  xor    %r10,%rdi
  mov    %r8,%rbx
  or     %rdx,%rbx
  and    %r8,%rdx
  mov    %rsi,%r10
  not    %r10
  or     %r10,%rdx
  mov    %r11,%r10
  and    %rbx,%r10
  xor    %rdx,%r10
  or     %rdi,%rsi
  and    %r11,%rsi
  and    %rbx,%r9
  xor    %r9,%rsi
  mov    %rdi,%r11
  xor    0x340(%rax),%r11
  mov    %rsi,%r9
  xor    0x348(%rax),%r9
  xor    0x350(%rax),%rdx
  xor    %rdi,%rdx
  and    %r10,%r8
  xor    %r8,%rdx
  xor    %rsi,%rdx
  xor    0x358(%rax),%r10
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rsi,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %r10,%r8
  xor    %rdx,%r8
  mov    %r11,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%r11
  or     %r11,%rdi
  xor    %r10,%rdi
  xor    %r9,%rdi
  mov    %r10,%r11
  shl    $0x19,%r11
  mov    %r10,%rdx
  shr    $0x7,%rdx
  or     %rdx,%r11
  lea    0x0(,%rdi,8),%rdx
  xor    %rdx,%r11
  xor    %r8,%r11
  mov    %r9,%rdx
  shl    $0x1f,%rdx
  mov    %r9,%rsi
  shr    %rsi
  or     %rsi,%rdx
  xor    %rdi,%rdx
  xor    %r8,%rdx
  mov    %r8,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%r8
  or     %r8,%rsi
  mov    %rdi,%r8
  shl    $0x13,%r8
  shr    $0xd,%rdi
  or     %rdi,%r8
  mov    %rdx,%r9
  xor    %r8,%r9
  mov    %rsi,%rbp
  and    %r8,%rbp
  mov    %r11,%r10
  or     %rdx,%r10
  xor    %rsi,%r10
  mov    %r8,%rbx
  or     %r10,%rbx
  and    %r9,%rbx
  mov    %r11,%rdi
  or     %rbp,%rdi
  xor    %rbx,%rdi
  not    %rdi
  xor    %rbx,%rdx
  and    %r11,%rdx
  mov    %rbp,%r11
  or     %r10,%r11
  xor    %r11,%rdx
  xor    0x320(%rax),%rsi
  xor    %rbx,%rsi
  xor    %rdx,%rsi
  or     %rdi,%r8
  xor    %r8,%rsi
  xor    0x328(%rax),%rdx
  xor    0x330(%rax),%rdi
  xor    0x338(%rax),%r9
  xor    %r10,%r9
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdi,%r10
  shl    $0xa,%r10
  shr    $0x16,%rdi
  or     %r10,%rdi
  mov    %rdx,%r8
  shl    $0x7,%r8
  xor    %r8,%rdi
  xor    %r9,%rdi
  mov    %rdi,%r10
  mov    %rdx,%r8
  xor    %r9,%r8
  xor    %rsi,%r8
  mov    %r9,%rdi
  shl    $0x19,%rdi
  mov    %r9,%rsi
  shr    $0x7,%rsi
  or     %rsi,%rdi
  xor    %r10,%rdi
  lea    0x0(,%r8,8),%rsi
  xor    %rdi,%rsi
  mov    %rdx,%rdi
  shl    $0x1f,%rdi
  shr    %rdx
  or     %rdx,%rdi
  xor    %r10,%rdi
  xor    %r8,%rdi
  mov    %r10,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%r10
  or     %r10,%rdx
  mov    %r8,%r11
  shl    $0x13,%r11
  shr    $0xd,%r8
  or     %r8,%r11
  mov    %rsi,%r10
  xor    %rdx,%r10
  mov    %rdi,%rbx
  or     %rdx,%rbx
  mov    %rdi,%r9
  or     %r11,%r9
  xor    %r10,%r9
  mov    %r9,%r8
  not    %r8
  and    %rdx,%r10
  or     %r11,%r10
  xor    %rsi,%rdi
  and    %rbx,%rdi
  xor    %rdi,%r10
  mov    %r11,%rbp
  or     %r9,%rbp
  xor    %r10,%rbp
  or     %r8,%rsi
  xor    %rbx,%rsi
  mov    %rbp,%rdi
  xor    %rsi,%rdi
  xor    0x300(%rax),%rdx
  xor    %r11,%rdx
  and    %rbp,%r9
  or     %r9,%rsi
  xor    %rsi,%rdx
  xor    0x308(%rax),%r10
  xor    0x310(%rax),%r8
  xor    0x318(%rax),%rdi
  mov    %rdx,%rsi
  shl    $0x1b,%rsi
  shr    $0x5,%rdx
  or     %rdx,%rsi
  mov    %r8,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%r8
  or     %r8,%rdx
  mov    %r10,%r8
  shl    $0x7,%r8
  xor    %r8,%rdx
  xor    %rdi,%rdx
  mov    %r10,%r8
  xor    %rdi,%r8
  xor    %rsi,%r8
  mov    %rdi,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%rdi
  or     %rdi,%rsi
  xor    %rdx,%rsi
  lea    0x0(,%r8,8),%rdi
  xor    %rsi,%rdi
  mov    %rdi,%r9
  mov    %r10,%rdi
  shl    $0x1f,%rdi
  mov    %r10,%rsi
  shr    %rsi
  or     %rsi,%rdi
  xor    %rdx,%rdi
  xor    %r8,%rdi
  mov    %rdx,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%rdx
  or     %rdx,%rsi
  mov    %r8,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%r8
  or     %r8,%rdx
  mov    %rdi,%rbx
  and    %rdx,%rbx
  mov    %rdi,%r11
  or     %rdx,%r11
  and    %r9,%r11
  mov    %rsi,%r8
  or     %rbx,%r8
  xor    %r11,%r8
  xor    %rdi,%r11
  mov    %r9,%r10
  xor    %r8,%r10
  not    %r10
  or     %r11,%r10
  xor    %rdx,%r10
  or     %r9,%rdx
  and    %rsi,%rdx
  xor    %r9,%rdi
  or     %rbx,%rdi
  xor    %rdi,%rdx
  xor    0x2e0(%rax),%rsi
  xor    %r11,%rsi
  mov    %r9,%rdi
  or     %r10,%rdi
  xor    %rdi,%rsi
  mov    %r10,%rdi
  xor    0x2e8(%rax),%rdi
  xor    0x2f0(%rax),%rdx
  mov    %r8,%r11
  xor    0x2f8(%rax),%r11
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdx,%r10
  shl    $0xa,%r10
  shr    $0x16,%rdx
  or     %rdx,%r10
  xor    %r11,%r10
  mov    %rdi,%rdx
  shl    $0x7,%rdx
  xor    %r10,%rdx
  mov    %rdi,%r9
  xor    %r11,%r9
  xor    %rsi,%r9
  mov    %r11,%r8
  shl    $0x19,%r8
  mov    %r11,%rsi
  shr    $0x7,%rsi
  or     %rsi,%r8
  xor    %rdx,%r8
  lea    0x0(,%r9,8),%rsi
  xor    %r8,%rsi
  mov    %rdi,%r8
  shl    $0x1f,%r8
  shr    %rdi
  or     %rdi,%r8
  xor    %rdx,%r8
  xor    %r9,%r8
  mov    %rdx,%rdi
  shl    $0x1d,%rdi
  shr    $0x3,%rdx
  or     %rdx,%rdi
  mov    %r9,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%r9
  or     %r9,%rdx
  mov    %rdi,%r10
  xor    %rdx,%r10
  not    %rdi
  mov    %r8,%rbx
  and    %r10,%rbx
  or     %rsi,%rbx
  mov    %r8,%r12
  or     %rdi,%r12
  and    %rdx,%r12
  mov    %rsi,%rbp
  xor    %r8,%rbp
  mov    %rdx,%r9
  or     %rdi,%r9
  xor    %r9,%rbp
  mov    %rbx,%r13
  xor    %r12,%r13
  not    %r13
  mov    %r13,%r11
  xor    0x2c0(%rax),%r11
  mov    %rbp,%r9
  xor    0x2c8(%rax),%r9
  or     %rdi,%rsi
  xor    %r10,%rsi
  xor    0x2d0(%rax),%rsi
  and    %r13,%r8
  xor    %r8,%rsi
  xor    0x2d8(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdx
  and    %rbx,%r10
  xor    %r10,%rdx
  mov    %rsi,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rsi
  or     %rdi,%rsi
  mov    %r11,%r8
  shl    $0x1b,%r8
  shr    $0x5,%r11
  or     %r11,%r8
  mov    %r9,%rdi
  shl    $0x7,%rdi
  xor    %rdx,%rdi
  xor    %rsi,%rdi
  mov    %r9,%rsi
  xor    %rdx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r8
  shl    $0x19,%r8
  shr    $0x7,%rdx
  or     %r8,%rdx
  lea    0x0(,%rsi,8),%rbp
  xor    %rdi,%rbp
  xor    %rdx,%rbp
  mov    %r9,%r8
  shl    $0x1f,%r8
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %rdi,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%rdi
  or     %rdi,%rdx
  mov    %rsi,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rsi
  or     %rsi,%rdi
  mov    %rbp,%rsi
  and    %rdi,%rsi
  mov    %rdx,%r10
  xor    %rsi,%r10
  mov    %rbp,%r9
  xor    %rdi,%r9
  mov    %r8,%r11
  and    %r10,%r11
  xor    %r11,%r9
  and    %rdi,%rdx
  or     %r8,%rdx
  xor    %rsi,%rdx
  mov    %r9,%rbx
  xor    0x2a0(%rax),%rbx
  mov    %rdx,%r11
  xor    0x2a8(%rax),%r11
  xor    %r9,%r11
  mov    %r8,%rsi
  xor    0x2b0(%rax),%rsi
  xor    %rbp,%rsi
  xor    %r10,%rsi
  or     %r9,%rdx
  xor    %rsi,%rdx
  and    %r9,%rdi
  not    %r8
  or     %r8,%rdi
  xor    0x2b8(%rax),%r10
  xor    %r10,%rdi
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rdx,%rsi
  mov    %r11,%rdx
  shl    $0x7,%rdx
  xor    %rdi,%rdx
  xor    %rsi,%rdx
  mov    %rbx,%rsi
  shl    $0x1b,%rsi
  shr    $0x5,%rbx
  or     %rsi,%rbx
  xor    %rdi,%rbx
  xor    %r11,%rbx
  mov    %r11,%r10
  shl    $0x1f,%r10
  shr    %r11
  or     %r11,%r10
  mov    %rdi,%r8
  shl    $0x19,%r8
  shr    $0x7,%rdi
  or     %r8,%rdi
  xor    %rdx,%rdi
  lea    0x0(,%rbx,8),%rsi
  xor    %rdi,%rsi
  mov    %rdx,%r9
  xor    %rbx,%r9
  xor    %r10,%r9
  mov    %rdx,%r11
  shl    $0x1d,%r11
  shr    $0x3,%rdx
  or     %rdx,%r11
  mov    %rbx,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rbx
  or     %rbx,%rdi
  mov    %rsi,%rdx
  or     %r9,%rdx
  mov    %rdi,%rbx
  and    %rdx,%rbx
  mov    %rsi,%r8
  or     %r11,%r8
  xor    %r9,%r8
  mov    %rdi,%rbp
  and    %r8,%rbp
  mov    %rsi,%r9
  xor    %r11,%r9
  xor    %rbp,%r9
  mov    %rbx,%r12
  not    %r12
  or     %r9,%r12
  mov    %rdi,%r10
  xor    0x280(%rax),%r10
  xor    %r8,%r10
  xor    %r12,%r10
  xor    0x288(%rax),%r9
  xor    0x290(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdi
  or     %r11,%rdi
  xor    %rdi,%rdx
  xor    0x298(%rax),%rsi
  xor    %rbx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rdx
  or     %rdx,%rdi
  mov    %r10,%rdx
  shl    $0x1b,%rdx
  shr    $0x5,%r10
  or     %r10,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %r9,%rdi
  xor    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %rsi,%rdx
  shl    $0x19,%rdx
  shr    $0x7,%rsi
  or     %rsi,%rdx
  lea    0x0(,%rdi,8),%r10
  xor    %r8,%r10
  xor    %rdx,%r10
  mov    %r9,%r11
  shl    $0x1f,%r11
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r8,%r11
  mov    %r8,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%r8
  or     %r8,%rdx
  mov    %rdi,%rsi
  shl    $0x13,%rsi
  shr    $0xd,%rdi
  or     %rdi,%rsi
  mov    %r10,%r8
  or     %rdx,%r8
  mov    %r10,%rbx
  or     %rsi,%rbx
  xor    %rbx,%rdx
  xor    %rsi,%r10
  xor    %r11,%rbx
  and    %rdx,%rbx
  xor    %r10,%rbx
  mov    %r11,%rdi
  and    %r8,%rdi
  xor    %rdx,%rdi
  mov    %rdi,%rbp
  xor    0x260(%rax),%rbp
  xor    %rsi,%rdx
  or     %r10,%rdi
  and    %rdi,%rdx
  mov    %r11,%rdi
  xor    0x268(%rax),%rdi
  xor    %rdi,%rdx
  mov    %rbx,%rdi
  xor    0x270(%rax),%rdi
  xor    %r10,%r8
  xor    0x278(%rax),%r8
  and    %rbx,%rsi
  or     %r11,%rsi
  xor    %rsi,%r8
  mov    %rdi,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdi
  or     %rdi,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r9
  shl    $0x7,%r9
  xor    %rsi,%r9
  mov    %rbp,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%rbp
  or     %rbp,%rdi
  xor    %rdx,%rdi
  xor    %r8,%rdi
  mov    %r8,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%r8
  or     %rsi,%r8
  xor    %r9,%r8
  lea    0x0(,%rdi,8),%rsi
  xor    %r8,%rsi
  mov    %rdx,%r11
  shl    $0x1f,%r11
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r9,%r11
  mov    %r9,%r8
  shl    $0x1d,%r8
  shr    $0x3,%r9
  or     %r9,%r8
  mov    %rdi,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%rdi
  or     %rdi,%rdx
  mov    %rsi,%r9
  xor    %r8,%r9
  mov    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %r11,%r10
  or     %r9,%r10
  xor    %r10,%rdi
  mov    %r8,%rbx
  or     %rdx,%rbx
  and    %r8,%rdx
  mov    %rsi,%r10
  not    %r10
  or     %r10,%rdx
  mov    %r11,%r10
  and    %rbx,%r10
  xor    %rdx,%r10
  or     %rdi,%rsi
  and    %r11,%rsi
  and    %rbx,%r9
  xor    %r9,%rsi
  mov    %rdi,%r11
  xor    0x240(%rax),%r11
  mov    %rsi,%r9
  xor    0x248(%rax),%r9
  xor    0x250(%rax),%rdx
  xor    %rdi,%rdx
  and    %r10,%r8
  xor    %r8,%rdx
  xor    %rsi,%rdx
  xor    0x258(%rax),%r10
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rsi,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %r10,%r8
  xor    %rdx,%r8
  mov    %r11,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%r11
  or     %r11,%rdi
  xor    %r10,%rdi
  xor    %r9,%rdi
  mov    %r10,%r11
  shl    $0x19,%r11
  mov    %r10,%rdx
  shr    $0x7,%rdx
  or     %rdx,%r11
  lea    0x0(,%rdi,8),%rdx
  xor    %rdx,%r11
  xor    %r8,%r11
  mov    %r9,%rdx
  shl    $0x1f,%rdx
  mov    %r9,%rsi
  shr    %rsi
  or     %rsi,%rdx
  xor    %rdi,%rdx
  xor    %r8,%rdx
  mov    %r8,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%r8
  or     %r8,%rsi
  mov    %rdi,%r8
  shl    $0x13,%r8
  shr    $0xd,%rdi
  or     %rdi,%r8
  mov    %rdx,%r9
  xor    %r8,%r9
  mov    %rsi,%rbp
  and    %r8,%rbp
  mov    %r11,%r10
  or     %rdx,%r10
  xor    %rsi,%r10
  mov    %r8,%rbx
  or     %r10,%rbx
  and    %r9,%rbx
  mov    %r11,%rdi
  or     %rbp,%rdi
  xor    %rbx,%rdi
  not    %rdi
  xor    %rbx,%rdx
  and    %r11,%rdx
  mov    %rbp,%r11
  or     %r10,%r11
  xor    %r11,%rdx
  xor    0x220(%rax),%rsi
  xor    %rbx,%rsi
  xor    %rdx,%rsi
  or     %rdi,%r8
  xor    %r8,%rsi
  xor    0x228(%rax),%rdx
  xor    0x230(%rax),%rdi
  xor    0x238(%rax),%r9
  xor    %r10,%r9
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdi,%r10
  shl    $0xa,%r10
  shr    $0x16,%rdi
  or     %r10,%rdi
  mov    %rdx,%r8
  shl    $0x7,%r8
  xor    %r8,%rdi
  xor    %r9,%rdi
  mov    %rdi,%r10
  mov    %rdx,%r8
  xor    %r9,%r8
  xor    %rsi,%r8
  mov    %r9,%rdi
  shl    $0x19,%rdi
  mov    %r9,%rsi
  shr    $0x7,%rsi
  or     %rsi,%rdi
  xor    %r10,%rdi
  lea    0x0(,%r8,8),%rsi
  xor    %rdi,%rsi
  mov    %rdx,%rdi
  shl    $0x1f,%rdi
  shr    %rdx
  or     %rdx,%rdi
  xor    %r10,%rdi
  xor    %r8,%rdi
  mov    %r10,%rdx
  shl    $0x1d,%rdx
  mov    %r10,%r9
  shr    $0x3,%r9
  or     %r9,%rdx
  mov    %r8,%r11
  shl    $0x13,%r11
  shr    $0xd,%r8
  or     %r8,%r11
  mov    %rsi,%r10
  xor    %rdx,%r10
  mov    %rdi,%rbx
  or     %rdx,%rbx
  mov    %rdi,%r9
  or     %r11,%r9
  xor    %r10,%r9
  mov    %r9,%r8
  not    %r8
  and    %rdx,%r10
  or     %r11,%r10
  xor    %rsi,%rdi
  and    %rbx,%rdi
  xor    %rdi,%r10
  mov    %r11,%rbp
  or     %r9,%rbp
  xor    %r10,%rbp
  or     %r8,%rsi
  xor    %rbx,%rsi
  mov    %rbp,%rdi
  xor    %rsi,%rdi
  xor    0x200(%rax),%rdx
  xor    %r11,%rdx
  and    %rbp,%r9
  or     %r9,%rsi
  xor    %rsi,%rdx
  xor    0x208(%rax),%r10
  xor    0x210(%rax),%r8
  xor    0x218(%rax),%rdi
  mov    %rdx,%rsi
  shl    $0x1b,%rsi
  shr    $0x5,%rdx
  or     %rdx,%rsi
  mov    %r8,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%r8
  or     %r8,%rdx
  mov    %r10,%r8
  shl    $0x7,%r8
  xor    %r8,%rdx
  xor    %rdi,%rdx
  mov    %r10,%r8
  xor    %rdi,%r8
  xor    %rsi,%r8
  mov    %rdi,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%rdi
  or     %rdi,%rsi
  xor    %rdx,%rsi
  lea    0x0(,%r8,8),%rdi
  xor    %rsi,%rdi
  mov    %rdi,%r9
  mov    %r10,%rdi
  shl    $0x1f,%rdi
  mov    %r10,%rsi
  shr    %rsi
  or     %rsi,%rdi
  xor    %rdx,%rdi
  xor    %r8,%rdi
  mov    %rdx,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%rdx
  or     %rdx,%rsi
  mov    %r8,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%r8
  or     %r8,%rdx
  mov    %rdi,%rbx
  and    %rdx,%rbx
  mov    %rdi,%r11
  or     %rdx,%r11
  and    %r9,%r11
  mov    %rsi,%r8
  or     %rbx,%r8
  xor    %r11,%r8
  xor    %rdi,%r11
  mov    %r9,%r10
  xor    %r8,%r10
  not    %r10
  or     %r11,%r10
  xor    %rdx,%r10
  or     %r9,%rdx
  and    %rsi,%rdx
  xor    %r9,%rdi
  or     %rbx,%rdi
  xor    %rdi,%rdx
  xor    0x1e0(%rax),%rsi
  xor    %r11,%rsi
  mov    %r9,%rdi
  or     %r10,%rdi
  xor    %rdi,%rsi
  mov    %r10,%rdi
  xor    0x1e8(%rax),%rdi
  xor    0x1f0(%rax),%rdx
  mov    %r8,%r11
  xor    0x1f8(%rax),%r11
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdx,%r10
  shl    $0xa,%r10
  shr    $0x16,%rdx
  or     %rdx,%r10
  xor    %r11,%r10
  mov    %rdi,%rdx
  shl    $0x7,%rdx
  xor    %r10,%rdx
  mov    %rdi,%r9
  xor    %r11,%r9
  xor    %rsi,%r9
  mov    %r11,%r8
  shl    $0x19,%r8
  mov    %r11,%rsi
  shr    $0x7,%rsi
  or     %rsi,%r8
  xor    %rdx,%r8
  lea    0x0(,%r9,8),%rsi
  xor    %r8,%rsi
  mov    %rdi,%r8
  shl    $0x1f,%r8
  shr    %rdi
  or     %rdi,%r8
  xor    %rdx,%r8
  xor    %r9,%r8
  mov    %rdx,%rdi
  shl    $0x1d,%rdi
  shr    $0x3,%rdx
  or     %rdx,%rdi
  mov    %r9,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%r9
  or     %r9,%rdx
  mov    %rdi,%r10
  xor    %rdx,%r10
  not    %rdi
  mov    %r8,%rbx
  and    %r10,%rbx
  or     %rsi,%rbx
  mov    %r8,%r12
  or     %rdi,%r12
  and    %rdx,%r12
  mov    %rsi,%rbp
  xor    %r8,%rbp
  mov    %rdx,%r9
  or     %rdi,%r9
  xor    %r9,%rbp
  mov    %rbx,%r13
  xor    %r12,%r13
  not    %r13
  mov    %r13,%r11
  xor    0x1c0(%rax),%r11
  mov    %rbp,%r9
  xor    0x1c8(%rax),%r9
  or     %rdi,%rsi
  xor    %r10,%rsi
  xor    0x1d0(%rax),%rsi
  and    %r13,%r8
  xor    %r8,%rsi
  xor    0x1d8(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdx
  and    %rbx,%r10
  xor    %r10,%rdx
  mov    %rsi,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rsi
  or     %rdi,%rsi
  mov    %r11,%r8
  shl    $0x1b,%r8
  shr    $0x5,%r11
  or     %r11,%r8
  mov    %r9,%rdi
  shl    $0x7,%rdi
  xor    %rdx,%rdi
  xor    %rsi,%rdi
  mov    %r9,%rsi
  xor    %rdx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r8
  shl    $0x19,%r8
  shr    $0x7,%rdx
  or     %r8,%rdx
  lea    0x0(,%rsi,8),%rbp
  xor    %rdi,%rbp
  xor    %rdx,%rbp
  mov    %r9,%r8
  shl    $0x1f,%r8
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %rdi,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%rdi
  or     %rdi,%rdx
  mov    %rsi,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rsi
  or     %rsi,%rdi
  mov    %rbp,%rsi
  and    %rdi,%rsi
  mov    %rdx,%r10
  xor    %rsi,%r10
  mov    %rbp,%r9
  xor    %rdi,%r9
  mov    %r8,%r11
  and    %r10,%r11
  xor    %r11,%r9
  and    %rdi,%rdx
  or     %r8,%rdx
  xor    %rsi,%rdx
  mov    %r9,%rbx
  xor    0x1a0(%rax),%rbx
  mov    %rdx,%r11
  xor    0x1a8(%rax),%r11
  xor    %r9,%r11
  mov    %r8,%rsi
  xor    0x1b0(%rax),%rsi
  xor    %rbp,%rsi
  xor    %r10,%rsi
  or     %r9,%rdx
  xor    %rsi,%rdx
  and    %r9,%rdi
  not    %r8
  or     %r8,%rdi
  xor    0x1b8(%rax),%r10
  xor    %r10,%rdi
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rdx,%rsi
  mov    %r11,%rdx
  shl    $0x7,%rdx
  xor    %rdi,%rdx
  xor    %rsi,%rdx
  mov    %rbx,%rsi
  shl    $0x1b,%rsi
  shr    $0x5,%rbx
  or     %rsi,%rbx
  xor    %rdi,%rbx
  xor    %r11,%rbx
  mov    %r11,%r10
  shl    $0x1f,%r10
  shr    %r11
  or     %r11,%r10
  mov    %rdi,%r8
  shl    $0x19,%r8
  shr    $0x7,%rdi
  or     %r8,%rdi
  xor    %rdx,%rdi
  lea    0x0(,%rbx,8),%rsi
  xor    %rdi,%rsi
  mov    %rdx,%r9
  xor    %rbx,%r9
  xor    %r10,%r9
  mov    %rdx,%r11
  shl    $0x1d,%r11
  shr    $0x3,%rdx
  or     %rdx,%r11
  mov    %rbx,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rbx
  or     %rbx,%rdi
  mov    %rsi,%rdx
  or     %r9,%rdx
  mov    %rdi,%rbx
  and    %rdx,%rbx
  mov    %rsi,%r8
  or     %r11,%r8
  xor    %r9,%r8
  mov    %rdi,%rbp
  and    %r8,%rbp
  mov    %rsi,%r9
  xor    %r11,%r9
  xor    %rbp,%r9
  mov    %rbx,%r12
  not    %r12
  or     %r9,%r12
  mov    %rdi,%r10
  xor    0x180(%rax),%r10
  xor    %r8,%r10
  xor    %r12,%r10
  xor    0x188(%rax),%r9
  xor    0x190(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdi
  or     %r11,%rdi
  xor    %rdi,%rdx
  xor    0x198(%rax),%rsi
  xor    %rbx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rdx
  or     %rdx,%rdi
  mov    %r10,%rdx
  shl    $0x1b,%rdx
  shr    $0x5,%r10
  or     %r10,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %r9,%rdi
  xor    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %rsi,%rdx
  shl    $0x19,%rdx
  shr    $0x7,%rsi
  or     %rsi,%rdx
  lea    0x0(,%rdi,8),%r10
  xor    %r8,%r10
  xor    %rdx,%r10
  mov    %r9,%r11
  shl    $0x1f,%r11
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r8,%r11
  mov    %r8,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%r8
  or     %r8,%rdx
  mov    %rdi,%rsi
  shl    $0x13,%rsi
  shr    $0xd,%rdi
  or     %rdi,%rsi
  mov    %r10,%r8
  or     %rdx,%r8
  mov    %r10,%rbx
  or     %rsi,%rbx
  xor    %rbx,%rdx
  xor    %rsi,%r10
  xor    %r11,%rbx
  and    %rdx,%rbx
  xor    %r10,%rbx
  mov    %r11,%rdi
  and    %r8,%rdi
  xor    %rdx,%rdi
  mov    %rdi,%rbp
  xor    0x160(%rax),%rbp
  xor    %rsi,%rdx
  or     %r10,%rdi
  and    %rdi,%rdx
  mov    %r11,%rdi
  xor    0x168(%rax),%rdi
  xor    %rdi,%rdx
  mov    %rbx,%rdi
  xor    0x170(%rax),%rdi
  xor    %r10,%r8
  xor    0x178(%rax),%r8
  and    %rbx,%rsi
  or     %r11,%rsi
  xor    %rsi,%r8
  mov    %rdi,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdi
  or     %rdi,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r9
  shl    $0x7,%r9
  xor    %rsi,%r9
  mov    %rbp,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%rbp
  or     %rbp,%rdi
  xor    %rdx,%rdi
  xor    %r8,%rdi
  mov    %r8,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%r8
  or     %rsi,%r8
  xor    %r9,%r8
  lea    0x0(,%rdi,8),%rsi
  xor    %r8,%rsi
  mov    %rdx,%r11
  shl    $0x1f,%r11
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r9,%r11
  mov    %r9,%r8
  shl    $0x1d,%r8
  shr    $0x3,%r9
  or     %r9,%r8
  mov    %rdi,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%rdi
  or     %rdi,%rdx
  mov    %rsi,%r9
  xor    %r8,%r9
  mov    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %r11,%r10
  or     %r9,%r10
  xor    %r10,%rdi
  mov    %r8,%rbx
  or     %rdx,%rbx
  and    %r8,%rdx
  mov    %rsi,%r10
  not    %r10
  or     %r10,%rdx
  mov    %r11,%r10
  and    %rbx,%r10
  xor    %rdx,%r10
  or     %rdi,%rsi
  and    %r11,%rsi
  and    %rbx,%r9
  xor    %r9,%rsi
  mov    %rdi,%r11
  xor    0x140(%rax),%r11
  mov    %rsi,%r9
  xor    0x148(%rax),%r9
  xor    0x150(%rax),%rdx
  xor    %rdi,%rdx
  and    %r10,%r8
  xor    %r8,%rdx
  xor    %rsi,%rdx
  xor    0x158(%rax),%r10
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rsi,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %r10,%r8
  xor    %rdx,%r8
  mov    %r11,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%r11
  or     %r11,%rdi
  xor    %r10,%rdi
  xor    %r9,%rdi
  mov    %r10,%r11
  shl    $0x19,%r11
  mov    %r10,%rdx
  shr    $0x7,%rdx
  or     %rdx,%r11
  lea    0x0(,%rdi,8),%rdx
  xor    %rdx,%r11
  xor    %r8,%r11
  mov    %r9,%rdx
  shl    $0x1f,%rdx
  mov    %r9,%rsi
  shr    %rsi
  or     %rsi,%rdx
  xor    %rdi,%rdx
  xor    %r8,%rdx
  mov    %r8,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%r8
  or     %r8,%rsi
  mov    %rdi,%r8
  shl    $0x13,%r8
  shr    $0xd,%rdi
  or     %rdi,%r8
  mov    %rdx,%r9
  xor    %r8,%r9
  mov    %rsi,%rbp
  and    %r8,%rbp
  mov    %r11,%r10
  or     %rdx,%r10
  xor    %rsi,%r10
  mov    %r8,%rbx
  or     %r10,%rbx
  and    %r9,%rbx
  mov    %r11,%rdi
  or     %rbp,%rdi
  xor    %rbx,%rdi
  not    %rdi
  xor    %rbx,%rdx
  and    %r11,%rdx
  mov    %rbp,%r11
  or     %r10,%r11
  xor    %r11,%rdx
  xor    0x120(%rax),%rsi
  xor    %rbx,%rsi
  xor    %rdx,%rsi
  or     %rdi,%r8
  xor    %r8,%rsi
  xor    0x128(%rax),%rdx
  xor    0x130(%rax),%rdi
  xor    0x138(%rax),%r9
  xor    %r10,%r9
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdi,%r10
  shl    $0xa,%r10
  shr    $0x16,%rdi
  or     %r10,%rdi
  mov    %rdx,%r8
  shl    $0x7,%r8
  xor    %r8,%rdi
  xor    %r9,%rdi
  mov    %rdi,%r10
  mov    %rdx,%r8
  xor    %r9,%r8
  xor    %rsi,%r8
  mov    %r9,%rdi
  shl    $0x19,%rdi
  mov    %r9,%rsi
  shr    $0x7,%rsi
  or     %rsi,%rdi
  xor    %r10,%rdi
  lea    0x0(,%r8,8),%rsi
  xor    %rdi,%rsi
  mov    %rdx,%rdi
  shl    $0x1f,%rdi
  shr    %rdx
  or     %rdx,%rdi
  xor    %r10,%rdi
  xor    %r8,%rdi
  mov    %r10,%rdx
  shl    $0x1d,%rdx
  mov    %r10,%r9
  shr    $0x3,%r9
  or     %r9,%rdx
  mov    %r8,%r11
  shl    $0x13,%r11
  shr    $0xd,%r8
  or     %r8,%r11
  mov    %rsi,%r10
  xor    %rdx,%r10
  mov    %rdi,%rbx
  or     %rdx,%rbx
  mov    %rdi,%r9
  or     %r11,%r9
  xor    %r10,%r9
  mov    %r9,%r8
  not    %r8
  and    %rdx,%r10
  or     %r11,%r10
  xor    %rsi,%rdi
  and    %rbx,%rdi
  xor    %rdi,%r10
  mov    %r11,%rbp
  or     %r9,%rbp
  xor    %r10,%rbp
  or     %r8,%rsi
  xor    %rbx,%rsi
  mov    %rbp,%rdi
  xor    %rsi,%rdi
  xor    0x100(%rax),%rdx
  xor    %r11,%rdx
  and    %rbp,%r9
  or     %r9,%rsi
  xor    %rsi,%rdx
  xor    0x108(%rax),%r10
  xor    0x110(%rax),%r8
  xor    0x118(%rax),%rdi
  mov    %rdx,%rsi
  shl    $0x1b,%rsi
  shr    $0x5,%rdx
  or     %rdx,%rsi
  mov    %r8,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%r8
  or     %r8,%rdx
  mov    %r10,%r8
  shl    $0x7,%r8
  xor    %r8,%rdx
  xor    %rdi,%rdx
  mov    %r10,%r8
  xor    %rdi,%r8
  xor    %rsi,%r8
  mov    %rdi,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%rdi
  or     %rdi,%rsi
  xor    %rdx,%rsi
  lea    0x0(,%r8,8),%rdi
  xor    %rsi,%rdi
  mov    %rdi,%r9
  mov    %r10,%rdi
  shl    $0x1f,%rdi
  mov    %r10,%rsi
  shr    %rsi
  or     %rsi,%rdi
  xor    %rdx,%rdi
  xor    %r8,%rdi
  mov    %rdx,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%rdx
  or     %rdx,%rsi
  mov    %r8,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%r8
  or     %r8,%rdx
  mov    %rdi,%rbx
  and    %rdx,%rbx
  mov    %rdi,%r11
  or     %rdx,%r11
  and    %r9,%r11
  mov    %rsi,%r8
  or     %rbx,%r8
  xor    %r11,%r8
  xor    %rdi,%r11
  mov    %r9,%r10
  xor    %r8,%r10
  not    %r10
  or     %r11,%r10
  xor    %rdx,%r10
  or     %r9,%rdx
  and    %rsi,%rdx
  xor    %r9,%rdi
  or     %rbx,%rdi
  xor    %rdi,%rdx
  xor    0xe0(%rax),%rsi
  xor    %r11,%rsi
  mov    %r9,%rdi
  or     %r10,%rdi
  xor    %rdi,%rsi
  mov    %r10,%rdi
  xor    0xe8(%rax),%rdi
  xor    0xf0(%rax),%rdx
  mov    %r8,%r11
  xor    0xf8(%rax),%r11
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdx,%r10
  shl    $0xa,%r10
  shr    $0x16,%rdx
  or     %rdx,%r10
  xor    %r11,%r10
  mov    %rdi,%rdx
  shl    $0x7,%rdx
  xor    %r10,%rdx
  mov    %rdi,%r9
  xor    %r11,%r9
  xor    %rsi,%r9
  mov    %r11,%r8
  shl    $0x19,%r8
  mov    %r11,%rsi
  shr    $0x7,%rsi
  or     %rsi,%r8
  xor    %rdx,%r8
  lea    0x0(,%r9,8),%rsi
  xor    %r8,%rsi
  mov    %rdi,%r8
  shl    $0x1f,%r8
  shr    %rdi
  or     %rdi,%r8
  xor    %rdx,%r8
  xor    %r9,%r8
  mov    %rdx,%rdi
  shl    $0x1d,%rdi
  shr    $0x3,%rdx
  or     %rdx,%rdi
  mov    %r9,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%r9
  or     %r9,%rdx
  mov    %rdi,%r10
  xor    %rdx,%r10
  not    %rdi
  mov    %r8,%rbx
  and    %r10,%rbx
  or     %rsi,%rbx
  mov    %r8,%r12
  or     %rdi,%r12
  and    %rdx,%r12
  mov    %rsi,%rbp
  xor    %r8,%rbp
  mov    %rdx,%r9
  or     %rdi,%r9
  xor    %r9,%rbp
  mov    %rbx,%r13
  xor    %r12,%r13
  not    %r13
  mov    %r13,%r11
  xor    0xc0(%rax),%r11
  mov    %rbp,%r9
  xor    0xc8(%rax),%r9
  or     %rdi,%rsi
  xor    %r10,%rsi
  xor    0xd0(%rax),%rsi
  and    %r13,%r8
  xor    %r8,%rsi
  xor    0xd8(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdx
  and    %rbx,%r10
  xor    %r10,%rdx
  mov    %rsi,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rsi
  or     %rdi,%rsi
  mov    %r11,%r8
  shl    $0x1b,%r8
  shr    $0x5,%r11
  or     %r11,%r8
  mov    %r9,%rdi
  shl    $0x7,%rdi
  xor    %rdx,%rdi
  xor    %rsi,%rdi
  mov    %r9,%rsi
  xor    %rdx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r8
  shl    $0x19,%r8
  shr    $0x7,%rdx
  or     %r8,%rdx
  lea    0x0(,%rsi,8),%rbp
  xor    %rdi,%rbp
  xor    %rdx,%rbp
  mov    %r9,%r8
  shl    $0x1f,%r8
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %rdi,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%rdi
  or     %rdi,%rdx
  mov    %rsi,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rsi
  or     %rsi,%rdi
  mov    %rbp,%rsi
  and    %rdi,%rsi
  mov    %rdx,%r10
  xor    %rsi,%r10
  mov    %rbp,%r9
  xor    %rdi,%r9
  mov    %r8,%r11
  and    %r10,%r11
  xor    %r11,%r9
  and    %rdi,%rdx
  or     %r8,%rdx
  xor    %rsi,%rdx
  mov    %r9,%rbx
  xor    0xa0(%rax),%rbx
  mov    %rdx,%r11
  xor    0xa8(%rax),%r11
  xor    %r9,%r11
  mov    %r8,%rsi
  xor    0xb0(%rax),%rsi
  xor    %rbp,%rsi
  xor    %r10,%rsi
  or     %r9,%rdx
  xor    %rsi,%rdx
  and    %r9,%rdi
  not    %r8
  or     %r8,%rdi
  xor    0xb8(%rax),%r10
  xor    %r10,%rdi
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rdx,%rsi
  mov    %r11,%rdx
  shl    $0x7,%rdx
  xor    %rdi,%rdx
  xor    %rsi,%rdx
  mov    %rbx,%rsi
  shl    $0x1b,%rsi
  shr    $0x5,%rbx
  or     %rsi,%rbx
  xor    %rdi,%rbx
  xor    %r11,%rbx
  mov    %r11,%r10
  shl    $0x1f,%r10
  shr    %r11
  or     %r11,%r10
  mov    %rdi,%r8
  shl    $0x19,%r8
  shr    $0x7,%rdi
  or     %r8,%rdi
  xor    %rdx,%rdi
  lea    0x0(,%rbx,8),%rsi
  xor    %rdi,%rsi
  mov    %rdx,%r9
  xor    %rbx,%r9
  xor    %r10,%r9
  mov    %rdx,%r11
  shl    $0x1d,%r11
  shr    $0x3,%rdx
  or     %rdx,%r11
  mov    %rbx,%rdi
  shl    $0x13,%rdi
  shr    $0xd,%rbx
  or     %rbx,%rdi
  mov    %rsi,%rdx
  or     %r9,%rdx
  mov    %rdi,%rbx
  and    %rdx,%rbx
  mov    %rsi,%r8
  or     %r11,%r8
  xor    %r9,%r8
  mov    %rdi,%rbp
  and    %r8,%rbp
  mov    %rsi,%r9
  xor    %r11,%r9
  xor    %rbp,%r9
  mov    %rbx,%r12
  not    %r12
  or     %r9,%r12
  mov    %rdi,%r10
  xor    0x80(%rax),%r10
  xor    %r8,%r10
  xor    %r12,%r10
  xor    0x88(%rax),%r9
  xor    0x90(%rax),%rdx
  xor    %r12,%rdx
  xor    %rbp,%rdi
  or     %r11,%rdi
  xor    %rdi,%rdx
  xor    0x98(%rax),%rsi
  xor    %rbx,%rsi
  xor    %r8,%rsi
  mov    %rdx,%rdi
  shl    $0xa,%rdi
  shr    $0x16,%rdx
  or     %rdx,%rdi
  mov    %r10,%rdx
  shl    $0x1b,%rdx
  shr    $0x5,%r10
  or     %r10,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %rsi,%r8
  xor    %rdi,%r8
  mov    %r9,%rdi
  xor    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %rsi,%rdx
  shl    $0x19,%rdx
  shr    $0x7,%rsi
  or     %rsi,%rdx
  lea    0x0(,%rdi,8),%r10
  xor    %r8,%r10
  xor    %rdx,%r10
  mov    %r9,%r11
  shl    $0x1f,%r11
  mov    %r9,%rdx
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r8,%r11
  mov    %r8,%rdx
  shl    $0x1d,%rdx
  shr    $0x3,%r8
  or     %r8,%rdx
  mov    %rdi,%rsi
  shl    $0x13,%rsi
  shr    $0xd,%rdi
  or     %rdi,%rsi
  mov    %r10,%r8
  or     %rdx,%r8
  mov    %r10,%rbx
  or     %rsi,%rbx
  xor    %rbx,%rdx
  xor    %rsi,%r10
  xor    %r11,%rbx
  and    %rdx,%rbx
  xor    %r10,%rbx
  mov    %r11,%rdi
  and    %r8,%rdi
  xor    %rdx,%rdi
  mov    %rdi,%rbp
  xor    0x60(%rax),%rbp
  xor    %rsi,%rdx
  or     %r10,%rdi
  and    %rdi,%rdx
  mov    %r11,%rdi
  xor    0x68(%rax),%rdi
  xor    %rdi,%rdx
  mov    %rbx,%rdi
  xor    0x70(%rax),%rdi
  xor    %r10,%r8
  xor    0x78(%rax),%r8
  and    %rbx,%rsi
  or     %r11,%rsi
  xor    %rsi,%r8
  mov    %rdi,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdi
  or     %rdi,%rsi
  xor    %r8,%rsi
  mov    %rdx,%r9
  shl    $0x7,%r9
  xor    %rsi,%r9
  mov    %rbp,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%rbp
  or     %rbp,%rdi
  xor    %rdx,%rdi
  xor    %r8,%rdi
  mov    %r8,%rsi
  shl    $0x19,%rsi
  shr    $0x7,%r8
  or     %rsi,%r8
  xor    %r9,%r8
  lea    0x0(,%rdi,8),%rsi
  xor    %r8,%rsi
  mov    %rdx,%r11
  shl    $0x1f,%r11
  shr    %rdx
  or     %rdx,%r11
  xor    %rdi,%r11
  xor    %r9,%r11
  mov    %r9,%r8
  shl    $0x1d,%r8
  shr    $0x3,%r9
  or     %r9,%r8
  mov    %rdi,%rdx
  shl    $0x13,%rdx
  shr    $0xd,%rdi
  or     %rdi,%rdx
  mov    %rsi,%r9
  xor    %r8,%r9
  mov    %rsi,%rdi
  xor    %rdx,%rdi
  mov    %r11,%r10
  or     %r9,%r10
  xor    %r10,%rdi
  mov    %r8,%rbx
  or     %rdx,%rbx
  and    %r8,%rdx
  mov    %rsi,%r10
  not    %r10
  or     %r10,%rdx
  mov    %r11,%r10
  and    %rbx,%r10
  xor    %rdx,%r10
  or     %rdi,%rsi
  and    %r11,%rsi
  and    %rbx,%r9
  xor    %r9,%rsi
  mov    %rdi,%r11
  xor    0x40(%rax),%r11
  mov    %rsi,%r9
  xor    0x48(%rax),%r9
  xor    0x50(%rax),%rdx
  xor    %rdi,%rdx
  and    %r10,%r8
  xor    %r8,%rdx
  xor    %rsi,%rdx
  xor    0x58(%rax),%r10
  mov    %rdx,%rsi
  shl    $0xa,%rsi
  shr    $0x16,%rdx
  or     %rsi,%rdx
  mov    %r9,%r8
  shl    $0x7,%r8
  xor    %r10,%r8
  xor    %rdx,%r8
  mov    %r11,%rdi
  shl    $0x1b,%rdi
  shr    $0x5,%r11
  or     %r11,%rdi
  xor    %r10,%rdi
  xor    %r9,%rdi
  mov    %r10,%r11
  shl    $0x19,%r11
  mov    %r10,%rdx
  shr    $0x7,%rdx
  or     %rdx,%r11
  lea    0x0(,%rdi,8),%rdx
  xor    %rdx,%r11
  xor    %r8,%r11
  mov    %r9,%rdx
  shl    $0x1f,%rdx
  mov    %r9,%rsi
  shr    %rsi
  or     %rsi,%rdx
  xor    %rdi,%rdx
  xor    %r8,%rdx
  mov    %r8,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%r8
  or     %r8,%rsi
  mov    %rdi,%r8
  shl    $0x13,%r8
  shr    $0xd,%rdi
  or     %rdi,%r8
  mov    %rdx,%r9
  xor    %r8,%r9
  mov    %rsi,%rbp
  and    %r8,%rbp
  mov    %r11,%r10
  or     %rdx,%r10
  xor    %rsi,%r10
  mov    %r8,%rbx
  or     %r10,%rbx
  and    %r9,%rbx
  mov    %r11,%rdi
  or     %rbp,%rdi
  xor    %rbx,%rdi
  not    %rdi
  xor    %rbx,%rdx
  and    %r11,%rdx
  mov    %rbp,%r11
  or     %r10,%r11
  xor    %r11,%rdx
  xor    0x20(%rax),%rsi
  xor    %rbx,%rsi
  xor    %rdx,%rsi
  or     %rdi,%r8
  xor    %r8,%rsi
  xor    0x28(%rax),%rdx
  xor    0x30(%rax),%rdi
  xor    0x38(%rax),%r9
  xor    %r10,%r9
  mov    %rsi,%r8
  shl    $0x1b,%r8
  shr    $0x5,%rsi
  or     %r8,%rsi
  mov    %rdi,%r10
  shl    $0xa,%r10
  shr    $0x16,%rdi
  or     %r10,%rdi
  mov    %rdx,%r8
  shl    $0x7,%r8
  xor    %r8,%rdi
  xor    %r9,%rdi
  mov    %rdi,%r11
  mov    %rdx,%r8
  xor    %r9,%r8
  xor    %rsi,%r8
  mov    %r9,%rdi
  shl    $0x19,%rdi
  mov    %r9,%rsi
  shr    $0x7,%rsi
  or     %rdi,%rsi
  xor    %r11,%rsi
  lea    0x0(,%r8,8),%rdi
  xor    %rsi,%rdi
  mov    %rdi,%r10
  mov    %rdx,%rdi
  shl    $0x1f,%rdi
  shr    %rdx
  or     %rdi,%rdx
  xor    %r11,%rdx
  mov    %rdx,%rdi
  xor    %r8,%rdi
  mov    %r11,%rsi
  shl    $0x1d,%rsi
  shr    $0x3,%r11
  or     %r11,%rsi
  mov    %r8,%r11
  shl    $0x13,%r11
  shr    $0xd,%r8
  or     %r8,%r11
  mov    %r10,%rdx
  xor    %rsi,%rdx
  mov    %rdi,%rbx
  or     %rsi,%rbx
  mov    %rdi,%r9
  or     %r11,%r9
  xor    %rdx,%r9
  mov    %r9,%r8
  not    %r8
  and    %rsi,%rdx
  or     %r11,%rdx
  xor    %r10,%rdi
  and    %rbx,%rdi
  xor    %rdi,%rdx
  mov    %r11,%rbp
  or     %r9,%rbp
  xor    %rdx,%rbp
  mov    %r10,%rdi
  or     %r8,%rdi
  xor    %rbx,%rdi
  xor    (%rax),%rsi
  xor    %r11,%rsi
  xor    0x8(%rax),%rdx
  xor    0x10(%rax),%r8
  mov    %rbp,%r10
  xor    %rdi,%r10
  xor    0x18(%rax),%r10
  mov    %r9,%rax
  and    %rbp,%rax
  or     %rdi,%rax
  xor    %rsi,%rax
  mov    %rax,(%rcx)
  mov    %rdx,0x8(%rcx)
  mov    %r8,0x10(%rcx)
  mov    %r10,0x18(%rcx)
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

assistant: ```c
serpent_decrypt(unsigned long ciphertext[4], unsigned long plaintext[4], unsigned long subkeys[33][4]) {
  register unsigned long x0, x1, x2, x3;
  register unsigned long y0, y1, y2, y3;
  x0 = ciphertext[0];
  x1 = ciphertext[1];
  x2 = ciphertext[2];
  x3 = ciphertext[3];
  x0 ^= subkeys[32][0];
  x1 ^= subkeys[32][1];
  x2 ^= subkeys[32][2];
  x3 ^= subkeys[32][3];
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t13, t14, t15, t16, t01;
    t01 = x0 & x1;
    t02 = x0 | x1;
    t03 = x2 | t01;
    t04 = x3 & t02;
    y3 = t03 ^ t04;
    t06 = x1 ^ t04;
    t07 = x3 ^ y3;
    t08 = ~t07;
    t09 = t06 | t08;
    t10 = x1 ^ x3;
    t11 = x0 | x3;
    y1 = x0 ^ t09;
    t13 = x2 ^ t06;
    t14 = x2 & t11;
    t15 = x3 | y1;
    t16 = t01 | t10;
    y0 = t13 ^ t15;
    y2 = t14 ^ t16;
  };
  y0 ^= subkeys[31][0];
  y1 ^= subkeys[31][1];
  y2 ^= subkeys[31][2];
  y3 ^= subkeys[31][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t12, t13, t14, t15, t16, t17, t01;
    t01 = x0 ^ x2;
    t02 = ~x2;
    t03 = x1 & t01;
    t04 = x1 | t02;
    t05 = x3 | t03;
    t06 = x1 ^ x3;
    t07 = x0 & t04;
    t08 = x0 | t02;
    t09 = t07 ^ t05;
    y1 = t06 ^ t08;
    y0 = ~t09;
    t12 = x1 & y0;
    t13 = t01 & t05;
    t14 = t01 ^ t12;
    t15 = t07 ^ t13;
    t16 = x3 | t02;
    t17 = x0 ^ y1;
    y3 = t17 ^ t15;
    y2 = t16 ^ t14;
  };
  y0 ^= subkeys[30][0];
  y1 ^= subkeys[30][1];
  y2 ^= subkeys[30][2];
  y3 ^= subkeys[30][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t07, t08, t09, t10, t12, t13, t15, t16, t01;
    t01 = x0 & x3;
    t02 = x2 ^ t01;
    t03 = x0 ^ x3;
    t04 = x1 & t02;
    t05 = x0 & x2;
    y0 = t03 ^ t04;
    t07 = x0 & y0;
    t08 = t01 ^ y0;
    t09 = x1 | t05;
    t10 = ~x1;
    y1 = t08 ^ t09;
    t12 = t10 | t07;
    t13 = y0 | y1;
    y3 = t02 ^ t12;
    t15 = t02 ^ t13;
    t16 = x1 ^ x3;
    y2 = t16 ^ t15;
  };
  y0 ^= subkeys[29][0];
  y1 ^= subkeys[29][1];
  y2 ^= subkeys[29][2];
  y3 ^= subkeys[29][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t10, t11, t12, t13, t15, t01;
    t01 = x1 | x3;
    t02 = x2 | x3;
    t03 = x0 & t01;
    t04 = x1 ^ t02;
    t05 = x2 ^ x3;
    t06 = ~t03;
    t07 = x0 & t04;
    y1 = t05 ^ t07;
    t09 = y1 | t06;
    t10 = x0 ^ t07;
    t11 = t01 ^ t09;
    t12 = x3 ^ t04;
    t13 = x2 | t10;
    y3 = t03 ^ t12;
    t15 = x0 ^ t04;
    y2 = t11 ^ t13;
    y0 = t15 ^ t09;
  };
  y0 ^= subkeys[28][0];
  y1 ^= subkeys[28][1];
  y2 ^= subkeys[28][2];
  y3 ^= subkeys[28][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t11, t12, t13, t14, t16, t01;
    t01 = x2 | x3;
    t02 = x0 | x3;
    t03 = x2 ^ t02;
    t04 = x1 ^ t02;
    t05 = x0 ^ x3;
    t06 = t04 & t03;
    t07 = x1 & t01;
    y2 = t05 ^ t06;
    t09 = x0 ^ t03;
    y0 = t07 ^ t03;
    t11 = y0 | t05;
    t12 = t09 & t11;
    t13 = x0 & y2;
    t14 = t01 ^ t05;
    y1 = x1 ^ t12;
    t16 = x1 | t13;
    y3 = t14 ^ t16;
  };
  y0 ^= subkeys[27][0];
  y1 ^= subkeys[27][1];
  y2 ^= subkeys[27][2];
  y3 ^= subkeys[27][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t12, t15, t16, t17, t01;
    t01 = x0 ^ x3;
    t02 = x2 ^ x3;
    t03 = x0 & x2;
    t04 = x1 | t02;
    y0 = t01 ^ t04;
    t06 = x0 | x2;
    t07 = x3 | y0;
    t08 = ~x3;
    t09 = x1 & t06;
    t10 = t08 | t03;
    t11 = x1 & t07;
    t12 = t06 & t02;
    y3 = t09 ^ t10;
    y1 = t12 ^ t11;
    t15 = x2 & y3;
    t16 = y0 ^ y1;
    t17 = t10 ^ t15;
    y2 = t16 ^ t17;
  };
  y0 ^= subkeys[26][0];
  y1 ^= subkeys[26][1];
  y2 ^= subkeys[26][2];
  y3 ^= subkeys[26][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t14, t15, t17, t01;
    t01 = x0 ^ x1;
    t02 = x1 | x3;
    t03 = x0 & x2;
    t04 = x2 ^ t02;
    t05 = x0 | t04;
    t06 = t01 & t05;
    t07 = x3 | t03;
    t08 = x1 ^ t06;
    t09 = t07 ^ t06;
    t10 = t04 | t03;
    t11 = x3 & t08;
    y2 = ~t09;
    y1 = t10 ^ t11;
    t14 = x0 | y2;
    t15 = t06 ^ y1;
    y3 = t01 ^ t04;
    t17 = x2 ^ t15;
    y0 = t14 ^ t17;
  };
  y0 ^= subkeys[25][0];
  y1 ^= subkeys[25][1];
  y2 ^= subkeys[25][2];
  y3 ^= subkeys[25][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t08, t09, t10, t12, t13, t14, t15, t17, t18, t01;
    t01 = x2 ^ x3;
    t02 = x0 | x1;
    t03 = x1 | x2;
    t04 = x2 & t01;
    t05 = t02 ^ t01;
    t06 = x0 | t04;
    y2 = ~t05;
    t08 = x1 ^ x3;
    t09 = t03 & t08;
    t10 = x3 | y2;
    y1 = t09 ^ t06;
    t12 = x0 | t05;
    t13 = y1 ^ t12;
    t14 = t03 ^ t10;
    t15 = x0 ^ x2;
    y3 = t14 ^ t13;
    t17 = t05 & t13;
    t18 = t14 | t17;
    y0 = t15 ^ t18;
  };
  y0 ^= subkeys[24][0];
  y1 ^= subkeys[24][1];
  y2 ^= subkeys[24][2];
  y3 ^= subkeys[24][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t13, t14, t15, t16, t01;
    t01 = x0 & x1;
    t02 = x0 | x1;
    t03 = x2 | t01;
    t04 = x3 & t02;
    y3 = t03 ^ t04;
    t06 = x1 ^ t04;
    t07 = x3 ^ y3;
    t08 = ~t07;
    t09 = t06 | t08;
    t10 = x1 ^ x3;
    t11 = x0 | x3;
    y1 = x0 ^ t09;
    t13 = x2 ^ t06;
    t14 = x2 & t11;
    t15 = x3 | y1;
    t16 = t01 | t10;
    y0 = t13 ^ t15;
    y2 = t14 ^ t16;
  };
  y0 ^= subkeys[23][0];
  y1 ^= subkeys[23][1];
  y2 ^= subkeys[23][2];
  y3 ^= subkeys[23][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t12, t13, t14, t15, t16, t17, t01;
    t01 = x0 ^ x2;
    t02 = ~x2;
    t03 = x1 & t01;
    t04 = x1 | t02;
    t05 = x3 | t03;
    t06 = x1 ^ x3;
    t07 = x0 & t04;
    t08 = x0 | t02;
    t09 = t07 ^ t05;
    y1 = t06 ^ t08;
    y0 = ~t09;
    t12 = x1 & y0;
    t13 = t01 & t05;
    t14 = t01 ^ t12;
    t15 = t07 ^ t13;
    t16 = x3 | t02;
    t17 = x0 ^ y1;
    y3 = t17 ^ t15;
    y2 = t16 ^ t14;
  };
  y0 ^= subkeys[22][0];
  y1 ^= subkeys[22][1];
  y2 ^= subkeys[22][2];
  y3 ^= subkeys[22][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t07, t08, t09, t10, t12, t13, t15, t16, t01;
    t01 = x0 & x3;
    t02 = x2 ^ t01;
    t03 = x0 ^ x3;
    t04 = x1 & t02;
    t05 = x0 & x2;
    y0 = t03 ^ t04;
    t07 = x0 & y0;
    t08 = t01 ^ y0;
    t09 = x1 | t05;
    t10 = ~x1;
    y1 = t08 ^ t09;
    t12 = t10 | t07;
    t13 = y0 | y1;
    y3 = t02 ^ t12;
    t15 = t02 ^ t13;
    t16 = x1 ^ x3;
    y2 = t16 ^ t15;
  };
  y0 ^= subkeys[21][0];
  y1 ^= subkeys[21][1];
  y2 ^= subkeys[21][2];
  y3 ^= subkeys[21][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t10, t11, t12, t13, t15, t01;
    t01 = x1 | x3;
    t02 = x2 | x3;
    t03 = x0 & t01;
    t04 = x1 ^ t02;
    t05 = x2 ^ x3;
    t06 = ~t03;
    t07 = x0 & t04;
    y1 = t05 ^ t07;
    t09 = y1 | t06;
    t10 = x0 ^ t07;
    t11 = t01 ^ t09;
    t12 = x3 ^ t04;
    t13 = x2 | t10;
    y3 = t03 ^ t12;
    t15 = x0 ^ t04;
    y2 = t11 ^ t13;
    y0 = t15 ^ t09;
  };
  y0 ^= subkeys[20][0];
  y1 ^= subkeys[20][1];
  y2 ^= subkeys[20][2];
  y3 ^= subkeys[20][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t11, t12, t13, t14, t16, t01;
    t01 = x2 | x3;
    t02 = x0 | x3;
    t03 = x2 ^ t02;
    t04 = x1 ^ t02;
    t05 = x0 ^ x3;
    t06 = t04 & t03;
    t07 = x1 & t01;
    y2 = t05 ^ t06;
    t09 = x0 ^ t03;
    y0 = t07 ^ t03;
    t11 = y0 | t05;
    t12 = t09 & t11;
    t13 = x0 & y2;
    t14 = t01 ^ t05;
    y1 = x1 ^ t12;
    t16 = x1 | t13;
    y3 = t14 ^ t16;
  };
  y0 ^= subkeys[19][0];
  y1 ^= subkeys[19][1];
  y2 ^= subkeys[19][2];
  y3 ^= subkeys[19][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t12, t15, t16, t17, t01;
    t01 = x0 ^ x3;
    t02 = x2 ^ x3;
    t03 = x0 & x2;
    t04 = x1 | t02;
    y0 = t01 ^ t04;
    t06 = x0 | x2;
    t07 = x3 | y0;
    t08 = ~x3;
    t09 = x1 & t06;
    t10 = t08 | t03;
    t11 = x1 & t07;
    t12 = t06 & t02;
    y3 = t09 ^ t10;
    y1 = t12 ^ t11;
    t15 = x2 & y3;
    t16 = y0 ^ y1;
    t17 = t10 ^ t15;
    y2 = t16 ^ t17;
  };
  y0 ^= subkeys[18][0];
  y1 ^= subkeys[18][1];
  y2 ^= subkeys[18][2];
  y3 ^= subkeys[18][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t14, t15, t17, t01;
    t01 = x0 ^ x1;
    t02 = x1 | x3;
    t03 = x0 & x2;
    t04 = x2 ^ t02;
    t05 = x0 | t04;
    t06 = t01 & t05;
    t07 = x3 | t03;
    t08 = x1 ^ t06;
    t09 = t07 ^ t06;
    t10 = t04 | t03;
    t11 = x3 & t08;
    y2 = ~t09;
    y1 = t10 ^ t11;
    t14 = x0 | y2;
    t15 = t06 ^ y1;
    y3 = t01 ^ t04;
    t17 = x2 ^ t15;
    y0 = t14 ^ t17;
  };
  y0 ^= subkeys[17][0];
  y1 ^= subkeys[17][1];
  y2 ^= subkeys[17][2];
  y3 ^= subkeys[17][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t08, t09, t10, t12, t13, t14, t15, t17, t18, t01;
    t01 = x2 ^ x3;
    t02 = x0 | x1;
    t03 = x1 | x2;
    t04 = x2 & t01;
    t05 = t02 ^ t01;
    t06 = x0 | t04;
    y2 = ~t05;
    t08 = x1 ^ x3;
    t09 = t03 & t08;
    t10 = x3 | y2;
    y1 = t09 ^ t06;
    t12 = x0 | t05;
    t13 = y1 ^ t12;
    t14 = t03 ^ t10;
    t15 = x0 ^ x2;
    y3 = t14 ^ t13;
    t17 = t05 & t13;
    t18 = t14 | t17;
    y0 = t15 ^ t18;
  };
  y0 ^= subkeys[16][0];
  y1 ^= subkeys[16][1];
  y2 ^= subkeys[16][2];
  y3 ^= subkeys[16][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t13, t14, t15, t16, t01;
    t01 = x0 & x1;
    t02 = x0 | x1;
    t03 = x2 | t01;
    t04 = x3 & t02;
    y3 = t03 ^ t04;
    t06 = x1 ^ t04;
    t07 = x3 ^ y3;
    t08 = ~t07;
    t09 = t06 | t08;
    t10 = x1 ^ x3;
    t11 = x0 | x3;
    y1 = x0 ^ t09;
    t13 = x2 ^ t06;
    t14 = x2 & t11;
    t15 = x3 | y1;
    t16 = t01 | t10;
    y0 = t13 ^ t15;
    y2 = t14 ^ t16;
  };
  y0 ^= subkeys[15][0];
  y1 ^= subkeys[15][1];
  y2 ^= subkeys[15][2];
  y3 ^= subkeys[15][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t12, t13, t14, t15, t16, t17, t01;
    t01 = x0 ^ x2;
    t02 = ~x2;
    t03 = x1 & t01;
    t04 = x1 | t02;
    t05 = x3 | t03;
    t06 = x1 ^ x3;
    t07 = x0 & t04;
    t08 = x0 | t02;
    t09 = t07 ^ t05;
    y1 = t06 ^ t08;
    y0 = ~t09;
    t12 = x1 & y0;
    t13 = t01 & t05;
    t14 = t01 ^ t12;
    t15 = t07 ^ t13;
    t16 = x3 | t02;
    t17 = x0 ^ y1;
    y3 = t17 ^ t15;
    y2 = t16 ^ t14;
  };
  y0 ^= subkeys[14][0];
  y1 ^= subkeys[14][1];
  y2 ^= subkeys[14][2];
  y3 ^= subkeys[14][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t07, t08, t09, t10, t12, t13, t15, t16, t01;
    t01 = x0 & x3;
    t02 = x2 ^ t01;
    t03 = x0 ^ x3;
    t04 = x1 & t02;
    t05 = x0 & x2;
    y0 = t03 ^ t04;
    t07 = x0 & y0;
    t08 = t01 ^ y0;
    t09 = x1 | t05;
    t10 = ~x1;
    y1 = t08 ^ t09;
    t12 = t10 | t07;
    t13 = y0 | y1;
    y3 = t02 ^ t12;
    t15 = t02 ^ t13;
    t16 = x1 ^ x3;
    y2 = t16 ^ t15;
  };
  y0 ^= subkeys[13][0];
  y1 ^= subkeys[13][1];
  y2 ^= subkeys[13][2];
  y3 ^= subkeys[13][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t10, t11, t12, t13, t15, t01;
    t01 = x1 | x3;
    t02 = x2 | x3;
    t03 = x0 & t01;
    t04 = x1 ^ t02;
    t05 = x2 ^ x3;
    t06 = ~t03;
    t07 = x0 & t04;
    y1 = t05 ^ t07;
    t09 = y1 | t06;
    t10 = x0 ^ t07;
    t11 = t01 ^ t09;
    t12 = x3 ^ t04;
    t13 = x2 | t10;
    y3 = t03 ^ t12;
    t15 = x0 ^ t04;
    y2 = t11 ^ t13;
    y0 = t15 ^ t09;
  };
  y0 ^= subkeys[12][0];
  y1 ^= subkeys[12][1];
  y2 ^= subkeys[12][2];
  y3 ^= subkeys[12][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t11, t12, t13, t14, t16, t01;
    t01 = x2 | x3;
    t02 = x0 | x3;
    t03 = x2 ^ t02;
    t04 = x1 ^ t02;
    t05 = x0 ^ x3;
    t06 = t04 & t03;
    t07 = x1 & t01;
    y2 = t05 ^ t06;
    t09 = x0 ^ t03;
    y0 = t07 ^ t03;
    t11 = y0 | t05;
    t12 = t09 & t11;
    t13 = x0 & y2;
    t14 = t01 ^ t05;
    y1 = x1 ^ t12;
    t16 = x1 | t13;
    y3 = t14 ^ t16;
  };
  y0 ^= subkeys[11][0];
  y1 ^= subkeys[11][1];
  y2 ^= subkeys[11][2];
  y3 ^= subkeys[11][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t12, t15, t16, t17, t01;
    t01 = x0 ^ x3;
    t02 = x2 ^ x3;
    t03 = x0 & x2;
    t04 = x1 | t02;
    y0 = t01 ^ t04;
    t06 = x0 | x2;
    t07 = x3 | y0;
    t08 = ~x3;
    t09 = x1 & t06;
    t10 = t08 | t03;
    t11 = x1 & t07;
    t12 = t06 & t02;
    y3 = t09 ^ t10;
    y1 = t12 ^ t11;
    t15 = x2 & y3;
    t16 = y0 ^ y1;
    t17 = t10 ^ t15;
    y2 = t16 ^ t17;
  };
  y0 ^= subkeys[10][0];
  y1 ^= subkeys[10][1];
  y2 ^= subkeys[10][2];
  y3 ^= subkeys[10][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t14, t15, t17, t01;
    t01 = x0 ^ x1;
    t02 = x1 | x3;
    t03 = x0 & x2;
    t04 = x2 ^ t02;
    t05 = x0 | t04;
    t06 = t01 & t05;
    t07 = x3 | t03;
    t08 = x1 ^ t06;
    t09 = t07 ^ t06;
    t10 = t04 | t03;
    t11 = x3 & t08;
    y2 = ~t09;
    y1 = t10 ^ t11;
    t14 = x0 | y2;
    t15 = t06 ^ y1;
    y3 = t01 ^ t04;
    t17 = x2 ^ t15;
    y0 = t14 ^ t17;
  };
  y0 ^= subkeys[9][0];
  y1 ^= subkeys[9][1];
  y2 ^= subkeys[9][2];
  y3 ^= subkeys[9][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t08, t09, t10, t12, t13, t14, t15, t17, t18, t01;
    t01 = x2 ^ x3;
    t02 = x0 | x1;
    t03 = x1 | x2;
    t04 = x2 & t01;
    t05 = t02 ^ t01;
    t06 = x0 | t04;
    y2 = ~t05;
    t08 = x1 ^ x3;
    t09 = t03 & t08;
    t10 = x3 | y2;
    y1 = t09 ^ t06;
    t12 = x0 | t05;
    t13 = y1 ^ t12;
    t14 = t03 ^ t10;
    t15 = x0 ^ x2;
    y3 = t14 ^ t13;
    t17 = t05 & t13;
    t18 = t14 | t17;
    y0 = t15 ^ t18;
  };
  y0 ^= subkeys[8][0];
  y1 ^= subkeys[8][1];
  y2 ^= subkeys[8][2];
  y3 ^= subkeys[8][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t13, t14, t15, t16, t01;
    t01 = x0 & x1;
    t02 = x0 | x1;
    t03 = x2 | t01;
    t04 = x3 & t02;
    y3 = t03 ^ t04;
    t06 = x1 ^ t04;
    t07 = x3 ^ y3;
    t08 = ~t07;
    t09 = t06 | t08;
    t10 = x1 ^ x3;
    t11 = x0 | x3;
    y1 = x0 ^ t09;
    t13 = x2 ^ t06;
    t14 = x2 & t11;
    t15 = x3 | y1;
    t16 = t01 | t10;
    y0 = t13 ^ t15;
    y2 = t14 ^ t16;
  };
  y0 ^= subkeys[7][0];
  y1 ^= subkeys[7][1];
  y2 ^= subkeys[7][2];
  y3 ^= subkeys[7][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t12, t13, t14, t15, t16, t17, t01;
    t01 = x0 ^ x2;
    t02 = ~x2;
    t03 = x1 & t01;
    t04 = x1 | t02;
    t05 = x3 | t03;
    t06 = x1 ^ x3;
    t07 = x0 & t04;
    t08 = x0 | t02;
    t09 = t07 ^ t05;
    y1 = t06 ^ t08;
    y0 = ~t09;
    t12 = x1 & y0;
    t13 = t01 & t05;
    t14 = t01 ^ t12;
    t15 = t07 ^ t13;
    t16 = x3 | t02;
    t17 = x0 ^ y1;
    y3 = t17 ^ t15;
    y2 = t16 ^ t14;
  };
  y0 ^= subkeys[6][0];
  y1 ^= subkeys[6][1];
  y2 ^= subkeys[6][2];
  y3 ^= subkeys[6][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t07, t08, t09, t10, t12, t13, t15, t16, t01;
    t01 = x0 & x3;
    t02 = x2 ^ t01;
    t03 = x0 ^ x3;
    t04 = x1 & t02;
    t05 = x0 & x2;
    y0 = t03 ^ t04;
    t07 = x0 & y0;
    t08 = t01 ^ y0;
    t09 = x1 | t05;
    t10 = ~x1;
    y1 = t08 ^ t09;
    t12 = t10 | t07;
    t13 = y0 | y1;
    y3 = t02 ^ t12;
    t15 = t02 ^ t13;
    t16 = x1 ^ x3;
    y2 = t16 ^ t15;
  };
  y0 ^= subkeys[5][0];
  y1 ^= subkeys[5][1];
  y2 ^= subkeys[5][2];
  y3 ^= subkeys[5][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t10, t11, t12, t13, t15, t01;
    t01 = x1 | x3;
    t02 = x2 | x3;
    t03 = x0 & t01;
    t04 = x1 ^ t02;
    t05 = x2 ^ x3;
    t06 = ~t03;
    t07 = x0 & t04;
    y1 = t05 ^ t07;
    t09 = y1 | t06;
    t10 = x0 ^ t07;
    t11 = t01 ^ t09;
    t12 = x3 ^ t04;
    t13 = x2 | t10;
    y3 = t03 ^ t12;
    t15 = x0 ^ t04;
    y2 = t11 ^ t13;
    y0 = t15 ^ t09;
  };
  y0 ^= subkeys[4][0];
  y1 ^= subkeys[4][1];
  y2 ^= subkeys[4][2];
  y3 ^= subkeys[4][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t09, t11, t12, t13, t14, t16, t01;
    t01 = x2 | x3;
    t02 = x0 | x3;
    t03 = x2 ^ t02;
    t04 = x1 ^ t02;
    t05 = x0 ^ x3;
    t06 = t04 & t03;
    t07 = x1 & t01;
    y2 = t05 ^ t06;
    t09 = x0 ^ t03;
    y0 = t07 ^ t03;
    t11 = y0 | t05;
    t12 = t09 & t11;
    t13 = x0 & y2;
    t14 = t01 ^ t05;
    y1 = x1 ^ t12;
    t16 = x1 | t13;
    y3 = t14 ^ t16;
  };
  y0 ^= subkeys[3][0];
  y1 ^= subkeys[3][1];
  y2 ^= subkeys[3][2];
  y3 ^= subkeys[3][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t06, t07, t08, t09, t10, t11, t12, t15, t16, t17, t01;
    t01 = x0 ^ x3;
    t02 = x2 ^ x3;
    t03 = x0 & x2;
    t04 = x1 | t02;
    y0 = t01 ^ t04;
    t06 = x0 | x2;
    t07 = x3 | y0;
    t08 = ~x3;
    t09 = x1 & t06;
    t10 = t08 | t03;
    t11 = x1 & t07;
    t12 = t06 & t02;
    y3 = t09 ^ t10;
    y1 = t12 ^ t11;
    t15 = x2 & y3;
    t16 = y0 ^ y1;
    t17 = t10 ^ t15;
    y2 = t16 ^ t17;
  };
  y0 ^= subkeys[2][0];
  y1 ^= subkeys[2][1];
  y2 ^= subkeys[2][2];
  y3 ^= subkeys[2][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t14, t15, t17, t01;
    t01 = x0 ^ x1;
    t02 = x1 | x3;
    t03 = x0 & x2;
    t04 = x2 ^ t02;
    t05 = x0 | t04;
    t06 = t01 & t05;
    t07 = x3 | t03;
    t08 = x1 ^ t06;
    t09 = t07 ^ t06;
    t10 = t04 | t03;
    t11 = x3 & t08;
    y2 = ~t09;
    y1 = t10 ^ t11;
    t14 = x0 | y2;
    t15 = t06 ^ y1;
    y3 = t01 ^ t04;
    t17 = x2 ^ t15;
    y0 = t14 ^ t17;
  };
  y0 ^= subkeys[1][0];
  y1 ^= subkeys[1][1];
  y2 ^= subkeys[1][2];
  y3 ^= subkeys[1][3];
  x2 = ((((unsigned long)(y2)) << (32 - (22))) | (((unsigned long)(y2)) >> (22)));
  x0 = ((((unsigned long)(y0)) << (32 - (5))) | (((unsigned long)(y0)) >> (5)));
  x2 = x2 ^ y3 ^ ((unsigned long)y1 << 7);
  x0 = x0 ^ y1 ^ y3;
  x3 = ((((unsigned long)(y3)) << (32 - (7))) | (((unsigned long)(y3)) >> (7)));
  x1 = ((((unsigned long)(y1)) << (32 - (1))) | (((unsigned long)(y1)) >> (1)));
  x3 = x3 ^ x2 ^ ((unsigned long)x0) << 3;
  x1 = x1 ^ x0 ^ x2;
  x2 = ((((unsigned long)(x2)) << (32 - (3))) | (((unsigned long)(x2)) >> (3)));
  x0 = ((((unsigned long)(x0)) << (32 - (13))) | (((unsigned long)(x0)) >> (13)));
  {
    register unsigned long t02, t03, t04, t05, t06, t08, t09, t10, t12, t13, t14, t15, t17, t18, t01;
    t01 = x2 ^ x3;
    t02 = x0 | x1;
    t03 = x1 | x2;
    t04 = x2 & t01;
    t05 = t02 ^ t01;
    t06 = x0 | t04;
    y2 = ~t05;
    t08 = x1 ^ x3;
    t09 = t03 & t08;
    t10 = x3 | y2;
    y1 = t09 ^ t06;
    t12 = x0 | t05;
    t13 = y1 ^ t12;
    t14 = t03 ^ t10;
    t15 = x0 ^ x2;
    y3 = t14 ^ t13;
    t17 = t05 & t13;
    t18 = t14 | t17;
    y0 = t15 ^ t18;
  };
  x0 = y0;
  x1 = y1;
  x2 = y2;
  x3 = y3;
  x0 ^= subkeys[0][0];
  x1 ^= subkeys[0][1];
  x2 ^= subkeys[0][2];
  x3 ^= subkeys[0][3];
  plaintext[0] = x0;
  plaintext[1] = x1;
  plaintext[2] = x2;
  plaintext[3] = x3;
}
```