user: What would the C source look like for the assembly code provided here:

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

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