// File: /workspace/github_cpp_makefile_star2_O2/sehe[P]spirit-v2-json/json.cpp
// Function: JSON::generator<std::back_insert_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, boost::spirit::unused_type>::generator()
generator() : generator::base_type(json)
        {
            const static karma::int_generator <Integer> integer     = {};
            const static karma::real_generator<Double>  real        = {};

            truefalse.add
                (Bool(false), "false")
                (Bool(true),  "true");

            value = karma::attr_cast<Null>  (karma::lit("null")) 
                  | truefalse
                  | object
                  | array
                  | integer
                  | real        // TODO FIXME roundtrip safe formatting
                  | string
                  ;

            object = '{' << -(member % ',') << '}';
            member = string << ':' << value;

            array = '[' << -(value % ',') << ']';

            char_escape.add
                ('"',  "\\\"")
                ('\\', "\\\\")
              //('/',  "\\/")
                ('\b', "\\b")
                ('\f', "\\f")
                ('\n', "\\n")
                ('\r', "\\r")
                ('\t', "\\t");

            using karma::_val;
            using karma::_1;

            unicode_escape = 
                karma::eps(_val >= uint32_t(0x0) && _val <= uint32_t(0x1f)) << 
                qi::string [ _1 = unicode_escape_(_val) ]
                ;

            char_ = char_escape | unicode_escape | encoding::char_;
            string = '"' << *char_ << '"';

            // entry point
            json = value;

            BOOST_SPIRIT_DEBUG_NODES( (json)(value)(object)(member)(array)(string)(char_)(unicode_escape));
        }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
movq %rdi, %r12
leaq 0x2d8f3(%rip), %rsi     # 0x338b6
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0xb8(%r12), %rbx
leaq 0x8(%r12), %r14
movq %rbx, (%r12)
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x4330
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d8c5(%rip), %rsi     # 0x338c6
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %r14, 0x128(%rsp)
callq 0x40c0
leaq 0x28(%r12), %rdi
leaq 0x8(%rsp), %rsi
movq %rdi, 0xb8(%rsp)
callq 0x8cd2
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d88e(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x70(%r12), %r15
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x8d44
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d85c(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %r15, 0xb0(%rsp)
callq 0x40c0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x8d5c
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d827(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %rbx, 0xa8(%rsp)
callq 0x40c0
leaq 0x100(%r12), %rbx
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x8d5c
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d7ea(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %rbx, 0x60(%rsp)
callq 0x40c0
leaq 0x148(%r12), %rbx
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x8d74
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d7b0(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %rbx, 0x120(%rsp)
callq 0x40c0
leaq 0x190(%r12), %rdi
leaq 0x8(%rsp), %rsi
movq %rdi, 0x68(%rsp)
callq 0x8d8c
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d771(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x1d8(%r12), %rdi
leaq 0x8(%rsp), %rsi
movq %rdi, 0x58(%rsp)
callq 0x8da4
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d73a(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x220(%r12), %r15
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x8dbc
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d705(%rip), %rsi     # 0x338ce
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %r15, 0xa0(%rsp)
callq 0x40c0
leaq 0x268(%r12), %rdi
leaq 0x8(%rsp), %rsi
movq %rdi, 0x98(%rsp)
callq 0x8dd4
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d6bb(%rip), %rsi     # 0x338c6
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x2b0(%r12), %rdi
leaq 0x8(%rsp), %rsi
movq %rdi, 0x90(%rsp)
callq 0x8dec
leaq 0x8(%rsp), %rdi
callq 0x4100
movb 0x496a4(%rip), %al      # 0x4f8e8
testb %al, %al
je 0x68c0
movb 0x496a6(%rip), %al      # 0x4f8f8
testb %al, %al
je 0x68ec
movb $0x0, 0x70(%rsp)
leaq 0x2e438(%rip), %rsi     # 0x3469e
leaq 0x8(%rsp), %rdi
leaq 0x100(%rsp), %rdx
callq 0x40c0
leaq 0x30(%r12), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0x8e5e
movq %rax, %r13
movb $0x1, 0xe0(%rsp)
leaq 0x2d63d(%rip), %rsi     # 0x338db
leaq 0x30(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x40c0
leaq 0xe0(%rsp), %r14
leaq 0x30(%rsp), %rdx
movq %r12, 0x130(%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0x8e5e
leaq 0x30(%rsp), %r13
movq %r13, %rdi
callq 0x4100
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
callq 0x4100
leaq 0x138(%rsp), %rcx
leaq 0x2d5e7(%rip), %rax     # 0x338e0
leaq 0xc0(%rsp), %r15
movq %r14, 0x100(%rsp)
movq 0x68(%rsp), %rdx
leaq 0x70(%rsp), %r12
movq %r13, (%rbp)
movq %rax, (%rcx)
movq %rcx, 0xc0(%rsp)
movq 0xb8(%rsp), %rcx
movq %r15, 0xe0(%rsp)
movq %r14, %r15
movq %rbx, 0xe8(%rsp)
movq %rbx, %r14
leaq 0x100(%rsp), %rbx
movq %r12, (%r13)
movq %rbx, 0x70(%rsp)
movq %rdx, 0x108(%rsp)
leaq 0x49590(%rip), %rdx     # 0x4f8f0
movq %rcx, 0xc8(%rsp)
leaq 0x49571(%rip), %rcx     # 0x4f8e0
movq %rdx, 0x8(%r13)
movq %rcx, 0x78(%rsp)
movq 0x58(%rsp), %rcx
movq %rcx, 0x8(%rbp)
movq 0x60(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x941c
movq 0xb0(%rsp), %rbp
movq %r15, 0x30(%rsp)
movq %rbx, 0x38(%rsp)
leaq 0x8(%rsp), %rsi
leaq 0xc0(%rsp), %rax
leaq 0x138(%rsp), %rbx
movb $0x7b, 0xe0(%rsp)
movb $0x2c, 0xc0(%rsp)
movq %r12, 0x100(%rsp)
movb $0x7d, 0x138(%rsp)
movq %r13, (%rsi)
movq %rbx, 0x8(%rsi)
movq %rbp, 0x70(%rsp)
movq %rax, 0x78(%rsp)
movq %r14, %rdi
callq 0xc6f8
movq %rbx, %r14
movq 0x58(%rsp), %rax
movq 0x60(%rsp), %rbx
leaq 0x8(%rsp), %rsi
movb $0x3a, 0x70(%rsp)
movq %r13, (%rsi)
movq %rax, 0x30(%rsp)
movq %r12, 0x38(%rsp)
movq %rbx, 0x8(%rsi)
movq %rbp, %rdi
callq 0xcf4e
leaq 0xe0(%rsp), %rdx
leaq 0xc0(%rsp), %rax
leaq 0x8(%rsp), %rsi
leaq 0x100(%rsp), %rcx
movq %rbx, 0x70(%rsp)
movb $0x5b, 0xe0(%rsp)
movb $0x2c, 0xc0(%rsp)
movq %r12, 0x100(%rsp)
movb $0x5d, 0x138(%rsp)
movq %rdx, 0x30(%rsp)
movq %r13, (%rsi)
movq %rax, 0x78(%rsp)
movq %rcx, 0x38(%rsp)
movq %r14, 0x8(%rsi)
movq 0x68(%rsp), %rdi
callq 0xd4e6
movb $0x22, 0x2f(%rsp)
leaq 0x2d457(%rip), %rsi     # 0x338e5
leaq 0x8(%rsp), %rdi
leaq 0x57(%rsp), %rdx
callq 0x40c0
movq 0x130(%rsp), %r12
leaq 0x2b8(%r12), %rdi
leaq 0x2f(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0x8ed2
movq %rax, %rbx
movb $0x5c, 0x2e(%rsp)
leaq 0x2d41d(%rip), %rsi     # 0x338e8
leaq 0x30(%rsp), %rdi
leaq 0x56(%rsp), %rdx
callq 0x40c0
leaq 0x2e(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %rbx, %rdi
callq 0x8ed2
movq %rax, %rbx
movb $0x8, 0x2d(%rsp)
leaq 0x2d3f0(%rip), %rsi     # 0x338eb
leaq 0x70(%rsp), %rdi
leaq 0x55(%rsp), %rdx
callq 0x40c0
leaq 0x2d(%rsp), %rsi
leaq 0x70(%rsp), %rdx
movq %rbx, %rdi
callq 0x8ed2
movq %rax, %rbx
movb $0xc, 0x2c(%rsp)
leaq 0x2d3c3(%rip), %rsi     # 0x338ee
leaq 0x100(%rsp), %rdi
leaq 0x54(%rsp), %rdx
callq 0x40c0
leaq 0x2c(%rsp), %rsi
leaq 0x100(%rsp), %rdx
movq %rbx, %rdi
callq 0x8ed2
movq %rax, %rbx
movb $0xa, 0x2b(%rsp)
leaq 0x2d390(%rip), %rsi     # 0x338f1
leaq 0xe0(%rsp), %rdi
leaq 0x53(%rsp), %rdx
callq 0x40c0
leaq 0x2b(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
movq %rbx, %rdi
callq 0x8ed2
movq %rax, %rbx
movb $0xd, 0x2a(%rsp)
leaq 0x2d35d(%rip), %rsi     # 0x338f4
leaq 0xc0(%rsp), %rdi
leaq 0x52(%rsp), %rdx
callq 0x40c0
leaq 0x2a(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
movq %rbx, %rdi
callq 0x8ed2
movq %rax, %rbx
movb $0x9, 0x29(%rsp)
leaq 0x2d32a(%rip), %rsi     # 0x338f7
leaq 0x138(%rsp), %rdi
leaq 0x51(%rsp), %rdx
callq 0x40c0
leaq 0x29(%rsp), %rsi
leaq 0x138(%rsp), %rdx
movq %rbx, %rdi
callq 0x8ed2
leaq 0x138(%rsp), %rdi
callq 0x4100
leaq 0xc0(%rsp), %rdi
callq 0x4100
leaq 0xe0(%rsp), %rbx
movq %rbx, %rdi
callq 0x4100
leaq 0x100(%rsp), %r14
movq %r14, %rdi
callq 0x4100
leaq 0x70(%rsp), %r15
movq %r15, %rdi
callq 0x4100
leaq 0x30(%rsp), %r13
movq %r13, %rdi
callq 0x4100
leaq 0x8(%rsp), %rdi
callq 0x4100
pushq $0x20
popq %rdi
callq 0x4270
andq $0x0, 0x4(%rax)
movabsq $0x1f00000000, %rcx     # imm = 0x1F00000000
leaq 0x8(%rsp), %rdi
leaq 0x290(%r12), %rsi
movq %rcx, 0xc(%rax)
movq %rax, 0x8(%rdi)
leaq 0x481d3(%rip), %rax     # 0x4e858
movq %rax, (%rdi)
callq 0xdeb4
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
callq 0xe07e
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rdx
leaq 0x48c23(%rip), %rcx     # 0x4f2d4
movq %r13, (%rbp)
movq %rcx, 0x8(%rbp)
movq %rax, 0x30(%rsp)
movq %rdx, 0x38(%rsp)
movq 0xa0(%rsp), %rbp
leaq 0x8(%rsp), %rsi
movq %rbp, %rdi
callq 0xe08e
movb $0x22, %al
leaq 0x8(%rsp), %rsi
movq %r14, 0x30(%rsp)
movq %rbp, 0x70(%rsp)
movq %r15, 0x38(%rsp)
movq %r13, (%rsi)
movb %al, 0x100(%rsp)
movb %al, 0xe0(%rsp)
movq %rbx, 0x8(%rsi)
movq 0x58(%rsp), %rdi
callq 0xe6ec
movq 0xa8(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x8f46
leaq 0x2d1d4(%rip), %rsi     # 0x338fa
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0xc0(%r12), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d1a7(%rip), %rsi     # 0x338ff
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x108(%r12), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d17b(%rip), %rsi     # 0x33905
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x150(%r12), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d150(%rip), %rsi     # 0x3390c
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x78(%r12), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d128(%rip), %rsi     # 0x33913
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x198(%r12), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d0fc(%rip), %rsi     # 0x33919
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x1e0(%r12), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d0d1(%rip), %rsi     # 0x33920
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
leaq 0x228(%r12), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
leaq 0x2d0a5(%rip), %rsi     # 0x33926
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x40c0
addq $0x270, %r12            # imm = 0x270
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x4150
leaq 0x8(%rsp), %rdi
callq 0x4100
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x49021(%rip), %rdi     # 0x4f8e8
callq 0x4490
testl %eax, %eax
je 0x624c
leaq 0x4900d(%rip), %rdi     # 0x4f8e8
movb $0x0, 0x48ffe(%rip)     # 0x4f8e0
callq 0x4170
jmp 0x624c
leaq 0x49005(%rip), %rdi     # 0x4f8f8
callq 0x4490
testl %eax, %eax
je 0x625a
leaq 0x48ff1(%rip), %rdi     # 0x4f8f8
movb $0x0, 0x48fe2(%rip)     # 0x4f8f0
callq 0x4170
jmp 0x625a
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a1f
jmp 0x6a1f
jmp 0x6a1f
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0xe07e
jmp 0x6a22
jmp 0x6a1f
leaq 0x138(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x69a5
jmp 0x69a2
movq %rax, %r12
leaq 0xc0(%rsp), %rdi
callq 0x4100
jmp 0x69b9
jmp 0x69b6
movq %rax, %r12
leaq 0xe0(%rsp), %rdi
callq 0x4100
jmp 0x69cd
jmp 0x69ca
movq %rax, %r12
leaq 0x100(%rsp), %rdi
callq 0x4100
jmp 0x69e1
jmp 0x69de
movq %rax, %r12
leaq 0x70(%rsp), %rdi
callq 0x4100
jmp 0x6a02
jmp 0x69ff
jmp 0x69ff
jmp 0x6a10
jmp 0x6a10
jmp 0x6a1f
jmp 0x6a1f
jmp 0x6a1f
jmp 0x6a1f
jmp 0x6a1f
movq %rax, %r12
leaq 0x30(%rsp), %rdi
callq 0x4100
jmp 0x6a13
jmp 0x6a10
movq %rax, %r12
leaq 0x8(%rsp), %rdi
callq 0x4100
jmp 0x6a22
movq %rax, %r12
movq 0x90(%rsp), %rdi
callq 0x7d70
movq 0x98(%rsp), %rdi
callq 0x7d8a
movq 0xa0(%rsp), %rdi
callq 0x7da4
movq 0x58(%rsp), %rdi
callq 0x7dbe
movq 0x68(%rsp), %rdi
callq 0x7dd8
movq 0x120(%rsp), %rdi
callq 0x7df2
movq 0x60(%rsp), %rdi
callq 0x7e0c
movq 0xa8(%rsp), %rdi
callq 0x7e0c
movq 0xb0(%rsp), %rdi
callq 0x7e26
movq 0xb8(%rsp), %rdi
callq 0x7e40
movq 0x128(%rsp), %rdi
callq 0x4100
movq %r12, %rdi
callq 0x4470
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a2f
movq %rax, %r12
jmp 0x6a2f
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a3c
movq %rax, %r12
jmp 0x6a3c
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a49
movq %rax, %r12
jmp 0x6a49
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a53
movq %rax, %r12
jmp 0x6a53
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a5d
movq %rax, %r12
jmp 0x6a5d
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a6a
movq %rax, %r12
jmp 0x6a6a
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a74
movq %rax, %r12
jmp 0x6a74
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a81
movq %rax, %r12
jmp 0x6a81
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a8e
movq %rax, %r12
jmp 0x6a8e
leaq 0x8(%rsp), %rdi
movq %rax, %r12
callq 0x4100
jmp 0x6a9b
movq %rax, %r12
jmp 0x6a9b
movq %rax, %r12
leaq 0x8(%rsp), %rdi
jmp 0x6aa3
movq %rax, %r12
jmp 0x6aa8
nop