// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x160, %rsp            # imm = 0x160
movl (%rsi), %eax
cmpq $0x6, %rax
ja 0xed30
movq %rdi, %rbx
leaq 0x68ce(%rip), %rcx      # 0x1532c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x6d93(%rip), %rsi      # 0x15808
leaq 0x6d90(%rip), %rdx      # 0x1580c
jmp 0xeb58
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x6d97(%rip), %rsi      # 0x15826
leaq 0x6d95(%rip), %rdx      # 0x1582b
jmp 0xeb58
movsd 0x8(%rsi), %xmm2
movapd 0x65f8(%rip), %xmm0     # 0x150a0
andpd %xmm2, %xmm0
movsd 0x6664(%rip), %xmm1     # 0x15118
ucomisd %xmm0, %xmm1
jbe 0xebb2
leaq 0x58(%rsp), %rdi
movapd %xmm2, %xmm0
movapd %xmm2, 0x40(%rsp)
callq 0x34c0
movapd 0x40(%rsp), %xmm2
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
leaq 0x6d39(%rip), %rax      # 0x15820
leaq 0x6d2e(%rip), %rdx      # 0x1581c
cmovneq %rax, %rdx
cmovpq %rax, %rdx
jmp 0xebb9
movq 0x8(%rsi), %rax
leaq 0x10(%rbx), %rcx
movq %rcx, (%rbx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xeda4
jmp 0xeb60
movzbl 0x8(%rsi), %edx
leaq 0x6ce8(%rip), %rax      # 0x1580d
leaq 0x6ce6(%rip), %rsi      # 0x15812
testq %rdx, %rdx
cmovneq %rax, %rsi
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
xorq $0x5, %rdx
addq %rsi, %rdx
jmp 0xeb58
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x6cdb(%rip), %rsi      # 0x1582c
leaq 0x6cda(%rip), %rdx      # 0x15832
movq %rbx, %rdi
callq 0xf8e6
movq %rbx, %rax
addq $0x160, %rsp            # imm = 0x160
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq 0x8(%rsi), %rcx
leaq 0x6c99(%rip), %rdx      # 0x15818
leaq 0x60(%rsp), %r14
movl $0x15, %esi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3440
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq %r14, %rdi
callq 0x3130
leaq (%rsp,%rax), %rdx
addq $0x60, %rdx
movq %rbx, %rdi
movq %r14, %rsi
jmp 0xeb5b
leaq 0x6c67(%rip), %rdx      # 0x15820
leaq 0x60(%rsp), %r14
movl $0x100, %esi            # imm = 0x100
movq %r14, %rdi
movapd %xmm2, %xmm0
movb $0x1, %al
callq 0x3440
callq 0x3520
movq (%rax), %r12
leaq 0x6ab7(%rip), %rsi      # 0x15697
movq %r12, %rdi
callq 0x33a0
testl %eax, %eax
je 0xec1b
movq %r12, %rdi
callq 0x3130
cmpb $0x0, 0x60(%rsp)
je 0xec1b
movq %rax, %r15
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x3140
testl %eax, %eax
je 0xec47
cmpb $0x0, 0x1(%r14)
leaq 0x1(%r14), %r14
jne 0xebfe
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x60(%rsp), %r14
movq %r14, %rdi
callq 0x3130
leaq (%rsp,%rax), %rdx
addq $0x60, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xf8e6
jmp 0xeb60
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movq %r14, %rdx
callq 0xeda4
leaq 0x6a2d(%rip), %rsi      # 0x15697
leaq 0x20(%rsp), %rdi
callq 0x3510
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xec9a
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0xeca4
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rsp, %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
addq %r15, %r14
movq %r14, %rsi
callq 0x3510
leaq 0x10(%rbx), %rdx
movq %rdx, (%rbx)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0xeceb
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0xecf3
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0xed18
callq 0x32f0
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0xeb60
callq 0x32f0
jmp 0xeb60
movl $0x10, %edi
callq 0x3150
movq %rax, %r14
leaq 0x68eb(%rip), %rsi      # 0x1562f
movq %rax, %rdi
callq 0x3100
movq 0xe29d(%rip), %rsi      # 0x1cff0
movq 0xe25e(%rip), %rdx      # 0x1cfb8
movq %r14, %rdi
callq 0x3490
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0xed78
callq 0x32f0
jmp 0xed78
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0xed9b
callq 0x32f0
jmp 0xed9b
jmp 0xed98
movq %rax, %rbx
movq %r14, %rdi
callq 0x3250
jmp 0xed9b
movq %rax, %rbx
movq %rbx, %rdi
callq 0x34b0
nop