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

```asm
<_ZNKSt6vectorIPiSaIS0_EE12_M_check_lenEmPKc>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xf0,%rsp
  mov    %rdi,-0xd8(%rbp)
  mov    %rsi,-0xe0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0xd8(%rbp),%rax
  mov    %rax,-0xc0(%rbp)
  mov    -0xe0(%rbp),%rax
  mov    %rax,-0xb8(%rbp)
  mov    -0xe8(%rbp),%rax
  mov    %rax,-0xb0(%rbp)
  mov    -0xc0(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZNKSt6vectorIPiSaIS0_EE8max_sizeEv@plt>
  mov    %rax,-0x88(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZNKSt6vectorIPiSaIS0_EE4sizeEv@plt>
  mov    %rax,-0x80(%rbp)
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  mov    -0x88(%rbp),%rax
  sub    -0x80(%rbp),%rax
  cmp    %rax,-0x78(%rbp)
  jbe    L17
  nop
  mov    -0xb0(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZSt20__throw_length_errorPKc@plt>
  jmp    L55
L17:
  nop
L55:
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZNKSt6vectorIPiSaIS0_EE4sizeEv@plt>
  mov    %rax,-0x68(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZNKSt6vectorIPiSaIS0_EE4sizeEv@plt>
  mov    %rax,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  lea    -0xb8(%rbp),%rdx
  lea    -0xa0(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <_ZSt3maxImERKT_S2_S2_@plt>
  mov    %rax,-0x58(%rbp)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x68(%rbp),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0xa8(%rbp)
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZNKSt6vectorIPiSaIS0_EE4sizeEv@plt>
  mov    %rax,-0x40(%rbp)
  mov    -0x48(%rbp),%rax
  cmp    -0x40(%rbp),%rax
  jb     L64
  nop
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZNKSt6vectorIPiSaIS0_EE8max_sizeEv@plt>
  mov    %rax,-0x30(%rbp)
  mov    -0x38(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jbe    L69
  jmp    L41
L64:
  nop
L41:
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <_ZNKSt6vectorIPiSaIS0_EE8max_sizeEv@plt>
  mov    %rax,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  jmp    L16
L69:
  nop
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  nop
L16:
  mov    -0x98(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  mov    %rax,-0xc8(%rbp)
  mov    -0xc8(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L18
  call   <__stack_chk_fail@plt>
L18:
  leave
  ret
```

assistant: ```c
unsigned long long _ZNKSt6vectorIPiSaIS0_EE12_M_check_lenEmPKc(struct l_class_OC_std_KD__KD_vector *llvm_cbe_this, unsigned long long llvm_cbe___n, unsigned char *llvm_cbe___s) {
  unsigned long long llvm_cbe_retval;
  struct l_class_OC_std_KD__KD_vector *llvm_cbe_this_2e_addr;
  unsigned long long llvm_cbe___n_2e_addr;
  unsigned char *llvm_cbe___s_2e_addr;
  unsigned long long llvm_cbe___len;
  unsigned long long llvm_cbe_reftmp;
  struct l_class_OC_std_KD__KD_vector *llvm_cbe_this1;
  unsigned long long llvm_cbe_call;
  unsigned long long llvm_cbe_call2;
  unsigned long long llvm_cbe_tmp;
  unsigned char *llvm_cbe_tmp3;
  unsigned long long llvm_cbe_call5;
  unsigned long long llvm_cbe_call6;
  unsigned long long *llvm_cbe_call7;
  unsigned long long llvm_cbe_tmp8;
  unsigned long long llvm_cbe_tmp9;
  unsigned long long llvm_cbe_call10;
  unsigned long long llvm_cbe_tmp12;
  unsigned long long llvm_cbe_call13;
  unsigned long long llvm_cbe_call15;
  unsigned long long llvm_cbe_tmp16;
  unsigned long long llvm_cbe_cond;
  unsigned long long llvm_cbe_cond__PHI_TEMPORARY;
  unsigned long long llvm_cbe_tmp__27;
  *(&llvm_cbe_this_2e_addr) = llvm_cbe_this;
  *(&llvm_cbe___n_2e_addr) = llvm_cbe___n;
  *(&llvm_cbe___s_2e_addr) = llvm_cbe___s;
  llvm_cbe_this1 = *(&llvm_cbe_this_2e_addr);
  llvm_cbe_call = _ZNKSt6vectorIPiSaIS0_EE8max_sizeEv(llvm_cbe_this1);
  llvm_cbe_call2 = _ZNKSt6vectorIPiSaIS0_EE4sizeEv(llvm_cbe_this1);
  llvm_cbe_tmp = *(&llvm_cbe___n_2e_addr);
  if ((((unsigned long long)(((unsigned long long)(((unsigned long long)llvm_cbe_call) - ((unsigned long long)llvm_cbe_call2))))) < ((unsigned long long)llvm_cbe_tmp))) {
    goto llvm_cbe_if_2e_then;
  } else {
    goto llvm_cbe_if_2e_end;
  }
llvm_cbe_if_2e_then:
  llvm_cbe_tmp3 = *(&llvm_cbe___s_2e_addr);
  _ZSt20__throw_length_errorPKc(llvm_cbe_tmp3);
  ;
llvm_cbe_if_2e_end:
  llvm_cbe_call5 = _ZNKSt6vectorIPiSaIS0_EE4sizeEv(llvm_cbe_this1);
  llvm_cbe_call6 = _ZNKSt6vectorIPiSaIS0_EE4sizeEv(llvm_cbe_this1);
  *(&llvm_cbe_reftmp) = llvm_cbe_call6;
  llvm_cbe_call7 = _ZSt3maxImERKT_S2_S2_((&llvm_cbe_reftmp), (&llvm_cbe___n_2e_addr));
  llvm_cbe_tmp8 = *llvm_cbe_call7;
  *(&llvm_cbe___len) = (((unsigned long long)(((unsigned long long)llvm_cbe_call5) + ((unsigned long long)llvm_cbe_tmp8))));
  llvm_cbe_tmp9 = *(&llvm_cbe___len);
  llvm_cbe_call10 = _ZNKSt6vectorIPiSaIS0_EE4sizeEv(llvm_cbe_this1);
  if ((((unsigned long long)llvm_cbe_tmp9) < ((unsigned long long)llvm_cbe_call10))) {
    goto llvm_cbe_cond_2e_true;
  } else {
    goto llvm_cbe_lor_2e_lhs_2e_false;
  }
llvm_cbe_lor_2e_lhs_2e_false:
  llvm_cbe_tmp12 = *(&llvm_cbe___len);
  llvm_cbe_call13 = _ZNKSt6vectorIPiSaIS0_EE8max_sizeEv(llvm_cbe_this1);
  if ((((unsigned long long)llvm_cbe_tmp12) > ((unsigned long long)llvm_cbe_call13))) {
    goto llvm_cbe_cond_2e_true;
  } else {
    goto llvm_cbe_cond_2e_false;
  }
llvm_cbe_cond_2e_true:
  llvm_cbe_call15 = _ZNKSt6vectorIPiSaIS0_EE8max_sizeEv(llvm_cbe_this1);
  llvm_cbe_cond__PHI_TEMPORARY = llvm_cbe_call15;
  goto llvm_cbe_cond_2e_end;
llvm_cbe_cond_2e_false:
  llvm_cbe_tmp16 = *(&llvm_cbe___len);
  llvm_cbe_cond__PHI_TEMPORARY = llvm_cbe_tmp16;
  goto llvm_cbe_cond_2e_end;
llvm_cbe_cond_2e_end:
  llvm_cbe_cond = llvm_cbe_cond__PHI_TEMPORARY;
  *(&llvm_cbe_retval) = llvm_cbe_cond;
  llvm_cbe_tmp__27 = *(&llvm_cbe_retval);
  return llvm_cbe_tmp__27;
}
```