user: Translate the below assembly code into C programming language:

```asm
<SHA1_Transform_HC>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x128,%rsp
  mov    (%rdi),%rdi
  mov    0x20(%rbx),%r11
  mov    %fs:0x28,%rax
  mov    %rax,0x118(%rsp)
  xor    %eax,%eax
  mov    (%rsi),%r9
  mov    0x10(%rbx),%rcx
  mov    %rbx,0x88(%rsp)
  mov    %rdi,%rax
  mov    %rdi,%rdx
  mov    0x18(%rbx),%r15
  mov    0x8(%rbx),%r14
  shr    $0x1b,%rdx
  shl    $0x5,%rax
  movdqu (%rsi),%xmm0
  mov    0x10(%rsi),%r8
  or     %rdx,%rax
  mov    %r14,%r10
  mov    0x20(%rsi),%r13
  movdqu 0x10(%rsi),%xmm1
  shl    $0x1e,%r10
  movdqu 0x20(%rsi),%xmm2
  lea    0x5a827999(%r11,%r9,1),%rdx
  movdqu 0x30(%rsi),%xmm3
  add    %rdx,%rax
  mov    %rcx,%rdx
  movaps %xmm0,0x90(%rsp)
  mov    0x98(%rsp),%rsi
  xor    %r15,%rdx
  mov    %r14,0x68(%rsp)
  and    %r14,%rdx
  mov    %r11,0x80(%rsp)
  xor    %r15,%rdx
  mov    %r15,0x78(%rsp)
  add    %rax,%rdx
  mov    %r14,%rax
  mov    %rcx,%r14
  mov    %rdi,0x60(%rsp)
  shr    $0x2,%rax
  movaps %xmm3,0xc0(%rsp)
  mov    0xc0(%rsp),%r12
  or     %rax,%r10
  lea    0x5a827999(%rsi,%r15,1),%rax
  mov    %rdx,%rsi
  movaps %xmm1,0xa0(%rsp)
  xor    %r10,%rcx
  shl    $0x5,%rsi
  movaps %xmm2,0xb0(%rsp)
  and    %rdi,%rcx
  mov    %r14,0x70(%rsp)
  mov    0xc8(%rsp),%r15
  xor    %r14,%rcx
  add    %rax,%rcx
  mov    %rsi,%rax
  mov    %rdx,%rsi
  shr    $0x1b,%rsi
  or     %rsi,%rax
  mov    %r10,%rsi
  add    %rcx,%rax
  mov    %rdi,%rcx
  shl    $0x1e,%rcx
  mov    %rax,%rbp
  mov    %rcx,%rbx
  mov    %rdi,%rcx
  shl    $0x5,%rbp
  mov    0xa8(%rsp),%rdi
  shr    $0x2,%rcx
  or     %rcx,%rbx
  lea    0x5a827999(%r14,%r8,1),%rcx
  mov    0xb8(%rsp),%r14
  xor    %rbx,%rsi
  and    %rdx,%rsi
  xor    %r10,%rsi
  add    %rcx,%rsi
  mov    %rbp,%rcx
  mov    %rax,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rcx
  add    %rsi,%rcx
  mov    %rdx,%rsi
  shl    $0x1e,%rsi
  shr    $0x2,%rdx
  mov    %rsi,%r11
  mov    %rbx,%rsi
  or     %rdx,%r11
  lea    0x5a827999(%rdi,%r10,1),%rdx
  mov    %rcx,%r10
  xor    %r11,%rsi
  shr    $0x1b,%r10
  and    %rax,%rsi
  xor    %rbx,%rsi
  add    %rdx,%rsi
  mov    %rcx,%rdx
  shl    $0x5,%rdx
  or     %r10,%rdx
  mov    %rax,%r10
  shr    $0x2,%rax
  shl    $0x1e,%r10
  add    %rsi,%rdx
  mov    %r11,%rsi
  or     %rax,%r10
  mov    %rdx,%rbp
  lea    0x5a827999(%rbx,%r13,1),%rax
  xor    %r10,%rsi
  shl    $0x5,%rbp
  and    %rcx,%rsi
  xor    %r11,%rsi
  add    %rax,%rsi
  mov    %rbp,%rax
  mov    %rdx,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rax
  add    %rsi,%rax
  mov    %rcx,%rsi
  shr    $0x2,%rcx
  shl    $0x1e,%rsi
  mov    %rax,%rbp
  mov    %rsi,%rbx
  mov    %r10,%rsi
  shl    $0x5,%rbp
  or     %rcx,%rbx
  lea    0x5a827999(%r14,%r11,1),%rcx
  xor    %rbx,%rsi
  and    %rdx,%rsi
  xor    %r10,%rsi
  add    %rcx,%rsi
  mov    %rbp,%rcx
  mov    %rax,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rcx
  add    %rsi,%rcx
  mov    %rdx,%rsi
  shr    $0x2,%rdx
  shl    $0x1e,%rsi
  mov    %rsi,%r11
  mov    %rbx,%rsi
  or     %rdx,%r11
  lea    0x5a827999(%r10,%r12,1),%rdx
  mov    %rcx,%r10
  xor    %r11,%rsi
  shr    $0x1b,%r10
  and    %rax,%rsi
  xor    %rbx,%rsi
  add    %rdx,%rsi
  mov    %rcx,%rdx
  shl    $0x5,%rdx
  or     %r10,%rdx
  mov    %rax,%r10
  shr    $0x2,%rax
  shl    $0x1e,%r10
  add    %rsi,%rdx
  mov    %r11,%rsi
  or     %rax,%r10
  mov    %rdx,%rbp
  lea    0x5a827999(%r15,%rbx,1),%rax
  xor    %r10,%rsi
  shl    $0x5,%rbp
  and    %rcx,%rsi
  xor    %r11,%rsi
  add    %rax,%rsi
  mov    %rbp,%rax
  mov    %rdx,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rax
  mov    %r10,%rbp
  add    %rsi,%rax
  mov    %rcx,%rsi
  shr    $0x2,%rcx
  shl    $0x1e,%rsi
  or     %rcx,%rsi
  xor    %rsi,%rbp
  mov    %rbp,%rcx
  mov    %rax,%rbp
  and    %rdx,%rcx
  shl    $0x5,%rbp
  xor    %r10,%rcx
  lea    0x5a827999(%r11,%rcx,1),%r11
  mov    %rbp,%rcx
  mov    %rax,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rcx
  mov    %rdx,%rbp
  add    %r11,%rcx
  shl    $0x1e,%rbp
  shr    $0x2,%rdx
  mov    %rbp,%r11
  mov    %rcx,%rbp
  or     %rdx,%r11
  mov    %rsi,%rdx
  shr    $0x1b,%rbp
  xor    %r11,%rdx
  and    %rax,%rdx
  xor    %rsi,%rdx
  lea    0x5a827999(%r10,%rdx,1),%r10
  mov    %rcx,%rdx
  shl    $0x5,%rdx
  or     %rbp,%rdx
  mov    %r11,%rbp
  add    %r10,%rdx
  mov    %rax,%r10
  shr    $0x2,%rax
  shl    $0x1e,%r10
  or     %rax,%r10
  xor    %r10,%rbp
  mov    %rbp,%rax
  mov    %rdx,%rbp
  and    %rcx,%rax
  shl    $0x5,%rbp
  xor    %r11,%rax
  lea    0x5a827999(%rsi,%rax,1),%rsi
  mov    %rbp,%rax
  mov    %rdx,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rax
  mov    %r10,%rbp
  add    %rsi,%rax
  mov    %rcx,%rsi
  shr    $0x2,%rcx
  shl    $0x1e,%rsi
  or     %rcx,%rsi
  xor    %rsi,%rbp
  mov    %rbp,%rcx
  mov    %rax,%rbp
  and    %rdx,%rcx
  shl    $0x5,%rbp
  xor    %r10,%rcx
  lea    0x5a827999(%r11,%rcx,1),%r11
  mov    %rbp,%rcx
  mov    %rax,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rcx
  mov    %rdx,%rbp
  shl    $0x1e,%rbp
  add    %r11,%rcx
  shr    $0x2,%rdx
  mov    %rbp,%r11
  mov    %rcx,%rbp
  or     %rdx,%r11
  mov    %rsi,%rdx
  shr    $0x1b,%rbp
  xor    %r11,%rdx
  and    %rax,%rdx
  xor    %rsi,%rdx
  lea    0x5a827999(%r10,%rdx,1),%r10
  mov    %rcx,%rdx
  shl    $0x5,%rdx
  or     %rbp,%rdx
  mov    %r11,%rbp
  add    %r10,%rdx
  mov    %rax,%r10
  shr    $0x2,%rax
  shl    $0x1e,%r10
  or     %rax,%r10
  xor    %r10,%rbp
  mov    %rbp,%rax
  mov    %rdx,%rbp
  and    %rcx,%rax
  shl    $0x5,%rbp
  xor    %r11,%rax
  lea    0x5a827999(%rsi,%rax,1),%rsi
  mov    %rbp,%rax
  mov    %rdx,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rax
  mov    %r10,%rbp
  add    %rsi,%rax
  mov    %rcx,%rsi
  shr    $0x2,%rcx
  shl    $0x1e,%rsi
  or     %rcx,%rsi
  xor    %rsi,%rbp
  mov    %rbp,%rcx
  mov    %rax,%rbp
  and    %rdx,%rcx
  shl    $0x5,%rbp
  xor    %r10,%rcx
  lea    0x5a827999(%r11,%rcx,1),%r11
  mov    %rbp,%rcx
  mov    %rax,%rbp
  shr    $0x1b,%rbp
  or     %rbp,%rcx
  mov    %rdx,%rbp
  shr    $0x2,%rdx
  shl    $0x1e,%rbp
  add    %r11,%rcx
  or     %rdx,%rbp
  mov    %rsi,%rdx
  mov    %rcx,%r11
  xor    %rbp,%rdx
  shr    $0x1b,%r11
  xor    %r8,%r9
  and    %rax,%rdx
  xor    %rsi,%rdx
  lea    0x5a827999(%r10,%rdx,1),%r10
  mov    %rcx,%rdx
  shl    $0x5,%rdx
  or     %r11,%rdx
  add    %r10,%rdx
  mov    %rax,%r10
  shr    $0x2,%rax
  shl    $0x1e,%r10
  mov    %r10,%rbx
  lea    (%r9,%r9,1),%r10
  shr    $0x1f,%r9
  or     %rax,%rbx
  or     %r9,%r10
  mov    %rbp,%r9
  xor    %rbx,%r9
  lea    0x5a827999(%r10,%rsi,1),%rsi
  mov    %r9,%rax
  mov    %rdx,%r9
  and    %rcx,%rax
  shl    $0x5,%r9
  xor    %rbp,%rax
  add    %rax,%rsi
  mov    %r9,%rax
  mov    %rdx,%r9
  shr    $0x1b,%r9
  or     %r9,%rax
  mov    0x98(%rsp),%r9
  add    %rsi,%rax
  mov    %rcx,%rsi
  shr    $0x2,%rcx
  xor    %rdi,%r9
  shl    $0x1e,%rsi
  or     %rcx,%rsi
  mov    %r9,%rcx
  add    %r9,%r9
  shr    $0x1f,%rcx
  or     %rcx,%r9
  mov    %rbx,%rcx
  xor    %rsi,%rcx
  mov    %rcx,%r11
  lea    0x5a827999(%r9,%rbp,1),%rcx
  mov    %rax,%rbp
  and    %rdx,%r11
  xor    %rbx,%r11
  add    %rcx,%r11
  shl    $0x5,%rbp
  xor    %r13,%r8
  xor    %r14,%rdi
  mov    %rbp,%rcx
  mov    %rax,%rbp
  xor    %r10,%rdi
  shr    $0x1b,%rbp
  or     %rbp,%rcx
  mov    %rdx,%rbp
  shr    $0x2,%rdx
  shl    $0x1e,%rbp
  add    %r11,%rcx
  or     %rdx,%rbp
  lea    (%r8,%r8,1),%rdx
  shr    $0x1f,%r8
  or     %rdx,%r8
  mov    %rsi,%rdx
  xor    %rbp,%rdx
  mov    %rdx,%r11
  lea    0x5a827999(%r8,%rbx,1),%rdx
  mov    %rcx,%rbx
  and    %rax,%r11
  shr    $0x1b,%rbx
  xor    %rsi,%r11
  add    %rdx,%r11
  mov    %rcx,%rdx
  shl    $0x5,%rdx
  or     %rbx,%rdx
  mov    %rax,%rbx
  shr    $0x2,%rax
  shl    $0x1e,%rbx
  add    %r11,%rdx
  or     %rax,%rbx
  mov    %rdi,%rax
  add    %rdi,%rdi
  mov    %rdx,%r11
  shr    $0x1f,%rax
  shr    $0x1b,%r11
  or     %rax,%rdi
  mov    %rbp,%rax
  xor    %rbx,%rax
  lea    0x5a827999(%rdi,%rsi,1),%rsi
  and    %rcx,%rax
  xor    %rbp,%rax
  add    %rax,%rsi
  mov    %rdx,%rax
  shl    $0x5,%rax
  or     %r11,%rax
  xor    %r12,%r13
  xor    %r15,%r14
  add    %rsi,%rax
  mov    %rcx,%rsi
  xor    %r9,%r13
  shr    $0x2,%rcx
  shl    $0x1e,%rsi
  xor    %r8,%r14
  mov    %rsi,%r11
  lea    0x0(%r13,%r13,1),%rsi
  shr    $0x1f,%r13
  or     %r13,%rsi
  or     %rcx,%r11
  mov    %rbx,%r13
  xor    %r11,%r13
  lea    0x6ed9eba1(%rsi,%rbp,1),%rbp
  mov    %r13,%rcx
  mov    %rax,%r13
  xor    %rdx,%rcx
  shr    $0x1b,%r13
  add    %rbp,%rcx
  mov    %rax,%rbp
  shl    $0x5,%rbp
  or     %r13,%rbp
  mov    %rdx,%r13
  shr    $0x2,%rdx
  shl    $0x1e,%r13
  add    %rcx,%rbp
  lea    (%r14,%r14,1),%rcx
  shr    $0x1f,%r14
  or     %rdx,%r13
  mov    %r11,%rdx
  or     %r14,%rcx
  mov    %rbp,%r14
  xor    %r13,%rdx
  lea    0x6ed9eba1(%rcx,%rbx,1),%rbx
  shr    $0x1b,%r14
  xor    %rax,%rdx
  add    %rdx,%rbx
  mov    %rbp,%rdx
  shl    $0x5,%rdx
  or     %r14,%rdx
  add    %rbx,%rdx
  mov    %rax,%rbx
  shr    $0x2,%rax
  shl    $0x1e,%rbx
  or     %rax,%rbx
  xor    %rdi,%r12
  xor    %rsi,%r15
  lea    (%r12,%r12,1),%rax
  shr    $0x1f,%r12
  mov    %rax,%r14
  or     %r12,%r14
  mov    %r13,%r12
  xor    %rbx,%r12
  lea    0x6ed9eba1(%r14,%r11,1),%r11
  mov    %r14,0x28(%rsp)
  mov    %r12,%rax
  mov    %rdx,%r12
  xor    %rbp,%rax
  shl    $0x5,%r12
  add    %rax,%r11
  mov    %r12,%rax
  mov    %rdx,%r12
  shr    $0x1b,%r12
  or     %r12,%rax
  mov    %rbp,%r12
  shr    $0x2,%rbp
  shl    $0x1e,%r12
  add    %r11,%rax
  mov    %r12,%r11
  mov    %rbx,%r12
  or     %rbp,%r11
  lea    (%r15,%r15,1),%rbp
  shr    $0x1f,%r15
  or     %r15,%rbp
  xor    %r11,%r12
  mov    %rbp,(%rsp)
  xor    %rdx,%r12
  lea    0x6ed9eba1(%rbp,%r13,1),%rbp
  mov    %rax,%r13
  add    %rbp,%r12
  mov    %rax,%rbp
  shr    $0x1b,%r13
  shl    $0x5,%rbp
  or     %r13,%rbp
  mov    %rdx,%r13
  shr    $0x2,%rdx
  add    %r12,%rbp
  shl    $0x1e,%r13
  mov    %r10,%r12
  xor    %rcx,%r12
  mov    %r13,%r15
  mov    %rbp,%r13
  or     %rdx,%r15
  lea    (%r12,%r12,1),%rdx
  shr    $0x1f,%r12
  or     %r12,%rdx
  mov    %r11,%r12
  xor    %r15,%r12
  lea    0x6ed9eba1(%rdx,%rbx,1),%rbx
  xor    %rax,%r12
  add    %rbx,%r12
  shl    $0x5,%r13
  mov    %r13,%rbx
  mov    %rbp,%r13
  shr    $0x1b,%r13
  or     %r13,%rbx
  mov    %rax,%r13
  shr    $0x2,%rax
  add    %r12,%rbx
  mov    %r14,%r12
  shl    $0x1e,%r13
  xor    %r9,%r12
  or     %rax,%r13
  mov    %rbx,%r14
  lea    (%r12,%r12,1),%rax
  shr    $0x1f,%r12
  shr    $0x1b,%r14
  or     %r12,%rax
  mov    %r15,%r12
  xor    %r13,%r12
  lea    0x6ed9eba1(%rax,%r11,1),%r11
  xor    %rbp,%r12
  add    %r11,%r12
  mov    %rbx,%r11
  shl    $0x5,%r11
  or     %r14,%r11
  add    %r12,%r11
  mov    %rbp,%r12
  shr    $0x2,%rbp
  shl    $0x1e,%r12
  mov    %r12,%r14
  or     %rbp,%r14
  mov    (%rsp),%rbp
  xor    %r8,%rbp
  lea    0x0(%rbp,%rbp,1),%r12
  shr    $0x1f,%rbp
  or     %rbp,%r12
  mov    %r12,%rbp
  mov    %r13,%r12
  xor    %r14,%r12
  mov    %rbp,0x8(%rsp)
  lea    0x6ed9eba1(%rbp,%r15,1),%rbp
  mov    %r11,%r15
  xor    %rbx,%r12
  shr    $0x1b,%r15
  add    %rbp,%r12
  mov    %r11,%rbp
  shl    $0x5,%rbp
  or     %r15,%rbp
  add    %r12,%rbp
  mov    %rbx,%r12
  shl    $0x1e,%r12
  shr    $0x2,%rbx
  mov    %r12,%r15
  mov    %rdi,%r12
  xor    %rdx,%r12
  or     %rbx,%r15
  mov    %r12,%rbx
  add    %r12,%r12
  shr    $0x1f,%rbx
  or     %rbx,%r12
  mov    %r12,%rbx
  mov    %r14,%r12
  mov    %rbx,0x30(%rsp)
  xor    %r15,%r12
  lea    0x6ed9eba1(%rbx,%r13,1),%rbx
  mov    %rbp,%r13
  xor    %r11,%r12
  shl    $0x5,%r13
  add    %rbx,%r12
  mov    %r13,%rbx
  mov    %rbp,%r13
  shr    $0x1b,%r13
  or     %r13,%rbx
  mov    %rsi,%r13
  add    %r12,%rbx
  mov    %r11,%r12
  xor    %rax,%r13
  shr    $0x2,%r11
  shl    $0x1e,%r12
  or     %r11,%r12
  mov    %r13,%r11
  add    %r13,%r13
  shr    $0x1f,%r11
  or     %r11,%r13
  mov    %r13,%r11
  mov    %r15,%r13
  xor    %r12,%r13
  mov    %r11,0x10(%rsp)
  lea    0x6ed9eba1(%r11,%r14,1),%r11
  mov    %rbx,%r14
  xor    %rbp,%r13
  shr    $0x1b,%r14
  add    %r11,%r13
  mov    %rbx,%r11
  shl    $0x5,%r11
  or     %r14,%r11
  add    %r13,%r11
  mov    %rbp,%r13
  shr    $0x2,%rbp
  shl    $0x1e,%r13
  mov    %r13,%r14
  mov    0x8(%rsp),%r13
  or     %rbp,%r14
  xor    %rcx,%r13
  mov    %r13,%rbp
  add    %r13,%r13
  shr    $0x1f,%rbp
  or     %rbp,%r13
  mov    %r13,%rbp
  mov    %r12,%r13
  xor    %r14,%r13
  mov    %rbp,0x38(%rsp)
  lea    0x6ed9eba1(%rbp,%r15,1),%rbp
  mov    %r11,%r15
  xor    %rbx,%r13
  shr    $0x1b,%r15
  add    %rbp,%r13
  mov    %r11,%rbp
  shl    $0x5,%rbp
  or     %r15,%rbp
  mov    0x28(%rsp),%r15
  add    %r13,%rbp
  mov    %rbx,%r13
  shr    $0x2,%rbx
  shl    $0x1e,%r13
  xor    %r10,%r15
  or     %rbx,%r13
  mov    0x30(%rsp),%rbx
  xor    %r15,%rbx
  lea    (%rbx,%rbx,1),%r15
  shr    $0x1f,%rbx
  or     %rbx,%r15
  mov    %r14,%rbx
  xor    %r13,%rbx
  lea    0x6ed9eba1(%r15,%r12,1),%r12
  mov    %r15,0x18(%rsp)
  mov    %rbp,%r15
  xor    %r11,%rbx
  shr    $0x1b,%r15
  add    %rbx,%r12
  mov    %rbp,%rbx
  shl    $0x5,%rbx
  or     %r15,%rbx
  add    %r12,%rbx
  mov    %r11,%r12
  shr    $0x2,%r11
  shl    $0x1e,%r12
  mov    %r12,%r15
  mov    (%rsp),%r12
  or     %r11,%r15
  xor    %r9,%r12
  xor    0x10(%rsp),%r12
  lea    (%r12,%r12,1),%r11
  shr    $0x1f,%r12
  or     %r12,%r11
  mov    %r13,%r12
  xor    %r15,%r12
  mov    %r11,0x20(%rsp)
  lea    0x6ed9eba1(%r11,%r14,1),%r11
  mov    %rbx,%r14
  xor    %rbp,%r12
  add    %r11,%r12
  shl    $0x5,%r14
  xor    %r8,%r10
  xor    %rdi,%r9
  mov    %r14,%r11
  mov    %rbx,%r14
  xor    %rdx,%r10
  xor    0x38(%rsp),%r10
  shr    $0x1b,%r14
  xor    %rax,%r9
  xor    0x18(%rsp),%r9
  or     %r14,%r11
  add    %r12,%r11
  mov    %rbp,%r12
  shr    $0x2,%rbp
  shl    $0x1e,%r12
  or     %r12,%rbp
  lea    (%r10,%r10,1),%r12
  shr    $0x1f,%r10
  or     %r10,%r12
  mov    %r15,%r10
  xor    %rbp,%r10
  mov    %r12,%r14
  mov    %r10,%r12
  lea    0x6ed9eba1(%r14,%r13,1),%r10
  mov    %r11,%r13
  xor    %rbx,%r12
  shr    $0x1b,%r13
  add    %r10,%r12
  mov    %r11,%r10
  shl    $0x5,%r10
  or     %r13,%r10
  add    %r12,%r10
  mov    %rbx,%r12
  shr    $0x2,%rbx
  shl    $0x1e,%r12
  mov    %r10,%r13
  or     %r12,%rbx
  lea    (%r9,%r9,1),%r12
  shr    $0x1f,%r9
  or     %r9,%r12
  shl    $0x5,%r13
  mov    %r12,%r9
  mov    %rbp,%r12
  xor    %rbx,%r12
  mov    %r9,0x40(%rsp)
  lea    0x6ed9eba1(%r9,%r15,1),%r9
  mov    0x28(%rsp),%r15
  xor    %r11,%r12
  add    %r9,%r12
  mov    %r13,%r9
  mov    %r10,%r13
  shr    $0x1b,%r13
  xor    %rsi,%r8
  xor    0x8(%rsp),%r8
  xor    %rcx,%rdi
  or     %r13,%r9
  xor    0x20(%rsp),%r8
  xor    0x30(%rsp),%rdi
  add    %r12,%r9
  mov    %r11,%r12
  shr    $0x2,%r11
  xor    %r14,%rdi
  shl    $0x1e,%r12
  or     %r12,%r11
  lea    (%r8,%r8,1),%r12
  shr    $0x1f,%r8
  mov    %r12,%r13
  mov    %r9,%r12
  or     %r8,%r13
  mov    %rbx,%r8
  shr    $0x1b,%r12
  xor    %r11,%r8
  lea    0x6ed9eba1(%r13,%rbp,1),%rbp
  xor    %r10,%r8
  add    %r8,%rbp
  mov    %r9,%r8
  shl    $0x5,%r8
  or     %r12,%r8
  add    %rbp,%r8
  mov    %r10,%rbp
  shr    $0x2,%r10
  shl    $0x1e,%rbp
  or     %rbp,%r10
  lea    (%rdi,%rdi,1),%rbp
  shr    $0x1f,%rdi
  mov    %rbp,%r12
  mov    %r8,%rbp
  or     %rdi,%r12
  mov    %r11,%rdi
  shr    $0x1b,%rbp
  xor    %r10,%rdi
  lea    0x6ed9eba1(%r12,%rbx,1),%rbx
  xor    %r9,%rdi
  add    %rdi,%rbx
  mov    %r8,%rdi
  shl    $0x5,%rdi
  or     %rbp,%rdi
  mov    %r9,%rbp
  add    %rbx,%rdi
  xor    %r15,%rsi
  xor    0x10(%rsp),%rsi
  xor    0x40(%rsp),%rsi
  shl    $0x1e,%rbp
  lea    (%rsi,%rsi,1),%rbx
  shr    $0x2,%r9
  xor    (%rsp),%rcx
  or     %rbp,%r9
  shr    $0x1f,%rsi
  mov    %rbx,%rbp
  mov    %rdi,%rbx
  or     %rsi,%rbp
  mov    %r10,%rsi
  shr    $0x1b,%rbx
  xor    0x38(%rsp),%rcx
  xor    %r9,%rsi
  lea    0x6ed9eba1(%rbp,%r11,1),%r11
  xor    %r13,%rcx
  xor    %r8,%rsi
  add    %rsi,%r11
  mov    %rdi,%rsi
  shl    $0x5,%rsi
  or     %rbx,%rsi
  mov    %r8,%rbx
  shr    $0x2,%r8
  add    %r11,%rsi
  shl    $0x1e,%rbx
  lea    (%rcx,%rcx,1),%r11
  or     %rbx,%r8
  shr    $0x1f,%rcx
  mov    %r11,%rbx
  mov    %rsi,%r11
  or     %rcx,%rbx
  mov    %r9,%rcx
  shr    $0x1b,%r11
  xor    %r8,%rcx
  lea    0x6ed9eba1(%rbx,%r10,1),%r10
  xor    %rdi,%rcx
  add    %rcx,%r10
  mov    %rsi,%rcx
  shl    $0x5,%rcx
  or     %r11,%rcx
  add    %r10,%rcx
  mov    %rdi,%r10
  shl    $0x1e,%r10
  shr    $0x2,%rdi
  xor    %rdx,%r15
  or     %r10,%rdi
  mov    0x18(%rsp),%r10
  xor    %r15,%r10
  xor    %r12,%r10
  lea    (%r10,%r10,1),%r11
  shr    $0x1f,%r10
  mov    %r11,%r15
  mov    %rcx,%r11
  or     %r10,%r15
  mov    %r8,%r10
  shr    $0x1b,%r11
  xor    %rdi,%r10
  lea    0x6ed9eba1(%r15,%r9,1),%r9
  xor    %rsi,%r10
  add    %r9,%r10
  mov    %rcx,%r9
  shl    $0x5,%r9
  or     %r11,%r9
  add    %r10,%r9
  mov    %rsi,%r10
  shr    $0x2,%rsi
  shl    $0x1e,%r10
  or     %r10,%rsi
  mov    (%rsp),%r10
  xor    %rax,%r10
  xor    0x20(%rsp),%r10
  xor    %rbp,%r10
  lea    (%r10,%r10,1),%r11
  shr    $0x1f,%r10
  or     %r10,%r11
  mov    %rdi,%r10
  xor    %rsi,%r10
  lea    0x6ed9eba1(%r11,%r8,1),%r8
  mov    %r11,0x48(%rsp)
  mov    %r9,%r11
  xor    %rcx,%r10
  shr    $0x1b,%r11
  add    %r8,%r10
  mov    %r9,%r8
  shl    $0x5,%r8
  or     %r11,%r8
  add    %r10,%r8
  mov    %rcx,%r10
  shr    $0x2,%rcx
  shl    $0x1e,%r10
  or     %r10,%rcx
  xor    0x8(%rsp),%rdx
  xor    %r14,%rdx
  xor    %rbx,%rdx
  lea    (%rdx,%rdx,1),%r10
  shr    $0x1f,%rdx
  or     %rdx,%r10
  mov    %rsi,%rdx
  or     %rcx,%rdx
  mov    %r10,0x28(%rsp)
  mov    %rdx,%r11
  mov    %rsi,%rdx
  and    %rcx,%rdx
  and    %r9,%r11
  or     %rdx,%r11
  mov    $0x8f1bbcdc,%edx
  add    %rdx,%r10
  add    %rdi,%r10
  mov    %r8,%rdi
  add    %r11,%r10
  mov    %r8,%r11
  shl    $0x5,%rdi
  shr    $0x1b,%r11
  or     %r11,%rdi
  mov    0x30(%rsp),%r11
  add    %r10,%rdi
  mov    %r9,%r10
  shr    $0x2,%r9
  xor    %r11,%rax
  xor    0x40(%rsp),%rax
  shl    $0x1e,%r10
  xor    %r15,%rax
  or     %r10,%r9
  lea    (%rax,%rax,1),%r10
  shr    $0x1f,%rax
  or     %rax,%r10
  mov    %rcx,%rax
  mov    %r10,(%rsp)
  or     %r9,%rax
  mov    %rcx,%r10
  and    %r8,%rax
  and    %r9,%r10
  or     %rax,%r10
  mov    (%rsp),%rax
  add    %rdx,%rax
  add    %rax,%rsi
  add    %r10,%rsi
  mov    %rdi,%r10
  shl    $0x5,%r10
  mov    %r10,%rax
  mov    %rdi,%r10
  shr    $0x1b,%r10
  or     %r10,%rax
  add    %rsi,%rax
  mov    %r8,%rsi
  shr    $0x2,%r8
  shl    $0x1e,%rsi
  or     %rsi,%r8
  mov    0x8(%rsp),%rsi
  xor    0x10(%rsp),%rsi
  xor    %r13,%rsi
  xor    0x48(%rsp),%rsi
  lea    (%rsi,%rsi,1),%r10
  shr    $0x1f,%rsi
  or     %rsi,%r10
  mov    %r9,%rsi
  mov    %r10,0x8(%rsp)
  or     %r8,%rsi
  mov    %r9,%r10
  and    %rdi,%rsi
  and    %r8,%r10
  or     %rsi,%r10
  mov    0x8(%rsp),%rsi
  add    %rdx,%rsi
  add    %rcx,%rsi
  mov    %rax,%rcx
  add    %r10,%rsi
  mov    %rax,%r10
  shl    $0x5,%rcx
  shr    $0x1b,%r10
  or     %r10,%rcx
  add    %rsi,%rcx
  mov    %rdi,%rsi
  shr    $0x2,%rdi
  shl    $0x1e,%rsi
  or     %rsi,%rdi
  mov    %r11,%rsi
  mov    0x38(%rsp),%r11
  xor    %r11,%rsi
  xor    %r12,%rsi
  xor    0x28(%rsp),%rsi
  lea    (%rsi,%rsi,1),%r10
  shr    $0x1f,%rsi
  or     %rsi,%r10
  mov    %r8,%rsi
  mov    %r10,0x30(%rsp)
  or     %rdi,%rsi
  mov    %r8,%r10
  and    %rax,%rsi
  and    %rdi,%r10
  xor    0x20(%rsp),%r11
  or     %rsi,%r10
  mov    0x30(%rsp),%rsi
  add    %rdx,%rsi
  add    %rsi,%r9
  mov    %rcx,%rsi
  add    %r10,%r9
  mov    %rcx,%r10
  shl    $0x5,%rsi
  shr    $0x1b,%r10
  or     %r10,%rsi
  add    %r9,%rsi
  mov    %rax,%r9
  shr    $0x2,%rax
  shl    $0x1e,%r9
  or     %r9,%rax
  mov    0x10(%rsp),%r9
  xor    0x18(%rsp),%r9
  xor    %rbp,%r9
  xor    (%rsp),%r9
  lea    (%r9,%r9,1),%r10
  shr    $0x1f,%r9
  or     %r9,%r10
  mov    %rdi,%r9
  mov    %r10,0x10(%rsp)
  or     %rax,%r9
  mov    %rdi,%r10
  and    %rcx,%r9
  and    %rax,%r10
  or     %r9,%r10
  mov    0x10(%rsp),%r9
  add    %rdx,%r9
  add    %r8,%r9
  mov    %rsi,%r8
  add    %r10,%r9
  mov    %rsi,%r10
  shl    $0x5,%r8
  shr    $0x1b,%r10
  or     %r10,%r8
  add    %r9,%r8
  mov    %rcx,%r9
  shr    $0x2,%rcx
  shl    $0x1e,%r9
  or     %r9,%rcx
  mov    %r11,%r9
  xor    %rbx,%r9
  xor    0x8(%rsp),%r9
  lea    (%r9,%r9,1),%r10
  shr    $0x1f,%r9
  mov    %r10,%r11
  mov    %rax,%r10
  or     %r9,%r11
  mov    %rax,%r9
  and    %rcx,%r10
  or     %rcx,%r9
  mov    %r11,0x38(%rsp)
  and    %rsi,%r9
  or     %r9,%r10
  lea    (%r11,%rdx,1),%r9
  add    %rdi,%r9
  mov    %r8,%rdi
  add    %r10,%r9
  mov    %r8,%r10
  shl    $0x5,%rdi
  shr    $0x1b,%r10
  or     %r10,%rdi
  add    %r9,%rdi
  mov    %rsi,%r9
  shr    $0x2,%rsi
  shl    $0x1e,%r9
  or     %r9,%rsi
  mov    0x18(%rsp),%r9
  xor    %r14,%r9
  xor    %r15,%r9
  xor    0x30(%rsp),%r9
  lea    (%r9,%r9,1),%r10
  shr    $0x1f,%r9
  or     %r9,%r10
  mov    %rcx,%r9
  mov    %r10,%r11
  or     %rsi,%r9
  mov    %rcx,%r10
  and    %r8,%r9
  and    %rsi,%r10
  mov    %r11,0x50(%rsp)
  or     %r9,%r10
  mov    %r11,%r9
  mov    0x40(%rsp),%r11
  add    %rdx,%r9
  add    %r9,%rax
  mov    %rdi,%r9
  add    %r10,%rax
  mov    %rdi,%r10
  shl    $0x5,%r9
  shr    $0x1b,%r10
  or     %r10,%r9
  mov    %r8,%r10
  add    %rax,%r9
  mov    0x20(%rsp),%rax
  shl    $0x1e,%r10
  xor    %r13,%r14
  shr    $0x2,%r8
  xor    %r11,%rax
  xor    0x48(%rsp),%rax
  xor    0x10(%rsp),%rax
  or     %r10,%r8
  lea    (%rax,%rax,1),%r10
  shr    $0x1f,%rax
  or     %rax,%r10
  mov    %rsi,%rax
  mov    %r10,0x18(%rsp)
  or     %r8,%rax
  mov    %rsi,%r10
  and    %rdi,%rax
  and    %r8,%r10
  or     %rax,%r10
  mov    0x18(%rsp),%rax
  xor    0x28(%rsp),%r14
  xor    0x38(%rsp),%r14
  add    %rdx,%rax
  add    %rax,%rcx
  add    %r10,%rcx
  mov    %r9,%r10
  shl    $0x5,%r10
  mov    %r10,%rax
  mov    %r9,%r10
  shr    $0x1b,%r10
  or     %r10,%rax
  mov    %r8,%r10
  add    %rcx,%rax
  mov    %rdi,%rcx
  shr    $0x2,%rdi
  shl    $0x1e,%rcx
  or     %rcx,%rdi
  lea    (%r14,%r14,1),%rcx
  shr    $0x1f,%r14
  or     %rcx,%r14
  mov    %r8,%rcx
  and    %rdi,%r10
  or     %rdi,%rcx
  and    %r9,%rcx
  or     %rcx,%r10
  lea    (%r14,%rdx,1),%rcx
  add    %rsi,%rcx
  mov    %rax,%rsi
  xor    %r12,%r11
  xor    %rbp,%r13
  add    %r10,%rcx
  mov    %rax,%r10
  shr    $0x1b,%rsi
  xor    0x8(%rsp),%r13
  shl    $0x5,%r10
  xor    0x18(%rsp),%r13
  or     %rsi,%r10
  add    %rcx,%r10
  mov    %r9,%rcx
  shr    $0x2,%r9
  shl    $0x1e,%rcx
  or     %rcx,%r9
  mov    (%rsp),%rcx
  xor    %r11,%rcx
  xor    0x50(%rsp),%rcx
  lea    (%rcx,%rcx,1),%rsi
  shr    $0x1f,%rcx
  or     %rcx,%rsi
  mov    %rdi,%rcx
  mov    %rsi,%r11
  or     %r9,%rcx
  mov    %rdi,%rsi
  and    %rax,%rcx
  and    %r9,%rsi
  mov    %r11,0x40(%rsp)
  or     %rcx,%rsi
  lea    (%r11,%rdx,1),%rcx
  add    %r8,%rcx
  mov    %r10,%r8
  add    %rsi,%rcx
  mov    %r10,%rsi
  shl    $0x5,%r8
  shr    $0x1b,%rsi
  or     %rsi,%r8
  mov    %r9,%rsi
  add    %rcx,%r8
  mov    %rax,%rcx
  shr    $0x2,%rax
  shl    $0x1e,%rcx
  or     %rax,%rcx
  lea    0x0(%r13,%r13,1),%rax
  shr    $0x1f,%r13
  or     %rax,%r13
  or     %rcx,%rsi
  xor    %rbx,%r12
  xor    0x30(%rsp),%r12
  mov    %rsi,%rax
  mov    %r9,%rsi
  xor    %r14,%r12
  xor    %r15,%rbp
  and    %r10,%rax
  and    %rcx,%rsi
  or     %rax,%rsi
  lea    0x0(%r13,%rdx,1),%rax
  add    %rdi,%rax
  mov    %r8,%rdi
  add    %rsi,%rax
  mov    %r8,%rsi
  shl    $0x5,%rdi
  shr    $0x1b,%rsi
  or     %rsi,%rdi
  mov    %r10,%rsi
  shr    $0x2,%r10
  shl    $0x1e,%rsi
  add    %rax,%rdi
  lea    (%r12,%r12,1),%rax
  shr    $0x1f,%r12
  or     %r10,%rsi
  mov    %rcx,%r10
  or     %rax,%r12
  or     %rsi,%r10
  mov    %r10,%rax
  mov    %rcx,%r10
  and    %r8,%rax
  and    %rsi,%r10
  or     %rax,%r10
  lea    (%r12,%rdx,1),%rax
  add    %rax,%r9
  add    %r10,%r9
  mov    %rdi,%r10
  shl    $0x5,%r10
  mov    %r10,%rax
  mov    %rdi,%r10
  shr    $0x1b,%r10
  or     %r10,%rax
  mov    %rsi,%r10
  add    %r9,%rax
  mov    %r8,%r9
  shr    $0x2,%r8
  shl    $0x1e,%r9
  or     %r9,%r8
  xor    0x10(%rsp),%rbp
  xor    %r11,%rbp
  and    %r8,%r10
  lea    0x0(%rbp,%rbp,1),%r9
  shr    $0x1f,%rbp
  or     %rbp,%r9
  mov    0x48(%rsp),%rbp
  mov    %r9,%r11
  mov    %rsi,%r9
  or     %r8,%r9
  xor    %rbp,%rbx
  xor    0x38(%rsp),%rbx
  and    %rdi,%r9
  xor    %r13,%rbx
  or     %r9,%r10
  lea    (%r11,%rdx,1),%r9
  add    %rcx,%r9
  mov    %rax,%rcx
  add    %r10,%r9
  mov    %rax,%r10
  shl    $0x5,%rcx
  shr    $0x1b,%r10
  or     %r10,%rcx
  mov    %r8,%r10
  add    %r9,%rcx
  mov    %rdi,%r9
  shr    $0x2,%rdi
  shl    $0x1e,%r9
  or     %r9,%rdi
  lea    (%rbx,%rbx,1),%r9
  shr    $0x1f,%rbx
  or     %rbx,%r9
  and    %rdi,%r10
  mov    %r9,%rbx
  mov    %r8,%r9
  or     %rdi,%r9
  mov    %rbx,0x48(%rsp)
  and    %rax,%r9
  or     %r9,%r10
  mov    %rbx,%r9
  add    %rdx,%r9
  add    %rsi,%r9
  mov    %rcx,%rsi
  add    %r10,%r9
  mov    %rcx,%r10
  shl    $0x5,%rsi
  shr    $0x1b,%r10
  or     %r10,%rsi
  mov    %rax,%r10
  add    %r9,%rsi
  xor    0x28(%rsp),%r15
  shl    $0x1e,%r10
  mov    %rdi,%r9
  xor    0x50(%rsp),%r15
  shr    $0x2,%rax
  mov    %r10,%rbx
  mov    %rdi,%r10
  xor    %r12,%r15
  or     %rax,%rbx
  xor    (%rsp),%rbp
  lea    (%r15,%r15,1),%rax
  shr    $0x1f,%r15
  or     %rbx,%r10
  and    %rbx,%r9
  or     %r15,%rax
  mov    %rax,%r15
  mov    %r10,%rax
  mov    %rsi,%r10
  and    %rcx,%rax
  shl    $0x5,%r10
  mov    %r15,0x58(%rsp)
  or     %rax,%r9
  lea    (%r15,%rdx,1),%rax
  add    %rax,%r8
  mov    %r10,%rax
  mov    %rcx,%r10
  shr    $0x2,%rcx
  shl    $0x1e,%r10
  add    %r9,%r8
  mov    %rsi,%r9
  or     %rcx,%r10
  mov    0x18(%rsp),%rcx
  shr    $0x1b,%r9
  or     %r9,%rax
  xor    %rbp,%rcx
  add    %r8,%rax
  mov    0x8(%rsp),%rbp
  xor    %r11,%rcx
  lea    (%rcx,%rcx,1),%r8
  shr    $0x1f,%rcx
  or     %rcx,%r8
  mov    %r8,%r15
  mov    %rbx,%r8
  or     %r10,%r8
  mov    %r8,%rcx
  mov    %rbx,%r8
  and    %rsi,%rcx
  and    %r10,%r8
  or     %rcx,%r8
  lea    (%r15,%rdx,1),%rcx
  add    %rdi,%rcx
  add    %r8,%rcx
  mov    %rax,%r8
  shl    $0x5,%r8
  mov    %r8,%r9
  mov    %rax,%r8
  shr    $0x1b,%r8
  or     %r8,%r9
  mov    %rsi,%r8
  shr    $0x2,%rsi
  shl    $0x1e,%r8
  add    %rcx,%r9
  mov    %r8,%rcx
  or     %rsi,%rcx
  mov    0x28(%rsp),%rsi
  xor    %rbp,%rsi
  xor    %r14,%rsi
  xor    0x48(%rsp),%rsi
  lea    (%rsi,%rsi,1),%rdi
  shr    $0x1f,%rsi
  mov    %rdi,%r8
  mov    %r10,%rdi
  or     %rsi,%r8
  mov    %r10,%rsi
  and    %rcx,%rdi
  or     %rcx,%rsi
  mov    %r8,0x28(%rsp)
  and    %rax,%rsi
  or     %rsi,%rdi
  lea    (%r8,%rdx,1),%rsi
  mov    %r9,%r8
  add    %rbx,%rsi
  shl    $0x5,%r8
  mov    0x30(%rsp),%rbx
  add    %rdi,%rsi
  mov    %r9,%rdi
  shr    $0x1b,%rdi
  or     %rdi,%r8
  add    %rsi,%r8
  mov    %rax,%rsi
  shr    $0x2,%rax
  shl    $0x1e,%rsi
  mov    %rsi,%rdi
  or     %rax,%rdi
  mov    (%rsp),%rax
  xor    %rbx,%rax
  xor    0x40(%rsp),%rax
  xor    0x58(%rsp),%rax
  lea    (%rax,%rax,1),%rsi
  shr    $0x1f,%rax
  or     %rax,%rsi
  mov    %rcx,%rax
  mov    %rsi,(%rsp)
  mov    %rcx,%rsi
  or     %rdi,%rsi
  and    %r9,%rsi
  and    %rdi,%rax
  or     %rsi,%rax
  mov    (%rsp),%rsi
  add    %rdx,%rsi
  add    %r10,%rsi
  mov    %r8,%r10
  shl    $0x5,%r10
  add    %rax,%rsi
  mov    %r10,%rax
  mov    %r8,%r10
  shr    $0x1b,%r10
  or     %r10,%rax
  mov    %r9,%r10
  shr    $0x2,%r9
  shl    $0x1e,%r10
  add    %rsi,%rax
  mov    %r10,%rsi
  or     %r9,%rsi
  mov    %rbp,%r9
  mov    0x10(%rsp),%rbp
  xor    %rbp,%r9
  xor    %r13,%r9
  xor    %r15,%r9
  lea    (%r9,%r9,1),%r10
  shr    $0x1f,%r9
  or     %r9,%r10
  mov    %rdi,%r9
  mov    %r10,0x8(%rsp)
  or     %rsi,%r9
  mov    %rdi,%r10
  and    %r8,%r9
  and    %rsi,%r10
  or     %r9,%r10
  mov    0x8(%rsp),%r9
  add    %rdx,%r9
  add    %r9,%rcx
  mov    %rax,%r9
  add    %r10,%rcx
  mov    %rax,%r10
  shr    $0x1b,%r9
  shl    $0x5,%r10
  or     %r9,%r10
  add    %rcx,%r10
  mov    %r8,%rcx
  shr    $0x2,%r8
  shl    $0x1e,%rcx
  or     %r8,%rcx
  mov    %rbx,%r8
  mov    0x38(%rsp),%rbx
  xor    %rbx,%r8
  xor    %r12,%r8
  xor    0x28(%rsp),%r8
  lea    (%r8,%r8,1),%r9
  shr    $0x1f,%r8
  or     %r8,%r9
  mov    %rsi,%r8
  or     %rcx,%r8
  mov    %r9,0x10(%rsp)
  add    0x10(%rsp),%rdx
  mov    %r8,%r9
  mov    %rsi,%r8
  add    %rdi,%rdx
  mov    %r10,%rdi
  and    %rax,%r9
  and    %rcx,%r8
  shr    $0x1b,%rdi
  or     %r9,%r8
  add    %r8,%rdx
  mov    %r10,%r8
  shl    $0x5,%r8
  or     %rdi,%r8
  mov    %rcx,%rdi
  add    %rdx,%r8
  mov    %rax,%rdx
  shr    $0x2,%rax
  shl    $0x1e,%rdx
  mov    %rdx,%r9
  or     %rax,%r9
  mov    %rbp,%rax
  mov    0x50(%rsp),%rbp
  xor    %r9,%rdi
  xor    %rbp,%rax
  xor    %r10,%rdi
  xor    %r11,%rax
  xor    (%rsp),%rax
  lea    (%rax,%rax,1),%rdx
  shr    $0x1f,%rax
  or     %rax,%rdx
  mov    $0xca62c1d6,%eax
  mov    %rdx,0x20(%rsp)
  add    %rax,%rdx
  add    %rsi,%rdx
  mov    %r8,%rsi
  add    %rdi,%rdx
  mov    %r8,%rdi
  shl    $0x5,%rsi
  shr    $0x1b,%rdi
  or     %rdi,%rsi
  mov    %r10,%rdi
  add    %rdx,%rsi
  mov    %rbx,%rdx
  mov    0x18(%rsp),%rbx
  shr    $0x2,%r10
  shl    $0x1e,%rdi
  xor    %rbx,%rdx
  xor    0x48(%rsp),%rdx
  xor    0x8(%rsp),%rdx
  or     %r10,%rdi
  lea    (%rdx,%rdx,1),%r10
  shr    $0x1f,%rdx
  or     %rdx,%r10
  mov    %r10,%rdx
  mov    %r9,%r10
  mov    %rdx,0x18(%rsp)
  xor    %rdi,%r10
  add    %rax,%rdx
  xor    %r8,%r10
  add    %rdx,%rcx
  add    %r10,%rcx
  mov    %rsi,%r10
  shl    $0x5,%r10
  mov    %r10,%rdx
  mov    %rsi,%r10
  shr    $0x1b,%r10
  or     %r10,%rdx
  add    %rcx,%rdx
  mov    %r8,%rcx
  shr    $0x2,%r8
  shl    $0x1e,%rcx
  or     %r8,%rcx
  mov    %rbp,%r8
  mov    0x40(%rsp),%rbp
  xor    %r14,%r8
  xor    0x58(%rsp),%r8
  xor    0x10(%rsp),%r8
  lea    (%r8,%r8,1),%r10
  shr    $0x1f,%r8
  or     %r8,%r10
  mov    %r10,%r8
  mov    %rdi,%r10
  mov    %r8,0x30(%rsp)
  xor    %rcx,%r10
  add    %rax,%r8
  xor    %rsi,%r10
  add    %r9,%r8
  mov    %rdx,%r9
  add    %r10,%r8
  mov    %rdx,%r10
  shl    $0x5,%r10
  shr    $0x1b,%r9
  or     %r9,%r10
  mov    %rsi,%r9
  shr    $0x2,%rsi
  shl    $0x1e,%r9
  add    %r8,%r10
  mov    %r9,%r8
  or     %rsi,%r8
  mov    %rbx,%rsi
  xor    %rbp,%rsi
  xor    %r15,%rsi
  xor    0x20(%rsp),%rsi
  lea    (%rsi,%rsi,1),%r9
  shr    $0x1f,%rsi
  or     %rsi,%r9
  mov    %r9,%rbx
  mov    %rcx,%r9
  mov    %rbx,%rsi
  xor    %r8,%r9
  mov    %rbx,0x38(%rsp)
  add    %rax,%rsi
  xor    %rdx,%r9
  add    %rdi,%rsi
  mov    %r10,%rdi
  add    %r9,%rsi
  mov    %r10,%r9
  shl    $0x5,%rdi
  shr    $0x1b,%r9
  or     %r9,%rdi
  mov    %r14,%r9
  add    %rsi,%rdi
  mov    %rdx,%rsi
  shr    $0x2,%rdx
  xor    %r13,%r9
  shl    $0x1e,%rsi
  or     %rdx,%rsi
  mov    0x28(%rsp),%rdx
  xor    %r9,%rdx
  xor    0x18(%rsp),%rdx
  lea    (%rdx,%rdx,1),%r9
  shr    $0x1f,%rdx
  or     %rdx,%r9
  mov    %r9,%r14
  mov    %r8,%r9
  mov    %r14,%rdx
  xor    %rsi,%r9
  mov    %r14,0x40(%rsp)
  add    %rax,%rdx
  xor    %r10,%r9
  add    %rcx,%rdx
  mov    %rdi,%rcx
  add    %r9,%rdx
  mov    %rdi,%r9
  shr    $0x1b,%rcx
  shl    $0x5,%r9
  or     %rcx,%r9
  mov    %r10,%rcx
  shr    $0x2,%r10
  add    %rdx,%r9
  mov    %rbp,%rdx
  shl    $0x1e,%rcx
  xor    %r12,%rdx
  xor    (%rsp),%rdx
  xor    0x30(%rsp),%rdx
  or     %r10,%rcx
  lea    (%rdx,%rdx,1),%r10
  shr    $0x1f,%rdx
  or     %rdx,%r10
  mov    %r10,%rbp
  mov    %rsi,%r10
  lea    0x0(%rbp,%rax,1),%rdx
  xor    %rcx,%r10
  mov    %rbp,0x50(%rsp)
  xor    %rdi,%r10
  add    %rdx,%r8
  add    %r10,%r8
  mov    %r9,%r10
  shl    $0x5,%r10
  mov    %r10,%rdx
  mov    %r9,%r10
  shr    $0x1b,%r10
  or     %r10,%rdx
  mov    %rdi,%r10
  shr    $0x2,%rdi
  shl    $0x1e,%r10
  add    %r8,%rdx
  mov    %r10,%r8
  mov    %r13,%r10
  mov    0x48(%rsp),%r13
  or     %rdi,%r8
  mov    0x8(%rsp),%rdi
  xor    %r11,%r10
  xor    %r10,%rdi
  mov    %rcx,%r10
  xor    %rbx,%rdi
  xor    %r8,%r10
  lea    (%rdi,%rdi,1),%rbp
  shr    $0x1f,%rdi
  xor    %r9,%r10
  or     %rdi,%rbp
  lea    0x0(%rbp,%rax,1),%rdi
  add    %rsi,%rdi
  mov    %rdx,%rsi
  add    %r10,%rdi
  mov    %rdx,%r10
  shl    $0x5,%rsi
  xor    %r13,%r12
  shr    $0x1b,%r10
  or     %r10,%rsi
  mov    %r9,%r10
  shr    $0x2,%r9
  shl    $0x1e,%r10
  add    %rdi,%rsi
  mov    %r10,%rdi
  mov    %r8,%r10
  or     %r9,%rdi
  mov    0x10(%rsp),%r9
  xor    %rdi,%r10
  xor    %r12,%r9
  xor    %rdx,%r10
  mov    %rsi,%r12
  xor    %r14,%r9
  shl    $0x5,%r12
  mov    0x58(%rsp),%r14
  lea    (%r9,%r9,1),%rbx
  shr    $0x1f,%r9
  or     %r9,%rbx
  lea    (%rbx,%rax,1),%r9
  add    %rcx,%r9
  mov    %r12,%rcx
  mov    %r11,%r12
  add    %r10,%r9
  mov    %rsi,%r10
  xor    %r14,%r12
  shr    $0x1b,%r10
  or     %r10,%rcx
  add    %r9,%rcx
  mov    %rdx,%r9
  shr    $0x2,%rdx
  shl    $0x1e,%r9
  or     %rdx,%r9
  mov    0x20(%rsp),%rdx
  xor    %r12,%rdx
  xor    0x50(%rsp),%rdx
  mov    %rdi,%r12
  lea    (%rdx,%rdx,1),%r10
  shr    $0x1f,%rdx
  xor    %r9,%r12
  or     %rdx,%r10
  mov    %r12,%r11
  mov    %rcx,%r12
  lea    (%r10,%rax,1),%rdx
  xor    %rsi,%r11
  add    %r8,%rdx
  mov    %rcx,%r8
  add    %r11,%rdx
  shr    $0x1b,%r8
  shl    $0x5,%r12
  or     %r8,%r12
  add    %rdx,%r12
  mov    %rsi,%rdx
  shr    $0x2,%rsi
  shl    $0x1e,%rdx
  or     %rsi,%rdx
  mov    %r13,%rsi
  mov    %r12,%r13
  xor    %r15,%rsi
  xor    0x18(%rsp),%rsi
  shl    $0x5,%r13
  xor    %rbp,%rsi
  lea    (%rsi,%rsi,1),%r8
  shr    $0x1f,%rsi
  or     %rsi,%r8
  mov    %r9,%rsi
  xor    %rdx,%rsi
  mov    %rsi,%r11
  lea    (%r8,%rax,1),%rsi
  xor    %rcx,%r11
  add    %rdi,%rsi
  add    %r11,%rsi
  mov    %r13,%r11
  mov    %r12,%r13
  shr    $0x1b,%r13
  or     %r13,%r11
  mov    %r14,%r13
  mov    0x28(%rsp),%r14
  add    %rsi,%r11
  mov    %rcx,%rsi
  shr    $0x2,%rcx
  shl    $0x1e,%rsi
  xor    %r14,%r13
  or     %rcx,%rsi
  mov    0x30(%rsp),%rcx
  xor    %r13,%rcx
  mov    %rdx,%r13
  xor    %rbx,%rcx
  xor    %rsi,%r13
  lea    (%rcx,%rcx,1),%rdi
  shr    $0x1f,%rcx
  xor    %r12,%r13
  or     %rcx,%rdi
  lea    (%rdi,%rax,1),%rcx
  add    %r9,%rcx
  mov    %r11,%r9
  add    %r13,%rcx
  mov    %r11,%r13
  shl    $0x5,%r9
  shr    $0x1b,%r13
  or     %r13,%r9
  add    %rcx,%r9
  mov    %r12,%rcx
  shr    $0x2,%r12
  shl    $0x1e,%rcx
  or     %r12,%rcx
  mov    (%rsp),%r12
  xor    %r15,%r12
  xor    0x38(%rsp),%r12
  xor    %r10,%r12
  lea    (%r12,%r12,1),%r13
  shr    $0x1f,%r12
  or     %r12,%r13
  mov    %r13,%r12
  mov    %rsi,%r13
  xor    %rcx,%r13
  mov    %r12,0x28(%rsp)
  add    %rax,%r12
  xor    %r11,%r13
  add    %rdx,%r12
  mov    %r9,%rdx
  add    %r13,%r12
  mov    %r9,%r13
  shl    $0x5,%rdx
  shr    $0x1b,%r13
  or     %r13,%rdx
  mov    %r11,%r13
  shr    $0x2,%r11
  shl    $0x1e,%r13
  add    %r12,%rdx
  mov    %rcx,%r12
  mov    %r13,%r15
  or     %r11,%r15
  mov    0x8(%rsp),%r11
  xor    %r15,%r12
  xor    %r14,%r11
  xor    0x40(%rsp),%r11
  xor    %r9,%r12
  xor    %r8,%r11
  lea    (%r11,%r11,1),%r13
  shr    $0x1f,%r11
  or     %r11,%r13
  lea    0x0(%r13,%rax,1),%r11
  add    %rsi,%r11
  mov    %rdx,%rsi
  add    %r12,%r11
  mov    %rdx,%r12
  shl    $0x5,%rsi
  shr    $0x1b,%r12
  or     %r12,%rsi
  add    %r11,%rsi
  mov    %r9,%r11
  shr    $0x2,%r9
  shl    $0x1e,%r11
  or     %r9,%r11
  mov    (%rsp),%r9
  xor    0x10(%rsp),%r9
  xor    0x50(%rsp),%r9
  xor    %rdi,%r9
  lea    (%r9,%r9,1),%r12
  shr    $0x1f,%r9
  or     %r9,%r12
  mov    %r15,%r9
  xor    %r11,%r9
  mov    %r9,%r14
  lea    (%r12,%rax,1),%r9
  xor    %rdx,%r14
  add    %rcx,%r9
  mov    %rsi,%rcx
  add    %r14,%r9
  mov    %rsi,%r14
  shl    $0x5,%rcx
  shr    $0x1b,%r14
  or     %r14,%rcx
  add    %r9,%rcx
  mov    %rdx,%r9
  shr    $0x2,%rdx
  shl    $0x1e,%r9
  or     %rdx,%r9
  mov    0x8(%rsp),%rdx
  xor    0x20(%rsp),%rdx
  xor    %rbp,%rdx
  xor    0x28(%rsp),%rdx
  lea    (%rdx,%rdx,1),%r14
  shr    $0x1f,%rdx
  or     %rdx,%r14
  mov    %r11,%rdx
  xor    %r9,%rdx
  lea    (%r14,%rax,1),%rbp
  xor    %rsi,%rdx
  add    %r15,%rbp
  mov    %rcx,%r15
  add    %rdx,%rbp
  mov    %rcx,%rdx
  shr    $0x1b,%r15
  shl    $0x5,%rdx
  or     %r15,%rdx
  mov    0x20(%rsp),%r15
  add    %rbp,%rdx
  mov    %rsi,%rbp
  shr    $0x2,%rsi
  shl    $0x1e,%rbp
  or     %rbp,%rsi
  mov    0x10(%rsp),%rbp
  xor    0x18(%rsp),%rbp
  xor    %rbx,%rbp
  xor    %r13,%rbp
  mov    %r9,%r13
  mov    %rbp,%rbx
  add    %rbp,%rbp
  xor    %rsi,%r13
  shr    $0x1f,%rbx
  xor    %rcx,%r13
  or     %rbx,%rbp
  lea    0x0(%rbp,%rax,1),%rbx
  add    %r11,%rbx
  add    %r13,%rbx
  mov    %rdx,%r13
  shl    $0x5,%r13
  mov    %r13,%r11
  mov    %rdx,%r13
  shr    $0x1b,%r13
  or     %r13,%r11
  mov    %rcx,%r13
  shr    $0x2,%rcx
  shl    $0x1e,%r13
  add    %rbx,%r11
  or     %r13,%rcx
  mov    0x30(%rsp),%r13
  xor    %r13,%r15
  mov    %r15,%rbx
  mov    0x38(%rsp),%r15
  xor    %r10,%rbx
  mov    %rbx,%r10
  xor    %r12,%r10
  mov    %rsi,%r12
  lea    (%r10,%r10,1),%rbx
  shr    $0x1f,%r10
  xor    %rcx,%r12
  or     %r10,%rbx
  xor    %rdx,%r12
  lea    (%rbx,%rax,1),%r10
  add    %r9,%r10
  mov    %r11,%r9
  add    %r12,%r10
  mov    %r11,%r12
  shl    $0x5,%r9
  shr    $0x1b,%r12
  or     %r12,%r9
  add    %r10,%r9
  mov    %rdx,%r10
  shr    $0x2,%rdx
  shl    $0x1e,%r10
  or     %r10,%rdx
  mov    0x18(%rsp),%r10
  xor    %r15,%r10
  xor    %r8,%r10
  xor    %r14,%r10
  lea    (%r10,%r10,1),%r8
  shr    $0x1f,%r10
  or     %r10,%r8
  mov    %r9,%r10
  add    %rax,%r8
  shr    $0x1b,%r10
  add    %rsi,%r8
  mov    %rcx,%rsi
  xor    %rdx,%rsi
  xor    %r11,%rsi
  add    %rsi,%r8
  mov    %r9,%rsi
  shl    $0x5,%rsi
  or     %r10,%rsi
  mov    0x40(%rsp),%r10
  add    %r8,%rsi
  mov    %r11,%r8
  shr    $0x2,%r11
  xor    %r13,%r10
  shl    $0x1e,%r8
  xor    %rdi,%r10
  or     %r11,%r8
  mov    0x80(%rsp),%r11
  xor    %rbp,%r10
  mov    %rsi,%rbp
  lea    (%r10,%r10,1),%rdi
  shr    $0x1f,%r10
  or     %r10,%rdi
  mov    %rdx,%r10
  add    %rax,%rdi
  xor    %r8,%r10
  xor    0x50(%rsp),%r15
  add    0x60(%rsp),%rax
  add    %rdi,%rcx
  mov    %r10,%rdi
  mov    %rsi,%r10
  shr    $0x2,%rbp
  xor    %r9,%rdi
  shl    $0x5,%r10
  add    %rdi,%rcx
  mov    %r10,%rdi
  mov    %rsi,%r10
  shr    $0x1b,%r10
  or     %r10,%rdi
  mov    %r9,%r10
  shr    $0x2,%r9
  add    %rcx,%rdi
  mov    0x28(%rsp),%rcx
  shl    $0x1e,%r10
  or     %r10,%r9
  mov    %rsi,%r10
  xor    %r15,%rcx
  mov    0x78(%rsp),%r15
  shl    $0x1e,%r10
  xor    %rbx,%rcx
  or     %rbp,%r10
  add    0x70(%rsp),%r10
  lea    (%rcx,%rcx,1),%rbx
  shr    $0x1f,%rcx
  or     %rbx,%rcx
  mov    0x88(%rsp),%rbx
  add    %rcx,%rax
  mov    %rdi,%rcx
  add    %rdx,%rax
  mov    %r8,%rdx
  shr    $0x1b,%rcx
  mov    %r10,0x10(%rbx)
  xor    %r9,%rdx
  xor    %rsi,%rdx
  add    %rdx,%rax
  mov    %rdi,%rdx
  shl    $0x5,%rdx
  or     %rcx,%rdx
  add    %rdx,%rax
  mov    %rax,(%rbx)
  mov    0x68(%rsp),%rax
  add    %rdi,%rax
  mov    %rax,0x8(%rbx)
  lea    (%r15,%r9,1),%rax
  mov    %rax,0x18(%rbx)
  lea    (%r11,%r8,1),%rax
  mov    %rax,0x20(%rbx)
  mov    0x118(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L3
  add    $0x128,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L3:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void SHA1_Transform_HC(unsigned long H[5], const unsigned char M[64]) {
  unsigned long A = H[0];
  unsigned long B = H[1];
  unsigned long C = H[2];
  unsigned long D = H[3];
  unsigned long E = H[4];
  unsigned long W[16] = {0};
  memcpy(W, M, 64);
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((D) ^ ((B) & ((C) ^ (D)))) + ((0 + 0 + 0) < 16 ? (W[((0 + 0 + 0)) & 0x0F]) : ((W[((0 + 0 + 0)) & 0x0F]) = ((((W[((0 + 0 + 0)) & 0x0F]) ^ (W[((0 + 0 + 0) - 14) & 0x0F]) ^ (W[((0 + 0 + 0) - 8) & 0x0F]) ^ (W[((0 + 0 + 0) - 3) & 0x0F])) << (1)) | (((W[((0 + 0 + 0)) & 0x0F]) ^ (W[((0 + 0 + 0) - 14) & 0x0F]) ^ (W[((0 + 0 + 0) - 8) & 0x0F]) ^ (W[((0 + 0 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((C) ^ ((A) & ((B) ^ (C)))) + ((0 + 0 + 1) < 16 ? (W[((0 + 0 + 1)) & 0x0F]) : ((W[((0 + 0 + 1)) & 0x0F]) = ((((W[((0 + 0 + 1)) & 0x0F]) ^ (W[((0 + 0 + 1) - 14) & 0x0F]) ^ (W[((0 + 0 + 1) - 8) & 0x0F]) ^ (W[((0 + 0 + 1) - 3) & 0x0F])) << (1)) | (((W[((0 + 0 + 1)) & 0x0F]) ^ (W[((0 + 0 + 1) - 14) & 0x0F]) ^ (W[((0 + 0 + 1) - 8) & 0x0F]) ^ (W[((0 + 0 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((B) ^ ((E) & ((A) ^ (B)))) + ((0 + 0 + 2) < 16 ? (W[((0 + 0 + 2)) & 0x0F]) : ((W[((0 + 0 + 2)) & 0x0F]) = ((((W[((0 + 0 + 2)) & 0x0F]) ^ (W[((0 + 0 + 2) - 14) & 0x0F]) ^ (W[((0 + 0 + 2) - 8) & 0x0F]) ^ (W[((0 + 0 + 2) - 3) & 0x0F])) << (1)) | (((W[((0 + 0 + 2)) & 0x0F]) ^ (W[((0 + 0 + 2) - 14) & 0x0F]) ^ (W[((0 + 0 + 2) - 8) & 0x0F]) ^ (W[((0 + 0 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((A) ^ ((D) & ((E) ^ (A)))) + ((0 + 0 + 3) < 16 ? (W[((0 + 0 + 3)) & 0x0F]) : ((W[((0 + 0 + 3)) & 0x0F]) = ((((W[((0 + 0 + 3)) & 0x0F]) ^ (W[((0 + 0 + 3) - 14) & 0x0F]) ^ (W[((0 + 0 + 3) - 8) & 0x0F]) ^ (W[((0 + 0 + 3) - 3) & 0x0F])) << (1)) | (((W[((0 + 0 + 3)) & 0x0F]) ^ (W[((0 + 0 + 3) - 14) & 0x0F]) ^ (W[((0 + 0 + 3) - 8) & 0x0F]) ^ (W[((0 + 0 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((E) ^ ((C) & ((D) ^ (E)))) + ((0 + 0 + 4) < 16 ? (W[((0 + 0 + 4)) & 0x0F]) : ((W[((0 + 0 + 4)) & 0x0F]) = ((((W[((0 + 0 + 4)) & 0x0F]) ^ (W[((0 + 0 + 4) - 14) & 0x0F]) ^ (W[((0 + 0 + 4) - 8) & 0x0F]) ^ (W[((0 + 0 + 4) - 3) & 0x0F])) << (1)) | (((W[((0 + 0 + 4)) & 0x0F]) ^ (W[((0 + 0 + 4) - 14) & 0x0F]) ^ (W[((0 + 0 + 4) - 8) & 0x0F]) ^ (W[((0 + 0 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((D) ^ ((B) & ((C) ^ (D)))) + ((0 + 5 + 0) < 16 ? (W[((0 + 5 + 0)) & 0x0F]) : ((W[((0 + 5 + 0)) & 0x0F]) = ((((W[((0 + 5 + 0)) & 0x0F]) ^ (W[((0 + 5 + 0) - 14) & 0x0F]) ^ (W[((0 + 5 + 0) - 8) & 0x0F]) ^ (W[((0 + 5 + 0) - 3) & 0x0F])) << (1)) | (((W[((0 + 5 + 0)) & 0x0F]) ^ (W[((0 + 5 + 0) - 14) & 0x0F]) ^ (W[((0 + 5 + 0) - 8) & 0x0F]) ^ (W[((0 + 5 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((C) ^ ((A) & ((B) ^ (C)))) + ((0 + 5 + 1) < 16 ? (W[((0 + 5 + 1)) & 0x0F]) : ((W[((0 + 5 + 1)) & 0x0F]) = ((((W[((0 + 5 + 1)) & 0x0F]) ^ (W[((0 + 5 + 1) - 14) & 0x0F]) ^ (W[((0 + 5 + 1) - 8) & 0x0F]) ^ (W[((0 + 5 + 1) - 3) & 0x0F])) << (1)) | (((W[((0 + 5 + 1)) & 0x0F]) ^ (W[((0 + 5 + 1) - 14) & 0x0F]) ^ (W[((0 + 5 + 1) - 8) & 0x0F]) ^ (W[((0 + 5 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((B) ^ ((E) & ((A) ^ (B)))) + ((0 + 5 + 2) < 16 ? (W[((0 + 5 + 2)) & 0x0F]) : ((W[((0 + 5 + 2)) & 0x0F]) = ((((W[((0 + 5 + 2)) & 0x0F]) ^ (W[((0 + 5 + 2) - 14) & 0x0F]) ^ (W[((0 + 5 + 2) - 8) & 0x0F]) ^ (W[((0 + 5 + 2) - 3) & 0x0F])) << (1)) | (((W[((0 + 5 + 2)) & 0x0F]) ^ (W[((0 + 5 + 2) - 14) & 0x0F]) ^ (W[((0 + 5 + 2) - 8) & 0x0F]) ^ (W[((0 + 5 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((A) ^ ((D) & ((E) ^ (A)))) + ((0 + 5 + 3) < 16 ? (W[((0 + 5 + 3)) & 0x0F]) : ((W[((0 + 5 + 3)) & 0x0F]) = ((((W[((0 + 5 + 3)) & 0x0F]) ^ (W[((0 + 5 + 3) - 14) & 0x0F]) ^ (W[((0 + 5 + 3) - 8) & 0x0F]) ^ (W[((0 + 5 + 3) - 3) & 0x0F])) << (1)) | (((W[((0 + 5 + 3)) & 0x0F]) ^ (W[((0 + 5 + 3) - 14) & 0x0F]) ^ (W[((0 + 5 + 3) - 8) & 0x0F]) ^ (W[((0 + 5 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((E) ^ ((C) & ((D) ^ (E)))) + ((0 + 5 + 4) < 16 ? (W[((0 + 5 + 4)) & 0x0F]) : ((W[((0 + 5 + 4)) & 0x0F]) = ((((W[((0 + 5 + 4)) & 0x0F]) ^ (W[((0 + 5 + 4) - 14) & 0x0F]) ^ (W[((0 + 5 + 4) - 8) & 0x0F]) ^ (W[((0 + 5 + 4) - 3) & 0x0F])) << (1)) | (((W[((0 + 5 + 4)) & 0x0F]) ^ (W[((0 + 5 + 4) - 14) & 0x0F]) ^ (W[((0 + 5 + 4) - 8) & 0x0F]) ^ (W[((0 + 5 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((D) ^ ((B) & ((C) ^ (D)))) + ((0 + 10 + 0) < 16 ? (W[((0 + 10 + 0)) & 0x0F]) : ((W[((0 + 10 + 0)) & 0x0F]) = ((((W[((0 + 10 + 0)) & 0x0F]) ^ (W[((0 + 10 + 0) - 14) & 0x0F]) ^ (W[((0 + 10 + 0) - 8) & 0x0F]) ^ (W[((0 + 10 + 0) - 3) & 0x0F])) << (1)) | (((W[((0 + 10 + 0)) & 0x0F]) ^ (W[((0 + 10 + 0) - 14) & 0x0F]) ^ (W[((0 + 10 + 0) - 8) & 0x0F]) ^ (W[((0 + 10 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((C) ^ ((A) & ((B) ^ (C)))) + ((0 + 10 + 1) < 16 ? (W[((0 + 10 + 1)) & 0x0F]) : ((W[((0 + 10 + 1)) & 0x0F]) = ((((W[((0 + 10 + 1)) & 0x0F]) ^ (W[((0 + 10 + 1) - 14) & 0x0F]) ^ (W[((0 + 10 + 1) - 8) & 0x0F]) ^ (W[((0 + 10 + 1) - 3) & 0x0F])) << (1)) | (((W[((0 + 10 + 1)) & 0x0F]) ^ (W[((0 + 10 + 1) - 14) & 0x0F]) ^ (W[((0 + 10 + 1) - 8) & 0x0F]) ^ (W[((0 + 10 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((B) ^ ((E) & ((A) ^ (B)))) + ((0 + 10 + 2) < 16 ? (W[((0 + 10 + 2)) & 0x0F]) : ((W[((0 + 10 + 2)) & 0x0F]) = ((((W[((0 + 10 + 2)) & 0x0F]) ^ (W[((0 + 10 + 2) - 14) & 0x0F]) ^ (W[((0 + 10 + 2) - 8) & 0x0F]) ^ (W[((0 + 10 + 2) - 3) & 0x0F])) << (1)) | (((W[((0 + 10 + 2)) & 0x0F]) ^ (W[((0 + 10 + 2) - 14) & 0x0F]) ^ (W[((0 + 10 + 2) - 8) & 0x0F]) ^ (W[((0 + 10 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((A) ^ ((D) & ((E) ^ (A)))) + ((0 + 10 + 3) < 16 ? (W[((0 + 10 + 3)) & 0x0F]) : ((W[((0 + 10 + 3)) & 0x0F]) = ((((W[((0 + 10 + 3)) & 0x0F]) ^ (W[((0 + 10 + 3) - 14) & 0x0F]) ^ (W[((0 + 10 + 3) - 8) & 0x0F]) ^ (W[((0 + 10 + 3) - 3) & 0x0F])) << (1)) | (((W[((0 + 10 + 3)) & 0x0F]) ^ (W[((0 + 10 + 3) - 14) & 0x0F]) ^ (W[((0 + 10 + 3) - 8) & 0x0F]) ^ (W[((0 + 10 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((E) ^ ((C) & ((D) ^ (E)))) + ((0 + 10 + 4) < 16 ? (W[((0 + 10 + 4)) & 0x0F]) : ((W[((0 + 10 + 4)) & 0x0F]) = ((((W[((0 + 10 + 4)) & 0x0F]) ^ (W[((0 + 10 + 4) - 14) & 0x0F]) ^ (W[((0 + 10 + 4) - 8) & 0x0F]) ^ (W[((0 + 10 + 4) - 3) & 0x0F])) << (1)) | (((W[((0 + 10 + 4)) & 0x0F]) ^ (W[((0 + 10 + 4) - 14) & 0x0F]) ^ (W[((0 + 10 + 4) - 8) & 0x0F]) ^ (W[((0 + 10 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((D) ^ ((B) & ((C) ^ (D)))) + ((0 + 15 + 0) < 16 ? (W[((0 + 15 + 0)) & 0x0F]) : ((W[((0 + 15 + 0)) & 0x0F]) = ((((W[((0 + 15 + 0)) & 0x0F]) ^ (W[((0 + 15 + 0) - 14) & 0x0F]) ^ (W[((0 + 15 + 0) - 8) & 0x0F]) ^ (W[((0 + 15 + 0) - 3) & 0x0F])) << (1)) | (((W[((0 + 15 + 0)) & 0x0F]) ^ (W[((0 + 15 + 0) - 14) & 0x0F]) ^ (W[((0 + 15 + 0) - 8) & 0x0F]) ^ (W[((0 + 15 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((C) ^ ((A) & ((B) ^ (C)))) + ((0 + 15 + 1) < 16 ? (W[((0 + 15 + 1)) & 0x0F]) : ((W[((0 + 15 + 1)) & 0x0F]) = ((((W[((0 + 15 + 1)) & 0x0F]) ^ (W[((0 + 15 + 1) - 14) & 0x0F]) ^ (W[((0 + 15 + 1) - 8) & 0x0F]) ^ (W[((0 + 15 + 1) - 3) & 0x0F])) << (1)) | (((W[((0 + 15 + 1)) & 0x0F]) ^ (W[((0 + 15 + 1) - 14) & 0x0F]) ^ (W[((0 + 15 + 1) - 8) & 0x0F]) ^ (W[((0 + 15 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((B) ^ ((E) & ((A) ^ (B)))) + ((0 + 15 + 2) < 16 ? (W[((0 + 15 + 2)) & 0x0F]) : ((W[((0 + 15 + 2)) & 0x0F]) = ((((W[((0 + 15 + 2)) & 0x0F]) ^ (W[((0 + 15 + 2) - 14) & 0x0F]) ^ (W[((0 + 15 + 2) - 8) & 0x0F]) ^ (W[((0 + 15 + 2) - 3) & 0x0F])) << (1)) | (((W[((0 + 15 + 2)) & 0x0F]) ^ (W[((0 + 15 + 2) - 14) & 0x0F]) ^ (W[((0 + 15 + 2) - 8) & 0x0F]) ^ (W[((0 + 15 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((A) ^ ((D) & ((E) ^ (A)))) + ((0 + 15 + 3) < 16 ? (W[((0 + 15 + 3)) & 0x0F]) : ((W[((0 + 15 + 3)) & 0x0F]) = ((((W[((0 + 15 + 3)) & 0x0F]) ^ (W[((0 + 15 + 3) - 14) & 0x0F]) ^ (W[((0 + 15 + 3) - 8) & 0x0F]) ^ (W[((0 + 15 + 3) - 3) & 0x0F])) << (1)) | (((W[((0 + 15 + 3)) & 0x0F]) ^ (W[((0 + 15 + 3) - 14) & 0x0F]) ^ (W[((0 + 15 + 3) - 8) & 0x0F]) ^ (W[((0 + 15 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((E) ^ ((C) & ((D) ^ (E)))) + ((0 + 15 + 4) < 16 ? (W[((0 + 15 + 4)) & 0x0F]) : ((W[((0 + 15 + 4)) & 0x0F]) = ((((W[((0 + 15 + 4)) & 0x0F]) ^ (W[((0 + 15 + 4) - 14) & 0x0F]) ^ (W[((0 + 15 + 4) - 8) & 0x0F]) ^ (W[((0 + 15 + 4) - 3) & 0x0F])) << (1)) | (((W[((0 + 15 + 4)) & 0x0F]) ^ (W[((0 + 15 + 4) - 14) & 0x0F]) ^ (W[((0 + 15 + 4) - 8) & 0x0F]) ^ (W[((0 + 15 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x5A827999;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((20 + 0 + 0) < 16 ? (W[((20 + 0 + 0)) & 0x0F]) : ((W[((20 + 0 + 0)) & 0x0F]) = ((((W[((20 + 0 + 0)) & 0x0F]) ^ (W[((20 + 0 + 0) - 14) & 0x0F]) ^ (W[((20 + 0 + 0) - 8) & 0x0F]) ^ (W[((20 + 0 + 0) - 3) & 0x0F])) << (1)) | (((W[((20 + 0 + 0)) & 0x0F]) ^ (W[((20 + 0 + 0) - 14) & 0x0F]) ^ (W[((20 + 0 + 0) - 8) & 0x0F]) ^ (W[((20 + 0 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((20 + 0 + 1) < 16 ? (W[((20 + 0 + 1)) & 0x0F]) : ((W[((20 + 0 + 1)) & 0x0F]) = ((((W[((20 + 0 + 1)) & 0x0F]) ^ (W[((20 + 0 + 1) - 14) & 0x0F]) ^ (W[((20 + 0 + 1) - 8) & 0x0F]) ^ (W[((20 + 0 + 1) - 3) & 0x0F])) << (1)) | (((W[((20 + 0 + 1)) & 0x0F]) ^ (W[((20 + 0 + 1) - 14) & 0x0F]) ^ (W[((20 + 0 + 1) - 8) & 0x0F]) ^ (W[((20 + 0 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((20 + 0 + 2) < 16 ? (W[((20 + 0 + 2)) & 0x0F]) : ((W[((20 + 0 + 2)) & 0x0F]) = ((((W[((20 + 0 + 2)) & 0x0F]) ^ (W[((20 + 0 + 2) - 14) & 0x0F]) ^ (W[((20 + 0 + 2) - 8) & 0x0F]) ^ (W[((20 + 0 + 2) - 3) & 0x0F])) << (1)) | (((W[((20 + 0 + 2)) & 0x0F]) ^ (W[((20 + 0 + 2) - 14) & 0x0F]) ^ (W[((20 + 0 + 2) - 8) & 0x0F]) ^ (W[((20 + 0 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((20 + 0 + 3) < 16 ? (W[((20 + 0 + 3)) & 0x0F]) : ((W[((20 + 0 + 3)) & 0x0F]) = ((((W[((20 + 0 + 3)) & 0x0F]) ^ (W[((20 + 0 + 3) - 14) & 0x0F]) ^ (W[((20 + 0 + 3) - 8) & 0x0F]) ^ (W[((20 + 0 + 3) - 3) & 0x0F])) << (1)) | (((W[((20 + 0 + 3)) & 0x0F]) ^ (W[((20 + 0 + 3) - 14) & 0x0F]) ^ (W[((20 + 0 + 3) - 8) & 0x0F]) ^ (W[((20 + 0 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((20 + 0 + 4) < 16 ? (W[((20 + 0 + 4)) & 0x0F]) : ((W[((20 + 0 + 4)) & 0x0F]) = ((((W[((20 + 0 + 4)) & 0x0F]) ^ (W[((20 + 0 + 4) - 14) & 0x0F]) ^ (W[((20 + 0 + 4) - 8) & 0x0F]) ^ (W[((20 + 0 + 4) - 3) & 0x0F])) << (1)) | (((W[((20 + 0 + 4)) & 0x0F]) ^ (W[((20 + 0 + 4) - 14) & 0x0F]) ^ (W[((20 + 0 + 4) - 8) & 0x0F]) ^ (W[((20 + 0 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((20 + 5 + 0) < 16 ? (W[((20 + 5 + 0)) & 0x0F]) : ((W[((20 + 5 + 0)) & 0x0F]) = ((((W[((20 + 5 + 0)) & 0x0F]) ^ (W[((20 + 5 + 0) - 14) & 0x0F]) ^ (W[((20 + 5 + 0) - 8) & 0x0F]) ^ (W[((20 + 5 + 0) - 3) & 0x0F])) << (1)) | (((W[((20 + 5 + 0)) & 0x0F]) ^ (W[((20 + 5 + 0) - 14) & 0x0F]) ^ (W[((20 + 5 + 0) - 8) & 0x0F]) ^ (W[((20 + 5 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((20 + 5 + 1) < 16 ? (W[((20 + 5 + 1)) & 0x0F]) : ((W[((20 + 5 + 1)) & 0x0F]) = ((((W[((20 + 5 + 1)) & 0x0F]) ^ (W[((20 + 5 + 1) - 14) & 0x0F]) ^ (W[((20 + 5 + 1) - 8) & 0x0F]) ^ (W[((20 + 5 + 1) - 3) & 0x0F])) << (1)) | (((W[((20 + 5 + 1)) & 0x0F]) ^ (W[((20 + 5 + 1) - 14) & 0x0F]) ^ (W[((20 + 5 + 1) - 8) & 0x0F]) ^ (W[((20 + 5 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((20 + 5 + 2) < 16 ? (W[((20 + 5 + 2)) & 0x0F]) : ((W[((20 + 5 + 2)) & 0x0F]) = ((((W[((20 + 5 + 2)) & 0x0F]) ^ (W[((20 + 5 + 2) - 14) & 0x0F]) ^ (W[((20 + 5 + 2) - 8) & 0x0F]) ^ (W[((20 + 5 + 2) - 3) & 0x0F])) << (1)) | (((W[((20 + 5 + 2)) & 0x0F]) ^ (W[((20 + 5 + 2) - 14) & 0x0F]) ^ (W[((20 + 5 + 2) - 8) & 0x0F]) ^ (W[((20 + 5 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((20 + 5 + 3) < 16 ? (W[((20 + 5 + 3)) & 0x0F]) : ((W[((20 + 5 + 3)) & 0x0F]) = ((((W[((20 + 5 + 3)) & 0x0F]) ^ (W[((20 + 5 + 3) - 14) & 0x0F]) ^ (W[((20 + 5 + 3) - 8) & 0x0F]) ^ (W[((20 + 5 + 3) - 3) & 0x0F])) << (1)) | (((W[((20 + 5 + 3)) & 0x0F]) ^ (W[((20 + 5 + 3) - 14) & 0x0F]) ^ (W[((20 + 5 + 3) - 8) & 0x0F]) ^ (W[((20 + 5 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((20 + 5 + 4) < 16 ? (W[((20 + 5 + 4)) & 0x0F]) : ((W[((20 + 5 + 4)) & 0x0F]) = ((((W[((20 + 5 + 4)) & 0x0F]) ^ (W[((20 + 5 + 4) - 14) & 0x0F]) ^ (W[((20 + 5 + 4) - 8) & 0x0F]) ^ (W[((20 + 5 + 4) - 3) & 0x0F])) << (1)) | (((W[((20 + 5 + 4)) & 0x0F]) ^ (W[((20 + 5 + 4) - 14) & 0x0F]) ^ (W[((20 + 5 + 4) - 8) & 0x0F]) ^ (W[((20 + 5 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((20 + 10 + 0) < 16 ? (W[((20 + 10 + 0)) & 0x0F]) : ((W[((20 + 10 + 0)) & 0x0F]) = ((((W[((20 + 10 + 0)) & 0x0F]) ^ (W[((20 + 10 + 0) - 14) & 0x0F]) ^ (W[((20 + 10 + 0) - 8) & 0x0F]) ^ (W[((20 + 10 + 0) - 3) & 0x0F])) << (1)) | (((W[((20 + 10 + 0)) & 0x0F]) ^ (W[((20 + 10 + 0) - 14) & 0x0F]) ^ (W[((20 + 10 + 0) - 8) & 0x0F]) ^ (W[((20 + 10 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((20 + 10 + 1) < 16 ? (W[((20 + 10 + 1)) & 0x0F]) : ((W[((20 + 10 + 1)) & 0x0F]) = ((((W[((20 + 10 + 1)) & 0x0F]) ^ (W[((20 + 10 + 1) - 14) & 0x0F]) ^ (W[((20 + 10 + 1) - 8) & 0x0F]) ^ (W[((20 + 10 + 1) - 3) & 0x0F])) << (1)) | (((W[((20 + 10 + 1)) & 0x0F]) ^ (W[((20 + 10 + 1) - 14) & 0x0F]) ^ (W[((20 + 10 + 1) - 8) & 0x0F]) ^ (W[((20 + 10 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((20 + 10 + 2) < 16 ? (W[((20 + 10 + 2)) & 0x0F]) : ((W[((20 + 10 + 2)) & 0x0F]) = ((((W[((20 + 10 + 2)) & 0x0F]) ^ (W[((20 + 10 + 2) - 14) & 0x0F]) ^ (W[((20 + 10 + 2) - 8) & 0x0F]) ^ (W[((20 + 10 + 2) - 3) & 0x0F])) << (1)) | (((W[((20 + 10 + 2)) & 0x0F]) ^ (W[((20 + 10 + 2) - 14) & 0x0F]) ^ (W[((20 + 10 + 2) - 8) & 0x0F]) ^ (W[((20 + 10 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((20 + 10 + 3) < 16 ? (W[((20 + 10 + 3)) & 0x0F]) : ((W[((20 + 10 + 3)) & 0x0F]) = ((((W[((20 + 10 + 3)) & 0x0F]) ^ (W[((20 + 10 + 3) - 14) & 0x0F]) ^ (W[((20 + 10 + 3) - 8) & 0x0F]) ^ (W[((20 + 10 + 3) - 3) & 0x0F])) << (1)) | (((W[((20 + 10 + 3)) & 0x0F]) ^ (W[((20 + 10 + 3) - 14) & 0x0F]) ^ (W[((20 + 10 + 3) - 8) & 0x0F]) ^ (W[((20 + 10 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((20 + 10 + 4) < 16 ? (W[((20 + 10 + 4)) & 0x0F]) : ((W[((20 + 10 + 4)) & 0x0F]) = ((((W[((20 + 10 + 4)) & 0x0F]) ^ (W[((20 + 10 + 4) - 14) & 0x0F]) ^ (W[((20 + 10 + 4) - 8) & 0x0F]) ^ (W[((20 + 10 + 4) - 3) & 0x0F])) << (1)) | (((W[((20 + 10 + 4)) & 0x0F]) ^ (W[((20 + 10 + 4) - 14) & 0x0F]) ^ (W[((20 + 10 + 4) - 8) & 0x0F]) ^ (W[((20 + 10 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((20 + 15 + 0) < 16 ? (W[((20 + 15 + 0)) & 0x0F]) : ((W[((20 + 15 + 0)) & 0x0F]) = ((((W[((20 + 15 + 0)) & 0x0F]) ^ (W[((20 + 15 + 0) - 14) & 0x0F]) ^ (W[((20 + 15 + 0) - 8) & 0x0F]) ^ (W[((20 + 15 + 0) - 3) & 0x0F])) << (1)) | (((W[((20 + 15 + 0)) & 0x0F]) ^ (W[((20 + 15 + 0) - 14) & 0x0F]) ^ (W[((20 + 15 + 0) - 8) & 0x0F]) ^ (W[((20 + 15 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((20 + 15 + 1) < 16 ? (W[((20 + 15 + 1)) & 0x0F]) : ((W[((20 + 15 + 1)) & 0x0F]) = ((((W[((20 + 15 + 1)) & 0x0F]) ^ (W[((20 + 15 + 1) - 14) & 0x0F]) ^ (W[((20 + 15 + 1) - 8) & 0x0F]) ^ (W[((20 + 15 + 1) - 3) & 0x0F])) << (1)) | (((W[((20 + 15 + 1)) & 0x0F]) ^ (W[((20 + 15 + 1) - 14) & 0x0F]) ^ (W[((20 + 15 + 1) - 8) & 0x0F]) ^ (W[((20 + 15 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((20 + 15 + 2) < 16 ? (W[((20 + 15 + 2)) & 0x0F]) : ((W[((20 + 15 + 2)) & 0x0F]) = ((((W[((20 + 15 + 2)) & 0x0F]) ^ (W[((20 + 15 + 2) - 14) & 0x0F]) ^ (W[((20 + 15 + 2) - 8) & 0x0F]) ^ (W[((20 + 15 + 2) - 3) & 0x0F])) << (1)) | (((W[((20 + 15 + 2)) & 0x0F]) ^ (W[((20 + 15 + 2) - 14) & 0x0F]) ^ (W[((20 + 15 + 2) - 8) & 0x0F]) ^ (W[((20 + 15 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((20 + 15 + 3) < 16 ? (W[((20 + 15 + 3)) & 0x0F]) : ((W[((20 + 15 + 3)) & 0x0F]) = ((((W[((20 + 15 + 3)) & 0x0F]) ^ (W[((20 + 15 + 3) - 14) & 0x0F]) ^ (W[((20 + 15 + 3) - 8) & 0x0F]) ^ (W[((20 + 15 + 3) - 3) & 0x0F])) << (1)) | (((W[((20 + 15 + 3)) & 0x0F]) ^ (W[((20 + 15 + 3) - 14) & 0x0F]) ^ (W[((20 + 15 + 3) - 8) & 0x0F]) ^ (W[((20 + 15 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((20 + 15 + 4) < 16 ? (W[((20 + 15 + 4)) & 0x0F]) : ((W[((20 + 15 + 4)) & 0x0F]) = ((((W[((20 + 15 + 4)) & 0x0F]) ^ (W[((20 + 15 + 4) - 14) & 0x0F]) ^ (W[((20 + 15 + 4) - 8) & 0x0F]) ^ (W[((20 + 15 + 4) - 3) & 0x0F])) << (1)) | (((W[((20 + 15 + 4)) & 0x0F]) ^ (W[((20 + 15 + 4) - 14) & 0x0F]) ^ (W[((20 + 15 + 4) - 8) & 0x0F]) ^ (W[((20 + 15 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x6ED9EBA1;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + (((B) & ((C) | (D))) | ((C) & (D))) + ((40 + 0 + 0) < 16 ? (W[((40 + 0 + 0)) & 0x0F]) : ((W[((40 + 0 + 0)) & 0x0F]) = ((((W[((40 + 0 + 0)) & 0x0F]) ^ (W[((40 + 0 + 0) - 14) & 0x0F]) ^ (W[((40 + 0 + 0) - 8) & 0x0F]) ^ (W[((40 + 0 + 0) - 3) & 0x0F])) << (1)) | (((W[((40 + 0 + 0)) & 0x0F]) ^ (W[((40 + 0 + 0) - 14) & 0x0F]) ^ (W[((40 + 0 + 0) - 8) & 0x0F]) ^ (W[((40 + 0 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + (((A) & ((B) | (C))) | ((B) & (C))) + ((40 + 0 + 1) < 16 ? (W[((40 + 0 + 1)) & 0x0F]) : ((W[((40 + 0 + 1)) & 0x0F]) = ((((W[((40 + 0 + 1)) & 0x0F]) ^ (W[((40 + 0 + 1) - 14) & 0x0F]) ^ (W[((40 + 0 + 1) - 8) & 0x0F]) ^ (W[((40 + 0 + 1) - 3) & 0x0F])) << (1)) | (((W[((40 + 0 + 1)) & 0x0F]) ^ (W[((40 + 0 + 1) - 14) & 0x0F]) ^ (W[((40 + 0 + 1) - 8) & 0x0F]) ^ (W[((40 + 0 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + (((E) & ((A) | (B))) | ((A) & (B))) + ((40 + 0 + 2) < 16 ? (W[((40 + 0 + 2)) & 0x0F]) : ((W[((40 + 0 + 2)) & 0x0F]) = ((((W[((40 + 0 + 2)) & 0x0F]) ^ (W[((40 + 0 + 2) - 14) & 0x0F]) ^ (W[((40 + 0 + 2) - 8) & 0x0F]) ^ (W[((40 + 0 + 2) - 3) & 0x0F])) << (1)) | (((W[((40 + 0 + 2)) & 0x0F]) ^ (W[((40 + 0 + 2) - 14) & 0x0F]) ^ (W[((40 + 0 + 2) - 8) & 0x0F]) ^ (W[((40 + 0 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + (((D) & ((E) | (A))) | ((E) & (A))) + ((40 + 0 + 3) < 16 ? (W[((40 + 0 + 3)) & 0x0F]) : ((W[((40 + 0 + 3)) & 0x0F]) = ((((W[((40 + 0 + 3)) & 0x0F]) ^ (W[((40 + 0 + 3) - 14) & 0x0F]) ^ (W[((40 + 0 + 3) - 8) & 0x0F]) ^ (W[((40 + 0 + 3) - 3) & 0x0F])) << (1)) | (((W[((40 + 0 + 3)) & 0x0F]) ^ (W[((40 + 0 + 3) - 14) & 0x0F]) ^ (W[((40 + 0 + 3) - 8) & 0x0F]) ^ (W[((40 + 0 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + (((C) & ((D) | (E))) | ((D) & (E))) + ((40 + 0 + 4) < 16 ? (W[((40 + 0 + 4)) & 0x0F]) : ((W[((40 + 0 + 4)) & 0x0F]) = ((((W[((40 + 0 + 4)) & 0x0F]) ^ (W[((40 + 0 + 4) - 14) & 0x0F]) ^ (W[((40 + 0 + 4) - 8) & 0x0F]) ^ (W[((40 + 0 + 4) - 3) & 0x0F])) << (1)) | (((W[((40 + 0 + 4)) & 0x0F]) ^ (W[((40 + 0 + 4) - 14) & 0x0F]) ^ (W[((40 + 0 + 4) - 8) & 0x0F]) ^ (W[((40 + 0 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + (((B) & ((C) | (D))) | ((C) & (D))) + ((40 + 5 + 0) < 16 ? (W[((40 + 5 + 0)) & 0x0F]) : ((W[((40 + 5 + 0)) & 0x0F]) = ((((W[((40 + 5 + 0)) & 0x0F]) ^ (W[((40 + 5 + 0) - 14) & 0x0F]) ^ (W[((40 + 5 + 0) - 8) & 0x0F]) ^ (W[((40 + 5 + 0) - 3) & 0x0F])) << (1)) | (((W[((40 + 5 + 0)) & 0x0F]) ^ (W[((40 + 5 + 0) - 14) & 0x0F]) ^ (W[((40 + 5 + 0) - 8) & 0x0F]) ^ (W[((40 + 5 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + (((A) & ((B) | (C))) | ((B) & (C))) + ((40 + 5 + 1) < 16 ? (W[((40 + 5 + 1)) & 0x0F]) : ((W[((40 + 5 + 1)) & 0x0F]) = ((((W[((40 + 5 + 1)) & 0x0F]) ^ (W[((40 + 5 + 1) - 14) & 0x0F]) ^ (W[((40 + 5 + 1) - 8) & 0x0F]) ^ (W[((40 + 5 + 1) - 3) & 0x0F])) << (1)) | (((W[((40 + 5 + 1)) & 0x0F]) ^ (W[((40 + 5 + 1) - 14) & 0x0F]) ^ (W[((40 + 5 + 1) - 8) & 0x0F]) ^ (W[((40 + 5 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + (((E) & ((A) | (B))) | ((A) & (B))) + ((40 + 5 + 2) < 16 ? (W[((40 + 5 + 2)) & 0x0F]) : ((W[((40 + 5 + 2)) & 0x0F]) = ((((W[((40 + 5 + 2)) & 0x0F]) ^ (W[((40 + 5 + 2) - 14) & 0x0F]) ^ (W[((40 + 5 + 2) - 8) & 0x0F]) ^ (W[((40 + 5 + 2) - 3) & 0x0F])) << (1)) | (((W[((40 + 5 + 2)) & 0x0F]) ^ (W[((40 + 5 + 2) - 14) & 0x0F]) ^ (W[((40 + 5 + 2) - 8) & 0x0F]) ^ (W[((40 + 5 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + (((D) & ((E) | (A))) | ((E) & (A))) + ((40 + 5 + 3) < 16 ? (W[((40 + 5 + 3)) & 0x0F]) : ((W[((40 + 5 + 3)) & 0x0F]) = ((((W[((40 + 5 + 3)) & 0x0F]) ^ (W[((40 + 5 + 3) - 14) & 0x0F]) ^ (W[((40 + 5 + 3) - 8) & 0x0F]) ^ (W[((40 + 5 + 3) - 3) & 0x0F])) << (1)) | (((W[((40 + 5 + 3)) & 0x0F]) ^ (W[((40 + 5 + 3) - 14) & 0x0F]) ^ (W[((40 + 5 + 3) - 8) & 0x0F]) ^ (W[((40 + 5 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + (((C) & ((D) | (E))) | ((D) & (E))) + ((40 + 5 + 4) < 16 ? (W[((40 + 5 + 4)) & 0x0F]) : ((W[((40 + 5 + 4)) & 0x0F]) = ((((W[((40 + 5 + 4)) & 0x0F]) ^ (W[((40 + 5 + 4) - 14) & 0x0F]) ^ (W[((40 + 5 + 4) - 8) & 0x0F]) ^ (W[((40 + 5 + 4) - 3) & 0x0F])) << (1)) | (((W[((40 + 5 + 4)) & 0x0F]) ^ (W[((40 + 5 + 4) - 14) & 0x0F]) ^ (W[((40 + 5 + 4) - 8) & 0x0F]) ^ (W[((40 + 5 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + (((B) & ((C) | (D))) | ((C) & (D))) + ((40 + 10 + 0) < 16 ? (W[((40 + 10 + 0)) & 0x0F]) : ((W[((40 + 10 + 0)) & 0x0F]) = ((((W[((40 + 10 + 0)) & 0x0F]) ^ (W[((40 + 10 + 0) - 14) & 0x0F]) ^ (W[((40 + 10 + 0) - 8) & 0x0F]) ^ (W[((40 + 10 + 0) - 3) & 0x0F])) << (1)) | (((W[((40 + 10 + 0)) & 0x0F]) ^ (W[((40 + 10 + 0) - 14) & 0x0F]) ^ (W[((40 + 10 + 0) - 8) & 0x0F]) ^ (W[((40 + 10 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + (((A) & ((B) | (C))) | ((B) & (C))) + ((40 + 10 + 1) < 16 ? (W[((40 + 10 + 1)) & 0x0F]) : ((W[((40 + 10 + 1)) & 0x0F]) = ((((W[((40 + 10 + 1)) & 0x0F]) ^ (W[((40 + 10 + 1) - 14) & 0x0F]) ^ (W[((40 + 10 + 1) - 8) & 0x0F]) ^ (W[((40 + 10 + 1) - 3) & 0x0F])) << (1)) | (((W[((40 + 10 + 1)) & 0x0F]) ^ (W[((40 + 10 + 1) - 14) & 0x0F]) ^ (W[((40 + 10 + 1) - 8) & 0x0F]) ^ (W[((40 + 10 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + (((E) & ((A) | (B))) | ((A) & (B))) + ((40 + 10 + 2) < 16 ? (W[((40 + 10 + 2)) & 0x0F]) : ((W[((40 + 10 + 2)) & 0x0F]) = ((((W[((40 + 10 + 2)) & 0x0F]) ^ (W[((40 + 10 + 2) - 14) & 0x0F]) ^ (W[((40 + 10 + 2) - 8) & 0x0F]) ^ (W[((40 + 10 + 2) - 3) & 0x0F])) << (1)) | (((W[((40 + 10 + 2)) & 0x0F]) ^ (W[((40 + 10 + 2) - 14) & 0x0F]) ^ (W[((40 + 10 + 2) - 8) & 0x0F]) ^ (W[((40 + 10 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + (((D) & ((E) | (A))) | ((E) & (A))) + ((40 + 10 + 3) < 16 ? (W[((40 + 10 + 3)) & 0x0F]) : ((W[((40 + 10 + 3)) & 0x0F]) = ((((W[((40 + 10 + 3)) & 0x0F]) ^ (W[((40 + 10 + 3) - 14) & 0x0F]) ^ (W[((40 + 10 + 3) - 8) & 0x0F]) ^ (W[((40 + 10 + 3) - 3) & 0x0F])) << (1)) | (((W[((40 + 10 + 3)) & 0x0F]) ^ (W[((40 + 10 + 3) - 14) & 0x0F]) ^ (W[((40 + 10 + 3) - 8) & 0x0F]) ^ (W[((40 + 10 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + (((C) & ((D) | (E))) | ((D) & (E))) + ((40 + 10 + 4) < 16 ? (W[((40 + 10 + 4)) & 0x0F]) : ((W[((40 + 10 + 4)) & 0x0F]) = ((((W[((40 + 10 + 4)) & 0x0F]) ^ (W[((40 + 10 + 4) - 14) & 0x0F]) ^ (W[((40 + 10 + 4) - 8) & 0x0F]) ^ (W[((40 + 10 + 4) - 3) & 0x0F])) << (1)) | (((W[((40 + 10 + 4)) & 0x0F]) ^ (W[((40 + 10 + 4) - 14) & 0x0F]) ^ (W[((40 + 10 + 4) - 8) & 0x0F]) ^ (W[((40 + 10 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + (((B) & ((C) | (D))) | ((C) & (D))) + ((40 + 15 + 0) < 16 ? (W[((40 + 15 + 0)) & 0x0F]) : ((W[((40 + 15 + 0)) & 0x0F]) = ((((W[((40 + 15 + 0)) & 0x0F]) ^ (W[((40 + 15 + 0) - 14) & 0x0F]) ^ (W[((40 + 15 + 0) - 8) & 0x0F]) ^ (W[((40 + 15 + 0) - 3) & 0x0F])) << (1)) | (((W[((40 + 15 + 0)) & 0x0F]) ^ (W[((40 + 15 + 0) - 14) & 0x0F]) ^ (W[((40 + 15 + 0) - 8) & 0x0F]) ^ (W[((40 + 15 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + (((A) & ((B) | (C))) | ((B) & (C))) + ((40 + 15 + 1) < 16 ? (W[((40 + 15 + 1)) & 0x0F]) : ((W[((40 + 15 + 1)) & 0x0F]) = ((((W[((40 + 15 + 1)) & 0x0F]) ^ (W[((40 + 15 + 1) - 14) & 0x0F]) ^ (W[((40 + 15 + 1) - 8) & 0x0F]) ^ (W[((40 + 15 + 1) - 3) & 0x0F])) << (1)) | (((W[((40 + 15 + 1)) & 0x0F]) ^ (W[((40 + 15 + 1) - 14) & 0x0F]) ^ (W[((40 + 15 + 1) - 8) & 0x0F]) ^ (W[((40 + 15 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + (((E) & ((A) | (B))) | ((A) & (B))) + ((40 + 15 + 2) < 16 ? (W[((40 + 15 + 2)) & 0x0F]) : ((W[((40 + 15 + 2)) & 0x0F]) = ((((W[((40 + 15 + 2)) & 0x0F]) ^ (W[((40 + 15 + 2) - 14) & 0x0F]) ^ (W[((40 + 15 + 2) - 8) & 0x0F]) ^ (W[((40 + 15 + 2) - 3) & 0x0F])) << (1)) | (((W[((40 + 15 + 2)) & 0x0F]) ^ (W[((40 + 15 + 2) - 14) & 0x0F]) ^ (W[((40 + 15 + 2) - 8) & 0x0F]) ^ (W[((40 + 15 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + (((D) & ((E) | (A))) | ((E) & (A))) + ((40 + 15 + 3) < 16 ? (W[((40 + 15 + 3)) & 0x0F]) : ((W[((40 + 15 + 3)) & 0x0F]) = ((((W[((40 + 15 + 3)) & 0x0F]) ^ (W[((40 + 15 + 3) - 14) & 0x0F]) ^ (W[((40 + 15 + 3) - 8) & 0x0F]) ^ (W[((40 + 15 + 3) - 3) & 0x0F])) << (1)) | (((W[((40 + 15 + 3)) & 0x0F]) ^ (W[((40 + 15 + 3) - 14) & 0x0F]) ^ (W[((40 + 15 + 3) - 8) & 0x0F]) ^ (W[((40 + 15 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + (((C) & ((D) | (E))) | ((D) & (E))) + ((40 + 15 + 4) < 16 ? (W[((40 + 15 + 4)) & 0x0F]) : ((W[((40 + 15 + 4)) & 0x0F]) = ((((W[((40 + 15 + 4)) & 0x0F]) ^ (W[((40 + 15 + 4) - 14) & 0x0F]) ^ (W[((40 + 15 + 4) - 8) & 0x0F]) ^ (W[((40 + 15 + 4) - 3) & 0x0F])) << (1)) | (((W[((40 + 15 + 4)) & 0x0F]) ^ (W[((40 + 15 + 4) - 14) & 0x0F]) ^ (W[((40 + 15 + 4) - 8) & 0x0F]) ^ (W[((40 + 15 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0x8F1BBCDC;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((60 + 0 + 0) < 16 ? (W[((60 + 0 + 0)) & 0x0F]) : ((W[((60 + 0 + 0)) & 0x0F]) = ((((W[((60 + 0 + 0)) & 0x0F]) ^ (W[((60 + 0 + 0) - 14) & 0x0F]) ^ (W[((60 + 0 + 0) - 8) & 0x0F]) ^ (W[((60 + 0 + 0) - 3) & 0x0F])) << (1)) | (((W[((60 + 0 + 0)) & 0x0F]) ^ (W[((60 + 0 + 0) - 14) & 0x0F]) ^ (W[((60 + 0 + 0) - 8) & 0x0F]) ^ (W[((60 + 0 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((60 + 0 + 1) < 16 ? (W[((60 + 0 + 1)) & 0x0F]) : ((W[((60 + 0 + 1)) & 0x0F]) = ((((W[((60 + 0 + 1)) & 0x0F]) ^ (W[((60 + 0 + 1) - 14) & 0x0F]) ^ (W[((60 + 0 + 1) - 8) & 0x0F]) ^ (W[((60 + 0 + 1) - 3) & 0x0F])) << (1)) | (((W[((60 + 0 + 1)) & 0x0F]) ^ (W[((60 + 0 + 1) - 14) & 0x0F]) ^ (W[((60 + 0 + 1) - 8) & 0x0F]) ^ (W[((60 + 0 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((60 + 0 + 2) < 16 ? (W[((60 + 0 + 2)) & 0x0F]) : ((W[((60 + 0 + 2)) & 0x0F]) = ((((W[((60 + 0 + 2)) & 0x0F]) ^ (W[((60 + 0 + 2) - 14) & 0x0F]) ^ (W[((60 + 0 + 2) - 8) & 0x0F]) ^ (W[((60 + 0 + 2) - 3) & 0x0F])) << (1)) | (((W[((60 + 0 + 2)) & 0x0F]) ^ (W[((60 + 0 + 2) - 14) & 0x0F]) ^ (W[((60 + 0 + 2) - 8) & 0x0F]) ^ (W[((60 + 0 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((60 + 0 + 3) < 16 ? (W[((60 + 0 + 3)) & 0x0F]) : ((W[((60 + 0 + 3)) & 0x0F]) = ((((W[((60 + 0 + 3)) & 0x0F]) ^ (W[((60 + 0 + 3) - 14) & 0x0F]) ^ (W[((60 + 0 + 3) - 8) & 0x0F]) ^ (W[((60 + 0 + 3) - 3) & 0x0F])) << (1)) | (((W[((60 + 0 + 3)) & 0x0F]) ^ (W[((60 + 0 + 3) - 14) & 0x0F]) ^ (W[((60 + 0 + 3) - 8) & 0x0F]) ^ (W[((60 + 0 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((60 + 0 + 4) < 16 ? (W[((60 + 0 + 4)) & 0x0F]) : ((W[((60 + 0 + 4)) & 0x0F]) = ((((W[((60 + 0 + 4)) & 0x0F]) ^ (W[((60 + 0 + 4) - 14) & 0x0F]) ^ (W[((60 + 0 + 4) - 8) & 0x0F]) ^ (W[((60 + 0 + 4) - 3) & 0x0F])) << (1)) | (((W[((60 + 0 + 4)) & 0x0F]) ^ (W[((60 + 0 + 4) - 14) & 0x0F]) ^ (W[((60 + 0 + 4) - 8) & 0x0F]) ^ (W[((60 + 0 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((60 + 5 + 0) < 16 ? (W[((60 + 5 + 0)) & 0x0F]) : ((W[((60 + 5 + 0)) & 0x0F]) = ((((W[((60 + 5 + 0)) & 0x0F]) ^ (W[((60 + 5 + 0) - 14) & 0x0F]) ^ (W[((60 + 5 + 0) - 8) & 0x0F]) ^ (W[((60 + 5 + 0) - 3) & 0x0F])) << (1)) | (((W[((60 + 5 + 0)) & 0x0F]) ^ (W[((60 + 5 + 0) - 14) & 0x0F]) ^ (W[((60 + 5 + 0) - 8) & 0x0F]) ^ (W[((60 + 5 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((60 + 5 + 1) < 16 ? (W[((60 + 5 + 1)) & 0x0F]) : ((W[((60 + 5 + 1)) & 0x0F]) = ((((W[((60 + 5 + 1)) & 0x0F]) ^ (W[((60 + 5 + 1) - 14) & 0x0F]) ^ (W[((60 + 5 + 1) - 8) & 0x0F]) ^ (W[((60 + 5 + 1) - 3) & 0x0F])) << (1)) | (((W[((60 + 5 + 1)) & 0x0F]) ^ (W[((60 + 5 + 1) - 14) & 0x0F]) ^ (W[((60 + 5 + 1) - 8) & 0x0F]) ^ (W[((60 + 5 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((60 + 5 + 2) < 16 ? (W[((60 + 5 + 2)) & 0x0F]) : ((W[((60 + 5 + 2)) & 0x0F]) = ((((W[((60 + 5 + 2)) & 0x0F]) ^ (W[((60 + 5 + 2) - 14) & 0x0F]) ^ (W[((60 + 5 + 2) - 8) & 0x0F]) ^ (W[((60 + 5 + 2) - 3) & 0x0F])) << (1)) | (((W[((60 + 5 + 2)) & 0x0F]) ^ (W[((60 + 5 + 2) - 14) & 0x0F]) ^ (W[((60 + 5 + 2) - 8) & 0x0F]) ^ (W[((60 + 5 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((60 + 5 + 3) < 16 ? (W[((60 + 5 + 3)) & 0x0F]) : ((W[((60 + 5 + 3)) & 0x0F]) = ((((W[((60 + 5 + 3)) & 0x0F]) ^ (W[((60 + 5 + 3) - 14) & 0x0F]) ^ (W[((60 + 5 + 3) - 8) & 0x0F]) ^ (W[((60 + 5 + 3) - 3) & 0x0F])) << (1)) | (((W[((60 + 5 + 3)) & 0x0F]) ^ (W[((60 + 5 + 3) - 14) & 0x0F]) ^ (W[((60 + 5 + 3) - 8) & 0x0F]) ^ (W[((60 + 5 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((60 + 5 + 4) < 16 ? (W[((60 + 5 + 4)) & 0x0F]) : ((W[((60 + 5 + 4)) & 0x0F]) = ((((W[((60 + 5 + 4)) & 0x0F]) ^ (W[((60 + 5 + 4) - 14) & 0x0F]) ^ (W[((60 + 5 + 4) - 8) & 0x0F]) ^ (W[((60 + 5 + 4) - 3) & 0x0F])) << (1)) | (((W[((60 + 5 + 4)) & 0x0F]) ^ (W[((60 + 5 + 4) - 14) & 0x0F]) ^ (W[((60 + 5 + 4) - 8) & 0x0F]) ^ (W[((60 + 5 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((60 + 10 + 0) < 16 ? (W[((60 + 10 + 0)) & 0x0F]) : ((W[((60 + 10 + 0)) & 0x0F]) = ((((W[((60 + 10 + 0)) & 0x0F]) ^ (W[((60 + 10 + 0) - 14) & 0x0F]) ^ (W[((60 + 10 + 0) - 8) & 0x0F]) ^ (W[((60 + 10 + 0) - 3) & 0x0F])) << (1)) | (((W[((60 + 10 + 0)) & 0x0F]) ^ (W[((60 + 10 + 0) - 14) & 0x0F]) ^ (W[((60 + 10 + 0) - 8) & 0x0F]) ^ (W[((60 + 10 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((60 + 10 + 1) < 16 ? (W[((60 + 10 + 1)) & 0x0F]) : ((W[((60 + 10 + 1)) & 0x0F]) = ((((W[((60 + 10 + 1)) & 0x0F]) ^ (W[((60 + 10 + 1) - 14) & 0x0F]) ^ (W[((60 + 10 + 1) - 8) & 0x0F]) ^ (W[((60 + 10 + 1) - 3) & 0x0F])) << (1)) | (((W[((60 + 10 + 1)) & 0x0F]) ^ (W[((60 + 10 + 1) - 14) & 0x0F]) ^ (W[((60 + 10 + 1) - 8) & 0x0F]) ^ (W[((60 + 10 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((60 + 10 + 2) < 16 ? (W[((60 + 10 + 2)) & 0x0F]) : ((W[((60 + 10 + 2)) & 0x0F]) = ((((W[((60 + 10 + 2)) & 0x0F]) ^ (W[((60 + 10 + 2) - 14) & 0x0F]) ^ (W[((60 + 10 + 2) - 8) & 0x0F]) ^ (W[((60 + 10 + 2) - 3) & 0x0F])) << (1)) | (((W[((60 + 10 + 2)) & 0x0F]) ^ (W[((60 + 10 + 2) - 14) & 0x0F]) ^ (W[((60 + 10 + 2) - 8) & 0x0F]) ^ (W[((60 + 10 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((60 + 10 + 3) < 16 ? (W[((60 + 10 + 3)) & 0x0F]) : ((W[((60 + 10 + 3)) & 0x0F]) = ((((W[((60 + 10 + 3)) & 0x0F]) ^ (W[((60 + 10 + 3) - 14) & 0x0F]) ^ (W[((60 + 10 + 3) - 8) & 0x0F]) ^ (W[((60 + 10 + 3) - 3) & 0x0F])) << (1)) | (((W[((60 + 10 + 3)) & 0x0F]) ^ (W[((60 + 10 + 3) - 14) & 0x0F]) ^ (W[((60 + 10 + 3) - 8) & 0x0F]) ^ (W[((60 + 10 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((60 + 10 + 4) < 16 ? (W[((60 + 10 + 4)) & 0x0F]) : ((W[((60 + 10 + 4)) & 0x0F]) = ((((W[((60 + 10 + 4)) & 0x0F]) ^ (W[((60 + 10 + 4) - 14) & 0x0F]) ^ (W[((60 + 10 + 4) - 8) & 0x0F]) ^ (W[((60 + 10 + 4) - 3) & 0x0F])) << (1)) | (((W[((60 + 10 + 4)) & 0x0F]) ^ (W[((60 + 10 + 4) - 14) & 0x0F]) ^ (W[((60 + 10 + 4) - 8) & 0x0F]) ^ (W[((60 + 10 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  E += (((A) << (5)) | ((A) >> (32 - (5)))) + ((B) ^ (C) ^ (D)) + ((60 + 15 + 0) < 16 ? (W[((60 + 15 + 0)) & 0x0F]) : ((W[((60 + 15 + 0)) & 0x0F]) = ((((W[((60 + 15 + 0)) & 0x0F]) ^ (W[((60 + 15 + 0) - 14) & 0x0F]) ^ (W[((60 + 15 + 0) - 8) & 0x0F]) ^ (W[((60 + 15 + 0) - 3) & 0x0F])) << (1)) | (((W[((60 + 15 + 0)) & 0x0F]) ^ (W[((60 + 15 + 0) - 14) & 0x0F]) ^ (W[((60 + 15 + 0) - 8) & 0x0F]) ^ (W[((60 + 15 + 0) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  B = (((B) << (30)) | ((B) >> (32 - (30))));
  ;
  D += (((E) << (5)) | ((E) >> (32 - (5)))) + ((A) ^ (B) ^ (C)) + ((60 + 15 + 1) < 16 ? (W[((60 + 15 + 1)) & 0x0F]) : ((W[((60 + 15 + 1)) & 0x0F]) = ((((W[((60 + 15 + 1)) & 0x0F]) ^ (W[((60 + 15 + 1) - 14) & 0x0F]) ^ (W[((60 + 15 + 1) - 8) & 0x0F]) ^ (W[((60 + 15 + 1) - 3) & 0x0F])) << (1)) | (((W[((60 + 15 + 1)) & 0x0F]) ^ (W[((60 + 15 + 1) - 14) & 0x0F]) ^ (W[((60 + 15 + 1) - 8) & 0x0F]) ^ (W[((60 + 15 + 1) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  A = (((A) << (30)) | ((A) >> (32 - (30))));
  ;
  C += (((D) << (5)) | ((D) >> (32 - (5)))) + ((E) ^ (A) ^ (B)) + ((60 + 15 + 2) < 16 ? (W[((60 + 15 + 2)) & 0x0F]) : ((W[((60 + 15 + 2)) & 0x0F]) = ((((W[((60 + 15 + 2)) & 0x0F]) ^ (W[((60 + 15 + 2) - 14) & 0x0F]) ^ (W[((60 + 15 + 2) - 8) & 0x0F]) ^ (W[((60 + 15 + 2) - 3) & 0x0F])) << (1)) | (((W[((60 + 15 + 2)) & 0x0F]) ^ (W[((60 + 15 + 2) - 14) & 0x0F]) ^ (W[((60 + 15 + 2) - 8) & 0x0F]) ^ (W[((60 + 15 + 2) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  E = (((E) << (30)) | ((E) >> (32 - (30))));
  ;
  B += (((C) << (5)) | ((C) >> (32 - (5)))) + ((D) ^ (E) ^ (A)) + ((60 + 15 + 3) < 16 ? (W[((60 + 15 + 3)) & 0x0F]) : ((W[((60 + 15 + 3)) & 0x0F]) = ((((W[((60 + 15 + 3)) & 0x0F]) ^ (W[((60 + 15 + 3) - 14) & 0x0F]) ^ (W[((60 + 15 + 3) - 8) & 0x0F]) ^ (W[((60 + 15 + 3) - 3) & 0x0F])) << (1)) | (((W[((60 + 15 + 3)) & 0x0F]) ^ (W[((60 + 15 + 3) - 14) & 0x0F]) ^ (W[((60 + 15 + 3) - 8) & 0x0F]) ^ (W[((60 + 15 + 3) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  D = (((D) << (30)) | ((D) >> (32 - (30))));
  ;
  A += (((B) << (5)) | ((B) >> (32 - (5)))) + ((C) ^ (D) ^ (E)) + ((60 + 15 + 4) < 16 ? (W[((60 + 15 + 4)) & 0x0F]) : ((W[((60 + 15 + 4)) & 0x0F]) = ((((W[((60 + 15 + 4)) & 0x0F]) ^ (W[((60 + 15 + 4) - 14) & 0x0F]) ^ (W[((60 + 15 + 4) - 8) & 0x0F]) ^ (W[((60 + 15 + 4) - 3) & 0x0F])) << (1)) | (((W[((60 + 15 + 4)) & 0x0F]) ^ (W[((60 + 15 + 4) - 14) & 0x0F]) ^ (W[((60 + 15 + 4) - 8) & 0x0F]) ^ (W[((60 + 15 + 4) - 3) & 0x0F])) >> (32 - (1)))))) + 0xCA62C1D6;
  C = (((C) << (30)) | ((C) >> (32 - (30))));
  ;
  H[0] += A;
  H[1] += B;
  H[2] += C;
  H[3] += D;
  H[4] += E;
}
```