// File: /workspace/github_c_makefile_star2_O0/wuxb45[P]SLB/lib1.c
// Function: string_tokens
char **
string_tokens(const char * const str, const char * const delim)
{
  if (str == NULL) return NULL;
  size_t aptr = 32;
  char ** tokens = (typeof(tokens))malloc(sizeof(tokens[0]) * aptr);
  if (tokens == NULL) return NULL;
  size_t i = 0;
  char * const dup = strdup(str);
  char * internal = NULL;
  const size_t bufsize = strlen(dup) + 1;
  char * tok = strtok_r(dup, delim, &internal);
  while (tok) {
    if (i >= aptr) {
      char ** const r = (typeof(tokens))realloc(tokens, sizeof(tokens[0]) * (aptr + 32));
      if (r == NULL) {
        free(tokens);
        free(dup);
        return NULL;
      }
      tokens = r;
      aptr += 32;
    }
    tokens[i] = tok;
    i++;
    tok = strtok_r(NULL, delim, &internal);
  }
  tokens[i] = tok;
  const size_t nptr = i + 1;
  const size_t rsize = (sizeof(tokens[0]) * nptr) + bufsize;
  char ** const r = (typeof(tokens))realloc(tokens, rsize);
  if (r == NULL) {
    free(tokens);
    free(dup);
    return NULL;
  }
  tokens = r;
  char * const content = (char *)(&(tokens[nptr]));
  memcpy(content, dup, bufsize);
  for (u64 j = 0; j < i; j++) {
    tokens[j] += (content - dup);
  }
  free(dup);
  return tokens;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0xa6f7
movq $0x0, -0x8(%rbp)
jmp 0xa8dd
movq $0x20, -0x20(%rbp)
movq -0x20(%rbp), %rdi
shlq $0x3, %rdi
callq 0x6380
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0xa724
movq $0x0, -0x8(%rbp)
jmp 0xa8dd
movq $0x0, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6580
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x38(%rbp), %rdi
callq 0x6170
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x6270
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0xa805
movq -0x30(%rbp), %rax
cmpq -0x20(%rbp), %rax
jb 0xa7cf
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x20, %rsi
shlq $0x3, %rsi
callq 0x63c0
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0xa7bb
movq -0x28(%rbp), %rdi
callq 0x6060
movq -0x38(%rbp), %rdi
callq 0x6060
movq $0x0, -0x8(%rbp)
jmp 0xa8dd
movq -0x58(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x20(%rbp)
movq -0x50(%rbp), %rdx
movq -0x28(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edi
leaq -0x40(%rbp), %rdx
callq 0x6270
movq %rax, -0x50(%rbp)
jmp 0xa767
movq -0x50(%rbp), %rdx
movq -0x28(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
shlq $0x3, %rax
addq -0x48(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x28(%rbp), %rdi
movq -0x68(%rbp), %rsi
callq 0x63c0
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x70(%rbp)
jne 0xa865
movq -0x28(%rbp), %rdi
callq 0x6060
movq -0x38(%rbp), %rdi
callq 0x6060
movq $0x0, -0x8(%rbp)
jmp 0xa8dd
movq -0x70(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq -0x60(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x48(%rbp), %rdx
callq 0x6320
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0xa8cc
movq -0x78(%rbp), %rdx
movq -0x38(%rbp), %rax
subq %rax, %rdx
movq -0x28(%rbp), %rax
movq -0x80(%rbp), %rcx
addq (%rax,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0xa899
movq -0x38(%rbp), %rdi
callq 0x6060
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nopw (%rax,%rax)