// File: Ciaxur[P]yagb-emu/include/imgui/imgui_widgets.cpp
// Function: ImGui::DataTypeFormatString(char*, int, int, void const*, char const*)
int ImGui::DataTypeFormatString(char* buf, int buf_size, ImGuiDataType data_type, const void* p_data, const char* format)
{
    // Signedness doesn't matter when pushing integer arguments
    if (data_type == ImGuiDataType_S32 || data_type == ImGuiDataType_U32)
        return ImFormatString(buf, buf_size, format, *(const ImU32*)p_data);
    if (data_type == ImGuiDataType_S64 || data_type == ImGuiDataType_U64)
        return ImFormatString(buf, buf_size, format, *(const ImU64*)p_data);
    if (data_type == ImGuiDataType_Float)
        return ImFormatString(buf, buf_size, format, *(const float*)p_data);
    if (data_type == ImGuiDataType_Double)
        return ImFormatString(buf, buf_size, format, *(const double*)p_data);
    if (data_type == ImGuiDataType_S8)
        return ImFormatString(buf, buf_size, format, *(const ImS8*)p_data);
    if (data_type == ImGuiDataType_U8)
        return ImFormatString(buf, buf_size, format, *(const ImU8*)p_data);
    if (data_type == ImGuiDataType_S16)
        return ImFormatString(buf, buf_size, format, *(const ImS16*)p_data);
    if (data_type == ImGuiDataType_U16)
        return ImFormatString(buf, buf_size, format, *(const ImU16*)p_data);
    IM_ASSERT(0);
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
cmpl $0x4, -0x18(%rbp)
je 0x13fcf6
cmpl $0x5, -0x18(%rbp)
jne 0x13fd17
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
movb $0x0, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
cmpl $0x6, -0x18(%rbp)
je 0x13fd23
cmpl $0x7, -0x18(%rbp)
jne 0x13fd45
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movq (%rax), %rcx
movb $0x0, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
cmpl $0x8, -0x18(%rbp)
jne 0x13fd72
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movb $0x1, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
cmpl $0x9, -0x18(%rbp)
jne 0x13fd9b
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movsd (%rax), %xmm0
movb $0x1, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
cmpl $0x0, -0x18(%rbp)
jne 0x13fdc3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movsbl (%rax), %ecx
movb $0x0, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
cmpl $0x1, -0x18(%rbp)
jne 0x13fde8
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movzbl (%rax), %ecx
movb $0x0, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
cmpl $0x2, -0x18(%rbp)
jne 0x13fe0d
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movswl (%rax), %ecx
movb $0x0, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
cmpl $0x3, -0x18(%rbp)
jne 0x13fe32
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movzwl (%rax), %ecx
movb $0x0, %al
callq 0xc4d30
movl %eax, -0x4(%rbp)
jmp 0x13fe51
leaq 0x352d1(%rip), %rdi     # 0x17510a
leaq 0x4e5a0(%rip), %rsi     # 0x18e3e0
movl $0x724, %edx            # imm = 0x724
leaq 0x4eac8(%rip), %rcx     # 0x18e914
callq 0xd180
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)