// File: 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
subq $0x3b0, %rsp            # imm = 0x3B0
movq %rdi, -0x390(%rbp)
movq %rdi, %rax
movq %rax, -0x388(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x55b0
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x333b2
movq -0x10(%rbp), %rdi
callq 0x4a890
movb %al, -0x391(%rbp)
jmp 0x33380
movb -0x391(%rbp), %al
movsbl %al, %esi
leaq -0x38(%rbp), %rdi
callq 0x5220
jmp 0x33394
jmp 0x33396
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x33367
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x3391d
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq -0x38(%rbp), %rdi
callq 0x33130
movl %eax, -0x398(%rbp)
jmp 0x333cd
movl -0x398(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0xd800, -0x50(%rbp)    # imm = 0xD800
jb 0x333e8
cmpl $0xdfff, -0x50(%rbp)    # imm = 0xDFFF
jbe 0x333f5
cmpl $0x10ffff, -0x50(%rbp)  # imm = 0x10FFFF
jbe 0x33518
leaq -0x1d8(%rbp), %rdi
callq 0x52a0
jmp 0x33403
leaq -0x1c8(%rbp), %rdi
leaq 0x366b7(%rip), %rsi     # 0x69ac8
callq 0x5360
movq %rax, -0x3a0(%rbp)
jmp 0x3341f
movq -0x3a0(%rbp), %rdi
movl -0x50(%rbp), %esi
callq 0x5580
jmp 0x33430
movb $0x1, -0x1f9(%rbp)
movl $0x30, %edi
callq 0x51b0
movq %rax, -0x3b0(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
movl %ecx, -0x3a8(%rbp)
movl 0xc(%rax), %eax
movl %eax, -0x3a4(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x5380
jmp 0x33473
movl -0x3a4(%rbp), %edx
movl -0x3a8(%rbp), %esi
movq -0x3b0(%rbp), %rdi
leaq -0x1f8(%rbp), %rcx
callq 0x340e0
jmp 0x33494
movq -0x3b0(%rbp), %rdi
movb $0x0, -0x1f9(%rbp)
leaq 0x34157(%rip), %rsi     # 0x67600
leaq 0xc80(%rip), %rdx       # 0x34130
callq 0x5690
jmp 0x3392f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x33507
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x334ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x5788
testb $0x1, -0x1f9(%rbp)
jne 0x334f9
jmp 0x33505
movq -0x3b0(%rbp), %rdi
callq 0x52c0
jmp 0x33507
leaq -0x1d8(%rbp), %rdi
callq 0x52d0
jmp 0x3391d
cmpl $0x7f, -0x50(%rbp)
ja 0x3353f
movq -0x390(%rbp), %rdi
movsbl -0x50(%rbp), %esi
callq 0x33280
jmp 0x33530
movl $0x1, -0x200(%rbp)
jmp 0x33904
cmpl $0x7ff, -0x50(%rbp)     # imm = 0x7FF
ja 0x335fe
movl -0x50(%rbp), %eax
shrl $0x6, %eax
addl $0xc0, %eax
movsbl %al, %esi
leaq -0x220(%rbp), %rdi
callq 0x33280
jmp 0x33568
movl -0x50(%rbp), %eax
andl $0x3f, %eax
orl $0x80, %eax
movsbl %al, %esi
leaq -0x240(%rbp), %rdi
callq 0x33280
jmp 0x33584
movq -0x390(%rbp), %rdi
leaq -0x220(%rbp), %rsi
leaq -0x240(%rbp), %rdx
callq 0x341a0
jmp 0x335a0
leaq -0x240(%rbp), %rdi
callq 0x5788
leaq -0x220(%rbp), %rdi
callq 0x5788
movl $0x1, -0x200(%rbp)
jmp 0x33904
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x335ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x5788
leaq -0x220(%rbp), %rdi
callq 0x5788
jmp 0x3391d
cmpl $0xffff, -0x50(%rbp)    # imm = 0xFFFF
ja 0x33744
movl -0x50(%rbp), %eax
shrl $0xc, %eax
addl $0xe0, %eax
movsbl %al, %esi
leaq -0x280(%rbp), %rdi
callq 0x33280
jmp 0x33627
movl -0x50(%rbp), %eax
shrl $0x6, %eax
andl $0x3f, %eax
orl $0x80, %eax
movsbl %al, %esi
leaq -0x2a0(%rbp), %rdi
callq 0x33280
jmp 0x33646
leaq -0x260(%rbp), %rdi
leaq -0x280(%rbp), %rsi
leaq -0x2a0(%rbp), %rdx
callq 0x341a0
jmp 0x33662
movl -0x50(%rbp), %eax
andl $0x3f, %eax
orl $0x80, %eax
movsbl %al, %esi
leaq -0x2c0(%rbp), %rdi
callq 0x33280
jmp 0x3367e
movq -0x390(%rbp), %rdi
leaq -0x260(%rbp), %rsi
leaq -0x2c0(%rbp), %rdx
callq 0x341a0
jmp 0x3369a
leaq -0x2c0(%rbp), %rdi
callq 0x5788
leaq -0x260(%rbp), %rdi
callq 0x5788
leaq -0x2a0(%rbp), %rdi
callq 0x5788
leaq -0x280(%rbp), %rdi
callq 0x5788
movl $0x1, -0x200(%rbp)
jmp 0x33904
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x33733
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x33727
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x3371b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x5788
leaq -0x260(%rbp), %rdi
callq 0x5788
leaq -0x2a0(%rbp), %rdi
callq 0x5788
leaq -0x280(%rbp), %rdi
callq 0x5788
jmp 0x3391d
movl -0x50(%rbp), %eax
shrl $0x12, %eax
addl $0xf0, %eax
movsbl %al, %esi
leaq -0x320(%rbp), %rdi
callq 0x33280
jmp 0x33760
movl -0x50(%rbp), %eax
shrl $0xc, %eax
andl $0x3f, %eax
orl $0x80, %eax
movsbl %al, %esi
leaq -0x340(%rbp), %rdi
callq 0x33280
jmp 0x3377f
leaq -0x300(%rbp), %rdi
leaq -0x320(%rbp), %rsi
leaq -0x340(%rbp), %rdx
callq 0x341a0
jmp 0x3379b
movl -0x50(%rbp), %eax
shrl $0x6, %eax
andl $0x3f, %eax
orl $0x80, %eax
movsbl %al, %esi
leaq -0x360(%rbp), %rdi
callq 0x33280
jmp 0x337ba
leaq -0x2e0(%rbp), %rdi
leaq -0x300(%rbp), %rsi
leaq -0x360(%rbp), %rdx
callq 0x341a0
jmp 0x337d6
movl -0x50(%rbp), %eax
andl $0x3f, %eax
orl $0x80, %eax
movsbl %al, %esi
leaq -0x380(%rbp), %rdi
callq 0x33280
jmp 0x337f2
movq -0x390(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0x380(%rbp), %rdx
callq 0x341a0
jmp 0x3380e
leaq -0x380(%rbp), %rdi
callq 0x5788
leaq -0x2e0(%rbp), %rdi
callq 0x5788
leaq -0x360(%rbp), %rdi
callq 0x5788
leaq -0x300(%rbp), %rdi
callq 0x5788
leaq -0x340(%rbp), %rdi
callq 0x5788
leaq -0x320(%rbp), %rdi
callq 0x5788
movl $0x1, -0x200(%rbp)
jmp 0x33904
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x338f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x338ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x338de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x338d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x338c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x5788
leaq -0x2e0(%rbp), %rdi
callq 0x5788
leaq -0x360(%rbp), %rdi
callq 0x5788
leaq -0x300(%rbp), %rdi
callq 0x5788
leaq -0x340(%rbp), %rdi
callq 0x5788
leaq -0x320(%rbp), %rdi
callq 0x5788
jmp 0x3391d
leaq -0x38(%rbp), %rdi
callq 0x5788
movq -0x388(%rbp), %rax
addq $0x3b0, %rsp            # imm = 0x3B0
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0x5788
movq -0x48(%rbp), %rdi
callq 0x56c0
nop