// File: 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
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x21bf0
movq -0x18(%rbp), %rdi
callq 0x21b10
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0xe0(%rbp)
subl $0x22, %eax
je 0x21963
jmp 0x2162c
movl -0xe0(%rbp), %eax
subl $0x5b, %eax
je 0x2197a
jmp 0x2163d
movl -0xe0(%rbp), %eax
subl $0x66, %eax
je 0x2176d
jmp 0x2164e
movl -0xe0(%rbp), %eax
subl $0x6e, %eax
je 0x21680
jmp 0x2165b
movl -0xe0(%rbp), %eax
subl $0x74, %eax
je 0x2185c
jmp 0x2166c
movl -0xe0(%rbp), %eax
subl $0x7b, %eax
je 0x21991
jmp 0x219a8
movq -0x18(%rbp), %rax
movq %rax, -0xf0(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x67b0
movq -0xe8(%rbp), %rdx
leaq 0x32622(%rip), %rsi     # 0x53ccb
leaq -0x40(%rbp), %rdi
callq 0xac00
jmp 0x216b4
movq -0xf0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x21c40
movb %al, -0xf1(%rbp)
jmp 0x216cc
movb -0xf1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xf2(%rbp)
jne 0x216e1
jmp 0x21700
movq -0x10(%rbp), %rdi
callq 0x21ce0
movb %al, -0xf3(%rbp)
jmp 0x216f2
movb -0xf3(%rbp), %al
movb %al, -0xf2(%rbp)
jmp 0x21700
movb -0xf2(%rbp), %al
movb %al, -0xf4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x68a8
leaq -0x41(%rbp), %rdi
callq 0x64e0
movb -0xf4(%rbp), %al
testb $0x1, %al
jne 0x2172a
jmp 0x21764
movb $0x1, -0x1(%rbp)
jmp 0x21ad1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21756
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x68a8
leaq -0x41(%rbp), %rdi
callq 0x64e0
jmp 0x21adf
movb $0x0, -0x1(%rbp)
jmp 0x21ad1
movq -0x18(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x67b0
movq -0x100(%rbp), %rdx
leaq 0x32539(%rip), %rsi     # 0x53ccf
leaq -0x78(%rbp), %rdi
callq 0xac00
jmp 0x217a1
movq -0x108(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x21c40
movb %al, -0x109(%rbp)
jmp 0x217b9
movb -0x109(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x10a(%rbp)
jne 0x217ce
jmp 0x217ef
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x21d20
movb %al, -0x10b(%rbp)
jmp 0x217e1
movb -0x10b(%rbp), %al
movb %al, -0x10a(%rbp)
jmp 0x217ef
movb -0x10a(%rbp), %al
movb %al, -0x10c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x68a8
leaq -0x79(%rbp), %rdi
callq 0x64e0
movb -0x10c(%rbp), %al
testb $0x1, %al
jne 0x21819
jmp 0x21853
movb $0x1, -0x1(%rbp)
jmp 0x21ad1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21845
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x68a8
leaq -0x79(%rbp), %rdi
callq 0x64e0
jmp 0x21adf
movb $0x0, -0x1(%rbp)
jmp 0x21ad1
movq -0x18(%rbp), %rax
movq %rax, -0x120(%rbp)
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x67b0
movq -0x118(%rbp), %rdx
leaq 0x3244c(%rip), %rsi     # 0x53cd4
leaq -0xa0(%rbp), %rdi
callq 0xac00
jmp 0x21896
movq -0x120(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x21c40
movb %al, -0x121(%rbp)
jmp 0x218b1
movb -0x121(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x122(%rbp)
jne 0x218c6
jmp 0x218ea
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x21d20
movb %al, -0x123(%rbp)
jmp 0x218dc
movb -0x123(%rbp), %al
movb %al, -0x122(%rbp)
jmp 0x218ea
movb -0x122(%rbp), %al
movb %al, -0x124(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x68a8
leaq -0xa1(%rbp), %rdi
callq 0x64e0
movb -0x124(%rbp), %al
testb $0x1, %al
jne 0x2191a
jmp 0x2195a
movb $0x1, -0x1(%rbp)
jmp 0x21ad1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21949
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x68a8
leaq -0xa1(%rbp), %rdi
callq 0x64e0
jmp 0x21adf
movb $0x0, -0x1(%rbp)
jmp 0x21ad1
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x21d70
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x21ad1
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x21de0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x21ad1
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x21eb0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x21ad1
movl $0x30, %eax
cmpl -0x1c(%rbp), %eax
jg 0x219b8
cmpl $0x39, -0x1c(%rbp)
jle 0x219c2
cmpl $0x2d, -0x1c(%rbp)
jne 0x21ac2
movq -0x18(%rbp), %rdi
callq 0x22000
movq -0x18(%rbp), %rsi
leaq -0xd8(%rbp), %rdi
callq 0x22020
leaq -0xd8(%rbp), %rdi
callq 0x6720
testb $0x1, %al
jne 0x219ed
jmp 0x21a00
movb $0x0, -0x1(%rbp)
movl $0x1, -0xdc(%rbp)
jmp 0x21ab4
leaq -0xd8(%rbp), %rdi
callq 0x61e0
movq %rax, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x6370
movsd %xmm0, -0xb0(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x61e0
movq %rax, -0x138(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x6330
movq -0x138(%rbp), %rcx
movq %rax, %rdx
movq -0x130(%rbp), %rax
addq %rdx, %rcx
cmpq %rcx, %rax
jne 0x21aa6
movq -0x10(%rbp), %rdi
movsd -0xb0(%rbp), %xmm0
callq 0x22100
jmp 0x21a7c
movb $0x1, -0x1(%rbp)
movl $0x1, -0xdc(%rbp)
jmp 0x21ab4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x68a8
jmp 0x21adf
movb $0x0, -0x1(%rbp)
movl $0x1, -0xdc(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x68a8
jmp 0x21ad1
jmp 0x21ac4
movq -0x18(%rbp), %rdi
callq 0x22000
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x67a0
nopl (%rax,%rax)