// File: ef-gy[P]libefgy/src/test-case/json.cpp
// Function: testSize(std::ostream&)
bool testSize(std::ostream &log) {
  struct sampleData {
    json::json in;
    std::size_t res;
  };

  std::vector<sampleData> tests{
      {2.l, 1},
      {"foo", 1},
      {json::json::objectType{{"foo", "bar"}, {"baz", 2.l}}, 2},
      {json::json::arrayType{"foo", "bar", "baz"}, 3},
  };

  for (const auto &tt : tests) {
    const auto s = tt.in.size();
    if (s != tt.res) {
      log << "size()=" << s << ", but expected " << tt.res << "\n";
      return false;
    }
  }
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x350, %rsp            # imm = 0x350
movq %rdi, -0x10(%rbp)
movb $0x1, -0x1ea(%rbp)
leaq -0x98(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
flds 0x343e2(%rip)           # 0x3d2ac
fstpt -0xb0(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0xb1c0
jmp 0x8ede
movq $0x1, -0x88(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0x228(%rbp)
movq %rdi, -0xa0(%rbp)
leaq 0x34736(%rip), %rsi     # 0x3d638
callq 0xb200
jmp 0x8f09
movq -0x228(%rbp), %rax
movq $0x1, 0x10(%rax)
leaq -0x68(%rbp), %rax
movq %rax, -0x238(%rbp)
movq %rax, %rcx
movq %rcx, -0x230(%rbp)
movq %rax, -0xa0(%rbp)
leaq -0x160(%rbp), %rdi
movq %rdi, -0x168(%rbp)
leaq 0x346ef(%rip), %rsi     # 0x3d638
leaq 0x346ec(%rip), %rdx     # 0x3d63c
callq 0xb250
jmp 0x8f57
leaq -0x130(%rbp), %rdi
movq %rdi, -0x168(%rbp)
flds 0x34341(%rip)           # 0x3d2ac
fstpt -0x180(%rbp)
leaq 0x346c8(%rip), %rsi     # 0x3d640
leaq -0x180(%rbp), %rdx
callq 0xb2f0
jmp 0x8f86
leaq -0x160(%rbp), %rax
movq %rax, -0x100(%rbp)
movq $0x2, -0xf8(%rbp)
leaq -0x182(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0xb3c0
movq -0x240(%rbp), %r8
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
leaq -0x181(%rbp), %rcx
callq 0xb3e0
jmp 0x8fdc
movq -0x238(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0xb4b0
jmp 0x8ff1
movq -0x230(%rbp), %rax
movq $0x2, 0x10(%rax)
leaq -0x50(%rbp), %rax
movq %rax, -0x250(%rbp)
movq %rax, %rcx
movq %rcx, -0x248(%rbp)
movq %rax, -0xa0(%rbp)
leaq -0x1e0(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
leaq 0x34607(%rip), %rsi     # 0x3d638
callq 0xb200
jmp 0x9038
leaq -0x1d0(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
leaq 0x345ef(%rip), %rsi     # 0x3d63c
callq 0xb200
jmp 0x9054
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
leaq 0x345d7(%rip), %rsi     # 0x3d640
callq 0xb200
jmp 0x9070
leaq -0x1e0(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq $0x3, -0x1a8(%rbp)
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0xb500
movq -0x258(%rbp), %rcx
movq -0x1b0(%rbp), %rsi
movq -0x1a8(%rbp), %rdx
leaq -0x1a0(%rbp), %rdi
callq 0xb520
jmp 0x90bf
movq -0x250(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0xb5a0
jmp 0x90d4
movq -0x248(%rbp), %rax
movq $0x3, 0x10(%rax)
movb $0x0, -0x1ea(%rbp)
leaq -0x98(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x4, -0x30(%rbp)
leaq -0x1eb(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x96a0
movq -0x260(%rbp), %rcx
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x96c0
jmp 0x912a
leaq -0x1eb(%rbp), %rdi
callq 0x9740
leaq -0x98(%rbp), %rax
movq %rax, -0x270(%rbp)
addq $0x60, %rax
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x278(%rbp)
callq 0x9760
movq -0x270(%rbp), %rcx
movq -0x278(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x268(%rbp)
jne 0x914f
leaq -0x1a0(%rbp), %rdi
callq 0xb5f0
leaq -0x1e9(%rbp), %rdi
callq 0xb650
leaq -0x1e0(%rbp), %rax
movq %rax, -0x288(%rbp)
addq $0x30, %rax
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rdi
addq $-0x10, %rdi
movq %rdi, -0x290(%rbp)
callq 0xb190
movq -0x288(%rbp), %rcx
movq -0x290(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x280(%rbp)
jne 0x91b1
leaq -0xf0(%rbp), %rdi
callq 0xb670
leaq -0x182(%rbp), %rdi
callq 0xb690
leaq -0x160(%rbp), %rax
movq %rax, -0x2a0(%rbp)
addq $0x60, %rax
movq %rax, -0x298(%rbp)
movq -0x298(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x2a8(%rbp)
callq 0xb390
movq -0x2a0(%rbp), %rcx
movq -0x2a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x298(%rbp)
jne 0x9213
leaq -0x28(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rdi
callq 0x9780
movq %rax, -0x200(%rbp)
movq -0x1f8(%rbp), %rdi
callq 0x97b0
movq %rax, -0x208(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x97e0
testb $0x1, %al
jne 0x9291
jmp 0x9668
leaq -0x200(%rbp), %rdi
callq 0x9820
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rdi
callq 0xb6b0
movq %rax, -0x2b0(%rbp)
jmp 0x92b9
movq -0x2b0(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x218(%rbp), %rax
movq -0x210(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x9655
movq -0x10(%rbp), %rdi
leaq 0x3435a(%rip), %rsi     # 0x3d644
callq 0x53b0
movq %rax, -0x2b8(%rbp)
jmp 0x92f8
movq -0x2b8(%rbp), %rdi
movq -0x218(%rbp), %rsi
callq 0x50c0
movq %rax, -0x2c0(%rbp)
jmp 0x9314
movq -0x2c0(%rbp), %rdi
leaq 0x3432a(%rip), %rsi     # 0x3d64c
callq 0x53b0
movq %rax, -0x2c8(%rbp)
jmp 0x9330
movq -0x2c8(%rbp), %rdi
movq -0x210(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x50c0
movq %rax, -0x2d0(%rbp)
jmp 0x9350
movq -0x2d0(%rbp), %rdi
leaq 0x34343(%rip), %rsi     # 0x3d6a1
callq 0x53b0
jmp 0x9365
movb $0x0, -0x1(%rbp)
movl $0x1, -0x21c(%rbp)
jmp 0x9676
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x95de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
movq -0x168(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x2d8(%rbp)
je 0x93ec
movq -0x2d8(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x2e0(%rbp)
callq 0xb390
movq -0x2e0(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x2d8(%rbp)
jne 0x93bb
jmp 0x95de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x9586
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x957a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
movq -0x1e8(%rbp), %rax
leaq -0x1e0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x2e8(%rbp)
je 0x947c
movq -0x2e8(%rbp), %rdi
addq $-0x10, %rdi
movq %rdi, -0x2f0(%rbp)
callq 0xb190
movq -0x2f0(%rbp), %rax
leaq -0x1e0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x2e8(%rbp)
jne 0x944b
jmp 0x957a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x9522
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x9516
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x1eb(%rbp), %rdi
callq 0x9740
leaq -0x98(%rbp), %rax
movq %rax, -0x300(%rbp)
addq $0x60, %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x308(%rbp)
callq 0x9760
movq -0x300(%rbp), %rcx
movq -0x308(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x2f8(%rbp)
jne 0x94e3
jmp 0x9516
leaq -0x1a0(%rbp), %rdi
callq 0xb5f0
leaq -0x1e9(%rbp), %rdi
callq 0xb650
leaq -0x1e0(%rbp), %rax
movq %rax, -0x318(%rbp)
addq $0x30, %rax
movq %rax, -0x310(%rbp)
movq -0x310(%rbp), %rdi
addq $-0x10, %rdi
movq %rdi, -0x320(%rbp)
callq 0xb190
movq -0x318(%rbp), %rcx
movq -0x320(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x310(%rbp)
jne 0x9547
jmp 0x957a
leaq -0xf0(%rbp), %rdi
callq 0xb670
leaq -0x182(%rbp), %rdi
callq 0xb690
leaq -0x160(%rbp), %rax
movq %rax, -0x330(%rbp)
addq $0x60, %rax
movq %rax, -0x328(%rbp)
movq -0x328(%rbp), %rdi
addq $-0x30, %rdi
movq %rdi, -0x338(%rbp)
callq 0xb390
movq -0x330(%rbp), %rcx
movq -0x338(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x328(%rbp)
jne 0x95ab
jmp 0x95de
testb $0x1, -0x1ea(%rbp)
jne 0x95e9
jmp 0x9636
movq -0xa0(%rbp), %rax
leaq -0x98(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x340(%rbp)
je 0x9634
movq -0x340(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x348(%rbp)
callq 0x9760
movq -0x348(%rbp), %rax
leaq -0x98(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x340(%rbp)
jne 0x9603
jmp 0x9636
jmp 0x968d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x9860
jmp 0x968d
jmp 0x9657
leaq -0x200(%rbp), %rdi
callq 0x9840
jmp 0x9275
movb $0x1, -0x1(%rbp)
movl $0x1, -0x21c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x9860
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x350, %rsp            # imm = 0x350
popq %rbp
retq
movq -0xb8(%rbp), %rdi
callq 0x5660
nopl (%rax)