// File: /workspace/github_cpp_makefile_star2_O3/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, %r13
movq %rdi, %rbx
addq $0x8, %rdi
movq %rdi, -0xe0(%rbp)
callq 0x40736
leaq 0x1560(%rbx), %rdi
callq 0x4036c
leaq 0x1988(%rbx), %r14
movq %r14, %rdi
callq 0x75074
xorl %r15d, %r15d
movq %r15, 0x1b10(%rbx)
movq %r15, 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)
movl $0x84, %edx
xorl %esi, %esi
callq 0xc260
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, %r12 # imm = 0x7F7FFFFF7F7FFFFF
movq %r12, 0x1d30(%rbx)
movups %xmm0, 0x1d3c(%rbx)
movups %xmm0, 0x1d50(%rbx)
movl %eax, 0x1d68(%rbx)
movq %r12, 0x1d60(%rbx)
movups %xmm0, 0x1d6c(%rbx)
movups %xmm0, 0x1d80(%rbx)
movl %eax, 0x1d98(%rbx)
movq %r12, 0x1d90(%rbx)
movups %xmm0, 0x1d9c(%rbx)
movb %r15b, 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 0xc260
movq %r14, 0x1ea8(%rbx)
leaq 0x1f38(%rbx), %rdi
movl $0xc8, %edx
movq %rdi, -0xd0(%rbp)
xorl %esi, %esi
callq 0xc260
movq %r14, 0x1f70(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x2030(%rbx)
movups %xmm0, 0x2040(%rbx)
movb %r15b, 0x2050(%rbx)
movups %xmm0, 0x2018(%rbx)
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0x2028(%rbx)
movw $0x0, 0x2051(%rbx)
movups %xmm0, 0x2058(%rbx)
movups %xmm0, 0x2088(%rbx)
movups %xmm0, 0x20b0(%rbx)
movups %xmm0, 0x20c0(%rbx)
movl %r15d, 0x20d0(%rbx)
movups %xmm0, 0x2110(%rbx)
movups %xmm0, 0x2120(%rbx)
movl %r15d, 0x2130(%rbx)
leaq 0x2138(%rbx), %rdi
leaq 0x2ff8(%rbx), %r15
movups %xmm0, 0x20d8(%rbx)
movups %xmm0, 0x20e8(%rbx)
movups %xmm0, 0x20f8(%rbx)
movl $0xec0, %edx            # imm = 0xEC0
movq %rdi, -0xc8(%rbp)
xorl %esi, %esi
callq 0xc260
movq %r15, %rdi
callq 0x81506
xorps %xmm0, %xmm0
movups %xmm0, 0x3084(%rbx)
movups %xmm0, 0x3148(%rbx)
movw $0x0, 0x3174(%rbx)
xorl %r14d, %r14d
movb %r14b, 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
movq $-0x1, 0x317c(%rbx)
movb %r14b, (%rbx)
testq %r13, %r13
sete 0x1(%rbx)
movups %xmm0, 0x1978(%rbx)
jne 0x5d6ff
movq 0x9e5f9(%rip), %rax     # 0xfbcd0
testq %rax, %rax
je 0x5d6e2
incl 0x3b4(%rax)
movq 0x9e5f7(%rip), %rsi     # 0xfbce0
movl $0x478, %edi            # imm = 0x478
callq *0x99e1c(%rip)          # 0xf7510
movq %rax, %r13
movq %rax, %rdi
callq 0x7aee4
leaq 0x1cc8(%rbx), %rax
movq %r13, 0xa8(%rbx)
movq %r14, 0x1a60(%rbx)
movaps 0x580d5(%rip), %xmm0    # 0xb57f0
movups %xmm0, 0x1a68(%rbx)
movl %r14d, 0x1a7c(%rbx)
movq %r14, 0x1a80(%rbx)
movl %r14d, 0x1ad8(%rbx)
movq %r14, 0x1b44(%rbx)
movq %r14, 0x1b50(%rbx)
movb %r14b, 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, %rcx # imm = 0xBF800000BF800000
movq %rcx, 0x1b58(%rbx)
movups %xmm0, 0x1b60(%rbx)
movq %r14, 0x1b6e(%rbx)
movups %xmm0, 0x1b78(%rbx)
movq %r14, 0x1cc0(%rbx)
movups %xmm0, 0x1cb0(%rbx)
movups %xmm0, 0x1ca0(%rbx)
movups %xmm0, 0x1c90(%rbx)
movups %xmm0, (%rax)
movq %r14, 0x1cd8(%rbx)
movl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, 0x1ce0(%rbx)
movw %r14w, 0x1ce4(%rbx)
movb $0x1, 0x1ce6(%rbx)
movl %r14d, 0x1cec(%rbx)
movb %r14b, 0x1d00(%rbx)
movq %r14, 0x1d04(%rbx)
movl %r14d, 0x1d0c(%rbx)
movl %r14d, 0x1ce7(%rbx)
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
movl %r15d, 0x1d18(%rbx)
movq $-0x1, %r13
movq %r13, 0x1d10(%rbx)
movq %r14, 0x1db0(%rbx)
movl %r14d, 0x1db8(%rbx)
movups %xmm0, 0x1dc0(%rbx)
movups %xmm0, 0x1dd0(%rbx)
movb %r14b, 0x1de0(%rbx)
movups %xmm0, 0x1de8(%rbx)
movl %eax, 0x1dfc(%rbx)
movl %eax, 0x1df8(%rbx)
movabsq $0x7fffffff7fffffff, %rax # imm = 0x7FFFFFFF7FFFFFFF
movq %rax, 0x1e00(%rbx)
movb %r14b, 0x1e08(%rbx)
movl %r14d, 0x1e68(%rbx)
leaq 0x5bde5(%rip), %rax     # 0xb965e
movq %rax, 0x1eb0(%rbx)
leaq 0x5bde4(%rip), %rax     # 0xb966b
movq %rax, 0x1f78(%rbx)
movl %r14d, 0x2008(%rbx)
movl %r14d, 0x2000(%rbx)
movl %r14d, 0x2003(%rbx)
movq %r13, 0x200c(%rbx)
movl %r14d, 0x2078(%rbx)
movups %xmm0, 0x2068(%rbx)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x207c(%rbx)
movq %r14, 0x2108(%rbx)
movq %r14, 0x2158(%rbx)
movl %r14d, 0x3068(%rbx)
movq %r14, 0x20a8(%rbx)
movups %xmm0, 0x2098(%rbx)
movl $0xa900000, 0x306c(%rbx) # imm = 0xA900000
movl %r14d, 0x3074(%rbx)
movl %r14d, 0x3070(%rbx)
movl $0x7f7fffff, %eax       # imm = 0x7F7FFFFF
movl %eax, 0x3080(%rbx)
movl %eax, 0x307c(%rbx)
movl %eax, 0x3078(%rbx)
movl %r14d, 0x3094(%rbx)
movw %r14w, 0x3098(%rbx)
movsd 0x57ed3(%rip), %xmm0    # 0xb5800
movups %xmm0, 0x309c(%rbx)
movl $0x3f000000, 0x30ac(%rbx) # imm = 0x3F000000
movq %r12, 0x30d8(%rbx)
movq %r12, 0x30d0(%rbx)
movw $0x2e, 0x30e0(%rbx)
movl %r14d, 0x30e4(%rbx)
movb %r14b, 0x3138(%rbx)
movl %r14d, 0x313c(%rbx)
movq %r14, 0x3140(%rbx)
movl %eax, 0x3158(%rbx)
movb %r14b, 0x315c(%rbx)
movl %r14d, 0x3160(%rbx)
movl $0x2, %eax
movl %eax, 0x3168(%rbx)
movl %eax, 0x3164(%rbx)
movb %r14b, 0x316c(%rbx)
movl %r14d, 0x3170(%rbx)
leaq 0x3184(%rbx), %rdi
movl $0x1e8, %edx            # imm = 0x1E8
xorl %esi, %esi
callq 0xc260
movl %r15d, 0x3374(%rbx)
movq %r13, 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 0xc260
jmp 0x5d9ee
movq %rax, %r12
leaq 0x30b0(%rbx), %r14
leaq 0x30c0(%rbx), %rax
movq %rax, -0x50(%rbp)
leaq 0x30e8(%rbx), %rax
movq %rax, -0x48(%rbp)
leaq 0x30f8(%rbx), %rax
movq %rax, -0x40(%rbp)
leaq 0x3108(%rbx), %rax
movq %rax, -0x38(%rbp)
leaq 0x3118(%rbx), %rax
movq %rax, -0x30(%rbp)
leaq 0x3128(%rbx), %r13
leaq 0x3148(%rbx), %rdi
callq 0x5e5ea
movq %r13, %rdi
callq 0x5e620
movq -0x30(%rbp), %rdi
callq 0x5e656
movq -0x38(%rbp), %rdi
callq 0x5e68c
movq -0x40(%rbp), %rdi
callq 0x5e6c2
movq -0x48(%rbp), %rdi
callq 0x5e5ea
movq -0x50(%rbp), %rdi
callq 0x5d3c4
movq %r14, %rdi
callq 0x5e6f8
movq %r15, %rdi
callq 0x81542
jmp 0x5da8c
movq %rax, %r12
leaq 0x1a88(%rbx), %rax
movq %rax, -0x50(%rbp)
leaq 0x1a98(%rbx), %rax
movq %rax, -0x48(%rbp)
leaq 0x1aa8(%rbx), %rax
movq %rax, -0x40(%rbp)
leaq 0x1ab8(%rbx), %rax
movq %rax, -0x38(%rbp)
leaq 0x1ac8(%rbx), %rax
movq %rax, -0x30(%rbp)
leaq 0x1c10(%rbx), %rax
movq %rax, -0xc0(%rbp)
leaq 0x1c20(%rbx), %rax
movq %rax, -0xb8(%rbp)
leaq 0x1c30(%rbx), %rax
movq %rax, -0xb0(%rbp)
leaq 0x1c40(%rbx), %rax
movq %rax, -0xa8(%rbp)
leaq 0x1c50(%rbx), %rax
movq %rax, -0xa0(%rbp)
leaq 0x1c60(%rbx), %rax
movq %rax, -0x98(%rbp)
leaq 0x1c70(%rbx), %rax
movq %rax, -0x90(%rbp)
leaq 0x1c80(%rbx), %rax
movq %rax, -0x88(%rbp)
leaq 0x1e18(%rbx), %r14
leaq 0x1e48(%rbx), %rax
movq %rax, -0x80(%rbp)
leaq 0x2088(%rbx), %rax
movq %rax, -0x78(%rbp)
leaq 0x20b0(%rbx), %rax
movq %rax, -0x70(%rbp)
leaq 0x20d8(%rbx), %rax
movq %rax, -0x68(%rbp)
leaq 0x20e8(%rbx), %rax
movq %rax, -0x60(%rbp)
leaq 0x20f8(%rbx), %rax
movq %rax, -0x58(%rbp)
leaq 0x2110(%rbx), %r13
leaq 0x2148(%rbx), %r15
leaq 0x2160(%rbx), %rdi
callq 0x5e72e
movq %r15, %rdi
callq 0x5e7c2
movq -0xc8(%rbp), %rdi
callq 0x5e7f8
movq %r13, %rdi
callq 0x5e82e
movq -0x58(%rbp), %rdi
callq 0x5e5b4
movq -0x60(%rbp), %rdi
callq 0x5e548
movq -0x68(%rbp), %rdi
callq 0x5e7f8
movq -0x70(%rbp), %rdi
callq 0x5e8a0
movq -0x78(%rbp), %rdi
callq 0x5e912
movq -0xd0(%rbp), %rdi
callq 0x5d162
movq -0xd8(%rbp), %rdi
callq 0x5d162
movq -0x80(%rbp), %rdi
callq 0x5e948
movb $0x0, 0x1e10(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x1c(%r14)
movups %xmm0, 0x10(%r14)
movups %xmm0, (%r14)
movq -0x88(%rbp), %rdi
callq 0x5e994
movq -0x90(%rbp), %rdi
callq 0x5e994
movq -0x98(%rbp), %rdi
callq 0x5e9ca
movq -0xa0(%rbp), %rdi
callq 0x5ea00
movq -0xa8(%rbp), %rdi
callq 0x5d3c4
movq -0xb0(%rbp), %rdi
callq 0x5ea36
movq -0xb8(%rbp), %rdi
callq 0x5ea6c
movq -0xc0(%rbp), %rdi
callq 0x5eaa2
movq -0x30(%rbp), %rdi
callq 0x5d2f0
movq -0x38(%rbp), %rdi
callq 0x5e57e
movq -0x40(%rbp), %rdi
callq 0x5e57e
movq -0x48(%rbp), %rdi
callq 0x5e57e
movq -0x50(%rbp), %rdi
callq 0x5e57e
jmp 0x5dcaa
movq %rax, %r12
movq -0xe0(%rbp), %rdi
callq 0x5ead8
movq %r12, %rdi
callq 0xc560