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

```asm
<MD5_transform>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%r14
  mov    -0x28(%rbp),%rax
  mov    0x8(%rax),%r13
  mov    -0x28(%rbp),%rax
  mov    0x10(%rax),%r12
  mov    -0x28(%rbp),%rax
  mov    0x18(%rax),%rbx
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r13,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xd76aa478,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x7,%rdx
  mov    %r14,%rax
  shr    $0x19,%rax
  and    $0x7f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r13,%rax
  xor    %r12,%rax
  and    %r14,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xe8c7b756,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xc,%rdx
  mov    %rbx,%rax
  shr    $0x14,%rax
  and    $0xfff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r14,%rax
  xor    %r13,%rax
  and    %rbx,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r12,%rax
  lea    0x242070db(%rax),%r12
  mov    %r12,%rdx
  shl    $0x11,%rdx
  mov    %r12,%rax
  shr    $0xf,%rax
  and    $0x1ffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r12,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xc1bdceee,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x16,%rdx
  mov    %r13,%rax
  shr    $0xa,%rax
  and    $0x3fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r13,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xf57c0faf,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x7,%rdx
  mov    %r14,%rax
  shr    $0x19,%rax
  and    $0x7f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r13,%rax
  xor    %r12,%rax
  and    %r14,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %rbx,%rax
  lea    0x4787c62a(%rax),%rbx
  mov    %rbx,%rdx
  shl    $0xc,%rdx
  mov    %rbx,%rax
  shr    $0x14,%rax
  and    $0xfff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r14,%rax
  xor    %r13,%rax
  and    %rbx,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xa8304613,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0x11,%rdx
  mov    %r12,%rax
  shr    $0xf,%rax
  and    $0x1ffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r12,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xfd469501,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x16,%rdx
  mov    %r13,%rax
  shr    $0xa,%rax
  and    $0x3fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r13,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r14,%rax
  lea    0x698098d8(%rax),%r14
  mov    %r14,%rdx
  shl    $0x7,%rdx
  mov    %r14,%rax
  shr    $0x19,%rax
  and    $0x7f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r13,%rax
  xor    %r12,%rax
  and    %r14,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0x8b44f7af,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xc,%rdx
  mov    %rbx,%rax
  shr    $0x14,%rax
  and    $0xfff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r14,%rax
  xor    %r13,%rax
  and    %rbx,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x50,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xffff5bb1,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0x11,%rdx
  mov    %r12,%rax
  shr    $0xf,%rax
  and    $0x1ffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r12,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x58,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0x895cd7be,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x16,%rdx
  mov    %r13,%rax
  shr    $0xa,%rax
  and    $0x3fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r13,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x60,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r14,%rax
  lea    0x6b901122(%rax),%r14
  mov    %r14,%rdx
  shl    $0x7,%rdx
  mov    %r14,%rax
  shr    $0x19,%rax
  and    $0x7f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r13,%rax
  xor    %r12,%rax
  and    %r14,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x68,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xfd987193,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xc,%rdx
  mov    %rbx,%rax
  shr    $0x14,%rax
  and    $0xfff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r14,%rax
  xor    %r13,%rax
  and    %rbx,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xa679438e,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0x11,%rdx
  mov    %r12,%rax
  shr    $0xf,%rax
  and    $0x1ffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r12,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r13,%rax
  lea    0x49b40821(%rax),%r13
  mov    %r13,%rdx
  shl    $0x16,%rdx
  mov    %r13,%rax
  shr    $0xa,%rax
  and    $0x3fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  and    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xf61e2562,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x5,%rdx
  mov    %r14,%rax
  shr    $0x1b,%rax
  and    $0x1f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  and    %r12,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xc040b340,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0x9,%rdx
  mov    %rbx,%rax
  shr    $0x17,%rax
  and    $0x1ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x58,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r12,%rax
  lea    0x265e5a51(%rax),%r12
  mov    %r12,%rdx
  shl    $0xe,%rdx
  mov    %r12,%rax
  shr    $0x12,%rax
  and    $0x3fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r14,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xe9b6c7aa,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x14,%rdx
  mov    %r13,%rax
  shr    $0xc,%rax
  and    $0xfffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  and    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xd62f105d,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x5,%rdx
  mov    %r14,%rax
  shr    $0x1b,%rax
  and    $0x1f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  and    %r12,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x50,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %rbx,%rax
  lea    0x2441453(%rax),%rbx
  mov    %rbx,%rdx
  shl    $0x9,%rdx
  mov    %rbx,%rax
  shr    $0x17,%rax
  and    $0x1ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xd8a1e681,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0xe,%rdx
  mov    %r12,%rax
  shr    $0x12,%rax
  and    $0x3fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r14,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xe7d3fbc8,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x14,%rdx
  mov    %r13,%rax
  shr    $0xc,%rax
  and    $0xfffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  and    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r14,%rax
  lea    0x21e1cde6(%rax),%r14
  mov    %r14,%rdx
  shl    $0x5,%rdx
  mov    %r14,%rax
  shr    $0x1b,%rax
  and    $0x1f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  and    %r12,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xc33707d6,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0x9,%rdx
  mov    %rbx,%rax
  shr    $0x17,%rax
  and    $0x1ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xf4d50d87,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0xe,%rdx
  mov    %r12,%rax
  shr    $0x12,%rax
  and    $0x3fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r14,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r13,%rax
  lea    0x455a14ed(%rax),%r13
  mov    %r13,%rdx
  shl    $0x14,%rdx
  mov    %r13,%rax
  shr    $0xc,%rax
  and    $0xfffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  and    %rbx,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x68,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xa9e3e905,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x5,%rdx
  mov    %r14,%rax
  shr    $0x1b,%rax
  and    $0x1f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  and    %r12,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xfcefa3f8,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0x9,%rdx
  mov    %rbx,%rax
  shr    $0x17,%rax
  and    $0x1ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  and    %r13,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r12,%rax
  lea    0x676f02d9(%rax),%r12
  mov    %r12,%rdx
  shl    $0xe,%rdx
  mov    %r12,%rax
  shr    $0x12,%rax
  and    $0x3fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  and    %r14,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x60,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0x8d2a4c8a,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x14,%rdx
  mov    %r13,%rax
  shr    $0xc,%rax
  and    $0xfffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xfffa3942,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x4,%rdx
  mov    %r14,%rax
  shr    $0x1c,%rax
  and    $0xf,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0x8771f681,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xb,%rdx
  mov    %rbx,%rax
  shr    $0x15,%rax
  and    $0x7ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x58,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r12,%rax
  lea    0x6d9d6122(%rax),%r12
  mov    %r12,%rdx
  shl    $0x10,%rdx
  mov    %r12,%rax
  shr    $0x10,%rax
  movzwl %ax,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xfde5380c,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x17,%rdx
  mov    %r13,%rax
  shr    $0x9,%rax
  and    $0x7fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xa4beea44,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x4,%rdx
  mov    %r14,%rax
  shr    $0x1c,%rax
  and    $0xf,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %rbx,%rax
  lea    0x4bdecfa9(%rax),%rbx
  mov    %rbx,%rdx
  shl    $0xb,%rdx
  mov    %rbx,%rax
  shr    $0x15,%rax
  and    $0x7ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xf6bb4b60,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0x10,%rdx
  mov    %r12,%rax
  shr    $0x10,%rax
  movzwl %ax,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x50,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xbebfbc70,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x17,%rdx
  mov    %r13,%rax
  shr    $0x9,%rax
  and    $0x7fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x68,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r14,%rax
  lea    0x289b7ec6(%rax),%r14
  mov    %r14,%rdx
  shl    $0x4,%rdx
  mov    %r14,%rax
  shr    $0x1c,%rax
  and    $0xf,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xeaa127fa,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xb,%rdx
  mov    %rbx,%rax
  shr    $0x15,%rax
  and    $0x7ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xd4ef3085,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0x10,%rdx
  mov    %r12,%rax
  shr    $0x10,%rax
  movzwl %ax,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r13,%rax
  lea    0x4881d05(%rax),%r13
  mov    %r13,%rdx
  shl    $0x17,%rdx
  mov    %r13,%rax
  shr    $0x9,%rax
  and    $0x7fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %r13,%rax
  xor    %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xd9d4d039,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x4,%rdx
  mov    %r14,%rax
  shr    $0x1c,%rax
  and    $0xf,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r14,%rax
  xor    %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x60,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xe6db99e5,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xb,%rdx
  mov    %rbx,%rax
  shr    $0x15,%rax
  and    $0x7ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %rbx,%rax
  xor    %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r12,%rax
  lea    0x1fa27cf8(%rax),%r12
  mov    %r12,%rdx
  shl    $0x10,%rdx
  mov    %r12,%rax
  shr    $0x10,%rax
  movzwl %ax,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r12,%rax
  xor    %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xc4ac5665,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x17,%rdx
  mov    %r13,%rax
  shr    $0x9,%rax
  and    $0x7fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %rbx,%rax
  not    %rax
  or     %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xf4292244,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x6,%rdx
  mov    %r14,%rax
  shr    $0x1a,%rax
  and    $0x3f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r12,%rax
  not    %rax
  or     %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %rbx,%rax
  lea    0x432aff97(%rax),%rbx
  mov    %rbx,%rdx
  shl    $0xa,%rdx
  mov    %rbx,%rax
  shr    $0x16,%rax
  and    $0x3ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r13,%rax
  not    %rax
  or     %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xab9423a7,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0xf,%rdx
  mov    %r12,%rax
  shr    $0x11,%rax
  and    $0x7fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r14,%rax
  not    %rax
  or     %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xfc93a039,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x15,%rdx
  mov    %r13,%rax
  shr    $0xb,%rax
  and    $0x1fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %rbx,%rax
  not    %rax
  or     %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x60,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r14,%rax
  lea    0x655b59c3(%rax),%r14
  mov    %r14,%rdx
  shl    $0x6,%rdx
  mov    %r14,%rax
  shr    $0x1a,%rax
  and    $0x3f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r12,%rax
  not    %rax
  or     %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0x8f0ccc92,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xa,%rdx
  mov    %rbx,%rax
  shr    $0x16,%rax
  and    $0x3ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r13,%rax
  not    %rax
  or     %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x50,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xffeff47d,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0xf,%rdx
  mov    %r12,%rax
  shr    $0x11,%rax
  and    $0x7fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r14,%rax
  not    %rax
  or     %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0x85845dd1,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x15,%rdx
  mov    %r13,%rax
  shr    $0xb,%rax
  and    $0x1fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %rbx,%rax
  not    %rax
  or     %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r14,%rax
  lea    0x6fa87e4f(%rax),%r14
  mov    %r14,%rdx
  shl    $0x6,%rdx
  mov    %r14,%rax
  shr    $0x1a,%rax
  and    $0x3f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r12,%rax
  not    %rax
  or     %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xfe2ce6e0,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xa,%rdx
  mov    %rbx,%rax
  shr    $0x16,%rax
  and    $0x3ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r13,%rax
  not    %rax
  or     %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r12,%rax,1),%rdx
  mov    $0xa3014314,%eax
  lea    (%rdx,%rax,1),%r12
  mov    %r12,%rdx
  shl    $0xf,%rdx
  mov    %r12,%rax
  shr    $0x11,%rax
  and    $0x7fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r14,%rax
  not    %rax
  or     %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x68,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r13,%rax
  lea    0x4e0811a1(%rax),%r13
  mov    %r13,%rdx
  shl    $0x15,%rdx
  mov    %r13,%rax
  shr    $0xb,%rax
  and    $0x1fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    %rbx,%rax
  not    %rax
  or     %r13,%rax
  xor    %r12,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%r14,%rax,1),%rdx
  mov    $0xf7537e82,%eax
  lea    (%rdx,%rax,1),%r14
  mov    %r14,%rdx
  shl    $0x6,%rdx
  mov    %r14,%rax
  shr    $0x1a,%rax
  and    $0x3f,%eax
  or     %rax,%rdx
  mov    %rdx,%r14
  add    %r13,%r14
  mov    %r12,%rax
  not    %rax
  or     %r14,%rax
  xor    %r13,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x58,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    (%rbx,%rax,1),%rdx
  mov    $0xbd3af235,%eax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdx
  shl    $0xa,%rdx
  mov    %rbx,%rax
  shr    $0x16,%rax
  and    $0x3ff,%eax
  mov    %rdx,%rbx
  or     %rax,%rbx
  add    %r14,%rbx
  mov    %r13,%rax
  not    %rax
  or     %rbx,%rax
  xor    %r14,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  add    %r12,%rax
  lea    0x2ad7d2bb(%rax),%r12
  mov    %r12,%rdx
  shl    $0xf,%rdx
  mov    %r12,%rax
  shr    $0x11,%rax
  and    $0x7fff,%eax
  or     %rax,%rdx
  mov    %rdx,%r12
  add    %rbx,%r12
  mov    %r14,%rax
  not    %rax
  or     %r12,%rax
  xor    %rbx,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%rax
  add    %rdx,%rax
  lea    0x0(%r13,%rax,1),%rdx
  mov    $0xeb86d391,%eax
  lea    (%rdx,%rax,1),%r13
  mov    %r13,%rdx
  shl    $0x15,%rdx
  mov    %r13,%rax
  shr    $0xb,%rax
  and    $0x1fffff,%eax
  or     %rax,%rdx
  mov    %rdx,%r13
  add    %r12,%r13
  mov    -0x28(%rbp),%rax
  mov    (%rax),%rax
  lea    (%r14,%rax,1),%rdx
  mov    -0x28(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  add    %r13,%rdx
  mov    %rdx,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    $0x10,%rax
  add    %r12,%rdx
  mov    %rdx,(%rax)
  mov    -0x28(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    $0x18,%rax
  add    %rbx,%rdx
  mov    %rdx,(%rax)
  nop
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %rbp
  ret
```

assistant: ```c
void MD5_transform(unsigned long buf[4], const unsigned long in[16]) {
  register unsigned long a, b, c, d;
  a = buf[0];
  b = buf[1];
  c = buf[2];
  d = buf[3];
  {
    a += (d ^ (b & (c ^ d))) + in[0] + 0xd76aa478UL;
    a = a << 7 | (a & 0xffffffffUL) >> (32 - 7);
    a += b;
  };
  {
    d += (c ^ (a & (b ^ c))) + in[1] + 0xe8c7b756UL;
    d = d << 12 | (d & 0xffffffffUL) >> (32 - 12);
    d += a;
  };
  {
    c += (b ^ (d & (a ^ b))) + in[2] + 0x242070dbUL;
    c = c << 17 | (c & 0xffffffffUL) >> (32 - 17);
    c += d;
  };
  {
    b += (a ^ (c & (d ^ a))) + in[3] + 0xc1bdceeeUL;
    b = b << 22 | (b & 0xffffffffUL) >> (32 - 22);
    b += c;
  };
  {
    a += (d ^ (b & (c ^ d))) + in[4] + 0xf57c0fafUL;
    a = a << 7 | (a & 0xffffffffUL) >> (32 - 7);
    a += b;
  };
  {
    d += (c ^ (a & (b ^ c))) + in[5] + 0x4787c62aUL;
    d = d << 12 | (d & 0xffffffffUL) >> (32 - 12);
    d += a;
  };
  {
    c += (b ^ (d & (a ^ b))) + in[6] + 0xa8304613UL;
    c = c << 17 | (c & 0xffffffffUL) >> (32 - 17);
    c += d;
  };
  {
    b += (a ^ (c & (d ^ a))) + in[7] + 0xfd469501UL;
    b = b << 22 | (b & 0xffffffffUL) >> (32 - 22);
    b += c;
  };
  {
    a += (d ^ (b & (c ^ d))) + in[8] + 0x698098d8UL;
    a = a << 7 | (a & 0xffffffffUL) >> (32 - 7);
    a += b;
  };
  {
    d += (c ^ (a & (b ^ c))) + in[9] + 0x8b44f7afUL;
    d = d << 12 | (d & 0xffffffffUL) >> (32 - 12);
    d += a;
  };
  {
    c += (b ^ (d & (a ^ b))) + in[10] + 0xffff5bb1UL;
    c = c << 17 | (c & 0xffffffffUL) >> (32 - 17);
    c += d;
  };
  {
    b += (a ^ (c & (d ^ a))) + in[11] + 0x895cd7beUL;
    b = b << 22 | (b & 0xffffffffUL) >> (32 - 22);
    b += c;
  };
  {
    a += (d ^ (b & (c ^ d))) + in[12] + 0x6b901122UL;
    a = a << 7 | (a & 0xffffffffUL) >> (32 - 7);
    a += b;
  };
  {
    d += (c ^ (a & (b ^ c))) + in[13] + 0xfd987193UL;
    d = d << 12 | (d & 0xffffffffUL) >> (32 - 12);
    d += a;
  };
  {
    c += (b ^ (d & (a ^ b))) + in[14] + 0xa679438eUL;
    c = c << 17 | (c & 0xffffffffUL) >> (32 - 17);
    c += d;
  };
  {
    b += (a ^ (c & (d ^ a))) + in[15] + 0x49b40821UL;
    b = b << 22 | (b & 0xffffffffUL) >> (32 - 22);
    b += c;
  };
  {
    a += (c ^ (d & (b ^ c))) + in[1] + 0xf61e2562UL;
    a = a << 5 | (a & 0xffffffffUL) >> (32 - 5);
    a += b;
  };
  {
    d += (b ^ (c & (a ^ b))) + in[6] + 0xc040b340UL;
    d = d << 9 | (d & 0xffffffffUL) >> (32 - 9);
    d += a;
  };
  {
    c += (a ^ (b & (d ^ a))) + in[11] + 0x265e5a51UL;
    c = c << 14 | (c & 0xffffffffUL) >> (32 - 14);
    c += d;
  };
  {
    b += (d ^ (a & (c ^ d))) + in[0] + 0xe9b6c7aaUL;
    b = b << 20 | (b & 0xffffffffUL) >> (32 - 20);
    b += c;
  };
  {
    a += (c ^ (d & (b ^ c))) + in[5] + 0xd62f105dUL;
    a = a << 5 | (a & 0xffffffffUL) >> (32 - 5);
    a += b;
  };
  {
    d += (b ^ (c & (a ^ b))) + in[10] + 0x02441453UL;
    d = d << 9 | (d & 0xffffffffUL) >> (32 - 9);
    d += a;
  };
  {
    c += (a ^ (b & (d ^ a))) + in[15] + 0xd8a1e681UL;
    c = c << 14 | (c & 0xffffffffUL) >> (32 - 14);
    c += d;
  };
  {
    b += (d ^ (a & (c ^ d))) + in[4] + 0xe7d3fbc8UL;
    b = b << 20 | (b & 0xffffffffUL) >> (32 - 20);
    b += c;
  };
  {
    a += (c ^ (d & (b ^ c))) + in[9] + 0x21e1cde6UL;
    a = a << 5 | (a & 0xffffffffUL) >> (32 - 5);
    a += b;
  };
  {
    d += (b ^ (c & (a ^ b))) + in[14] + 0xc33707d6UL;
    d = d << 9 | (d & 0xffffffffUL) >> (32 - 9);
    d += a;
  };
  {
    c += (a ^ (b & (d ^ a))) + in[3] + 0xf4d50d87UL;
    c = c << 14 | (c & 0xffffffffUL) >> (32 - 14);
    c += d;
  };
  {
    b += (d ^ (a & (c ^ d))) + in[8] + 0x455a14edUL;
    b = b << 20 | (b & 0xffffffffUL) >> (32 - 20);
    b += c;
  };
  {
    a += (c ^ (d & (b ^ c))) + in[13] + 0xa9e3e905UL;
    a = a << 5 | (a & 0xffffffffUL) >> (32 - 5);
    a += b;
  };
  {
    d += (b ^ (c & (a ^ b))) + in[2] + 0xfcefa3f8UL;
    d = d << 9 | (d & 0xffffffffUL) >> (32 - 9);
    d += a;
  };
  {
    c += (a ^ (b & (d ^ a))) + in[7] + 0x676f02d9UL;
    c = c << 14 | (c & 0xffffffffUL) >> (32 - 14);
    c += d;
  };
  {
    b += (d ^ (a & (c ^ d))) + in[12] + 0x8d2a4c8aUL;
    b = b << 20 | (b & 0xffffffffUL) >> (32 - 20);
    b += c;
  };
  {
    a += (b ^ c ^ d) + in[5] + 0xfffa3942UL;
    a = a << 4 | (a & 0xffffffffUL) >> (32 - 4);
    a += b;
  };
  {
    d += (a ^ b ^ c) + in[8] + 0x8771f681UL;
    d = d << 11 | (d & 0xffffffffUL) >> (32 - 11);
    d += a;
  };
  {
    c += (d ^ a ^ b) + in[11] + 0x6d9d6122UL;
    c = c << 16 | (c & 0xffffffffUL) >> (32 - 16);
    c += d;
  };
  {
    b += (c ^ d ^ a) + in[14] + 0xfde5380cUL;
    b = b << 23 | (b & 0xffffffffUL) >> (32 - 23);
    b += c;
  };
  {
    a += (b ^ c ^ d) + in[1] + 0xa4beea44UL;
    a = a << 4 | (a & 0xffffffffUL) >> (32 - 4);
    a += b;
  };
  {
    d += (a ^ b ^ c) + in[4] + 0x4bdecfa9UL;
    d = d << 11 | (d & 0xffffffffUL) >> (32 - 11);
    d += a;
  };
  {
    c += (d ^ a ^ b) + in[7] + 0xf6bb4b60UL;
    c = c << 16 | (c & 0xffffffffUL) >> (32 - 16);
    c += d;
  };
  {
    b += (c ^ d ^ a) + in[10] + 0xbebfbc70UL;
    b = b << 23 | (b & 0xffffffffUL) >> (32 - 23);
    b += c;
  };
  {
    a += (b ^ c ^ d) + in[13] + 0x289b7ec6UL;
    a = a << 4 | (a & 0xffffffffUL) >> (32 - 4);
    a += b;
  };
  {
    d += (a ^ b ^ c) + in[0] + 0xeaa127faUL;
    d = d << 11 | (d & 0xffffffffUL) >> (32 - 11);
    d += a;
  };
  {
    c += (d ^ a ^ b) + in[3] + 0xd4ef3085UL;
    c = c << 16 | (c & 0xffffffffUL) >> (32 - 16);
    c += d;
  };
  {
    b += (c ^ d ^ a) + in[6] + 0x04881d05UL;
    b = b << 23 | (b & 0xffffffffUL) >> (32 - 23);
    b += c;
  };
  {
    a += (b ^ c ^ d) + in[9] + 0xd9d4d039UL;
    a = a << 4 | (a & 0xffffffffUL) >> (32 - 4);
    a += b;
  };
  {
    d += (a ^ b ^ c) + in[12] + 0xe6db99e5UL;
    d = d << 11 | (d & 0xffffffffUL) >> (32 - 11);
    d += a;
  };
  {
    c += (d ^ a ^ b) + in[15] + 0x1fa27cf8UL;
    c = c << 16 | (c & 0xffffffffUL) >> (32 - 16);
    c += d;
  };
  {
    b += (c ^ d ^ a) + in[2] + 0xc4ac5665UL;
    b = b << 23 | (b & 0xffffffffUL) >> (32 - 23);
    b += c;
  };
  {
    a += (c ^ (b | ~d)) + in[0] + 0xf4292244UL;
    a = a << 6 | (a & 0xffffffffUL) >> (32 - 6);
    a += b;
  };
  {
    d += (b ^ (a | ~c)) + in[7] + 0x432aff97UL;
    d = d << 10 | (d & 0xffffffffUL) >> (32 - 10);
    d += a;
  };
  {
    c += (a ^ (d | ~b)) + in[14] + 0xab9423a7UL;
    c = c << 15 | (c & 0xffffffffUL) >> (32 - 15);
    c += d;
  };
  {
    b += (d ^ (c | ~a)) + in[5] + 0xfc93a039UL;
    b = b << 21 | (b & 0xffffffffUL) >> (32 - 21);
    b += c;
  };
  {
    a += (c ^ (b | ~d)) + in[12] + 0x655b59c3UL;
    a = a << 6 | (a & 0xffffffffUL) >> (32 - 6);
    a += b;
  };
  {
    d += (b ^ (a | ~c)) + in[3] + 0x8f0ccc92UL;
    d = d << 10 | (d & 0xffffffffUL) >> (32 - 10);
    d += a;
  };
  {
    c += (a ^ (d | ~b)) + in[10] + 0xffeff47dUL;
    c = c << 15 | (c & 0xffffffffUL) >> (32 - 15);
    c += d;
  };
  {
    b += (d ^ (c | ~a)) + in[1] + 0x85845dd1UL;
    b = b << 21 | (b & 0xffffffffUL) >> (32 - 21);
    b += c;
  };
  {
    a += (c ^ (b | ~d)) + in[8] + 0x6fa87e4fUL;
    a = a << 6 | (a & 0xffffffffUL) >> (32 - 6);
    a += b;
  };
  {
    d += (b ^ (a | ~c)) + in[15] + 0xfe2ce6e0UL;
    d = d << 10 | (d & 0xffffffffUL) >> (32 - 10);
    d += a;
  };
  {
    c += (a ^ (d | ~b)) + in[6] + 0xa3014314UL;
    c = c << 15 | (c & 0xffffffffUL) >> (32 - 15);
    c += d;
  };
  {
    b += (d ^ (c | ~a)) + in[13] + 0x4e0811a1UL;
    b = b << 21 | (b & 0xffffffffUL) >> (32 - 21);
    b += c;
  };
  {
    a += (c ^ (b | ~d)) + in[4] + 0xf7537e82UL;
    a = a << 6 | (a & 0xffffffffUL) >> (32 - 6);
    a += b;
  };
  {
    d += (b ^ (a | ~c)) + in[11] + 0xbd3af235UL;
    d = d << 10 | (d & 0xffffffffUL) >> (32 - 10);
    d += a;
  };
  {
    c += (a ^ (d | ~b)) + in[2] + 0x2ad7d2bbUL;
    c = c << 15 | (c & 0xffffffffUL) >> (32 - 15);
    c += d;
  };
  {
    b += (d ^ (c | ~a)) + in[9] + 0xeb86d391UL;
    b = b << 21 | (b & 0xffffffffUL) >> (32 - 21);
    b += c;
  };
  buf[0] += a;
  buf[1] += b;
  buf[2] += c;
  buf[3] += d;
}
```