user: What is the c source code of the assembly code below?

```asm
<crush_hash32_rjenkins1>:
  endbr64
  mov    %edi,%ecx
  lea    -0x38740(%rdi),%eax
  mov    %edi,%edx
  mov    $0x38740,%edi
  xor    $0x4e67c6a7,%ecx
  mov    %ecx,%esi
  sub    %ecx,%eax
  sub    %ecx,%edi
  sar    $0xd,%esi
  xor    %eax,%esi
  mov    %esi,%eax
  sub    %esi,%edi
  sub    %esi,%ecx
  shl    $0x8,%eax
  xor    %edi,%eax
  mov    %ecx,%edi
  mov    %eax,%ecx
  sub    %eax,%edi
  sub    %eax,%esi
  sar    $0xd,%ecx
  xor    %edi,%ecx
  mov    %esi,%edi
  mov    %ecx,%esi
  sub    %ecx,%edi
  sub    %ecx,%eax
  sar    $0xc,%esi
  xor    %edi,%esi
  sub    %esi,%eax
  sub    %esi,%ecx
  mov    %eax,%edi
  mov    %esi,%eax
  shl    $0x10,%eax
  xor    %edi,%eax
  mov    %ecx,%edi
  mov    %eax,%ecx
  sub    %eax,%edi
  sub    %eax,%esi
  sar    $0x5,%ecx
  xor    %edi,%ecx
  mov    %ecx,%edi
  sub    %ecx,%esi
  sub    %ecx,%eax
  sar    $0x3,%edi
  xor    %esi,%edi
  sub    %edi,%eax
  mov    %eax,%esi
  mov    %edi,%eax
  shl    $0xa,%eax
  xor    %esi,%eax
  sub    %edi,%ecx
  mov    $0x4d0,%esi
  sub    %eax,%ecx
  sar    $0xf,%eax
  sub    %edx,%esi
  xor    %ecx,%eax
  mov    %eax,%ecx
  sub    %eax,%esi
  sub    %eax,%edx
  sar    $0xd,%ecx
  xor    %esi,%ecx
  mov    %ecx,%esi
  sub    %ecx,%edx
  sub    %ecx,%eax
  shl    $0x8,%esi
  xor    %edx,%esi
  mov    %esi,%edx
  sub    %esi,%eax
  sub    %esi,%ecx
  sar    $0xd,%edx
  xor    %eax,%edx
  mov    %ecx,%eax
  mov    %edx,%ecx
  sub    %edx,%eax
  sub    %edx,%esi
  sar    $0xc,%ecx
  xor    %eax,%ecx
  mov    %ecx,%eax
  sub    %ecx,%esi
  sub    %ecx,%edx
  shl    $0x10,%eax
  xor    %esi,%eax
  sub    %eax,%edx
  sub    %eax,%ecx
  mov    %edx,%esi
  mov    %eax,%edx
  sar    $0x5,%edx
  xor    %esi,%edx
  mov    %edx,%esi
  sub    %edx,%ecx
  sar    $0x3,%esi
  xor    %ecx,%esi
  sub    %edx,%eax
  mov    %esi,%ecx
  sub    %esi,%eax
  sub    %esi,%edx
  shl    $0xa,%ecx
  xor    %ecx,%eax
  sub    %eax,%edx
  sar    $0xf,%eax
  xor    %edx,%eax
  ret
```

assistant: ```c
__u32 crush_hash32_rjenkins1(__u32 a) {
  __u32 hash = 1315423911 ^ a;
  __u32 b = a;
  __u32 x = 231232;
  __u32 y = 1232;
  do {
    b = b - x;
    b = b - hash;
    b = b ^ (hash >> 13);
    x = x - hash;
    x = x - b;
    x = x ^ (b << 8);
    hash = hash - b;
    hash = hash - x;
    hash = hash ^ (x >> 13);
    b = b - x;
    b = b - hash;
    b = b ^ (hash >> 12);
    x = x - hash;
    x = x - b;
    x = x ^ (b << 16);
    hash = hash - b;
    hash = hash - x;
    hash = hash ^ (x >> 5);
    b = b - x;
    b = b - hash;
    b = b ^ (hash >> 3);
    x = x - hash;
    x = x - b;
    x = x ^ (b << 10);
    hash = hash - b;
    hash = hash - x;
    hash = hash ^ (x >> 15);
  } while (0);
  do {
    y = y - a;
    y = y - hash;
    y = y ^ (hash >> 13);
    a = a - hash;
    a = a - y;
    a = a ^ (y << 8);
    hash = hash - y;
    hash = hash - a;
    hash = hash ^ (a >> 13);
    y = y - a;
    y = y - hash;
    y = y ^ (hash >> 12);
    a = a - hash;
    a = a - y;
    a = a ^ (y << 16);
    hash = hash - y;
    hash = hash - a;
    hash = hash ^ (a >> 5);
    y = y - a;
    y = y - hash;
    y = y ^ (hash >> 3);
    a = a - hash;
    a = a - y;
    a = a ^ (y << 10);
    hash = hash - y;
    hash = hash - a;
    hash = hash ^ (a >> 15);
  } while (0);
  return hash;
}
```