// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movzbl (%rsi), %eax
cmpq $0x22, %rax
ja 0x51ee
movl %edx, %r15d
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x1677(%rip), %rcx      # 0x6690
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movzbl 0x8(%rbx), %esi
leaq 0x1766(%rip), %rdi      # 0x6793
jmp 0x51c3
movl 0x8(%rbx), %esi
leaq 0x19ce(%rip), %rdi      # 0x6a0a
jmp 0x51c3
movzwl 0x8(%rbx), %esi
leaq 0x1843(%rip), %rdi      # 0x688f
jmp 0x51fc
movl 0x8(%rbx), %esi
leaq 0x1997(%rip), %rdi      # 0x69f2
jmp 0x51c3
movsd 0x8(%rbx), %xmm0
leaq 0x17fb(%rip), %rdi      # 0x6867
jmp 0x507a
cvtss2sd 0x8(%rbx), %xmm0
leaq 0x17e2(%rip), %rdi      # 0x685c
movb $0x1, %al
callq 0x1080
jmp 0x5203
movl 0x8(%rbx), %esi
leaq 0x181c(%rip), %rdi      # 0x68ac
jmp 0x51fc
leaq 0x1758(%rip), %rdi      # 0x67f4
xorl %eax, %eax
callq 0x1080
jmp 0x5203
movl 0x8(%rbx), %esi
leaq 0x1924(%rip), %rdi      # 0x69d6
jmp 0x51c3
movl 0x8(%rbx), %esi
leaq 0x16fe(%rip), %rdi      # 0x67bf
jmp 0x51c3
movsbl 0x8(%rbx), %edx
leaq 0x1951(%rip), %rdi      # 0x6a22
leaq 0x1951(%rip), %rsi      # 0x6a29
xorl %eax, %eax
callq 0x1080
jmp 0x5203
movl 0x8(%rbx), %esi
leaq 0x16eb(%rip), %rdi      # 0x67d9
jmp 0x51d6
movl 0x8(%rbx), %esi
leaq 0x1887(%rip), %rdi      # 0x6984
jmp 0x51d6
movl 0x8(%rbx), %esi
leaq 0x170e(%rip), %rdi      # 0x681a
jmp 0x5161
movsbq 0x8(%rbx), %rsi
leaq 0x17cc(%rip), %rdi      # 0x68e6
jmp 0x51fc
movl 0x8(%rbx), %esi
leaq 0x167e(%rip), %rdi      # 0x67a7
jmp 0x51c3
movzbl 0x8(%rbx), %esi
leaq 0x173a(%rip), %rdi      # 0x6873
jmp 0x51fc
movzbl 0x8(%rbx), %esi
leaq 0x16af(%rip), %rdi      # 0x67f8
jmp 0x51c3
movl 0x8(%rbx), %esi
leaq 0x16b0(%rip), %rdi      # 0x6805
jmp 0x5161
movl 0x8(%rbx), %esi
leaq 0x16cf(%rip), %rdi      # 0x6830
xorl %eax, %eax
callq 0x1080
movl 0x8(%rbx), %esi
movq %r14, %rdi
callq 0x4f24
jmp 0x5203
movslq 0x8(%rbx), %rsi
leaq 0x1798(%rip), %rdi      # 0x691b
jmp 0x51fc
movq 0x8(%rbx), %rsi
leaq 0x17a6(%rip), %rdi      # 0x6936
jmp 0x51fc
movzbl 0x8(%rbx), %esi
leaq 0x172c(%rip), %rdi      # 0x68c9
jmp 0x51fc
movswq 0x8(%rbx), %rsi
leaq 0x1755(%rip), %rdi      # 0x6900
jmp 0x51fc
movl 0x8(%rbx), %esi
leaq 0x17e8(%rip), %rdi      # 0x699f
jmp 0x51d6
movl 0x8(%rbx), %esi
leaq 0x17f7(%rip), %rdi      # 0x69ba
xorl %eax, %eax
callq 0x1080
jmp 0x5203
movl 0x8(%rbx), %esi
leaq 0x1794(%rip), %rdi      # 0x696a
xorl %eax, %eax
callq 0x1080
movl 0x8(%rbx), %edx
movzbl %r15b, %ecx
movq %r14, %rdi
callq 0x5221
jmp 0x5203
leaq 0x1844(%rip), %rdi      # 0x6a39
leaq 0x1840(%rip), %rsi      # 0x6a3c
xorl %eax, %eax
callq 0x1080
movl $0xa, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1040
callq 0x119d
callq 0x11b5