// File: /workspace/github_c_makefile_star2_O0/cogbee[P]vmir-latest/src/vmir.c
// Function: iu_cleanup
static void
iu_cleanup(ir_unit_t *iu)
{
  value_resize(iu, 0);

  VECTOR_CLEAR(&iu->iu_argv);
  VECTOR_CLEAR(&iu->iu_branch_fixups);
  VECTOR_CLEAR(&iu->iu_jit_vmbb_fixups);
  VECTOR_CLEAR(&iu->iu_jit_branch_fixups);
  VECTOR_CLEAR(&iu->iu_jit_bb_to_addr_fixups);
  VECTOR_CLEAR(&iu->iu_initializers);
  VECTOR_CLEAR(&iu->iu_values);

  VECTOR_CLEAR(&iu->iu_wasm_type_map);
  VECTOR_CLEAR(&iu->iu_wasm_globalvar_map);
  VECTOR_CLEAR(&iu->iu_wasm_functions);
  VECTOR_CLEAR(&iu->iu_wasm_value_stack);
  VECTOR_CLEAR(&iu->iu_wasm_cfg_stack);

  ir_attr_t *ia;
  while((ia = LIST_FIRST(&iu->iu_attribute_groups)) != NULL) {
    LIST_REMOVE(ia, ia_link);
    free(ia);
  }

  for(int i = 0; i < VECTOR_LEN(&iu->iu_attrsets); i++) {
    ir_attrset_t *ias = &VECTOR_ITEM(&iu->iu_attrsets, i);
    free(ias->ias_list);
  }
  VECTOR_CLEAR(&iu->iu_attrsets);

  iu->iu_current_bb = NULL;
  iu->iu_current_function = NULL;

  for(int i = 0; i < IU_MAX_TMP_STR; i++) {
    free(iu->iu_tmp_str[i]);
    iu->iu_tmp_str[i] = NULL;
  }

  ir_blockinfo_t *ib;
  while((ib = LIST_FIRST(&iu->iu_blockinfos)) != NULL)
    blockinfo_destroy(ib);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x1ccd0
movq -0x8(%rbp), %rax
movq $0x0, 0x460(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x458(%rax)
movq -0x8(%rbp), %rax
movq 0x450(%rax), %rdi
callq 0x3030
jmp 0x17717
movq -0x8(%rbp), %rax
movq $0x0, 0x318(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x310(%rax)
movq -0x8(%rbp), %rax
movq 0x308(%rax), %rdi
callq 0x3030
jmp 0x17747
movq -0x8(%rbp), %rax
movq $0x0, 0x330(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x328(%rax)
movq -0x8(%rbp), %rax
movq 0x320(%rax), %rdi
callq 0x3030
jmp 0x17777
movq -0x8(%rbp), %rax
movq $0x0, 0x348(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x340(%rax)
movq -0x8(%rbp), %rax
movq 0x338(%rax), %rdi
callq 0x3030
jmp 0x177a7
movq -0x8(%rbp), %rax
movq $0x0, 0x360(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x358(%rax)
movq -0x8(%rbp), %rax
movq 0x350(%rax), %rdi
callq 0x3030
jmp 0x177d7
movq -0x8(%rbp), %rax
movq $0x0, 0x300(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x2f8(%rax)
movq -0x8(%rbp), %rax
movq 0x2f0(%rax), %rdi
callq 0x3030
jmp 0x17807
movq -0x8(%rbp), %rax
movq $0x0, 0x190(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x188(%rax)
movq -0x8(%rbp), %rax
movq 0x180(%rax), %rdi
callq 0x3030
jmp 0x17837
movq -0x8(%rbp), %rax
movq $0x0, 0x590(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x588(%rax)
movq -0x8(%rbp), %rax
movq 0x580(%rax), %rdi
callq 0x3030
jmp 0x17867
movq -0x8(%rbp), %rax
movq $0x0, 0x5a8(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x5a0(%rax)
movq -0x8(%rbp), %rax
movq 0x598(%rax), %rdi
callq 0x3030
jmp 0x17897
movq -0x8(%rbp), %rax
movq $0x0, 0x5c0(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x5b8(%rax)
movq -0x8(%rbp), %rax
movq 0x5b0(%rax), %rdi
callq 0x3030
jmp 0x178c7
movq -0x8(%rbp), %rax
movq $0x0, 0x5d8(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x5d0(%rax)
movq -0x8(%rbp), %rax
movq 0x5c8(%rax), %rdi
callq 0x3030
jmp 0x178f7
movq -0x8(%rbp), %rax
movq $0x0, 0x5f0(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x5e8(%rax)
movq -0x8(%rbp), %rax
movq 0x5e0(%rax), %rdi
callq 0x3030
jmp 0x17927
movq -0x8(%rbp), %rax
movq 0x148(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
je 0x17978
jmp 0x1793e
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x1795b
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rdi
callq 0x3030
jmp 0x17927
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x158(%rcx), %rax
jae 0x179c2
movq -0x8(%rbp), %rax
movq 0x150(%rax), %rax
movslq -0x14(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x3030
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x1797f
jmp 0x179c4
movq -0x8(%rbp), %rax
movq $0x0, 0x160(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x158(%rax)
movq -0x8(%rbp), %rax
movq 0x150(%rax), %rdi
callq 0x3030
movq -0x8(%rbp), %rax
movq $0x0, 0x1c8(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x1c0(%rax)
movl $0x0, -0x24(%rbp)
cmpl $0x20, -0x24(%rbp)
jge 0x17a51
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq 0x1d0(%rax,%rcx,8), %rdi
callq 0x3030
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq $0x0, 0x1d0(%rax,%rcx,8)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x17a17
jmp 0x17a53
movq -0x8(%rbp), %rax
movq 0x138(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x17a73
movq -0x30(%rbp), %rdi
callq 0x1cd90
jmp 0x17a53
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)