// File: mattn[P]minijson/./minijson.h
// Function: minijson::value::str[abi:cxx11]() const
std::string str() const {
    std::stringstream ss;
    if (t == unknown_type) {
      ss << "undefined";
    } else
    if (t == null_type) {
      ss << "null";
    } else
    if (t == boolean_type) {
      ss << u.b ? "true" : "false";
    } else
    if (t == number_type) {
      ss << (double) u.d;
    } else
    if (t == string_type) {
      ss << str(u.s->c_str());
    } else
    if (t == array_type) {
      array::iterator i;
      ss << "[";
#if defined(_MSC_VER) && _MSC_VER <= 6000
      array& a = array();
      get(a);
#else
      array a = get<array>();
#endif
      for (i = a.begin(); i != a.end(); i++) {
        if (i != a.begin()) ss << ", ";
        ss << i->str();
      }
      ss << "]";
    } else
    if (t == object_type) {
      object::iterator i;
      ss << "{";
#if defined(_MSC_VER) && _MSC_VER <= 6000
      object& o = object();
      get(o);
#else
      object o = get<object>();
#endif
      for (i = o.begin(); i != o.end(); i++) {
        if (i != o.begin()) ss << ", ";
        ss << str(i->first.c_str());
        ss << ": " << i->second.str();
      }
      ss << "}";
    }
    return ss.str();
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq %rdi, -0x2d8(%rbp)
movq %rdi, %rax
movq %rax, -0x2d0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x2150
movq -0x2c8(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x3138
leaq -0x188(%rbp), %rdi
leaq 0x6fd3(%rip), %rsi      # 0xa0e8
callq 0x21f0
jmp 0x311c
jmp 0x3677
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x36a8
movq -0x2c8(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x315e
leaq -0x188(%rbp), %rdi
leaq 0x6fe1(%rip), %rsi      # 0xa133
callq 0x21f0
jmp 0x3159
jmp 0x3675
movq -0x2c8(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x31aa
movq -0x2c8(%rbp), %rax
leaq -0x188(%rbp), %rdi
movzbl 0x8(%rax), %esi
andl $0x1, %esi
callq 0x2330
movq %rax, -0x2e0(%rbp)
jmp 0x318d
movq -0x2e0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x22b0
jmp 0x31a5
jmp 0x3673
movq -0x2c8(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x31d5
movq -0x2c8(%rbp), %rax
leaq -0x188(%rbp), %rdi
movsd 0x8(%rax), %xmm0
callq 0x2350
jmp 0x31d0
jmp 0x3671
movq -0x2c8(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x3260
movq -0x2c8(%rbp), %rax
leaq -0x188(%rbp), %rcx
movq %rcx, -0x2e8(%rbp)
movq 0x8(%rax), %rdi
callq 0x20b0
movq -0x2c8(%rbp), %rsi
movq %rax, %rdx
leaq -0x1c8(%rbp), %rdi
callq 0x3c90
jmp 0x3217
movq -0x2e8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x21d0
jmp 0x322c
leaq -0x1c8(%rbp), %rdi
callq 0x2120
jmp 0x366f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x2120
jmp 0x36a8
movq -0x2c8(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x3422
leaq -0x1d0(%rbp), %rdi
callq 0x3e40
leaq -0x188(%rbp), %rdi
leaq 0x6eb9(%rip), %rsi      # 0xa143
callq 0x21f0
jmp 0x3291
movq -0x2c8(%rbp), %rdi
callq 0x2e00
movq %rax, -0x2f0(%rbp)
jmp 0x32a6
movq -0x2f0(%rbp), %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x3e60
jmp 0x32bb
leaq -0x1e8(%rbp), %rdi
callq 0x3f50
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rax
movq %rax, -0x1d0(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x3fc0
movq %rax, -0x1f8(%rbp)
leaq -0x1d0(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x3f80
testb $0x1, %al
jne 0x330b
jmp 0x33eb
leaq -0x1e8(%rbp), %rdi
callq 0x3f50
movq %rax, -0x200(%rbp)
leaq -0x1d0(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x3f80
testb $0x1, %al
jne 0x3337
jmp 0x3365
leaq -0x188(%rbp), %rdi
leaq 0x6e00(%rip), %rsi      # 0xa145
callq 0x21f0
jmp 0x334c
jmp 0x3365
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x3411
leaq -0x188(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x3ff0
movq %rax, %rsi
leaq -0x220(%rbp), %rdi
callq 0x30c0
jmp 0x3390
movq -0x2f8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x21d0
jmp 0x33a5
leaq -0x220(%rbp), %rdi
callq 0x2120
leaq -0x1d0(%rbp), %rdi
xorl %esi, %esi
callq 0x4010
movq %rax, -0x228(%rbp)
jmp 0x32dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x2120
jmp 0x3411
leaq -0x188(%rbp), %rdi
leaq 0x6d4f(%rip), %rsi      # 0xa148
callq 0x21f0
jmp 0x3400
leaq -0x1e8(%rbp), %rdi
callq 0x36c0
jmp 0x366d
leaq -0x1e8(%rbp), %rdi
callq 0x36c0
jmp 0x36a8
movq -0x2c8(%rbp), %rax
cmpl $0x6, (%rax)
jne 0x366b
leaq -0x230(%rbp), %rdi
callq 0x4050
leaq -0x188(%rbp), %rdi
leaq 0x6cfe(%rip), %rsi      # 0xa14a
callq 0x21f0
jmp 0x3453
movq -0x2c8(%rbp), %rdi
callq 0x2b40
movq %rax, -0x300(%rbp)
jmp 0x3468
movq -0x300(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0x4070
jmp 0x347d
leaq -0x260(%rbp), %rdi
callq 0x40a0
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x230(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x4100
movq %rax, -0x270(%rbp)
leaq -0x230(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x40d0
testb $0x1, %al
jne 0x34cd
jmp 0x363a
leaq -0x260(%rbp), %rdi
callq 0x40a0
movq %rax, -0x278(%rbp)
leaq -0x230(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x40d0
testb $0x1, %al
jne 0x34f9
jmp 0x3527
leaq -0x188(%rbp), %rdi
leaq 0x6c3e(%rip), %rsi      # 0xa145
callq 0x21f0
jmp 0x350e
jmp 0x3527
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x365d
leaq -0x188(%rbp), %rax
movq %rax, -0x308(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x4130
movq %rax, %rdi
callq 0x20b0
movq -0x2c8(%rbp), %rsi
movq %rax, %rdx
leaq -0x298(%rbp), %rdi
callq 0x3c90
jmp 0x3561
movq -0x308(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x21d0
jmp 0x3576
leaq -0x298(%rbp), %rdi
callq 0x2120
leaq -0x188(%rbp), %rdi
leaq 0x6b3b(%rip), %rsi      # 0xa0cb
callq 0x21f0
movq %rax, -0x310(%rbp)
jmp 0x359e
leaq -0x230(%rbp), %rdi
callq 0x4130
movq %rax, %rsi
addq $0x20, %rsi
leaq -0x2b8(%rbp), %rdi
callq 0x30c0
jmp 0x35bf
movq -0x310(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x21d0
jmp 0x35d4
leaq -0x2b8(%rbp), %rdi
callq 0x2120
leaq -0x230(%rbp), %rdi
xorl %esi, %esi
callq 0x4150
movq %rax, -0x2c0(%rbp)
jmp 0x349e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x2120
jmp 0x365d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x2120
jmp 0x365d
leaq -0x188(%rbp), %rdi
leaq 0x6b04(%rip), %rsi      # 0xa14c
callq 0x21f0
jmp 0x364f
leaq -0x260(%rbp), %rdi
callq 0x3720
jmp 0x366b
leaq -0x260(%rbp), %rdi
callq 0x3720
jmp 0x36a8
jmp 0x366d
jmp 0x366f
jmp 0x3671
jmp 0x3673
jmp 0x3675
jmp 0x3677
movq -0x2d8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x21e0
jmp 0x368c
leaq -0x198(%rbp), %rdi
callq 0x2170
movq -0x2d0(%rbp), %rax
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
leaq -0x198(%rbp), %rdi
callq 0x2170
movq -0x1a0(%rbp), %rdi
callq 0x2310