// File: /workspace/github_cpp_makefile_star2_O3/michalfapso[P]enum_strings/main.cpp
// Function: main
int main ()
{
	A a(Animals::COW);

	std::cout << "size:" << EnumManager<Day>::size() << std::endl;

	for (int DAY = 0; DAY < EnumManager<Day>::size(); DAY++)
		std::cout << static_cast<Day> (DAY) << std::endl;

	Day e = Day::Friday;
	std::string s = EnumManager<Day>::toString(e);
	std::cout << "to string: '" << s << "'" << std::endl;
	e = EnumManager<Day>::toEnum(s);
	std::cout << "from string: " << e << " = " << (int)e << std::endl;

	std::cout << "Name a day: ";
	while (true)
	{
		std::cin >> e;
		std::cout << "day = " << e << std::endl;
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x30, %rsp
leaq 0xc(%rsp), %rdi
movl $0x2, %esi
callq 0x38e4
movq 0x5b31(%rip), %rbx      # 0x7fd0
leaq 0x2ba9(%rip), %rsi      # 0x504f
movl $0x5, %edx
movq %rbx, %rdi
callq 0x21b0
movl 0x5cb7(%rip), %esi      # 0x8170
movq %rbx, %rdi
callq 0x2210
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
cmpl $0x0, 0x5c7e(%rip)      # 0x8170
jle 0x253b
xorl %ebx, %ebx
movq 0x5ad3(%rip), %r14      # 0x7fd0
movq %r14, %rdi
movl %ebx, %esi
callq 0x26e3
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
incl %ebx
cmpl 0x5c37(%rip), %ebx      # 0x8170
jl 0x24fd
movl $0x4, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movl $0x4, %esi
callq 0x2758
movq 0x5a77(%rip), %rdi      # 0x7fd0
leaq 0x2af5(%rip), %rsi      # 0x5055
movl $0xc, %edx
callq 0x21b0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x5a55(%rip), %rdi      # 0x7fd0
callq 0x21b0
movq %rax, %rbx
leaq 0x2ad6(%rip), %rsi      # 0x5060
movl $0x1, %edx
movq %rax, %rdi
callq 0x21b0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
leaq 0x5bbb(%rip), %rdi      # 0x8180
leaq 0x10(%rsp), %rsi
callq 0x3410
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
leaq 0x5bad(%rip), %rcx      # 0x8188
cmpq %rcx, %rax
je 0x25e3
movl 0x40(%rax), %ebx
movl %ebx, 0x8(%rsp)
movq 0x59e2(%rip), %rdi      # 0x7fd0
leaq 0x2a6d(%rip), %rsi      # 0x5062
movl $0xd, %edx
callq 0x21b0
movq 0x59ca(%rip), %rdi      # 0x7fd0
movl %ebx, %esi
callq 0x26e3
movq %rax, %r14
leaq 0x2a69(%rip), %rsi      # 0x5080
movl $0x3, %edx
movq %rax, %rdi
callq 0x21b0
movq %r14, %rdi
movl %ebx, %esi
callq 0x2210
movq %rax, %rdi
callq 0x20a0
movq 0x5993(%rip), %rdi      # 0x7fd0
leaq 0x2a2c(%rip), %rsi      # 0x5070
movl $0xc, %edx
callq 0x21b0
movq 0x598b(%rip), %rbx      # 0x7fe0
leaq 0x8(%rsp), %r14
movq 0x596f(%rip), %r15      # 0x7fd0
leaq 0x2a15(%rip), %r12      # 0x507d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x27d4
movl $0x6, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x21b0
movl 0x8(%rsp), %esi
movq %r15, %rdi
callq 0x26e3
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
jmp 0x2668
jmp 0x26bd
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x26db
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2180
movq %rbx, %rdi
callq 0x2220