// File: lunasorcery[P]succ/main.cpp
// Function: handleStdFlag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
static void handleStdFlag(const std::string& flag)
{
	const std::string version = flag.substr(5);

	if (std::regex_search(version, std::regex("^(c|gnu)\\+\\+(\\d+|2a)$"))) {
		if (version.starts_with("gnu")) {
			fprintf(stderr, "succ: %serror:%s SUCC only supports standards-compliant code. We'll have none of those fancy GNU extensions here, thank you. [%s]\n", gColorBrightRed, gColorReset, flag.c_str());
			exit(1);
		} else if (version == "c++98" || version == "c++03") {
			fprintf(stderr, "%swarning:%s Bring yourself into the modern day, gramps. [%s]\n", gColorBrightMagenta, gColorReset, flag.c_str());
			return;
		} else if (version == "c++23") {
			fprintf(stderr, "%swarning:%s Look, I want epochs as much as you do, but be patient. We're not there yet. [%s]\n", gColorBrightMagenta, gColorReset, flag.c_str());
			return;
		} else if (version == "c++11" || version == "c++14" || version == "c++17" || version == "c++2a") {
			// do nothing
			return;
		}
	}

	fprintf(stderr, "succ: %serror:%s What? That's not a real version of the language. [%s]\n", gColorBrightRed, gColorReset, flag.c_str());
	exit(1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x28(%rbp), %rdi
movl $0x5, %edx
movq $-0x1, %rcx
callq 0x32640
leaq 0x2e92f(%rip), %rsi     # 0x34ece
leaq -0x48(%rbp), %rdi
movl $0x10, %edx
callq 0x99d0
jmp 0x65af
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x9980
movb %al, -0x59(%rbp)
jmp 0x65c3
leaq -0x48(%rbp), %rdi
callq 0x9a70
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0x65d8
jmp 0x67da
leaq -0x28(%rbp), %rdi
leaq 0x2e901(%rip), %rsi     # 0x34ee4
callq 0x77c0
testb $0x1, %al
jne 0x65ee
jmp 0x666d
movq 0x469cb(%rip), %rax     # 0x4cfc0
movq (%rax), %rax
movq %rax, -0x78(%rbp)
movq 0x470c5(%rip), %rax     # 0x4d6c8
movq %rax, -0x70(%rbp)
movq 0x470c2(%rip), %rax     # 0x4d6d0
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rdi
callq 0x7770
movq -0x78(%rbp), %rdi
movq -0x70(%rbp), %rdx
movq -0x68(%rbp), %rcx
movq %rax, %r8
leaq 0x2e8b7(%rip), %rsi     # 0x34ee8
movb $0x0, %al
callq 0x5360
movl $0x1, %edi
callq 0x52e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6852
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x9a70
jmp 0x6852
leaq -0x28(%rbp), %rdi
leaq 0x2e8f3(%rip), %rsi     # 0x34f6b
callq 0x7420
testb $0x1, %al
jne 0x6697
leaq -0x28(%rbp), %rdi
leaq 0x2e8e5(%rip), %rsi     # 0x34f71
callq 0x7420
testb $0x1, %al
jne 0x6697
jmp 0x66f9
movq 0x46922(%rip), %rax     # 0x4cfc0
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movq 0x47029(%rip), %rax     # 0x4d6d8
movq %rax, -0x88(%rbp)
movq 0x47013(%rip), %rax     # 0x4d6d0
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rdi
callq 0x7770
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rdx
movq -0x80(%rbp), %rcx
movq %rax, %r8
leaq 0x2e891(%rip), %rsi     # 0x34f77
movb $0x0, %al
callq 0x5360
movl $0x1, -0x58(%rbp)
jmp 0x6840
leaq -0x28(%rbp), %rdi
leaq 0x2e8b2(%rip), %rsi     # 0x34fb6
callq 0x7420
testb $0x1, %al
jne 0x670f
jmp 0x6777
movq 0x468aa(%rip), %rax     # 0x4cfc0
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
movq 0x46fb1(%rip), %rax     # 0x4d6d8
movq %rax, -0xa0(%rbp)
movq 0x46f9b(%rip), %rax     # 0x4d6d0
movq %rax, -0x98(%rbp)
movq -0x8(%rbp), %rdi
callq 0x7770
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rdx
movq -0x98(%rbp), %rcx
movq %rax, %r8
leaq 0x2e858(%rip), %rsi     # 0x34fbc
movb $0x0, %al
callq 0x5360
movl $0x1, -0x58(%rbp)
jmp 0x6840
leaq -0x28(%rbp), %rdi
leaq 0x2e899(%rip), %rsi     # 0x3501b
callq 0x7420
testb $0x1, %al
jne 0x67c9
leaq -0x28(%rbp), %rdi
leaq 0x2e88b(%rip), %rsi     # 0x35021
callq 0x7420
testb $0x1, %al
jne 0x67c9
leaq -0x28(%rbp), %rdi
leaq 0x2e87d(%rip), %rsi     # 0x35027
callq 0x7420
testb $0x1, %al
jne 0x67c9
leaq -0x28(%rbp), %rdi
leaq 0x2e86f(%rip), %rsi     # 0x3502d
callq 0x7420
testb $0x1, %al
jne 0x67c9
jmp 0x67d2
movl $0x1, -0x58(%rbp)
jmp 0x6840
jmp 0x67d4
jmp 0x67d6
jmp 0x67d8
jmp 0x67da
movq 0x467df(%rip), %rax     # 0x4cfc0
movq (%rax), %rax
movq %rax, -0xc0(%rbp)
movq 0x46ed6(%rip), %rax     # 0x4d6c8
movq %rax, -0xb8(%rbp)
movq 0x46ed0(%rip), %rax     # 0x4d6d0
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rdi
callq 0x7770
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rdx
movq -0xb0(%rbp), %rcx
movq %rax, %r8
leaq 0x2e804(%rip), %rsi     # 0x35033
movb $0x0, %al
callq 0x5360
movl $0x1, %edi
callq 0x52e0
leaq -0x28(%rbp), %rdi
callq 0x6df0
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x6df0
movq -0x50(%rbp), %rdi
callq 0x5430
nopw %cs:(%rax,%rax)