// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %rdi, %r14
flds 0xf2ef(%rip)            # 0x150fc
fld %st(0)
fstpt 0x2c(%rsp)
fstpt 0x60(%rsp)
leaq 0xa8(%rsp), %rbx
leaq 0x60(%rsp), %rsi
movq %rbx, %rdi
callq 0x6570
leaq 0xc0(%rsp), %rbx
movq $0x1, -0x8(%rbx)
leaq 0xf58d(%rip), %rsi      # 0x153d0
movq %rbx, %rdi
callq 0x6596
leaq 0xd8(%rsp), %rbx
movq $0x1, -0x8(%rbx)
leaq 0xf56e(%rip), %rsi      # 0x153d0
leaq 0xf56b(%rip), %rdx      # 0x153d4
leaq 0x138(%rsp), %rdi
callq 0x65b6
leaq 0x168(%rsp), %rdi
fldt 0x2c(%rsp)
fstpt 0x50(%rsp)
leaq 0xf54b(%rip), %rsi      # 0x153d8
leaq 0x50(%rsp), %rdx
callq 0x65f2
leaq 0x108(%rsp), %rdi
leaq 0x138(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0xf(%rsp), %rcx
leaq 0xe(%rsp), %r8
callq 0x662e
leaq 0x108(%rsp), %rsi
movq %rbx, %rdi
callq 0x6676
leaq 0xf0(%rsp), %rbx
movq $0x2, -0x8(%rbx)
leaq 0xf4f0(%rip), %rsi      # 0x153d0
leaq 0x78(%rsp), %r15
movq %r15, %rdi
callq 0x6596
leaq 0x88(%rsp), %r12
leaq 0xf4d8(%rip), %rsi      # 0x153d4
movq %r12, %rdi
callq 0x6596
leaq 0x98(%rsp), %r12
leaq 0xf4c5(%rip), %rsi      # 0x153d8
movq %r12, %rdi
callq 0x6596
leaq 0x38(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x3
popq %rdx
leaq 0xd(%rsp), %rcx
callq 0x6696
leaq 0x38(%rsp), %rsi
movq %rbx, %rdi
callq 0x66d0
movq $0x3, 0x100(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
pushq $0x60
popq %rdi
callq 0x42a0
movq %rax, %r15
movq %rax, 0x10(%rsp)
addq $0x60, %rax
movq %rax, 0x20(%rsp)
xorl %r13d, %r13d
leaq (%r15,%r13), %r12
cmpq $0x60, %r13
je 0x5fa5
leaq (%rsp,%r13), %rsi
addq $0xa8, %rsi
movq %r12, %rdi
callq 0x11040
movq 0xb8(%rsp,%r13), %rax
movq %rax, 0x10(%r15,%r13)
addq $0x18, %r13
jmp 0x5f75
movq %r12, 0x18(%rsp)
pushq $0x48
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0xa8, %rdi
callq 0x1095e
addq $-0x18, %rbx
cmpq $-0x18, %rbx
jne 0x5fad
leaq 0x38(%rsp), %rdi
callq 0x66f0
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x78, %rdi
callq 0x1095e
addq $-0x10, %rbx
cmpq $-0x10, %rbx
jne 0x5fd4
leaq 0x108(%rsp), %rdi
callq 0x1056e
pushq $0x30
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x6712
addq $-0x30, %rbx
cmpq $-0x30, %rbx
jne 0x5ffb
movq 0x10(%rsp), %rbx
movq 0x18(%rsp), %r12
cmpq %r12, %rbx
je 0x607f
movq %rbx, %rdi
callq 0x6728
cmpq 0x10(%rbx), %rax
jne 0x6038
addq $0x18, %rbx
jmp 0x601f
movq %rax, %r15
leaq 0xf39a(%rip), %rsi      # 0x153dc
movq %r14, %rdi
callq 0x4290
movq %rax, %rdi
movq %r15, %rsi
callq 0x41f0
leaq 0xf388(%rip), %rsi      # 0x153e4
movq %rax, %rdi
callq 0x4290
movq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x41f0
leaq 0xf3c2(%rip), %rsi      # 0x15439
movq %rax, %rdi
callq 0x4290
cmpq %r12, %rbx
sete %bl
leaq 0x10(%rsp), %rdi
callq 0x61ee
movl %ebx, %eax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
jmp 0x613b
movq %rax, %r14
xorl %ebp, %ebp
jmp 0x6166
movq %rax, %r14
xorl %ebp, %ebp
jmp 0x6170
jmp 0x60c1
movq %rax, %r14
jmp 0x60f8
movq %rax, %r14
xorl %ebp, %ebp
jmp 0x6198
movq %rax, %r14
leaq 0x138(%rsp), %rdi
callq 0x6712
jmp 0x6102
jmp 0x60ff
movq %rax, %r14
addq $-0x10, %r12
movq %r12, %rdi
callq 0x1095e
cmpq %r15, %r12
jne 0x60e7
xorl %ebp, %ebp
jmp 0x618b
movq %rax, %r14
xorl %ebp, %ebp
jmp 0x61b6
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x61ee
jmp 0x61de
movq %rax, %rdi
callq 0x40f0
movq %r15, %rdi
movq %r12, %rsi
callq 0x631c
callq 0x43e0
movq %rax, %r14
callq 0x4420
leaq 0x10(%rsp), %rdi
callq 0x6304
pushq $0x48
popq %r15
leaq (%rsp,%r15), %rdi
addq $0xa8, %rdi
callq 0x1095e
addq $-0x18, %r15
cmpq $-0x18, %r15
jne 0x6149
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0x66f0
pushq $0x20
popq %r15
leaq (%rsp,%r15), %rdi
addq $0x78, %rdi
callq 0x1095e
addq $-0x10, %r15
cmpq $-0x10, %r15
jne 0x6174
leaq 0x108(%rsp), %rdi
callq 0x1056e
pushq $0x30
popq %r15
leaq (%rsp,%r15), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x6712
addq $-0x30, %r15
cmpq $-0x30, %r15
jne 0x619c
leaq 0xa8(%rsp), %r15
cmpq %rbx, %r15
sete %al
testb %bpl, %bpl
jne 0x61de
testb %al, %al
jne 0x61de
addq $-0x18, %rbx
movq %rbx, %rdi
callq 0x1095e
cmpq %r15, %rbx
jne 0x61cd
movq %r14, %rdi
callq 0x4470
movq %rax, %rdi
callq 0x68b6