// File: /workspace/github_cpp_makefile_star2_O2/tanakh[P]icfpc2015/./picojson.h
// Function: picojson::value::to_str[abi:cxx11]() const
inline std::string value::to_str() const {
    switch (type_) {
    case null_type:      return "null";
    case boolean_type:   return u_.boolean_ ? "true" : "false";
#ifdef PICOJSON_USE_INT64
    case int64_type: {
      char buf[sizeof("-9223372036854775808")];
      SNPRINTF(buf, sizeof(buf), "%" PRId64, u_.int64_);
      return buf;
    }
#endif
    case number_type:    {
      char buf[256];
      double tmp;
      SNPRINTF(buf, sizeof(buf), fabs(u_.number_) < (1ULL << 53) && modf(u_.number_, &tmp) == 0 ? "%.f" : "%.17g", u_.number_);
#if PICOJSON_USE_LOCALE
      char *decimal_point = localeconv()->decimal_point;
      if (strcmp(decimal_point, ".") != 0) {
        size_t decimal_point_len = strlen(decimal_point);
        for (char *p = buf; *p != '\0'; ++p) {
          if (strncmp(p, decimal_point, decimal_point_len) == 0) {
            return std::string(buf, p) + "." + (p + decimal_point_len);
          }
        }
      }
#endif
      return buf;
    }
    case string_type:    return *u_.string_;
    case array_type:     return "array";
    case object_type:    return "object";
    default:             PICOJSON_ASSERT(0);
#ifdef _MSC_VER
      __assume(0);
#endif
    }
    return std::string();
  }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
movl (%rsi), %eax
cmpq $0x6, %rax
ja 0xc29e
movq %rdi, %rbx
leaq 0x6230(%rip), %rcx      # 0x12304
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x66fc(%rip), %rsi      # 0x127e0
jmp 0xc18d
leaq 0x670e(%rip), %rsi      # 0x127fe
jmp 0xc18d
movsd 0x8(%rsi), %xmm2
movapd 0x5f5e(%rip), %xmm0     # 0x12060
andpd %xmm2, %xmm0
movsd 0x5fca(%rip), %xmm1     # 0x120d8
ucomisd %xmm0, %xmm1
jbe 0xc1d4
leaq 0x58(%rsp), %rdi
movapd %xmm2, %xmm0
movapd %xmm2, 0x40(%rsp)
callq 0x34b0
movapd 0x40(%rsp), %xmm2
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
leaq 0x66b7(%rip), %rax      # 0x127f8
leaq 0x66ac(%rip), %rdx      # 0x127f4
cmovneq %rax, %rdx
cmovpq %rax, %rdx
jmp 0xc1db
movq 0x8(%rsi), %rsi
movq %rbx, %rdi
callq 0x33a0
jmp 0xc1c2
leaq 0x667b(%rip), %rcx      # 0x127e5
leaq 0x6679(%rip), %rax      # 0x127ea
cmpb $0x0, 0x8(%rsi)
cmovneq %rcx, %rax
leaq 0x60(%rsp), %rdx
movq %rbx, %rdi
movq %rax, %rsi
jmp 0xc1bd
leaq 0x6677(%rip), %rsi      # 0x12804
leaq 0x60(%rsp), %rdx
movq %rbx, %rdi
jmp 0xc1bd
movq 0x8(%rsi), %rcx
leaq 0x664e(%rip), %rdx      # 0x127f0
leaq 0x60(%rsp), %r14
pushq $0x15
popq %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3430
movq %rsp, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x30e0
movq %rbx, %rax
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0x661d(%rip), %rdx      # 0x127f8
leaq 0x60(%rsp), %r14
movl $0x100, %esi            # imm = 0x100
movq %r14, %rdi
movapd %xmm2, %xmm0
movb $0x1, %al
callq 0x3430
callq 0x3520
movq (%rax), %r12
cmpb $0x2e, (%r12)
jne 0xc20a
cmpb $0x0, 0x1(%r12)
je 0xc232
movq %r12, %rdi
callq 0x3100
movq %rax, %r15
cmpb $0x0, (%r14)
je 0xc232
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x3120
testl %eax, %eax
je 0xc247
incq %r14
jmp 0xc215
leaq 0x60(%rsp), %rsi
movq %rsp, %rdx
movq %rbx, %rdi
callq 0x30e0
jmp 0xc1c2
leaq 0x30(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movq %r14, %rdx
callq 0xc4cc
leaq 0x6406(%rip), %rdx      # 0x1266f
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0xc4ad
addq %r15, %r14
movq %rsp, %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0xc4ad
movq %rsp, %rdi
callq 0x3550
leaq 0x20(%rsp), %rdi
callq 0x3550
jmp 0xc1c2
pushq $0x10
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x6357(%rip), %rsi      # 0x12607
movq %rax, %rdi
callq 0x30d0
movq 0xfd31(%rip), %rsi      # 0x1bff0
movq 0xfcfa(%rip), %rdx      # 0x1bfc0
movq %r14, %rdi
callq 0x3480
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3550
jmp 0xc2de
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3550
jmp 0xc2fc
jmp 0xc2f9
movq %rax, %rbx
movq %r14, %rdi
callq 0x3240
jmp 0xc2fc
movq %rax, %rbx
movq %rbx, %rdi
callq 0x34a0