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

```asm
<serpent_decrypt>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  mov    %rdi,-0x30(%rbp)
  mov    %rsi,-0x38(%rbp)
  mov    %rdx,-0x40(%rbp)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%rbx
  mov    -0x30(%rbp),%rax
  mov    0x8(%rax),%rsi
  mov    -0x30(%rbp),%rax
  mov    0x10(%rax),%r12
  mov    -0x30(%rbp),%rax
  mov    0x18(%rax),%rcx
  mov    -0x40(%rbp),%rax
  add    $0x400,%rax
  mov    (%rax),%rax
  xor    %rax,%rbx
  mov    -0x40(%rbp),%rax
  add    $0x400,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x400,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%r12
  mov    -0x40(%rbp),%rax
  add    $0x400,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%rcx
  mov    %rcx,%rdi
  mov    %rsi,%rax
  and    %rbx,%rax
  mov    %rsi,%rcx
  mov    %rcx,%r13
  or     %rbx,%r13
  mov    %rax,%r14
  or     %r12,%r14
  and    %rdi,%r13
  xor    %r13,%r14
  mov    %r13,%r15
  xor    %rcx,%r15
  mov    %rdi,%r13
  xor    %r14,%r13
  not    %r13
  or     %r15,%r13
  xor    %rdi,%rcx
  mov    %rdi,%rsi
  or     %rbx,%rsi
  xor    %rbx,%r13
  mov    %r15,%rdx
  xor    %r12,%rdx
  and    %rsi,%r12
  or     %r13,%rdi
  mov    %rdi,%r15
  or     %rcx,%rax
  mov    %rax,%rbx
  xor    %rdx,%r15
  mov    %r12,%rsi
  xor    %rbx,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x3e0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x3e0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x3e0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x3e0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rbx,%r14
  xor    %r12,%r14
  not    %r12
  mov    %rcx,%r15
  and    %r14,%r15
  mov    %rcx,%r13
  or     %r12,%r13
  mov    %r15,%rdx
  or     %rsi,%rdx
  mov    %rcx,%rax
  xor    %rsi,%rax
  mov    %r13,%rdi
  and    %rbx,%rdi
  mov    %rbx,%r13
  or     %r12,%r13
  mov    %rdi,%r15
  xor    %rdx,%r15
  xor    %rax,%r13
  not    %r15
  and    %r15,%rcx
  and    %r14,%rdx
  mov    %r14,%rax
  xor    %rcx,%rax
  xor    %rdx,%rdi
  mov    %rdi,%r14
  or     %rsi,%r12
  xor    %r13,%rbx
  xor    %rbx,%r14
  mov    %r12,%rcx
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x3c0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x3c0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x3c0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x3c0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%r13
  and    %rbx,%r13
  mov    %r12,%rsi
  xor    %r13,%rsi
  mov    %rdi,%rax
  mov    %rax,%r15
  xor    %rbx,%r15
  mov    %rcx,%r14
  and    %rsi,%r14
  and    %rbx,%r12
  xor    %r14,%r15
  and    %r15,%rbx
  mov    %r13,%r14
  xor    %r15,%r14
  or     %rcx,%r12
  mov    %r12,%r13
  mov    %rcx,%r12
  not    %r12
  xor    %r14,%r13
  or     %r12,%rbx
  mov    %r15,%r12
  or     %r13,%r12
  mov    %rsi,%rdi
  xor    %rdi,%rbx
  mov    %rbx,%r14
  xor    %r12,%rdi
  mov    %rdi,%rbx
  xor    %rax,%rcx
  mov    %rcx,%r12
  mov    %r12,%rsi
  xor    %rbx,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x3a0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x3a0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x3a0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x3a0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rax
  or     %rdi,%rax
  mov    %rdi,%r13
  or     %r12,%r13
  mov    %rax,%r14
  and    %rbx,%r14
  xor    %r13,%rsi
  mov    %rsi,%r15
  mov    %rdi,%r13
  xor    %r12,%r13
  mov    %r14,%rcx
  not    %rcx
  mov    %rbx,%rsi
  and    %r15,%rsi
  xor    %rsi,%r13
  or     %r13,%rcx
  xor    %rbx,%rsi
  xor    %rcx,%rax
  xor    %r15,%rdi
  or     %rsi,%r12
  xor    %rdi,%r14
  xor    %r15,%rbx
  mov    %r12,%rdi
  xor    %rax,%rdi
  xor    %rbx,%rcx
  mov    %rcx,%r15
  mov    -0x40(%rbp),%rax
  add    $0x380,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x380,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x380,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x380,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%rax
  or     %r12,%rax
  mov    %rcx,%r14
  or     %rbx,%r14
  xor    %r14,%r12
  mov    %r12,%r13
  xor    %rsi,%r14
  xor    %rbx,%rcx
  mov    %rcx,%r12
  and    %r13,%r14
  mov    %rsi,%r15
  and    %rax,%r15
  mov    %r14,%rcx
  xor    %r12,%rcx
  mov    %rbx,%r14
  xor    %r13,%r14
  xor    %r13,%r15
  mov    %r15,%r13
  or     %r12,%r13
  and    %r14,%r13
  and    %rcx,%rbx
  xor    %rax,%r12
  xor    %rsi,%r13
  or     %rsi,%rbx
  mov    %r12,%r14
  xor    %rbx,%r14
  mov    -0x40(%rbp),%rax
  add    $0x360,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x360,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x360,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x360,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%r15
  xor    %rbx,%r15
  mov    %rdi,%r13
  xor    %r12,%r13
  mov    %rbx,%rcx
  and    %r12,%rcx
  mov    %rsi,%r14
  or     %r13,%r14
  xor    %r14,%r15
  or     %r12,%rbx
  mov    %rbx,%r14
  mov    %rdi,%rax
  or     %r15,%rax
  not    %rdi
  mov    %rsi,%rbx
  and    %r14,%rbx
  or     %rcx,%rdi
  and    %rax,%rsi
  and    %r14,%r13
  xor    %rdi,%rbx
  mov    %rbx,%r14
  xor    %rsi,%r13
  mov    %r12,%rbx
  and    %r14,%rbx
  mov    %r15,%r12
  xor    %r13,%r12
  xor    %rdi,%rbx
  mov    %r12,%rcx
  xor    %rbx,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x340,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x340,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x340,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x340,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rcx,%rax
  xor    %rbx,%rax
  mov    %rax,%rsi
  xor    %r12,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rax
  xor    %rbx,%rax
  mov    %rsi,%r13
  or     %rdi,%r13
  mov    %rbx,%rcx
  and    %r12,%rcx
  mov    %r13,%r15
  xor    %r12,%r15
  mov    %rbx,%r13
  or     %r15,%r13
  mov    %r13,%r14
  and    %rax,%r14
  mov    %rdi,%r13
  or     %rcx,%r13
  xor    %r14,%rsi
  xor    %r14,%r13
  or     %r15,%rcx
  mov    %rcx,%rdx
  and    %rsi,%rdi
  mov    %rdi,%rcx
  mov    %r13,%rdi
  not    %rdi
  xor    %rcx,%rdx
  mov    %rdx,%r13
  or     %rdi,%rbx
  mov    %rbx,%rsi
  mov    %r14,%rbx
  xor    %r13,%rbx
  xor    %r15,%rax
  mov    %rax,%r14
  xor    %r12,%rbx
  xor    %rbx,%rsi
  mov    %rsi,%r15
  mov    -0x40(%rbp),%rax
  add    $0x320,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x320,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x320,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x320,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rdx
  mov    %rdx,%r14
  xor    %r12,%r14
  mov    %rcx,%r15
  or     %rbx,%r15
  mov    %rcx,%rsi
  mov    %rsi,%rax
  or     %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%r13
  and    %r14,%r13
  xor    %r14,%r15
  mov    %r13,%r14
  or     %rbx,%r14
  mov    %r15,%rdi
  not    %rdi
  xor    %rdx,%rsi
  mov    %rsi,%r13
  and    %rcx,%r13
  or     %rdi,%rdx
  xor    %r14,%r13
  mov    %rbx,%r14
  or     %r15,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %rdx,%rcx
  xor    %rbx,%r12
  mov    %rcx,%r14
  xor    %rax,%r14
  and    %r15,%rax
  mov    %rax,%rbx
  or     %rcx,%rbx
  mov    %r12,%r15
  xor    %rbx,%r15
  mov    -0x40(%rbp),%rax
  add    $0x300,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x300,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x300,%rax
  mov    0x10(%rax),%rax
  mov    %rdi,%rsi
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x300,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  xor    %r12,%rsi
  mov    %rsi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%rax
  and    %rbx,%rax
  mov    %rdi,%r13
  or     %rbx,%r13
  mov    %rax,%r14
  or     %r12,%r14
  and    %rcx,%r13
  xor    %r13,%r14
  mov    %r13,%r15
  xor    %rdi,%r15
  mov    %rcx,%r13
  xor    %r14,%r13
  not    %r13
  or     %r15,%r13
  xor    %rcx,%rdi
  mov    %rcx,%rsi
  or     %rbx,%rsi
  xor    %rbx,%r13
  mov    %r15,%rdx
  xor    %r12,%rdx
  and    %rsi,%r12
  or     %r13,%rcx
  mov    %rcx,%r15
  or     %rdi,%rax
  mov    %rax,%rbx
  xor    %rdx,%r15
  mov    %r12,%rcx
  xor    %rbx,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x2e0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x2e0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x2e0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x2e0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rdi,%rcx
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rbx,%r14
  xor    %r12,%r14
  not    %r12
  mov    %rsi,%r15
  and    %r14,%r15
  mov    %rsi,%r13
  or     %r12,%r13
  mov    %r15,%rdx
  or     %rcx,%rdx
  mov    %rsi,%rax
  xor    %rcx,%rax
  mov    %r13,%rdi
  and    %rbx,%rdi
  mov    %rbx,%r13
  or     %r12,%r13
  mov    %rdi,%r15
  xor    %rdx,%r15
  xor    %rax,%r13
  not    %r15
  and    %r15,%rsi
  and    %r14,%rdx
  mov    %r14,%rax
  xor    %rsi,%rax
  xor    %rdx,%rdi
  mov    %rdi,%r14
  or     %rcx,%r12
  xor    %r13,%rbx
  xor    %rbx,%r14
  mov    %r12,%rsi
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x2c0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x2c0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x2c0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x2c0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%r13
  and    %rbx,%r13
  mov    %r12,%rcx
  xor    %r13,%rcx
  mov    %rdi,%rax
  mov    %rax,%r15
  xor    %rbx,%r15
  mov    %rsi,%r14
  and    %rcx,%r14
  and    %rbx,%r12
  xor    %r14,%r15
  and    %r15,%rbx
  mov    %r13,%r14
  xor    %r15,%r14
  or     %rsi,%r12
  mov    %r12,%r13
  mov    %rsi,%r12
  not    %r12
  xor    %r14,%r13
  or     %r12,%rbx
  mov    %r15,%r12
  or     %r13,%r12
  mov    %rcx,%rdi
  xor    %rdi,%rbx
  mov    %rbx,%r14
  xor    %r12,%rdi
  mov    %rdi,%rbx
  xor    %rax,%rsi
  mov    %rsi,%r12
  mov    %r12,%rcx
  xor    %rbx,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x2a0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x2a0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x2a0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x2a0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  xor    %r12,%rsi
  mov    %rsi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%rax
  or     %rdi,%rax
  mov    %rdi,%r13
  or     %r12,%r13
  mov    %rax,%r14
  and    %rbx,%r14
  xor    %r13,%rcx
  mov    %rcx,%r15
  mov    %rdi,%r13
  xor    %r12,%r13
  mov    %r14,%rsi
  not    %rsi
  mov    %rbx,%rcx
  and    %r15,%rcx
  xor    %rcx,%r13
  or     %r13,%rsi
  xor    %rbx,%rcx
  xor    %rsi,%rax
  xor    %r15,%rdi
  or     %rcx,%r12
  xor    %rdi,%r14
  xor    %r15,%rbx
  mov    %r12,%rdi
  xor    %rax,%rdi
  xor    %rbx,%rsi
  mov    %rsi,%r15
  mov    -0x40(%rbp),%rax
  add    $0x280,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x280,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x280,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x280,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rax
  or     %r12,%rax
  mov    %rsi,%r14
  or     %rbx,%r14
  xor    %r14,%r12
  mov    %r12,%r13
  xor    %rcx,%r14
  xor    %rbx,%rsi
  mov    %rsi,%r12
  and    %r13,%r14
  mov    %rcx,%rsi
  mov    %rsi,%r15
  and    %rax,%r15
  mov    %r14,%rcx
  xor    %r12,%rcx
  mov    %rbx,%r14
  xor    %r13,%r14
  xor    %r13,%r15
  mov    %r15,%r13
  or     %r12,%r13
  and    %r14,%r13
  and    %rcx,%rbx
  xor    %rax,%r12
  xor    %rsi,%r13
  or     %rsi,%rbx
  mov    %r12,%r14
  xor    %rbx,%r14
  mov    -0x40(%rbp),%rax
  add    $0x260,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x260,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x260,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x260,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  xor    %r12,%rsi
  mov    %rsi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rsi,%rcx
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%r15
  xor    %rbx,%r15
  mov    %rcx,%r13
  xor    %r12,%r13
  mov    %rbx,%rsi
  and    %r12,%rsi
  mov    %rdi,%r14
  or     %r13,%r14
  xor    %r14,%r15
  or     %r12,%rbx
  mov    %rbx,%r14
  mov    %rcx,%rax
  or     %r15,%rax
  not    %rcx
  mov    %rdi,%rbx
  and    %r14,%rbx
  or     %rsi,%rcx
  and    %rax,%rdi
  and    %r14,%r13
  xor    %rcx,%rbx
  mov    %rbx,%r14
  xor    %rdi,%r13
  mov    %r12,%rbx
  and    %r14,%rbx
  mov    %r15,%r12
  xor    %r13,%r12
  xor    %rcx,%rbx
  mov    %r12,%rsi
  xor    %rbx,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x240,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x240,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x240,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x240,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rsi,%rax
  xor    %rbx,%rax
  mov    %rax,%rdi
  xor    %r12,%rdi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%rax
  xor    %rbx,%rax
  mov    %rdi,%r13
  or     %rcx,%r13
  mov    %rbx,%rsi
  and    %r12,%rsi
  mov    %r13,%r15
  xor    %r12,%r15
  mov    %rbx,%r13
  or     %r15,%r13
  mov    %r13,%r14
  and    %rax,%r14
  mov    %rcx,%r13
  or     %rsi,%r13
  xor    %r14,%rdi
  xor    %r14,%r13
  or     %r15,%rsi
  mov    %rsi,%rdx
  and    %rdi,%rcx
  mov    %r13,%rsi
  not    %rsi
  xor    %rcx,%rdx
  mov    %rdx,%r13
  or     %rsi,%rbx
  mov    %rbx,%rdi
  mov    %r14,%rbx
  xor    %r13,%rbx
  xor    %r15,%rax
  mov    %rax,%r14
  xor    %r12,%rbx
  xor    %rbx,%rdi
  mov    %rdi,%r15
  mov    -0x40(%rbp),%rax
  add    $0x220,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x220,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x220,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x220,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  xor    %r12,%rsi
  mov    %rsi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%r14
  xor    %r12,%r14
  mov    %rsi,%r15
  or     %rbx,%r15
  mov    %rsi,%rax
  or     %r12,%rax
  mov    %r12,%r13
  and    %r14,%r13
  xor    %r14,%r15
  mov    %r13,%r14
  or     %rbx,%r14
  mov    %r15,%rcx
  not    %rcx
  xor    %rdi,%rsi
  mov    %rsi,%r13
  mov    %rax,%rsi
  and    %rsi,%r13
  or     %rcx,%rdi
  xor    %r14,%r13
  mov    %rbx,%r14
  or     %r15,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %rdi,%rsi
  xor    %rbx,%r12
  mov    %rsi,%r14
  xor    %rax,%r14
  and    %r15,%rax
  mov    %rax,%rbx
  or     %rsi,%rbx
  mov    %r12,%r15
  xor    %rbx,%r15
  mov    -0x40(%rbp),%rax
  add    $0x200,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x200,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x200,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x200,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%rax
  and    %rbx,%rax
  mov    %rdi,%r13
  or     %rbx,%r13
  mov    %rax,%r14
  or     %r12,%r14
  and    %rcx,%r13
  xor    %r13,%r14
  mov    %r13,%r15
  xor    %rdi,%r15
  mov    %rcx,%r13
  xor    %r14,%r13
  not    %r13
  or     %r15,%r13
  xor    %rcx,%rdi
  mov    %rcx,%rsi
  or     %rbx,%rsi
  xor    %rbx,%r13
  mov    %r15,%rdx
  xor    %r12,%rdx
  and    %rsi,%r12
  or     %r13,%rcx
  mov    %rcx,%r15
  or     %rdi,%rax
  mov    %rax,%rbx
  xor    %rdx,%r15
  mov    %r12,%rsi
  xor    %rbx,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x1e0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x1e0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x1e0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x1e0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rbx,%r14
  xor    %r12,%r14
  not    %r12
  mov    %rdi,%r15
  and    %r14,%r15
  mov    %rdi,%r13
  or     %r12,%r13
  mov    %r15,%rdx
  or     %rsi,%rdx
  mov    %rdi,%rax
  xor    %rsi,%rax
  mov    %r13,%rcx
  and    %rbx,%rcx
  mov    %rbx,%r13
  or     %r12,%r13
  mov    %rcx,%r15
  xor    %rdx,%r15
  xor    %rax,%r13
  not    %r15
  and    %r15,%rdi
  and    %r14,%rdx
  mov    %r14,%rax
  xor    %rdi,%rax
  xor    %rdx,%rcx
  mov    %rcx,%r14
  or     %rsi,%r12
  xor    %r13,%rbx
  xor    %rbx,%r14
  mov    %r12,%rdi
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x1c0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x1c0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x1c0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x1c0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  xor    %r12,%rsi
  mov    %rsi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%r13
  and    %rbx,%r13
  mov    %r12,%rdi
  xor    %r13,%rdi
  mov    %rsi,%rax
  mov    %rax,%r15
  xor    %rbx,%r15
  mov    %rcx,%r14
  and    %rdi,%r14
  and    %rbx,%r12
  xor    %r14,%r15
  and    %r15,%rbx
  mov    %r13,%r14
  xor    %r15,%r14
  or     %rcx,%r12
  mov    %r12,%r13
  mov    %rcx,%r12
  not    %r12
  xor    %r14,%r13
  or     %r12,%rbx
  mov    %r15,%r12
  or     %r13,%r12
  xor    %rdi,%rbx
  mov    %rbx,%r14
  xor    %r12,%rdi
  mov    %rdi,%rbx
  xor    %rax,%rcx
  mov    %rcx,%r12
  mov    %r12,%rcx
  xor    %rbx,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x1a0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x1a0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x1a0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x1a0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rax
  or     %rdi,%rax
  mov    %rdi,%r13
  or     %r12,%r13
  mov    %rax,%r14
  and    %rbx,%r14
  xor    %r13,%rsi
  mov    %rsi,%r15
  mov    %rdi,%r13
  xor    %r12,%r13
  mov    %r14,%rcx
  not    %rcx
  mov    %rbx,%rsi
  and    %r15,%rsi
  xor    %rsi,%r13
  or     %r13,%rcx
  xor    %rbx,%rsi
  xor    %rcx,%rax
  xor    %r15,%rdi
  or     %rsi,%r12
  xor    %rdi,%r14
  xor    %r15,%rbx
  mov    %r12,%rdi
  xor    %rax,%rdi
  xor    %rbx,%rcx
  mov    %rcx,%r15
  mov    -0x40(%rbp),%rax
  add    $0x180,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x180,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x180,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x180,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%rax
  or     %r12,%rax
  mov    %rcx,%r14
  or     %rbx,%r14
  xor    %r14,%r12
  mov    %r12,%r13
  xor    %rsi,%r14
  xor    %rbx,%rcx
  mov    %rcx,%r12
  and    %r13,%r14
  mov    %rsi,%r15
  and    %rax,%r15
  mov    %r14,%rdi
  xor    %r12,%rdi
  mov    %rbx,%r14
  xor    %r13,%r14
  xor    %r13,%r15
  mov    %r15,%r13
  or     %r12,%r13
  and    %r14,%r13
  and    %rdi,%rbx
  xor    %rax,%r12
  xor    %rsi,%r13
  or     %rsi,%rbx
  mov    %r12,%r14
  xor    %rbx,%r14
  mov    -0x40(%rbp),%rax
  add    $0x160,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x160,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x160,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x160,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%r15
  xor    %rbx,%r15
  mov    %rcx,%r13
  xor    %r12,%r13
  mov    %rbx,%rdi
  and    %r12,%rdi
  mov    %rsi,%r14
  or     %r13,%r14
  xor    %r14,%r15
  or     %r12,%rbx
  mov    %rbx,%r14
  mov    %rcx,%rax
  or     %r15,%rax
  not    %rcx
  mov    %rsi,%rbx
  and    %r14,%rbx
  or     %rdi,%rcx
  and    %rax,%rsi
  and    %r14,%r13
  xor    %rcx,%rbx
  mov    %rbx,%r14
  xor    %rsi,%r13
  mov    %r12,%rbx
  and    %r14,%rbx
  mov    %r15,%r12
  xor    %r13,%r12
  xor    %rcx,%rbx
  mov    %r12,%rcx
  xor    %rbx,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x140,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x140,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x140,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x140,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rsi,%rax
  xor    %rbx,%rax
  mov    %rax,%rsi
  xor    %r12,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rax
  xor    %rbx,%rax
  mov    %rsi,%r13
  or     %rdi,%r13
  mov    %rbx,%rcx
  and    %r12,%rcx
  mov    %r13,%r15
  xor    %r12,%r15
  mov    %rbx,%r13
  or     %r15,%r13
  mov    %r13,%r14
  and    %rax,%r14
  mov    %rdi,%r13
  or     %rcx,%r13
  xor    %r14,%rsi
  xor    %r14,%r13
  or     %r15,%rcx
  mov    %rcx,%rdx
  and    %rsi,%rdi
  mov    %r13,%rcx
  not    %rcx
  xor    %rdi,%rdx
  mov    %rdx,%r13
  or     %rcx,%rbx
  mov    %rbx,%rdi
  mov    %r14,%rbx
  xor    %r13,%rbx
  xor    %r15,%rax
  mov    %rax,%r14
  xor    %r12,%rbx
  xor    %rbx,%rdi
  mov    %rdi,%r15
  mov    -0x40(%rbp),%rax
  add    $0x120,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x120,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x120,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0x120,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  or     %rax,%rdx
  mov    %rdx,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  xor    %r12,%rsi
  mov    %rsi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%rdx
  mov    %rdx,%r14
  xor    %r12,%r14
  mov    %rdi,%r15
  or     %rbx,%r15
  mov    %rdi,%rax
  or     %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%r13
  and    %r14,%r13
  xor    %r14,%r15
  mov    %r13,%r14
  or     %rbx,%r14
  mov    %r15,%rcx
  not    %rcx
  xor    %rdx,%rdi
  mov    %rdi,%r13
  and    %rsi,%r13
  or     %rcx,%rdx
  xor    %r14,%r13
  mov    %rbx,%r14
  or     %r15,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %rdx,%rsi
  xor    %rbx,%r12
  mov    %rsi,%r14
  xor    %rax,%r14
  and    %r15,%rax
  mov    %rax,%rbx
  or     %rsi,%rbx
  mov    %r12,%r15
  xor    %rbx,%r15
  mov    -0x40(%rbp),%rax
  add    $0x100,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x100,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x100,%rax
  mov    0x10(%rax),%rax
  mov    %rcx,%rdi
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x100,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  or     %rax,%rdx
  mov    %rdx,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  or     %rax,%rdx
  mov    %rdx,%rsi
  xor    %r12,%rcx
  mov    %rcx,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%rax
  and    %rbx,%rax
  mov    %rcx,%r13
  or     %rbx,%r13
  mov    %rax,%r14
  or     %r12,%r14
  and    %rdi,%r13
  xor    %r13,%r14
  mov    %r13,%r15
  xor    %rcx,%r15
  mov    %rdi,%r13
  xor    %r14,%r13
  not    %r13
  or     %r15,%r13
  xor    %rdi,%rcx
  mov    %rdi,%rsi
  or     %rbx,%rsi
  xor    %rbx,%r13
  mov    %r15,%rdx
  xor    %r12,%rdx
  and    %rsi,%r12
  or     %r13,%rdi
  mov    %rdi,%r15
  or     %rcx,%rax
  mov    %rax,%rbx
  xor    %rdx,%r15
  mov    %r12,%rsi
  xor    %rbx,%rsi
  mov    -0x40(%rbp),%rax
  add    $0xe0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0xe0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0xe0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0xe0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %rdi,%rdx
  xor    %r12,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rbx,%r14
  xor    %r12,%r14
  not    %r12
  mov    %rcx,%r15
  and    %r14,%r15
  mov    %rcx,%r13
  or     %r12,%r13
  mov    %r15,%rdx
  or     %rdi,%rdx
  mov    %rcx,%rax
  mov    %rdi,%rsi
  xor    %rsi,%rax
  mov    %r13,%rdi
  and    %rbx,%rdi
  mov    %rbx,%r13
  or     %r12,%r13
  mov    %rdi,%r15
  xor    %rdx,%r15
  xor    %rax,%r13
  not    %r15
  and    %r15,%rcx
  and    %r14,%rdx
  mov    %r14,%rax
  xor    %rcx,%rax
  xor    %rdx,%rdi
  mov    %rdi,%r14
  or     %rsi,%r12
  xor    %r13,%rbx
  xor    %rbx,%r14
  mov    %r12,%rcx
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0xc0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0xc0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0xc0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rcx
  mov    -0x40(%rbp),%rax
  add    $0xc0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rcx,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rcx
  mov    %rcx,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %rcx,%rdx
  xor    %r12,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rsi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rdi,%r13
  and    %rbx,%r13
  mov    %r12,%rcx
  xor    %r13,%rcx
  mov    %rdi,%rax
  mov    %rax,%r15
  xor    %rbx,%r15
  mov    %rsi,%r14
  and    %rcx,%r14
  and    %rbx,%r12
  xor    %r14,%r15
  and    %r15,%rbx
  mov    %r13,%r14
  xor    %r15,%r14
  or     %rsi,%r12
  mov    %r12,%r13
  mov    %rsi,%r12
  not    %r12
  xor    %r14,%r13
  or     %r12,%rbx
  mov    %r15,%r12
  or     %r13,%r12
  mov    %rcx,%rdi
  xor    %rdi,%rbx
  mov    %rbx,%r14
  xor    %r12,%rdi
  mov    %rdi,%rbx
  xor    %rax,%rsi
  mov    %rsi,%r12
  mov    %r12,%rsi
  xor    %rbx,%rsi
  mov    -0x40(%rbp),%rax
  add    $0xa0,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0xa0,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0xa0,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0xa0,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %rdi,%rdx
  xor    %r12,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rcx,%rax
  or     %rdi,%rax
  mov    %rdi,%r13
  or     %r12,%r13
  mov    %rax,%r14
  and    %rbx,%r14
  xor    %r13,%rcx
  mov    %rcx,%r15
  mov    %rdi,%r13
  xor    %r12,%r13
  mov    %r14,%rsi
  not    %rsi
  mov    %rbx,%rcx
  and    %r15,%rcx
  xor    %rcx,%r13
  or     %r13,%rsi
  xor    %rbx,%rcx
  xor    %rsi,%rax
  xor    %r15,%rdi
  or     %rcx,%r12
  xor    %rdi,%r14
  xor    %r15,%rbx
  mov    %r12,%rdi
  xor    %rax,%rdi
  xor    %rbx,%rsi
  mov    %rsi,%r15
  mov    -0x40(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rcx
  or     %rax,%rcx
  mov    %rdi,%rdx
  xor    %r12,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rax
  or     %r12,%rax
  mov    %rsi,%r14
  or     %rbx,%r14
  xor    %r14,%r12
  mov    %r12,%r13
  xor    %rcx,%r14
  xor    %rbx,%rsi
  mov    %rsi,%r12
  and    %r13,%r14
  mov    %rcx,%r15
  and    %rax,%r15
  mov    %r14,%rsi
  xor    %r12,%rsi
  mov    %rbx,%r14
  xor    %r13,%r14
  xor    %r13,%r15
  mov    %r15,%r13
  or     %r12,%r13
  and    %r14,%r13
  and    %rsi,%rbx
  xor    %rax,%r12
  xor    %rcx,%r13
  or     %rcx,%rbx
  mov    %r12,%r14
  xor    %rbx,%r14
  mov    -0x40(%rbp),%rax
  add    $0x60,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x60,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x60,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x60,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  or     %rax,%rdx
  mov    %rdx,%rcx
  mov    %rsi,%rdx
  xor    %r12,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rdi
  xor    %rax,%rdi
  mov    %rdi,%rsi
  mov    %rcx,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rcx
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%r15
  xor    %rbx,%r15
  mov    %rsi,%r13
  xor    %r12,%r13
  mov    %rbx,%rdi
  and    %r12,%rdi
  mov    %rcx,%r14
  or     %r13,%r14
  xor    %r14,%r15
  or     %r12,%rbx
  mov    %rbx,%r14
  mov    %rsi,%rax
  or     %r15,%rax
  not    %rsi
  mov    %rcx,%rbx
  and    %r14,%rbx
  or     %rdi,%rsi
  and    %rax,%rcx
  and    %r14,%r13
  xor    %rsi,%rbx
  mov    %rbx,%r14
  xor    %rcx,%r13
  mov    %r12,%rbx
  and    %r14,%rbx
  mov    %r15,%r12
  xor    %r13,%r12
  xor    %rsi,%rbx
  mov    %r12,%rsi
  xor    %rbx,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x40,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x40,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  add    $0x40,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rsi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rsi
  mov    %rsi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  mov    %rdx,%rdi
  or     %rax,%rdi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  mov    %rdx,%rsi
  or     %rax,%rsi
  xor    %r12,%rdi
  mov    %rdi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rcx
  xor    %rax,%rcx
  mov    %rsi,%rax
  xor    %rbx,%rax
  mov    %rax,%rsi
  xor    %r12,%rsi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%rax
  xor    %rbx,%rax
  mov    %rsi,%r13
  or     %rcx,%r13
  mov    %rbx,%rdi
  and    %r12,%rdi
  mov    %r13,%r15
  xor    %r12,%r15
  mov    %rbx,%r13
  or     %r15,%r13
  mov    %r13,%r14
  and    %rax,%r14
  mov    %rcx,%r13
  or     %rdi,%r13
  xor    %r14,%rsi
  xor    %r14,%r13
  or     %r15,%rdi
  mov    %rdi,%rdx
  and    %rsi,%rcx
  mov    %r13,%rdi
  not    %rdi
  xor    %rcx,%rdx
  mov    %rdx,%r13
  or     %rdi,%rbx
  mov    %rbx,%rcx
  mov    %r14,%rbx
  xor    %r13,%rbx
  xor    %r15,%rax
  mov    %rax,%r14
  xor    %r12,%rbx
  xor    %rbx,%rcx
  mov    %rcx,%r15
  mov    -0x40(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  xor    %rax,%r15
  mov    -0x40(%rbp),%rax
  add    $0x20,%rax
  mov    0x8(%rax),%rax
  xor    %rax,%r13
  mov    -0x40(%rbp),%rax
  add    $0x20,%rax
  mov    0x10(%rax),%rax
  xor    %rax,%rdi
  mov    -0x40(%rbp),%rax
  add    $0x20,%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    %rdi,%rdx
  shl    $0xa,%rdx
  shr    $0x16,%rdi
  mov    %rdi,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %r15,%rdx
  shl    $0x1b,%rdx
  mov    %r15,%rax
  shr    $0x5,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %r12,%rdx
  xor    %r14,%rdx
  mov    %r13,%rax
  shl    $0x7,%rax
  xor    %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rax
  xor    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rbx
  mov    %r14,%rdx
  shl    $0x19,%rdx
  mov    %r14,%rax
  shr    $0x7,%rax
  or     %rax,%rdx
  mov    %rdx,%rsi
  mov    %r13,%rdx
  shl    $0x1f,%rdx
  mov    %r13,%rax
  shr    %rax
  or     %rax,%rdx
  mov    %rdx,%rdi
  xor    %r12,%rsi
  mov    %rsi,%rdx
  lea    0x0(,%rbx,8),%rax
  mov    %rdx,%rsi
  xor    %rax,%rsi
  mov    %rdi,%rax
  xor    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdi
  mov    %r12,%rdx
  shl    $0x1d,%rdx
  mov    %r12,%rax
  shr    $0x3,%rax
  or     %rax,%rdx
  mov    %rdx,%r12
  mov    %rbx,%rdx
  shl    $0x13,%rdx
  mov    %rbx,%rax
  shr    $0xd,%rax
  mov    %rdx,%rbx
  or     %rax,%rbx
  mov    %rsi,%r14
  xor    %r12,%r14
  mov    %rdi,%r15
  or     %rbx,%r15
  mov    %rdi,%rax
  or     %r12,%rax
  mov    %r12,%r13
  and    %r14,%r13
  xor    %r14,%r15
  mov    %r13,%r14
  or     %rbx,%r14
  mov    %r15,%rcx
  not    %rcx
  xor    %rsi,%rdi
  mov    %rdi,%r13
  mov    %rax,%rdi
  and    %rdi,%r13
  or     %rcx,%rsi
  xor    %r14,%r13
  mov    %rbx,%r14
  or     %r15,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %rsi,%rdi
  xor    %rbx,%r12
  mov    %rdi,%r14
  xor    %rax,%r14
  and    %r15,%rax
  mov    %rax,%rbx
  or     %rdi,%rbx
  mov    %r12,%r15
  xor    %rbx,%r15
  mov    %r15,%rbx
  mov    %rcx,%r12
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rax
  xor    %rax,%rbx
  mov    -0x40(%rbp),%rax
  mov    0x8(%rax),%rax
  mov    %r13,%rsi
  xor    %rax,%rsi
  mov    -0x40(%rbp),%rax
  mov    0x10(%rax),%rax
  xor    %rax,%r12
  mov    -0x40(%rbp),%rax
  mov    0x18(%rax),%rax
  xor    %rax,%r14
  mov    -0x38(%rbp),%rax
  mov    %rbx,(%rax)
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    %rsi,(%rax)
  mov    -0x38(%rbp),%rax
  add    $0x10,%rax
  mov    %r12,(%rax)
  mov    -0x38(%rbp),%rax
  add    $0x18,%rax
  mov    %r14,(%rax)
  nop
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  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;
}
```