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

```asm
<MD5Transform>:
  endbr64
  push   %r15
  mov    %rsi,%rdx
  mov    %rdi,%rax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    0x4(%rdi),%r8d
  mov    (%rsi),%r14d
  mov    0x8(%rdi),%ecx
  xor    0xc(%rdi),%ecx
  mov    (%rdi),%ebx
  and    %r8d,%ecx
  xor    0xc(%rdi),%ecx
  mov    0x4(%rsi),%r15d
  add    %r14d,%ecx
  mov    0xc(%rdx),%r11d
  mov    0x10(%rdx),%ebp
  lea    -0x28955b88(%rbx,%rcx,1),%ecx
  mov    0xc(%rdi),%ebx
  mov    0x14(%rdx),%r12d
  mov    %ecx,%r9d
  sar    $0x19,%ecx
  mov    0x18(%rdx),%r13d
  mov    %r11d,-0x28(%rsp)
  shl    $0x7,%r9d
  mov    %r12d,-0x20(%rsp)
  or     %ecx,%r9d
  mov    0x8(%rdi),%ecx
  mov    %r13d,-0x8(%rsp)
  add    %r8d,%r9d
  mov    %ebp,-0x24(%rsp)
  xor    %r8d,%ecx
  and    %r9d,%ecx
  xor    0x8(%rdi),%ecx
  add    %r15d,%ecx
  lea    -0x173848aa(%rbx,%rcx,1),%ecx
  mov    0x8(%rdx),%ebx
  mov    %ecx,%esi
  sar    $0x14,%ecx
  shl    $0xc,%esi
  or     %ecx,%esi
  mov    %r8d,%ecx
  add    %r9d,%esi
  xor    %r9d,%ecx
  and    %esi,%ecx
  xor    %r8d,%ecx
  lea    0x242070db(%rbx,%rcx,1),%ecx
  add    0x8(%rdi),%ecx
  mov    %ecx,%edi
  sar    $0xf,%ecx
  shl    $0x11,%edi
  or     %ecx,%edi
  mov    %r9d,%ecx
  add    %esi,%edi
  xor    %esi,%ecx
  and    %edi,%ecx
  xor    %r9d,%ecx
  add    %r11d,%ecx
  mov    0x24(%rdx),%r11d
  lea    -0x3e423112(%r8,%rcx,1),%r10d
  mov    %r10d,%ecx
  sar    $0xa,%r10d
  mov    %r11d,-0x1c(%rsp)
  shl    $0x16,%ecx
  or     %r10d,%ecx
  mov    %esi,%r10d
  add    %edi,%ecx
  xor    %edi,%r10d
  and    %ecx,%r10d
  xor    %esi,%r10d
  add    %ebp,%r10d
  mov    0x28(%rdx),%ebp
  lea    -0xa83f051(%r9,%r10,1),%r10d
  mov    %r10d,%r9d
  sar    $0x19,%r10d
  mov    %ebp,-0x18(%rsp)
  shl    $0x7,%r9d
  or     %r10d,%r9d
  mov    %edi,%r10d
  add    %ecx,%r9d
  xor    %ecx,%r10d
  and    %r9d,%r10d
  xor    %edi,%r10d
  lea    0x4787c62a(%r12,%r10,1),%r10d
  mov    0x20(%rdx),%r12d
  add    %esi,%r10d
  mov    %r10d,%esi
  sar    $0x14,%r10d
  shl    $0xc,%esi
  or     %r10d,%esi
  mov    %ecx,%r10d
  add    %r9d,%esi
  xor    %r9d,%r10d
  and    %esi,%r10d
  xor    %ecx,%r10d
  add    %r13d,%r10d
  mov    0x1c(%rdx),%r13d
  lea    -0x57cfb9ed(%rdi,%r10,1),%r10d
  mov    %r10d,%edi
  sar    $0xf,%r10d
  shl    $0x11,%edi
  or     %r10d,%edi
  mov    %r9d,%r10d
  add    %esi,%edi
  xor    %esi,%r10d
  and    %edi,%r10d
  xor    %r9d,%r10d
  add    %r13d,%r10d
  lea    -0x2b96aff(%rcx,%r10,1),%r10d
  mov    %r10d,%ecx
  sar    $0xa,%r10d
  shl    $0x16,%ecx
  or     %r10d,%ecx
  mov    %esi,%r10d
  add    %edi,%ecx
  xor    %edi,%r10d
  and    %ecx,%r10d
  xor    %esi,%r10d
  lea    0x698098d8(%r12,%r10,1),%r10d
  add    %r9d,%r10d
  mov    %r10d,%r9d
  sar    $0x19,%r10d
  shl    $0x7,%r9d
  or     %r10d,%r9d
  mov    %edi,%r10d
  add    %ecx,%r9d
  xor    %ecx,%r10d
  and    %r9d,%r10d
  xor    %edi,%r10d
  add    %r11d,%r10d
  mov    0x2c(%rdx),%r11d
  mov    %r15d,-0x4(%rsp)
  lea    -0x74bb0851(%rsi,%r10,1),%r10d
  mov    %r10d,%esi
  sar    $0x14,%r10d
  mov    %r11d,-0x14(%rsp)
  shl    $0xc,%esi
  or     %r10d,%esi
  mov    %ecx,%r10d
  add    %r9d,%esi
  xor    %r9d,%r10d
  and    %esi,%r10d
  xor    %ecx,%r10d
  add    %ebp,%r10d
  mov    0x30(%rdx),%ebp
  lea    -0xa44f(%rdi,%r10,1),%r10d
  mov    %r10d,%edi
  sar    $0xf,%r10d
  shl    $0x11,%edi
  or     %r10d,%edi
  mov    %r9d,%r10d
  add    %esi,%edi
  xor    %esi,%r10d
  and    %edi,%r10d
  xor    %r9d,%r10d
  add    %r11d,%r10d
  mov    %edi,%r11d
  lea    -0x76a32842(%rcx,%r10,1),%r10d
  mov    %r10d,%ecx
  sar    $0xa,%r10d
  shl    $0x16,%ecx
  or     %r10d,%ecx
  mov    %esi,%r10d
  add    %edi,%ecx
  xor    %edi,%r10d
  and    %ecx,%r10d
  xor    %ecx,%r11d
  xor    %esi,%r10d
  lea    0x6b901122(%rbp,%r10,1),%r10d
  add    %r9d,%r10d
  mov    %r10d,%r9d
  sar    $0x19,%r10d
  shl    $0x7,%r9d
  or     %r10d,%r9d
  mov    0x34(%rdx),%r10d
  add    %ecx,%r9d
  and    %r9d,%r11d
  mov    %r10d,-0x10(%rsp)
  xor    %edi,%r11d
  add    %r10d,%r11d
  mov    0x38(%rdx),%r10d
  lea    -0x2678e6d(%rsi,%r11,1),%r11d
  mov    %r11d,%esi
  sar    $0x14,%r11d
  mov    %r10d,-0xc(%rsp)
  shl    $0xc,%esi
  or     %r11d,%esi
  mov    %ecx,%r11d
  add    %r9d,%esi
  xor    %r9d,%r11d
  and    %esi,%r11d
  xor    %ecx,%r11d
  add    %r10d,%r11d
  mov    -0x14(%rsp),%r10d
  lea    -0x5986bc72(%rdi,%r11,1),%r11d
  mov    %r11d,%edi
  sar    $0xf,%r11d
  shl    $0x11,%edi
  or     %r11d,%edi
  mov    0x3c(%rdx),%r11d
  mov    %r9d,%edx
  add    %esi,%edi
  xor    %esi,%edx
  and    %edi,%edx
  xor    %r9d,%edx
  lea    0x49b40821(%r11,%rdx,1),%edx
  add    %ecx,%edx
  mov    %edx,%ecx
  sar    $0xa,%edx
  shl    $0x16,%ecx
  or     %edx,%ecx
  mov    %edi,%edx
  add    %edi,%ecx
  xor    %ecx,%edx
  and    %esi,%edx
  xor    %edi,%edx
  add    %r15d,%edx
  mov    -0x18(%rsp),%r15d
  lea    -0x9e1da9e(%r9,%rdx,1),%r9d
  mov    %r9d,%edx
  sar    $0x1b,%r9d
  shl    $0x5,%edx
  or     %r9d,%edx
  mov    %ecx,%r9d
  add    %ecx,%edx
  xor    %edx,%r9d
  and    %edi,%r9d
  xor    %ecx,%r9d
  add    -0x8(%rsp),%r9d
  lea    -0x3fbf4cc0(%rsi,%r9,1),%r9d
  mov    %r9d,%esi
  sar    $0x17,%r9d
  shl    $0x9,%esi
  or     %r9d,%esi
  mov    %edx,%r9d
  add    %edx,%esi
  xor    %esi,%r9d
  and    %ecx,%r9d
  xor    %edx,%r9d
  lea    0x265e5a51(%r10,%r9,1),%r9d
  mov    -0x20(%rsp),%r10d
  add    %edi,%r9d
  mov    %r9d,%edi
  sar    $0x12,%r9d
  shl    $0xe,%edi
  or     %r9d,%edi
  mov    %esi,%r9d
  add    %esi,%edi
  xor    %edi,%r9d
  and    %edx,%r9d
  xor    %esi,%r9d
  add    %r14d,%r9d
  lea    -0x16493856(%rcx,%r9,1),%r9d
  mov    %r9d,%ecx
  sar    $0xc,%r9d
  shl    $0x14,%ecx
  or     %r9d,%ecx
  mov    %edi,%r9d
  add    %edi,%ecx
  xor    %ecx,%r9d
  and    %esi,%r9d
  xor    %edi,%r9d
  add    %r10d,%r9d
  lea    -0x29d0efa3(%rdx,%r9,1),%r9d
  mov    %r9d,%edx
  sar    $0x1b,%r9d
  shl    $0x5,%edx
  or     %r9d,%edx
  mov    %ecx,%r9d
  add    %ecx,%edx
  xor    %edx,%r9d
  and    %edi,%r9d
  xor    %ecx,%r9d
  lea    0x2441453(%r15,%r9,1),%r9d
  mov    -0x1c(%rsp),%r15d
  add    %esi,%r9d
  mov    %r9d,%esi
  sar    $0x17,%r9d
  shl    $0x9,%esi
  or     %r9d,%esi
  mov    %edx,%r9d
  add    %edx,%esi
  xor    %esi,%r9d
  and    %ecx,%r9d
  xor    %edx,%r9d
  add    %r11d,%r9d
  lea    -0x275e197f(%rdi,%r9,1),%r9d
  mov    %r9d,%edi
  sar    $0x12,%r9d
  shl    $0xe,%edi
  or     %r9d,%edi
  mov    %esi,%r9d
  add    %esi,%edi
  xor    %edi,%r9d
  and    %edx,%r9d
  xor    %esi,%r9d
  add    -0x24(%rsp),%r9d
  lea    -0x182c0438(%rcx,%r9,1),%r9d
  mov    %r9d,%ecx
  sar    $0xc,%r9d
  shl    $0x14,%ecx
  or     %r9d,%ecx
  mov    %edi,%r9d
  add    %edi,%ecx
  xor    %ecx,%r9d
  and    %esi,%r9d
  xor    %edi,%r9d
  lea    0x21e1cde6(%r15,%r9,1),%r9d
  add    %edx,%r9d
  mov    %r9d,%edx
  sar    $0x1b,%r9d
  shl    $0x5,%edx
  or     %r9d,%edx
  mov    %ecx,%r9d
  add    %ecx,%edx
  xor    %edx,%r9d
  and    %edi,%r9d
  xor    %ecx,%r9d
  add    -0xc(%rsp),%r9d
  lea    -0x3cc8f82a(%rsi,%r9,1),%r9d
  mov    %r9d,%esi
  sar    $0x17,%r9d
  shl    $0x9,%esi
  or     %r9d,%esi
  mov    %edx,%r9d
  add    %edx,%esi
  xor    %esi,%r9d
  and    %ecx,%r9d
  xor    %edx,%r9d
  add    -0x28(%rsp),%r9d
  lea    -0xb2af279(%rdi,%r9,1),%r9d
  mov    %r9d,%edi
  sar    $0x12,%r9d
  shl    $0xe,%edi
  or     %r9d,%edi
  mov    %esi,%r9d
  add    %esi,%edi
  xor    %edi,%r9d
  and    %edx,%r9d
  xor    %esi,%r9d
  lea    0x455a14ed(%r12,%r9,1),%r9d
  add    %ecx,%r9d
  mov    %r9d,%ecx
  sar    $0xc,%r9d
  shl    $0x14,%ecx
  or     %r9d,%ecx
  mov    %edi,%r9d
  add    %edi,%ecx
  xor    %ecx,%r9d
  and    %esi,%r9d
  xor    %edi,%r9d
  add    -0x10(%rsp),%r9d
  lea    -0x561c16fb(%rdx,%r9,1),%r9d
  mov    %r9d,%edx
  sar    $0x1b,%r9d
  shl    $0x5,%edx
  or     %r9d,%edx
  mov    %ecx,%r9d
  add    %ecx,%edx
  xor    %edx,%r9d
  and    %edi,%r9d
  xor    %ecx,%r9d
  add    %ebx,%r9d
  lea    -0x3105c08(%rsi,%r9,1),%r9d
  mov    %r9d,%esi
  sar    $0x17,%r9d
  shl    $0x9,%esi
  or     %r9d,%esi
  mov    %edx,%r9d
  add    %edx,%esi
  xor    %esi,%r9d
  and    %ecx,%r9d
  xor    %edx,%r9d
  lea    0x676f02d9(%r13,%r9,1),%r9d
  add    %edi,%r9d
  mov    %r9d,%edi
  sar    $0x12,%r9d
  shl    $0xe,%edi
  or     %r9d,%edi
  mov    %esi,%r9d
  add    %esi,%edi
  xor    %edi,%r9d
  mov    %r9d,%r15d
  and    %edx,%r15d
  xor    %esi,%r15d
  add    %ebp,%r15d
  lea    -0x72d5b376(%rcx,%r15,1),%r15d
  mov    %r15d,%ecx
  sar    $0xc,%r15d
  shl    $0x14,%ecx
  or     %r15d,%ecx
  mov    -0x4(%rsp),%r15d
  add    %edi,%ecx
  xor    %ecx,%r9d
  add    %r10d,%r9d
  mov    -0x14(%rsp),%r10d
  lea    -0x5c6be(%rdx,%r9,1),%edx
  mov    %edx,%r9d
  sar    $0x1c,%edx
  shl    $0x4,%r9d
  or     %edx,%r9d
  mov    %edi,%edx
  add    %ecx,%r9d
  xor    %ecx,%edx
  xor    %r9d,%edx
  add    %r12d,%edx
  lea    -0x788e097f(%rsi,%rdx,1),%edx
  mov    %edx,%esi
  sar    $0x15,%edx
  shl    $0xb,%esi
  or     %edx,%esi
  mov    %ecx,%edx
  add    %r9d,%esi
  xor    %r9d,%edx
  xor    %esi,%edx
  lea    0x6d9d6122(%r10,%rdx,1),%edx
  mov    -0x24(%rsp),%r10d
  add    %edi,%edx
  mov    %edx,%edi
  sar    $0x10,%edx
  shl    $0x10,%edi
  or     %edx,%edi
  mov    %r9d,%edx
  add    %esi,%edi
  xor    %esi,%edx
  xor    %edi,%edx
  add    -0xc(%rsp),%edx
  lea    -0x21ac7f4(%rcx,%rdx,1),%ecx
  mov    %ecx,%edx
  sar    $0x9,%ecx
  shl    $0x17,%edx
  or     %ecx,%edx
  mov    %esi,%ecx
  add    %edi,%edx
  xor    %edi,%ecx
  xor    %edx,%ecx
  add    %r15d,%ecx
  lea    -0x5b4115bc(%r9,%rcx,1),%ecx
  mov    %ecx,%r9d
  sar    $0x1c,%ecx
  shl    $0x4,%r9d
  or     %ecx,%r9d
  mov    %edi,%ecx
  add    %edx,%r9d
  xor    %edx,%ecx
  xor    %r9d,%ecx
  lea    0x4bdecfa9(%r10,%rcx,1),%ecx
  mov    -0x10(%rsp),%r10d
  add    %esi,%ecx
  mov    %ecx,%esi
  sar    $0x15,%ecx
  shl    $0xb,%esi
  or     %ecx,%esi
  mov    %edx,%ecx
  add    %r9d,%esi
  xor    %r9d,%ecx
  xor    %esi,%ecx
  add    %r13d,%ecx
  lea    -0x944b4a0(%rdi,%rcx,1),%edi
  mov    %edi,%ecx
  sar    $0x10,%edi
  shl    $0x10,%ecx
  or     %edi,%ecx
  mov    %r9d,%edi
  add    %esi,%ecx
  xor    %esi,%edi
  xor    %ecx,%edi
  add    -0x18(%rsp),%edi
  lea    -0x41404390(%rdx,%rdi,1),%edx
  mov    %edx,%edi
  sar    $0x9,%edx
  shl    $0x17,%edi
  or     %edx,%edi
  mov    %esi,%edx
  add    %ecx,%edi
  xor    %ecx,%edx
  xor    %edi,%edx
  lea    0x289b7ec6(%r10,%rdx,1),%edx
  mov    -0x8(%rsp),%r10d
  add    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1c,%edx
  shl    $0x4,%r9d
  or     %edx,%r9d
  mov    %ecx,%edx
  add    %edi,%r9d
  xor    %edi,%edx
  xor    %r9d,%edx
  add    %r14d,%edx
  lea    -0x155ed806(%rsi,%rdx,1),%esi
  mov    %esi,%edx
  sar    $0x15,%esi
  shl    $0xb,%edx
  or     %esi,%edx
  mov    %edi,%esi
  add    %r9d,%edx
  xor    %r9d,%esi
  xor    %edx,%esi
  add    -0x28(%rsp),%esi
  lea    -0x2b10cf7b(%rcx,%rsi,1),%ecx
  mov    %ecx,%esi
  sar    $0x10,%ecx
  shl    $0x10,%esi
  or     %ecx,%esi
  mov    %r9d,%ecx
  add    %edx,%esi
  xor    %edx,%ecx
  xor    %esi,%ecx
  lea    0x4881d05(%r10,%rcx,1),%ecx
  add    %edi,%ecx
  mov    %ecx,%edi
  sar    $0x9,%ecx
  shl    $0x17,%edi
  or     %ecx,%edi
  mov    %edx,%ecx
  add    %esi,%edi
  xor    %esi,%ecx
  xor    %edi,%ecx
  add    -0x1c(%rsp),%ecx
  lea    -0x262b2fc7(%r9,%rcx,1),%r9d
  mov    %r9d,%ecx
  sar    $0x1c,%r9d
  shl    $0x4,%ecx
  or     %r9d,%ecx
  mov    %esi,%r9d
  add    %edi,%ecx
  xor    %edi,%r9d
  xor    %ecx,%r9d
  add    %ebp,%r9d
  lea    -0x1924661b(%rdx,%r9,1),%edx
  mov    %edx,%r9d
  sar    $0x15,%edx
  shl    $0xb,%r9d
  or     %edx,%r9d
  mov    %edi,%edx
  add    %ecx,%r9d
  xor    %ecx,%edx
  xor    %r9d,%edx
  lea    0x1fa27cf8(%r11,%rdx,1),%edx
  add    %esi,%edx
  mov    %edx,%esi
  sar    $0x10,%edx
  shl    $0x10,%esi
  or     %edx,%esi
  mov    %ecx,%edx
  add    %r9d,%esi
  xor    %r9d,%edx
  xor    %esi,%edx
  add    %ebx,%edx
  lea    -0x3b53a99b(%rdi,%rdx,1),%edi
  mov    %edi,%edx
  sar    $0x9,%edi
  shl    $0x17,%edx
  or     %edi,%edx
  mov    %r9d,%edi
  add    %esi,%edx
  not    %edi
  or     %edx,%edi
  xor    %esi,%edi
  add    %r14d,%edi
  lea    -0xbd6ddbc(%rcx,%rdi,1),%edi
  mov    %edi,%ecx
  sar    $0x1a,%edi
  shl    $0x6,%ecx
  or     %edi,%ecx
  mov    %esi,%edi
  add    %edx,%ecx
  not    %edi
  or     %ecx,%edi
  xor    %edx,%edi
  lea    0x432aff97(%r13,%rdi,1),%edi
  add    %edi,%r9d
  mov    %r9d,%edi
  sar    $0x16,%r9d
  shl    $0xa,%edi
  or     %r9d,%edi
  mov    %edx,%r9d
  add    %ecx,%edi
  not    %r9d
  or     %edi,%r9d
  xor    %ecx,%r9d
  add    -0xc(%rsp),%r9d
  lea    -0x546bdc59(%rsi,%r9,1),%r9d
  mov    %r9d,%esi
  shl    $0xf,%esi
  sar    $0x11,%r9d
  or     %r9d,%esi
  mov    %ecx,%r9d
  add    %edi,%esi
  not    %r9d
  or     %esi,%r9d
  xor    %edi,%r9d
  add    -0x20(%rsp),%r9d
  lea    -0x36c5fc7(%rdx,%r9,1),%r9d
  mov    %r9d,%edx
  sar    $0xb,%r9d
  shl    $0x15,%edx
  or     %r9d,%edx
  mov    %edi,%r9d
  add    %esi,%edx
  not    %r9d
  or     %edx,%r9d
  xor    %esi,%r9d
  lea    0x655b59c3(%rbp,%r9,1),%r9d
  add    %ecx,%r9d
  mov    %r9d,%ecx
  sar    $0x1a,%r9d
  shl    $0x6,%ecx
  or     %r9d,%ecx
  mov    %esi,%r9d
  add    %edx,%ecx
  not    %r9d
  or     %ecx,%r9d
  xor    %edx,%r9d
  add    -0x28(%rsp),%r9d
  lea    -0x70f3336e(%rdi,%r9,1),%r9d
  mov    %r9d,%edi
  sar    $0x16,%r9d
  shl    $0xa,%edi
  or     %r9d,%edi
  mov    %edx,%r9d
  add    %ecx,%edi
  not    %r9d
  or     %edi,%r9d
  xor    %ecx,%r9d
  add    -0x18(%rsp),%r9d
  lea    -0x100b83(%rsi,%r9,1),%r9d
  mov    %r9d,%esi
  sar    $0x11,%r9d
  shl    $0xf,%esi
  or     %r9d,%esi
  mov    %ecx,%r9d
  add    %edi,%esi
  not    %r9d
  or     %esi,%r9d
  xor    %edi,%r9d
  add    %r15d,%r9d
  lea    -0x7a7ba22f(%rdx,%r9,1),%r9d
  mov    %r9d,%edx
  sar    $0xb,%r9d
  shl    $0x15,%edx
  or     %r9d,%edx
  mov    %edi,%r9d
  add    %esi,%edx
  not    %r9d
  or     %edx,%r9d
  xor    %esi,%r9d
  lea    0x6fa87e4f(%r12,%r9,1),%r9d
  add    %ecx,%r9d
  mov    %r9d,%ecx
  sar    $0x1a,%r9d
  shl    $0x6,%ecx
  or     %r9d,%ecx
  mov    %esi,%r9d
  add    %edx,%ecx
  not    %r9d
  or     %ecx,%r9d
  xor    %edx,%r9d
  add    %r11d,%r9d
  lea    -0x1d31920(%rdi,%r9,1),%r9d
  mov    %r9d,%edi
  sar    $0x16,%r9d
  shl    $0xa,%edi
  or     %r9d,%edi
  mov    %edx,%r9d
  add    %ecx,%edi
  not    %r9d
  or     %edi,%r9d
  xor    %ecx,%r9d
  add    %r10d,%r9d
  mov    -0x10(%rsp),%r10d
  lea    -0x5cfebcec(%rsi,%r9,1),%esi
  mov    %esi,%r9d
  sar    $0x11,%esi
  shl    $0xf,%r9d
  or     %esi,%r9d
  mov    %ecx,%esi
  add    %edi,%r9d
  not    %esi
  or     %r9d,%esi
  xor    %edi,%esi
  lea    0x4e0811a1(%r10,%rsi,1),%esi
  add    %esi,%edx
  mov    %edx,%esi
  shl    $0x15,%esi
  sar    $0xb,%edx
  or     %edx,%esi
  mov    %edi,%edx
  add    %r9d,%esi
  not    %edx
  or     %esi,%edx
  xor    %r9d,%edx
  add    -0x24(%rsp),%edx
  lea    -0x8ac817e(%rcx,%rdx,1),%ecx
  mov    %ecx,%edx
  sar    $0x1a,%ecx
  shl    $0x6,%edx
  or     %ecx,%edx
  mov    %r9d,%ecx
  add    %esi,%edx
  not    %ecx
  or     %edx,%ecx
  xor    %esi,%ecx
  add    -0x14(%rsp),%ecx
  lea    -0x42c50dcb(%rdi,%rcx,1),%edi
  mov    %edi,%ecx
  sar    $0x16,%edi
  shl    $0xa,%ecx
  or     %edi,%ecx
  mov    %esi,%edi
  add    %edx,%ecx
  not    %edi
  or     %ecx,%edi
  xor    %edx,%edi
  lea    0x2ad7d2bb(%rbx,%rdi,1),%edi
  add    %edi,%r9d
  mov    %r9d,%edi
  sar    $0x11,%r9d
  shl    $0xf,%edi
  or     %r9d,%edi
  mov    %edx,%r9d
  add    (%rax),%edx
  add    %ecx,%edi
  not    %r9d
  mov    %edx,(%rax)
  or     %edi,%r9d
  xor    %ecx,%r9d
  add    -0x1c(%rsp),%r9d
  pop    %rbx
  lea    -0x14792c6f(%rsi,%r9,1),%r9d
  pop    %rbp
  pop    %r12
  mov    %r9d,%esi
  sar    $0xb,%r9d
  pop    %r13
  pop    %r14
  shl    $0x15,%esi
  pop    %r15
  or     %r9d,%esi
  lea    (%rdi,%rsi,1),%edx
  add    %r8d,%edx
  add    0x8(%rax),%edi
  mov    %edx,0x4(%rax)
  mov    0xc(%rax),%edx
  mov    %edi,0x8(%rax)
  add    %ecx,%edx
  mov    %edx,0xc(%rax)
  ret
```

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