// File: /workspace/github_c_makefile_star2_O0/tabemann[P]attoforth/src/runtime/prim.c
// Function: af_prim_create
void af_prim_create(af_task_t* task) {
  af_global_t* global = task->global;
  af_byte_t* name;
  af_cell_t name_length;
  size_t data_space_current = (size_t)task->data_space_current;
  size_t name_size;
  size_t pad_size;
  void* word_space;
  af_word_t* word;
  af_compiled_t* secondary;
  if(!af_parse_name_available(global, task)) {
    af_handle_word_expected(global, task);
    return;
  }
  name = af_parse_name(global, task, &name_length);
  name_length = name_length < 256 ? name_length : 255;
  name_size = (name_length + 1) * sizeof(af_byte_t);
  pad_size = ((data_space_current + name_size) % sizeof(af_cell_t)) == 0 ?
    0 * sizeof(af_byte_t) :
    sizeof(af_cell_t) - ((data_space_current + name_size) % sizeof(af_cell_t));
  if(!(word_space = af_allocate(global, task,
				sizeof(af_word_t) + name_size + pad_size))) {
    return;
  }
  word = word_space + name_size + pad_size;
  AF_WORD_NAME_LEN(word) = (af_byte_t)name_length;
  memmove(AF_WORD_NAME_DATA(word), name, name_length);
  word->flags = 0;
  word->code = af_prim_push_data;
  word->secondary = NULL;
  word->next_of_all_words = global->first_of_all_words;
  global->first_of_all_words = word;
  task->most_recent_word = word;
  word->next_word = task->current_wordlist->first_word;
  task->current_wordlist->first_word = word;
  AF_ADVANCE_IP(task, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0xc8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x5620
cmpq $0x0, %rax
jne 0x931b
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x43e0
jmp 0x94c6
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x57b0
movq %rax, -0x18(%rbp)
cmpq $0x100, -0x20(%rbp)     # imm = 0x100
jae 0x9344
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
jmp 0x934f
movl $0xff, %eax
movq %rax, -0x60(%rbp)
jmp 0x934f
movq -0x60(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
shlq $0x0, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
addq -0x30(%rbp), %rax
andq $0x7, %rax
cmpq $0x0, %rax
jne 0x9381
xorl %eax, %eax
movq %rax, -0x68(%rbp)
jmp 0x9399
movq -0x28(%rbp), %rcx
addq -0x30(%rbp), %rcx
andq $0x7, %rcx
movl $0x8, %eax
subq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rsi
movq -0x30(%rbp), %rdx
addq $0x28, %rdx
addq -0x38(%rbp), %rdx
callq 0x4790
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0x93c9
jmp 0x94c6
movq -0x40(%rbp), %rax
addq -0x30(%rbp), %rax
addq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rax
movb %al, %cl
movq -0x48(%rbp), %rax
movb %cl, -0x1(%rax)
movq -0x48(%rbp), %rdi
addq $-0x1, %rdi
movq -0x48(%rbp), %rax
movzbl -0x1(%rax), %eax
movslq %eax, %rcx
xorl %eax, %eax
subq %rcx, %rax
addq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x2230
movq -0x48(%rbp), %rax
movq $0x0, 0x18(%rax)
movq -0x48(%rbp), %rax
leaq 0xd4db(%rip), %rcx      # 0x16900
movq %rcx, (%rax)
movq -0x48(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x10(%rbp), %rax
movq 0x190(%rax), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x190(%rax)
movq -0x48(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xe0(%rax)
movq -0x8(%rbp), %rax
movq 0xa8(%rax), %rax
movq (%rax), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x48(%rbp), %rcx
movq -0x8(%rbp), %rax
movq 0xa8(%rax), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x94b2
movq -0x58(%rbp), %rax
movq 0x58(%rax), %rax
addq $0x8, %rax
movq %rax, -0x70(%rbp)
jmp 0x94ba
xorl %eax, %eax
movq %rax, -0x70(%rbp)
jmp 0x94ba
movq -0x70(%rbp), %rcx
movq -0x58(%rbp), %rax
movq %rcx, 0x58(%rax)
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)