// File: tanakh[P]icfpc2015/./picojson.h
// Function: void picojson::serialize_str<std::ostream_iterator<char, char, std::char_traits<char>>>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::ostream_iterator<char, char, std::char_traits<char>>)
void serialize_str(const std::string& s, Iter oi) {
    *oi++ = '"';
    for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) {
      switch (*i) {
#define MAP(val, sym) case val: copy(sym, oi); break
	MAP('"', "\\\"");
	MAP('\\', "\\\\");
	MAP('/', "\\/");
	MAP('\b', "\\b");
	MAP('\f', "\\f");
	MAP('\n', "\\n");
	MAP('\r', "\\r");
	MAP('\t', "\\t");
#undef MAP
      default:
	if (static_cast<unsigned char>(*i) < 0x20 || *i == 0x7f) {
	  char buf[7];
	  SNPRINTF(buf, sizeof(buf), "\\u%04x", *i & 0xff);
	  copy(buf, buf + 6, oi);
	  } else {
	  *oi++ = *i;
	}
	break;
      }
    }
    *oi++ = '"';
  }

// Assembly:
subq $0x2a8, %rsp            # imm = 0x2A8
movq %rsi, 0x70(%rsp)
movq %rdi, %rax
movq 0x70(%rsp), %rdi
movq %rdi, 0x78(%rsp)
movq %rax, 0x2a0(%rsp)
movq %rdi, 0x298(%rsp)
movb $0x22, 0x297(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x297(%rsp), %rsi
callq 0x1bfd0
movq 0x2a0(%rsp), %rdi
callq 0x4390
movq %rax, 0x288(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x4690
movq %rax, 0x280(%rsp)
leaq 0x288(%rsp), %rdi
leaq 0x280(%rsp), %rsi
callq 0x13810
testb $0x1, %al
jne 0x1b7d8
jmp 0x1bf62
leaq 0x288(%rsp), %rdi
callq 0x13850
movsbl (%rax), %eax
movl %eax, 0x6c(%rsp)
subl $0x8, %eax
je 0x1ba9f
jmp 0x1b7f7
movl 0x6c(%rsp), %eax
subl $0x9, %eax
je 0x1bd9f
jmp 0x1b806
movl 0x6c(%rsp), %eax
subl $0xa, %eax
je 0x1bc1f
jmp 0x1b815
movl 0x6c(%rsp), %eax
subl $0xc, %eax
je 0x1bb5f
jmp 0x1b824
movl 0x6c(%rsp), %eax
subl $0xd, %eax
je 0x1bcdf
jmp 0x1b833
movl 0x6c(%rsp), %eax
subl $0x22, %eax
je 0x1b85f
jmp 0x1b83e
movl 0x6c(%rsp), %eax
subl $0x2f, %eax
je 0x1b9df
jmp 0x1b84d
movl 0x6c(%rsp), %eax
subl $0x5c, %eax
je 0x1b91f
jmp 0x1be5f
leaq 0x25f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x4630
movq 0x60(%rsp), %rdx
leaq 0x1b033(%rip), %rsi     # 0x368b0
leaq 0x260(%rsp), %rdi
callq 0x44f0
jmp 0x1b88c
movq 0x78(%rsp), %rsi
leaq 0x238(%rsp), %rdi
callq 0x1b710
jmp 0x1b8a0
leaq 0x260(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x1c250
jmp 0x1b8b7
leaq 0x260(%rsp), %rdi
callq 0x4700
leaq 0x25f(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1b90d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0x260(%rsp), %rdi
callq 0x4700
leaq 0x25f(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0x217(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x4630
movq 0x58(%rsp), %rdx
leaq 0x1af76(%rip), %rsi     # 0x368b3
leaq 0x218(%rsp), %rdi
callq 0x44f0
jmp 0x1b94c
movq 0x78(%rsp), %rsi
leaq 0x200(%rsp), %rdi
callq 0x1b710
jmp 0x1b960
leaq 0x218(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x1c250
jmp 0x1b977
leaq 0x218(%rsp), %rdi
callq 0x4700
leaq 0x217(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1b9cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0x218(%rsp), %rdi
callq 0x4700
leaq 0x217(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0x1df(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x4630
movq 0x50(%rsp), %rdx
leaq 0x1aeb9(%rip), %rsi     # 0x368b6
leaq 0x1e0(%rsp), %rdi
callq 0x44f0
jmp 0x1ba0c
movq 0x78(%rsp), %rsi
leaq 0x1c8(%rsp), %rdi
callq 0x1b710
jmp 0x1ba20
leaq 0x1e0(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x1c250
jmp 0x1ba37
leaq 0x1e0(%rsp), %rdi
callq 0x4700
leaq 0x1df(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1ba8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0x1e0(%rsp), %rdi
callq 0x4700
leaq 0x1df(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0x1a7(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x4630
movq 0x48(%rsp), %rdx
leaq 0x1adfc(%rip), %rsi     # 0x368b9
leaq 0x1a8(%rsp), %rdi
callq 0x44f0
jmp 0x1bacc
movq 0x78(%rsp), %rsi
leaq 0x190(%rsp), %rdi
callq 0x1b710
jmp 0x1bae0
leaq 0x1a8(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x1c250
jmp 0x1baf7
leaq 0x1a8(%rsp), %rdi
callq 0x4700
leaq 0x1a7(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1bb4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0x4700
leaq 0x1a7(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0x16f(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x4630
movq 0x40(%rsp), %rdx
leaq 0x1ad3f(%rip), %rsi     # 0x368bc
leaq 0x170(%rsp), %rdi
callq 0x44f0
jmp 0x1bb8c
movq 0x78(%rsp), %rsi
leaq 0x158(%rsp), %rdi
callq 0x1b710
jmp 0x1bba0
leaq 0x170(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x1c250
jmp 0x1bbb7
leaq 0x170(%rsp), %rdi
callq 0x4700
leaq 0x16f(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1bc0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x4700
leaq 0x16f(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0x137(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x4630
movq 0x38(%rsp), %rdx
leaq 0x1ac82(%rip), %rsi     # 0x368bf
leaq 0x138(%rsp), %rdi
callq 0x44f0
jmp 0x1bc4c
movq 0x78(%rsp), %rsi
leaq 0x120(%rsp), %rdi
callq 0x1b710
jmp 0x1bc60
leaq 0x138(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x1c250
jmp 0x1bc77
leaq 0x138(%rsp), %rdi
callq 0x4700
leaq 0x137(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1bccd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0x138(%rsp), %rdi
callq 0x4700
leaq 0x137(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0xff(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x4630
movq 0x30(%rsp), %rdx
leaq 0x1abc5(%rip), %rsi     # 0x368c2
leaq 0x100(%rsp), %rdi
callq 0x44f0
jmp 0x1bd0c
movq 0x78(%rsp), %rsi
leaq 0xe8(%rsp), %rdi
callq 0x1b710
jmp 0x1bd20
leaq 0x100(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x1c250
jmp 0x1bd37
leaq 0x100(%rsp), %rdi
callq 0x4700
leaq 0xff(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1bd8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0x100(%rsp), %rdi
callq 0x4700
leaq 0xff(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0xc7(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x4630
movq 0x28(%rsp), %rdx
leaq 0x1ab08(%rip), %rsi     # 0x368c5
leaq 0xc8(%rsp), %rdi
callq 0x44f0
jmp 0x1bdcc
movq 0x78(%rsp), %rsi
leaq 0xb0(%rsp), %rdi
callq 0x1b710
jmp 0x1bde0
leaq 0xc8(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x1c250
jmp 0x1bdf7
leaq 0xc8(%rsp), %rdi
callq 0x4700
leaq 0xc7(%rsp), %rdi
callq 0x4430
jmp 0x1bf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
jmp 0x1be4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x250(%rsp)
movl %eax, 0x24c(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0x4700
leaq 0xc7(%rsp), %rdi
callq 0x4430
jmp 0x1bf96
leaq 0x288(%rsp), %rdi
callq 0x13850
movzbl (%rax), %eax
cmpl $0x20, %eax
jl 0x1be8d
leaq 0x288(%rsp), %rdi
callq 0x13850
movsbl (%rax), %eax
cmpl $0x7f, %eax
jne 0x1bf19
leaq 0xa9(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x13850
movq 0x10(%rsp), %rdi
movsbl (%rax), %ecx
andl $0xff, %ecx
movl $0x7, %esi
leaq 0x1aa07(%rip), %rdx     # 0x368c8
movb $0x0, %al
callq 0x45a0
movq 0x78(%rsp), %rsi
leaq 0xa9(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0xa9(%rsp), %rax
addq $0x6, %rax
movq %rax, 0x20(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x1b710
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rcx
callq 0x1c890
jmp 0x1bf4c
leaq 0x288(%rsp), %rdi
callq 0x13850
movq 0x78(%rsp), %rdi
movq %rax, 0x8(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x1bfd0
jmp 0x1bf4e
jmp 0x1bf50
leaq 0x288(%rsp), %rdi
callq 0x138c0
jmp 0x1b7a5
movq 0x78(%rsp), %rdi
movb $0x22, 0x87(%rsp)
xorl %esi, %esi
callq 0x1bfb0
movq %rax, %rdi
callq 0x1bfc0
movq %rax, %rdi
leaq 0x87(%rsp), %rsi
callq 0x1bfd0
addq $0x2a8, %rsp            # imm = 0x2A8
retq
movq 0x250(%rsp), %rdi
callq 0x4620
nopw %cs:(%rax,%rax)
nopl (%rax)