user: 请将以下的汇编代码转换成C语言代码：

```asm
<GetLeftRotatedString>:
  endbr64
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  call   <strlen@plt>
  movslq %eax,%rbp
  lea    0x1(%rbp),%edi
  call   <malloc@plt>
  mov    %ebp,%ecx
  mov    %rax,%r8
  mov    %r12d,%eax
  cltd
  idiv   %ebp
  sub    %edx,%ecx
  movslq %ecx,%rdi
  add    %r8,%rdi
  test   %edx,%edx
  jle    L164
  add    %r8,%rbp
  lea    0x1(%rbx),%r12
  lea    -0x1(%rdx),%r9d
  movslq %edx,%rsi
  mov    %rbp,%r10
  sub    %rsi,%r10
  mov    %r10,%r11
  mov    %r10,%rax
  sub    %r12,%r11
  cmp    $0xe,%r11
  jbe    L120
  cmp    $0x6,%r9d
  jbe    L120
  cmp    $0xe,%r9d
  jbe    L156
  mov    %edx,%r9d
  sub    %rbp,%rsi
  shr    $0x4,%r9d
  add    %rbx,%rsi
  sub    $0x1,%r9d
  shl    $0x4,%r9
  lea    0x10(%r10,%r9,1),%r9
  xchg   %ax,%ax
L272:
  movdqu (%rax,%rsi,1),%xmm0
  add    $0x10,%rax
  movups %xmm0,-0x10(%rax)
  cmp    %r9,%rax
  jne    L272
  mov    %edx,%eax
  mov    %edx,%r9d
  and    $0xfffffff0,%eax
  mov    %eax,%esi
  lea    (%rbx,%rsi,1),%rbp
  lea    (%rdi,%rsi,1),%r11
  cmp    %eax,%edx
  je     L282
  mov    %edx,%r12d
  sub    %eax,%r12d
  lea    -0x1(%r12),%r9d
  cmp    $0x6,%r9d
  jbe    L205
L141:
  mov    (%rbx,%rsi,1),%r9
  mov    %r9,(%r10,%rsi,1)
  mov    %r12d,%esi
  and    $0xfffffff8,%esi
  mov    %esi,%r9d
  add    %esi,%eax
  add    %r9,%rbp
  add    %r9,%r11
  mov    %edx,%r9d
  cmp    %esi,%r12d
  je     L282
L205:
  movzbl 0x0(%rbp),%esi
  mov    %edx,%r9d
  mov    %sil,(%r11)
  lea    0x1(%rax),%esi
  cmp    %esi,%edx
  jle    L282
  movzbl 0x1(%rbp),%esi
  mov    %sil,0x1(%r11)
  lea    0x2(%rax),%esi
  cmp    %esi,%edx
  jle    L282
  movzbl 0x2(%rbp),%esi
  mov    %sil,0x2(%r11)
  lea    0x3(%rax),%esi
  cmp    %esi,%edx
  jle    L282
  movzbl 0x3(%rbp),%esi
  mov    %sil,0x3(%r11)
  lea    0x4(%rax),%esi
  cmp    %esi,%edx
  jle    L282
  movzbl 0x4(%rbp),%esi
  mov    %sil,0x4(%r11)
  lea    0x5(%rax),%esi
  cmp    %esi,%edx
  jle    L282
  movzbl 0x5(%rbp),%esi
  add    $0x6,%eax
  mov    %sil,0x5(%r11)
  cmp    %eax,%edx
  jle    L282
  movzbl 0x6(%rbp),%eax
  mov    %al,0x6(%r11)
L282:
  add    %r9,%rbx
  add    %r9,%rdi
L164:
  movb   $0x0,(%rdi)
  test   %ecx,%ecx
  jle    L123
  lea    0x1(%rbx),%rsi
  mov    %r8,%rdx
  lea    -0x1(%rcx),%eax
  sub    %rsi,%rdx
  cmp    $0xe,%rdx
  jbe    L296
  cmp    $0x6,%eax
  jbe    L296
  mov    %ecx,%esi
  cmp    $0xe,%eax
  jbe    L73
  mov    %ecx,%eax
  mov    %rbx,%rdx
  shr    $0x4,%eax
  sub    %r8,%rdx
  sub    $0x1,%eax
  shl    $0x4,%rax
  lea    0x10(%r8,%rax,1),%rdi
  mov    %r8,%rax
  nopl   0x0(%rax,%rax,1)
L294:
  movdqu (%rax,%rdx,1),%xmm1
  add    $0x10,%rax
  movups %xmm1,-0x10(%rax)
  cmp    %rdi,%rax
  jne    L294
  mov    %ecx,%eax
  and    $0xfffffff0,%eax
  mov    %eax,%edx
  sub    %eax,%ecx
  lea    (%rbx,%rdx,1),%r9
  add    %r8,%rdx
  cmp    %eax,%esi
  je     L123
L245:
  sub    %eax,%esi
  lea    -0x1(%rsi),%edi
  cmp    $0x6,%edi
  jbe    L6
  mov    (%rbx,%rax,1),%rdi
  mov    %rdi,(%r8,%rax,1)
  mov    %esi,%eax
  and    $0xfffffff8,%eax
  mov    %eax,%edi
  sub    %eax,%ecx
  add    %rdi,%r9
  add    %rdi,%rdx
  cmp    %eax,%esi
  je     L123
L6:
  movzbl (%r9),%eax
  mov    %al,(%rdx)
  cmp    $0x1,%ecx
  je     L123
  movzbl 0x1(%r9),%eax
  mov    %al,0x1(%rdx)
  cmp    $0x2,%ecx
  je     L123
  movzbl 0x2(%r9),%eax
  mov    %al,0x2(%rdx)
  cmp    $0x3,%ecx
  je     L123
  movzbl 0x3(%r9),%eax
  mov    %al,0x3(%rdx)
  cmp    $0x4,%ecx
  je     L123
  movzbl 0x4(%r9),%eax
  mov    %al,0x4(%rdx)
  cmp    $0x5,%ecx
  je     L123
  movzbl 0x5(%r9),%eax
  mov    %al,0x5(%rdx)
  cmp    $0x6,%ecx
  je     L123
  movzbl 0x6(%r9),%eax
  mov    %al,0x6(%rdx)
L123:
  pop    %rbx
  mov    %r8,%rax
  pop    %rbp
  pop    %r12
  ret
  nopw   0x0(%rax,%rax,1)
L296:
  lea    0x1(%r8,%rax,1),%rcx
  sub    %r8,%rbx
  mov    %r8,%rax
  nopl   0x0(%rax,%rax,1)
L68:
  movzbl (%rax,%rbx,1),%edx
  add    $0x1,%rax
  mov    %dl,-0x1(%rax)
  cmp    %rcx,%rax
  jne    L68
  pop    %rbx
  mov    %r8,%rax
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax,%rax,1)
L120:
  mov    %edx,%r9d
  xor    %eax,%eax
  nopl   (%rax)
L251:
  movzbl (%rbx,%rax,1),%edx
  mov    %dl,(%rdi,%rax,1)
  add    $0x1,%rax
  cmp    %r9,%rax
  jne    L251
  jmp    L282
L156:
  mov    %edx,%r12d
  mov    %rdi,%r11
  mov    %rbx,%rbp
  xor    %eax,%eax
  xor    %esi,%esi
  jmp    L141
L73:
  mov    %r8,%rdx
  mov    %rbx,%r9
  xor    %eax,%eax
  jmp    L245
```

assistant: ```c
char *GetLeftRotatedString(char *original, int count) {
  int length, i;
  char *new;
  char *source;
  char *destination;
  length = strlen(original);
  new = (char *)malloc((length + 1) * sizeof(char));
  count = count % length;
  source = original;
  destination = new + (length - count);
  for (i = 0; i < count; i++) {
    *destination = *source;
    source++;
    destination++;
  }
  *destination = '\0';
  destination = new;
  for (i = length - count; i > 0; i--) {
    *destination = *source;
    source++;
    destination++;
  }
  return new;
}
```