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

```asm
<makespace>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %esi,%ebx
  sub    $0x8,%rsp
  mov    (%rdi),%rdi
  test   %rdi,%rdi
  je     L26
  call   <strlen@plt>
  mov    0x0(%rbp),%rdi
  lea    D32(%rip),%r13
  lea    D43(%rip),%r12
  mov    %r13,%rcx
  mov    $0x70,%edx
  lea    0x1(%rbx,%rax,1),%ebx
  mov    %r12,%rsi
  call   <slurm_xsize@plt>
  cmp    %eax,%ebx
  jle    L28
  lea    0x3f(%rax),%ecx
  lea    0x40(%rax),%edx
  mov    %rbp,%rdi
  mov    %r13,%r8
  cmp    %ebx,%ecx
  mov    $0x78,%ecx
  cmovge %edx,%ebx
  add    %eax,%eax
  mov    %r12,%rdx
  cmp    %ebx,%eax
  cmovge %eax,%ebx
  mov    %ebx,%esi
  call   <slurm_xrealloc@plt>
  mov    0x0(%rbp),%rdi
  mov    %r13,%rcx
  mov    %r12,%rsi
  mov    $0x79,%edx
  call   <slurm_xsize@plt>
  cmp    %eax,%ebx
  jne    L1
L28:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax)
L26:
  lea    0x1(%rsi),%edi
  lea    D32(%rip),%rcx
  mov    $0x6b,%edx
  lea    D43(%rip),%rsi
  call   <slurm_xmalloc@plt>
  mov    %rax,0x0(%rbp)
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopw   0x0(%rax,%rax,1)
L1:
  add    $0x8,%rsp
  mov    %r13,%rcx
  mov    %r12,%rsi
  mov    $0x7a,%edx
  pop    %rbx
  lea    D22(%rip),%rdi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    10c0 <__xassert_failed@plt>
```

tool_calls: name: retrieve_data
arguments: label: D32
type_infered: string
name: retrieve_data
arguments: label: D43
type_infered: string
name: retrieve_data
arguments: label: D22
type_infered: string

tool: 

tool: D43: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Q-Leap-Networks/debian-slurm/refs/heads/master/src/common/xstring.c

tool: D22: actual_size == new_size

assistant: ```c
void makespace(char **str, int needed) {
  if (*str == NULL)
    *str = slurm_xmalloc(needed + 1, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Q-Leap-Networks/debian-slurm/refs/heads/master/src/common/xstring.c", 107, "");
  else {
    int actual_size;
    int used = strlen(*str) + 1;
    int min_new_size = used + needed;
    int cur_size = slurm_xsize((void *)*str, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Q-Leap-Networks/debian-slurm/refs/heads/master/src/common/xstring.c", 112, "");
    if (min_new_size > cur_size) {
      int new_size = min_new_size;
      if (new_size < (cur_size + 64))
        new_size = cur_size + 64;
      if (new_size < (cur_size * 2))
        new_size = cur_size * 2;
      slurm_xrealloc((void **)&(*str), new_size, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Q-Leap-Networks/debian-slurm/refs/heads/master/src/common/xstring.c", 120, "");
      actual_size = slurm_xsize((void *)*str, "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Q-Leap-Networks/debian-slurm/refs/heads/master/src/common/xstring.c", 121, "");
      (void)({ (actual_size == new_size) ? ((void)0) : __xassert_failed("actual_size == new_size", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/Q-Leap-Networks/debian-slurm/refs/heads/master/src/common/xstring.c", 122, ""); });
    }
  }
}
```