// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/classes/gui/widgets/special/cursor.cpp
// Function: smooth::GUI::Cursor::OnSpecialKey(int)
S::Bool S::GUI::Cursor::OnSpecialKey(Int keyCode)
{
	/* Called when a special key such as
	 * return or an arrow key is hit.
	 */
	if (!focussed) return False;

#if defined __APPLE__
	Input::Keyboard::Key	 commandKey = Input::Keyboard::KeyCommand;
#elif defined __HAIKU__
	Input::Keyboard::Key	 commandKey = Input::Keyboard::KeyAlt;
#else
	Input::Keyboard::Key	 commandKey = Input::Keyboard::KeyControl;
#endif

	/* Make sure no other modifiers are pressed along with command key.
	 */
	if (Input::Keyboard::GetKeyState(commandKey) && !(Input::Keyboard::GetKeyState(Input::Keyboard::KeyCommand) ^
							  Input::Keyboard::GetKeyState(Input::Keyboard::KeyControl) ^
							  Input::Keyboard::GetKeyState(Input::Keyboard::KeyAlt))) return False;

	/* Evaluate key code.
	 */
	Int	 newPos	 = 0;
	Int	 linePos = 0;

	Int	 i	 = 0;

	switch (keyCode)
	{
		case Input::Keyboard::KeyLeft:
		case Input::Keyboard::KeyRight:
			if (!Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) MarkText(-1, -1);

			/* Calculate new cursor pos.
			 */
			if (Input::Keyboard::GetKeyState(commandKey))
			{
				Bool	 isLeft = ((keyCode == Input::Keyboard::KeyLeft  && !IsRightToLeft()) || (keyCode == Input::Keyboard::KeyRight && IsRightToLeft()));

				if (isLeft)
				{
					newPos = 0;

					for (Int i = promptPos - 2; i >= 0; i--)
					{
						if ( (						   text[i + 1] == '\n') ||
						    ((text[i    ] == ' ' || text[i    ] == '\t' || text[i    ] == '\n') &&
						     (text[i + 1] != ' ' && text[i + 1] != '\t' && text[i + 1] != '\n'))) { newPos = i + 1; break; }
					}
				}
				else
				{
					newPos = text.Length();

					for (Int i = promptPos; i < text.Length(); i++)
					{
						if ( (						   text[i + 1] == '\n') ||
						    ((text[i    ] == ' ' || text[i    ] == '\t' || text[i    ] == '\n') &&
						     (text[i + 1] != ' ' && text[i + 1] != '\t' && text[i + 1] != '\n'))) { newPos = i + 1; break; }
					}
				}
			}
			else
			{
				Bool	 isLeft = ((keyCode == Input::Keyboard::KeyLeft  && !IsRightToLeft()) || (keyCode == Input::Keyboard::KeyRight && IsRightToLeft()));

				if (isLeft) { if (promptPos == 0)	      break; newPos = promptPos - 1; }
				else	    { if (promptPos >= text.Length()) break; newPos = promptPos + 1; }
			}

			/* Set mark region and cursor.
			 */
			if (Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift))
			{
				if (markStart == -1) markStart = promptPos;

				MarkText(markStart, newPos);
			}

			SetCursorPos(newPos);

			break;
		case Input::Keyboard::KeyHome:
		case Input::Keyboard::KeyEnd:
			if (!Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) MarkText(-1, -1);

			/* Calculate new cursor pos.
			 */
			if (Input::Keyboard::GetKeyState(commandKey))
			{
				if	(keyCode == Input::Keyboard::KeyHome)	{ if (promptPos == 0)		  break; newPos = 0;		 }
				else if (keyCode == Input::Keyboard::KeyEnd)	{ if (promptPos >= text.Length()) break; newPos = text.Length(); }
			}
			else
			{
				if (keyCode == Input::Keyboard::KeyHome)
				{
					newPos = 0;

					for (Int i = promptPos - 1; i >= 0; i--)
					{
						if (text[i] == '\n') { newPos = i + 1; break; }
					}
				}
				else
				{
					newPos = text.Length();

					for (Int i = promptPos; i < text.Length(); i++)
					{
						if (text[i] == '\n') { newPos = i; break; }
					}
				}
			}

			/* Set mark region and cursor.
			 */
			if (Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift))
			{
				if (markStart == -1) markStart = promptPos;

				MarkText(markStart, newPos);
			}

			SetCursorPos(newPos);

			break;
		case Input::Keyboard::KeyUp:
		case Input::Keyboard::KeyDown:
			if (!Binary::IsFlagSet(GetFlags(), CF_MULTILINE)) break;

			if (!Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) MarkText(-1, -1);

			/* Calculate new cursor pos.
			 */
			linePos	= promptPos;
			newPos	= promptPos;

			for (i = promptPos - 1; i >= 0; i--)
			{
				if (text[i] == '\n') { linePos -= (i + 1); break; }
			}

			if (keyCode == Input::Keyboard::KeyUp)
			{
				if (i == 0) newPos = 0;

				for (Int j = i - 1; j >= 0; j--)
				{
					if (text[j] == '\n' || j == 0) { newPos = Math::Min(i, j + linePos + (j == 0 ? 0 : 1)); break; }
				}
			}
			else
			{
				for (Int j = promptPos; j < text.Length(); j++)
				{
					if (text[j] == '\n')
					{
						for (Int k = j + 1; k <= j + 1 + linePos; k++)
						{
							newPos = k;

							if (text[k] == '\n' || text[k] == 0) break;
						}

						break;
					}
				}
			}

			/* Set mark region and cursor.
			 */
			if (Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift))
			{
				if (markStart == -1) markStart = promptPos;

				MarkText(markStart, newPos);
			}

			SetCursorPos(newPos);

			break;
		case Input::Keyboard::KeyReturn:
			if (!IsActive()) break;

			if (Binary::IsFlagSet(GetFlags(), CF_MULTILINE))
			{
				Bool	 selected = (markStart != markEnd && markStart >= 0 && markEnd >= 0);

				flags |= CF_NOINPUT;

				DeleteSelectedText();

				flags ^= CF_NOINPUT;

				if (selected) RemoveHistoryEntry();

				String	 insertText;

				insertText[0] = '\n';

				InsertText(insertText);

				onInput.Emit(text);
			}
			else
			{
				focussed = False;

				onLoseFocus.Emit();

				onEnter.Emit(text);
			}

			break;
		case Input::Keyboard::KeyEscape:
			if (!IsActive()) break;

			focussed = False;

			onLoseFocus.Emit();

			return True;
		case Input::Keyboard::KeyInsert:
#ifndef __APPLE__
			if (		   Input::Keyboard::GetKeyState(commandKey) && !Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) CopyToClipboard();
			if (IsActive() && !Input::Keyboard::GetKeyState(commandKey) &&  Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) InsertFromClipboard();
#endif
			break;
		case Input::Keyboard::KeyBack:
			if (!IsActive() || Input::Keyboard::GetKeyState(commandKey) || Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) break;

			if (markStart != markEnd) { DeleteSelectedText(); break; }

			if (promptPos == 0) break;

			markStart = promptPos - 1;
			markEnd	  = promptPos;

			DeleteSelectedText();

			break;
		case Input::Keyboard::KeyDelete:
			if (!IsActive() || Input::Keyboard::GetKeyState(commandKey)) break;
#ifdef __APPLE__
			if (Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) break;
#endif
			if (markStart != markEnd)
			{
				if (Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) CopyToClipboard();

				DeleteSelectedText();

				break;
			}

			if (Input::Keyboard::GetKeyState(Input::Keyboard::KeyShift)) break;

			if (promptPos == text.Length()) break;

			markStart = promptPos;
			markEnd	  = promptPos + 1;

			DeleteSelectedText();

			break;
		case Input::Keyboard::KeyA:
			if (		  Input::Keyboard::GetKeyState(commandKey))   MarkAll();

			break;
		case Input::Keyboard::KeyC:
			if (		  Input::Keyboard::GetKeyState(commandKey))   CopyToClipboard();

			break;
		case Input::Keyboard::KeyX:
			if (IsActive() && Input::Keyboard::GetKeyState(commandKey)) { CopyToClipboard(); DeleteSelectedText(); }

			break;
		case Input::Keyboard::KeyV:
			if (IsActive() && Input::Keyboard::GetKeyState(commandKey))   InsertFromClipboard();

			break;
		case Input::Keyboard::KeyZ:

			if (IsActive() && Input::Keyboard::GetKeyState(commandKey))   Undo();

			break;
		case Input::Keyboard::KeyY:
			if (IsActive() && Input::Keyboard::GetKeyState(commandKey))   Redo();

			break;
	}

	return False;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
cmpb $0x1, 0xcd(%rdi)
jne 0x93a08
movl %esi, %r14d
movq %rdi, %r13
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x93092
movl $0x5b, %edi
callq 0x57510
movl %eax, %ebp
movl $0x11, %edi
callq 0x57510
movl %eax, %r15d
xorb %bpl, %r15b
movl $0x12, %edi
callq 0x57510
cmpb %al, %r15b
je 0x93a08
xorl %ebp, %ebp
cmpl $0x40, %r14d
jg 0x93109
leal -0x1b(%r14), %eax
cmpl $0x13, %eax
ja 0x93145
leaq 0x63ce6(%rip), %rcx     # 0xf6d94
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x10, %edi
callq 0x57510
testb %al, %al
jne 0x930d7
movq %r13, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x56ae0
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x9347c
movl 0x5c0(%r13), %ebx
cmpl $0x24, %r14d
jne 0x9371e
xorl %ebp, %ebp
testl %ebx, %ebx
jne 0x939cc
jmp 0x93a0a
leal -0x56(%r14), %eax
cmpl $0x4, %eax
ja 0x931cb
leaq 0x63cc7(%rip), %rcx     # 0xf6de4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl $0x11, %edi
jmp 0x93504
cmpl $0x8, %r14d
je 0x935d8
cmpl $0xd, %r14d
jne 0x93a0a
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl 0x30(%r13), %edi
movl $0x1, %esi
callq 0x583f0
testb %al, %al
je 0x938ca
movl 0x5c8(%r13), %eax
movl 0x5cc(%r13), %ebx
cmpl %ebx, %eax
sete %cl
testl %eax, %eax
sets %al
orb %cl, %al
jne 0x93966
orb $0x40, 0x33(%r13)
movq %r13, %rdi
callq 0x591d8
xorb $0x40, 0x33(%r13)
testl %ebx, %ebx
js 0x93978
movq %r13, %rdi
callq 0x56870
jmp 0x93978
cmpl $0x41, %r14d
je 0x9364a
cmpl $0x43, %r14d
jne 0x93a0a
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x93a08
movq %r13, %rdi
callq 0x591d0
jmp 0x93a08
movl 0x30(%r13), %edi
movl $0x1, %esi
callq 0x583f0
testb %al, %al
je 0x93a08
movl $0x10, %edi
callq 0x57510
testb %al, %al
jne 0x93234
movq %r13, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x56ae0
movl 0x5c0(%r13), %edx
movq %r13, (%rsp)
leaq 0xf0(%r13), %rax
movq %rax, 0x8(%rsp)
leal -0x1(%rdx), %r15d
xorl %r13d, %r13d
movl %edx, %ecx
movl %ecx, %ebx
movl %r13d, %ebp
leal (%rdx,%rbp), %r12d
testl %r12d, %r12d
jle 0x93669
leal (%r15,%rbp), %esi
movq 0x8(%rsp), %rdi
movq %rdx, %r13
callq 0x58990
movq %r13, %rdx
leal -0x1(%rbp), %r13d
leal -0x1(%rbx), %ecx
cmpl $0xa, (%rax)
jne 0x93254
notl %r13d
jmp 0x9366c
movl $0x10, %edi
callq 0x57510
testb %al, %al
jne 0x932ae
movq %r13, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x56ae0
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x93433
cmpl $0x27, %r14d
je 0x937cf
cmpl $0x25, %r14d
jne 0x932e5
movq (%r13), %rax
movq %r13, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x937e4
leaq 0xf0(%r13), %r14
movq %r14, %rdi
callq 0x57180
movl %eax, %r15d
movl 0x5c0(%r13), %ebp
movq %r14, %rdi
callq 0x57180
cmpl %eax, %ebp
jge 0x93782
movl %ebp, %r12d
leal 0x1(%r12), %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x58990
cmpl $0xa, (%rax)
je 0x939cc
movq %r14, %rdi
movl %r12d, %esi
callq 0x58990
cmpl $0x20, (%rax)
je 0x93359
movq %r14, %rdi
movl %r12d, %esi
callq 0x58990
cmpl $0x9, (%rax)
je 0x93359
movq %r14, %rdi
movl %r12d, %esi
callq 0x58990
cmpl $0xa, (%rax)
jne 0x932fe
movq %r14, %rdi
movl %ebp, %esi
callq 0x58990
cmpl $0x20, (%rax)
je 0x932fe
movq %r14, %rdi
movl %ebp, %esi
callq 0x58990
cmpl $0x9, (%rax)
je 0x932fe
movq %r14, %rdi
movl %ebp, %esi
callq 0x58990
cmpl $0xa, (%rax)
je 0x932fe
jmp 0x939cc
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x93a08
movq %r13, %rdi
callq 0x59120
jmp 0x93a08
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x93a08
movq %r13, %rdi
callq 0x591d0
movq %r13, %rdi
callq 0x591d8
jmp 0x93a08
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x93a08
movq %r13, %rdi
callq 0x57910
jmp 0x93a08
cmpl $0x27, %r14d
je 0x93899
cmpl $0x25, %r14d
jne 0x93458
movq (%r13), %rax
movq %r13, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x938ae
movl 0x5c0(%r13), %ebx
leaq 0xf0(%r13), %rdi
callq 0x57180
cmpl %eax, %ebx
jge 0x93a08
movl 0x5c0(%r13), %ebp
jmp 0x934ad
cmpl $0x24, %r14d
jne 0x93744
movl 0x5c0(%r13), %ebp
leaq 0xf0(%r13), %r14
testl %ebp, %ebp
jle 0x938c3
decl %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x58990
cmpl $0xa, (%rax)
jne 0x93494
incl %ebp
jmp 0x939cc
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x934d8
movl $0x10, %edi
callq 0x57510
testb %al, %al
jne 0x934d8
movq %r13, %rdi
callq 0x591d0
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl $0x11, %edi
callq 0x57510
testb %al, %al
jne 0x93a08
movl $0x10, %edi
callq 0x57510
testb %al, %al
je 0x93a08
movq %r13, %rdi
callq 0x57a80
jmp 0x93a08
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl $0x11, %edi
callq 0x57510
testb %al, %al
jne 0x93a08
movl 0x5c8(%r13), %ebx
movl 0x5cc(%r13), %ebp
movl $0x10, %edi
callq 0x57510
cmpl %ebp, %ebx
jne 0x93959
testb %al, %al
jne 0x93a08
movl 0x5c0(%r13), %ebx
leaq 0xf0(%r13), %rdi
callq 0x57180
cmpl %eax, %ebx
je 0x93a08
movl 0x5c0(%r13), %eax
movl %eax, 0x5c8(%r13)
incl %eax
movl %eax, 0x5cc(%r13)
jmp 0x933f2
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movb $0x0, 0xcd(%r13)
addq $0x518, %r13            # imm = 0x518
movq %r13, %rdi
callq 0x701aa
movb $0x1, %bpl
jmp 0x93a0a
movq (%r13), %rax
movq %r13, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x93a08
movl $0x11, %edi
callq 0x57510
testb %al, %al
jne 0x93a08
movl $0x10, %edi
callq 0x57510
testb %al, %al
jne 0x93a08
movl 0x5c8(%r13), %eax
cmpl 0x5cc(%r13), %eax
jne 0x933f2
movl 0x5c0(%r13), %eax
testl %eax, %eax
je 0x93a08
leal -0x1(%rax), %ecx
movl %ecx, 0x5c8(%r13)
movl %eax, 0x5cc(%r13)
jmp 0x933f2
movl $0x11, %edi
callq 0x57510
testb %al, %al
je 0x93a08
movq %r13, %rdi
callq 0x591b8
jmp 0x93a08
movl %edx, %r13d
cmpl $0x26, %r14d
jne 0x936e1
leal (%rdx,%rbp), %ebx
decl %ebx
testl %ebx, %ebx
movl %edx, %r14d
cmovel %ebx, %r14d
cmpl $0x2, %r12d
movq (%rsp), %r15
jl 0x93791
leal (%rdx,%rbp), %r13d
addl $-0x2, %r13d
movl %r12d, %eax
sarl $0x1f, %eax
andl %r12d, %eax
addl %edx, %eax
movl $0x1, %r14d
subl %eax, %r14d
movq 0x8(%rsp), %r15
movl %r13d, %ebp
movq %r15, %rdi
movl %r13d, %esi
callq 0x58990
incl %r14d
subl $0x1, %r13d
jb 0x936cb
cmpl $0xa, (%rax)
jne 0x936af
cmpl $0x1, %ebp
adcl $-0x1, %r14d
negl %r14d
cmpl %r14d, %ebx
cmovll %ebx, %r14d
jmp 0x9378d
movq %rdx, %r15
movq (%rsp), %rax
movl 0x5c0(%rax), %r12d
movq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x57180
cmpl %eax, %r12d
jge 0x9378a
movq %r14, %rdi
movl %r12d, %esi
callq 0x58990
cmpl $0xa, (%rax)
je 0x938f9
incl %r12d
jmp 0x936f4
leaq 0xf0(%r13), %r14
movq %r14, %rdi
callq 0x57180
cmpl %eax, %ebx
jge 0x93a08
movq %r14, %rdi
callq 0x57180
movl %eax, %ebp
jmp 0x939cc
leaq 0xf0(%r13), %r14
movq %r14, %rdi
callq 0x57180
movl %eax, %ebp
movl 0x5c0(%r13), %r15d
movq %r14, %rdi
callq 0x57180
cmpl %eax, %r15d
jge 0x939cc
movq %r14, %rdi
movl %r15d, %esi
callq 0x58990
cmpl $0xa, (%rax)
je 0x93782
incl %r15d
jmp 0x9375c
movl %r15d, %ebp
jmp 0x939cc
movl %r15d, %r14d
movq (%rsp), %r15
movl $0x10, %edi
callq 0x57510
testb %al, %al
je 0x937c4
movl 0x5c8(%r15), %esi
cmpl $-0x1, %esi
jne 0x937b9
movl 0x5c0(%r15), %esi
movl %esi, 0x5c8(%r15)
movq %r15, %rdi
movl %r14d, %edx
callq 0x56ae0
movq %r15, %rdi
movl %r14d, %esi
jmp 0x93a03
movq (%r13), %rax
movq %r13, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x932e5
movl 0x5c0(%r13), %r15d
xorl %ebp, %ebp
cmpl $0x2, %r15d
jl 0x939cc
movq %r13, %rbx
leaq 0xf0(%r13), %r14
leal -0x2(%r15), %r13d
decl %r15d
movl %r15d, %r12d
movq %r14, %rdi
movl %r15d, %esi
callq 0x58990
cmpl $0xa, (%rax)
je 0x939c6
leal -0x1(%r12), %r15d
movq %r14, %rdi
movl %r15d, %esi
callq 0x58990
cmpl $0x20, (%rax)
je 0x93854
movq %r14, %rdi
movl %r15d, %esi
callq 0x58990
cmpl $0x9, (%rax)
je 0x93854
movq %r14, %rdi
movl %r15d, %esi
callq 0x58990
cmpl $0xa, (%rax)
jne 0x93888
movq %r14, %rdi
movl %r12d, %esi
callq 0x58990
cmpl $0x20, (%rax)
je 0x93888
movq %r14, %rdi
movl %r12d, %esi
callq 0x58990
cmpl $0x9, (%rax)
je 0x93888
movq %r14, %rdi
movl %r12d, %esi
callq 0x58990
cmpl $0xa, (%rax)
jne 0x93a1b
decl %r13d
testl %r15d, %r15d
jg 0x93808
jmp 0x939c9
movq (%r13), %rax
movq %r13, %rdi
callq *0x160(%rax)
testb %al, %al
je 0x93458
movl 0x5c0(%r13), %ebp
subl $0x1, %ebp
jae 0x939cc
jmp 0x93a08
xorl %ebp, %ebp
jmp 0x939cc
movb $0x0, 0xcd(%r13)
leaq 0x518(%r13), %rdi
callq 0x701aa
leaq 0x728(%r13), %rdi
addq $0xf0, %r13
movq %r13, %rsi
callq 0x76794
jmp 0x93a08
movl %r15d, %r14d
testl %r13d, %r13d
movq (%rsp), %r15
js 0x93791
movl %ebx, %eax
sarl $0x1f, %eax
andl %ebx, %eax
subl %ebp, %eax
leal (%r12,%rax), %ebx
incl %ebx
incl %r12d
movl %r12d, %r14d
movq 0x8(%rsp), %r12
movq %r12, %rdi
movl %r14d, %esi
callq 0x58990
cmpl $0xa, (%rax)
je 0x93791
movq %r12, %rdi
movl %r14d, %esi
callq 0x58990
cmpl $0x0, (%rax)
je 0x93791
leal 0x1(%r14), %r12d
cmpl %ebx, %r14d
jl 0x9391b
jmp 0x93791
testb %al, %al
jne 0x933ea
jmp 0x933f2
orb $0x40, 0x33(%r13)
movq %r13, %rdi
callq 0x591d8
xorb $0x40, 0x33(%r13)
leaq 0x10(%rsp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x58e20
movq %r14, %rdi
xorl %esi, %esi
callq 0x58990
movl $0xa, (%rax)
leaq 0x10(%rsp), %rsi
movq %r13, %rdi
callq 0x56070
leaq 0x708(%r13), %rdi
addq $0xf0, %r13
movq %r13, %rsi
callq 0x76794
leaq 0x10(%rsp), %rdi
callq 0x59200
jmp 0x93a08
movl %r12d, %ebp
movq %rbx, %r13
movl $0x10, %edi
callq 0x57510
testb %al, %al
je 0x939fe
movl 0x5c8(%r13), %esi
cmpl $-0x1, %esi
jne 0x939f4
movl 0x5c0(%r13), %esi
movl %esi, 0x5c8(%r13)
movq %r13, %rdi
movl %ebp, %edx
callq 0x56ae0
movq %r13, %rdi
movl %ebp, %esi
callq 0x58a30
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
incl %r13d
movl %r13d, %ebp
jmp 0x939c9
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x59200
movq %rbx, %rdi
callq 0x57090