user: Converte this assembly snippet into its equivalent C code:

```asm
<crush_hash32_rjenkins1_2>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  xor    $0x4e67c6a7,%eax
  xor    -0x18(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  movl   $0x38740,-0x8(%rbp)
  movl   $0x4d0,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0xd,%eax
  xor    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  shl    $0x8,%eax
  xor    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sar    $0xd,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0xc,%eax
  xor    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  shl    $0x10,%eax
  xor    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sar    $0x5,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0x3,%eax
  xor    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  shl    $0xa,%eax
  xor    %eax,-0x18(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  sar    $0xf,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0xd,%eax
  xor    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  shl    $0x8,%eax
  xor    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sar    $0xd,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0xc,%eax
  xor    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  shl    $0x10,%eax
  xor    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sar    $0x5,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0x3,%eax
  xor    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  sub    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  shl    $0xa,%eax
  xor    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  sar    $0xf,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0xd,%eax
  xor    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  shl    $0x8,%eax
  xor    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sar    $0xd,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0xc,%eax
  xor    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  shl    $0x10,%eax
  xor    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sar    $0x5,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0x3,%eax
  xor    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  sub    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  shl    $0xa,%eax
  xor    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sub    %eax,-0xc(%rbp)
  mov    -0x4(%rbp),%eax
  sar    $0xf,%eax
  xor    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  pop    %rbp
  ret
```

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