user: Please show me the C implementation that matches the assembly code listed below:

```asm
<JDMD5Transform>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x130,%rsp
  mov    %rdi,-0x128(%rbp)
  mov    %rsi,-0x130(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x128(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x120(%rbp)
  mov    -0x128(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    %eax,-0x11c(%rbp)
  mov    -0x128(%rbp),%rax
  mov    0x8(%rax),%eax
  mov    %eax,-0x118(%rbp)
  mov    -0x128(%rbp),%rax
  mov    0xc(%rax),%eax
  mov    %eax,-0x114(%rbp)
  mov    -0x130(%rbp),%rcx
  lea    -0x110(%rbp),%rax
  mov    $0x40,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <JDMD5Decode@plt>
  mov    -0x11c(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0x110(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x28955b88,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x7,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0x10c(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x173848aa,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xc,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0x108(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  add    $0x242070db,%eax
  mov    %eax,-0x118(%rbp)
  rorl   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0x104(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x3e423112,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xa,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0x100(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0xa83f051,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x7,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0xfc(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  add    $0x4787c62a,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xc,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0xf8(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x57cfb9ed,%eax
  mov    %eax,-0x118(%rbp)
  rorl   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0xf4(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x2b96aff,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xa,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0xf0(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  add    $0x698098d8,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x7,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0xec(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x74bb0851,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xc,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0xe8(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0xa44f,%eax
  mov    %eax,-0x118(%rbp)
  rorl   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0xe4(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x76a32842,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xa,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0xe0(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  add    $0x6b901122,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x7,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0xdc(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x2678e6d,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xc,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0xd8(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x5986bc72,%eax
  mov    %eax,-0x118(%rbp)
  rorl   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0xd4(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  add    $0x49b40821,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xa,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0x10c(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x9e1da9e,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x5,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0xf8(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x3fbf4cc0,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0x9,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0xe4(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  add    $0x265e5a51,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xe,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0x110(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x16493856,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xc,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0xfc(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x29d0efa3,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x5,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0xe8(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  add    $0x2441453,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0x9,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0xd4(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x275e197f,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xe,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0x100(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x182c0438,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xc,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0xec(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  add    $0x21e1cde6,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x5,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0xd8(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x3cc8f82a,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0x9,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0x104(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0xb2af279,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xe,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0xf0(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  add    $0x455a14ed,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xc,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  and    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x114(%rbp),%eax
  not    %eax
  and    -0x118(%rbp),%eax
  or     %eax,%edx
  mov    -0xdc(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x561c16fb,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x5,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  and    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x118(%rbp),%eax
  not    %eax
  and    -0x11c(%rbp),%eax
  or     %eax,%edx
  mov    -0x108(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x3105c08,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0x9,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  and    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  not    %eax
  and    -0x120(%rbp),%eax
  or     %eax,%edx
  mov    -0xf4(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  add    $0x676f02d9,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xe,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  and    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x120(%rbp),%eax
  not    %eax
  and    -0x114(%rbp),%eax
  or     %eax,%edx
  mov    -0xe0(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x72d5b376,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xc,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0xfc(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x5c6be,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x4,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0xf0(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x788e097f,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xb,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0xe4(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  add    $0x6d9d6122,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0x10,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0xd8(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x21ac7f4,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0x9,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x10c(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x5b4115bc,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x4,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x100(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  add    $0x4bdecfa9,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xb,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0xf4(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x944b4a0,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0x10,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0xe8(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x41404390,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0x9,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0xdc(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  add    $0x289b7ec6,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x4,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x110(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x155ed806,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xb,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x104(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x2b10cf7b,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0x10,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0xf8(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  add    $0x4881d05,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0x9,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0xec(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x262b2fc7,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x4,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0xe0(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x1924661b,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xb,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0xd4(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  add    $0x1fa27cf8,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0x10,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x108(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x3b53a99b,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0x9,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x114(%rbp),%eax
  not    %eax
  or     -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x110(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0xbd6ddbc,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x6,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x118(%rbp),%eax
  not    %eax
  or     -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0xf4(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  add    $0x432aff97,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xa,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x11c(%rbp),%eax
  not    %eax
  or     -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0xd8(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x546bdc59,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x120(%rbp),%eax
  not    %eax
  or     -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0xfc(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x36c5fc7,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xb,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x114(%rbp),%eax
  not    %eax
  or     -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0xe0(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  add    $0x655b59c3,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x6,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x118(%rbp),%eax
  not    %eax
  or     -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x104(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x70f3336e,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xa,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x11c(%rbp),%eax
  not    %eax
  or     -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0xe8(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x100b83,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x120(%rbp),%eax
  not    %eax
  or     -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0x10c(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x7a7ba22f,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xb,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x114(%rbp),%eax
  not    %eax
  or     -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0xf0(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  add    $0x6fa87e4f,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x6,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x118(%rbp),%eax
  not    %eax
  or     -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0xd4(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x1d31920,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xa,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x11c(%rbp),%eax
  not    %eax
  or     -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0xf8(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  sub    $0x5cfebcec,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x120(%rbp),%eax
  not    %eax
  or     -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0xdc(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  add    $0x4e0811a1,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xb,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x114(%rbp),%eax
  not    %eax
  or     -0x11c(%rbp),%eax
  xor    -0x118(%rbp),%eax
  mov    %eax,%edx
  mov    -0x100(%rbp),%eax
  add    %eax,%edx
  mov    -0x120(%rbp),%eax
  add    %edx,%eax
  sub    $0x8ac817e,%eax
  mov    %eax,-0x120(%rbp)
  roll   $0x6,-0x120(%rbp)
  mov    -0x11c(%rbp),%eax
  add    %eax,-0x120(%rbp)
  mov    -0x118(%rbp),%eax
  not    %eax
  or     -0x120(%rbp),%eax
  xor    -0x11c(%rbp),%eax
  mov    %eax,%edx
  mov    -0xe4(%rbp),%eax
  add    %eax,%edx
  mov    -0x114(%rbp),%eax
  add    %edx,%eax
  sub    $0x42c50dcb,%eax
  mov    %eax,-0x114(%rbp)
  roll   $0xa,-0x114(%rbp)
  mov    -0x120(%rbp),%eax
  add    %eax,-0x114(%rbp)
  mov    -0x11c(%rbp),%eax
  not    %eax
  or     -0x114(%rbp),%eax
  xor    -0x120(%rbp),%eax
  mov    %eax,%edx
  mov    -0x108(%rbp),%eax
  add    %eax,%edx
  mov    -0x118(%rbp),%eax
  add    %edx,%eax
  add    $0x2ad7d2bb,%eax
  mov    %eax,-0x118(%rbp)
  roll   $0xf,-0x118(%rbp)
  mov    -0x114(%rbp),%eax
  add    %eax,-0x118(%rbp)
  mov    -0x120(%rbp),%eax
  not    %eax
  or     -0x118(%rbp),%eax
  xor    -0x114(%rbp),%eax
  mov    %eax,%edx
  mov    -0xec(%rbp),%eax
  add    %eax,%edx
  mov    -0x11c(%rbp),%eax
  add    %edx,%eax
  sub    $0x14792c6f,%eax
  mov    %eax,-0x11c(%rbp)
  rorl   $0xb,-0x11c(%rbp)
  mov    -0x118(%rbp),%eax
  add    %eax,-0x11c(%rbp)
  mov    -0x128(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x120(%rbp),%eax
  add    %eax,%edx
  mov    -0x128(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x128(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x128(%rbp),%rax
  add    $0x4,%rax
  mov    -0x11c(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x128(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%ecx
  mov    -0x128(%rbp),%rax
  add    $0x8,%rax
  mov    -0x118(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x128(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  mov    -0x128(%rbp),%rax
  add    $0xc,%rax
  mov    -0x114(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L5
  call   <__stack_chk_fail@plt>
L5:
  leave
  ret
```

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