// File: /workspace/github_c_makefile_star2_O2/enzo1982[P]smooth/classes/gui/widgets/basic/multiedit.cpp
// Function: smooth::GUI::MultiEdit::MultiEdit(smooth::String const&, smooth::GUI::Point const&, smooth::GUI::Size const&, int)
S::GUI::MultiEdit::MultiEdit(const String &iText, const Point &iPos, const Size &iSize, Int maxSize) : Widget(iPos, iSize)
{
	type		= classID;

	scrollbar	= NIL;
	scrollbarPos	= 0;

	font.SetColor(Setup::ClientTextColor);

	if (GetWidth()	== 0) SetWidth(80);
	if (GetHeight() == 0) SetHeight(19);

	cursor = new Cursor(Point(3, Math::Ceil(Float(19 - font.GetUnscaledTextSizeY()) / 2) - 2),
			    GetSize() - Size(6, Math::Ceil(Float(19 - font.GetUnscaledTextSizeY()) / 2) - 1));
	cursor->onScroll.Connect(&MultiEdit::OnCursorScroll, this);
	cursor->SetMaxSize(maxSize);
	cursor->SetBackgroundColor(Setup::ClientColor);
	cursor->SetFlags(CF_MULTILINE);
	cursor->SetFont(font);
	cursor->SetText(iText);
	cursor->onInput.Connect(&onInput);

	Add(cursor);

	onInput.SetParentObject(this);

	onChangeSize.Connect(&MultiEdit::OnChangeSize, this);
	onLoseFocus.Connect(&cursor->onLoseFocus);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rsi
movq %rcx, %rdx
callq 0x58c80
movq 0xe9d87(%rip), %rax     # 0x161390
addq $0x10, %rax
movq %rax, (%rbx)
andq $0x0, 0x5d8(%rbx)
leaq 0x5d0(%rbx), %rax
movq %rax, (%rsp)
leaq 0xe11b6(%rip), %rax     # 0x1587e0
movq %rax, 0x5d0(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x5e0(%rbx)
movq 0xea41c(%rip), %rax     # 0x161a60
movzwl (%rax), %eax
movw %ax, 0x20(%rbx)
andq $0x0, 0x5c0(%rbx)
andl $0x0, 0x5c8(%rbx)
leaq 0x140(%rbx), %r12
movq 0xea788(%rip), %rsi     # 0x161df0
movq %r12, %rdi
callq 0x59940
cmpl $0x0, 0xb0(%rbx)
jne 0x77684
pushq $0x50
popq %rsi
movq %rbx, %rdi
callq 0x5a1f0
cmpl $0x0, 0xb4(%rbx)
jne 0x77698
pushq $0x13
popq %rsi
movq %rbx, %rdi
callq 0x58980
movl $0x768, %edi            # imm = 0x768
callq 0x56700
movq %rax, %r13
movq 0xea70c(%rip), %rsi     # 0x161db8
movq %r12, %rdi
callq 0x59d90
pushq $0x13
popq %r14
movl %r14d, %ecx
subl %eax, %ecx
cvtsi2sd %ecx, %xmm0
mulsd 0x6bcb7(%rip), %xmm0    # 0xe3380
callq 0x57e30
addl $-0x2, %eax
movl $0x3, 0x8(%rsp)
movl %eax, 0xc(%rsp)
movq 0xea6d4(%rip), %rsi     # 0x161db8
movq %r12, %rdi
callq 0x59d90
subl %eax, %r14d
cvtsi2sd %r14d, %xmm0
mulsd 0x6bc84(%rip), %xmm0    # 0xe3380
callq 0x57e30
movl 0xb0(%rbx), %ecx
movl 0xb4(%rbx), %edx
addl $-0x6, %ecx
subl %eax, %edx
incl %edx
shlq $0x20, %rdx
orq %rdx, %rcx
leaq 0x10(%rsp), %rdx
movq %rcx, (%rdx)
leaq 0x8(%rsp), %rsi
movq %r13, %rdi
callq 0x56d10
movq %r13, 0x5b8(%rbx)
addq $0x748, %r13            # imm = 0x748
movq 0xea543(%rip), %rsi     # 0x161c88
movq %r13, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77b58
movq 0x5b8(%rbx), %rdi
movl %ebp, %esi
callq 0x59380
movq 0x5b8(%rbx), %rdi
movq (%rdi), %rax
movq 0xe9eff(%rip), %rsi     # 0x161670
callq *0x138(%rax)
movq 0x5b8(%rbx), %rdi
movl $0x1, 0x30(%rdi)
movq (%rdi), %rax
movq %r12, %rsi
callq *0xe0(%rax)
movq 0x5b8(%rbx), %rdi
movq (%rdi), %rax
movq %r15, %rsi
callq *0xa0(%rax)
movl $0x708, %edi            # imm = 0x708
addq 0x5b8(%rbx), %rdi
movq (%rsp), %rsi
callq 0x75890
movq 0x5b8(%rbx), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x30(%rax)
movq %rbx, 0x5d8(%rbx)
leaq 0x298(%rbx), %rdi
movq 0xea792(%rip), %rsi     # 0x161f70
xorl %edx, %edx
movq %rbx, %rcx
callq 0x77bf4
movl $0x518, %esi            # imm = 0x518
leaq (%rbx,%rsi), %rdi
addq 0x5b8(%rbx), %rsi
callq 0x759ba
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7780e
movq %rax, %r15
movl $0x768, %esi            # imm = 0x768
movq %r13, %rdi
callq 0x564c0
jmp 0x77823
movq %rax, %r15
movq (%rsp), %rdi
callq 0x75a62
movq %rbx, %rdi
callq 0x58860
movq %r15, %rdi
callq 0x58260