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

```asm
<strremoveleft>:
  endbr64
  push   %r12
  mov    %edx,%r12d
  push   %rbp
  mov    %rdi,%rbp
  mov    %rsi,%rdi
  push   %rbx
  mov    %rsi,%rbx
  call   <strlen@plt>
  test   %r12d,%r12d
  jle    L463
  mov    %eax,%edx
  cmp    %r12d,%eax
  jl     L463
  lea    -0x1(%r12),%esi
  je     L230
  mov    %rbp,%rdi
  test   %esi,%esi
  je     L209
  lea    0x1(%rbx),%rdi
  mov    %rbp,%rcx
  lea    -0x2(%r12),%eax
  sub    %rdi,%rcx
  cmp    $0xe,%rcx
  jbe    L154
  cmp    $0x6,%eax
  jbe    L154
  cmp    $0xe,%eax
  jbe    L226
  mov    %esi,%ecx
  xor    %eax,%eax
  shr    $0x4,%ecx
  shl    $0x4,%rcx
  nopl   0x0(%rax)
L14:
  movdqu (%rbx,%rax,1),%xmm0
  movups %xmm0,0x0(%rbp,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L14
  mov    %esi,%ecx
  and    $0xfffffff0,%ecx
  mov    %ecx,%eax
  cmp    %ecx,%esi
  je     L4
  mov    %r12d,%r8d
  sub    %ecx,%r8d
  lea    -0x1(%r8),%edi
  sub    $0x2,%r8d
  cmp    $0x6,%r8d
  jbe    L135
L450:
  mov    (%rbx,%rcx,1),%r8
  mov    %r8,0x0(%rbp,%rcx,1)
  mov    %edi,%ecx
  and    $0xfffffff8,%ecx
  add    %ecx,%eax
  cmp    %ecx,%edi
  je     L4
L135:
  movslq %eax,%rcx
  movzbl (%rbx,%rcx,1),%edi
  mov    %dil,0x0(%rbp,%rcx,1)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%esi
  jle    L4
  movslq %ecx,%rcx
  movzbl (%rbx,%rcx,1),%edi
  mov    %dil,0x0(%rbp,%rcx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%esi
  jle    L4
  movslq %ecx,%rcx
  movzbl (%rbx,%rcx,1),%edi
  mov    %dil,0x0(%rbp,%rcx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%esi
  jle    L4
  movslq %ecx,%rcx
  movzbl (%rbx,%rcx,1),%edi
  mov    %dil,0x0(%rbp,%rcx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%esi
  jle    L4
  movslq %ecx,%rcx
  movzbl (%rbx,%rcx,1),%edi
  mov    %dil,0x0(%rbp,%rcx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%esi
  jle    L4
  movslq %ecx,%rcx
  add    $0x6,%eax
  movzbl (%rbx,%rcx,1),%edi
  mov    %dil,0x0(%rbp,%rcx,1)
  cmp    %eax,%esi
  jle    L4
  cltq
  movzbl (%rbx,%rax,1),%ecx
  mov    %cl,0x0(%rbp,%rax,1)
L4:
  movslq %esi,%rdi
  add    %rbp,%rdi
L209:
  cmp    %r12d,%edx
  jle    L161
  movslq %esi,%rcx
  movslq %r12d,%rax
  mov    %edx,%edi
  lea    0x0(%rbp,%rcx,1),%r10
  lea    0x1(%rbx,%rax,1),%r11
  sub    %r12d,%edi
  mov    %r10,%r9
  lea    -0x1(%rdi),%r8d
  sub    %r11,%r9
  cmp    $0xe,%r9
  jbe    L420
  cmp    $0x6,%r8d
  jbe    L420
  cmp    $0xe,%r8d
  jbe    L6
  mov    %edi,%r8d
  lea    (%rbx,%rax,1),%rcx
  xor    %eax,%eax
  shr    $0x4,%r8d
  shl    $0x4,%r8
  nopl   0x0(%rax,%rax,1)
L243:
  movdqu (%rcx,%rax,1),%xmm1
  movups %xmm1,(%r10,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L243
  mov    %edi,%r8d
  and    $0xfffffff0,%r8d
  lea    (%rsi,%r8,1),%r9d
  add    %r8d,%r12d
  cmp    %r8d,%edi
  je     L511
  mov    %edi,%r11d
  sub    %r8d,%r11d
  lea    -0x1(%r11),%eax
  cmp    $0x6,%eax
  jbe    L516
L352:
  mov    (%rcx,%r8,1),%rax
  mov    %rax,(%r10,%r8,1)
  mov    %r11d,%eax
  and    $0xfffffff8,%eax
  add    %eax,%r9d
  add    %eax,%r12d
  cmp    %eax,%r11d
  je     L511
L516:
  movslq %r12d,%rax
  movzbl (%rbx,%rax,1),%ecx
  movslq %r9d,%rax
  mov    %cl,0x0(%rbp,%rax,1)
  lea    0x1(%r12),%eax
  lea    0x1(%r9),%ecx
  cmp    %eax,%edx
  jle    L511
  cltq
  movslq %ecx,%rcx
  movzbl (%rbx,%rax,1),%eax
  mov    %al,0x0(%rbp,%rcx,1)
  lea    0x2(%r12),%eax
  lea    0x2(%r9),%ecx
  cmp    %eax,%edx
  jle    L511
  cltq
  movslq %ecx,%rcx
  movzbl (%rbx,%rax,1),%eax
  mov    %al,0x0(%rbp,%rcx,1)
  lea    0x3(%r12),%eax
  lea    0x3(%r9),%ecx
  cmp    %eax,%edx
  jle    L511
  cltq
  movslq %ecx,%rcx
  movzbl (%rbx,%rax,1),%eax
  mov    %al,0x0(%rbp,%rcx,1)
  lea    0x4(%r12),%eax
  lea    0x4(%r9),%ecx
  cmp    %eax,%edx
  jle    L511
  cltq
  movslq %ecx,%rcx
  movzbl (%rbx,%rax,1),%eax
  mov    %al,0x0(%rbp,%rcx,1)
  lea    0x5(%r12),%eax
  lea    0x5(%r9),%ecx
  cmp    %eax,%edx
  jle    L511
  cltq
  movslq %ecx,%rcx
  add    $0x6,%r12d
  add    $0x6,%r9d
  movzbl (%rbx,%rax,1),%eax
  mov    %al,0x0(%rbp,%rcx,1)
  cmp    %r12d,%edx
  jle    L511
  movslq %r12d,%r12
  movslq %r9d,%r9
  movzbl (%rbx,%r12,1),%eax
  mov    %al,0x0(%rbp,%r9,1)
L511:
  add    %esi,%edi
  movslq %edi,%rdi
  add    %rbp,%rdi
L161:
  movb   $0x0,(%rdi)
  mov    $0x1,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax)
L230:
  test   %esi,%esi
  je     L526
  lea    0x1(%rbx),%rdi
  mov    %rbp,%rcx
  lea    -0x2(%rax),%eax
  sub    %rdi,%rcx
  cmp    $0xe,%rcx
  jbe    L63
  cmp    $0x6,%eax
  jbe    L63
  cmp    $0xe,%eax
  jbe    L232
  mov    %esi,%ecx
  xor    %eax,%eax
  shr    $0x4,%ecx
  shl    $0x4,%rcx
  nopl   0x0(%rax)
L295:
  movdqu (%rbx,%rax,1),%xmm2
  movups %xmm2,0x0(%rbp,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L295
  mov    %esi,%ecx
  and    $0xfffffff0,%ecx
  mov    %ecx,%eax
  cmp    %ecx,%esi
  je     L473
  sub    %ecx,%edx
  lea    -0x1(%rdx),%edi
  sub    $0x2,%edx
  cmp    $0x6,%edx
  jbe    L53
L15:
  mov    (%rbx,%rcx,1),%rdx
  mov    %rdx,0x0(%rbp,%rcx,1)
  mov    %edi,%edx
  and    $0xfffffff8,%edx
  add    %edx,%eax
  cmp    %edi,%edx
  je     L473
L53:
  movslq %eax,%rdx
  movzbl (%rbx,%rdx,1),%ecx
  mov    %cl,0x0(%rbp,%rdx,1)
  lea    0x1(%rax),%edx
  cmp    %esi,%edx
  jge    L473
  movslq %edx,%rdx
  movzbl (%rbx,%rdx,1),%ecx
  mov    %cl,0x0(%rbp,%rdx,1)
  lea    0x2(%rax),%edx
  cmp    %esi,%edx
  jge    L473
  movslq %edx,%rdx
  movzbl (%rbx,%rdx,1),%ecx
  mov    %cl,0x0(%rbp,%rdx,1)
  lea    0x3(%rax),%edx
  cmp    %edx,%esi
  jle    L473
  movslq %edx,%rdx
  movzbl (%rbx,%rdx,1),%ecx
  mov    %cl,0x0(%rbp,%rdx,1)
  lea    0x4(%rax),%edx
  cmp    %esi,%edx
  jge    L473
  movslq %edx,%rdx
  movzbl (%rbx,%rdx,1),%ecx
  mov    %cl,0x0(%rbp,%rdx,1)
  lea    0x5(%rax),%edx
  cmp    %edx,%esi
  jle    L473
  movslq %edx,%rdx
  add    $0x6,%eax
  movzbl (%rbx,%rdx,1),%ecx
  mov    %cl,0x0(%rbp,%rdx,1)
  cmp    %eax,%esi
  jle    L473
  cltq
  movzbl (%rbx,%rax,1),%edx
  mov    %dl,0x0(%rbp,%rax,1)
L473:
  movslq %esi,%rsi
  add    %rsi,%rbp
L526:
  pop    %rbx
  movb   $0x0,0x0(%rbp)
  mov    $0x1,%eax
  pop    %rbp
  pop    %r12
  ret
  nopl   (%rax)
L463:
  pop    %rbx
  movb   $0x0,0x0(%rbp)
  mov    $0xffffffff,%eax
  pop    %rbp
  pop    %r12
  ret
  cs nopw 0x0(%rax,%rax,1)
L154:
  mov    %eax,%ecx
  xor    %eax,%eax
  nopl   0x0(%rax)
L509:
  movzbl (%rbx,%rax,1),%edi
  mov    %dil,0x0(%rbp,%rax,1)
  mov    %rax,%rdi
  add    $0x1,%rax
  cmp    %rcx,%rdi
  jne    L509
  jmp    L4
  nopw   0x0(%rax,%rax,1)
L420:
  sub    %rax,%rcx
  add    %rbp,%rcx
  xchg   %ax,%ax
L393:
  movzbl (%rbx,%rax,1),%r8d
  mov    %r8b,(%rcx,%rax,1)
  add    $0x1,%rax
  cmp    %eax,%edx
  jg     L393
  jmp    L511
  cs nopw 0x0(%rax,%rax,1)
L63:
  mov    %eax,%edx
  xor    %eax,%eax
  nopl   0x0(%rax)
L98:
  movzbl (%rbx,%rax,1),%ecx
  mov    %cl,0x0(%rbp,%rax,1)
  mov    %rax,%rcx
  add    $0x1,%rax
  cmp    %rdx,%rcx
  jne    L98
  jmp    L473
L6:
  mov    %edi,%r11d
  mov    %esi,%r9d
  lea    (%rbx,%rax,1),%rcx
  xor    %r8d,%r8d
  jmp    L352
L226:
  mov    %esi,%edi
  xor    %ecx,%ecx
  xor    %eax,%eax
  jmp    L450
L232:
  mov    %esi,%edi
  xor    %ecx,%ecx
  xor    %eax,%eax
  jmp    L15
```

assistant: ```c
int strremoveleft(char *dst, char *src, int pos) {
  int i, j, src_len;
  src_len = strlen(src);
  if (pos < 1 || pos > src_len) {
    dst[0] = '\0';
    return (-1);
  }
  if (pos == src_len) {
    for (i = 0; i < src_len - 1; i++) {
      dst[i] = src[i];
    }
    dst[i] = '\0';
  } else {
    for (i = 0; i < pos - 1; i++) {
      dst[i] = src[i];
    }
    for (j = pos; j < src_len; j++) {
      dst[i] = src[j];
      i++;
    }
    dst[i] = '\0';
  }
  return (1);
}
```