user: 请将以下的汇编代码转换成C语言代码：

```asm
<sha1_handle>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %rdi,-0x78(%rbp)
  mov    %rsi,-0x80(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x80(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x50(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x5,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x6,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x7,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x8,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x9,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0xa,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0xb,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0xc,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0xd,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0xe,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0xf,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x44(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x10,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x11,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x12,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x13,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x40(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x14,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x15,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x16,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x17,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x18,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x19,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x1a,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x1b,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x1c,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x1d,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x1e,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x1f,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x20,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x21,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x22,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x23,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x24,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x25,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x26,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x27,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x28,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x29,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x2a,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x2b,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x2c,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x2d,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x2e,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x2f,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x30,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x31,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x32,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x33,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x34,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x35,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x36,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x37,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x38,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x39,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x3a,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x3b,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x3c,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x3d,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x3e,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x80(%rbp),%rax
  add    $0x3f,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  or     %edx,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x78(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x68(%rbp)
  mov    -0x78(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    %eax,-0x64(%rbp)
  mov    -0x78(%rbp),%rax
  mov    0x8(%rax),%eax
  mov    %eax,-0x60(%rbp)
  mov    -0x78(%rbp),%rax
  mov    0xc(%rax),%eax
  mov    %eax,-0x5c(%rbp)
  mov    -0x78(%rbp),%rax
  mov    0x10(%rax),%eax
  mov    %eax,-0x58(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  and    -0x64(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x50(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  and    -0x68(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %eax,%edx
  mov    -0x5c(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  and    -0x58(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x48(%rbp),%eax
  add    %eax,%edx
  mov    -0x60(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  and    -0x5c(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %eax,%edx
  mov    -0x64(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  and    -0x60(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x40(%rbp),%eax
  add    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  and    -0x64(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x3c(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  and    -0x68(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %eax,%edx
  mov    -0x5c(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  and    -0x58(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %eax,%edx
  mov    -0x60(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  and    -0x5c(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x30(%rbp),%eax
  add    %eax,%edx
  mov    -0x64(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  and    -0x60(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x2c(%rbp),%eax
  add    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  and    -0x64(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x28(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  and    -0x68(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %eax,%edx
  mov    -0x5c(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  and    -0x58(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x20(%rbp),%eax
  add    %eax,%edx
  mov    -0x60(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  and    -0x5c(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %eax,%edx
  mov    -0x64(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  and    -0x60(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  and    -0x64(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  mov    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  and    -0x68(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x50(%rbp)
  mov    -0x50(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  and    -0x58(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  and    -0x5c(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x50(%rbp),%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  and    -0x60(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x44(%rbp)
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  add    $0x5a827999,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x4c(%rbp),%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x40(%rbp)
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x48(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x34(%rbp),%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x28(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x20(%rbp),%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x50(%rbp)
  mov    -0x50(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x50(%rbp),%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x44(%rbp)
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x4c(%rbp),%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x40(%rbp)
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x48(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  add    $0x6ed9eba1,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  or     -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  or     -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x34(%rbp),%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  or     -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  or     -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  or     -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x28(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  or     -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  or     -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x20(%rbp),%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  or     -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  or     -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x50(%rbp)
  mov    -0x50(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  or     -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  or     -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x50(%rbp),%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  or     -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x44(%rbp)
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x4c(%rbp),%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  or     -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x40(%rbp)
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x48(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  or     -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  or     -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  or     -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  or     -0x64(%rbp),%eax
  and    -0x60(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  or     -0x68(%rbp),%eax
  and    -0x64(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x34(%rbp),%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  or     -0x58(%rbp),%eax
  and    -0x68(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x60(%rbp),%eax
  and    -0x5c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  or     -0x5c(%rbp),%eax
  and    -0x58(%rbp),%eax
  or     %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x70e44324,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x28(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x20(%rbp),%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x50(%rbp)
  mov    -0x50(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x50(%rbp),%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x44(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x44(%rbp)
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x4c(%rbp),%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x40(%rbp)
  mov    -0x40(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x48(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x3c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %eax,%edx
  mov    -0x38(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x34(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %eax,%edx
  mov    -0x30(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %eax,%edx
  mov    -0x2c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x34(%rbp),%edx
  mov    -0x48(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %eax,%edx
  mov    -0x28(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x44(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x24(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x58(%rbp)
  rorl   $0x2,-0x64(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %eax,%edx
  mov    -0x20(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x58(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  xor    -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x5c(%rbp)
  rorl   $0x2,-0x68(%rbp)
  mov    -0x28(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %eax,%edx
  mov    -0x1c(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  xor    -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x60(%rbp)
  rorl   $0x2,-0x58(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x38(%rbp),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x60(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  xor    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x64(%rbp)
  rorl   $0x2,-0x5c(%rbp)
  mov    -0x20(%rbp),%edx
  mov    -0x34(%rbp),%eax
  xor    %eax,%edx
  mov    -0x4c(%rbp),%eax
  xor    %eax,%edx
  mov    -0x14(%rbp),%eax
  xor    %edx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x64(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0x60(%rbp),%eax
  xor    -0x5c(%rbp),%eax
  xor    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  rol    %eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  sub    $0x359d3e2a,%eax
  add    %eax,-0x68(%rbp)
  rorl   $0x2,-0x60(%rbp)
  mov    -0x78(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x78(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x78(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x78(%rbp),%rax
  add    $0x4,%rax
  mov    -0x64(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x78(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%ecx
  mov    -0x78(%rbp),%rax
  add    $0x8,%rax
  mov    -0x60(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x78(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  mov    -0x78(%rbp),%rax
  add    $0xc,%rax
  mov    -0x5c(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x78(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x78(%rbp),%rax
  add    $0x10,%rax
  mov    -0x58(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

assistant: ```c
void sha1_handle(unsigned int *state, const unsigned char data[64]) {
  unsigned int temp, W[16], A, B, C, D, E;
  { (W[0]) = ((unsigned int)(data)[(0)] << 24) | ((unsigned int)(data)[(0) + 1] << 16) | ((unsigned int)(data)[(0) + 2] << 8) | ((unsigned int)(data)[(0) + 3]); };
  { (W[1]) = ((unsigned int)(data)[(4)] << 24) | ((unsigned int)(data)[(4) + 1] << 16) | ((unsigned int)(data)[(4) + 2] << 8) | ((unsigned int)(data)[(4) + 3]); };
  { (W[2]) = ((unsigned int)(data)[(8)] << 24) | ((unsigned int)(data)[(8) + 1] << 16) | ((unsigned int)(data)[(8) + 2] << 8) | ((unsigned int)(data)[(8) + 3]); };
  { (W[3]) = ((unsigned int)(data)[(12)] << 24) | ((unsigned int)(data)[(12) + 1] << 16) | ((unsigned int)(data)[(12) + 2] << 8) | ((unsigned int)(data)[(12) + 3]); };
  { (W[4]) = ((unsigned int)(data)[(16)] << 24) | ((unsigned int)(data)[(16) + 1] << 16) | ((unsigned int)(data)[(16) + 2] << 8) | ((unsigned int)(data)[(16) + 3]); };
  { (W[5]) = ((unsigned int)(data)[(20)] << 24) | ((unsigned int)(data)[(20) + 1] << 16) | ((unsigned int)(data)[(20) + 2] << 8) | ((unsigned int)(data)[(20) + 3]); };
  { (W[6]) = ((unsigned int)(data)[(24)] << 24) | ((unsigned int)(data)[(24) + 1] << 16) | ((unsigned int)(data)[(24) + 2] << 8) | ((unsigned int)(data)[(24) + 3]); };
  { (W[7]) = ((unsigned int)(data)[(28)] << 24) | ((unsigned int)(data)[(28) + 1] << 16) | ((unsigned int)(data)[(28) + 2] << 8) | ((unsigned int)(data)[(28) + 3]); };
  { (W[8]) = ((unsigned int)(data)[(32)] << 24) | ((unsigned int)(data)[(32) + 1] << 16) | ((unsigned int)(data)[(32) + 2] << 8) | ((unsigned int)(data)[(32) + 3]); };
  { (W[9]) = ((unsigned int)(data)[(36)] << 24) | ((unsigned int)(data)[(36) + 1] << 16) | ((unsigned int)(data)[(36) + 2] << 8) | ((unsigned int)(data)[(36) + 3]); };
  { (W[10]) = ((unsigned int)(data)[(40)] << 24) | ((unsigned int)(data)[(40) + 1] << 16) | ((unsigned int)(data)[(40) + 2] << 8) | ((unsigned int)(data)[(40) + 3]); };
  { (W[11]) = ((unsigned int)(data)[(44)] << 24) | ((unsigned int)(data)[(44) + 1] << 16) | ((unsigned int)(data)[(44) + 2] << 8) | ((unsigned int)(data)[(44) + 3]); };
  { (W[12]) = ((unsigned int)(data)[(48)] << 24) | ((unsigned int)(data)[(48) + 1] << 16) | ((unsigned int)(data)[(48) + 2] << 8) | ((unsigned int)(data)[(48) + 3]); };
  { (W[13]) = ((unsigned int)(data)[(52)] << 24) | ((unsigned int)(data)[(52) + 1] << 16) | ((unsigned int)(data)[(52) + 2] << 8) | ((unsigned int)(data)[(52) + 3]); };
  { (W[14]) = ((unsigned int)(data)[(56)] << 24) | ((unsigned int)(data)[(56) + 1] << 16) | ((unsigned int)(data)[(56) + 2] << 8) | ((unsigned int)(data)[(56) + 3]); };
  { (W[15]) = ((unsigned int)(data)[(60)] << 24) | ((unsigned int)(data)[(60) + 1] << 16) | ((unsigned int)(data)[(60) + 2] << 8) | ((unsigned int)(data)[(60) + 3]); };
  A = state[0];
  B = state[1];
  C = state[2];
  D = state[3];
  E = state[4];
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (D ^ (B & (C ^ D))) + 0x5A827999 + W[0];
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (C ^ (A & (B ^ C))) + 0x5A827999 + W[1];
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (B ^ (E & (A ^ B))) + 0x5A827999 + W[2];
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (A ^ (D & (E ^ A))) + 0x5A827999 + W[3];
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (E ^ (C & (D ^ E))) + 0x5A827999 + W[4];
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (D ^ (B & (C ^ D))) + 0x5A827999 + W[5];
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (C ^ (A & (B ^ C))) + 0x5A827999 + W[6];
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (B ^ (E & (A ^ B))) + 0x5A827999 + W[7];
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (A ^ (D & (E ^ A))) + 0x5A827999 + W[8];
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (E ^ (C & (D ^ E))) + 0x5A827999 + W[9];
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (D ^ (B & (C ^ D))) + 0x5A827999 + W[10];
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (C ^ (A & (B ^ C))) + 0x5A827999 + W[11];
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (B ^ (E & (A ^ B))) + 0x5A827999 + W[12];
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (A ^ (D & (E ^ A))) + 0x5A827999 + W[13];
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (E ^ (C & (D ^ E))) + 0x5A827999 + W[14];
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (D ^ (B & (C ^ D))) + 0x5A827999 + W[15];
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (C ^ (A & (B ^ C))) + 0x5A827999 + (temp = W[(16 - 3) & 0x0F] ^ W[(16 - 8) & 0x0F] ^ W[(16 - 14) & 0x0F] ^ W[16 & 0x0F], (W[16 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (B ^ (E & (A ^ B))) + 0x5A827999 + (temp = W[(17 - 3) & 0x0F] ^ W[(17 - 8) & 0x0F] ^ W[(17 - 14) & 0x0F] ^ W[17 & 0x0F], (W[17 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (A ^ (D & (E ^ A))) + 0x5A827999 + (temp = W[(18 - 3) & 0x0F] ^ W[(18 - 8) & 0x0F] ^ W[(18 - 14) & 0x0F] ^ W[18 & 0x0F], (W[18 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (E ^ (C & (D ^ E))) + 0x5A827999 + (temp = W[(19 - 3) & 0x0F] ^ W[(19 - 8) & 0x0F] ^ W[(19 - 14) & 0x0F] ^ W[19 & 0x0F], (W[19 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0x6ED9EBA1 + (temp = W[(20 - 3) & 0x0F] ^ W[(20 - 8) & 0x0F] ^ W[(20 - 14) & 0x0F] ^ W[20 & 0x0F], (W[20 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0x6ED9EBA1 + (temp = W[(21 - 3) & 0x0F] ^ W[(21 - 8) & 0x0F] ^ W[(21 - 14) & 0x0F] ^ W[21 & 0x0F], (W[21 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0x6ED9EBA1 + (temp = W[(22 - 3) & 0x0F] ^ W[(22 - 8) & 0x0F] ^ W[(22 - 14) & 0x0F] ^ W[22 & 0x0F], (W[22 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0x6ED9EBA1 + (temp = W[(23 - 3) & 0x0F] ^ W[(23 - 8) & 0x0F] ^ W[(23 - 14) & 0x0F] ^ W[23 & 0x0F], (W[23 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0x6ED9EBA1 + (temp = W[(24 - 3) & 0x0F] ^ W[(24 - 8) & 0x0F] ^ W[(24 - 14) & 0x0F] ^ W[24 & 0x0F], (W[24 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0x6ED9EBA1 + (temp = W[(25 - 3) & 0x0F] ^ W[(25 - 8) & 0x0F] ^ W[(25 - 14) & 0x0F] ^ W[25 & 0x0F], (W[25 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0x6ED9EBA1 + (temp = W[(26 - 3) & 0x0F] ^ W[(26 - 8) & 0x0F] ^ W[(26 - 14) & 0x0F] ^ W[26 & 0x0F], (W[26 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0x6ED9EBA1 + (temp = W[(27 - 3) & 0x0F] ^ W[(27 - 8) & 0x0F] ^ W[(27 - 14) & 0x0F] ^ W[27 & 0x0F], (W[27 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0x6ED9EBA1 + (temp = W[(28 - 3) & 0x0F] ^ W[(28 - 8) & 0x0F] ^ W[(28 - 14) & 0x0F] ^ W[28 & 0x0F], (W[28 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0x6ED9EBA1 + (temp = W[(29 - 3) & 0x0F] ^ W[(29 - 8) & 0x0F] ^ W[(29 - 14) & 0x0F] ^ W[29 & 0x0F], (W[29 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0x6ED9EBA1 + (temp = W[(30 - 3) & 0x0F] ^ W[(30 - 8) & 0x0F] ^ W[(30 - 14) & 0x0F] ^ W[30 & 0x0F], (W[30 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0x6ED9EBA1 + (temp = W[(31 - 3) & 0x0F] ^ W[(31 - 8) & 0x0F] ^ W[(31 - 14) & 0x0F] ^ W[31 & 0x0F], (W[31 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0x6ED9EBA1 + (temp = W[(32 - 3) & 0x0F] ^ W[(32 - 8) & 0x0F] ^ W[(32 - 14) & 0x0F] ^ W[32 & 0x0F], (W[32 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0x6ED9EBA1 + (temp = W[(33 - 3) & 0x0F] ^ W[(33 - 8) & 0x0F] ^ W[(33 - 14) & 0x0F] ^ W[33 & 0x0F], (W[33 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0x6ED9EBA1 + (temp = W[(34 - 3) & 0x0F] ^ W[(34 - 8) & 0x0F] ^ W[(34 - 14) & 0x0F] ^ W[34 & 0x0F], (W[34 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0x6ED9EBA1 + (temp = W[(35 - 3) & 0x0F] ^ W[(35 - 8) & 0x0F] ^ W[(35 - 14) & 0x0F] ^ W[35 & 0x0F], (W[35 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0x6ED9EBA1 + (temp = W[(36 - 3) & 0x0F] ^ W[(36 - 8) & 0x0F] ^ W[(36 - 14) & 0x0F] ^ W[36 & 0x0F], (W[36 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0x6ED9EBA1 + (temp = W[(37 - 3) & 0x0F] ^ W[(37 - 8) & 0x0F] ^ W[(37 - 14) & 0x0F] ^ W[37 & 0x0F], (W[37 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0x6ED9EBA1 + (temp = W[(38 - 3) & 0x0F] ^ W[(38 - 8) & 0x0F] ^ W[(38 - 14) & 0x0F] ^ W[38 & 0x0F], (W[38 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0x6ED9EBA1 + (temp = W[(39 - 3) & 0x0F] ^ W[(39 - 8) & 0x0F] ^ W[(39 - 14) & 0x0F] ^ W[39 & 0x0F], (W[39 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + ((B & C) | (D & (B | C))) + 0x8F1BBCDC + (temp = W[(40 - 3) & 0x0F] ^ W[(40 - 8) & 0x0F] ^ W[(40 - 14) & 0x0F] ^ W[40 & 0x0F], (W[40 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + ((A & B) | (C & (A | B))) + 0x8F1BBCDC + (temp = W[(41 - 3) & 0x0F] ^ W[(41 - 8) & 0x0F] ^ W[(41 - 14) & 0x0F] ^ W[41 & 0x0F], (W[41 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + ((E & A) | (B & (E | A))) + 0x8F1BBCDC + (temp = W[(42 - 3) & 0x0F] ^ W[(42 - 8) & 0x0F] ^ W[(42 - 14) & 0x0F] ^ W[42 & 0x0F], (W[42 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + ((D & E) | (A & (D | E))) + 0x8F1BBCDC + (temp = W[(43 - 3) & 0x0F] ^ W[(43 - 8) & 0x0F] ^ W[(43 - 14) & 0x0F] ^ W[43 & 0x0F], (W[43 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + ((C & D) | (E & (C | D))) + 0x8F1BBCDC + (temp = W[(44 - 3) & 0x0F] ^ W[(44 - 8) & 0x0F] ^ W[(44 - 14) & 0x0F] ^ W[44 & 0x0F], (W[44 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + ((B & C) | (D & (B | C))) + 0x8F1BBCDC + (temp = W[(45 - 3) & 0x0F] ^ W[(45 - 8) & 0x0F] ^ W[(45 - 14) & 0x0F] ^ W[45 & 0x0F], (W[45 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + ((A & B) | (C & (A | B))) + 0x8F1BBCDC + (temp = W[(46 - 3) & 0x0F] ^ W[(46 - 8) & 0x0F] ^ W[(46 - 14) & 0x0F] ^ W[46 & 0x0F], (W[46 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + ((E & A) | (B & (E | A))) + 0x8F1BBCDC + (temp = W[(47 - 3) & 0x0F] ^ W[(47 - 8) & 0x0F] ^ W[(47 - 14) & 0x0F] ^ W[47 & 0x0F], (W[47 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + ((D & E) | (A & (D | E))) + 0x8F1BBCDC + (temp = W[(48 - 3) & 0x0F] ^ W[(48 - 8) & 0x0F] ^ W[(48 - 14) & 0x0F] ^ W[48 & 0x0F], (W[48 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + ((C & D) | (E & (C | D))) + 0x8F1BBCDC + (temp = W[(49 - 3) & 0x0F] ^ W[(49 - 8) & 0x0F] ^ W[(49 - 14) & 0x0F] ^ W[49 & 0x0F], (W[49 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + ((B & C) | (D & (B | C))) + 0x8F1BBCDC + (temp = W[(50 - 3) & 0x0F] ^ W[(50 - 8) & 0x0F] ^ W[(50 - 14) & 0x0F] ^ W[50 & 0x0F], (W[50 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + ((A & B) | (C & (A | B))) + 0x8F1BBCDC + (temp = W[(51 - 3) & 0x0F] ^ W[(51 - 8) & 0x0F] ^ W[(51 - 14) & 0x0F] ^ W[51 & 0x0F], (W[51 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + ((E & A) | (B & (E | A))) + 0x8F1BBCDC + (temp = W[(52 - 3) & 0x0F] ^ W[(52 - 8) & 0x0F] ^ W[(52 - 14) & 0x0F] ^ W[52 & 0x0F], (W[52 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + ((D & E) | (A & (D | E))) + 0x8F1BBCDC + (temp = W[(53 - 3) & 0x0F] ^ W[(53 - 8) & 0x0F] ^ W[(53 - 14) & 0x0F] ^ W[53 & 0x0F], (W[53 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + ((C & D) | (E & (C | D))) + 0x8F1BBCDC + (temp = W[(54 - 3) & 0x0F] ^ W[(54 - 8) & 0x0F] ^ W[(54 - 14) & 0x0F] ^ W[54 & 0x0F], (W[54 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + ((B & C) | (D & (B | C))) + 0x8F1BBCDC + (temp = W[(55 - 3) & 0x0F] ^ W[(55 - 8) & 0x0F] ^ W[(55 - 14) & 0x0F] ^ W[55 & 0x0F], (W[55 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + ((A & B) | (C & (A | B))) + 0x8F1BBCDC + (temp = W[(56 - 3) & 0x0F] ^ W[(56 - 8) & 0x0F] ^ W[(56 - 14) & 0x0F] ^ W[56 & 0x0F], (W[56 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + ((E & A) | (B & (E | A))) + 0x8F1BBCDC + (temp = W[(57 - 3) & 0x0F] ^ W[(57 - 8) & 0x0F] ^ W[(57 - 14) & 0x0F] ^ W[57 & 0x0F], (W[57 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + ((D & E) | (A & (D | E))) + 0x8F1BBCDC + (temp = W[(58 - 3) & 0x0F] ^ W[(58 - 8) & 0x0F] ^ W[(58 - 14) & 0x0F] ^ W[58 & 0x0F], (W[58 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + ((C & D) | (E & (C | D))) + 0x8F1BBCDC + (temp = W[(59 - 3) & 0x0F] ^ W[(59 - 8) & 0x0F] ^ W[(59 - 14) & 0x0F] ^ W[59 & 0x0F], (W[59 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0xCA62C1D6 + (temp = W[(60 - 3) & 0x0F] ^ W[(60 - 8) & 0x0F] ^ W[(60 - 14) & 0x0F] ^ W[60 & 0x0F], (W[60 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0xCA62C1D6 + (temp = W[(61 - 3) & 0x0F] ^ W[(61 - 8) & 0x0F] ^ W[(61 - 14) & 0x0F] ^ W[61 & 0x0F], (W[61 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0xCA62C1D6 + (temp = W[(62 - 3) & 0x0F] ^ W[(62 - 8) & 0x0F] ^ W[(62 - 14) & 0x0F] ^ W[62 & 0x0F], (W[62 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0xCA62C1D6 + (temp = W[(63 - 3) & 0x0F] ^ W[(63 - 8) & 0x0F] ^ W[(63 - 14) & 0x0F] ^ W[63 & 0x0F], (W[63 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0xCA62C1D6 + (temp = W[(64 - 3) & 0x0F] ^ W[(64 - 8) & 0x0F] ^ W[(64 - 14) & 0x0F] ^ W[64 & 0x0F], (W[64 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0xCA62C1D6 + (temp = W[(65 - 3) & 0x0F] ^ W[(65 - 8) & 0x0F] ^ W[(65 - 14) & 0x0F] ^ W[65 & 0x0F], (W[65 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0xCA62C1D6 + (temp = W[(66 - 3) & 0x0F] ^ W[(66 - 8) & 0x0F] ^ W[(66 - 14) & 0x0F] ^ W[66 & 0x0F], (W[66 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0xCA62C1D6 + (temp = W[(67 - 3) & 0x0F] ^ W[(67 - 8) & 0x0F] ^ W[(67 - 14) & 0x0F] ^ W[67 & 0x0F], (W[67 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0xCA62C1D6 + (temp = W[(68 - 3) & 0x0F] ^ W[(68 - 8) & 0x0F] ^ W[(68 - 14) & 0x0F] ^ W[68 & 0x0F], (W[68 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0xCA62C1D6 + (temp = W[(69 - 3) & 0x0F] ^ W[(69 - 8) & 0x0F] ^ W[(69 - 14) & 0x0F] ^ W[69 & 0x0F], (W[69 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0xCA62C1D6 + (temp = W[(70 - 3) & 0x0F] ^ W[(70 - 8) & 0x0F] ^ W[(70 - 14) & 0x0F] ^ W[70 & 0x0F], (W[70 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0xCA62C1D6 + (temp = W[(71 - 3) & 0x0F] ^ W[(71 - 8) & 0x0F] ^ W[(71 - 14) & 0x0F] ^ W[71 & 0x0F], (W[71 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0xCA62C1D6 + (temp = W[(72 - 3) & 0x0F] ^ W[(72 - 8) & 0x0F] ^ W[(72 - 14) & 0x0F] ^ W[72 & 0x0F], (W[72 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0xCA62C1D6 + (temp = W[(73 - 3) & 0x0F] ^ W[(73 - 8) & 0x0F] ^ W[(73 - 14) & 0x0F] ^ W[73 & 0x0F], (W[73 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0xCA62C1D6 + (temp = W[(74 - 3) & 0x0F] ^ W[(74 - 8) & 0x0F] ^ W[(74 - 14) & 0x0F] ^ W[74 & 0x0F], (W[74 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    E += ((A << 5) | ((A & 0xFFFFFFFF) >> (32 - 5))) + (B ^ C ^ D) + 0xCA62C1D6 + (temp = W[(75 - 3) & 0x0F] ^ W[(75 - 8) & 0x0F] ^ W[(75 - 14) & 0x0F] ^ W[75 & 0x0F], (W[75 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    B = ((B << 30) | ((B & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    D += ((E << 5) | ((E & 0xFFFFFFFF) >> (32 - 5))) + (A ^ B ^ C) + 0xCA62C1D6 + (temp = W[(76 - 3) & 0x0F] ^ W[(76 - 8) & 0x0F] ^ W[(76 - 14) & 0x0F] ^ W[76 & 0x0F], (W[76 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    A = ((A << 30) | ((A & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    C += ((D << 5) | ((D & 0xFFFFFFFF) >> (32 - 5))) + (E ^ A ^ B) + 0xCA62C1D6 + (temp = W[(77 - 3) & 0x0F] ^ W[(77 - 8) & 0x0F] ^ W[(77 - 14) & 0x0F] ^ W[77 & 0x0F], (W[77 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    E = ((E << 30) | ((E & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    B += ((C << 5) | ((C & 0xFFFFFFFF) >> (32 - 5))) + (D ^ E ^ A) + 0xCA62C1D6 + (temp = W[(78 - 3) & 0x0F] ^ W[(78 - 8) & 0x0F] ^ W[(78 - 14) & 0x0F] ^ W[78 & 0x0F], (W[78 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    D = ((D << 30) | ((D & 0xFFFFFFFF) >> (32 - 30)));
  };
  {
    A += ((B << 5) | ((B & 0xFFFFFFFF) >> (32 - 5))) + (C ^ D ^ E) + 0xCA62C1D6 + (temp = W[(79 - 3) & 0x0F] ^ W[(79 - 8) & 0x0F] ^ W[(79 - 14) & 0x0F] ^ W[79 & 0x0F], (W[79 & 0x0F] = ((temp << 1) | ((temp & 0xFFFFFFFF) >> (32 - 1)))));
    C = ((C << 30) | ((C & 0xFFFFFFFF) >> (32 - 30)));
  };
  state[0] += A;
  state[1] += B;
  state[2] += C;
  state[3] += D;
  state[4] += E;
}
```