user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<detect_key_single_line>:
  endbr64
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  lea    0x0(,%rsi,4),%rdi
  call   <malloc@plt>
  test   %rax,%rax
  je     L8
  mov    %rax,%rbp
  test   %r12,%r12
  je     L120
  lea    -0x1(%r12),%rax
  cmp    $0xe,%rax
  jbe    L1
  mov    %r12,%rcx
  mov    %rbx,%rdx
  pxor   %xmm5,%xmm5
  mov    %rbp,%rax
  and    $0xfffffffffffffff0,%rcx
  pxor   %xmm3,%xmm3
  add    %rbx,%rcx
  nopw   0x0(%rax,%rax,1)
L144:
  movdqu (%rdx),%xmm0
  movdqa %xmm5,%xmm2
  add    $0x10,%rdx
  add    $0x40,%rax
  pcmpgtb %xmm0,%xmm2
  movdqa %xmm0,%xmm1
  punpcklbw %xmm2,%xmm1
  punpckhbw %xmm2,%xmm0
  movdqa %xmm3,%xmm2
  pcmpgtw %xmm1,%xmm2
  movdqa %xmm1,%xmm4
  punpckhwd %xmm2,%xmm1
  punpcklwd %xmm2,%xmm4
  movdqa %xmm0,%xmm2
  movups %xmm1,-0x30(%rax)
  movdqa %xmm3,%xmm1
  pcmpgtw %xmm0,%xmm1
  movups %xmm4,-0x40(%rax)
  punpcklwd %xmm1,%xmm2
  punpckhwd %xmm1,%xmm0
  movups %xmm2,-0x20(%rax)
  movups %xmm0,-0x10(%rax)
  cmp    %rcx,%rdx
  jne    L144
  mov    %r12,%rdx
  and    $0xfffffffffffffff0,%rdx
  mov    %edx,%eax
  cmp    %rdx,%r12
  je     L120
L161:
  movsbl (%rbx,%rdx,1),%ecx
  mov    %ecx,0x0(%rbp,%rdx,4)
  lea    0x1(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%esi
  lea    0x0(,%rdx,4),%rcx
  mov    %esi,0x0(%rbp,%rdx,4)
  lea    0x2(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x4(%rbp,%rcx,1)
  lea    0x3(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x8(%rbp,%rcx,1)
  lea    0x4(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0xc(%rbp,%rcx,1)
  lea    0x5(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x10(%rbp,%rcx,1)
  lea    0x6(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x14(%rbp,%rcx,1)
  lea    0x7(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x18(%rbp,%rcx,1)
  lea    0x8(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x1c(%rbp,%rcx,1)
  lea    0x9(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x20(%rbp,%rcx,1)
  lea    0xa(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x24(%rbp,%rcx,1)
  lea    0xb(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x28(%rbp,%rcx,1)
  lea    0xc(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  mov    %edx,0x2c(%rbp,%rcx,1)
  lea    0xd(%rax),%edx
  movslq %edx,%rdx
  cmp    %rdx,%r12
  jbe    L120
  movsbl (%rbx,%rdx,1),%edx
  add    $0xe,%eax
  cltq
  mov    %edx,0x30(%rbp,%rcx,1)
  cmp    %rax,%r12
  jbe    L120
  movsbl (%rbx,%rax,1),%eax
  mov    %eax,0x34(%rbp,%rcx,1)
  nopl   0x0(%rax)
L120:
  mov    %r12,%rdx
  mov    %rbp,%rdi
  xor    %esi,%esi
  call   <ifreq@plt>
  mov    %rbp,%rdi
  movzbl 0x0(%rbp),%r12d
  call   <free@plt>
L10:
  mov    %r12d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L1:
  xor    %eax,%eax
  xor    %edx,%edx
  jmp    L161
L8:
  xor    %r12d,%r12d
  jmp    L10
```

assistant: ```c
char detect_key_single_line(char *lencdata, size_t llen) {
  char ret_char;
  int *tmp, i;
  tmp = malloc(llen * sizeof(int));
  if (NULL == tmp)
    return 0x00;
  for (i = 0; i < llen; i++)
    tmp[i] = lencdata[i];
  ifreq(tmp, NULL, llen);
  ret_char = tmp[0];
  free(tmp);
  return ret_char;
}
```