// File: /workspace/github_c_makefile_star2_O0/enzo1982[P]smooth/classes/gui/widgets/multi/image/imagebox.cpp
// Function: smooth::GUI::ImageBox::Paint(int)
S::Int S::GUI::ImageBox::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;

	Int		 entriesWidth	   = 0;
	Int		 scrollbarHeight   = (scrollbar->IsVisible() ? scrollbar->GetHeight() : 0);

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

			/* Update scrollbar if necessary.
			 */
			entriesWidth = GetEntriesWidth();

			if (entriesWidth > GetWidth() - 4)
			{
				scrollbar->SetMetrics(Point(1, 18), Size(GetWidth() - 2, scrollbar->GetHeight()));
				scrollbar->SetRange(0, entriesWidth - (GetWidth() - 4));

				scrollbar->SetPageSize(GetWidth() - 4);

				scrollbar->Show();

				scrollbarHeight = scrollbar->GetHeight();
			}
			else
			{
				scrollbar->Hide();

				scrollbarPos	= 0;
				scrollbarHeight = 0;
			}

			/* Set visibility of image entries first.
			 */
			entryRect.left	= -scrollbarPos;
			entryRect.right = -scrollbarPos;

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

				entry->SetVisibleDirect(False);

				if (entryRect.right + entry->GetWidth() >= 0 && entryRect.left <= GetWidth() - 4)
				{
					entry->SetMetrics(Point(entryRect.left + 2, 2), Size(entry->GetWidth(), GetHeight() - 4 - scrollbarHeight));
					entry->SetVisibleDirect(True);

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

				entryRect.left	+= entry->GetWidth();
				entryRect.right += entry->GetWidth();
			}

			visibleEntriesString = visibleEntries;

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

			surface->Frame(frame, FRAME_DOWN);

			Widget::Paint(message);

			surface->EndPaint();

			break;
		case SP_UPDATE:
			/* Update scrollbar if necessary.
			 */
			entriesWidth = GetEntriesWidth();

			if ((entriesWidth >  GetWidth() - 4 && !scrollbar->IsVisible()) ||
			    (entriesWidth <= GetWidth() - 4 &&  scrollbar->IsVisible())) return Paint(SP_PAINT);

			scrollbar->SetRange(0, entriesWidth - (GetWidth() - 4));

			/* Find visible entries.
			 */
			entryRect.left	= -scrollbarPos;
			entryRect.right = -scrollbarPos;

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

				if (entryRect.right + entry->GetWidth() >= 0 && entryRect.left <= GetWidth() - 4)
				{
					visibleEntries[visibleEntryCount++] = entry->GetHandle() % 32767 + 1;
				}

				entryRect.left	+= entry->GetWidth();
				entryRect.right += entry->GetWidth();
			}

			/* Check for changes.
			 */
			if (visibleEntriesString != visibleEntries) Paint(SP_PAINT);

			break;
	}

	return Success();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x138(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xab4b4
leaq -0x28(%rbp), %rdi
movq %rdi, -0x148(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x148(%rbp), %rdi
callq 0x59680
movl %eax, -0x13c(%rbp)
jmp 0xab483
movl -0x13c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xac083
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xac08f
movq -0x138(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xab51d
leaq -0x48(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x5ca80
movq -0x158(%rbp), %rdi
callq 0x59680
movl %eax, -0x14c(%rbp)
jmp 0xab4ec
movl -0x14c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xac083
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xac08f
movq -0x138(%rbp), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movq -0x138(%rbp), %rdi
movq %rax, -0x50(%rbp)
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
movq -0x138(%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 -0x138(%rbp), %rax
movl $0x0, -0x9c(%rbp)
movl $0x0, -0xa0(%rbp)
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x90(%rax), %rax
callq *%rax
movb %al, -0x159(%rbp)
jmp 0xab5b6
movb -0x159(%rbp), %al
testb $0x1, %al
jne 0xab5c2
jmp 0xab5eb
movq -0x138(%rbp), %rax
movq 0x6c8(%rax), %rdi
callq 0x5b860
movl %eax, -0x160(%rbp)
jmp 0xab5dd
movl -0x160(%rbp), %eax
movl %eax, -0x164(%rbp)
jmp 0xab5f5
xorl %eax, %eax
movl %eax, -0x164(%rbp)
jmp 0xab5f5
movl -0x164(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x168(%rbp)
testl %eax, %eax
je 0xab635
jmp 0xab610
movl -0x168(%rbp), %eax
subl $0x1, %eax
je 0xabc98
jmp 0xac00a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xac075
movq -0x50(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x591b0
jmp 0xab644
movq -0x138(%rbp), %rdi
callq 0x5b200
movl %eax, -0x16c(%rbp)
jmp 0xab658
movq -0x138(%rbp), %rdi
movl -0x16c(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
movl %eax, -0x174(%rbp)
callq 0x5a210
movl %eax, -0x170(%rbp)
jmp 0xab684
movl -0x174(%rbp), %eax
movl -0x170(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jle 0xab80d
movq -0x138(%rbp), %rax
movq 0x6c8(%rax), %rax
movq %rax, -0x180(%rbp)
leaq -0xac(%rbp), %rdi
movl $0x1, %esi
movl $0x12, %edx
callq 0x5c2c0
jmp 0xab6c8
movq -0x138(%rbp), %rdi
callq 0x5a210
movl %eax, -0x184(%rbp)
jmp 0xab6dc
movq -0x138(%rbp), %rax
movl -0x184(%rbp), %ecx
addl $-0x2, %ecx
movl %ecx, -0x18c(%rbp)
movq 0x6c8(%rax), %rdi
callq 0x5b860
movl %eax, -0x188(%rbp)
jmp 0xab706
movl -0x188(%rbp), %edx
movl -0x18c(%rbp), %esi
leaq -0xb4(%rbp), %rdi
callq 0x59260
jmp 0xab720
movq -0x180(%rbp), %rdi
movq (%rdi), %rax
movq 0x150(%rax), %rax
leaq -0xac(%rbp), %rsi
leaq -0xb4(%rbp), %rdx
callq *%rax
jmp 0xab743
movq -0x138(%rbp), %rdi
movq 0x6c8(%rdi), %rax
movq %rax, -0x1a0(%rbp)
movl -0xa0(%rbp), %eax
movl %eax, -0x194(%rbp)
callq 0x5a210
movl %eax, -0x190(%rbp)
jmp 0xab771
movq -0x1a0(%rbp), %rdi
movl -0x190(%rbp), %eax
movl -0x194(%rbp), %edx
subl %eax, %edx
addl $0x4, %edx
xorl %esi, %esi
callq 0x599a0
jmp 0xab792
movq -0x138(%rbp), %rdi
movq 0x6c8(%rdi), %rax
movq %rax, -0x1b0(%rbp)
callq 0x5a210
movl %eax, -0x1a4(%rbp)
jmp 0xab7b4
movq -0x1b0(%rbp), %rdi
movl -0x1a4(%rbp), %esi
addl $-0x4, %esi
callq 0x5b600
jmp 0xab7cb
movq -0x138(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
jmp 0xab7e4
movq -0x138(%rbp), %rax
movq 0x6c8(%rax), %rdi
callq 0x5b860
movl %eax, -0x1b4(%rbp)
jmp 0xab7ff
movl -0x1b4(%rbp), %eax
movl %eax, -0xa4(%rbp)
jmp 0xab841
movq -0x138(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x60(%rax), %rax
callq *%rax
jmp 0xab826
movq -0x138(%rbp), %rax
movl $0x0, 0x6d0(%rax)
movl $0x0, -0xa4(%rbp)
movq -0x138(%rbp), %rcx
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x80(%rbp)
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x78(%rbp)
movl $0x0, -0xb8(%rbp)
movq -0x138(%rbp), %rdi
movl -0xb8(%rbp), %eax
movl %eax, -0x1bc(%rbp)
movq (%rdi), %rax
movq 0x178(%rax), %rax
callq *%rax
movl %eax, -0x1b8(%rbp)
jmp 0xab88f
movl -0x1bc(%rbp), %eax
movl -0x1b8(%rbp), %ecx
cmpl %ecx, %eax
jge 0xabac8
movq -0x138(%rbp), %rdi
movl -0xb8(%rbp), %esi
movq (%rdi), %rax
movq 0x180(%rax), %rax
callq *%rax
movq %rax, -0x1c8(%rbp)
jmp 0xab8c5
movq -0x1c8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0x59e20
jmp 0xab8e3
movl -0x78(%rbp), %eax
movl %eax, -0x1d0(%rbp)
movq -0xc0(%rbp), %rdi
callq 0x5a210
movl %eax, -0x1cc(%rbp)
jmp 0xab900
movl -0x1cc(%rbp), %ecx
movl -0x1d0(%rbp), %eax
addl %ecx, %eax
cmpl $0x0, %eax
jl 0xaba72
movq -0x138(%rbp), %rdi
movl -0x80(%rbp), %eax
movl %eax, -0x1d8(%rbp)
callq 0x5a210
movl %eax, -0x1d4(%rbp)
jmp 0xab934
movl -0x1d8(%rbp), %eax
movl -0x1d4(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jg 0xaba72
movq -0xc0(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movl -0x80(%rbp), %esi
addl $0x2, %esi
leaq -0xc8(%rbp), %rdi
movl $0x2, %edx
callq 0x5c2c0
jmp 0xab972
movq -0xc0(%rbp), %rdi
callq 0x5a210
movl %eax, -0x1e4(%rbp)
jmp 0xab986
movq -0x138(%rbp), %rdi
callq 0x5b860
movl %eax, -0x1e8(%rbp)
jmp 0xab99a
movl -0x1e4(%rbp), %esi
movl -0x1e8(%rbp), %edx
movl -0xa4(%rbp), %eax
subl %eax, %edx
addl $-0x4, %edx
leaq -0xd0(%rbp), %rdi
callq 0x59260
jmp 0xab9bf
movq -0x1e0(%rbp), %rdi
movq (%rdi), %rax
movq 0x150(%rax), %rax
leaq -0xc8(%rbp), %rsi
leaq -0xd0(%rbp), %rdx
callq *%rax
jmp 0xab9e2
movq -0xc0(%rbp), %rdi
movl $0x1, %esi
callq 0x59e20
jmp 0xab9f5
movq -0xc0(%rbp), %rdi
callq 0x5d050
movl %eax, -0x1ec(%rbp)
jmp 0xaba09
movl -0x1ec(%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, -0x1fc(%rbp)
movl -0x9c(%rbp), %esi
movl %esi, %eax
incl %eax
movl %eax, -0x9c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x5d4e0
movq %rax, -0x1f8(%rbp)
jmp 0xaba63
movq -0x1f8(%rbp), %rax
movl -0x1fc(%rbp), %ecx
movl %ecx, (%rax)
movq -0xc0(%rbp), %rdi
callq 0x5a210
movl %eax, -0x200(%rbp)
jmp 0xaba86
movl -0x200(%rbp), %ecx
movl -0x80(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0xc0(%rbp), %rdi
callq 0x5a210
movl %eax, -0x204(%rbp)
jmp 0xabaa8
movl -0x204(%rbp), %eax
addl -0x78(%rbp), %eax
movl %eax, -0x78(%rbp)
movl -0xb8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb8(%rbp)
jmp 0xab868
movq -0x138(%rbp), %rdi
addq $0x6d8, %rdi            # imm = 0x6D8
leaq -0x98(%rbp), %rsi
callq 0x59760
jmp 0xabae4
movq -0x138(%rbp), %rdi
movq (%rdi), %rax
movq 0x98(%rax), %rax
callq *%rax
movb %al, -0x205(%rbp)
jmp 0xabaff
movb -0x205(%rbp), %al
testb $0x1, %al
jne 0xabb0e
jmp 0xabbba
movq -0x50(%rbp), %rax
movq %rax, -0x210(%rbp)
movl -0xa4(%rbp), %edx
leaq -0xe8(%rbp), %rdi
xorl %esi, %esi
callq 0x59260
jmp 0xabb2f
leaq -0x60(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x5c040
movq %rdx, -0x220(%rbp)
movq %rax, -0x218(%rbp)
jmp 0xabb4f
movq -0x220(%rbp), %rax
movq -0x218(%rbp), %rcx
movq %rcx, -0xe0(%rbp)
movq %rax, -0xd8(%rbp)
movq 0x15d42e(%rip), %rax    # 0x208fa0
movl (%rax), %eax
movl %eax, -0x224(%rbp)
leaq -0xf0(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
jmp 0xabb8c
movl -0x224(%rbp), %ecx
movq -0x210(%rbp), %rdi
movq 0x15caa8(%rip), %rdx    # 0x208648
leaq -0xe0(%rbp), %rsi
leaq -0xf0(%rbp), %r8
callq 0x5c110
jmp 0xabbb5
jmp 0xabc63
movq -0x50(%rbp), %rax
movq %rax, -0x230(%rbp)
movl -0xa4(%rbp), %edx
leaq -0x108(%rbp), %rdi
xorl %esi, %esi
callq 0x59260
jmp 0xabbdb
leaq -0x60(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x5c040
movq %rdx, -0x240(%rbp)
movq %rax, -0x238(%rbp)
jmp 0xabbfb
movq -0x240(%rbp), %rax
movq -0x238(%rbp), %rcx
movq %rcx, -0x100(%rbp)
movq %rax, -0xf8(%rbp)
movq 0x15d382(%rip), %rax    # 0x208fa0
movl (%rax), %eax
movl %eax, -0x244(%rbp)
leaq -0x110(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
jmp 0xabc38
movl -0x244(%rbp), %ecx
movq -0x230(%rbp), %rdi
movq 0x15c85c(%rip), %rdx    # 0x2084a8
leaq -0x100(%rbp), %rsi
leaq -0x110(%rbp), %r8
callq 0x5c110
jmp 0xabc61
jmp 0xabc63
movq -0x50(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movl $0x1, %edx
callq 0x5c050
jmp 0xabc77
movq -0x138(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x5acb0
jmp 0xabc88
movq -0x50(%rbp), %rdi
callq 0x5d270
jmp 0xabc93
jmp 0xac00a
movq -0x138(%rbp), %rdi
callq 0x5b200
movl %eax, -0x248(%rbp)
jmp 0xabcac
movq -0x138(%rbp), %rdi
movl -0x248(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
movl %eax, -0x250(%rbp)
callq 0x5a210
movl %eax, -0x24c(%rbp)
jmp 0xabcd8
movl -0x250(%rbp), %eax
movl -0x24c(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jle 0xabd19
movq -0x138(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x90(%rax), %rax
callq *%rax
movb %al, -0x251(%rbp)
jmp 0xabd0d
movb -0x251(%rbp), %al
testb $0x1, %al
jne 0xabd19
jmp 0xabd7a
movq -0x138(%rbp), %rdi
movl -0xa0(%rbp), %eax
movl %eax, -0x25c(%rbp)
callq 0x5a210
movl %eax, -0x258(%rbp)
jmp 0xabd39
movl -0x25c(%rbp), %eax
movl -0x258(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jg 0xabdac
movq -0x138(%rbp), %rax
movq 0x6c8(%rax), %rdi
movq (%rdi), %rax
movq 0x90(%rax), %rax
callq *%rax
movb %al, -0x25d(%rbp)
jmp 0xabd6e
movb -0x25d(%rbp), %al
testb $0x1, %al
jne 0xabd7a
jmp 0xabdac
movq -0x138(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
xorl %esi, %esi
callq *%rax
movl %eax, -0x264(%rbp)
jmp 0xabd94
movl -0x264(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x114(%rbp)
jmp 0xac067
movq -0x138(%rbp), %rdi
movq 0x6c8(%rdi), %rax
movq %rax, -0x278(%rbp)
movl -0xa0(%rbp), %eax
movl %eax, -0x26c(%rbp)
callq 0x5a210
movl %eax, -0x268(%rbp)
jmp 0xabdda
movq -0x278(%rbp), %rdi
movl -0x268(%rbp), %eax
movl -0x26c(%rbp), %edx
subl %eax, %edx
addl $0x4, %edx
xorl %esi, %esi
callq 0x599a0
jmp 0xabdfb
movq -0x138(%rbp), %rcx
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x80(%rbp)
xorl %eax, %eax
subl 0x6d0(%rcx), %eax
movl %eax, -0x78(%rbp)
movl $0x0, -0x118(%rbp)
movq -0x138(%rbp), %rdi
movl -0x118(%rbp), %eax
movl %eax, -0x280(%rbp)
movq (%rdi), %rax
movq 0x178(%rax), %rax
callq *%rax
movl %eax, -0x27c(%rbp)
jmp 0xabe49
movl -0x280(%rbp), %eax
movl -0x27c(%rbp), %ecx
cmpl %ecx, %eax
jge 0xabfc4
movq -0x138(%rbp), %rdi
movl -0x118(%rbp), %esi
movq (%rdi), %rax
movq 0x180(%rax), %rax
callq *%rax
movq %rax, -0x288(%rbp)
jmp 0xabe7f
movq -0x288(%rbp), %rax
movq %rax, -0x120(%rbp)
movl -0x78(%rbp), %eax
movl %eax, -0x290(%rbp)
movq -0x120(%rbp), %rdi
callq 0x5a210
movl %eax, -0x28c(%rbp)
jmp 0xabeaa
movl -0x28c(%rbp), %ecx
movl -0x290(%rbp), %eax
addl %ecx, %eax
cmpl $0x0, %eax
jl 0xabf6e
movq -0x138(%rbp), %rdi
movl -0x80(%rbp), %eax
movl %eax, -0x298(%rbp)
callq 0x5a210
movl %eax, -0x294(%rbp)
jmp 0xabede
movl -0x298(%rbp), %eax
movl -0x294(%rbp), %ecx
subl $0x4, %ecx
cmpl %ecx, %eax
jg 0xabf6e
movq -0x120(%rbp), %rdi
callq 0x5d050
movl %eax, -0x29c(%rbp)
jmp 0xabf05
movl -0x29c(%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, -0x2ac(%rbp)
movl -0x9c(%rbp), %esi
movl %esi, %eax
incl %eax
movl %eax, -0x9c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x5d4e0
movq %rax, -0x2a8(%rbp)
jmp 0xabf5f
movq -0x2a8(%rbp), %rax
movl -0x2ac(%rbp), %ecx
movl %ecx, (%rax)
movq -0x120(%rbp), %rdi
callq 0x5a210
movl %eax, -0x2b0(%rbp)
jmp 0xabf82
movl -0x2b0(%rbp), %ecx
movl -0x80(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x120(%rbp), %rdi
callq 0x5a210
movl %eax, -0x2b4(%rbp)
jmp 0xabfa4
movl -0x2b4(%rbp), %eax
addl -0x78(%rbp), %eax
movl %eax, -0x78(%rbp)
movl -0x118(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x118(%rbp)
jmp 0xabe22
movq -0x138(%rbp), %rdi
addq $0x6d8, %rdi            # imm = 0x6D8
leaq -0x98(%rbp), %rsi
callq 0x5b570
movb %al, -0x2b5(%rbp)
jmp 0xabfe6
movb -0x2b5(%rbp), %al
testb $0x1, %al
jne 0xabff2
jmp 0xac008
movq -0x138(%rbp), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
xorl %esi, %esi
callq *%rax
jmp 0xac006
jmp 0xac008
jmp 0xac00a
leaq -0x130(%rbp), %rdi
callq 0x5ca80
jmp 0xac018
leaq -0x130(%rbp), %rdi
callq 0x59680
movl %eax, -0x2bc(%rbp)
jmp 0xac02c
movl -0x2bc(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5a410
movl $0x1, -0x114(%rbp)
jmp 0xac067
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5a410
jmp 0xac075
leaq -0x98(%rbp), %rdi
callq 0x5df00
jmp 0xac083
leaq -0x98(%rbp), %rdi
callq 0x5df00
jmp 0xac08f
movl -0x4(%rbp), %eax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0
nopl (%rax,%rax)