// File: /workspace/github_cpp_makefile_star2_O1/istellartech[P]OpenTsiolkovsky/src/../lib/picojson.h
// Function: bool picojson::_parse<picojson::default_parse_context, std::istreambuf_iterator<char, std::char_traits<char>>>(picojson::default_parse_context&, picojson::input<std::istreambuf_iterator<char, std::char_traits<char>>>&)
inline bool _parse(Context& ctx, input<Iter>& in) {
    in.skip_ws();
    int ch = in.getc();
    switch (ch) {
#define IS(ch, text, op) case ch: \
      if (in.match(text) && op) { \
	return true; \
      } else { \
	return false; \
      }
      IS('n', "ull", ctx.set_null());
      IS('f', "alse", ctx.set_bool(false));
      IS('t', "rue", ctx.set_bool(true));
#undef IS
    case '"':
      return ctx.parse_string(in);
    case '[':
      return _parse_array(ctx, in);
    case '{':
      return _parse_object(ctx, in);
    default:
      if (('0' <= ch && ch <= '9') || ch == '-') {
        double f;
        char *endp;
	in.ungetc();
        std::string num_str = _parse_number(in);
        if (num_str.empty()) {
          return false;
        }
#ifdef PICOJSON_USE_INT64
        {
          errno = 0;
          intmax_t ival = strtoimax(num_str.c_str(), &endp, 10);
          if (errno == 0
              && std::numeric_limits<int64_t>::min() <= ival
              && ival <= std::numeric_limits<int64_t>::max()
              && endp == num_str.c_str() + num_str.size()) {
            ctx.set_int64(ival);
            return true;
          }
        }
#endif
        f = strtod(num_str.c_str(), &endp);
        if (endp == num_str.c_str() + num_str.size()) {
          ctx.set_number(f);
          return true;
        }
        return false;
      }
      break;
    }
    in.ungetc();
    return false;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movabsq $0x100002600, %r15      # imm = 0x100002600
movq %r14, %rdi
callq 0x18864
cmpl $0x20, %eax
ja 0x184f0
movl %eax, %eax
btq %rax, %r15
jb 0x184db
movb $0x0, 0x20(%r14)
movq %r14, %rdi
callq 0x18864
cmpl $0x6d, %eax
jg 0x1856e
cmpl $0x22, %eax
je 0x185cd
cmpl $0x5b, %eax
je 0x1868b
cmpl $0x66, %eax
jne 0x185ff
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movl $0x65736c61, (%r15)     # imm = 0x65736C61
movq $0x4, -0x8(%r15)
movb $0x0, 0x4(%r15)
xorl %ebp, %ebp
movq %r15, %r12
movq %r14, %rdi
callq 0x18864
movsbl (%r12), %ecx
cmpl %ecx, %eax
jne 0x18740
incq %r12
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, %r12
sete %bpl
jne 0x1853f
jmp 0x18745
cmpl $0x7b, %eax
je 0x185e6
cmpl $0x74, %eax
je 0x186fb
cmpl $0x6e, %eax
jne 0x185ff
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movl $0x6c6c75, (%r15)       # imm = 0x6C6C75
movq $0x3, -0x8(%r15)
xorl %ebp, %ebp
movq %r15, %r12
movq %r14, %rdi
callq 0x18864
movsbl (%r12), %ecx
cmpl %ecx, %eax
jne 0x18757
incq %r12
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, %r12
sete %bpl
jne 0x1859e
jmp 0x1875c
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x18a24
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x18b40
leal -0x30(%rax), %ecx
cmpl $0xa, %ecx
setae %cl
cmpl $0x2d, %eax
setne %al
testb %cl, %al
jne 0x187bd
xorl %eax, %eax
movb %al, 0x20(%r14)
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb %al, (%r12)
movq %rsp, %r15
movabsq $0x400000004000005, %r13 # imm = 0x400000004000005
movq %r14, %rdi
callq 0x18864
leal -0x30(%rax), %ecx
cmpl $0xa, %ecx
jb 0x18662
leal -0x2b(%rax), %ecx
cmpl $0x3a, %ecx
ja 0x187d5
btq %rcx, %r13
jae 0x1866f
movsbl %al, %esi
movq %r15, %rdi
callq 0x5330
jmp 0x18640
cmpq $0x3, %rcx
jne 0x187d5
callq 0x56b0
movq (%rax), %rsi
movq %r15, %rdi
callq 0x56a0
jmp 0x18640
movq %rbx, %rdi
callq 0x18faa
testb %al, %al
je 0x187c2
movq %r14, %rdi
movl $0x5d, %esi
callq 0x19060
movb $0x1, %bpl
testb %al, %al
jne 0x187c4
xorl %r15d, %r15d
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x190aa
testb %al, %al
je 0x187c2
incq %r15
movq %r14, %rdi
movl $0x2c, %esi
callq 0x19060
testb %al, %al
jne 0x186b6
movq %r14, %rdi
movl $0x5d, %esi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x19060
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movl $0x657572, (%r15)       # imm = 0x657572
movq $0x3, -0x8(%r15)
xorl %ebp, %ebp
movq %r15, %r12
movq %r14, %rdi
callq 0x18864
movsbl (%r12), %ecx
cmpl %ecx, %eax
jne 0x1876c
incq %r12
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, %r12
sete %bpl
jne 0x18718
jmp 0x18771
movb $0x0, 0x20(%r14)
testb $0x1, %bpl
je 0x187a5
movq %rbx, %rdi
xorl %esi, %esi
callq 0x18984
jmp 0x18784
movb $0x0, 0x20(%r14)
testb $0x1, %bpl
je 0x187a5
movq %rbx, %rdi
callq 0x188e8
jmp 0x18784
movb $0x0, 0x20(%r14)
testb $0x1, %bpl
je 0x187a5
movq %rbx, %rdi
movl $0x1, %esi
callq 0x18984
movl %eax, %ebx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1879c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movb $0x1, %bpl
testb %bl, %bl
je 0x187c2
jmp 0x187c4
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x187c2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x187c2
movb $0x0, 0x20(%r14)
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movb $0x0, 0x20(%r14)
cmpq $0x0, 0x8(%rsp)
je 0x18801
movq (%rsp), %rdi
leaq 0x20(%rsp), %r14
movq %r14, %rsi
callq 0x52c0
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, (%r14)
je 0x18805
xorl %ebp, %ebp
jmp 0x18810
movb $0x1, %bpl
movq %rbx, %rdi
callq 0x18c46
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x187c4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x187c4
jmp 0x18842
jmp 0x18834
jmp 0x18834
jmp 0x18834
jmp 0x18834
jmp 0x18834
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
jne 0x1884e
jmp 0x1885b
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1885b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5650
nop