// File: /workspace/github_cpp_makefile_star2_O2/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 %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x1110a
movq %r14, %rdi
callq 0x110a0
cmpl $0x22, %eax
je 0x11040
cmpl $0x5b, %eax
je 0x1102b
cmpl $0x66, %eax
je 0x10f42
cmpl $0x7b, %eax
je 0x10fc6
cmpl $0x74, %eax
je 0x10f71
cmpl $0x6e, %eax
jne 0x10fdb
leaq 0xfc23(%rip), %rsi      # 0x20b3b
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x6c7e
movq %rsp, %rsi
movq %r14, %rdi
callq 0x1113c
testb %al, %al
je 0x10fb9
movq %rbx, %rdi
callq 0x11186
jmp 0x10f9f
leaq 0xfbf6(%rip), %rsi      # 0x20b3f
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x6c7e
movq %rsp, %rsi
movq %r14, %rdi
callq 0x1113c
testb %al, %al
je 0x10fb9
movq %rbx, %rdi
xorl %esi, %esi
callq 0x111b0
jmp 0x10f9f
leaq 0xfbcc(%rip), %rsi      # 0x20b44
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x6c7e
movq %rsp, %rsi
movq %r14, %rdi
callq 0x1113c
testb %al, %al
je 0x10fb9
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x111b0
movl %eax, %ebx
movq %rsp, %rdi
callq 0x56e8
movb $0x1, %bpl
testb %bl, %bl
je 0x1105a
jmp 0x1105c
movq %rsp, %rdi
callq 0x56e8
jmp 0x1105a
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x112c4
leal -0x30(%rax), %ecx
cmpl $0xa, %ecx
setae %cl
cmpl $0x2d, %eax
setne %al
testb %cl, %al
jne 0x11055
movb $0x0, 0x20(%r14)
movq %rsp, %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x113af
cmpq $0x0, 0x8(%r15)
je 0x11027
movq (%rsp), %rdi
leaq 0x20(%rsp), %r14
movq %r14, %rsi
callq 0x52c0
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, (%r14)
je 0x11069
xorl %ebp, %ebp
jmp 0x11074
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x11250
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x111ec
movb $0x0, 0x20(%r14)
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movb $0x1, %bpl
movq %rbx, %rdi
callq 0x11438
movq %rsp, %rdi
callq 0x56e8
jmp 0x1105c
jmp 0x1108d
jmp 0x11084
jmp 0x11084
movq %rax, %rbx
jmp 0x11098
jmp 0x1108d
jmp 0x1108d
movq %rax, %rbx
movq %rsp, %rdi
callq 0x56e8
movq %rbx, %rdi
callq 0x5640