// File: /workspace/github_c_makefile_star2_O3/hikalium[P]compilium/compilium.c
// Function: TestList
void TestList() {
  fprintf(stderr, "Testing List...");

  struct Node *list = AllocList();
  struct Node *item1 = AllocNode(kNodeNone);
  struct Node *item2 = AllocNode(kNodeNone);
  assert(list);

  PushToList(list, item1);
  assert(GetSizeOfList(list) == 1);
  PushToList(list, item2);
  assert(GetSizeOfList(list) == 2);

  assert(GetNodeAt(list, 0) == item1);
  assert(GetNodeAt(list, 1) == item2);

  int base_capacity = list->capacity;
  while (GetSizeOfList(list) <= base_capacity) {
    PushToList(list, item1);
  }
  assert(list->capacity > base_capacity);
  assert(GetNodeAt(list, 0) == item1);
  assert(GetNodeAt(list, 1) == item2);
  assert(GetNodeAt(list, GetSizeOfList(list) - 1) == item1);

  PushKeyValueToList(list, "item1", item1);
  PushKeyValueToList(list, "item2", item2);
  assert(GetNodeByKey(list, "item1") == item1);
  assert(GetNodeByKey(list, "item2") == item2);
  assert(GetNodeByKey(list, "not_existed") == NULL);

  fprintf(stderr, "PASS\n");
  exit(EXIT_SUCCESS);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq 0xc556(%rip), %r13      # 0x10ff8
movq (%r13), %rcx
leaq 0x6be8(%rip), %rdi      # 0xb695
movl $0xf, %esi
movl $0x1, %edx
callq 0x21b0
movl $0x6, %edi
callq 0x3f11
movq %rax, %rbx
xorl %edi, %edi
callq 0x3f11
movq %rax, %r15
xorl %edi, %edi
callq 0x3f11
testq %rbx, %rbx
jne 0x4af7
leaq 0x77a9(%rip), %rdi      # 0xc28f
leaq 0x6b1d(%rip), %rsi      # 0xb60a
movl $0xa3, %edx
callq 0x46d0
movq %rax, %r14
movq %rbx, %rdi
callq 0x47dc
movq 0x90(%rbx), %rcx
movslq 0x88(%rbx), %rax
leal 0x1(%rax), %edx
movl %edx, 0x88(%rbx)
movq %r15, (%rcx,%rax,8)
cmpl $0x6, (%rbx)
jne 0x4bc9
testl %eax, %eax
jne 0x4be1
movq %rbx, %rdi
callq 0x47dc
movq 0x90(%rbx), %rcx
movslq 0x88(%rbx), %rdx
leal 0x1(%rdx), %eax
movl %eax, 0x88(%rbx)
movq %r14, (%rcx,%rdx,8)
cmpl $0x6, (%rbx)
jne 0x4bc9
cmpl $0x2, %eax
jne 0x4bf9
movq %rbx, %rdi
xorl %esi, %esi
callq 0x4918
cmpq %r15, %rax
jne 0x4c11
movq %rbx, %rdi
movl $0x1, %esi
callq 0x4918
cmpq %r14, %rax
jne 0x4c29
cmpl $0x6, (%rbx)
jne 0x4bc9
movl 0x84(%rbx), %ebp
movl 0x88(%rbx), %eax
cmpl %ebp, %eax
jg 0x4c41
movq %rbx, %rdi
callq 0x47dc
movq 0x90(%rbx), %rcx
movslq 0x88(%rbx), %rdx
leal 0x1(%rdx), %eax
movl %eax, 0x88(%rbx)
movq %r15, (%rcx,%rdx,8)
cmpl $0x6, (%rbx)
je 0x4b99
leaq 0x6a85(%rip), %rdi      # 0xb655
leaq 0x6a33(%rip), %rsi      # 0xb60a
movl $0x7f, %edx
callq 0x46d0
leaq 0x6abd(%rip), %rdi      # 0xb6a5
leaq 0x6a1b(%rip), %rsi      # 0xb60a
movl $0xa6, %edx
callq 0x46d0
leaq 0x6abe(%rip), %rdi      # 0xb6be
leaq 0x6a03(%rip), %rsi      # 0xb60a
movl $0xa8, %edx
callq 0x46d0
leaq 0x6abf(%rip), %rdi      # 0xb6d7
leaq 0x69eb(%rip), %rsi      # 0xb60a
movl $0xaa, %edx
callq 0x46d0
leaq 0x6ac3(%rip), %rdi      # 0xb6f3
leaq 0x69d3(%rip), %rsi      # 0xb60a
movl $0xab, %edx
callq 0x46d0
cmpl %ebp, 0x84(%rbx)
jle 0x4d24
movq %rbx, %rdi
xorl %esi, %esi
callq 0x4918
cmpq %r15, %rax
jne 0x4d3c
movq %rbx, %rdi
movl $0x1, %esi
callq 0x4918
cmpq %r14, %rax
jne 0x4d54
cmpl $0x6, (%rbx)
jne 0x4bc9
movl 0x88(%rbx), %esi
decl %esi
movq %rbx, %rdi
callq 0x4918
cmpq %r15, %rax
jne 0x4d6c
leaq 0x6ae0(%rip), %r12      # 0xb77f
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x488d
leaq 0x6af0(%rip), %rsi      # 0xb7a4
movq %rbx, %rdi
movq %r14, %rdx
callq 0x488d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4a02
cmpq %r15, %rax
jne 0x4d84
leaq 0x6aca(%rip), %rsi      # 0xb7a4
movq %rbx, %rdi
callq 0x4a02
cmpq %r14, %rax
jne 0x4d9c
leaq 0x6ab8(%rip), %rsi      # 0xb7aa
movq %rbx, %rdi
callq 0x4a02
testq %rax, %rax
jne 0x4db4
movq (%r13), %rcx
leaq 0x6ad2(%rip), %rdi      # 0xb7e0
movl $0x5, %esi
movl $0x1, %edx
callq 0x21b0
xorl %edi, %edi
callq 0x21a0
leaq 0x69e4(%rip), %rdi      # 0xb70f
leaq 0x68d8(%rip), %rsi      # 0xb60a
movl $0xb1, %edx
callq 0x46d0
leaq 0x6994(%rip), %rdi      # 0xb6d7
leaq 0x68c0(%rip), %rsi      # 0xb60a
movl $0xb2, %edx
callq 0x46d0
leaq 0x6998(%rip), %rdi      # 0xb6f3
leaq 0x68a8(%rip), %rsi      # 0xb60a
movl $0xb3, %edx
callq 0x46d0
leaq 0x69bb(%rip), %rdi      # 0xb72e
leaq 0x6890(%rip), %rsi      # 0xb60a
movl $0xb4, %edx
callq 0x46d0
leaq 0x69d5(%rip), %rdi      # 0xb760
leaq 0x6878(%rip), %rsi      # 0xb60a
movl $0xb8, %edx
callq 0x46d0
leaq 0x69e2(%rip), %rdi      # 0xb785
leaq 0x6860(%rip), %rsi      # 0xb60a
movl $0xb9, %edx
callq 0x46d0
leaq 0x69fb(%rip), %rdi      # 0xb7b6
leaq 0x6848(%rip), %rsi      # 0xb60a
movl $0xba, %edx
callq 0x46d0