// File: /workspace/github_cpp_makefile_star2_O2/ef-gy[P]libefgy/src/test-case/global.cpp
// Function: testBeacon(std::ostream&)
bool testBeacon(std::ostream &log) {
  int a, b, c, d;
  auto &root = global<beacons<int>>();

  if (root.size() != 0) {
    log << "beacon set size before registering anything should be 0 but is: "
        << root.size() << "\n";
    return false;
  }

  {
    beacon<int> ba(a);

    if (root.size() != 1) {
      log << "beacon set size after adding one element should be 1 but is: "
          << root.size() << "\n";
      return false;
    }

    {
      beacon<int> bb(b);
      beacon<int> bc(c);
      beacon<int> bd(d);

      if (root.size() != 4) {
        log << "beacon set size at this scope should be 4 but is: "
            << root.size() << "\n";
        return false;
      }
    }

    if (root.size() != 1) {
      log << "beacon set size after expiring three elements should be 1 but "
             "is: "
          << root.size() << "\n";
      return false;
    }
  }

  if (root.size() != 0) {
    log << "beacon set size after expiring all elements should be 0 but is: "
        << root.size() << "\n";
    return false;
  }

  return true;
}

// Assembly:
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
callq 0x4aa1
cmpq $0x0, 0x18f27(%rip)     # 0x1d7e8
je 0x48f5
leaq 0xd850(%rip), %rsi      # 0x1211a
movq %rbx, %rdi
callq 0x4260
movq 0x18f0f(%rip), %rsi     # 0x1d7e8
movq %rax, %rdi
callq 0x41c0
leaq 0xd9d7(%rip), %rsi      # 0x122bf
movq %rax, %rdi
callq 0x4260
jmp 0x4a47
callq 0x4aa1
leaq 0x18ebf(%rip), %rdx     # 0x1d7c0
leaq 0x30(%rsp), %rdi
leaq 0x4c(%rsp), %rsi
callq 0x4df4
cmpq $0x1, 0x18ed0(%rip)     # 0x1d7e8
jne 0x49c5
callq 0x4aa1
leaq 0x18e96(%rip), %rdx     # 0x1d7c0
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x4df4
callq 0x4aa1
leaq 0x18e7b(%rip), %rdx     # 0x1d7c0
leaq 0x10(%rsp), %rdi
leaq 0x44(%rsp), %rsi
callq 0x4df4
callq 0x4aa1
leaq 0x18e60(%rip), %rdx     # 0x1d7c0
movq %rsp, %rdi
leaq 0x40(%rsp), %rsi
callq 0x4df4
cmpq $0x4, 0x18e73(%rip)     # 0x1d7e8
jne 0x49f4
movq %rsp, %rdi
callq 0x4e10
leaq 0x10(%rsp), %rdi
callq 0x4e10
leaq 0x20(%rsp), %rdi
callq 0x4e10
cmpq $0x1, 0x18e4d(%rip)     # 0x1d7e8
jne 0x4a4f
leaq 0x30(%rsp), %rdi
callq 0x4e10
cmpq $0x0, 0x18e35(%rip)     # 0x1d7e8
je 0x4a5b
leaq 0xd84f(%rip), %rsi      # 0x1220f
jmp 0x48ca
leaq 0xd78f(%rip), %rsi      # 0x1215b
movq %rbx, %rdi
callq 0x4260
movq 0x18e0d(%rip), %rsi     # 0x1d7e8
movq %rax, %rdi
callq 0x41c0
leaq 0xd8d5(%rip), %rsi      # 0x122bf
movq %rax, %rdi
callq 0x4260
jmp 0x4a3d
leaq 0xd79e(%rip), %rsi      # 0x12199
movq %rbx, %rdi
callq 0x4260
movq 0x18dde(%rip), %rsi     # 0x1d7e8
movq %rax, %rdi
callq 0x41c0
leaq 0xd8a6(%rip), %rsi      # 0x122bf
movq %rax, %rdi
callq 0x4260
movq %rsp, %rdi
callq 0x4e10
leaq 0x10(%rsp), %rdi
callq 0x4e10
leaq 0x20(%rsp), %rdi
callq 0x4e10
leaq 0x30(%rsp), %rdi
callq 0x4e10
xorl %eax, %eax
addq $0x50, %rsp
popq %rbx
retq
leaq 0xd776(%rip), %rsi      # 0x121cc
jmp 0x49cc
movb $0x1, %al
jmp 0x4a49
movq %rax, %rbx
jmp 0x4a76
movq %rax, %rbx
jmp 0x4a80
jmp 0x4a8c
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4e10
leaq 0x10(%rsp), %rdi
callq 0x4e10
leaq 0x20(%rsp), %rdi
callq 0x4e10
jmp 0x4a8f
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x4e10
movq %rbx, %rdi
callq 0x4400