// File: /workspace/github_cpp_makefile_star2_O2/mhe[P]raytracerframework_cpp/yaml/exp.cpp
// Function: YAML::Exp::Escape[abi:cxx11](YAML::Stream&, int)
std::string Escape(Stream& in, int codeLength)
		{
			// grab string
			std::string str;
			for(int i=0;i<codeLength;i++)
				str += in.get();

			// get the value
			unsigned value = ParseHex(str, in.line, in.column);

			// legal unicode?
			if((value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF) {
				std::stringstream msg;
				msg << ErrorMsg::INVALID_UNICODE << value;
				throw ParserException(in.line, in.column, msg.str());
			}

			// now break it up into chars
			if(value <= 0x7F)
				return Str(value);
			else if(value <= 0x7FF)
				return Str(0xC0 + (value >> 6)) + Str(0x80 + (value & 0x3F));
			else if(value <= 0xFFFF)
				return Str(0xE0 + (value >> 12)) + Str(0x80 + ((value >> 6) & 0x3F)) + Str(0x80 + (value & 0x3F));
			else
				return Str(0xF0 + (value >> 18)) + Str(0x80 + ((value >> 12) & 0x3F)) +
					Str(0x80 + ((value >> 6) & 0x3F)) + Str(0x80 + (value & 0x3F));
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x250, %rsp            # imm = 0x250
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq %rsi, %r15
movq %rdi, %rbx
movb $0x0, (%rax)
xorl %r12d, %r12d
testl %edx, %edx
cmovgl %edx, %r12d
leaq -0xa0(%rbp), %r14
subl $0x1, %r12d
jb 0x18609
movq %r15, %rdi
callq 0x2173c
movsbl %al, %esi
movq %r14, %rdi
callq 0x4250
jmp 0x185ee
movl 0x8(%r15), %esi
movl 0xc(%r15), %edx
leaq -0xa0(%rbp), %rdi
callq 0x18498
movl %eax, %r14d
cmpl $0x10ffff, %eax         # imm = 0x10FFFF
ja 0x1883d
movl %r14d, %eax
andl $0xfffff800, %eax       # imm = 0xFFFFF800
cmpl $0xd800, %eax           # imm = 0xD800
je 0x1883d
cmpl $0x7f, %r14d
ja 0x18655
movsbl %r14b, %esi
movq %rbx, %rdi
callq 0x18550
jmp 0x1881e
movl %r14d, %eax
cmpl $0x7ff, %r14d           # imm = 0x7FF
ja 0x186b2
shrl $0x6, %eax
orb $-0x40, %al
movsbl %al, %esi
leaq -0x268(%rbp), %rdi
callq 0x18550
andb $0x3f, %r14b
orb $-0x80, %r14b
movsbl %r14b, %esi
leaq -0x40(%rbp), %rdi
callq 0x18550
leaq -0x268(%rbp), %rsi
leaq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x18c2b
leaq -0x40(%rbp), %rdi
callq 0x45d8
leaq -0x268(%rbp), %rdi
jmp 0x18819
cmpl $0xffff, %r14d          # imm = 0xFFFF
ja 0x18749
shrl $0xc, %eax
orb $-0x20, %al
movsbl %al, %esi
leaq -0x40(%rbp), %rdi
callq 0x18550
movl %r14d, %eax
shrl $0x6, %eax
andb $0x3f, %al
orb $-0x80, %al
movsbl %al, %esi
leaq -0x80(%rbp), %rdi
callq 0x18550
leaq -0x268(%rbp), %rdi
leaq -0x40(%rbp), %rsi
leaq -0x80(%rbp), %rdx
callq 0x18c2b
andb $0x3f, %r14b
orb $-0x80, %r14b
movsbl %r14b, %esi
leaq -0x60(%rbp), %rdi
callq 0x18550
leaq -0x268(%rbp), %rsi
leaq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x18c2b
leaq -0x60(%rbp), %rdi
callq 0x45d8
leaq -0x268(%rbp), %rdi
callq 0x45d8
leaq -0x80(%rbp), %rdi
callq 0x45d8
leaq -0x40(%rbp), %rdi
jmp 0x18819
shrl $0x12, %eax
orb $-0x10, %al
movsbl %al, %esi
leaq -0x80(%rbp), %rdi
callq 0x18550
movl %r14d, %eax
shrl $0xc, %eax
andb $0x3f, %al
orb $-0x80, %al
movsbl %al, %esi
leaq -0x60(%rbp), %rdi
callq 0x18550
leaq -0x40(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x18c2b
movl %r14d, %eax
shrl $0x6, %eax
andb $0x3f, %al
orb $-0x80, %al
movsbl %al, %esi
leaq -0xe0(%rbp), %rdi
callq 0x18550
leaq -0x268(%rbp), %rdi
leaq -0x40(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x18c2b
andb $0x3f, %r14b
orb $-0x80, %r14b
movsbl %r14b, %esi
leaq -0xc0(%rbp), %rdi
callq 0x18550
leaq -0x268(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
movq %rbx, %rdi
callq 0x18c2b
leaq -0xc0(%rbp), %rdi
callq 0x45d8
leaq -0x268(%rbp), %rdi
callq 0x45d8
leaq -0xe0(%rbp), %rdi
callq 0x45d8
leaq -0x40(%rbp), %rdi
callq 0x45d8
leaq -0x60(%rbp), %rdi
callq 0x45d8
leaq -0x80(%rbp), %rdi
callq 0x45d8
leaq -0xa0(%rbp), %rdi
callq 0x45d8
movq %rbx, %rax
addq $0x250, %rsp            # imm = 0x250
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq -0x268(%rbp), %rdi
callq 0x41f0
leaq -0x258(%rbp), %rdi
leaq 0x171a1(%rip), %rsi     # 0x2f9f8
callq 0x4270
movl %r14d, %esi
movq %rax, %rdi
callq 0x41c0
pushq $0x30
popq %rdi
callq 0x4130
movq %rax, %r14
movl 0x8(%r15), %ebx
movl 0xc(%r15), %r15d
leaq -0x250(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x4470
movb $0x1, %r12b
leaq -0x40(%rbp), %rcx
movq %r14, %rdi
movl %ebx, %esi
movl %r15d, %edx
callq 0x18be0
xorl %r12d, %r12d
leaq 0x14d98(%rip), %rsi     # 0x2d640
leaq -0x8cdd(%rip), %rdx     # 0xfbd2
movq %r14, %rdi
callq 0x44f0
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x45d8
testb %r12b, %r12b
jne 0x188d0
jmp 0x18993
movq %rax, %rbx
movq %r14, %rdi
callq 0x4210
jmp 0x18993
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x45d8
jmp 0x188f1
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x45d8
jmp 0x18902
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
callq 0x45d8
jmp 0x18921
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x45d8
jmp 0x1892f
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x45d8
jmp 0x18940
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x45d8
jmp 0x18952
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x45d8
leaq -0x80(%rbp), %rdi
jmp 0x18987
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x45d8
jmp 0x18965
movq %rax, %rbx
jmp 0x18949
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
jmp 0x18987
jmp 0x189a5
jmp 0x189a5
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x45d8
jmp 0x18980
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x45d8
jmp 0x189a8
jmp 0x189a5
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x4220
jmp 0x189a8
jmp 0x189a5
jmp 0x189a5
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x45d8
movq %rbx, %rdi
callq 0x4530