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

	Surface	*surface = GetDrawSurface();
	Rect	 frame	 = Rect(GetRealPosition(), GetRealSize());
	Rect	 bmpRect = Rect(GetRealPosition() + Point(2, 2) * surface->GetSurfaceDPI() / 96.0 - Point(0, 1), Size(12, 12) * surface->GetSurfaceDPI() / 96.0);

	surface->StartPaint(frame);

	switch (message)
	{
		case SP_PAINT:
		case SP_MOUSEOUT:
			if (text == NIL && bitmap == NIL)
			{
				Point	 p1 = Point(frame.left - 1, frame.top + 1);
				Point	 p2 = Point(frame.right + 1, frame.top + 1);

				surface->Bar(p1, p2, OR_HORZ);
			}
			else if (text != NIL || bitmap != NIL)
			{
				Rect	 textRect = frame + Point(18 * surface->GetSurfaceDPI() / 96.0, Math::Ceil(Float(frame.GetHeight() - scaledTextSize.cy) / 2) - 2) - Size(4 + 18 * surface->GetSurfaceDPI() / 96.0, 0);
				Font	 nFont	  = font;

				if (!IsActive()) nFont.SetColor(Setup::InactiveTextColor);

				surface->Box(frame, Setup::BackgroundColor, Rect::Filled);
				surface->SetText(text, textRect, nFont);

				if (bitmap != NIL && bVar == NIL && iVar == NIL)
				{
					if (IsActive())	surface->BlitFromBitmap(bitmap, Rect(Point(0, 0), bitmap.GetSize()), bmpRect);
					else		surface->BlitFromBitmap(graymap, Rect(Point(0, 0), graymap.GetSize()), bmpRect);
				}

				if (shortcut != NIL)
				{
					textRect.left = textRect.right - Math::Round(shortcutOffset * surface->GetSurfaceDPI() / 96.0);

					surface->SetText(shortcut->ToString(), textRect, nFont);
				}

				if (popup != NIL)
				{
					Int	 size = Math::Round(3 * surface->GetSurfaceDPI() / 96.0);

					Point	 lineStart = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0));
					Point	 lineEnd   = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0) + size * 2 - 1);

					for (Int i = 0; i < size; i++) surface->Line(lineStart + Point(i, i), lineEnd + Point(i, -i), Setup::TextColor);
				}
			}

			break;
		case SP_MOUSEIN:
			if (text != NIL || bitmap != NIL)
			{
				Rect	 textRect = frame + Point(18 * surface->GetSurfaceDPI() / 96.0, Math::Ceil(Float(frame.GetHeight() - scaledTextSize.cy) / 2) - 2) - Size(4 + 18 * surface->GetSurfaceDPI() / 96.0, 0);
				Font	 nFont	  = font;

				nFont.SetColor(Setup::GradientTextColor);

				surface->Gradient(frame, Setup::GradientStartColor, Setup::GradientEndColor, OR_HORZ);
				surface->SetText(text, textRect, nFont);

				if (bitmap != NIL && bVar == NIL && iVar == NIL)
				{
					surface->BlitFromBitmap(bitmap, Rect(Point(0, 0), bitmap.GetSize()), bmpRect);
				}

				if (shortcut != NIL)
				{
					textRect.left = textRect.right - Math::Round(shortcutOffset * surface->GetSurfaceDPI() / 96.0);

					surface->SetText(shortcut->ToString(), textRect, nFont);
				}

				if (popup != NIL)
				{
					Int	 size = Math::Round(3 * surface->GetSurfaceDPI() / 96.0);

					Point	 lineStart = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0));
					Point	 lineEnd   = Point(frame.right - 4 - size, frame.top + 1 + Math::Round(4 * surface->GetSurfaceDPI() / 96.0) + size * 2 - 1);

					for (Int i = 0; i < size; i++) surface->Line(lineStart + Point(i, i), lineEnd + Point(i, -i), Setup::GradientTextColor);
				}
			}

			break;
	}

	surface->EndPaint();

	return Success();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movl %esi, %ebp
movq %rdi, %r15
movq (%rdi), %rax
callq *0x88(%rax)
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x8d3f5
movq (%r15), %rax
movq %r15, %rdi
callq *0x90(%rax)
xorl %ecx, %ecx
testb %al, %al
je 0x8d3f5
movq (%r15), %rax
movq %r15, %rdi
callq *0x40(%rax)
movq %rax, %r12
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movq %rax, %r13
movq %rax, %rbx
shrq $0x20, %rbx
movq (%r15), %rax
movq %r15, %rdi
callq *0x50(%rax)
leal (%rax,%r13), %ecx
shrq $0x20, %rax
leaq 0x8(%rsp), %rdx
movl %r13d, (%rdx)
movl %ebx, 0x4(%rdx)
movl %ecx, 0x8(%rdx)
addl %ebx, %eax
movl %eax, 0xc(%rdx)
movq (%r15), %rax
movq %r15, %rdi
callq *0x48(%rax)
movq %rax, %r13
movq %rax, %r14
shrq $0x20, %r14
movq %r12, %rdi
callq 0x58930
movl %eax, %ebx
decl %r14d
movq %r12, %rdi
callq 0x58930
pxor %xmm0, %xmm0
pinsrw $0x1, %ebx, %xmm0
pinsrw $0x3, %eax, %xmm0
psrad $0x10, %xmm0
cvtdq2pd %xmm0, %xmm0
xorpd %xmm1, %xmm1
mulpd 0x6a09a(%rip), %xmm0    # 0xf6b70
movapd %xmm0, %xmm2
cmpltpd %xmm1, %xmm2
movapd 0x66a49(%rip), %xmm3    # 0xf3530
movapd 0x66a51(%rip), %xmm4    # 0xf3540
movapd %xmm4, %xmm5
andpd %xmm2, %xmm5
andnpd %xmm3, %xmm2
orpd %xmm5, %xmm2
addpd %xmm0, %xmm2
cvttsd2si %xmm2, %rax
movq %rax, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
cvttsd2si %xmm2, %rax
movq %rax, %xmm2
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
cvtdq2pd %xmm0, %xmm0
divpd 0x669f5(%rip), %xmm0    # 0xf3520
movapd %xmm0, %xmm2
cmpltpd %xmm1, %xmm2
andpd %xmm2, %xmm4
andnpd %xmm3, %xmm2
orpd %xmm4, %xmm2
addpd %xmm0, %xmm2
cvttsd2si %xmm2, %rax
movq %rax, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
cvttsd2si %xmm2, %rcx
movq %rcx, %xmm1
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
addl %eax, %r13d
pshufd $0xe8, %xmm0, %xmm0     # xmm0 = xmm0[0,2,2,3]
movl %r13d, 0x68(%rsp)
movd %r13d, %xmm2
movd %r14d, %xmm3
movq %r12, %r14
punpckldq %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
paddd %xmm0, %xmm3
movq %xmm3, 0x6c(%rsp)
paddd %xmm1, %xmm3
movd %xmm3, 0x74(%rsp)
movq %r12, %rdi
leaq 0x8(%rsp), %rsi
callq 0x55160
cmpl $0x3, %ebp
je 0x8cbb5
cmpl $0x2, %ebp
je 0x8cddf
testl %ebp, %ebp
jne 0x8d3eb
leaq 0xf0(%r15), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x55260
testb %al, %al
je 0x8cc1c
leaq 0x5c0(%r15), %rdi
xorl %esi, %esi
callq 0x57e30
testb %al, %al
je 0x8cc1c
movq 0x8(%rsp), %xmm0
paddd 0x69446(%rip), %xmm0    # 0xf6030
leaq 0x78(%rsp), %rsi
movq %xmm0, (%rsi)
movl 0x10(%rsp), %eax
incl %eax
leaq 0x30(%rsp), %rdx
movl %eax, (%rdx)
pshufd $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movd %xmm0, 0x4(%rdx)
movq %r14, %rdi
movl $0x1, %ecx
callq 0x58fc0
jmp 0x8d3eb
movq %r12, %rdi
xorl %esi, %esi
callq 0x56bd0
testb %al, %al
jne 0x8cc40
leaq 0x5c0(%r15), %rdi
xorl %esi, %esi
callq 0x563f0
testb %al, %al
je 0x8d3eb
movq %r14, %rdi
callq 0x58930
cwtl
addl %eax, %eax
leal (%rax,%rax,8), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x66a5b(%rip), %xmm0    # 0xf36b8
cvttsd2si %xmm0, %ebx
movl 0xc(%rsp), %eax
movl 0x14(%rsp), %ecx
addl 0x18c(%r15), %eax
subl %eax, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
mulsd 0x66717(%rip), %xmm0    # 0xf3398
callq 0x56cb0
movq %rax, %r13
addl $-0x2, %r13d
movq %r14, 0x18(%rsp)
movl 0x8(%rsp), %r14d
addl %ebx, %r14d
movl 0xc(%rsp), %ebp
addl %r13d, %ebp
addl 0x10(%rsp), %ebx
shlq $0x20, %rbp
addl 0x14(%rsp), %r13d
shlq $0x20, %r13
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
addl %eax, %eax
leal (%rax,%rax,8), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x669e7(%rip), %xmm0    # 0xf36b8
addsd 0x666c7(%rip), %xmm0    # 0xf33a0
cvttsd2si %xmm0, %eax
subl %eax, %ebx
orq %rbp, %r14
orq %r13, %rbx
movq %r14, 0x20(%rsp)
movq 0x18(%rsp), %r14
movq %rbx, 0x28(%rsp)
leaq 0x140(%r15), %rsi
leaq 0x78(%rsp), %rdi
callq 0x55b70
movq (%r15), %rax
movq %r15, %rdi
callq *0x98(%rax)
testb %al, %al
jne 0x8cd26
movq 0xdec34(%rip), %rsi     # 0x16b950
leaq 0x78(%rsp), %rdi
callq 0x58650
movq 0xdf27b(%rip), %rax     # 0x16bfa8
movl (%rax), %ecx
leaq 0x30(%rsp), %r8
movq $0x0, (%r8)
movq 0xde78e(%rip), %rdx     # 0x16b4d0
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x57930
leaq 0x20(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq %r14, %rdi
movq %r12, %rsi
xorl %r8d, %r8d
callq 0x57b80
leaq 0x5c0(%r15), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x563f0
cmpq $0x0, 0x5d8(%r15)
sete %cl
andb %cl, %al
cmpb $0x1, %al
jne 0x8d1c2
cmpq $0x0, 0x5e0(%r15)
jne 0x8d1c2
movq (%r15), %rax
movq %r15, %rdi
callq *0x98(%rax)
testb %al, %al
je 0x8d190
movq %r12, %rdi
callq 0x58410
leaq 0x30(%rsp), %rdx
movq $0x0, (%rdx)
movq (%rax), %rax
movq %rax, 0x8(%rdx)
leaq 0x68(%rsp), %rcx
movq %r14, %rdi
movq %r12, %rsi
callq 0x55ba0
jmp 0x8d1c2
leaq 0xf0(%r15), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x56bd0
testb %al, %al
jne 0x8ce0a
leaq 0x5c0(%r15), %rdi
xorl %esi, %esi
callq 0x563f0
testb %al, %al
je 0x8d3eb
movq %r14, %rdi
callq 0x58930
cwtl
addl %eax, %eax
leal (%rax,%rax,8), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x66891(%rip), %xmm0    # 0xf36b8
cvttsd2si %xmm0, %ebx
movl 0xc(%rsp), %eax
movl 0x14(%rsp), %ecx
addl 0x18c(%r15), %eax
subl %eax, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
mulsd 0x6654d(%rip), %xmm0    # 0xf3398
callq 0x56cb0
movq %rax, %r13
addl $-0x2, %r13d
movq %r14, 0x18(%rsp)
movl 0x8(%rsp), %r14d
addl %ebx, %r14d
movl 0xc(%rsp), %ebp
addl %r13d, %ebp
addl 0x10(%rsp), %ebx
shlq $0x20, %rbp
addl 0x14(%rsp), %r13d
shlq $0x20, %r13
movq 0x18(%rsp), %rdi
callq 0x58930
cwtl
addl %eax, %eax
leal (%rax,%rax,8), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6681d(%rip), %xmm0    # 0xf36b8
addsd 0x664fd(%rip), %xmm0    # 0xf33a0
cvttsd2si %xmm0, %eax
subl %eax, %ebx
orq %rbp, %r14
orq %r13, %rbx
movq %r14, 0x20(%rsp)
movq 0x18(%rsp), %r14
movq %rbx, 0x28(%rsp)
leaq 0x140(%r15), %rsi
leaq 0x78(%rsp), %rbx
movq %rbx, %rdi
callq 0x55b70
movq 0xdec57(%rip), %rsi     # 0x16bb30
movq %rbx, %rdi
callq 0x58650
movq 0xdf0d0(%rip), %rdx     # 0x16bfb8
movq 0xdf031(%rip), %rcx     # 0x16bf20
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movl $0x1, %r8d
callq 0x58750
leaq 0x20(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq %r14, %rdi
movq %r12, %rsi
xorl %r8d, %r8d
callq 0x57b80
leaq 0x5c0(%r15), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x563f0
cmpq $0x0, 0x5d8(%r15)
sete %cl
andb %cl, %al
cmpb $0x1, %al
jne 0x8cf71
cmpq $0x0, 0x5e0(%r15)
jne 0x8cf71
movq %r12, %rdi
callq 0x58410
leaq 0x30(%rsp), %rdx
movq $0x0, (%rdx)
movq (%rax), %rax
movq %rax, 0x8(%rdx)
leaq 0x68(%rsp), %rcx
movq %r14, %rdi
movq %r12, %rsi
callq 0x55ba0
cmpq $0x0, 0x5d0(%r15)
je 0x8cfff
movl 0x28(%rsp), %ebx
movl 0x610(%r15), %ebp
movq %r14, %rdi
callq 0x58930
cwtl
imull %eax, %ebp
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
divsd 0x66713(%rip), %xmm0    # 0xf36b8
pxor %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x66837(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
subl %eax, %ebx
movl %ebx, 0x20(%rsp)
movq 0x5d0(%r15), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *0x20(%rax)
leaq 0x30(%rsp), %rsi
leaq 0x20(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq %r14, %rdi
xorl %r8d, %r8d
callq 0x57b80
leaq 0x30(%rsp), %rdi
callq 0x59200
cmpq $0x0, 0x5b8(%r15)
je 0x8d3dc
movq 0x18(%rsp), %r14
movq %r14, %rdi
callq 0x58930
cwtl
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6668b(%rip), %xmm0    # 0xf36b8
pxor %xmm1, %xmm1
xorl %r13d, %r13d
movsd %xmm0, 0x58(%rsp)
ucomisd %xmm0, %xmm1
seta %r12b
movl 0xc(%rsp), %eax
movq %rax, 0x50(%rsp)
movl 0x10(%rsp), %ebx
movq %r14, %rdi
callq 0x58930
movq %r14, %rdi
cwtl
shll $0x2, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6664b(%rip), %xmm0    # 0xf36b8
xorl %r15d, %r15d
movsd %xmm0, 0x48(%rsp)
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta 0x7(%rsp)
movl 0xc(%rsp), %ebp
movl 0x10(%rsp), %r14d
callq 0x58930
movb %r12b, %r13b
leaq 0x66755(%rip), %rdx     # 0xf37f0
movsd 0x58(%rsp), %xmm0
addsd (%rdx,%r13,8), %xmm0
cvttsd2si %xmm0, %rcx
cwtl
shll $0x2, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x665f9(%rip), %xmm0    # 0xf36b8
xorpd %xmm1, %xmm1
xorl %esi, %esi
ucomisd %xmm0, %xmm1
seta %dil
testl %ecx, %ecx
jle 0x8d3dc
movb 0x7(%rsp), %al
movb %al, %r15b
movsd 0x48(%rsp), %xmm1
addsd (%rdx,%r15,8), %xmm1
cvttsd2si %xmm1, %rax
incl %ebp
movb %dil, %sil
addsd (%rdx,%rsi,8), %xmm0
cvttsd2si %xmm0, %rdx
leaq (%rcx,%rcx), %rsi
movabsq $-0x100000000, %rdi     # imm = 0xFFFFFFFF00000000
movl %ecx, %r15d
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
subl %ecx, %r14d
addl $-0x4, %r14d
addl %edx, %ebp
addl %esi, %ebp
shlq $0x20, %rbp
addq %rdi, %rbp
subl %ecx, %ebx
addl $-0x4, %ebx
movq 0x50(%rsp), %rcx
leal (%rcx,%rax), %r12d
incl %r12d
leaq 0x60(%rsp), %r13
movl %r14d, %eax
addq %rbp, %rax
movq %r12, %rcx
shlq $0x20, %rcx
movl %ebx, %edx
orq %rcx, %rdx
movq %rdx, 0x30(%rsp)
movq %rax, 0x60(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %r13, %rdx
movq 0xde9c4(%rip), %rcx     # 0x16bb30
callq 0x58300
incl %r14d
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
addq %rax, %rbp
incl %ebx
incl %r12d
decq %r15
jne 0x8d13c
jmp 0x8d3dc
leaq 0x5c8(%r15), %r12
movq %r12, %rdi
callq 0x58410
leaq 0x30(%rsp), %rdx
movq $0x0, (%rdx)
movq (%rax), %rax
movq %rax, 0x8(%rdx)
leaq 0x68(%rsp), %rcx
movq %r14, %rdi
movq %r12, %rsi
callq 0x55ba0
cmpq $0x0, 0x5d0(%r15)
je 0x8d250
movl 0x28(%rsp), %ebx
movl 0x610(%r15), %ebp
movq %r14, %rdi
callq 0x58930
cwtl
imull %eax, %ebp
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
divsd 0x664c2(%rip), %xmm0    # 0xf36b8
pxor %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
seta %al
leaq 0x665e6(%rip), %rcx     # 0xf37f0
addsd (%rcx,%rax,8), %xmm0
cvttsd2si %xmm0, %rax
subl %eax, %ebx
movl %ebx, 0x20(%rsp)
movq 0x5d0(%r15), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *0x20(%rax)
leaq 0x30(%rsp), %rsi
leaq 0x20(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq %r14, %rdi
xorl %r8d, %r8d
callq 0x57b80
leaq 0x30(%rsp), %rdi
callq 0x59200
cmpq $0x0, 0x5b8(%r15)
je 0x8d3dc
movq 0x18(%rsp), %r14
movq %r14, %rdi
callq 0x58930
cwtl
leal (%rax,%rax,2), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x6643a(%rip), %xmm0    # 0xf36b8
pxor %xmm1, %xmm1
xorl %r13d, %r13d
movsd %xmm0, 0x58(%rsp)
ucomisd %xmm0, %xmm1
seta %r12b
movl 0xc(%rsp), %eax
movq %rax, 0x50(%rsp)
movl 0x10(%rsp), %ebx
movq %r14, %rdi
callq 0x58930
movq %r14, %rdi
cwtl
shll $0x2, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x663fa(%rip), %xmm0    # 0xf36b8
xorl %r15d, %r15d
movsd %xmm0, 0x48(%rsp)
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
seta 0x7(%rsp)
movl 0xc(%rsp), %ebp
movl 0x10(%rsp), %r14d
callq 0x58930
movb %r12b, %r13b
leaq 0x66504(%rip), %rdx     # 0xf37f0
movsd 0x58(%rsp), %xmm0
addsd (%rdx,%r13,8), %xmm0
cvttsd2si %xmm0, %rcx
cwtl
shll $0x2, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x663a8(%rip), %xmm0    # 0xf36b8
xorpd %xmm1, %xmm1
xorl %esi, %esi
ucomisd %xmm0, %xmm1
seta %dil
testl %ecx, %ecx
jle 0x8d3dc
movb 0x7(%rsp), %al
movb %al, %r15b
movsd 0x48(%rsp), %xmm1
addsd (%rdx,%r15,8), %xmm1
cvttsd2si %xmm1, %rax
incl %ebp
movb %dil, %sil
addsd (%rdx,%rsi,8), %xmm0
cvttsd2si %xmm0, %rdx
leaq (%rcx,%rcx), %rsi
movabsq $-0x100000000, %rdi     # imm = 0xFFFFFFFF00000000
movl %ecx, %r15d
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
subl %ecx, %r14d
addl $-0x4, %r14d
addl %edx, %ebp
addl %esi, %ebp
shlq $0x20, %rbp
addq %rdi, %rbp
subl %ecx, %ebx
addl $-0x4, %ebx
movq 0x50(%rsp), %rcx
leal (%rcx,%rax), %r12d
incl %r12d
leaq 0x60(%rsp), %r13
movl %r14d, %eax
addq %rbp, %rax
movq %r12, %rcx
shlq $0x20, %rcx
movl %ebx, %edx
orq %rcx, %rdx
movq %rdx, 0x30(%rsp)
movq %rax, 0x60(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %r13, %rdx
movq 0xde62b(%rip), %rcx     # 0x16b9e8
callq 0x58300
incl %r14d
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
addq %rax, %rbp
incl %ebx
incl %r12d
decq %r15
jne 0x8d38d
leaq 0x78(%rsp), %rdi
callq 0x56720
movq 0x18(%rsp), %r14
movq %r14, %rdi
callq 0x58780
xorl %ecx, %ecx
movl %ecx, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8d438
jmp 0x8d438
jmp 0x8d41b
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x59200
jmp 0x8d43b
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
jmp 0x8d438
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x56720
movq %rbx, %rdi
callq 0x57090
nop