// File: /workspace/github_cpp_makefile_star2_O3/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 0xee64
movq %rdi, %rbx
leaq 0x6776(%rip), %rcx      # 0x1530c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x6c3b(%rip), %rsi      # 0x157e8
leaq 0x6c38(%rip), %rdx      # 0x157ec
jmp 0xec90
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x6c3f(%rip), %rsi      # 0x15806
leaq 0x6c3d(%rip), %rdx      # 0x1580b
jmp 0xec90
movsd 0x8(%rsi), %xmm2
movapd 0x64a0(%rip), %xmm0     # 0x15080
andpd %xmm2, %xmm0
movsd 0x650c(%rip), %xmm1     # 0x150f8
ucomisd %xmm0, %xmm1
jbe 0xecea
leaq 0x58(%rsp), %rdi
movapd %xmm2, %xmm0
movapd %xmm2, 0x40(%rsp)
callq 0x34b0
movapd 0x40(%rsp), %xmm2
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
leaq 0x6be1(%rip), %rax      # 0x15800
leaq 0x6bd6(%rip), %rdx      # 0x157fc
cmovneq %rax, %rdx
cmovpq %rax, %rdx
jmp 0xecf1
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 0xeed8
jmp 0xec98
movzbl 0x8(%rsi), %edx
leaq 0x6b90(%rip), %rax      # 0x157ed
leaq 0x6b8e(%rip), %rsi      # 0x157f2
testq %rdx, %rdx
cmovneq %rax, %rsi
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
xorq $0x5, %rdx
addq %rsi, %rdx
jmp 0xec90
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x6b83(%rip), %rsi      # 0x1580c
leaq 0x6b82(%rip), %rdx      # 0x15812
movq %rbx, %rdi
callq 0xfa08
movq %rbx, %rax
addq $0x160, %rsp            # imm = 0x160
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq 0x8(%rsi), %rcx
leaq 0x6b41(%rip), %rdx      # 0x157f8
leaq 0x60(%rsp), %r14
movl $0x15, %esi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3430
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 0xec93
leaq 0x6b0f(%rip), %rdx      # 0x15800
leaq 0x60(%rsp), %r14
movl $0x100, %esi            # imm = 0x100
movq %r14, %rdi
movapd %xmm2, %xmm0
movb $0x1, %al
callq 0x3430
callq 0x3510
movq (%rax), %r12
cmpb $0x2e, (%r12)
jne 0xed20
cmpb $0x0, 0x1(%r12)
je 0xed4f
movq %r12, %rdi
callq 0x3130
cmpb $0x0, 0x60(%rsp)
je 0xed4f
movq %rax, %r15
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x3140
testl %eax, %eax
je 0xed7b
cmpb $0x0, 0x1(%r14)
leaq 0x1(%r14), %r14
jne 0xed32
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 0xfa08
jmp 0xec98
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movq %r14, %rdx
callq 0xeed8
leaq 0x68d9(%rip), %rsi      # 0x15677
leaq 0x20(%rsp), %rdi
callq 0x3500
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xedce
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0xedd8
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 0x3500
leaq 0x10(%rbx), %rdx
movq %rdx, (%rbx)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0xee1f
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0xee27
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 0xee4c
callq 0x32f0
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0xec98
callq 0x32f0
jmp 0xec98
movl $0x10, %edi
callq 0x3150
movq %rax, %r14
leaq 0x6797(%rip), %rsi      # 0x1560f
movq %rax, %rdi
callq 0x3100
movq 0xe169(%rip), %rsi      # 0x1cff0
movq 0xe12a(%rip), %rdx      # 0x1cfb8
movq %r14, %rdi
callq 0x3480
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0xeeac
callq 0x32f0
jmp 0xeeac
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0xeecf
callq 0x32f0
jmp 0xeecf
jmp 0xeecc
movq %rax, %rbx
movq %r14, %rdi
callq 0x3250
jmp 0xeecf
movq %rax, %rbx
movq %rbx, %rdi
callq 0x34a0
nop