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

```asm
<md4_process_block>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rax
  mov    (%rsi),%r13d
  mov    %r13d,%edx
  add    (%rdi),%edx
  mov    0x8(%rdi),%ecx
  xor    0xc(%rdi),%ecx
  and    0x4(%rdi),%ecx
  xor    0xc(%rdi),%ecx
  add    %edx,%ecx
  rol    $0x3,%ecx
  mov    0x4(%rsi),%ebx
  mov    %ebx,-0xc(%rsp)
  mov    %ebx,%esi
  add    0xc(%rdi),%esi
  mov    0x4(%rdi),%edx
  xor    0x8(%rdi),%edx
  and    %ecx,%edx
  xor    0x8(%rdi),%edx
  add    %esi,%edx
  rol    $0x7,%edx
  mov    0x8(%rax),%ebx
  mov    %ebx,%esi
  add    0x8(%rdi),%esi
  mov    %ecx,%r9d
  xor    0x4(%rdi),%r9d
  and    %edx,%r9d
  xor    0x4(%rdi),%r9d
  add    %esi,%r9d
  rol    $0xb,%r9d
  mov    0xc(%rax),%r11d
  mov    %r11d,-0x8(%rsp)
  mov    %r11d,%r8d
  add    0x4(%rdi),%r8d
  mov    %ecx,%esi
  xor    %edx,%esi
  and    %r9d,%esi
  xor    %ecx,%esi
  add    %r8d,%esi
  ror    $0xd,%esi
  mov    0x10(%rax),%r10d
  mov    %r10d,-0x4(%rsp)
  lea    (%r10,%rcx,1),%r8d
  mov    %edx,%ecx
  xor    %r9d,%ecx
  and    %esi,%ecx
  xor    %edx,%ecx
  add    %r8d,%ecx
  rol    $0x3,%ecx
  mov    0x14(%rax),%r14d
  mov    %r14d,-0x20(%rsp)
  add    %r14d,%edx
  mov    %r9d,%r8d
  xor    %esi,%r8d
  and    %ecx,%r8d
  xor    %r9d,%r8d
  add    %edx,%r8d
  rol    $0x7,%r8d
  mov    0x18(%rax),%edx
  mov    %edx,-0x1c(%rsp)
  add    %edx,%r9d
  mov    %esi,%ebp
  xor    %ecx,%ebp
  mov    %ebp,%edx
  and    %r8d,%edx
  xor    %esi,%edx
  add    %r9d,%edx
  rol    $0xb,%edx
  mov    0x1c(%rax),%r9d
  mov    %r9d,-0x18(%rsp)
  add    %r9d,%esi
  mov    %ecx,%ebp
  xor    %r8d,%ebp
  mov    %ebp,%r9d
  and    %edx,%r9d
  xor    %ecx,%r9d
  add    %esi,%r9d
  ror    $0xd,%r9d
  mov    0x20(%rax),%r12d
  add    %r12d,%ecx
  mov    %r8d,%esi
  xor    %edx,%esi
  and    %r9d,%esi
  xor    %r8d,%esi
  add    %ecx,%esi
  rol    $0x3,%esi
  mov    0x24(%rax),%ecx
  mov    %ecx,-0x14(%rsp)
  add    %ecx,%r8d
  mov    %edx,%ebp
  xor    %r9d,%ebp
  mov    %ebp,%ecx
  and    %esi,%ecx
  xor    %edx,%ecx
  add    %r8d,%ecx
  rol    $0x7,%ecx
  mov    0x28(%rax),%r11d
  add    %r11d,%edx
  mov    %r9d,%r8d
  xor    %esi,%r8d
  and    %ecx,%r8d
  xor    %r9d,%r8d
  add    %edx,%r8d
  rol    $0xb,%r8d
  mov    0x2c(%rax),%ebp
  mov    %ebp,-0x10(%rsp)
  add    %ebp,%r9d
  mov    %esi,%edx
  xor    %ecx,%edx
  and    %r8d,%edx
  xor    %esi,%edx
  add    %r9d,%edx
  ror    $0xd,%edx
  mov    0x30(%rax),%ebp
  add    %ebp,%esi
  mov    %ecx,%r9d
  xor    %r8d,%r9d
  mov    %r9d,%r14d
  and    %edx,%r14d
  xor    %ecx,%r14d
  add    %esi,%r14d
  rol    $0x3,%r14d
  mov    0x34(%rax),%r9d
  add    %r9d,%ecx
  mov    %r8d,%esi
  xor    %edx,%esi
  and    %r14d,%esi
  xor    %r8d,%esi
  add    %ecx,%esi
  rol    $0x7,%esi
  mov    0x38(%rax),%r10d
  add    %r10d,%r8d
  mov    %edx,%ecx
  xor    %r14d,%ecx
  and    %esi,%ecx
  xor    %edx,%ecx
  add    %r8d,%ecx
  rol    $0xb,%ecx
  mov    0x3c(%rax),%r8d
  lea    (%r8,%rdx,1),%r15d
  mov    %r14d,%eax
  xor    %esi,%eax
  and    %ecx,%eax
  xor    %r14d,%eax
  lea    (%rax,%r15,1),%edx
  ror    $0xd,%edx
  lea    0x5a827999(%r13,%r14,1),%r14d
  mov    %esi,%eax
  or     %ecx,%eax
  and    %edx,%eax
  mov    %esi,%r15d
  and    %ecx,%r15d
  or     %r15d,%eax
  add    %r14d,%eax
  rol    $0x3,%eax
  mov    -0x4(%rsp),%r15d
  lea    0x5a827999(%r15,%rsi,1),%r14d
  mov    %ecx,%esi
  or     %edx,%esi
  and    %eax,%esi
  mov    %ecx,%r15d
  and    %edx,%r15d
  or     %r15d,%esi
  add    %r14d,%esi
  rol    $0x5,%esi
  lea    0x5a827999(%r12,%rcx,1),%r14d
  mov    %edx,%ecx
  or     %eax,%ecx
  and    %esi,%ecx
  mov    %edx,%r15d
  and    %eax,%r15d
  or     %r15d,%ecx
  add    %r14d,%ecx
  rol    $0x9,%ecx
  lea    0x5a827999(%rbp,%rdx,1),%r14d
  mov    %eax,%edx
  or     %esi,%edx
  and    %ecx,%edx
  mov    %eax,%r15d
  and    %esi,%r15d
  or     %r15d,%edx
  add    %r14d,%edx
  rol    $0xd,%edx
  mov    -0xc(%rsp),%r15d
  lea    0x5a827999(%r15,%rax,1),%r14d
  mov    %esi,%eax
  or     %ecx,%eax
  and    %edx,%eax
  mov    %esi,%r15d
  and    %ecx,%r15d
  or     %r15d,%eax
  add    %r14d,%eax
  rol    $0x3,%eax
  mov    -0x20(%rsp),%r14d
  lea    0x5a827999(%r14,%rsi,1),%r14d
  mov    %ecx,%esi
  or     %edx,%esi
  and    %eax,%esi
  mov    %ecx,%r15d
  and    %edx,%r15d
  or     %r15d,%esi
  add    %r14d,%esi
  rol    $0x5,%esi
  mov    -0x14(%rsp),%r14d
  lea    0x5a827999(%r14,%rcx,1),%r14d
  mov    %edx,%ecx
  or     %eax,%ecx
  and    %esi,%ecx
  mov    %edx,%r15d
  and    %eax,%r15d
  or     %r15d,%ecx
  add    %r14d,%ecx
  rol    $0x9,%ecx
  lea    0x5a827999(%r9,%rdx,1),%r14d
  mov    %eax,%edx
  or     %esi,%edx
  and    %ecx,%edx
  mov    %eax,%r15d
  and    %esi,%r15d
  or     %r15d,%edx
  add    %r14d,%edx
  rol    $0xd,%edx
  lea    0x5a827999(%rbx,%rax,1),%r14d
  mov    %esi,%eax
  or     %ecx,%eax
  and    %edx,%eax
  mov    %esi,%r15d
  and    %ecx,%r15d
  or     %r15d,%eax
  add    %r14d,%eax
  rol    $0x3,%eax
  mov    -0x1c(%rsp),%r14d
  lea    0x5a827999(%r14,%rsi,1),%r14d
  mov    %ecx,%esi
  or     %edx,%esi
  and    %eax,%esi
  mov    %ecx,%r15d
  and    %edx,%r15d
  or     %r15d,%esi
  add    %r14d,%esi
  rol    $0x5,%esi
  lea    0x5a827999(%r11,%rcx,1),%r14d
  mov    %edx,%ecx
  or     %eax,%ecx
  and    %esi,%ecx
  mov    %edx,%r15d
  and    %eax,%r15d
  or     %r15d,%ecx
  add    %r14d,%ecx
  rol    $0x9,%ecx
  lea    0x5a827999(%r10,%rdx,1),%r14d
  mov    %eax,%edx
  or     %esi,%edx
  and    %ecx,%edx
  mov    %eax,%r15d
  and    %esi,%r15d
  or     %r15d,%edx
  add    %r14d,%edx
  rol    $0xd,%edx
  mov    -0x8(%rsp),%r14d
  lea    0x5a827999(%r14,%rax,1),%r14d
  mov    %esi,%eax
  or     %ecx,%eax
  and    %edx,%eax
  mov    %esi,%r15d
  and    %ecx,%r15d
  or     %r15d,%eax
  add    %r14d,%eax
  rol    $0x3,%eax
  mov    -0x18(%rsp),%r15d
  lea    0x5a827999(%r15,%rsi,1),%r14d
  mov    %ecx,%esi
  or     %edx,%esi
  and    %eax,%esi
  mov    %ecx,%r15d
  and    %edx,%r15d
  or     %r15d,%esi
  add    %r14d,%esi
  rol    $0x5,%esi
  mov    -0x10(%rsp),%r15d
  lea    0x5a827999(%r15,%rcx,1),%r14d
  mov    %edx,%ecx
  or     %eax,%ecx
  and    %esi,%ecx
  mov    %edx,%r15d
  and    %eax,%r15d
  or     %r15d,%ecx
  add    %r14d,%ecx
  rol    $0x9,%ecx
  lea    0x5a827999(%r8,%rdx,1),%r14d
  mov    %eax,%edx
  or     %esi,%edx
  and    %ecx,%edx
  mov    %eax,%r15d
  and    %esi,%r15d
  or     %r15d,%edx
  add    %r14d,%edx
  rol    $0xd,%edx
  lea    0x6ed9eba1(%r13,%rax,1),%r13d
  mov    %esi,%eax
  xor    %ecx,%eax
  xor    %edx,%eax
  add    %r13d,%eax
  rol    $0x3,%eax
  lea    0x6ed9eba1(%r12,%rsi,1),%r12d
  mov    %ecx,%esi
  xor    %edx,%esi
  xor    %eax,%esi
  add    %r12d,%esi
  rol    $0x9,%esi
  mov    -0x4(%rsp),%r13d
  lea    0x6ed9eba1(%r13,%rcx,1),%r12d
  mov    %edx,%ecx
  xor    %eax,%ecx
  xor    %esi,%ecx
  add    %r12d,%ecx
  rol    $0xb,%ecx
  lea    0x6ed9eba1(%rbp,%rdx,1),%ebp
  mov    %eax,%edx
  xor    %esi,%edx
  xor    %ecx,%edx
  add    %ebp,%edx
  rol    $0xf,%edx
  lea    0x6ed9eba1(%rbx,%rax,1),%ebx
  mov    %esi,%eax
  xor    %ecx,%eax
  xor    %edx,%eax
  add    %ebx,%eax
  rol    $0x3,%eax
  lea    0x6ed9eba1(%r11,%rsi,1),%r11d
  mov    %ecx,%esi
  xor    %edx,%esi
  xor    %eax,%esi
  add    %r11d,%esi
  rol    $0x9,%esi
  mov    -0x1c(%rsp),%r11d
  lea    0x6ed9eba1(%r11,%rcx,1),%r11d
  mov    %edx,%ecx
  xor    %eax,%ecx
  xor    %esi,%ecx
  add    %r11d,%ecx
  rol    $0xb,%ecx
  lea    0x6ed9eba1(%r10,%rdx,1),%r10d
  mov    %eax,%edx
  xor    %esi,%edx
  xor    %ecx,%edx
  add    %r10d,%edx
  rol    $0xf,%edx
  mov    -0xc(%rsp),%r15d
  lea    0x6ed9eba1(%r15,%rax,1),%r10d
  mov    %esi,%eax
  xor    %ecx,%eax
  xor    %edx,%eax
  add    %r10d,%eax
  rol    $0x3,%eax
  mov    -0x14(%rsp),%r11d
  lea    0x6ed9eba1(%r11,%rsi,1),%r10d
  mov    %ecx,%esi
  xor    %edx,%esi
  xor    %eax,%esi
  add    %r10d,%esi
  rol    $0x9,%esi
  mov    -0x20(%rsp),%ebx
  lea    0x6ed9eba1(%rbx,%rcx,1),%r10d
  mov    %edx,%ecx
  xor    %eax,%ecx
  xor    %esi,%ecx
  add    %r10d,%ecx
  rol    $0xb,%ecx
  lea    0x6ed9eba1(%r9,%rdx,1),%r9d
  mov    %eax,%edx
  xor    %esi,%edx
  xor    %ecx,%edx
  add    %r9d,%edx
  rol    $0xf,%edx
  mov    -0x8(%rsp),%r14d
  lea    0x6ed9eba1(%r14,%rax,1),%r9d
  mov    %esi,%eax
  xor    %ecx,%eax
  xor    %edx,%eax
  add    %r9d,%eax
  rol    $0x3,%eax
  mov    -0x10(%rsp),%ebp
  lea    0x6ed9eba1(%rbp,%rsi,1),%r9d
  mov    %ecx,%esi
  xor    %edx,%esi
  xor    %eax,%esi
  add    %r9d,%esi
  rol    $0x9,%esi
  mov    -0x18(%rsp),%r15d
  lea    0x6ed9eba1(%r15,%rcx,1),%r9d
  mov    %edx,%ecx
  xor    %eax,%ecx
  xor    %esi,%ecx
  add    %r9d,%ecx
  rol    $0xb,%ecx
  lea    0x6ed9eba1(%r8,%rdx,1),%r8d
  mov    %eax,%edx
  xor    %esi,%edx
  xor    %ecx,%edx
  add    %r8d,%edx
  add    (%rdi),%eax
  mov    %eax,(%rdi)
  mov    %edx,%eax
  rol    $0xf,%eax
  add    0x4(%rdi),%eax
  mov    %eax,0x4(%rdi)
  mov    %ecx,%eax
  add    0x8(%rdi),%eax
  mov    %eax,0x8(%rdi)
  mov    %esi,%eax
  add    0xc(%rdi),%eax
  mov    %eax,0xc(%rdi)
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void md4_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]);
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((((b)) ^ ((c))) & ((a))) ^ ((c))) + (x[1]);
    (d) = (((d)) << ((7)) ^ (((d)) >> (32 - ((7)))));
  };
  {
    (c) += (((((a)) ^ ((b))) & ((d))) ^ ((b))) + (x[2]);
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((((d)) ^ ((a))) & ((c))) ^ ((a))) + (x[3]);
    (b) = (((b)) << ((19)) ^ (((b)) >> (32 - ((19)))));
  };
  {
    (a) += (((((c)) ^ ((d))) & ((b))) ^ ((d))) + (x[4]);
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((((b)) ^ ((c))) & ((a))) ^ ((c))) + (x[5]);
    (d) = (((d)) << ((7)) ^ (((d)) >> (32 - ((7)))));
  };
  {
    (c) += (((((a)) ^ ((b))) & ((d))) ^ ((b))) + (x[6]);
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((((d)) ^ ((a))) & ((c))) ^ ((a))) + (x[7]);
    (b) = (((b)) << ((19)) ^ (((b)) >> (32 - ((19)))));
  };
  {
    (a) += (((((c)) ^ ((d))) & ((b))) ^ ((d))) + (x[8]);
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((((b)) ^ ((c))) & ((a))) ^ ((c))) + (x[9]);
    (d) = (((d)) << ((7)) ^ (((d)) >> (32 - ((7)))));
  };
  {
    (c) += (((((a)) ^ ((b))) & ((d))) ^ ((b))) + (x[10]);
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((((d)) ^ ((a))) & ((c))) ^ ((a))) + (x[11]);
    (b) = (((b)) << ((19)) ^ (((b)) >> (32 - ((19)))));
  };
  {
    (a) += (((((c)) ^ ((d))) & ((b))) ^ ((d))) + (x[12]);
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((((b)) ^ ((c))) & ((a))) ^ ((c))) + (x[13]);
    (d) = (((d)) << ((7)) ^ (((d)) >> (32 - ((7)))));
  };
  {
    (c) += (((((a)) ^ ((b))) & ((d))) ^ ((b))) + (x[14]);
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((((d)) ^ ((a))) & ((c))) ^ ((a))) + (x[15]);
    (b) = (((b)) << ((19)) ^ (((b)) >> (32 - ((19)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[0]) + 0x5a827999;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[4]) + 0x5a827999;
    (d) = (((d)) << ((5)) ^ (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[8]) + 0x5a827999;
    (c) = (((c)) << ((9)) ^ (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[12]) + 0x5a827999;
    (b) = (((b)) << ((13)) ^ (((b)) >> (32 - ((13)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[1]) + 0x5a827999;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[5]) + 0x5a827999;
    (d) = (((d)) << ((5)) ^ (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[9]) + 0x5a827999;
    (c) = (((c)) << ((9)) ^ (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[13]) + 0x5a827999;
    (b) = (((b)) << ((13)) ^ (((b)) >> (32 - ((13)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[2]) + 0x5a827999;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[6]) + 0x5a827999;
    (d) = (((d)) << ((5)) ^ (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[10]) + 0x5a827999;
    (c) = (((c)) << ((9)) ^ (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[14]) + 0x5a827999;
    (b) = (((b)) << ((13)) ^ (((b)) >> (32 - ((13)))));
  };
  {
    (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + (x[3]) + 0x5a827999;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + (x[7]) + 0x5a827999;
    (d) = (((d)) << ((5)) ^ (((d)) >> (32 - ((5)))));
  };
  {
    (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + (x[11]) + 0x5a827999;
    (c) = (((c)) << ((9)) ^ (((c)) >> (32 - ((9)))));
  };
  {
    (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + (x[15]) + 0x5a827999;
    (b) = (((b)) << ((13)) ^ (((b)) >> (32 - ((13)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[0]) + 0x6ed9eba1;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[8]) + 0x6ed9eba1;
    (d) = (((d)) << ((9)) ^ (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[4]) + 0x6ed9eba1;
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[12]) + 0x6ed9eba1;
    (b) = (((b)) << ((15)) ^ (((b)) >> (32 - ((15)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[2]) + 0x6ed9eba1;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[10]) + 0x6ed9eba1;
    (d) = (((d)) << ((9)) ^ (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[6]) + 0x6ed9eba1;
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[14]) + 0x6ed9eba1;
    (b) = (((b)) << ((15)) ^ (((b)) >> (32 - ((15)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[1]) + 0x6ed9eba1;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[9]) + 0x6ed9eba1;
    (d) = (((d)) << ((9)) ^ (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[5]) + 0x6ed9eba1;
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[13]) + 0x6ed9eba1;
    (b) = (((b)) << ((15)) ^ (((b)) >> (32 - ((15)))));
  };
  {
    (a) += (((b)) ^ ((c)) ^ ((d))) + (x[3]) + 0x6ed9eba1;
    (a) = (((a)) << ((3)) ^ (((a)) >> (32 - ((3)))));
  };
  {
    (d) += (((a)) ^ ((b)) ^ ((c))) + (x[11]) + 0x6ed9eba1;
    (d) = (((d)) << ((9)) ^ (((d)) >> (32 - ((9)))));
  };
  {
    (c) += (((d)) ^ ((a)) ^ ((b))) + (x[7]) + 0x6ed9eba1;
    (c) = (((c)) << ((11)) ^ (((c)) >> (32 - ((11)))));
  };
  {
    (b) += (((c)) ^ ((d)) ^ ((a))) + (x[15]) + 0x6ed9eba1;
    (b) = (((b)) << ((15)) ^ (((b)) >> (32 - ((15)))));
  };
  state[0] += a;
  state[1] += b;
  state[2] += c;
  state[3] += d;
}
```