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

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

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