// File: /workspace/github_c_makefile_star2_O0/BatchLabs[P]msgpack-dump/src/cmp.c
// Function: cmp_write_object_v4
bool cmp_write_object_v4(cmp_ctx_t *ctx, cmp_object_t *obj) {
  switch(obj->type) {
    case CMP_TYPE_POSITIVE_FIXNUM:
      return cmp_write_pfix(ctx, obj->as.u8);
    case CMP_TYPE_FIXMAP:
      return cmp_write_fixmap(ctx, (uint8_t)obj->as.map_size);
    case CMP_TYPE_FIXARRAY:
      return cmp_write_fixarray(ctx, (uint8_t)obj->as.array_size);
    case CMP_TYPE_FIXSTR:
      return cmp_write_fixstr_marker(ctx, (uint8_t)obj->as.str_size);
    case CMP_TYPE_NIL:
      return cmp_write_nil(ctx);
    case CMP_TYPE_BOOLEAN:
      if (obj->as.boolean)
        return cmp_write_true(ctx);
      return cmp_write_false(ctx);
    case CMP_TYPE_EXT8:
      return cmp_write_ext8_marker(ctx, obj->as.ext.type, (uint8_t)obj->as.ext.size);
    case CMP_TYPE_EXT16:
      return cmp_write_ext16_marker(
        ctx, obj->as.ext.type, (uint16_t)obj->as.ext.size
      );
    case CMP_TYPE_EXT32:
      return cmp_write_ext32_marker(ctx, obj->as.ext.type, obj->as.ext.size);
    case CMP_TYPE_FLOAT:
      return cmp_write_float(ctx, obj->as.flt);
    case CMP_TYPE_DOUBLE:
      return cmp_write_double(ctx, obj->as.dbl);
    case CMP_TYPE_UINT8:
      return cmp_write_u8(ctx, obj->as.u8);
    case CMP_TYPE_UINT16:
      return cmp_write_u16(ctx, obj->as.u16);
    case CMP_TYPE_UINT32:
      return cmp_write_u32(ctx, obj->as.u32);
    case CMP_TYPE_UINT64:
      return cmp_write_u64(ctx, obj->as.u64);
    case CMP_TYPE_SINT8:
      return cmp_write_s8(ctx, obj->as.s8);
    case CMP_TYPE_SINT16:
      return cmp_write_s16(ctx, obj->as.s16);
    case CMP_TYPE_SINT32:
      return cmp_write_s32(ctx, obj->as.s32);
    case CMP_TYPE_SINT64:
      return cmp_write_s64(ctx, obj->as.s64);
    case CMP_TYPE_FIXEXT1:
      return cmp_write_fixext1_marker(ctx, obj->as.ext.type);
    case CMP_TYPE_FIXEXT2:
      return cmp_write_fixext2_marker(ctx, obj->as.ext.type);
    case CMP_TYPE_FIXEXT4:
      return cmp_write_fixext4_marker(ctx, obj->as.ext.type);
    case CMP_TYPE_FIXEXT8:
      return cmp_write_fixext8_marker(ctx, obj->as.ext.type);
    case CMP_TYPE_FIXEXT16:
      return cmp_write_fixext16_marker(ctx, obj->as.ext.type);
    case CMP_TYPE_STR16:
      return cmp_write_str16_marker(ctx, (uint16_t)obj->as.str_size);
    case CMP_TYPE_STR32:
      return cmp_write_str32_marker(ctx, obj->as.str_size);
    case CMP_TYPE_ARRAY16:
      return cmp_write_array16(ctx, (uint16_t)obj->as.array_size);
    case CMP_TYPE_ARRAY32:
      return cmp_write_array32(ctx, obj->as.array_size);
    case CMP_TYPE_MAP16:
      return cmp_write_map16(ctx, (uint16_t)obj->as.map_size);
    case CMP_TYPE_MAP32:
      return cmp_write_map32(ctx, obj->as.map_size);
    case CMP_TYPE_NEGATIVE_FIXNUM:
      return cmp_write_nfix(ctx, obj->as.s8);
    default:
      ctx->error = INVALID_TYPE_ERROR;
      return false;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
movq %rax, -0x20(%rbp)
subq $0x22, %rax
ja 0x3ef6
movq -0x20(%rbp), %rax
leaq 0x5550(%rip), %rcx      # 0x90d0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzbl 0x8(%rax), %esi
callq 0x14e0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movzbl %al, %esi
callq 0x2b60
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movzbl %al, %esi
callq 0x29b0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movzbl %al, %esi
callq 0x2030
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
callq 0x1f00
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x18(%rbp), %rax
testb $0x1, 0x8(%rax)
je 0x3c2b
movq -0x10(%rbp), %rdi
callq 0x1f30
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
callq 0x1f60
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movb 0x8(%rax), %cl
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movsbl %cl, %esi
movzbl %al, %edx
callq 0x3170
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movb 0x8(%rax), %cl
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movsbl %cl, %esi
movzwl %ax, %edx
callq 0x3290
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movb 0x8(%rax), %al
movq -0x18(%rbp), %rcx
movl 0xc(%rcx), %edx
movsbl %al, %esi
callq 0x33c0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movss 0x8(%rax), %xmm0
callq 0x1cf0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsd 0x8(%rax), %xmm0
callq 0x1dc0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzbl 0x8(%rax), %esi
callq 0x1b50
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzwl 0x8(%rax), %esi
callq 0x1bb0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x1c20
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x1c80
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsbl 0x8(%rax), %esi
callq 0x1640
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movswl 0x8(%rax), %esi
callq 0x16f0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x17b0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x1880
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsbl 0x8(%rax), %esi
callq 0x2d10
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsbl 0x8(%rax), %esi
callq 0x2df0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsbl 0x8(%rax), %esi
callq 0x2ed0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsbl 0x8(%rax), %esi
callq 0x2fb0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsbl 0x8(%rax), %esi
callq 0x3090
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movzwl %ax, %esi
callq 0x21f0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x22f0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movzwl %ax, %esi
callq 0x2a00
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x2a80
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movzwl %ax, %esi
callq 0x2bb0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x2c30
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movsbl 0x8(%rax), %esi
callq 0x1580
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x3f01
movq -0x10(%rbp), %rax
movb $0xd, (%rax)
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)