// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/list/listbox.cpp
// Function: smooth::GUI::ListBox::Paint(int)
S::Int S::GUI::ListBox::Paint(Int message)
{
	if (!IsRegistered()) return Error();
	if (!IsVisible())    return Success();

	Surface		*surface	   = GetDrawSurface();
	Rect		 frame		   = Rect(GetRealPosition(), GetRealSize());
	Rect		 entryRect	   = frame;

	String		 visibleEntries;
	Int		 visibleEntryCount = 0;

	ListEntry	*lastVisibleEntry  = NIL;

	if (GetNOfTabs() > 0 && !(flags & LF_HIDEHEADER)) header->Show();
	else						  header->Hide();

	Int		 entriesHeight	   = 0;
	Int		 headerHeight	   = (header->IsVisible()    ? header->GetHeight()   : 0);
	Int		 scrollbarWidth	   = (scrollbar->IsVisible() ? scrollbar->GetWidth() : 0);

	switch (message)
	{
		case SP_PAINT:
			surface->StartPaint(frame);

			/* Update scrollbar if necessary.
			 */
			entriesHeight = GetEntriesHeight();

			if (entriesHeight > GetHeight() - headerHeight - 4 && !(flags & LF_HIDESCROLLBAR))
			{
				scrollbar->SetMetrics(Point(18, 1 + headerHeight), Size(scrollbar->GetWidth(), GetHeight() - 2 - headerHeight));
				scrollbar->SetRange(0, entriesHeight - (GetHeight() - 4 - headerHeight));

				scrollbar->SetPageSize(GetHeight() - 4 - headerHeight);

				scrollbar->Show();

				scrollbarWidth = scrollbar->GetWidth();
			}
			else
			{
				scrollbar->Hide();

				scrollbarPos   = 0;
				scrollbarWidth = 0;
			}

			/* Set visibility of list entries first.
			 */
			entryRect.top	 = -scrollbarPos;
			entryRect.bottom = -scrollbarPos;

			for (Int i = 0; i < Length(); i++)
			{
				ListEntry	*entry = GetNthEntry(i);

				entry->SetVisibleDirect(False);

				if (entryRect.bottom + entry->GetHeight() >= 0 && entryRect.top <= GetHeight() - headerHeight - 4)
				{
					entry->SetMetrics(Point(2, entryRect.top + 2 + headerHeight), Size(GetWidth() - 4 - scrollbarWidth, entry->GetHeight()));
					entry->SetVisibleDirect(True);

					visibleEntries[visibleEntryCount++] = entry->GetHandle() % 32767 + 1;
				}

				entryRect.top	 += entry->GetHeight();
				entryRect.bottom += entry->GetHeight();
			}

			visibleEntriesString = visibleEntries;

			/* Now paint the listbox and all entries.
			 */
			if (IsActive())	surface->Box(frame + Point(0, headerHeight) - Size(scrollbarWidth, headerHeight), Setup::ClientColor, Rect::Filled);
			else		surface->Box(frame + Point(0, headerHeight) - Size(scrollbarWidth, headerHeight), Setup::BackgroundColor, Rect::Filled);

			surface->Frame(frame, FRAME_DOWN);

			Widget::Paint(message);

			surface->EndPaint();

			break;
		case SP_UPDATE:
			/* Update scrollbar if necessary.
			 */
			entriesHeight = GetEntriesHeight();

			if ((entriesHeight >  GetHeight() - headerHeight - 4 && !scrollbar->IsVisible() && !(flags & LF_HIDESCROLLBAR)) ||
			    (entriesHeight <= GetHeight() - headerHeight - 4 &&  scrollbar->IsVisible()				      )) return Paint(SP_PAINT);

			scrollbar->SetRange(0, entriesHeight - (GetHeight() - 4 - headerHeight));

			/* Find visible entries.
			 */
			entryRect.top	 = -scrollbarPos;
			entryRect.bottom = -scrollbarPos;

			for (Int i = 0; i < Length(); i++)
			{
				ListEntry	*entry = GetNthEntry(i);

				entry->SetVisibleDirect(False);

				if (entryRect.bottom + entry->GetHeight() >= 0 && entryRect.top <= GetHeight() - headerHeight - 4)
				{
					entry->SetMetrics(Point(2, entryRect.top + 2 + headerHeight), Size(GetWidth() - 4 - scrollbarWidth, entry->GetHeight()));
					entry->SetVisibleDirect(True);

					lastVisibleEntry = entry;

					visibleEntries[visibleEntryCount++] = entry->GetHandle() % 32767 + 1;
				}

				entryRect.top	 += entry->GetHeight();
				entryRect.bottom += entry->GetHeight();

				if (entryRect.top > GetHeight() - headerHeight - 4) break;
			}

			/* Check for changes.
			 */
			if (visibleEntriesString != visibleEntries)
			{
				/* Draw added entry only if it was added to the end.
				 */
				if	(visibleEntries.StartsWith(visibleEntriesString) && visibleEntries.Length() == visibleEntriesString.Length() + 1) lastVisibleEntry->Paint(SP_PAINT);

				/* Nothing needs to be done if last entry was removed.
				 */
				else if (visibleEntriesString.StartsWith(visibleEntries) && visibleEntriesString.Length() == visibleEntries.Length() + 1) ;

				/* Redraw the whole list if something else changed.
				 */
				else															  Paint(SP_PAINT);

				visibleEntriesString = visibleEntries;
			}

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x188(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xb1a14
leaq -0x28(%rbp), %rdi
movq %rdi, -0x198(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x198(%rbp), %rdi
callq 0x59680
movl %eax, -0x18c(%rbp)
jmp 0xb19e3
movl -0x18c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xb2a2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xb2a37
movq -0x188(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xb1a7d
leaq -0x48(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x5ca80
movq -0x1a8(%rbp), %rdi
callq 0x59680
movl %eax, -0x19c(%rbp)
jmp 0xb1a4c
movl -0x19c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xb2a2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xb2a37
movq -0x188(%rbp), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movq -0x188(%rbp), %rdi
movq %rax, -0x50(%rbp)
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
movq -0x188(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq (%rdi), %rax
movq 0x50(%rax), %rax
callq *%rax
movq %rax, -0x70(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x59ff0
movups -0x60(%rbp), %xmm0
movaps %xmm0, -0x80(%rbp)
leaq -0x98(%rbp), %rdi
xorl %esi, %esi
callq 0x5da90
movq -0x188(%rbp), %rdi
movl $0x0, -0x9c(%rbp)
movq $0x0, -0xa8(%rbp)
callq 0x59890
movl %eax, -0x1ac(%rbp)
jmp 0xb1b09
movl -0x1ac(%rbp), %eax
cmpl $0x0, %eax
jle 0xb1b52
movq -0x188(%rbp), %rax
movl 0x30(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0xb1b52
movq -0x188(%rbp), %rax
movq 0x6d8(%rax), %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
jmp 0xb1b3f
jmp 0xb1b6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xb2a1d
movq -0x188(%rbp), %rax
movq 0x6d8(%rax), %rdi
movq (%rdi), %rax
movq 0x60(%rax), %rax
callq *%rax
jmp 0xb1b6b
jmp 0xb1b6d
movq -0x188(%rbp), %rax
movl $0x0, -0xac(%rbp)
movq 0x6d8(%rax), %rdi
movq (%rdi), %rax
movq 0x90(%rax), %rax
callq *%rax
movb %al, -0x1ad(%rbp)
jmp 0xb1b99
movb -0x1ad(%rbp), %al
testb $0x1, %al
jne 0xb1ba5
jmp 0xb1bce
movq -0x188(%rbp), %rax
movq 0x6d8(%rax), %rdi
callq 0x5b860
movl %eax, -0x1b4(%rbp)
jmp 0xb1bc0
movl -0x1b4(%rbp), %eax
movl %eax, -0x1b8(%rbp)
jmp 0xb1bd8
xorl %eax, %eax
movl %eax, -0x1b8(%rbp)
jmp 0xb1bd8
movq -0x188(%rbp), %rax
movl -0x1b8(%rbp), %ecx
movl %ecx, -0xb0(%rbp)
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x90(%rax), %rax
callq *%rax
movb %al, -0x1b9(%rbp)
jmp 0xb1c06
movb -0x1b9(%rbp), %al
testb $0x1, %al
jne 0xb1c12
jmp 0xb1c3b
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rdi
callq 0x5a210
movl %eax, -0x1c0(%rbp)
jmp 0xb1c2d
movl -0x1c0(%rbp), %eax
movl %eax, -0x1c4(%rbp)
jmp 0xb1c45
xorl %eax, %eax
movl %eax, -0x1c4(%rbp)
jmp 0xb1c45
movl -0x1c4(%rbp), %eax
movl %eax, -0xb4(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x1c8(%rbp)
testl %eax, %eax
je 0xb1c74
jmp 0xb1c60
movl -0x1c8(%rbp), %eax
subl $0x1, %eax
je 0xb23d4
jmp 0xb29b2
movq -0x50(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x591b0
jmp 0xb1c83
movq -0x188(%rbp), %rdi
callq 0x5daf0
movl %eax, -0x1cc(%rbp)
jmp 0xb1c97
movq -0x188(%rbp), %rdi
movl -0x1cc(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0x1d4(%rbp)
callq 0x5b860
movl %eax, -0x1d0(%rbp)
jmp 0xb1cc3
movl -0x1d4(%rbp), %eax
movl -0x1d0(%rbp), %ecx
subl -0xb0(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jle 0xb1e7a
movq -0x188(%rbp), %rax
movl 0x30(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xb1e7a
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rax
movq %rax, -0x1e0(%rbp)
movl -0xb0(%rbp), %edx
incl %edx
leaq -0xbc(%rbp), %rdi
movl $0x12, %esi
callq 0x5c2c0
jmp 0xb1d26
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rdi
callq 0x5a210
movl %eax, -0x1e4(%rbp)
jmp 0xb1d41
movq -0x188(%rbp), %rdi
callq 0x5b860
movl %eax, -0x1e8(%rbp)
jmp 0xb1d55
movl -0x1e4(%rbp), %esi
movl -0x1e8(%rbp), %edx
movl -0xb0(%rbp), %eax
subl %eax, %edx
addl $-0x2, %edx
leaq -0xc4(%rbp), %rdi
callq 0x59260
jmp 0xb1d7a
movq -0x1e0(%rbp), %rdi
movq (%rdi), %rax
movq 0x150(%rax), %rax
leaq -0xbc(%rbp), %rsi
leaq -0xc4(%rbp), %rdx
callq *%rax
jmp 0xb1d9d
movq -0x188(%rbp), %rdi
movq 0x6c8(%rdi), %rax
movq %rax, -0x1f8(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0x1f0(%rbp)
callq 0x5b860
movl %eax, -0x1ec(%rbp)
jmp 0xb1dcb
movq -0x1f8(%rbp), %rdi
movl -0x1ec(%rbp), %eax
movl -0x1f0(%rbp), %esi
movl -0xb0(%rbp), %edx
movl %esi, %ecx
subl %eax, %edx
movl %edx, %eax
leal 0x4(%rax,%rcx), %edx
xorl %esi, %esi
callq 0x599a0
jmp 0xb1df7
movq -0x188(%rbp), %rdi
movq 0x6c8(%rdi), %rax
movq %rax, -0x208(%rbp)
callq 0x5b860
movl %eax, -0x1fc(%rbp)
jmp 0xb1e19
movq -0x208(%rbp), %rdi
movl -0x1fc(%rbp), %esi
movl -0xb0(%rbp), %eax
subl %eax, %esi
addl $-0x4, %esi
callq 0x5b600
jmp 0xb1e38
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
jmp 0xb1e51
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rdi
callq 0x5a210
movl %eax, -0x20c(%rbp)
jmp 0xb1e6c
movl -0x20c(%rbp), %eax
movl %eax, -0xb4(%rbp)
jmp 0xb1eae
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x60(%rax), %rax
callq *%rax
jmp 0xb1e93
movq -0x188(%rbp), %rax
movl $0x0, 0x6d0(%rax)
movl $0x0, -0xb4(%rbp)
movq -0x188(%rbp), %rcx
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x7c(%rbp)
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x74(%rbp)
movl $0x0, -0xc8(%rbp)
movq -0x188(%rbp), %rdi
movl -0xc8(%rbp), %eax
movl %eax, -0x214(%rbp)
movq (%rdi), %rax
movq 0x178(%rax), %rax
callq *%rax
movl %eax, -0x210(%rbp)
jmp 0xb1efc
movl -0x214(%rbp), %eax
movl -0x210(%rbp), %ecx
cmpl %ecx, %eax
jge 0xb2152
movq -0x188(%rbp), %rdi
movl -0xc8(%rbp), %esi
movq (%rdi), %rax
movq 0x180(%rax), %rax
callq *%rax
movq %rax, -0x220(%rbp)
jmp 0xb1f32
movq -0x220(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rdi
xorl %esi, %esi
callq 0x59e20
jmp 0xb1f50
movl -0x74(%rbp), %eax
movl %eax, -0x228(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x5b860
movl %eax, -0x224(%rbp)
jmp 0xb1f6d
movl -0x224(%rbp), %ecx
movl -0x228(%rbp), %eax
addl %ecx, %eax
cmpl $0x0, %eax
jl 0xb20fc
movq -0x188(%rbp), %rdi
movl -0x7c(%rbp), %eax
movl %eax, -0x230(%rbp)
callq 0x5b860
movl %eax, -0x22c(%rbp)
jmp 0xb1fa1
movl -0x230(%rbp), %eax
movl -0x22c(%rbp), %ecx
subl -0xb0(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jg 0xb20fc
movq -0xd0(%rbp), %rax
movq %rax, -0x238(%rbp)
movl -0x7c(%rbp), %edx
movl -0xb0(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal 0x2(%rax,%rcx), %edx
leaq -0xd8(%rbp), %rdi
movl $0x2, %esi
callq 0x5c2c0
jmp 0xb1ff0
movq -0x188(%rbp), %rdi
callq 0x5a210
movl %eax, -0x23c(%rbp)
jmp 0xb2004
movl -0x23c(%rbp), %eax
movl -0xb4(%rbp), %ecx
subl %ecx, %eax
addl $-0x4, %eax
movl %eax, -0x244(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x5b860
movl %eax, -0x240(%rbp)
jmp 0xb202f
movl -0x240(%rbp), %edx
movl -0x244(%rbp), %esi
leaq -0xe0(%rbp), %rdi
callq 0x59260
jmp 0xb2049
movq -0x238(%rbp), %rdi
movq (%rdi), %rax
movq 0x150(%rax), %rax
leaq -0xd8(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq *%rax
jmp 0xb206c
movq -0xd0(%rbp), %rdi
movl $0x1, %esi
callq 0x59e20
jmp 0xb207f
movq -0xd0(%rbp), %rdi
callq 0x5d050
movl %eax, -0x248(%rbp)
jmp 0xb2093
movl -0x248(%rbp), %edx
movslq %edx, %rax
imulq $-0x7ffefffd, %rax, %rax # imm = 0x80010003
shrq $0x20, %rax
addl %edx, %eax
movl %eax, %ecx
shrl $0x1f, %ecx
sarl $0xe, %eax
addl %ecx, %eax
movl %eax, %ecx
shll $0xf, %ecx
subl %ecx, %eax
movl %eax, %ecx
movl %edx, %eax
leal 0x1(%rax,%rcx), %eax
movl %eax, -0x254(%rbp)
movl -0x9c(%rbp), %esi
movl %esi, %eax
incl %eax
movl %eax, -0x9c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x5d4e0
movq %rax, -0x250(%rbp)
jmp 0xb20ed
movq -0x250(%rbp), %rax
movl -0x254(%rbp), %ecx
movl %ecx, (%rax)
movq -0xd0(%rbp), %rdi
callq 0x5b860
movl %eax, -0x258(%rbp)
jmp 0xb2110
movl -0x258(%rbp), %ecx
movl -0x7c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x5b860
movl %eax, -0x25c(%rbp)
jmp 0xb2132
movl -0x25c(%rbp), %eax
addl -0x74(%rbp), %eax
movl %eax, -0x74(%rbp)
movl -0xc8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc8(%rbp)
jmp 0xb1ed5
movq -0x188(%rbp), %rdi
addq $0x6e0, %rdi            # imm = 0x6E0
leaq -0x98(%rbp), %rsi
callq 0x59760
jmp 0xb216e
movq -0x188(%rbp), %rdi
movq (%rdi), %rax
movq 0x98(%rax), %rax
callq *%rax
movb %al, -0x25d(%rbp)
jmp 0xb2189
movb -0x25d(%rbp), %al
testb $0x1, %al
jne 0xb2198
jmp 0xb229d
movq -0x50(%rbp), %rax
movq %rax, -0x268(%rbp)
movl -0xb0(%rbp), %edx
leaq -0x108(%rbp), %rdi
xorl %esi, %esi
callq 0x5c2c0
jmp 0xb21b9
leaq -0x60(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x5be80
movq %rdx, -0x278(%rbp)
movq %rax, -0x270(%rbp)
jmp 0xb21d9
movq -0x278(%rbp), %rax
movq -0x270(%rbp), %rcx
movq %rcx, -0x100(%rbp)
movq %rax, -0xf8(%rbp)
movl -0xb4(%rbp), %esi
movl -0xb0(%rbp), %edx
leaq -0x110(%rbp), %rdi
callq 0x59260
jmp 0xb220f
leaq -0x100(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x5c040
movq %rdx, -0x288(%rbp)
movq %rax, -0x280(%rbp)
jmp 0xb2232
movq -0x288(%rbp), %rax
movq -0x280(%rbp), %rcx
movq %rcx, -0xf0(%rbp)
movq %rax, -0xe8(%rbp)
movq 0x156d4b(%rip), %rax    # 0x208fa0
movl (%rax), %eax
movl %eax, -0x28c(%rbp)
leaq -0x118(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
jmp 0xb226f
movl -0x28c(%rbp), %ecx
movq -0x268(%rbp), %rdi
movq 0x1563c5(%rip), %rdx    # 0x208648
leaq -0xf0(%rbp), %rsi
leaq -0x118(%rbp), %r8
callq 0x5c110
jmp 0xb2298
jmp 0xb239f
movq -0x50(%rbp), %rax
movq %rax, -0x298(%rbp)
movl -0xb0(%rbp), %edx
leaq -0x140(%rbp), %rdi
xorl %esi, %esi
callq 0x5c2c0
jmp 0xb22be
leaq -0x60(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x5be80
movq %rdx, -0x2a8(%rbp)
movq %rax, -0x2a0(%rbp)
jmp 0xb22de
movq -0x2a8(%rbp), %rax
movq -0x2a0(%rbp), %rcx
movq %rcx, -0x138(%rbp)
movq %rax, -0x130(%rbp)
movl -0xb4(%rbp), %esi
movl -0xb0(%rbp), %edx
leaq -0x148(%rbp), %rdi
callq 0x59260
jmp 0xb2314
leaq -0x138(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x5c040
movq %rdx, -0x2b8(%rbp)
movq %rax, -0x2b0(%rbp)
jmp 0xb2337
movq -0x2b8(%rbp), %rax
movq -0x2b0(%rbp), %rcx
movq %rcx, -0x128(%rbp)
movq %rax, -0x120(%rbp)
movq 0x156c46(%rip), %rax    # 0x208fa0
movl (%rax), %eax
movl %eax, -0x2bc(%rbp)
leaq -0x150(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
jmp 0xb2374
movl -0x2bc(%rbp), %ecx
movq -0x298(%rbp), %rdi
movq 0x156120(%rip), %rdx    # 0x2084a8
leaq -0x128(%rbp), %rsi
leaq -0x150(%rbp), %r8
callq 0x5c110
jmp 0xb239d
jmp 0xb239f
movq -0x50(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movl $0x1, %edx
callq 0x5c050
jmp 0xb23b3
movq -0x188(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x5acb0
jmp 0xb23c4
movq -0x50(%rbp), %rdi
callq 0x5d270
jmp 0xb23cf
jmp 0xb29b2
movq -0x188(%rbp), %rdi
callq 0x5daf0
movl %eax, -0x2c0(%rbp)
jmp 0xb23e8
movq -0x188(%rbp), %rdi
movl -0x2c0(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0x2c8(%rbp)
callq 0x5b860
movl %eax, -0x2c4(%rbp)
jmp 0xb2414
movl -0x2c8(%rbp), %eax
movl -0x2c4(%rbp), %ecx
subl -0xb0(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jle 0xb246d
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x90(%rax), %rax
callq *%rax
movb %al, -0x2c9(%rbp)
jmp 0xb244f
movb -0x2c9(%rbp), %al
testb $0x1, %al
jne 0xb246d
jmp 0xb245b
movq -0x188(%rbp), %rax
movl 0x30(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xb24d4
movq -0x188(%rbp), %rdi
movl -0xac(%rbp), %eax
movl %eax, -0x2d4(%rbp)
callq 0x5b860
movl %eax, -0x2d0(%rbp)
jmp 0xb248d
movl -0x2d4(%rbp), %eax
movl -0x2d0(%rbp), %ecx
subl -0xb0(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jg 0xb2506
movq -0x188(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x90(%rax), %rax
callq *%rax
movb %al, -0x2d5(%rbp)
jmp 0xb24c8
movb -0x2d5(%rbp), %al
testb $0x1, %al
jne 0xb24d4
jmp 0xb2506
movq -0x188(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
xorl %esi, %esi
callq *%rax
movl %eax, -0x2dc(%rbp)
jmp 0xb24ee
movl -0x2dc(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x154(%rbp)
jmp 0xb2a0f
movq -0x188(%rbp), %rdi
movq 0x6c8(%rdi), %rax
movq %rax, -0x2f0(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0x2e4(%rbp)
callq 0x5b860
movl %eax, -0x2e0(%rbp)
jmp 0xb2534
movq -0x2f0(%rbp), %rdi
movl -0x2e0(%rbp), %eax
movl -0x2e4(%rbp), %esi
movl -0xb0(%rbp), %edx
movl %esi, %ecx
subl %eax, %edx
movl %edx, %eax
leal 0x4(%rax,%rcx), %edx
xorl %esi, %esi
callq 0x599a0
jmp 0xb2560
movq -0x188(%rbp), %rcx
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x7c(%rbp)
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x74(%rbp)
movl $0x0, -0x158(%rbp)
movq -0x188(%rbp), %rdi
movl -0x158(%rbp), %eax
movl %eax, -0x2f8(%rbp)
movq (%rdi), %rax
movq 0x178(%rax), %rax
callq *%rax
movl %eax, -0x2f4(%rbp)
jmp 0xb25ae
movl -0x2f8(%rbp), %eax
movl -0x2f4(%rbp), %ecx
cmpl %ecx, %eax
jge 0xb284e
movq -0x188(%rbp), %rdi
movl -0x158(%rbp), %esi
movq (%rdi), %rax
movq 0x180(%rax), %rax
callq *%rax
movq %rax, -0x300(%rbp)
jmp 0xb25e4
movq -0x300(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x160(%rbp), %rdi
xorl %esi, %esi
callq 0x59e20
jmp 0xb2602
movl -0x74(%rbp), %eax
movl %eax, -0x308(%rbp)
movq -0x160(%rbp), %rdi
callq 0x5b860
movl %eax, -0x304(%rbp)
jmp 0xb261f
movl -0x304(%rbp), %ecx
movl -0x308(%rbp), %eax
addl %ecx, %eax
cmpl $0x0, %eax
jl 0xb27bc
movq -0x188(%rbp), %rdi
movl -0x7c(%rbp), %eax
movl %eax, -0x310(%rbp)
callq 0x5b860
movl %eax, -0x30c(%rbp)
jmp 0xb2653
movl -0x310(%rbp), %eax
movl -0x30c(%rbp), %ecx
subl -0xb0(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jg 0xb27bc
movq -0x160(%rbp), %rax
movq %rax, -0x318(%rbp)
movl -0x7c(%rbp), %edx
movl -0xb0(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal 0x2(%rax,%rcx), %edx
leaq -0x168(%rbp), %rdi
movl $0x2, %esi
callq 0x5c2c0
jmp 0xb26a2
movq -0x188(%rbp), %rdi
callq 0x5a210
movl %eax, -0x31c(%rbp)
jmp 0xb26b6
movl -0x31c(%rbp), %eax
movl -0xb4(%rbp), %ecx
subl %ecx, %eax
addl $-0x4, %eax
movl %eax, -0x324(%rbp)
movq -0x160(%rbp), %rdi
callq 0x5b860
movl %eax, -0x320(%rbp)
jmp 0xb26e1
movl -0x320(%rbp), %edx
movl -0x324(%rbp), %esi
leaq -0x170(%rbp), %rdi
callq 0x59260
jmp 0xb26fb
movq -0x318(%rbp), %rdi
movq (%rdi), %rax
movq 0x150(%rax), %rax
leaq -0x168(%rbp), %rsi
leaq -0x170(%rbp), %rdx
callq *%rax
jmp 0xb271e
movq -0x160(%rbp), %rdi
movl $0x1, %esi
callq 0x59e20
jmp 0xb2731
movq -0x160(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x160(%rbp), %rdi
callq 0x5d050
movl %eax, -0x328(%rbp)
jmp 0xb2753
movl -0x328(%rbp), %edx
movslq %edx, %rax
imulq $-0x7ffefffd, %rax, %rax # imm = 0x80010003
shrq $0x20, %rax
addl %edx, %eax
movl %eax, %ecx
shrl $0x1f, %ecx
sarl $0xe, %eax
addl %ecx, %eax
movl %eax, %ecx
shll $0xf, %ecx
subl %ecx, %eax
movl %eax, %ecx
movl %edx, %eax
leal 0x1(%rax,%rcx), %eax
movl %eax, -0x334(%rbp)
movl -0x9c(%rbp), %esi
movl %esi, %eax
incl %eax
movl %eax, -0x9c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x5d4e0
movq %rax, -0x330(%rbp)
jmp 0xb27ad
movq -0x330(%rbp), %rax
movl -0x334(%rbp), %ecx
movl %ecx, (%rax)
movq -0x160(%rbp), %rdi
callq 0x5b860
movl %eax, -0x338(%rbp)
jmp 0xb27d0
movl -0x338(%rbp), %ecx
movl -0x7c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x7c(%rbp)
movq -0x160(%rbp), %rdi
callq 0x5b860
movl %eax, -0x33c(%rbp)
jmp 0xb27f2
movq -0x188(%rbp), %rdi
movl -0x33c(%rbp), %ecx
movl -0x74(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x74(%rbp)
movl -0x7c(%rbp), %eax
movl %eax, -0x344(%rbp)
callq 0x5b860
movl %eax, -0x340(%rbp)
jmp 0xb281d
movl -0x344(%rbp), %eax
movl -0x340(%rbp), %ecx
subl -0xb0(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jle 0xb2838
jmp 0xb284e
jmp 0xb283a
movl -0x158(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x158(%rbp)
jmp 0xb2587
movq -0x188(%rbp), %rdi
addq $0x6e0, %rdi            # imm = 0x6E0
leaq -0x98(%rbp), %rsi
callq 0x5b570
movb %al, -0x345(%rbp)
jmp 0xb2870
movb -0x345(%rbp), %al
testb $0x1, %al
jne 0xb287f
jmp 0xb29b0
movq -0x188(%rbp), %rsi
addq $0x6e0, %rsi            # imm = 0x6E0
leaq -0x98(%rbp), %rdi
callq 0x5bf60
movb %al, -0x346(%rbp)
jmp 0xb28a1
movb -0x346(%rbp), %al
testb $0x1, %al
jne 0xb28ad
jmp 0xb2908
leaq -0x98(%rbp), %rdi
callq 0x5b800
movl %eax, -0x34c(%rbp)
jmp 0xb28c1
movq -0x188(%rbp), %rdi
addq $0x6e0, %rdi            # imm = 0x6E0
callq 0x5b800
movl %eax, -0x350(%rbp)
jmp 0xb28dc
movl -0x34c(%rbp), %eax
movl -0x350(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0xb2908
movq -0xa8(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
xorl %esi, %esi
callq *%rax
jmp 0xb2903
jmp 0xb2992
movq -0x188(%rbp), %rdi
addq $0x6e0, %rdi            # imm = 0x6E0
leaq -0x98(%rbp), %rsi
callq 0x5bf60
movb %al, -0x351(%rbp)
jmp 0xb292a
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0xb2936
jmp 0xb297a
movq -0x188(%rbp), %rdi
addq $0x6e0, %rdi            # imm = 0x6E0
callq 0x5b800
movl %eax, -0x358(%rbp)
jmp 0xb2951
leaq -0x98(%rbp), %rdi
callq 0x5b800
movl %eax, -0x35c(%rbp)
jmp 0xb2965
movl -0x358(%rbp), %eax
movl -0x35c(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0xb297a
jmp 0xb2990
movq -0x188(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
xorl %esi, %esi
callq *%rax
jmp 0xb298e
jmp 0xb2990
jmp 0xb2992
movq -0x188(%rbp), %rdi
addq $0x6e0, %rdi            # imm = 0x6E0
leaq -0x98(%rbp), %rsi
callq 0x59760
jmp 0xb29ae
jmp 0xb29b0
jmp 0xb29b2
leaq -0x180(%rbp), %rdi
callq 0x5ca80
jmp 0xb29c0
leaq -0x180(%rbp), %rdi
callq 0x59680
movl %eax, -0x360(%rbp)
jmp 0xb29d4
movl -0x360(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x5a410
movl $0x1, -0x154(%rbp)
jmp 0xb2a0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x5a410
jmp 0xb2a1d
leaq -0x98(%rbp), %rdi
callq 0x5df00
jmp 0xb2a2b
leaq -0x98(%rbp), %rdi
callq 0x5df00
jmp 0xb2a37
movl -0x4(%rbp), %eax
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0