// File: tanakh[P]icfpc2015/./picojson.h
// Function: void picojson::value::_serialize<std::ostream_iterator<char, char, std::char_traits<char>>>(std::ostream_iterator<char, char, std::char_traits<char>>, int) const
void value::_serialize(Iter oi, int indent) const {
    switch (type_) {
    case string_type:
      serialize_str(*u_.string_, oi);
      break;
    case array_type: {
      *oi++ = '[';
      if (indent != -1) {
        ++indent;
      }
      for (array::const_iterator i = u_.array_->begin();
           i != u_.array_->end();
           ++i) {
	if (i != u_.array_->begin()) {
	  *oi++ = ',';
	}
        if (indent != -1) {
          _indent(oi, indent);
        }
	i->_serialize(oi, indent);
      }
      if (indent != -1) {
        --indent;
        if (! u_.array_->empty()) {
          _indent(oi, indent);
        }
      }
      *oi++ = ']';
      break;
    }
    case object_type: {
      *oi++ = '{';
      if (indent != -1) {
        ++indent;
      }
      for (object::const_iterator i = u_.object_->begin();
	   i != u_.object_->end();
	   ++i) {
	if (i != u_.object_->begin()) {
	  *oi++ = ',';
	}
        if (indent != -1) {
          _indent(oi, indent);
        }
	serialize_str(i->first, oi);
	*oi++ = ':';
        if (indent != -1) {
          *oi++ = ' ';
        }
        i->second._serialize(oi, indent);
      }
      if (indent != -1) {
        --indent;
        if (! u_.object_->empty()) {
          _indent(oi, indent);
        }
      }
      *oi++ = '}';
      break;
    }
    default:
      copy(to_str(), oi);
      break;
    }
    if (indent == 0) {
      *oi++ = '\n';
    }
  }

// Assembly:
subq $0x198, %rsp            # imm = 0x198
movq %rsi, 0x28(%rsp)
movq %rdi, 0x190(%rsp)
movq %rsi, 0x188(%rsp)
movl %edx, 0x184(%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x30(%rsp)
movl (%rax), %eax
movl %eax, 0x3c(%rsp)
subl $0x3, %eax
je 0x1b16a
jmp 0x1b14d
movl 0x3c(%rsp), %eax
subl $0x4, %eax
je 0x1b1a1
jmp 0x1b158
movl 0x3c(%rsp), %eax
subl $0x5, %eax
je 0x1b3a9
jmp 0x1b674
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x20(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x1b710
movq 0x20(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1b740
jmp 0x1b6cb
movq 0x28(%rsp), %rdi
movb $0x5b, 0x16f(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x16f(%rsp), %rsi
callq 0x1bfd0
cmpl $-0x1, 0x184(%rsp)
je 0x1b1e8
movl 0x184(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x184(%rsp)
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11660
movq %rax, 0x158(%rsp)
leaq 0x160(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x1c020
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11690
movq %rax, 0x150(%rsp)
leaq 0x160(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x1c060
testb $0x1, %al
jne 0x1b247
jmp 0x1b323
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11660
movq %rax, 0x148(%rsp)
leaq 0x160(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0x1c060
testb $0x1, %al
jne 0x1b278
jmp 0x1b2a4
movq 0x28(%rsp), %rdi
movb $0x2c, 0x147(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x147(%rsp), %rsi
callq 0x1bfd0
cmpl $-0x1, 0x184(%rsp)
je 0x1b2d4
movq 0x28(%rsp), %rsi
leaq 0x130(%rsp), %rdi
callq 0x1b710
movl 0x184(%rsp), %esi
leaq 0x130(%rsp), %rdi
callq 0x1c0a0
leaq 0x160(%rsp), %rdi
callq 0x1c130
movq 0x28(%rsp), %rsi
movq %rax, 0x18(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x1b710
movq 0x18(%rsp), %rdi
movl 0x184(%rsp), %edx
leaq 0x120(%rsp), %rsi
callq 0x1b110
leaq 0x160(%rsp), %rdi
callq 0x176a0
jmp 0x1b213
cmpl $-0x1, 0x184(%rsp)
je 0x1b378
movq 0x30(%rsp), %rax
movl 0x184(%rsp), %ecx
addl $-0x1, %ecx
movl %ecx, 0x184(%rsp)
movq 0x8(%rax), %rdi
callq 0x1c140
testb $0x1, %al
jne 0x1b376
movq 0x28(%rsp), %rsi
leaq 0x110(%rsp), %rdi
callq 0x1b710
movl 0x184(%rsp), %esi
leaq 0x110(%rsp), %rdi
callq 0x1c0a0
jmp 0x1b378
movq 0x28(%rsp), %rdi
movb $0x5d, 0x10f(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x10f(%rsp), %rsi
callq 0x1bfd0
jmp 0x1b6cb
movq 0x28(%rsp), %rdi
movb $0x7b, 0x10e(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x10e(%rsp), %rsi
callq 0x1bfd0
cmpl $-0x1, 0x184(%rsp)
je 0x1b3f0
movl 0x184(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x184(%rsp)
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x1c190
movq %rax, 0xf8(%rsp)
leaq 0x100(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x199e0
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x197e0
movq %rax, 0xe8(%rsp)
leaq 0xf0(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x199e0
leaq 0x100(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x1c1c0
testb $0x1, %al
jne 0x1b464
jmp 0x1b5f1
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x1c190
movq %rax, 0xd8(%rsp)
leaq 0xe0(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x199e0
leaq 0x100(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x1c1c0
testb $0x1, %al
jne 0x1b4aa
jmp 0x1b4d6
movq 0x28(%rsp), %rdi
movb $0x2c, 0xd7(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0xd7(%rsp), %rsi
callq 0x1bfd0
cmpl $-0x1, 0x184(%rsp)
je 0x1b506
movq 0x28(%rsp), %rsi
leaq 0xc0(%rsp), %rdi
callq 0x1b710
movl 0x184(%rsp), %esi
leaq 0xc0(%rsp), %rdi
callq 0x1c0a0
leaq 0x100(%rsp), %rdi
callq 0x1c1e0
movq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x1b710
movq 0x10(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x1b740
movq 0x28(%rsp), %rdi
movb $0x3a, 0xaf(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0xaf(%rsp), %rsi
callq 0x1bfd0
cmpl $-0x1, 0x184(%rsp)
je 0x1b59e
movq 0x28(%rsp), %rdi
movb $0x20, 0xae(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0xae(%rsp), %rsi
callq 0x1bfd0
leaq 0x100(%rsp), %rdi
callq 0x1c1e0
movq 0x28(%rsp), %rsi
addq $0x20, %rax
movq %rax, 0x8(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x1b710
movq 0x8(%rsp), %rdi
movl 0x184(%rsp), %edx
leaq 0x98(%rsp), %rsi
callq 0x1b110
leaq 0x100(%rsp), %rdi
callq 0x1c200
jmp 0x1b41b
cmpl $-0x1, 0x184(%rsp)
je 0x1b646
movq 0x30(%rsp), %rax
movl 0x184(%rsp), %ecx
addl $-0x1, %ecx
movl %ecx, 0x184(%rsp)
movq 0x8(%rax), %rdi
callq 0x1c230
testb $0x1, %al
jne 0x1b644
movq 0x28(%rsp), %rsi
leaq 0x88(%rsp), %rdi
callq 0x1b710
movl 0x184(%rsp), %esi
leaq 0x88(%rsp), %rdi
callq 0x1c0a0
jmp 0x1b646
movq 0x28(%rsp), %rdi
movb $0x7d, 0x87(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x87(%rsp), %rsi
callq 0x1bfd0
jmp 0x1b6cb
movq 0x30(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x1c2b0
movq 0x28(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x1b710
jmp 0x1b694
leaq 0x60(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1c250
jmp 0x1b6a5
leaq 0x60(%rsp), %rdi
callq 0x4700
jmp 0x1b6cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x4700
jmp 0x1b703
cmpl $0x0, 0x184(%rsp)
jne 0x1b6fb
movq 0x28(%rsp), %rdi
movb $0xa, 0x43(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x43(%rsp), %rsi
callq 0x1bfd0
addq $0x198, %rsp            # imm = 0x198
retq
movq 0x48(%rsp), %rdi
callq 0x4620
nopl (%rax)