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

	switch (message)
	{
		case SP_PAINT:
			{
				Surface	*surface    = GetDrawSurface();

				Rect	 frame	    = Rect(GetRealPosition(), GetRealSize());
				Int	 offset	    = 19 * surface->GetSurfaceDPI() / 96;

				Long	 lightColor = Color(Math::Min(Setup::BackgroundColor.GetRed() + 64, 255), Math::Min(Setup::BackgroundColor.GetGreen() + 64, 255), Math::Min(Setup::BackgroundColor.GetBlue() + 64, 255));
				Long	 darkColor  = Color(Math::Max(Setup::BackgroundColor.GetRed() - 64, 0), Math::Max(Setup::BackgroundColor.GetGreen() - 64, 0), Math::Max(Setup::BackgroundColor.GetBlue() - 64, 0));

				surface->Box(frame, Setup::BackgroundColor, Rect::Filled);
				surface->Frame(frame + Point(0, offset) - Size(0, offset), FRAME_UP);

				frame.right  = frame.left;
				frame.bottom = frame.top + offset;

				for (Int i = 0; i < GetNOfObjects(); i++)
				{
					Widget		*widget = GetNthObject(i);
					Widget		*prev	= (i > 0) ? GetNthObject(i - 1) : NIL;

					const Bitmap	&bitmap = bitmaps.Get(widget->GetHandle());
					Size		 sSize	= bitmap == NIL ? Size() : Size(bitmap.GetSize().cx / (bitmap.GetSize().cy / 15.0) , 15) * surface->GetSurfaceDPI() / 96;

					frame.left  = frame.right + 1;
					frame.right = frame.left + widget->GetScaledTextWidth() + sSize.cx + 6 + Int(widget->GetText() != NIL ? 6 : 0);

					if (widget->IsVisible())
					{
						frame.left--;
						frame.right++;
					}
					else
					{
						frame.top++;
					}

					if (prev != NIL && prev->IsVisible()) frame.left++;

					surface->Frame(frame + Size(1, 1), FRAME_UP);

					if (IsRightToLeft()) { frame.left++; frame.right++; }

					if (prev != NIL && prev->IsVisible())
					{
						surface->Line(Point(frame.left, frame.top + 1), Point(frame.left, frame.bottom), Setup::BackgroundColor); frame.left--;

						if (IsRightToLeft()) surface->SetPixel(Point(frame.left + 1, frame.top), lightColor);
					}
					else
					{
						surface->SetPixel(Point(frame.left, frame.top), Setup::BackgroundColor);
					}

					surface->SetPixel(Point(frame.right, frame.top), Setup::BackgroundColor);

					if (IsRightToLeft()) { frame.left--; frame.right--; }

					if (widget->IsVisible()) frame.bottom--;

					if (bitmap != NIL)
					{
						surface->BlitFromBitmap(bitmap, Rect(Point(0, 0), bitmap.GetSize()), Rect(Point(frame.left + 3 + (widget->IsVisible() ? 1 : 0), frame.top + 2), sSize));
					}

					surface->SetText(widget->GetText(), Rect(Point(frame.left + sSize.cx + 6 + (widget->IsVisible() ? 1 : 0), frame.top + Math::Ceil(Float(frame.GetHeight() - widget->GetFont().GetScaledTextSizeY()) / 2) - 1), Size(widget->GetScaledTextWidth() + sSize.cx, offset - 2)), widget->GetFont());

					if (widget->IsVisible())
					{
						frame.bottom++;

						surface->Line(Point(frame.left + 1, frame.bottom), Point(frame.right + (IsRightToLeft() ? 1 : 0), frame.bottom), Setup::BackgroundColor);
						surface->SetPixel(Point(frame.left + (IsRightToLeft() ? 1 : 0), frame.bottom), (IsRightToLeft() ? darkColor : lightColor));

						if (IsRightToLeft()) surface->SetPixel(Point(frame.right + 1, frame.bottom), lightColor);

						frame.right--;
					}
					else
					{
						if (prev != NIL && prev->IsVisible()) frame.left++;

						surface->Line(Point(frame.left, frame.bottom), Point(frame.right + (IsRightToLeft() ? 2 : 1), frame.bottom), lightColor);

						if (prev != NIL && prev->IsVisible()) frame.left--;

						frame.top--;
					}
				}
			}

			break;
	}

	return Widget::Paint(message);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x330, %rsp            # imm = 0x330
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x220(%rbp)
movq (%rdi), %rax
callq *0x88(%rax)
testb $0x1, %al
jne 0xa4a34
leaq -0x28(%rbp), %rdi
movq %rdi, -0x230(%rbp)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x5a9c0
movq -0x230(%rbp), %rdi
callq 0x59680
movl %eax, -0x224(%rbp)
jmp 0xa4a03
movl -0x224(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xa5654
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5b5b0
jmp 0xa5660
movq -0x220(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa4a9d
leaq -0x48(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x5ca80
movq -0x240(%rbp), %rdi
callq 0x59680
movl %eax, -0x234(%rbp)
jmp 0xa4a6c
movl -0x234(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xa5654
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x5a410
jmp 0xa5660
movl -0x14(%rbp), %eax
testl %eax, %eax
jne 0xa5642
jmp 0xa4aaa
movq -0x220(%rbp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq -0x220(%rbp), %rdi
movq %rax, -0x50(%rbp)
movq (%rdi), %rax
callq *0x48(%rax)
movq -0x220(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq (%rdi), %rax
callq *0x50(%rax)
movq %rax, -0x70(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x59ff0
movq -0x50(%rbp), %rdi
callq 0x5d470
cwtl
imull $0x13, %eax, %eax
movl $0x60, %ecx
cltd
idivl %ecx
movl %eax, -0x74(%rbp)
movq 0x16399b(%rip), %rdi    # 0x2084a8
callq 0x59f20
movl %eax, %edi
addl $0x40, %edi
movl $0xff, %esi
callq 0x5ce90
movl %eax, -0x268(%rbp)
movq 0x16397a(%rip), %rdi    # 0x2084a8
callq 0x5d920
movl %eax, %edi
addl $0x40, %edi
movl $0xff, %esi
callq 0x5ce90
movl %eax, -0x264(%rbp)
movq 0x163959(%rip), %rdi    # 0x2084a8
callq 0x5b650
movl %eax, %edi
addl $0x40, %edi
movl $0xff, %esi
callq 0x5ce90
movl -0x268(%rbp), %esi
movl -0x264(%rbp), %edx
movl %eax, %ecx
leaq -0x90(%rbp), %rdi
xorl %r8d, %r8d
callq 0x5a6b0
leaq -0x90(%rbp), %rdi
callq 0x59210
movq %rax, -0x80(%rbp)
movq 0x163911(%rip), %rdi    # 0x2084a8
callq 0x59f20
movl %eax, %edi
subl $0x40, %edi
xorl %esi, %esi
callq 0x5aae0
movl %eax, -0x260(%rbp)
movq 0x1638f3(%rip), %rdi    # 0x2084a8
callq 0x5d920
movl %eax, %edi
subl $0x40, %edi
xorl %esi, %esi
callq 0x5aae0
movl %eax, -0x25c(%rbp)
movq 0x1638d5(%rip), %rdi    # 0x2084a8
callq 0x5b650
movl %eax, %edi
subl $0x40, %edi
xorl %esi, %esi
callq 0x5aae0
movl -0x260(%rbp), %esi
movl -0x25c(%rbp), %edx
movl %eax, %ecx
leaq -0xa8(%rbp), %rdi
xorl %r8d, %r8d
callq 0x5a6b0
leaq -0xa8(%rbp), %rdi
callq 0x59210
movq %rax, -0x98(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x258(%rbp)
movq 0x16437a(%rip), %rax    # 0x208fa0
movl (%rax), %eax
movl %eax, -0x24c(%rbp)
leaq -0xb0(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x59260
movq -0x258(%rbp), %rdi
movl -0x24c(%rbp), %ecx
leaq -0x60(%rbp), %rsi
movq 0x163852(%rip), %rdx    # 0x2084a8
leaq -0xb0(%rbp), %r8
callq 0x5c110
movq -0x50(%rbp), %rax
movq %rax, -0x248(%rbp)
movl -0x74(%rbp), %edx
leaq -0xd8(%rbp), %rdi
xorl %esi, %esi
callq 0x5c2c0
leaq -0x60(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x5be80
movq %rax, -0xd0(%rbp)
movq %rdx, -0xc8(%rbp)
movl -0x74(%rbp), %edx
leaq -0xe0(%rbp), %rdi
xorl %esi, %esi
callq 0x59260
leaq -0xd0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x5c040
movq -0x248(%rbp), %rdi
movq %rax, -0xc0(%rbp)
movq %rdx, -0xb8(%rbp)
leaq -0xc0(%rbp), %rsi
xorl %edx, %edx
callq 0x5c050
movl -0x60(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x5c(%rbp), %eax
addl -0x74(%rbp), %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0xe4(%rbp)
movq -0x220(%rbp), %rdi
movl -0xe4(%rbp), %eax
movl %eax, -0x26c(%rbp)
callq 0x5b470
movl %eax, %ecx
movl -0x26c(%rbp), %eax
cmpl %ecx, %eax
jge 0xa5640
movq -0x220(%rbp), %rdi
movl -0xe4(%rbp), %esi
callq 0x5c230
movq %rax, -0xf0(%rbp)
cmpl $0x0, -0xe4(%rbp)
jle 0xa4d64
movq -0x220(%rbp), %rdi
movl -0xe4(%rbp), %esi
subl $0x1, %esi
callq 0x5c230
movq %rax, -0x278(%rbp)
jmp 0xa4d6f
xorl %eax, %eax
movq %rax, -0x278(%rbp)
jmp 0xa4d6f
movq -0x220(%rbp), %rax
movq -0x278(%rbp), %rcx
movq %rcx, -0xf8(%rbp)
addq $0x5c0, %rax            # imm = 0x5C0
movq %rax, -0x280(%rbp)
movq -0xf0(%rbp), %rdi
callq 0x5d050
movq -0x280(%rbp), %rdi
movl %eax, %esi
callq 0xa63c0
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rdi
xorl %esi, %esi
callq 0x5c730
testb $0x1, %al
jne 0xa4dc6
jmp 0xa4dd7
leaq -0x108(%rbp), %rdi
callq 0x59230
jmp 0xa4e69
movq -0x100(%rbp), %rdi
callq 0x5ce60
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, -0x288(%rbp)
movq -0x100(%rbp), %rdi
callq 0x5ce60
movsd -0x288(%rbp), %xmm0
cvtsi2sdl 0x4(%rax), %xmm1
movsd 0xe52b8(%rip), %xmm2    # 0x18a0c8
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %esi
leaq -0x118(%rbp), %rdi
movl $0xf, %edx
callq 0x59260
movq -0x50(%rbp), %rdi
callq 0x5d470
cwtl
cvtsi2sd %eax, %xmm0
leaq -0x118(%rbp), %rdi
callq 0x5a7b0
movq %rax, -0x110(%rbp)
leaq -0x110(%rbp), %rdi
movsd 0xe2663(%rip), %xmm0    # 0x1874c0
callq 0x5c6b0
movq %rax, -0x108(%rbp)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
movl %eax, -0x290(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0xf8(%rax)
movl %eax, %ecx
movl -0x290(%rbp), %eax
addl %ecx, %eax
addl -0x108(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x28c(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0xa8(%rax)
movq %rax, %rdi
xorl %esi, %esi
callq 0x5b110
movb %al, %sil
movl -0x28c(%rbp), %eax
xorl %ecx, %ecx
movl $0x6, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa4ef0
jmp 0xa4f04
movl -0x60(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x60(%rbp)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0xa4f0d
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
cmpq $0x0, -0xf8(%rbp)
je 0xa4f36
movq -0xf8(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa4f2d
jmp 0xa4f36
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x298(%rbp)
leaq -0x130(%rbp), %rdi
movl $0x1, %edx
movl %edx, %esi
callq 0x59260
leaq -0x60(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x5ab30
movq -0x298(%rbp), %rdi
movq %rax, -0x128(%rbp)
movq %rdx, -0x120(%rbp)
leaq -0x128(%rbp), %rsi
xorl %edx, %edx
callq 0x5c050
movq -0x220(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xa4f9d
jmp 0xa4faf
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
cmpq $0x0, -0xf8(%rbp)
je 0xa5096
movq -0xf8(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa4fd6
jmp 0xa5096
movq -0x50(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movl -0x60(%rbp), %esi
movl -0x5c(%rbp), %edx
addl $0x1, %edx
leaq -0x138(%rbp), %rdi
callq 0x5c2c0
movl -0x60(%rbp), %esi
movl -0x54(%rbp), %edx
leaq -0x140(%rbp), %rdi
callq 0x5c2c0
movq -0x2a0(%rbp), %rdi
leaq -0x138(%rbp), %rsi
leaq -0x140(%rbp), %rdx
movq 0x163484(%rip), %rcx    # 0x2084a8
callq 0x5cce0
movq -0x220(%rbp), %rdi
movl -0x60(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x60(%rbp)
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xa5048
jmp 0xa5094
movq -0x50(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movl -0x60(%rbp), %esi
addl $0x1, %esi
movl -0x5c(%rbp), %edx
leaq -0x148(%rbp), %rdi
callq 0x5c2c0
movq -0x80(%rbp), %rsi
leaq -0x158(%rbp), %rdi
xorl %edx, %edx
callq 0x59be0
movq -0x2a8(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x158(%rbp), %rdx
callq 0x59140
jmp 0xa50cd
movq -0x50(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movl -0x60(%rbp), %esi
movl -0x5c(%rbp), %edx
leaq -0x160(%rbp), %rdi
callq 0x5c2c0
movq -0x2b0(%rbp), %rdi
leaq -0x160(%rbp), %rsi
movq 0x1633e0(%rip), %rdx    # 0x2084a8
callq 0x59140
movq -0x50(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movl -0x58(%rbp), %esi
movl -0x5c(%rbp), %edx
leaq -0x168(%rbp), %rdi
callq 0x5c2c0
movq -0x2b8(%rbp), %rdi
leaq -0x168(%rbp), %rsi
movq 0x1633a9(%rip), %rdx    # 0x2084a8
callq 0x59140
movq -0x220(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xa511a
jmp 0xa512c
movl -0x60(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x60(%rbp)
movl -0x58(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x58(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa5142
jmp 0xa514b
movl -0x54(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x54(%rbp)
movq -0x100(%rbp), %rdi
xorl %esi, %esi
callq 0x5a830
testb $0x1, %al
jne 0xa5162
jmp 0xa522d
movq -0x50(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x2c0(%rbp)
leaq -0x180(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5c2c0
movq -0x100(%rbp), %rdi
callq 0x5ce60
movq %rax, %rdx
leaq -0x178(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x59ff0
movl -0x60(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x2cc(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
movl -0x2cc(%rbp), %esi
movb %al, %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
addl %eax, %esi
movl -0x5c(%rbp), %edx
addl $0x2, %edx
leaq -0x198(%rbp), %rdi
callq 0x5c2c0
leaq -0x190(%rbp), %rdi
leaq -0x198(%rbp), %rsi
leaq -0x108(%rbp), %rdx
callq 0x59ff0
movq -0x2c8(%rbp), %rdi
movq -0x2c0(%rbp), %rsi
leaq -0x178(%rbp), %rdx
leaq -0x190(%rbp), %rcx
callq 0x59dd0
movq -0x50(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0xa8(%rax)
movq %rax, -0x2d8(%rbp)
movl -0x60(%rbp), %eax
addl -0x108(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x2f4(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
movb %al, %sil
movl -0x2f4(%rbp), %eax
xorl %ecx, %ecx
movl $0x1, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
addl %ecx, %eax
movl %eax, -0x2ec(%rbp)
movslq -0x5c(%rbp), %rax
movq %rax, -0x2e8(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x591a0
movl %eax, -0x2f0(%rbp)
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0xe8(%rax)
movq %rax, %rdi
movq 0x163ae4(%rip), %rsi    # 0x208da8
callq 0x5bde0
movl %eax, %ecx
movl -0x2f0(%rbp), %eax
subl %ecx, %eax
cvtsi2sd %eax, %xmm0
movsd 0xe2099(%rip), %xmm1    # 0x187378
divsd %xmm1, %xmm0
callq 0x5b240
movl -0x2ec(%rbp), %esi
movq %rax, %rcx
movq -0x2e8(%rbp), %rax
addq %rcx, %rax
subq $0x1, %rax
movl %eax, %edx
leaq -0x1b0(%rbp), %rdi
callq 0x5c2c0
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0xf8(%rax)
movl %eax, %esi
addl -0x108(%rbp), %esi
movl -0x74(%rbp), %edx
subl $0x2, %edx
leaq -0x1b8(%rbp), %rdi
callq 0x59260
leaq -0x1a8(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
leaq -0x1b8(%rbp), %rdx
callq 0x59ff0
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0xe8(%rax)
movq -0x2e0(%rbp), %rdi
movq -0x2d8(%rbp), %rsi
movq %rax, %rcx
leaq -0x1a8(%rbp), %rdx
xorl %r8d, %r8d
callq 0x5c3f0
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa539a
jmp 0xa553d
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x308(%rbp)
movl -0x60(%rbp), %esi
addl $0x1, %esi
movl -0x54(%rbp), %edx
leaq -0x1c0(%rbp), %rdi
callq 0x5c2c0
movq -0x220(%rbp), %rdi
movl -0x58(%rbp), %eax
movl %eax, -0x30c(%rbp)
movq (%rdi), %rax
callq *0x160(%rax)
movl -0x30c(%rbp), %esi
movb %al, %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
addl %eax, %esi
movl -0x54(%rbp), %edx
leaq -0x1c8(%rbp), %rdi
callq 0x5c2c0
movq -0x308(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
movq 0x16308a(%rip), %rcx    # 0x2084a8
callq 0x5cce0
movq -0x220(%rbp), %rdi
movq -0x50(%rbp), %rax
movq %rax, -0x300(%rbp)
movl -0x60(%rbp), %eax
movl %eax, -0x2f8(%rbp)
movq (%rdi), %rax
callq *0x160(%rax)
movl -0x2f8(%rbp), %esi
movb %al, %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
addl %eax, %esi
movl -0x54(%rbp), %edx
leaq -0x1d0(%rbp), %rdi
callq 0x5c2c0
movq -0x220(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xa5483
jmp 0xa5493
movq -0x98(%rbp), %rax
movq %rax, -0x318(%rbp)
jmp 0xa549e
movq -0x80(%rbp), %rax
movq %rax, -0x318(%rbp)
movq -0x318(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
xorl %edx, %edx
callq 0x59be0
movq -0x300(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
callq 0x59140
movq -0x220(%rbp), %rdi
movq (%rdi), %rax
callq *0x160(%rax)
testb $0x1, %al
jne 0xa54e3
jmp 0xa552f
movq -0x50(%rbp), %rax
movq %rax, -0x320(%rbp)
movl -0x58(%rbp), %esi
addl $0x1, %esi
movl -0x54(%rbp), %edx
leaq -0x1e8(%rbp), %rdi
callq 0x5c2c0
movq -0x80(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
xorl %edx, %edx
callq 0x59be0
movq -0x320(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x59140
movl -0x58(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0xa562a
cmpq $0x0, -0xf8(%rbp)
je 0xa5566
movq -0xf8(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa555d
jmp 0xa5566
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x328(%rbp)
movl -0x60(%rbp), %esi
movl -0x54(%rbp), %edx
leaq -0x200(%rbp), %rdi
callq 0x5c2c0
movq -0x220(%rbp), %rdi
movl -0x58(%rbp), %eax
movl %eax, -0x32c(%rbp)
movq (%rdi), %rax
callq *0x160(%rax)
movl -0x32c(%rbp), %esi
movb %al, %dl
movl $0x1, %eax
movl $0x2, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
addl %eax, %esi
movl -0x54(%rbp), %edx
leaq -0x208(%rbp), %rdi
callq 0x5c2c0
movq -0x80(%rbp), %rsi
leaq -0x218(%rbp), %rdi
xorl %edx, %edx
callq 0x59be0
movq -0x328(%rbp), %rdi
leaq -0x200(%rbp), %rsi
leaq -0x208(%rbp), %rdx
leaq -0x218(%rbp), %rcx
callq 0x5cce0
cmpq $0x0, -0xf8(%rbp)
je 0xa5621
movq -0xf8(%rbp), %rdi
movq (%rdi), %rax
callq *0x90(%rax)
testb $0x1, %al
jne 0xa5618
jmp 0xa5621
movl -0x60(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xa562c
movl -0xe4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe4(%rbp)
jmp 0xa4cfc
jmp 0xa5642
movq -0x220(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x5acb0
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x330, %rsp            # imm = 0x330
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x5b6b0
nopl (%rax)