// File: /workspace/github_cpp_makefile_star2_O2/Ciaxur[P]yagb-emu/include/imgui/imgui_internal.h
// Function: ImGuiContext::ImGuiContext(ImFontAtlas*)
ImGuiContext(ImFontAtlas* shared_font_atlas) : BackgroundDrawList(&DrawListSharedData), ForegroundDrawList(&DrawListSharedData)
    {
        Initialized = false;
        FontAtlasOwnedByContext = shared_font_atlas ? false : true;
        Font = NULL;
        FontSize = FontBaseSize = 0.0f;
        IO.Fonts = shared_font_atlas ? shared_font_atlas : IM_NEW(ImFontAtlas)();
        Time = 0.0f;
        FrameCount = 0;
        FrameCountEnded = FrameCountRendered = -1;
        WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild = false;
        GcCompactAll = false;
        TestEngineHookItems = false;
        TestEngineHookIdInfo = 0;
        TestEngine = NULL;

        WindowsActiveCount = 0;
        CurrentWindow = NULL;
        HoveredWindow = NULL;
        HoveredRootWindow = NULL;
        HoveredWindowUnderMovingWindow = NULL;
        MovingWindow = NULL;
        WheelingWindow = NULL;
        WheelingWindowTimer = 0.0f;

        HoveredId = HoveredIdPreviousFrame = 0;
        HoveredIdAllowOverlap = false;
        HoveredIdUsingMouseWheel = HoveredIdPreviousFrameUsingMouseWheel = false;
        HoveredIdDisabled = false;
        HoveredIdTimer = HoveredIdNotActiveTimer = 0.0f;
        ActiveId = 0;
        ActiveIdIsAlive = 0;
        ActiveIdTimer = 0.0f;
        ActiveIdIsJustActivated = false;
        ActiveIdAllowOverlap = false;
        ActiveIdNoClearOnFocusLoss = false;
        ActiveIdHasBeenPressedBefore = false;
        ActiveIdHasBeenEditedBefore = false;
        ActiveIdHasBeenEditedThisFrame = false;
        ActiveIdUsingMouseWheel = false;
        ActiveIdUsingNavDirMask = 0x00;
        ActiveIdUsingNavInputMask = 0x00;
        ActiveIdUsingKeyInputMask = 0x00;
        ActiveIdClickOffset = ImVec2(-1, -1);
        ActiveIdWindow = NULL;
        ActiveIdSource = ImGuiInputSource_None;
        ActiveIdMouseButton = 0;
        ActiveIdPreviousFrame = 0;
        ActiveIdPreviousFrameIsAlive = false;
        ActiveIdPreviousFrameHasBeenEditedBefore = false;
        ActiveIdPreviousFrameWindow = NULL;
        LastActiveId = 0;
        LastActiveIdTimer = 0.0f;

        NavWindow = NULL;
        NavId = NavFocusScopeId = NavActivateId = NavActivateDownId = NavActivatePressedId = NavInputId = 0;
        NavJustTabbedId = NavJustMovedToId = NavJustMovedToFocusScopeId = NavNextActivateId = 0;
        NavJustMovedToKeyMods = ImGuiKeyModFlags_None;
        NavInputSource = ImGuiInputSource_None;
        NavScoringRect = ImRect();
        NavScoringCount = 0;
        NavLayer = ImGuiNavLayer_Main;
        NavIdTabCounter = INT_MAX;
        NavIdIsAlive = false;
        NavMousePosDirty = false;
        NavDisableHighlight = true;
        NavDisableMouseHover = false;
        NavAnyRequest = false;
        NavInitRequest = false;
        NavInitRequestFromMove = false;
        NavInitResultId = 0;
        NavMoveRequest = false;
        NavMoveRequestFlags = ImGuiNavMoveFlags_None;
        NavMoveRequestForward = ImGuiNavForward_None;
        NavMoveRequestKeyMods = ImGuiKeyModFlags_None;
        NavMoveDir = NavMoveDirLast = NavMoveClipDir = ImGuiDir_None;
        NavWrapRequestWindow = NULL;
        NavWrapRequestFlags = ImGuiNavMoveFlags_None;

        NavWindowingTarget = NavWindowingTargetAnim = NavWindowingListWindow = NULL;
        NavWindowingTimer = NavWindowingHighlightAlpha = 0.0f;
        NavWindowingToggleLayer = false;

        FocusRequestCurrWindow = FocusRequestNextWindow = NULL;
        FocusRequestCurrCounterRegular = FocusRequestCurrCounterTabStop = INT_MAX;
        FocusRequestNextCounterRegular = FocusRequestNextCounterTabStop = INT_MAX;
        FocusTabPressed = false;

        DimBgRatio = 0.0f;
        BackgroundDrawList._OwnerName = "##Background"; // Give it a name for debugging
        ForegroundDrawList._OwnerName = "##Foreground"; // Give it a name for debugging
        MouseCursor = ImGuiMouseCursor_Arrow;

        DragDropActive = DragDropWithinSource = DragDropWithinTarget = false;
        DragDropSourceFlags = ImGuiDragDropFlags_None;
        DragDropSourceFrameCount = -1;
        DragDropMouseButton = -1;
        DragDropTargetId = 0;
        DragDropAcceptFlags = ImGuiDragDropFlags_None;
        DragDropAcceptIdCurrRectSurface = 0.0f;
        DragDropAcceptIdPrev = DragDropAcceptIdCurr = 0;
        DragDropAcceptFrameCount = -1;
        DragDropHoldJustPressedId = 0;
        memset(DragDropPayloadBufLocal, 0, sizeof(DragDropPayloadBufLocal));

        CurrentTable = NULL;
        CurrentTabBar = NULL;

        LastValidMousePos = ImVec2(0.0f, 0.0f);
        TempInputId = 0;
        ColorEditOptions = ImGuiColorEditFlags__OptionsDefault;
        ColorEditLastHue = ColorEditLastSat = 0.0f;
        ColorEditLastColor[0] = ColorEditLastColor[1] = ColorEditLastColor[2] = FLT_MAX;
        SliderCurrentAccum = 0.0f;
        SliderCurrentAccumDirty = false;
        DragCurrentAccumDirty = false;
        DragCurrentAccum = 0.0f;
        DragSpeedDefaultRatio = 1.0f / 100.0f;
        ScrollbarClickDeltaToGrabCenter = 0.0f;
        TooltipOverrideCount = 0;
        TooltipSlowDelay = 0.50f;

        PlatformImePos = PlatformImeLastPos = ImVec2(FLT_MAX, FLT_MAX);
        PlatformLocaleDecimalPoint = '.';

        SettingsLoaded = false;
        SettingsDirtyTimer = 0.0f;

        LogEnabled = false;
        LogType = ImGuiLogType_None;
        LogFile = NULL;
        LogLinePosY = FLT_MAX;
        LogLineFirstItem = false;
        LogDepthRef = 0;
        LogDepthToExpand = LogDepthToExpandDefault = 2;

        DebugItemPickerActive = false;
        DebugItemPickerBreakId = 0;

        memset(FramerateSecPerFrame, 0, sizeof(FramerateSecPerFrame));
        FramerateSecPerFrameIdx = 0;
        FramerateSecPerFrameAccum = 0.0f;
        WantCaptureMouseNextFrame = WantCaptureKeyboardNextFrame = WantTextInputNextFrame = -1;
        memset(TempBuffer, 0, sizeof(TempBuffer));
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rsi, %r12
movq %rdi, %rbx
addq $0x8, %rdi
callq 0x336fe
leaq 0x1560(%rbx), %rdi
callq 0x33338
leaq 0x1988(%rbx), %r14
movq %r14, %rdi
callq 0x61c1e
andq $0x0, 0x1b10(%rbx)
andq $0x0, 0x1b58(%rbx)
leaq 0x1b88(%rbx), %rdi
xorps %xmm0, %xmm0
movups %xmm0, 0x1cc8(%rbx)
movups %xmm0, 0x1cf0(%rbx)
movups %xmm0, 0x1d20(%rbx)
movups %xmm0, 0x1a88(%rbx)
movups %xmm0, 0x1a98(%rbx)
movups %xmm0, 0x1aa8(%rbx)
movups %xmm0, 0x1ab8(%rbx)
movups %xmm0, 0x1ac8(%rbx)
xorl %r13d, %r13d
movl $0x84, %edx
xorl %esi, %esi
callq 0xc270
xorps %xmm0, %xmm0
movups %xmm0, 0x1c10(%rbx)
movups %xmm0, 0x1c20(%rbx)
movups %xmm0, 0x1c30(%rbx)
movups %xmm0, 0x1c40(%rbx)
movups %xmm0, 0x1c50(%rbx)
movups %xmm0, 0x1c60(%rbx)
movups %xmm0, 0x1c70(%rbx)
movups %xmm0, 0x1c80(%rbx)
movl $0x7f7fffff, %eax       # imm = 0x7F7FFFFF
movl %eax, 0x1d38(%rbx)
movabsq $0x7f7fffff7f7fffff, %r15 # imm = 0x7F7FFFFF7F7FFFFF
movq %r15, 0x1d30(%rbx)
movups %xmm0, 0x1d3c(%rbx)
movups %xmm0, 0x1d50(%rbx)
movl %eax, 0x1d68(%rbx)
movq %r15, 0x1d60(%rbx)
movups %xmm0, 0x1d6c(%rbx)
movups %xmm0, 0x1d80(%rbx)
movl %eax, 0x1d98(%rbx)
movq %r15, 0x1d90(%rbx)
movups %xmm0, 0x1d9c(%rbx)
movb %r13b, 0x1e10(%rbx)
movups %xmm0, 0x1e18(%rbx)
movups %xmm0, 0x1e28(%rbx)
movups %xmm0, 0x1e34(%rbx)
movups %xmm0, 0x1e58(%rbx)
movups %xmm0, 0x1e48(%rbx)
leaq 0x1e70(%rbx), %rdi
movl $0xc8, %edx
movq %rdi, -0xd8(%rbp)
xorl %esi, %esi
callq 0xc270
movq %r14, 0x1ea8(%rbx)
leaq 0x1f38(%rbx), %rdi
movl $0xc8, %edx
movq %rdi, -0xd0(%rbp)
xorl %esi, %esi
callq 0xc270
movq %r14, 0x1f70(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x2030(%rbx)
movups %xmm0, 0x2040(%rbx)
movb %r13b, 0x2050(%rbx)
movups %xmm0, 0x2018(%rbx)
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0x2028(%rbx)
andw $0x0, 0x2051(%rbx)
movups %xmm0, 0x2058(%rbx)
movups %xmm0, 0x2088(%rbx)
andl $0x0, 0x20d0(%rbx)
movups %xmm0, 0x20b0(%rbx)
movups %xmm0, 0x20c0(%rbx)
movups %xmm0, 0x2110(%rbx)
movups %xmm0, 0x2120(%rbx)
andl $0x0, 0x2130(%rbx)
leaq 0x2138(%rbx), %r13
leaq 0x2ff8(%rbx), %r14
movups %xmm0, 0x20d8(%rbx)
movups %xmm0, 0x20e8(%rbx)
movups %xmm0, 0x20f8(%rbx)
movl $0xec0, %edx            # imm = 0xEC0
movq %r13, %rdi
xorl %esi, %esi
callq 0xc270
movq %r14, %rdi
callq 0x6b17e
xorps %xmm0, %xmm0
movups %xmm0, 0x3084(%rbx)
movups %xmm0, 0x3148(%rbx)
andw $0x0, 0x3174(%rbx)
xorl %eax, %eax
movb %al, 0x3176(%rbx)
movups %xmm0, 0x30b0(%rbx)
movups %xmm0, 0x30c0(%rbx)
movups %xmm0, 0x30d0(%rbx)
movups %xmm0, 0x30e8(%rbx)
movups %xmm0, 0x30f8(%rbx)
movups %xmm0, 0x3108(%rbx)
movups %xmm0, 0x3118(%rbx)
movups %xmm0, 0x3128(%rbx)
movw $0x101, 0x3177(%rbx)    # imm = 0x101
orq $-0x1, 0x317c(%rbx)
movb %al, (%rbx)
testq %r12, %r12
sete 0x1(%rbx)
movups %xmm0, 0x1978(%rbx)
jne 0x4a606
movl $0x478, %edi            # imm = 0x478
callq 0x3440d
movq %rax, %r12
movq %rax, %rdi
callq 0x65b04
movq %r12, 0xa8(%rbx)
andq $0x0, 0x1a60(%rbx)
movaps 0x521f4(%rip), %xmm0    # 0x9c810
movups %xmm0, 0x1a68(%rbx)
andl $0x0, 0x1a7c(%rbx)
andq $0x0, 0x1a80(%rbx)
andl $0x0, 0x1ad8(%rbx)
andq $0x0, 0x1b44(%rbx)
andq $0x0, 0x1b50(%rbx)
leaq 0x1cc8(%rbx), %rcx
xorl %eax, %eax
movb %al, 0x1a78(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x1ae0(%rbx)
movups %xmm0, 0x1af0(%rbx)
movups %xmm0, 0x1b00(%rbx)
movups %xmm0, 0x1b18(%rbx)
movups %xmm0, 0x1b28(%rbx)
movups %xmm0, 0x1b33(%rbx)
movabsq $-0x407fffff40800000, %rdx # imm = 0xBF800000BF800000
movq %rdx, 0x1b58(%rbx)
movups %xmm0, 0x1b60(%rbx)
andq $0x0, 0x1b6e(%rbx)
movups %xmm0, 0x1b78(%rbx)
movups %xmm0, 0x1cb0(%rbx)
movups %xmm0, 0x1ca0(%rbx)
movups %xmm0, 0x1c90(%rbx)
andq $0x0, 0x1cc0(%rbx)
movups %xmm0, (%rcx)
andq $0x0, 0x1cd8(%rbx)
movl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movl %ecx, 0x1ce0(%rbx)
andw $0x0, 0x1ce4(%rbx)
movb $0x1, 0x1ce6(%rbx)
andl $0x0, 0x1cec(%rbx)
movb %al, 0x1d00(%rbx)
andq $0x0, 0x1d04(%rbx)
andl $0x0, 0x1d0c(%rbx)
andl $0x0, 0x1ce7(%rbx)
orl $-0x1, 0x1d18(%rbx)
orq $-0x1, 0x1d10(%rbx)
andq $0x0, 0x1db0(%rbx)
andl $0x0, 0x1db8(%rbx)
movups %xmm0, 0x1dc0(%rbx)
movups %xmm0, 0x1dd0(%rbx)
movb %al, 0x1de0(%rbx)
movups %xmm0, 0x1de8(%rbx)
movl %ecx, 0x1dfc(%rbx)
movl %ecx, 0x1df8(%rbx)
movabsq $0x7fffffff7fffffff, %rcx # imm = 0x7FFFFFFF7FFFFFFF
movq %rcx, 0x1e00(%rbx)
movb %al, 0x1e08(%rbx)
andl $0x0, 0x1e68(%rbx)
leaq 0x55f13(%rip), %rcx     # 0xa068e
movq %rcx, 0x1eb0(%rbx)
leaq 0x55f12(%rip), %rcx     # 0xa069b
movq %rcx, 0x1f78(%rbx)
andl $0x0, 0x2008(%rbx)
andl $0x0, 0x2000(%rbx)
andl $0x0, 0x2003(%rbx)
orq $-0x1, 0x200c(%rbx)
movups %xmm0, 0x2068(%rbx)
andl $0x0, 0x2078(%rbx)
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movq %rcx, 0x207c(%rbx)
andq $0x0, 0x2108(%rbx)
andq $0x0, 0x2158(%rbx)
andl $0x0, 0x3068(%rbx)
movups %xmm0, 0x2098(%rbx)
andq $0x0, 0x20a8(%rbx)
movl $0xa900000, 0x306c(%rbx) # imm = 0xA900000
andl $0x0, 0x3074(%rbx)
andl $0x0, 0x3070(%rbx)
movl $0x7f7fffff, %ecx       # imm = 0x7F7FFFFF
movl %ecx, 0x3080(%rbx)
movl %ecx, 0x307c(%rbx)
movl %ecx, 0x3078(%rbx)
andl $0x0, 0x3094(%rbx)
andw $0x0, 0x3098(%rbx)
movsd 0x51fed(%rip), %xmm0    # 0x9c820
movups %xmm0, 0x309c(%rbx)
movl $0x3f000000, 0x30ac(%rbx) # imm = 0x3F000000
movq %r15, 0x30d8(%rbx)
movq %r15, 0x30d0(%rbx)
movw $0x2e, 0x30e0(%rbx)
andl $0x0, 0x30e4(%rbx)
movb %al, 0x3138(%rbx)
andl $0x0, 0x313c(%rbx)
andq $0x0, 0x3140(%rbx)
movl %ecx, 0x3158(%rbx)
movb %al, 0x315c(%rbx)
andl $0x0, 0x3160(%rbx)
pushq $0x2
popq %rcx
movl %ecx, 0x3168(%rbx)
movl %ecx, 0x3164(%rbx)
movb %al, 0x316c(%rbx)
andl $0x0, 0x3170(%rbx)
leaq 0x3184(%rbx), %rdi
movl $0x1e8, %edx            # imm = 0x1E8
xorl %esi, %esi
callq 0xc270
orl $-0x1, 0x3374(%rbx)
orq $-0x1, 0x336c(%rbx)
addq $0x3378, %rbx           # imm = 0x3378
movl $0xc01, %edx            # imm = 0xC01
movq %rbx, %rdi
xorl %esi, %esi
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc270
jmp 0x4a8f1
movq %rax, -0x30(%rbp)
leaq 0x30b0(%rbx), %r15
leaq 0x30c0(%rbx), %rax
movq %rax, -0x58(%rbp)
leaq 0x30e8(%rbx), %rax
movq %rax, -0x50(%rbp)
leaq 0x30f8(%rbx), %rax
movq %rax, -0x48(%rbp)
leaq 0x3108(%rbx), %rax
movq %rax, -0x40(%rbp)
leaq 0x3118(%rbx), %rax
movq %rax, -0x38(%rbp)
leaq 0x3128(%rbx), %r12
leaq 0x3148(%rbx), %rdi
callq 0x4be3a
movq %r12, %rdi
callq 0x4be02
movq -0x38(%rbp), %rdi
callq 0x4be3a
movq -0x40(%rbp), %rdi
callq 0x4be3a
movq -0x48(%rbp), %rdi
callq 0x4be1e
movq -0x50(%rbp), %rdi
callq 0x4be3a
movq -0x58(%rbp), %rdi
callq 0x4a0bc
movq %r15, %rdi
callq 0x4be3a
movq %r14, %rdi
callq 0x6b1bc
jmp 0x4a991
movq %rax, -0x30(%rbp)
leaq 0x1a88(%rbx), %rax
movq %rax, -0x58(%rbp)
leaq 0x1a98(%rbx), %rax
movq %rax, -0x50(%rbp)
leaq 0x1aa8(%rbx), %rax
movq %rax, -0x48(%rbp)
leaq 0x1ab8(%rbx), %rax
movq %rax, -0x40(%rbp)
leaq 0x1ac8(%rbx), %rax
movq %rax, -0x38(%rbp)
leaq 0x1c10(%rbx), %rax
movq %rax, -0xc8(%rbp)
leaq 0x1c20(%rbx), %rax
movq %rax, -0xc0(%rbp)
leaq 0x1c30(%rbx), %rax
movq %rax, -0xb8(%rbp)
leaq 0x1c40(%rbx), %rax
movq %rax, -0xb0(%rbp)
leaq 0x1c50(%rbx), %rax
movq %rax, -0xa8(%rbp)
leaq 0x1c60(%rbx), %rax
movq %rax, -0xa0(%rbp)
leaq 0x1c70(%rbx), %rax
movq %rax, -0x98(%rbp)
leaq 0x1c80(%rbx), %rax
movq %rax, -0x90(%rbp)
leaq 0x1e18(%rbx), %r15
leaq 0x1e48(%rbx), %rax
movq %rax, -0x88(%rbp)
leaq 0x2088(%rbx), %rax
movq %rax, -0x80(%rbp)
leaq 0x20b0(%rbx), %rax
movq %rax, -0x78(%rbp)
leaq 0x20d8(%rbx), %rax
movq %rax, -0x70(%rbp)
leaq 0x20e8(%rbx), %rax
movq %rax, -0x68(%rbp)
leaq 0x20f8(%rbx), %rax
movq %rax, -0x60(%rbp)
leaq 0x2110(%rbx), %r14
leaq 0x2148(%rbx), %r12
leaq 0x2160(%rbx), %rdi
callq 0x4be56
movq %r12, %rdi
callq 0x4be84
movq %r13, %rdi
callq 0x4bea0
movq %r14, %rdi
callq 0x4bebc
movq -0x60(%rbp), %rdi
callq 0x4bdae
movq -0x68(%rbp), %rdi
callq 0x4bcc2
movq -0x70(%rbp), %rdi
callq 0x4bea0
movq -0x78(%rbp), %rdi
callq 0x4beea
movq -0x80(%rbp), %rdi
callq 0x4bf18
movq -0xd0(%rbp), %rdi
callq 0x4a00c
movq -0xd8(%rbp), %rdi
callq 0x4a00c
movq -0x88(%rbp), %rdi
callq 0x4bf34
movb $0x0, 0x1e10(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x1c(%r15)
movups %xmm0, 0x10(%r15)
movups %xmm0, (%r15)
movq -0x90(%rbp), %rdi
callq 0x4bf5a
movq -0x98(%rbp), %rdi
callq 0x4bf5a
movq -0xa0(%rbp), %rdi
callq 0x4bf76
movq -0xa8(%rbp), %rdi
callq 0x4bf92
movq -0xb0(%rbp), %rdi
callq 0x4a0bc
movq -0xb8(%rbp), %rdi
callq 0x4bfae
movq -0xc0(%rbp), %rdi
callq 0x4bfca
movq -0xc8(%rbp), %rdi
callq 0x4bfe6
movq -0x38(%rbp), %rdi
callq 0x4bdca
movq -0x40(%rbp), %rdi
callq 0x4bcde
movq -0x48(%rbp), %rdi
callq 0x4bcde
movq -0x50(%rbp), %rdi
callq 0x4bcde
movq -0x58(%rbp), %rdi
callq 0x4bcde
jmp 0x4abb2
movq %rax, -0x30(%rbp)
addq $0x1550, %rbx           # imm = 0x1550
movq %rbx, %rdi
callq 0x499a4
movq -0x30(%rbp), %rdi
callq 0xc580