user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<MD5Transform>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    0xc(%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x28955b88,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x7,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x173848aa,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xc,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  add    $0x242070db,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  ror    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x3e423112,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xa,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0xa83f051,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x7,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  add    $0x4787c62a,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xc,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x57cfb9ed,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  ror    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x2b96aff,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xa,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  add    $0x698098d8,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x7,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x74bb0851,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xc,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0xa44f,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  ror    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x76a32842,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xa,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  add    $0x6b901122,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x7,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x2678e6d,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xc,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x5986bc72,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  ror    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x49b40821,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xa,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x9e1da9e,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x3fbf4cc0,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0x9,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  add    $0x265e5a51,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xe,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x16493856,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xc,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x29d0efa3,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  add    $0x2441453,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0x9,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x275e197f,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xe,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x182c0438,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xc,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  add    $0x21e1cde6,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x3cc8f82a,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0x9,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0xb2af279,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xe,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x455a14ed,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xc,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  and    -0x4(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x561c16fb,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x5,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  and    -0x8(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x3105c08,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0x9,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  and    -0xc(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  add    $0x676f02d9,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xe,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  and    -0x10(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x72d5b376,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xc,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x5c6be,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x4,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x788e097f,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xb,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  add    $0x6d9d6122,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0x10,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x21ac7f4,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0x9,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x5b4115bc,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x4,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  add    $0x4bdecfa9,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xb,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x944b4a0,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0x10,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x41404390,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0x9,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  add    $0x289b7ec6,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x4,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x155ed806,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xb,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x2b10cf7b,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0x10,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x4881d05,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0x9,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x262b2fc7,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x4,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x1924661b,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xb,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  add    $0x1fa27cf8,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0x10,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x3b53a99b,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0x9,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  not    %eax
  or     -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0xbd6ddbc,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x6,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x8(%rbp),%eax
  not    %eax
  or     -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  add    $0x432aff97,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xa,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0xc(%rbp),%eax
  not    %eax
  or     -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x546bdc59,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x10(%rbp),%eax
  not    %eax
  or     -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x36c5fc7,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xb,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  not    %eax
  or     -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  add    $0x655b59c3,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x6,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x8(%rbp),%eax
  not    %eax
  or     -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x70f3336e,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xa,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0xc(%rbp),%eax
  not    %eax
  or     -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x100b83,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x10(%rbp),%eax
  not    %eax
  or     -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x7a7ba22f,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xb,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  not    %eax
  or     -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  add    $0x6fa87e4f,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x6,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x8(%rbp),%eax
  not    %eax
  or     -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x1d31920,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xa,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0xc(%rbp),%eax
  not    %eax
  or     -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sub    $0x5cfebcec,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x10(%rbp),%eax
  not    %eax
  or     -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  add    $0x4e0811a1,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xb,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  not    %eax
  or     -0xc(%rbp),%eax
  xor    -0x8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sub    $0x8ac817e,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  rol    $0x6,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x8(%rbp),%eax
  not    %eax
  or     -0x10(%rbp),%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  sub    $0x42c50dcb,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  rol    $0xa,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0xc(%rbp),%eax
  not    %eax
  or     -0x4(%rbp),%eax
  xor    -0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  add    $0x2ad7d2bb,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  rol    $0xf,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x10(%rbp),%eax
  not    %eax
  or     -0x8(%rbp),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    $0x14792c6f,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  ror    $0xb,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  mov    -0xc(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    -0x8(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    -0x4(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void MD5Transform(unsigned int buf[4], unsigned int const in[16]) {
  unsigned int a, b, c, d;
  a = buf[0];
  b = buf[1];
  c = buf[2];
  d = buf[3];
  (a += (d ^ (b & (c ^ d))) + in[0] + 0xd76aa478, a = (a << 7 | a >> (32 - 7)) + b);
  (d += (c ^ (a & (b ^ c))) + in[1] + 0xe8c7b756, d = (d << 12 | d >> (32 - 12)) + a);
  (c += (b ^ (d & (a ^ b))) + in[2] + 0x242070db, c = (c << 17 | c >> (32 - 17)) + d);
  (b += (a ^ (c & (d ^ a))) + in[3] + 0xc1bdceee, b = (b << 22 | b >> (32 - 22)) + c);
  (a += (d ^ (b & (c ^ d))) + in[4] + 0xf57c0faf, a = (a << 7 | a >> (32 - 7)) + b);
  (d += (c ^ (a & (b ^ c))) + in[5] + 0x4787c62a, d = (d << 12 | d >> (32 - 12)) + a);
  (c += (b ^ (d & (a ^ b))) + in[6] + 0xa8304613, c = (c << 17 | c >> (32 - 17)) + d);
  (b += (a ^ (c & (d ^ a))) + in[7] + 0xfd469501, b = (b << 22 | b >> (32 - 22)) + c);
  (a += (d ^ (b & (c ^ d))) + in[8] + 0x698098d8, a = (a << 7 | a >> (32 - 7)) + b);
  (d += (c ^ (a & (b ^ c))) + in[9] + 0x8b44f7af, d = (d << 12 | d >> (32 - 12)) + a);
  (c += (b ^ (d & (a ^ b))) + in[10] + 0xffff5bb1, c = (c << 17 | c >> (32 - 17)) + d);
  (b += (a ^ (c & (d ^ a))) + in[11] + 0x895cd7be, b = (b << 22 | b >> (32 - 22)) + c);
  (a += (d ^ (b & (c ^ d))) + in[12] + 0x6b901122, a = (a << 7 | a >> (32 - 7)) + b);
  (d += (c ^ (a & (b ^ c))) + in[13] + 0xfd987193, d = (d << 12 | d >> (32 - 12)) + a);
  (c += (b ^ (d & (a ^ b))) + in[14] + 0xa679438e, c = (c << 17 | c >> (32 - 17)) + d);
  (b += (a ^ (c & (d ^ a))) + in[15] + 0x49b40821, b = (b << 22 | b >> (32 - 22)) + c);
  (a += (c ^ (d & (b ^ c))) + in[1] + 0xf61e2562, a = (a << 5 | a >> (32 - 5)) + b);
  (d += (b ^ (c & (a ^ b))) + in[6] + 0xc040b340, d = (d << 9 | d >> (32 - 9)) + a);
  (c += (a ^ (b & (d ^ a))) + in[11] + 0x265e5a51, c = (c << 14 | c >> (32 - 14)) + d);
  (b += (d ^ (a & (c ^ d))) + in[0] + 0xe9b6c7aa, b = (b << 20 | b >> (32 - 20)) + c);
  (a += (c ^ (d & (b ^ c))) + in[5] + 0xd62f105d, a = (a << 5 | a >> (32 - 5)) + b);
  (d += (b ^ (c & (a ^ b))) + in[10] + 0x02441453, d = (d << 9 | d >> (32 - 9)) + a);
  (c += (a ^ (b & (d ^ a))) + in[15] + 0xd8a1e681, c = (c << 14 | c >> (32 - 14)) + d);
  (b += (d ^ (a & (c ^ d))) + in[4] + 0xe7d3fbc8, b = (b << 20 | b >> (32 - 20)) + c);
  (a += (c ^ (d & (b ^ c))) + in[9] + 0x21e1cde6, a = (a << 5 | a >> (32 - 5)) + b);
  (d += (b ^ (c & (a ^ b))) + in[14] + 0xc33707d6, d = (d << 9 | d >> (32 - 9)) + a);
  (c += (a ^ (b & (d ^ a))) + in[3] + 0xf4d50d87, c = (c << 14 | c >> (32 - 14)) + d);
  (b += (d ^ (a & (c ^ d))) + in[8] + 0x455a14ed, b = (b << 20 | b >> (32 - 20)) + c);
  (a += (c ^ (d & (b ^ c))) + in[13] + 0xa9e3e905, a = (a << 5 | a >> (32 - 5)) + b);
  (d += (b ^ (c & (a ^ b))) + in[2] + 0xfcefa3f8, d = (d << 9 | d >> (32 - 9)) + a);
  (c += (a ^ (b & (d ^ a))) + in[7] + 0x676f02d9, c = (c << 14 | c >> (32 - 14)) + d);
  (b += (d ^ (a & (c ^ d))) + in[12] + 0x8d2a4c8a, b = (b << 20 | b >> (32 - 20)) + c);
  (a += (b ^ c ^ d) + in[5] + 0xfffa3942, a = (a << 4 | a >> (32 - 4)) + b);
  (d += (a ^ b ^ c) + in[8] + 0x8771f681, d = (d << 11 | d >> (32 - 11)) + a);
  (c += (d ^ a ^ b) + in[11] + 0x6d9d6122, c = (c << 16 | c >> (32 - 16)) + d);
  (b += (c ^ d ^ a) + in[14] + 0xfde5380c, b = (b << 23 | b >> (32 - 23)) + c);
  (a += (b ^ c ^ d) + in[1] + 0xa4beea44, a = (a << 4 | a >> (32 - 4)) + b);
  (d += (a ^ b ^ c) + in[4] + 0x4bdecfa9, d = (d << 11 | d >> (32 - 11)) + a);
  (c += (d ^ a ^ b) + in[7] + 0xf6bb4b60, c = (c << 16 | c >> (32 - 16)) + d);
  (b += (c ^ d ^ a) + in[10] + 0xbebfbc70, b = (b << 23 | b >> (32 - 23)) + c);
  (a += (b ^ c ^ d) + in[13] + 0x289b7ec6, a = (a << 4 | a >> (32 - 4)) + b);
  (d += (a ^ b ^ c) + in[0] + 0xeaa127fa, d = (d << 11 | d >> (32 - 11)) + a);
  (c += (d ^ a ^ b) + in[3] + 0xd4ef3085, c = (c << 16 | c >> (32 - 16)) + d);
  (b += (c ^ d ^ a) + in[6] + 0x04881d05, b = (b << 23 | b >> (32 - 23)) + c);
  (a += (b ^ c ^ d) + in[9] + 0xd9d4d039, a = (a << 4 | a >> (32 - 4)) + b);
  (d += (a ^ b ^ c) + in[12] + 0xe6db99e5, d = (d << 11 | d >> (32 - 11)) + a);
  (c += (d ^ a ^ b) + in[15] + 0x1fa27cf8, c = (c << 16 | c >> (32 - 16)) + d);
  (b += (c ^ d ^ a) + in[2] + 0xc4ac5665, b = (b << 23 | b >> (32 - 23)) + c);
  (a += (c ^ (b | ~d)) + in[0] + 0xf4292244, a = (a << 6 | a >> (32 - 6)) + b);
  (d += (b ^ (a | ~c)) + in[7] + 0x432aff97, d = (d << 10 | d >> (32 - 10)) + a);
  (c += (a ^ (d | ~b)) + in[14] + 0xab9423a7, c = (c << 15 | c >> (32 - 15)) + d);
  (b += (d ^ (c | ~a)) + in[5] + 0xfc93a039, b = (b << 21 | b >> (32 - 21)) + c);
  (a += (c ^ (b | ~d)) + in[12] + 0x655b59c3, a = (a << 6 | a >> (32 - 6)) + b);
  (d += (b ^ (a | ~c)) + in[3] + 0x8f0ccc92, d = (d << 10 | d >> (32 - 10)) + a);
  (c += (a ^ (d | ~b)) + in[10] + 0xffeff47d, c = (c << 15 | c >> (32 - 15)) + d);
  (b += (d ^ (c | ~a)) + in[1] + 0x85845dd1, b = (b << 21 | b >> (32 - 21)) + c);
  (a += (c ^ (b | ~d)) + in[8] + 0x6fa87e4f, a = (a << 6 | a >> (32 - 6)) + b);
  (d += (b ^ (a | ~c)) + in[15] + 0xfe2ce6e0, d = (d << 10 | d >> (32 - 10)) + a);
  (c += (a ^ (d | ~b)) + in[6] + 0xa3014314, c = (c << 15 | c >> (32 - 15)) + d);
  (b += (d ^ (c | ~a)) + in[13] + 0x4e0811a1, b = (b << 21 | b >> (32 - 21)) + c);
  (a += (c ^ (b | ~d)) + in[4] + 0xf7537e82, a = (a << 6 | a >> (32 - 6)) + b);
  (d += (b ^ (a | ~c)) + in[11] + 0xbd3af235, d = (d << 10 | d >> (32 - 10)) + a);
  (c += (a ^ (d | ~b)) + in[2] + 0x2ad7d2bb, c = (c << 15 | c >> (32 - 15)) + d);
  (b += (d ^ (c | ~a)) + in[9] + 0xeb86d391, b = (b << 21 | b >> (32 - 21)) + c);
  buf[0] += a;
  buf[1] += b;
  buf[2] += c;
  buf[3] += d;
}
```