// File: /workspace/github_cpp_makefile_star2_O3/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 %r12
pushq %rbx
subq $0x60, %rsp
movl %esi, %ebp
movq %rdi, %r14
leaq 0x1064c(%rip), %rdi     # 0x222d8
callq 0x4400
testl %eax, %eax
jne 0x11d9a
callq 0x76fa
cmpl $0x2, %eax
jge 0x11cbc
leaq 0x1062e(%rip), %rdi     # 0x222d8
callq 0x4200
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x102ed(%rip), %r12     # 0x21fb0
movq (%r12), %rdi
callq 0x42d0
movl %eax, %edi
callq 0x44e0
movl %eax, %ebx
testb $0x1, %bl
je 0x11cdf
callq 0x4693
movq (%r12), %r15
leaq 0x40(%rsp), %rdi
callq 0x15ea0
xorl %edx, %edx
testb $0x1, %bl
sete %dl
leaq 0x40(%rsp), %rdi
movq %r15, %rsi
callq 0x46af
movq (%r12), %rdi
movq 0x10633(%rip), %rdx     # 0x22340
leaq 0x9246(%rip), %rsi      # 0x1af5a
xorl %eax, %eax
callq 0x43c0
movq (%r12), %r15
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x6f6c
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
movl %ebp, %edx
callq 0x74ec
leaq 0x30(%rsp), %r14
movq -0x10(%r14), %rdi
movq %r15, %rsi
callq 0x42e0
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x11d71
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42b0
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x11d87
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42b0
testb $0x1, %bl
je 0x11ca3
callq 0x470d
jmp 0x11ca3
movl %eax, %edi
callq 0x41a0
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x11dc3
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42b0
jmp 0x11dc3
jmp 0x11dc0
jmp 0x11dc0
movq %rax, %rbx
leaq 0x1050e(%rip), %rdi     # 0x222d8
callq 0x4200
movq %rbx, %rdi
callq 0x44f0
nop