// File: /workspace/github_cpp_makefile_star2_O2/codeandkey[P]neocortex/src/log.h
// Function: void neocortex::log::write<2, int>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int)
void write(std::string message, Args ... args) {
			std::lock_guard<std::recursive_mutex> lock(log_mutex);

			if (get_level() < level) {
				return;
			}

			/* Test if color supported */
			bool color_supported = true;

#if defined NEOCORTEX_LINUX || defined NEOCORTEX_OSX
			color_supported &= isatty(fileno(stderr));
#endif

			/* Write color reset */
			if (color_supported) {
#if defined NEOCORTEX_WIN32
				SetConsoleTextAttribute(GetStdHandle(STD_ERROR_HANDLE), 15);
#elif defined NEOCORTEX_LINUX || defined NEOCORTEX_OSX
				fprintf(stderr, "\e[0;39m");
#endif
			}

			/* Write timestamp tag */
			fprintf(stderr, "%s ", neocortex::util::timestring().c_str());

			if (color_supported) {
#if defined NEOCORTEX_WIN32
				static const int colors[] = { 12, 14, 15, 11 };
				SetConsoleTextAttribute(GetStdHandle(STD_ERROR_HANDLE), colors[level]);
#elif defined NEOCORTEX_LINUX || defined NEOCORTEX_OSX
				static const char* colors[] = {
					"\e[0;31m",
					"\e[0;33m",
					"\e[0;37m",
					"\e[0;36m",
				};

				fprintf(stderr, colors[level]);
#endif
			}

			/* Write level tag */
			static const char* level_strings[] = {
				"ERROR   ",
				"WARNING ",
				"INFO    ",
				"DEBUG   ",
			};

			fprintf(stderr, "%s > ", level_strings[level]);

			/* Write content */
			fprintf(stderr, "%s", neocortex::util::format(message, args...).c_str());

			/* Write color reset */
			if (color_supported) {
#if defined NEOCORTEX_WIN32
				SetConsoleTextAttribute(GetStdHandle(STD_ERROR_HANDLE), 15);
#elif defined NEOCORTEX_LINUX || defined NEOCORTEX_OSX
				fprintf(stderr, "\e[0;39m");
#endif
			}
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %esi, %ebx
movq %rdi, %r14
leaq 0xe59a(%rip), %rdi      # 0x1d308
callq 0x6d2e
callq 0x6cdc
cmpl $0x2, %eax
jge 0xed98
leaq 0xe584(%rip), %rdi      # 0x1d308
callq 0x4260
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xe209(%rip), %r13      # 0x1cfa8
movq (%r13), %rdi
callq 0x4340
movl %eax, %edi
callq 0x4540
movl %eax, %ebp
testb $0x1, %bpl
je 0xedcd
movq (%r13), %rcx
leaq 0x70f8(%rip), %rdi      # 0x15eba
pushq $0x7
popq %rsi
pushq $0x1
popq %rdx
callq 0x45b0
movq (%r13), %r15
leaq 0x28(%rsp), %rdi
callq 0x11e04
leaq 0x28(%rsp), %r12
movq (%r12), %rdx
leaq 0x70d7(%rip), %rsi      # 0x15ec2
movq %r15, %rdi
xorl %eax, %eax
callq 0x4420
movq %r12, %rdi
callq 0x4120
testb $0x1, %bpl
je 0xee15
movq (%r13), %rdi
movq 0xe542(%rip), %rsi      # 0x1d350
xorl %eax, %eax
callq 0x4420
movq (%r13), %rdi
movq 0xe550(%rip), %rdx      # 0x1d370
leaq 0x70e3(%rip), %rsi      # 0x15f0a
xorl %eax, %eax
callq 0x4420
movq (%r13), %r15
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x43e0
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl %ebx, %edx
callq 0x6ad1
leaq 0x28(%rsp), %rbx
movq (%rbx), %rdi
movq %r15, %rsi
callq 0x4360
movq %rbx, %rdi
callq 0x4120
leaq 0x8(%rsp), %rdi
callq 0x4120
testb $0x1, %bpl
je 0xed7d
movq (%r13), %rcx
leaq 0x7033(%rip), %rdi      # 0x15eba
pushq $0x7
popq %rsi
pushq $0x1
popq %rdx
callq 0x45b0
jmp 0xed7d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4120
jmp 0xeead
jmp 0xeeaa
jmp 0xeeaa
movq %rax, %rbx
leaq 0xe454(%rip), %rdi      # 0x1d308
callq 0x4260
movq %rbx, %rdi
callq 0x4550
nop