// File: /workspace/github_c_makefile_star2_O3/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 0x5216
movl %edx, %r15d
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x164f(%rip), %rcx      # 0x6690
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movzbl 0x8(%rbx), %esi
leaq 0x173e(%rip), %rdi      # 0x6793
jmp 0x51eb
movl 0x8(%rbx), %esi
leaq 0x19a6(%rip), %rdi      # 0x6a0a
jmp 0x51eb
movzwl 0x8(%rbx), %esi
leaq 0x181b(%rip), %rdi      # 0x688f
jmp 0x5224
movl 0x8(%rbx), %esi
leaq 0x196f(%rip), %rdi      # 0x69f2
jmp 0x51eb
movsd 0x8(%rbx), %xmm0
leaq 0x17d3(%rip), %rdi      # 0x6867
jmp 0x50a2
cvtss2sd 0x8(%rbx), %xmm0
leaq 0x17ba(%rip), %rdi      # 0x685c
movb $0x1, %al
callq 0x1080
jmp 0x522b
movl 0x8(%rbx), %esi
leaq 0x17f4(%rip), %rdi      # 0x68ac
jmp 0x5224
leaq 0x1730(%rip), %rdi      # 0x67f4
xorl %eax, %eax
callq 0x1080
jmp 0x522b
movl 0x8(%rbx), %esi
leaq 0x18fc(%rip), %rdi      # 0x69d6
jmp 0x51eb
movl 0x8(%rbx), %esi
leaq 0x16d6(%rip), %rdi      # 0x67bf
jmp 0x51eb
movsbl 0x8(%rbx), %edx
leaq 0x1929(%rip), %rdi      # 0x6a22
leaq 0x1929(%rip), %rsi      # 0x6a29
xorl %eax, %eax
callq 0x1080
jmp 0x522b
movl 0x8(%rbx), %esi
leaq 0x16c3(%rip), %rdi      # 0x67d9
jmp 0x51fe
movl 0x8(%rbx), %esi
leaq 0x185f(%rip), %rdi      # 0x6984
jmp 0x51fe
movl 0x8(%rbx), %esi
leaq 0x16e6(%rip), %rdi      # 0x681a
jmp 0x5189
movsbq 0x8(%rbx), %rsi
leaq 0x17a4(%rip), %rdi      # 0x68e6
jmp 0x5224
movl 0x8(%rbx), %esi
leaq 0x1656(%rip), %rdi      # 0x67a7
jmp 0x51eb
movzbl 0x8(%rbx), %esi
leaq 0x1712(%rip), %rdi      # 0x6873
jmp 0x5224
movzbl 0x8(%rbx), %esi
leaq 0x1687(%rip), %rdi      # 0x67f8
jmp 0x51eb
movl 0x8(%rbx), %esi
leaq 0x1688(%rip), %rdi      # 0x6805
jmp 0x5189
movl 0x8(%rbx), %esi
leaq 0x16a7(%rip), %rdi      # 0x6830
xorl %eax, %eax
callq 0x1080
movl 0x8(%rbx), %esi
movq %r14, %rdi
callq 0x4f4c
jmp 0x522b
movslq 0x8(%rbx), %rsi
leaq 0x1770(%rip), %rdi      # 0x691b
jmp 0x5224
movq 0x8(%rbx), %rsi
leaq 0x177e(%rip), %rdi      # 0x6936
jmp 0x5224
movzbl 0x8(%rbx), %esi
leaq 0x1704(%rip), %rdi      # 0x68c9
jmp 0x5224
movswq 0x8(%rbx), %rsi
leaq 0x172d(%rip), %rdi      # 0x6900
jmp 0x5224
movl 0x8(%rbx), %esi
leaq 0x17c0(%rip), %rdi      # 0x699f
jmp 0x51fe
movl 0x8(%rbx), %esi
leaq 0x17cf(%rip), %rdi      # 0x69ba
xorl %eax, %eax
callq 0x1080
jmp 0x522b
movl 0x8(%rbx), %esi
leaq 0x176c(%rip), %rdi      # 0x696a
xorl %eax, %eax
callq 0x1080
movl 0x8(%rbx), %edx
movzbl %r15b, %ecx
movq %r14, %rdi
callq 0x5249
jmp 0x522b
leaq 0x181c(%rip), %rdi      # 0x6a39
leaq 0x1818(%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