// File: Ciaxur[P]yagb-emu/include/imgui/imgui.cpp
// Function: ImGuiIO::ImGuiIO()
ImGuiIO::ImGuiIO()
{
    // Most fields are initialized with zero
    memset(this, 0, sizeof(*this));
    IM_ASSERT(IM_ARRAYSIZE(ImGuiIO::MouseDown) == ImGuiMouseButton_COUNT && IM_ARRAYSIZE(ImGuiIO::MouseClicked) == ImGuiMouseButton_COUNT); // Our pre-C++11 IM_STATIC_ASSERT() macros triggers warning on modern compilers so we don't use it here.

    // Settings
    ConfigFlags = ImGuiConfigFlags_None;
    BackendFlags = ImGuiBackendFlags_None;
    DisplaySize = ImVec2(-1.0f, -1.0f);
    DeltaTime = 1.0f / 60.0f;
    IniSavingRate = 5.0f;
    IniFilename = "imgui.ini";
    LogFilename = "imgui_log.txt";
    MouseDoubleClickTime = 0.30f;
    MouseDoubleClickMaxDist = 6.0f;
    for (int i = 0; i < ImGuiKey_COUNT; i++)
        KeyMap[i] = -1;
    KeyRepeatDelay = 0.275f;
    KeyRepeatRate = 0.050f;
    UserData = NULL;

    Fonts = NULL;
    FontGlobalScale = 1.0f;
    FontDefault = NULL;
    FontAllowUserScaling = false;
    DisplayFramebufferScale = ImVec2(1.0f, 1.0f);

    // Miscellaneous options
    MouseDrawCursor = false;
#ifdef __APPLE__
    ConfigMacOSXBehaviors = true;  // Set Mac OS X style defaults based on __APPLE__ compile time flag
#else
    ConfigMacOSXBehaviors = false;
#endif
    ConfigInputTextCursorBlink = true;
    ConfigWindowsResizeFromEdges = true;
    ConfigWindowsMoveFromTitleBarOnly = false;
    ConfigMemoryCompactTimer = 60.0f;

    // Platform Functions
    BackendPlatformName = BackendRendererName = NULL;
    BackendPlatformUserData = BackendRendererUserData = BackendLanguageUserData = NULL;
    GetClipboardTextFn = GetClipboardTextFn_DefaultImpl;   // Platform dependent default implementations
    SetClipboardTextFn = SetClipboardTextFn_DefaultImpl;
    ClipboardUserData = NULL;
    ImeSetInputScreenPosFn = ImeSetInputScreenPosFn_DefaultImpl;
    ImeWindowHandle = NULL;

    // Input (NB: we already have memset zero the entire structure!)
    MousePos = ImVec2(-FLT_MAX, -FLT_MAX);
    MousePosPrev = ImVec2(-FLT_MAX, -FLT_MAX);
    MouseDragThreshold = 6.0f;
    for (int i = 0; i < IM_ARRAYSIZE(MouseDownDuration); i++) MouseDownDuration[i] = MouseDownDurationPrev[i] = -1.0f;
    for (int i = 0; i < IM_ARRAYSIZE(KeysDownDuration); i++) KeysDownDuration[i]  = KeysDownDurationPrev[i] = -1.0f;
    for (int i = 0; i < IM_ARRAYSIZE(NavInputsDownDuration); i++) NavInputsDownDuration[i] = -1.0f;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x60(%rbp)
addq $0x8, %rdi
callq 0xe7de0
movq -0x60(%rbp), %rdi
addq $0xb8, %rdi
callq 0xe7de0
movq -0x60(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0xe7de0
movq -0x60(%rbp), %rdi
addq $0x3b0, %rdi            # imm = 0x3B0
callq 0xe7de0
movq -0x60(%rbp), %rdi
addq $0x3bc, %rdi            # imm = 0x3BC
callq 0xe7de0
movq -0x60(%rbp), %rax
addq $0x3c4, %rax            # imm = 0x3C4
movq %rax, %rcx
addq $0x28, %rcx
movq %rcx, -0x58(%rbp)
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0xe7de0
movq -0x68(%rbp), %rax
movq -0x58(%rbp), %rcx
addq $0x8, %rax
cmpq %rcx, %rax
movq %rax, -0x50(%rbp)
jne 0xc3029
movq -0x60(%rbp), %rax
addq $0x45c, %rax            # imm = 0x45C
movq %rax, %rcx
addq $0x28, %rcx
movq %rcx, -0x78(%rbp)
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0xe7de0
movq -0x80(%rbp), %rax
movq -0x78(%rbp), %rcx
addq $0x8, %rax
cmpq %rcx, %rax
movq %rax, -0x70(%rbp)
jne 0xc3064
movq -0x60(%rbp), %rdi
addq $0x1548, %rdi           # imm = 0x1548
movq %rdi, -0x88(%rbp)
callq 0xe7e30
movq -0x60(%rbp), %rdi
xorl %esi, %esi
movl $0x1558, %edx           # imm = 0x1558
callq 0xd2f0
movq -0x60(%rbp), %rax
movl $0x0, (%rax)
movl $0x0, 0x4(%rax)
leaq -0x10(%rbp), %rdi
movss 0xaeeb6(%rip), %xmm1    # 0x171f80
movaps %xmm1, %xmm0
callq 0xbf4c0
jmp 0xc30d4
movq -0x60(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movss 0xaf66c(%rip), %xmm0    # 0x172754
movss %xmm0, 0x10(%rax)
movss 0xaf65b(%rip), %xmm0    # 0x172750
movss %xmm0, 0x14(%rax)
leaq 0xafddf(%rip), %rcx     # 0x172ee0
movq %rcx, 0x18(%rax)
leaq 0xafdde(%rip), %rcx     # 0x172eea
movq %rcx, 0x20(%rax)
movss 0xaf634(%rip), %xmm0    # 0x17274c
movss %xmm0, 0x28(%rax)
movss 0xaeebb(%rip), %xmm0    # 0x171fe0
movss %xmm0, 0x2c(%rax)
movl $0x0, -0x20(%rbp)
cmpl $0x16, -0x20(%rbp)
jge 0xc316f
movq -0x60(%rbp), %rax
movslq -0x20(%rbp), %rcx
movl $0xffffffff, 0x34(%rax,%rcx,4) # imm = 0xFFFFFFFF
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xc3131
movq -0x88(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0xe7e60
jmp 0xc33a2
movq -0x60(%rbp), %rax
movl $0x3e8ccccd, 0x8c(%rax) # imm = 0x3E8CCCCD
movl $0x3d4ccccd, 0x90(%rax) # imm = 0x3D4CCCCD
movq $0x0, 0x98(%rax)
movq $0x0, 0xa0(%rax)
movl $0x3f800000, 0xa8(%rax) # imm = 0x3F800000
movq $0x0, 0xb0(%rax)
movb $0x0, 0xac(%rax)
leaq -0x28(%rbp), %rdi
movss 0xada77(%rip), %xmm1    # 0x170c3c
movaps %xmm1, %xmm0
callq 0xbf4c0
jmp 0xc31cf
movq -0x60(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, 0xb8(%rax)
movb $0x0, 0xc0(%rax)
movb $0x0, 0xc1(%rax)
movb $0x1, 0xc2(%rax)
movb $0x1, 0xc4(%rax)
movb $0x0, 0xc5(%rax)
movl $0x42700000, 0xc8(%rax) # imm = 0x42700000
movq $0x0, 0xd8(%rax)
movq $0x0, 0xd0(%rax)
movq $0x0, 0xf0(%rax)
movq $0x0, 0xe8(%rax)
movq $0x0, 0xe0(%rax)
leaq 0x167(%rip), %rcx       # 0xc33b0
movq %rcx, 0xf8(%rax)
leaq 0x1b9(%rip), %rcx       # 0xc3410
movq %rcx, 0x100(%rax)
movq $0x0, 0x108(%rax)
leaq 0x260(%rip), %rcx       # 0xc34d0
movq %rcx, 0x110(%rax)
movq $0x0, 0x118(%rax)
leaq -0x30(%rbp), %rdi
movss 0xaf4ca(%rip), %xmm1    # 0x172758
movaps %xmm1, %xmm0
callq 0xbf4c0
jmp 0xc3298
movq -0x60(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rcx, 0x120(%rax)
leaq -0x38(%rbp), %rdi
movss 0xaf4a5(%rip), %xmm1    # 0x172758
movaps %xmm1, %xmm0
callq 0xbf4c0
jmp 0xc32bd
movq -0x60(%rbp), %rax
movq -0x38(%rbp), %rcx
movq %rcx, 0x3bc(%rax)
movss 0xaed0c(%rip), %xmm0    # 0x171fe0
movss %xmm0, 0x30(%rax)
movl $0x0, -0x3c(%rbp)
cmpl $0x5, -0x3c(%rbp)
jge 0xc331f
movq -0x60(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movss 0xaec8a(%rip), %xmm0    # 0x171f80
movss %xmm0, 0x448(%rax,%rcx,4)
movslq -0x3c(%rbp), %rcx
movss 0xaec75(%rip), %xmm0    # 0x171f80
movss %xmm0, 0x434(%rax,%rcx,4)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0xc32e0
movl $0x0, -0x40(%rbp)
cmpl $0x200, -0x40(%rbp)     # imm = 0x200
jge 0xc3368
movq -0x60(%rbp), %rax
movslq -0x40(%rbp), %rcx
movss 0xaec41(%rip), %xmm0    # 0x171f80
movss %xmm0, 0xc98(%rax,%rcx,4)
movslq -0x40(%rbp), %rcx
movss 0xaec2c(%rip), %xmm0    # 0x171f80
movss %xmm0, 0x498(%rax,%rcx,4)
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0xc3326
movl $0x0, -0x44(%rbp)
cmpl $0x15, -0x44(%rbp)
jge 0xc3399
movq -0x60(%rbp), %rax
movslq -0x44(%rbp), %rcx
movss 0xaebfb(%rip), %xmm0    # 0x171f80
movss %xmm0, 0x1498(%rax,%rcx,4)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0xc336f
addq $0x90, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0xd620
nopl (%rax,%rax)