user: Translate the below assembly code into C programming language:

```asm
<hash_it>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  call   <strlen@plt>
  movslq %eax,%r12
  lea    0x0(,%r12,8),%edi
  mov    %r12,%rbp
  call   <malloc@plt>
  mov    %rax,%rdi
  test   %r12d,%r12d
  jle    L127
  lea    (%rax,%r12,8),%rdx
  lea    -0x1(%r12),%ecx
  cmp    %rdx,%rbx
  setae  %dl
  add    %rbx,%r12
  cmp    %r12,%rax
  setae  %sil
  or     %sil,%dl
  je     L82
  cmp    $0xe,%ecx
  jbe    L82
  mov    %ebp,%eax
  pxor   %xmm6,%xmm6
  pxor   %xmm5,%xmm5
  mov    %rbx,%rdx
  shr    $0x4,%eax
  pxor   %xmm4,%xmm4
  sub    $0x1,%eax
  shl    $0x4,%rax
  lea    0x10(%rbx,%rax,1),%rcx
  mov    %rdi,%rax
  nopl   (%rax)
L50:
  movdqu (%rdx),%xmm0
  movdqa %xmm6,%xmm2
  movdqa %xmm5,%xmm7
  add    $0x10,%rdx
  sub    $0xffffffffffffff80,%rax
  pcmpgtb %xmm0,%xmm2
  movdqa %xmm0,%xmm1
  punpcklbw %xmm2,%xmm1
  punpckhbw %xmm2,%xmm0
  movdqa %xmm5,%xmm2
  pcmpgtw %xmm1,%xmm2
  pcmpgtw %xmm0,%xmm7
  movdqa %xmm1,%xmm3
  punpcklwd %xmm2,%xmm3
  punpckhwd %xmm2,%xmm1
  movdqa %xmm0,%xmm2
  punpcklwd %xmm7,%xmm2
  punpckhwd %xmm7,%xmm0
  movdqa %xmm4,%xmm7
  pcmpgtd %xmm3,%xmm7
  movdqa %xmm3,%xmm8
  punpckhdq %xmm7,%xmm3
  punpckldq %xmm7,%xmm8
  movdqa %xmm1,%xmm7
  movups %xmm3,-0x70(%rax)
  movdqa %xmm4,%xmm3
  pcmpgtd %xmm1,%xmm3
  movups %xmm8,-0x80(%rax)
  punpckhdq %xmm3,%xmm1
  punpckldq %xmm3,%xmm7
  movdqa %xmm2,%xmm3
  movups %xmm1,-0x50(%rax)
  movdqa %xmm4,%xmm1
  pcmpgtd %xmm2,%xmm1
  movups %xmm7,-0x60(%rax)
  punpckhdq %xmm1,%xmm2
  punpckldq %xmm1,%xmm3
  movdqa %xmm4,%xmm1
  pcmpgtd %xmm0,%xmm1
  movups %xmm2,-0x30(%rax)
  movdqa %xmm0,%xmm2
  movups %xmm3,-0x40(%rax)
  punpckldq %xmm1,%xmm2
  punpckhdq %xmm1,%xmm0
  movups %xmm2,-0x20(%rax)
  movups %xmm0,-0x10(%rax)
  cmp    %rcx,%rdx
  jne    L50
  mov    %ebp,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%bpl
  je     L127
  mov    %eax,%ecx
  movsbq (%rbx,%rcx,1),%rsi
  lea    0x0(,%rcx,8),%rdx
  mov    %rsi,(%rdi,%rcx,8)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x8(%rdi,%rdx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x10(%rdi,%rdx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x18(%rdi,%rdx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x20(%rdi,%rdx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x28(%rdi,%rdx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x30(%rdi,%rdx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x38(%rdi,%rdx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x40(%rdi,%rdx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x48(%rdi,%rdx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x50(%rdi,%rdx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x58(%rdi,%rdx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x60(%rdi,%rdx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%ebp
  jle    L127
  movslq %ecx,%rcx
  add    $0xe,%eax
  movsbq (%rbx,%rcx,1),%rcx
  mov    %rcx,0x68(%rdi,%rdx,1)
  cmp    %eax,%ebp
  jle    L127
  cltq
  movsbq (%rbx,%rax,1),%rax
  mov    %rax,0x70(%rdi,%rdx,1)
L127:
  pop    %rbx
  mov    %ebp,%esi
  pop    %rbp
  pop    %r12
  jmp    1070 <jenkins_hash@plt>
  nopl   0x0(%rax,%rax,1)
L82:
  lea    0x8(%rdi,%rcx,8),%rcx
  nopl   (%rax)
L7:
  movsbq (%rbx),%rdx
  add    $0x8,%rax
  add    $0x1,%rbx
  mov    %rdx,-0x8(%rax)
  cmp    %rcx,%rax
  jne    L7
  pop    %rbx
  mov    %ebp,%esi
  pop    %rbp
  pop    %r12
  jmp    1070 <jenkins_hash@plt>
```

assistant: ```c
uint32_t hash_it(const char *plaintext) {
  int length = strlen(plaintext);
  uint8_t *container = (uint8_t *)malloc(length * sizeof(uint8_t));
  int i;
  for (i = 0; i < length; i++) {
    container[i] = (uint8_t)plaintext[i];
  }
  return jenkins_hash(container, length);
}
```