// File: ClauParser[P]ClauParser/./include/clau_parser.h
// Function: clau_parser::LoadData::LoadDataFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, clau_parser::UserType&, int, int, bool)
static bool LoadDataFromFile(const std::string& fileName, UserType& global, int lex_thr_num = 1, int parse_thr_num = 1, bool use_simd = false) /// global should be empty
		{
			if (lex_thr_num <= 0) {
				lex_thr_num = std::thread::hardware_concurrency();
			}
			if (lex_thr_num <= 0) {
				lex_thr_num = 1;
			}

			if (parse_thr_num <= 0) {
				parse_thr_num = std::thread::hardware_concurrency();
			}
			if (parse_thr_num <= 0) {
				parse_thr_num = 1;
			}

			FILE* inFile;

#ifdef _WIN32 
			fopen_s(&inFile, fileName.c_str(), "rb");
#else
			inFile = fopen(fileName.c_str(), "rb");
#endif

			if (!inFile)
			{
				return false;
			}

			UserType globalTemp;

			try {

				InFileReserver ifReserver(inFile, use_simd);


				//	strVec.reserve(ifReserver.Num);
				// cf) empty file..
				if (false == _LoadData(ifReserver, globalTemp, lex_thr_num, parse_thr_num))
				{
					fclose(inFile);
					return false; // return true?
				}

				fclose(inFile);
			}
			catch (const char* err) { std::cout << err << "\n"; fclose(inFile); return false; }
			catch (const std::string& e) { std::cout << e << "\n"; fclose(inFile); return false; }
			catch (const std::exception& e) { std::cout << e.what() << "\n"; fclose(inFile); return false; }
			catch (...) { std::cout << "not expected error" << "\n"; fclose(inFile); return false; }


			global = std::move(globalTemp);

			return true;
		}

// Assembly:
subq $0x188, %rsp            # imm = 0x188
movb %r8b, %al
movq %rdi, 0x178(%rsp)
movq %rsi, 0x170(%rsp)
movl %edx, 0x16c(%rsp)
movl %ecx, 0x168(%rsp)
andb $0x1, %al
movb %al, 0x167(%rsp)
cmpl $0x0, 0x16c(%rsp)
jg 0x4fb7
callq 0x3340
movl %eax, 0x16c(%rsp)
cmpl $0x0, 0x16c(%rsp)
jg 0x4fcc
movl $0x1, 0x16c(%rsp)
cmpl $0x0, 0x168(%rsp)
jg 0x4fe2
callq 0x3340
movl %eax, 0x168(%rsp)
cmpl $0x0, 0x168(%rsp)
jg 0x4ff7
movl $0x1, 0x168(%rsp)
movq 0x178(%rsp), %rdi
callq 0x30d0
movq %rax, %rdi
leaq 0x17483(%rip), %rsi     # 0x1c491
callq 0x32e0
movq %rax, 0x158(%rsp)
cmpq $0x0, 0x158(%rsp)
jne 0x5033
movb $0x0, 0x187(%rsp)
jmp 0x53d9
leaq 0x87(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x33e0
movq 0x30(%rsp), %rdx
leaq 0x173de(%rip), %rsi     # 0x1c42f
leaq 0x88(%rsp), %rdi
callq 0x44e0
jmp 0x5060
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x4ed0
jmp 0x5077
leaq 0x88(%rsp), %rdi
callq 0x3160
leaq 0x87(%rsp), %rdi
callq 0x3270
movq 0x158(%rsp), %rsi
movzbl 0x167(%rsp), %edx
andl $0x1, %edx
leaq 0x58(%rsp), %rdi
callq 0x8a80
jmp 0x50b0
movl 0x16c(%rsp), %edx
movl 0x168(%rsp), %ecx
leaq 0x58(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8ac0
movb %al, 0x2f(%rsp)
jmp 0x50d6
movb 0x2f(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x5315
movq 0x158(%rsp), %rdi
callq 0x3220
jmp 0x50f8
movb $0x0, 0x187(%rsp)
movl $0x1, 0x54(%rsp)
jmp 0x53bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
jmp 0x5138
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
leaq 0x88(%rsp), %rdi
callq 0x3160
leaq 0x87(%rsp), %rdi
callq 0x3270
jmp 0x53ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
movl 0x74(%rsp), %eax
movl %eax, 0x28(%rsp)
movl $0x4, %ecx
cmpl %ecx, %eax
jne 0x51cc
movq 0x78(%rsp), %rdi
callq 0x30c0
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rsi
movq 0x21e4c(%rip), %rdi     # 0x26fd0
callq 0x3210
movq %rax, 0x20(%rsp)
jmp 0x5190
movq 0x20(%rsp), %rdi
leaq 0x17292(%rip), %rsi     # 0x1c42e
callq 0x3210
jmp 0x51a3
movq 0x158(%rsp), %rdi
callq 0x3220
jmp 0x51b2
movb $0x0, 0x187(%rsp)
movl $0x1, 0x54(%rsp)
callq 0x33a0
jmp 0x53bb
movl 0x28(%rsp), %eax
movl $0x3, %ecx
cmpl %ecx, %eax
jne 0x523c
movq 0x78(%rsp), %rdi
callq 0x30c0
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rsi
movq 0x21ddc(%rip), %rdi     # 0x26fd0
callq 0x31f0
movq %rax, 0x18(%rsp)
jmp 0x5200
movq 0x18(%rsp), %rdi
leaq 0x17222(%rip), %rsi     # 0x1c42e
callq 0x3210
jmp 0x5213
movq 0x158(%rsp), %rdi
callq 0x3220
jmp 0x5222
movb $0x0, 0x187(%rsp)
movl $0x1, 0x54(%rsp)
callq 0x33a0
jmp 0x537d
movl 0x28(%rsp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x52b8
movq 0x78(%rsp), %rdi
callq 0x30c0
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
movq 0x21d60(%rip), %rdi     # 0x26fd0
callq 0x3210
movq %rax, 0x10(%rsp)
jmp 0x527c
movq 0x10(%rsp), %rdi
leaq 0x171a6(%rip), %rsi     # 0x1c42e
callq 0x3210
jmp 0x528f
movq 0x158(%rsp), %rdi
callq 0x3220
jmp 0x529e
movb $0x0, 0x187(%rsp)
movl $0x1, 0x54(%rsp)
callq 0x33a0
jmp 0x5364
movq 0x78(%rsp), %rdi
callq 0x30c0
movq 0x21d07(%rip), %rdi     # 0x26fd0
leaq 0x171c4(%rip), %rsi     # 0x1c494
callq 0x3210
movq %rax, 0x8(%rsp)
jmp 0x52dc
movq 0x8(%rsp), %rdi
leaq 0x17146(%rip), %rsi     # 0x1c42e
callq 0x3210
jmp 0x52ef
movq 0x158(%rsp), %rdi
callq 0x3220
jmp 0x52fe
movb $0x0, 0x187(%rsp)
movl $0x1, 0x54(%rsp)
callq 0x33a0
jmp 0x533b
movq 0x158(%rsp), %rdi
callq 0x3220
jmp 0x5324
jmp 0x5396
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
callq 0x33a0
jmp 0x534d
jmp 0x53bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
jmp 0x53ca
jmp 0x53ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
callq 0x33a0
jmp 0x5366
jmp 0x53bb
jmp 0x53ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
callq 0x33a0
jmp 0x537f
jmp 0x53bb
jmp 0x53ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
callq 0x33a0
jmp 0x53ca
movq 0x170(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x9d80
movb $0x1, 0x187(%rsp)
movl $0x1, 0x54(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x5490
jmp 0x53d9
leaq 0xa8(%rsp), %rdi
callq 0x5490
jmp 0x53ea
movb 0x187(%rsp), %al
andb $0x1, %al
addq $0x188, %rsp            # imm = 0x188
retq
movq 0x78(%rsp), %rdi
callq 0x33d0
movq %rax, %rdi
callq 0x5c50
nopl (%rax)