// File: ef-gy[P]libefgy/include/ef.gy/json.h
// Function: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> efgy::json::to_string<long double>(efgy::json::value<long double> const&)
static inline std::string to_string(const value<Q> &v) {
  switch (v.type) {
    case object: {
      bool first = true;
      std::string rv = "{";

      for (const auto &e : v.asObject()) {
        rv += (first ? "" : ",") + to_string(json(e.first)) + ":" +
              to_string(e.second);
        first = false;
      }

      return rv + "}";
    }
    case array: {
      bool first = true;
      std::string rv = "[";

      for (const auto &e : v.asArray()) {
        rv += (first ? "" : ",") + to_string(e);
        first = false;
      }

      return rv + "]";
    }
    case string: {
      std::string rv = "\"";
      for (const auto &c : v.asString()) {
        switch (c) {
          case '\\':
          case '"':
            rv.push_back('\\');
            rv.push_back(c);
            break;
          case '\b':
            rv.push_back('\\');
            rv.push_back('b');
            break;
          case '\f':
            rv.push_back('\\');
            rv.push_back('f');
            break;
          case '\n':
            rv.push_back('\\');
            rv.push_back('n');
            break;
          case '\r':
            rv.push_back('\\');
            rv.push_back('r');
            break;
          case '\t':
            rv.push_back('\\');
            rv.push_back('t');
            break;
          default:
            rv.push_back(c);
            break;
        }
      }
      return rv + "\"";
    }
    case number: {
      std::string n = std::to_string(v.asNumber());
      while (n[(n.size() - 1)] == '0') {
        n.pop_back();
      }
      if (n[(n.size() - 1)] == '.') {
        n.pop_back();
      }
      return n;
    }
    case yes:
      return "true";
    case no:
      return "false";
    case null:
      return "null";
    default:
      // don't do anything for other types.
      return "";
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2f0, %rsp            # imm = 0x2F0
movq %rdi, -0x280(%rbp)
movq %rdi, %rax
movq %rax, -0x278(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x270(%rbp)
subq $0x6, %rax
ja 0x8da9
movq -0x270(%rbp), %rax
leaq 0x34eb7(%rip), %rcx     # 0x3d270
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x1, -0x11(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x5670
movq -0x288(%rbp), %rdx
leaq 0x35c20(%rip), %rsi     # 0x3e004
leaq -0x38(%rbp), %rdi
callq 0xad30
jmp 0x83ef
leaq -0x39(%rbp), %rdi
callq 0x5420
movq -0x10(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x2f160
jmp 0x840a
leaq -0x88(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0x3bdd0
movq %rax, -0x90(%rbp)
movq -0x58(%rbp), %rdi
callq 0x3be00
movq %rax, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x3be30
testb $0x1, %al
jne 0x8488
leaq -0x88(%rbp), %rdi
callq 0xb670
jmp 0x867c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x5420
jmp 0x8e10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x86a3
leaq -0x90(%rbp), %rdi
callq 0x3be60
movq %rax, -0xa0(%rbp)
movb -0x11(%rbp), %dl
leaq 0x351fd(%rip), %rcx     # 0x3d6a2
leaq 0x35b5a(%rip), %rax     # 0x3e006
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0x290(%rbp)
movq -0xa0(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x3bff0
jmp 0x84cf
leaq -0x120(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x8370
jmp 0x84e4
movq -0x290(%rbp), %rsi
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rdx
callq 0x3bfa0
jmp 0x8500
leaq 0x35b01(%rip), %rdx     # 0x3e008
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3bf50
jmp 0x851c
movq -0xa0(%rbp), %rsi
addq $0x20, %rsi
leaq -0x150(%rbp), %rdi
callq 0x8370
jmp 0x8535
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
leaq -0x150(%rbp), %rdx
callq 0x3be80
jmp 0x8551
leaq -0x38(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x54f0
jmp 0x8563
leaq -0xc0(%rbp), %rdi
callq 0x5270
leaq -0x150(%rbp), %rdi
callq 0x5270
leaq -0xe0(%rbp), %rdi
callq 0x5270
leaq -0x100(%rbp), %rdi
callq 0x5270
leaq -0x120(%rbp), %rdi
callq 0x5270
leaq -0x130(%rbp), %rdi
callq 0xb190
movb $0x0, -0x11(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x3c040
jmp 0x8435
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x866e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8662
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8656
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x864a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x863e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8632
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x5270
leaq -0x150(%rbp), %rdi
callq 0x5270
leaq -0xe0(%rbp), %rdi
callq 0x5270
leaq -0x100(%rbp), %rdi
callq 0x5270
leaq -0x120(%rbp), %rdi
callq 0x5270
leaq -0x130(%rbp), %rdi
callq 0xb190
leaq -0x88(%rbp), %rdi
callq 0xb670
jmp 0x86a3
movq -0x280(%rbp), %rdi
leaq 0x34e84(%rip), %rdx     # 0x3d50e
leaq -0x38(%rbp), %rsi
callq 0x3c070
jmp 0x8695
leaq -0x38(%rbp), %rdi
callq 0x5270
jmp 0x8e00
leaq -0x38(%rbp), %rdi
callq 0x5270
jmp 0x8e10
movb $0x1, -0x151(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x5670
movq -0x298(%rbp), %rdx
leaq 0x35931(%rip), %rsi     # 0x3e00a
leaq -0x178(%rbp), %rdi
callq 0xad30
jmp 0x86e7
leaq -0x179(%rbp), %rdi
callq 0x5420
movq -0x10(%rbp), %rsi
leaq -0x1a0(%rbp), %rdi
callq 0x2f200
jmp 0x8705
leaq -0x1a0(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rdi
callq 0x30790
movq %rax, -0x1a8(%rbp)
movq -0x188(%rbp), %rdi
callq 0x307c0
movq %rax, -0x1b0(%rbp)
leaq -0x1a8(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x30b70
testb $0x1, %al
jne 0x878f
leaq -0x1a0(%rbp), %rdi
callq 0xb5f0
jmp 0x8888
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x179(%rbp), %rdi
callq 0x5420
jmp 0x8e10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x88b5
leaq -0x1a8(%rbp), %rdi
callq 0x30be0
movq %rax, -0x1b8(%rbp)
movb -0x151(%rbp), %dl
leaq 0x34ef3(%rip), %rcx     # 0x3d6a2
leaq 0x35850(%rip), %rax     # 0x3e006
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0x2a0(%rbp)
movq -0x1b8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
callq 0x8370
jmp 0x87d9
movq -0x2a0(%rbp), %rsi
leaq -0x1d8(%rbp), %rdi
leaq -0x1f8(%rbp), %rdx
callq 0x3bfa0
jmp 0x87f5
leaq -0x178(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x54f0
jmp 0x880a
leaq -0x1d8(%rbp), %rdi
callq 0x5270
leaq -0x1f8(%rbp), %rdi
callq 0x5270
movb $0x0, -0x151(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x30c00
jmp 0x8739
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x887a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x886e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x5270
leaq -0x1f8(%rbp), %rdi
callq 0x5270
leaq -0x1a0(%rbp), %rdi
callq 0xb5f0
jmp 0x88b5
movq -0x280(%rbp), %rdi
leaq 0x34c44(%rip), %rdx     # 0x3d4da
leaq -0x178(%rbp), %rsi
callq 0x3c070
jmp 0x88a4
leaq -0x178(%rbp), %rdi
callq 0x5270
jmp 0x8e00
leaq -0x178(%rbp), %rdi
callq 0x5270
jmp 0x8e10
leaq -0x219(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x5670
movq -0x2a8(%rbp), %rdx
leaq 0x35725(%rip), %rsi     # 0x3e00c
leaq -0x218(%rbp), %rdi
callq 0xad30
jmp 0x88f5
leaq -0x219(%rbp), %rdi
callq 0x5420
movq -0x10(%rbp), %rsi
leaq -0x248(%rbp), %rdi
callq 0x2ef30
jmp 0x8913
leaq -0x248(%rbp), %rax
movq %rax, -0x228(%rbp)
movq -0x228(%rbp), %rdi
callq 0x53a0
movq %rax, -0x250(%rbp)
movq -0x228(%rbp), %rdi
callq 0x56a0
movq %rax, -0x258(%rbp)
leaq -0x250(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x38cb0
testb $0x1, %al
jne 0x899d
leaq -0x248(%rbp), %rdi
callq 0x5270
jmp 0x8b75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x219(%rbp), %rdi
callq 0x5420
jmp 0x8e10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8ba2
leaq -0x250(%rbp), %rdi
callq 0x38ff0
movq %rax, -0x260(%rbp)
movq -0x260(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x2ac(%rbp)
subl $0x8, %eax
je 0x8a7a
jmp 0x89cb
movl -0x2ac(%rbp), %eax
subl $0x9, %eax
je 0x8b20
jmp 0x89dc
movl -0x2ac(%rbp), %eax
subl $0xa, %eax
je 0x8ad0
jmp 0x89ed
movl -0x2ac(%rbp), %eax
subl $0xc, %eax
je 0x8aa5
jmp 0x89fe
movl -0x2ac(%rbp), %eax
subl $0xd, %eax
je 0x8af8
jmp 0x8a0f
movl -0x2ac(%rbp), %eax
subl $0x22, %eax
je 0x8a2d
jmp 0x8a1c
movl -0x2ac(%rbp), %eax
subl $0x5c, %eax
jne 0x8b48
jmp 0x8a2d
leaq -0x218(%rbp), %rdi
movl $0x5c, %esi
callq 0x5350
jmp 0x8a40
movq -0x260(%rbp), %rax
movsbl (%rax), %esi
leaq -0x218(%rbp), %rdi
callq 0x5350
jmp 0x8a58
jmp 0x8b62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x5270
jmp 0x8ba2
leaq -0x218(%rbp), %rdi
movl $0x5c, %esi
callq 0x5350
jmp 0x8a8d
leaq -0x218(%rbp), %rdi
movl $0x62, %esi
callq 0x5350
jmp 0x8aa0
jmp 0x8b62
leaq -0x218(%rbp), %rdi
movl $0x5c, %esi
callq 0x5350
jmp 0x8ab8
leaq -0x218(%rbp), %rdi
movl $0x66, %esi
callq 0x5350
jmp 0x8acb
jmp 0x8b62
leaq -0x218(%rbp), %rdi
movl $0x5c, %esi
callq 0x5350
jmp 0x8ae3
leaq -0x218(%rbp), %rdi
movl $0x6e, %esi
callq 0x5350
jmp 0x8af6
jmp 0x8b62
leaq -0x218(%rbp), %rdi
movl $0x5c, %esi
callq 0x5350
jmp 0x8b0b
leaq -0x218(%rbp), %rdi
movl $0x72, %esi
callq 0x5350
jmp 0x8b1e
jmp 0x8b62
leaq -0x218(%rbp), %rdi
movl $0x5c, %esi
callq 0x5350
jmp 0x8b33
leaq -0x218(%rbp), %rdi
movl $0x74, %esi
callq 0x5350
jmp 0x8b46
jmp 0x8b62
movq -0x260(%rbp), %rax
movsbl (%rax), %esi
leaq -0x218(%rbp), %rdi
callq 0x5350
jmp 0x8b60
jmp 0x8b62
jmp 0x8b64
leaq -0x250(%rbp), %rdi
callq 0x37050
jmp 0x8947
movq -0x280(%rbp), %rdi
leaq 0x35489(%rip), %rdx     # 0x3e00c
leaq -0x218(%rbp), %rsi
callq 0x3c070
jmp 0x8b91
leaq -0x218(%rbp), %rdi
callq 0x5270
jmp 0x8e00
leaq -0x218(%rbp), %rdi
callq 0x5270
jmp 0x8e10
movb $0x0, -0x261(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2f4c0
movq -0x280(%rbp), %rdi
movq %rsp, %rax
fstpt (%rax)
callq 0x3c0f0
movq -0x280(%rbp), %rdi
callq 0x52e0
movq -0x280(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x5700
movq %rax, -0x2b8(%rbp)
jmp 0x8bfb
movq -0x2b8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jne 0x8c35
movq -0x280(%rbp), %rdi
callq 0x54b0
jmp 0x8bd4
movq -0x280(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x5270
jmp 0x8e10
movq -0x280(%rbp), %rdi
callq 0x52e0
movq -0x280(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x5700
movq %rax, -0x2c0(%rbp)
jmp 0x8c5c
movq -0x2c0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x8c77
movq -0x280(%rbp), %rdi
callq 0x54b0
movb $0x1, -0x261(%rbp)
testb $0x1, -0x261(%rbp)
jne 0x8c93
movq -0x280(%rbp), %rdi
callq 0x5270
jmp 0x8e00
leaq -0x262(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x5670
movq -0x280(%rbp), %rdi
movq -0x2c8(%rbp), %rdx
leaq 0x347f2(%rip), %rsi     # 0x3d4b2
callq 0xad30
jmp 0x8cc7
leaq -0x262(%rbp), %rdi
callq 0x5420
jmp 0x8e00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x262(%rbp), %rdi
callq 0x5420
jmp 0x8e10
leaq -0x263(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x5670
movq -0x280(%rbp), %rdi
movq -0x2d0(%rbp), %rdx
leaq 0x352f1(%rip), %rsi     # 0x3e00e
callq 0xad30
jmp 0x8d24
leaq -0x263(%rbp), %rdi
callq 0x5420
jmp 0x8e00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x263(%rbp), %rdi
callq 0x5420
jmp 0x8e10
leaq -0x264(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x5670
movq -0x280(%rbp), %rdi
movq -0x2d8(%rbp), %rdx
leaq 0x34774(%rip), %rsi     # 0x3d4ee
callq 0xad30
jmp 0x8d81
leaq -0x264(%rbp), %rdi
callq 0x5420
jmp 0x8e00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x264(%rbp), %rdi
callq 0x5420
jmp 0x8e10
leaq -0x265(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x5670
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rdx
leaq 0x348d1(%rip), %rsi     # 0x3d6a2
callq 0xad30
jmp 0x8dd8
leaq -0x265(%rbp), %rdi
callq 0x5420
jmp 0x8e00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x265(%rbp), %rdi
callq 0x5420
jmp 0x8e10
movq -0x278(%rbp), %rax
addq $0x2f0, %rsp            # imm = 0x2F0
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x5660
nopl (%rax)