// File: /workspace/github_cpp_makefile_star2_O3/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 0x16b16
cmpl $0x20, %eax
ja 0x167cf
movl %eax, %eax
btq %rax, %r15
jb 0x167ba
movb $0x0, 0x20(%r14)
movq %r14, %rdi
callq 0x16b16
cmpl $0x6d, %eax
jg 0x16851
cmpl $0x22, %eax
je 0x168b6
cmpl $0x5b, %eax
je 0x16974
cmpl $0x66, %eax
jne 0x168e8
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movl $0x65736c61, (%r15)     # imm = 0x65736C61
movq $0x4, -0x8(%r15)
movb $0x0, 0x4(%r15)
movq %r15, %r12
movq %r14, %rdi
callq 0x16b16
movsbl (%r12), %ecx
cmpl %ecx, %eax
jne 0x16a4f
incq %r12
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, %r12
jne 0x1681c
movq %rbx, %rdi
xorl %esi, %esi
callq 0x16c1e
jmp 0x16a2e
cmpl $0x7b, %eax
je 0x168cf
cmpl $0x74, %eax
je 0x169e4
cmpl $0x6e, %eax
jne 0x168e8
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movl $0x6c6c75, (%r15)       # imm = 0x6C6C75
movq $0x3, -0x8(%r15)
movq %r15, %r12
movq %r14, %rdi
callq 0x16b16
movsbl (%r12), %ecx
cmpl %ecx, %eax
jne 0x16a4f
incq %r12
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, %r12
jne 0x16883
movq %rbx, %rdi
callq 0x16b9a
jmp 0x16a2e
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16ca8
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16db0
leal -0x30(%rax), %ecx
cmpl $0xa, %ecx
setae %cl
cmpl $0x2d, %eax
setne %al
testb %cl, %al
jne 0x16a6c
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 0x16b16
leal -0x30(%rax), %ecx
cmpl $0xa, %ecx
jb 0x1694b
leal -0x2b(%rax), %ecx
cmpl $0x3a, %ecx
ja 0x16a84
btq %rcx, %r13
jae 0x16958
movsbl %al, %esi
movq %r15, %rdi
callq 0x5330
jmp 0x16929
cmpq $0x3, %rcx
jne 0x16a84
callq 0x56b0
movq (%rax), %rsi
movq %r15, %rdi
callq 0x56a0
jmp 0x16929
movq %rbx, %rdi
callq 0x17204
testb %al, %al
je 0x16a71
movq %r14, %rdi
movl $0x5d, %esi
callq 0x172a6
movb $0x1, %bpl
testb %al, %al
jne 0x16a73
xorl %r15d, %r15d
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x172f0
testb %al, %al
je 0x16a71
incq %r15
movq %r14, %rdi
movl $0x2c, %esi
callq 0x172a6
testb %al, %al
jne 0x1699f
movq %r14, %rdi
movl $0x5d, %esi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x172a6
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movl $0x657572, (%r15)       # imm = 0x657572
movq $0x3, -0x8(%r15)
movq %r15, %r12
movq %r14, %rdi
callq 0x16b16
movsbl (%r12), %ecx
cmpl %ecx, %eax
jne 0x16a4f
incq %r12
movq (%rsp), %rax
addq 0x8(%rsp), %rax
cmpq %rax, %r12
jne 0x169ff
movq %rbx, %rdi
movl $0x1, %esi
callq 0x16c1e
movl %eax, %ebx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x16a46
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movb $0x1, %bpl
testb %bl, %bl
je 0x16a71
jmp 0x16a73
movb $0x0, 0x20(%r14)
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x16a71
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x16a71
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)
movq (%rsp), %rdi
je 0x16ab3
leaq 0x20(%rsp), %r14
movq %r14, %rsi
callq 0x52c0
movq (%rsp), %rdi
movq 0x8(%rsp), %rax
addq %rdi, %rax
cmpq %rax, (%r14)
je 0x16ab7
xorl %ebp, %ebp
jmp 0x16ac6
movq %rbx, %rdi
callq 0x16eb6
movb $0x1, %bpl
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x16a73
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x16a73
jmp 0x16af4
jmp 0x16ae6
jmp 0x16ae6
jmp 0x16ae6
jmp 0x16ae6
jmp 0x16ae6
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
jne 0x16b00
jmp 0x16b0d
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x16b0d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5650
nop