// File: /workspace/github_c_makefile_star2_O0/BatchLabs[P]msgpack-dump/src/dump.c
// Function: dump_msgpack_object
void dump_msgpack_object(msgpack_data *raw_data, cmp_object_t* object, bool print_strings) {
    switch (object->type) {
        case CMP_TYPE_POSITIVE_FIXNUM:
            printf("Positive fixnum: %d", object->as.u8);
            break;
        case CMP_TYPE_FIXMAP:
            printf("Map length : %d (fixed)", object->as.map_size);
            break;
        case CMP_TYPE_FIXARRAY:
            printf("Array length : %d (fixed)", object->as.array_size);
            break;
        case CMP_TYPE_FIXSTR:
            printf("String length : %d (fixed)", object->as.str_size);
            dump_msgpack_string(raw_data, object, object->as.str_size, print_strings);
            break;
        case CMP_TYPE_NIL:
            printf("Nil");
            break;
        case CMP_TYPE_BOOLEAN:
            printf("Boolean : %d", object->as.boolean);
            break;
        case CMP_TYPE_BIN8:
            printf("Data length : %d (8)", object->as.bin_size);
            msgpack_data_skip(raw_data, object->as.bin_size);
            break;
        case CMP_TYPE_BIN16:
            printf("Data length : %d (16)", object->as.bin_size);
            msgpack_data_skip(raw_data, object->as.bin_size);
            break;
        case CMP_TYPE_BIN32:
            printf("Data length : %d (32)", object->as.bin_size);
            msgpack_data_skip(raw_data, object->as.bin_size);
            break;
        case CMP_TYPE_EXT8:
        case CMP_TYPE_EXT16:
        case CMP_TYPE_EXT32:
            perror("Ext is not supported\n");
            exit(6);
            break;
        case CMP_TYPE_FLOAT:
            printf("Float : %f", object->as.flt);
            break;
        case CMP_TYPE_DOUBLE:
            printf("Double : %f", object->as.dbl);
            break;
        case CMP_TYPE_UINT8:
            printf("Integer : %ju (unsigned, 8)", (uintmax_t)object->as.u8);
            break;
        case CMP_TYPE_UINT16:
            printf("Integer : %ju (unsigned, 16)", (uintmax_t)object->as.u16);
            break;
        case CMP_TYPE_UINT32:
            printf("Integer : %ju (unsigned, 32)", (uintmax_t)object->as.u32);
            break;
        case CMP_TYPE_UINT64:
            printf("Integer : %ju (unsigned, 64)", (uintmax_t)object->as.u8);
            break;
        case CMP_TYPE_SINT8:
            printf("Integer : %jd (signed, 8)", (intmax_t)object->as.s8);
            break;
        case CMP_TYPE_SINT16:
            printf("Integer : %jd (signed, 16)", (intmax_t)object->as.s16);
            break;
        case CMP_TYPE_SINT32:
            printf("Integer : %jd (signed, 32)", (intmax_t)object->as.s32);
            break;
        case CMP_TYPE_SINT64:
            printf("Integer : %jd (signed, 64)", (intmax_t)object->as.s64);
            break;
        case CMP_TYPE_FIXEXT1:
        case CMP_TYPE_FIXEXT2:
        case CMP_TYPE_FIXEXT4:
        case CMP_TYPE_FIXEXT8:
        case CMP_TYPE_FIXEXT16:
            perror("Fixext is not supported\n");
            exit(6);
            break;
        case CMP_TYPE_STR8:
            printf("String length : %d (str8)", object->as.str_size);
            dump_msgpack_string(raw_data, object, object->as.str_size, print_strings);
            break;
        case CMP_TYPE_STR16:
            printf("String length : %d (str16)", object->as.str_size);
            dump_msgpack_string(raw_data, object, object->as.str_size, print_strings);
            break;
        case CMP_TYPE_STR32:
            printf("String length : %d (str32)", object->as.str_size);
            dump_msgpack_string(raw_data, object, object->as.str_size, print_strings);
            break;
        case CMP_TYPE_ARRAY16:
            printf("Array length : %d (array16)", object->as.array_size);
            break;
        case CMP_TYPE_ARRAY32:
            printf("Array length : %d (array32)", object->as.array_size);
            break;
        case CMP_TYPE_MAP16:
            printf("Map length : %d (map16)", object->as.map_size);
            break;
        case CMP_TYPE_MAP32:
            printf("Map length : %d (map32)", object->as.map_size);
            break;
        case CMP_TYPE_NEGATIVE_FIXNUM:
            printf("%s: %d", "Negative fixnum", object->as.s8);
            break;
        default:
            printf("%s", "Error: unknown type");
            break;
    }
    printf("\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movq %rax, -0x20(%rbp)
subq $0x22, %rax
ja 0x8361
movq -0x20(%rbp), %rax
leaq 0x1c71(%rip), %rcx      # 0x9c28
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %esi
leaq 0x1d5c(%rip), %rdi      # 0x9d2b
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1d56(%rip), %rdi      # 0x9d3f
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1d54(%rip), %rdi      # 0x9d57
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1d54(%rip), %rdi      # 0x9d71
movb $0x0, %al
callq 0x1070
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edx
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x8390
jmp 0x8376
leaq 0x1d40(%rip), %rdi      # 0x9d8c
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %esi
leaq 0x1d25(%rip), %rdi      # 0x9d90
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1d18(%rip), %rdi      # 0x9d9d
movb $0x0, %al
callq 0x1070
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
callq 0x7e10
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1d01(%rip), %rdi      # 0x9db2
movb $0x0, %al
callq 0x1070
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
callq 0x7e10
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1ceb(%rip), %rdi      # 0x9dc8
movb $0x0, %al
callq 0x1070
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
callq 0x7e10
jmp 0x8376
leaq 0x1cdc(%rip), %rdi      # 0x9dde
callq 0x10d0
movl $0x6, %edi
callq 0x10e0
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x1ccf(%rip), %rdi      # 0x9df4
movb $0x1, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq 0x1cbe(%rip), %rdi      # 0x9dff
movb $0x1, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
movl %eax, %esi
leaq 0x1cad(%rip), %rdi      # 0x9e0b
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movzwl 0x8(%rax), %eax
movl %eax, %esi
leaq 0x1cac(%rip), %rdi      # 0x9e27
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
leaq 0x1cad(%rip), %rdi      # 0x9e44
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
movl %eax, %esi
leaq 0x1cad(%rip), %rdi      # 0x9e61
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movsbq 0x8(%rax), %rsi
leaq 0x1cae(%rip), %rdi      # 0x9e7e
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movswq 0x8(%rax), %rsi
leaq 0x1cac(%rip), %rdi      # 0x9e98
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movslq 0x8(%rax), %rsi
leaq 0x1cac(%rip), %rdi      # 0x9eb3
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x1cac(%rip), %rdi      # 0x9ece
movb $0x0, %al
callq 0x1070
jmp 0x8376
leaq 0x1cb4(%rip), %rdi      # 0x9ee9
callq 0x10d0
movl $0x6, %edi
callq 0x10e0
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1cb0(%rip), %rdi      # 0x9f02
movb $0x0, %al
callq 0x1070
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edx
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x8390
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1c94(%rip), %rdi      # 0x9f1c
movb $0x0, %al
callq 0x1070
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edx
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x8390
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1c79(%rip), %rdi      # 0x9f37
movb $0x0, %al
callq 0x1070
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edx
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x8390
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1c5e(%rip), %rdi      # 0x9f52
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1c63(%rip), %rdi      # 0x9f6e
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1c68(%rip), %rdi      # 0x9f8a
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x1c69(%rip), %rdi      # 0x9fa2
movb $0x0, %al
callq 0x1070
jmp 0x8376
movq -0x10(%rbp), %rax
movsbl 0x8(%rax), %edx
leaq 0x1c69(%rip), %rdi      # 0x9fba
leaq 0x1c69(%rip), %rsi      # 0x9fc1
movb $0x0, %al
callq 0x1070
jmp 0x8376
leaq 0x1c69(%rip), %rdi      # 0x9fd1
leaq 0x1c65(%rip), %rsi      # 0x9fd4
movb $0x0, %al
callq 0x1070
leaq 0x1991(%rip), %rdi      # 0x9d0e
movb $0x0, %al
callq 0x1070
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)