// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/special/shortcut.cpp
// Function: smooth::GUI::Shortcut::ToString() const
S::String S::GUI::Shortcut::ToString() const
{
	String	 keyString;

	if	(key >= '0'  && key <= '9')	keyString[0] = key;
	else if (key >= 'A'  && key <= 'Z')	keyString[0] = key;

	if	(key >= Input::Keyboard::KeyF1 &&
		 key <= Input::Keyboard::KeyF24)    keyString = String("F").Append(String::FromInt(1 + (key - Input::Keyboard::KeyF1)));
	else if (key == Input::Keyboard::KeyBack)   keyString = I18n::Translator::defaultTranslator->TranslateString("Backspace");
	else if (key == Input::Keyboard::KeyTab)    keyString = I18n::Translator::defaultTranslator->TranslateString("Tab");
	else if (key == Input::Keyboard::KeyReturn) keyString = I18n::Translator::defaultTranslator->TranslateString("Return");
	else if (key == Input::Keyboard::KeyEscape) keyString = I18n::Translator::defaultTranslator->TranslateString("Esc");
	else if (key == Input::Keyboard::KeySpace)  keyString = I18n::Translator::defaultTranslator->TranslateString("Space");
	else if (key == Input::Keyboard::KeyPrior)  keyString = I18n::Translator::defaultTranslator->TranslateString("PgUp");
	else if (key == Input::Keyboard::KeyNext)   keyString = I18n::Translator::defaultTranslator->TranslateString("PgDown");
	else if (key == Input::Keyboard::KeyEnd)    keyString = I18n::Translator::defaultTranslator->TranslateString("End");
	else if (key == Input::Keyboard::KeyHome)   keyString = I18n::Translator::defaultTranslator->TranslateString("Home");
	else if (key == Input::Keyboard::KeyLeft)   keyString = I18n::Translator::defaultTranslator->TranslateString("Left");
	else if (key == Input::Keyboard::KeyUp)	    keyString = I18n::Translator::defaultTranslator->TranslateString("Up");
	else if (key == Input::Keyboard::KeyRight)  keyString = I18n::Translator::defaultTranslator->TranslateString("Right");
	else if (key == Input::Keyboard::KeyDown)   keyString = I18n::Translator::defaultTranslator->TranslateString("Down");
	else if (key == Input::Keyboard::KeyInsert) keyString = I18n::Translator::defaultTranslator->TranslateString("Ins");
	else if (key == Input::Keyboard::KeyDelete) keyString = I18n::Translator::defaultTranslator->TranslateString("Del");

	return	(Binary::IsFlagSet(flags, SC_CTRL)  ? I18n::Translator::defaultTranslator->TranslateString("Ctrl").Append("+")	: String())
         .Append(Binary::IsFlagSet(flags, SC_CMD)   ? I18n::Translator::defaultTranslator->TranslateString("Cmd").Append("+")	: String())
         .Append(Binary::IsFlagSet(flags, SC_ALT)   ? I18n::Translator::defaultTranslator->TranslateString("Alt").Append("+")	: String())
	 .Append(Binary::IsFlagSet(flags, SC_SHIFT) ? I18n::Translator::defaultTranslator->TranslateString("Shift").Append("+")	: String())
	 .Append(keyString);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %rsi, %r14
movq %rdi, 0x38(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x5a180
movl 0x5b8(%r14), %ebx
leal -0x30(%rbx), %eax
cmpl $0xa, %eax
setb %al
leal -0x41(%rbx), %ecx
cmpl $0x1a, %ecx
setb %cl
orb %al, %cl
je 0x924d4
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x59cc0
movl %ebx, (%rax)
movl 0x5b8(%r14), %eax
leal -0x70(%rax), %ecx
cmpl $0x17, %ecx
ja 0x925a9
leaq 0x86440(%rip), %rsi     # 0x11892e
leaq 0x8(%rsp), %rdi
callq 0x58c40
movslq 0x5b8(%r14), %rsi
addq $-0x6f, %rsi
leaq 0x40(%rsp), %rdi
callq 0x57e80
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x573e0
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
leaq 0x40(%rsp), %rdi
callq 0x5a588
leaq 0x8(%rsp), %rdi
callq 0x5a588
movl 0x30(%r14), %edi
pushq $0x2
popq %rsi
callq 0x596b0
movl %eax, %ebp
testb %al, %al
je 0x925ff
movq 0xcee8e(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x549fe(%rip), %rsi     # 0xe6f62
leaq 0x40(%rsp), %rdi
callq 0x58c40
leaq 0x40(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
movq %rax, %r15
leaq 0x549e2(%rip), %rsi     # 0xe6f67
leaq 0x130(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rdi
leaq 0x130(%rsp), %rdx
movq %r15, %rsi
callq 0x59750
jmp 0x9260b
leal -0x1b(%rax), %ecx
cmpl $0x13, %ecx
ja 0x92893
leaq 0x548f8(%rip), %rax     # 0xe6eb4
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0xcee1c(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x5495a(%rip), %rsi     # 0xe6f30
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0x5a180
movl 0x30(%r14), %edi
pushq $0x4
popq %rsi
callq 0x596b0
movl %eax, %r15d
testb %al, %al
je 0x9267d
movq 0xcedc3(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x5493a(%rip), %rsi     # 0xe6f69
leaq 0x118(%rsp), %rdi
callq 0x58c40
leaq 0x118(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
movq %rax, %r12
leaq 0x54911(%rip), %rsi     # 0xe6f67
leaq 0x100(%rsp), %rdi
callq 0x58c40
leaq 0x88(%rsp), %rdi
leaq 0x100(%rsp), %rdx
movq %r12, %rsi
callq 0x59750
jmp 0x9268c
leaq 0x88(%rsp), %rdi
xorl %esi, %esi
callq 0x5a180
leaq 0x8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x573e0
movq %rax, %r13
movl 0x30(%r14), %edi
pushq $0x1
popq %rsi
callq 0x596b0
movl %eax, %r12d
testb %al, %al
je 0x92710
movq 0xced2d(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x548a8(%rip), %rsi     # 0xe6f6d
leaq 0xe8(%rsp), %rdi
callq 0x58c40
leaq 0xe8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
movq %rax, %rbx
leaq 0x5487b(%rip), %rsi     # 0xe6f67
leaq 0xd0(%rsp), %rdi
callq 0x58c40
leaq 0x70(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
movq %rbx, %rsi
callq 0x59750
jmp 0x9271c
leaq 0x70(%rsp), %rdi
xorl %esi, %esi
callq 0x5a180
leaq 0x70(%rsp), %rsi
movq %r13, %rdi
callq 0x573e0
movq %rax, %r13
movl 0x30(%r14), %edi
pushq $0x8
popq %rsi
callq 0x596b0
movl %eax, %r14d
testb %al, %al
je 0x9279b
movq 0xceca2(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54821(%rip), %rsi     # 0xe6f71
leaq 0xb8(%rsp), %rdi
callq 0x58c40
leaq 0xb8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
movq %rax, %rbx
leaq 0x547f0(%rip), %rsi     # 0xe6f67
leaq 0xa0(%rsp), %rdi
callq 0x58c40
leaq 0x58(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
movq %rbx, %rsi
callq 0x59750
jmp 0x927a7
leaq 0x58(%rsp), %rdi
xorl %esi, %esi
callq 0x5a180
leaq 0x58(%rsp), %rsi
movq %r13, %rdi
callq 0x573e0
leaq 0x20(%rsp), %rsi
movq %rax, %rdi
callq 0x573e0
movq 0x38(%rsp), %rdi
movq %rax, %rsi
callq 0x58280
leaq 0x58(%rsp), %rdi
callq 0x5a588
testb %r14b, %r14b
je 0x927f7
leaq 0xa0(%rsp), %rdi
callq 0x5a588
leaq 0xb8(%rsp), %rdi
callq 0x5a588
leaq 0x70(%rsp), %rdi
callq 0x5a588
testb %r12b, %r12b
je 0x92820
leaq 0xd0(%rsp), %rdi
callq 0x5a588
leaq 0xe8(%rsp), %rdi
callq 0x5a588
leaq 0x88(%rsp), %rdi
callq 0x5a588
testb %r15b, %r15b
je 0x9284c
leaq 0x100(%rsp), %rdi
callq 0x5a588
leaq 0x118(%rsp), %rdi
callq 0x5a588
leaq 0x8(%rsp), %rdi
callq 0x5a588
testb %bpl, %bpl
je 0x92872
leaq 0x130(%rsp), %rdi
callq 0x5a588
leaq 0x40(%rsp), %rdi
callq 0x5a588
leaq 0x20(%rsp), %rdi
callq 0x5a588
movq 0x38(%rsp), %rax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0xd, %eax
je 0x92ba0
cmpl $0x9, %eax
je 0x92b66
cmpl $0x8, %eax
jne 0x9253d
movq 0xceb33(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x5465c(%rip), %rsi     # 0xe6f1b
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xceaf9(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54665(%rip), %rsi     # 0xe6f5e
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xceabf(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54617(%rip), %rsi     # 0xe6f4a
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xcea85(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x545d2(%rip), %rsi     # 0xe6f3f
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xcea4b(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54595(%rip), %rsi     # 0xe6f3c
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xcea11(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54553(%rip), %rsi     # 0xe6f34
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce9d7(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x5452b(%rip), %rsi     # 0xe6f46
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce99d(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x544ec(%rip), %rsi     # 0xe6f41
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce963(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x544cb(%rip), %rsi     # 0xe6f5a
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce929(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54486(%rip), %rsi     # 0xe6f4f
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce8ef(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54437(%rip), %rsi     # 0xe6f3a
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce8b5(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54417(%rip), %rsi     # 0xe6f54
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce87b(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x543ae(%rip), %rsi     # 0xe6f25
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
movq 0xce841(%rip), %rax     # 0x1613e8
movq (%rax), %rbx
leaq 0x54378(%rip), %rsi     # 0xe6f29
leaq 0x8(%rsp), %rdi
callq 0x58c40
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x59510
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x56630
jmp 0x92533
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92caf
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c73
jmp 0x92c45
movq %rax, %rbx
jmp 0x92ced
jmp 0x92c83
jmp 0x92c51
movq %rax, %rbx
jmp 0x92d16
jmp 0x92c8f
jmp 0x92c5d
movq %rax, %rbx
jmp 0x92d42
jmp 0x92c9f
jmp 0x92c69
movq %rax, %rbx
jmp 0x92d6b
jmp 0x92caf
movq %rax, %rbx
jmp 0x92cc4
jmp 0x92caf
jmp 0x92caf
movq %rax, %rbx
jmp 0x92cdb
jmp 0x92c83
movq %rax, %rbx
jmp 0x92cfa
movq %rax, %rbx
jmp 0x92d04
jmp 0x92c8f
movq %rax, %rbx
jmp 0x92d23
movq %rax, %rbx
jmp 0x92d30
movq %rax, %rbx
jmp 0x92d4f
movq %rax, %rbx
jmp 0x92d59
movq %rax, %rbx
jmp 0x92d75
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x5a588
leaq 0x8(%rsp), %rdi
jmp 0x92d70
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x5a588
testb %r14b, %r14b
je 0x92cfa
leaq 0xa0(%rsp), %rdi
callq 0x5a588
leaq 0xb8(%rsp), %rdi
callq 0x5a588
leaq 0x70(%rsp), %rdi
callq 0x5a588
testb %r12b, %r12b
je 0x92d23
leaq 0xd0(%rsp), %rdi
callq 0x5a588
leaq 0xe8(%rsp), %rdi
callq 0x5a588
leaq 0x88(%rsp), %rdi
callq 0x5a588
testb %r15b, %r15b
je 0x92d4f
leaq 0x100(%rsp), %rdi
callq 0x5a588
leaq 0x118(%rsp), %rdi
callq 0x5a588
leaq 0x8(%rsp), %rdi
callq 0x5a588
testb %bpl, %bpl
je 0x92d75
leaq 0x130(%rsp), %rdi
callq 0x5a588
leaq 0x40(%rsp), %rdi
callq 0x5a588
leaq 0x20(%rsp), %rdi
callq 0x5a588
movq %rbx, %rdi
callq 0x58260
nop