// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x8(%rsp), %r15
movb $0x22, (%r15)
movq %rsi, %rdi
movq %r15, %rsi
callq 0xc014
movq (%r14), %rax
leaq 0x29(%rsp), %rbp
leaq 0x6545(%rip), %r12      # 0x122ec
movq %rax, %r13
addq 0x8(%r14), %rax
cmpq %rax, %r13
je 0xbfbb
movzbl (%r13), %ecx
leal -0x8(%rcx), %eax
cmpl $0x5, %eax
ja 0xbdff
movslq (%r12,%rax,4), %rax
addq %r12, %rax
jmpq *%rax
movq %r15, %rdi
leaq 0x69f3(%rip), %rsi      # 0x127ca
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0x80(%rsp)
movq %r15, %rdi
leaq 0x80(%rsp), %rsi
callq 0xc086
jmp 0xbf9b
cmpl $0x5c, %ecx
je 0xbf6e
cmpl $0x2f, %ecx
je 0xbf3f
cmpl $0x22, %ecx
jne 0xbe48
movq %r15, %rdi
leaq 0x69a1(%rip), %rsi      # 0x127c1
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0xb0(%rsp)
movq %r15, %rdi
leaq 0xb0(%rsp), %rsi
callq 0xc086
jmp 0xbf9b
cmpb $0x20, %cl
setae %al
cmpl $0x7f, %ecx
setne %dl
testb %dl, %al
jne 0xbfae
movq %rbp, %rdi
pushq $0x7
popq %rsi
leaq 0x6970(%rip), %rdx      # 0x127d9
xorl %eax, %eax
callq 0x3430
movups (%rbx), %xmm0
movaps %xmm0, 0x30(%rsp)
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x2f(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0xc304
jmp 0xbfa3
movq %r15, %rdi
leaq 0x6931(%rip), %rsi      # 0x127cd
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0x70(%rsp)
movq %r15, %rdi
leaq 0x70(%rsp), %rsi
callq 0xc086
jmp 0xbf9b
movq %r15, %rdi
leaq 0x690e(%rip), %rsi      # 0x127d6
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r15, %rdi
leaq 0x40(%rsp), %rsi
callq 0xc086
jmp 0xbf9b
movq %r15, %rdi
leaq 0x68df(%rip), %rsi      # 0x127d3
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0x50(%rsp)
movq %r15, %rdi
leaq 0x50(%rsp), %rsi
callq 0xc086
jmp 0xbf9b
movq %r15, %rdi
leaq 0x68b0(%rip), %rsi      # 0x127d0
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0x60(%rsp)
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0xc086
jmp 0xbf9b
movq %r15, %rdi
leaq 0x687e(%rip), %rsi      # 0x127c7
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0x90(%rsp)
movq %r15, %rdi
leaq 0x90(%rsp), %rsi
callq 0xc086
jmp 0xbf9b
movq %r15, %rdi
leaq 0x684c(%rip), %rsi      # 0x127c4
movq %rbp, %rdx
callq 0x30e0
movups (%rbx), %xmm0
movaps %xmm0, 0xa0(%rsp)
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
callq 0xc086
movq %r15, %rdi
callq 0x3550
incq %r13
movq (%r14), %rax
jmp 0xbdaa
movq %rbx, %rdi
movq %r13, %rsi
callq 0xc014
jmp 0xbfa3
leaq 0x8(%rsp), %rsi
movb $0x22, (%rsi)
movq %rbx, %rdi
callq 0xc014
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xbff9
jmp 0xc008
jmp 0xbff9
jmp 0xc008
jmp 0xbff9
jmp 0xc008
jmp 0xbff9
jmp 0xc008
jmp 0xbff9
jmp 0xc008
jmp 0xbff9
jmp 0xc008
jmp 0xbff9
jmp 0xc008
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3550
jmp 0xc00b
movq %rax, %rbx
movq %rbx, %rdi
callq 0x34a0
nop