// File: Ciaxur[P]yagb-emu/include/imgui/imgui_draw.cpp
// Function: ImDrawList::PathRect(ImVec2 const&, ImVec2 const&, float, int)
void ImDrawList::PathRect(const ImVec2& a, const ImVec2& b, float rounding, ImDrawCornerFlags rounding_corners)
{
    rounding = ImMin(rounding, ImFabs(b.x - a.x) * ( ((rounding_corners & ImDrawCornerFlags_Top)  == ImDrawCornerFlags_Top)  || ((rounding_corners & ImDrawCornerFlags_Bot)   == ImDrawCornerFlags_Bot)   ? 0.5f : 1.0f ) - 1.0f);
    rounding = ImMin(rounding, ImFabs(b.y - a.y) * ( ((rounding_corners & ImDrawCornerFlags_Left) == ImDrawCornerFlags_Left) || ((rounding_corners & ImDrawCornerFlags_Right) == ImDrawCornerFlags_Right) ? 0.5f : 1.0f ) - 1.0f);

    if (rounding <= 0.0f || rounding_corners == 0)
    {
        PathLineTo(a);
        PathLineTo(ImVec2(b.x, a.y));
        PathLineTo(b);
        PathLineTo(ImVec2(a.x, b.y));
    }
    else
    {
        const float rounding_tl = (rounding_corners & ImDrawCornerFlags_TopLeft) ? rounding : 0.0f;
        const float rounding_tr = (rounding_corners & ImDrawCornerFlags_TopRight) ? rounding : 0.0f;
        const float rounding_br = (rounding_corners & ImDrawCornerFlags_BotRight) ? rounding : 0.0f;
        const float rounding_bl = (rounding_corners & ImDrawCornerFlags_BotLeft) ? rounding : 0.0f;
        PathArcToFast(ImVec2(a.x + rounding_tl, a.y + rounding_tl), rounding_tl, 6, 9);
        PathArcToFast(ImVec2(b.x - rounding_tr, a.y + rounding_tr), rounding_tr, 9, 12);
        PathArcToFast(ImVec2(b.x - rounding_br, b.y - rounding_br), rounding_br, 0, 3);
        PathArcToFast(ImVec2(a.x + rounding_bl, b.y - rounding_bl), rounding_bl, 3, 6);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movss %xmm0, -0x1c(%rbp)
movl %ecx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x6c(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x10(%rbp), %rax
subss (%rax), %xmm0
movaps 0x5fdb8(%rip), %xmm1    # 0x172800
pand %xmm1, %xmm0
movss %xmm0, -0x68(%rbp)
movl -0x20(%rbp), %ecx
andl $0x3, %ecx
movb $0x1, %al
cmpl $0x3, %ecx
movb %al, -0x61(%rbp)
je 0x112a70
movl -0x20(%rbp), %eax
andl $0xc, %eax
cmpl $0xc, %eax
sete %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
movss 0x5f55d(%rip), %xmm0    # 0x171fd8
movss 0x5e1b9(%rip), %xmm1    # 0x170c3c
movss %xmm1, -0x80(%rbp)
testb $0x1, %al
movss %xmm0, -0x7c(%rbp)
jne 0x112a9b
movss -0x80(%rbp), %xmm0
movss %xmm0, -0x7c(%rbp)
movss -0x6c(%rbp), %xmm0
movss -0x68(%rbp), %xmm1
movss -0x7c(%rbp), %xmm2
mulss %xmm2, %xmm1
movss 0x5f4ca(%rip), %xmm2    # 0x171f80
addss %xmm2, %xmm1
callq 0x112de0
movss %xmm0, -0x1c(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x8c(%rbp)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x10(%rbp), %rax
subss 0x4(%rax), %xmm0
movaps 0x5fd16(%rip), %xmm1    # 0x172800
pand %xmm1, %xmm0
movss %xmm0, -0x88(%rbp)
movl -0x20(%rbp), %ecx
andl $0x5, %ecx
movb $0x1, %al
cmpl $0x5, %ecx
movb %al, -0x81(%rbp)
je 0x112b1b
movl -0x20(%rbp), %eax
andl $0xa, %eax
cmpl $0xa, %eax
sete %al
movb %al, -0x81(%rbp)
movb -0x81(%rbp), %al
movss 0x5f4af(%rip), %xmm0    # 0x171fd8
movss 0x5e10b(%rip), %xmm1    # 0x170c3c
movss %xmm1, -0x94(%rbp)
testb $0x1, %al
movss %xmm0, -0x90(%rbp)
jne 0x112b55
movss -0x94(%rbp), %xmm0
movss %xmm0, -0x90(%rbp)
movss -0x8c(%rbp), %xmm0
movss -0x88(%rbp), %xmm1
movss -0x90(%rbp), %xmm2
mulss %xmm2, %xmm1
movss 0x5f407(%rip), %xmm2    # 0x171f80
addss %xmm2, %xmm1
callq 0x112de0
movss %xmm0, -0x1c(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x1c(%rbp), %xmm0
jae 0x112b96
cmpl $0x0, -0x20(%rbp)
jne 0x112c03
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xee560
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
leaq -0x28(%rbp), %rdi
callq 0xbf4c0
movq -0x78(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xee560
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xee560
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
leaq -0x30(%rbp), %rdi
callq 0xbf4c0
movq -0x78(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xee560
jmp 0x112dd0
movl -0x20(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x112c1d
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x98(%rbp)
jmp 0x112c2a
xorps %xmm0, %xmm0
movss %xmm0, -0x98(%rbp)
jmp 0x112c2a
movss -0x98(%rbp), %xmm0
movss %xmm0, -0x34(%rbp)
movl -0x20(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x112c51
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x9c(%rbp)
jmp 0x112c5e
xorps %xmm0, %xmm0
movss %xmm0, -0x9c(%rbp)
jmp 0x112c5e
movss -0x9c(%rbp), %xmm0
movss %xmm0, -0x38(%rbp)
movl -0x20(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x112c85
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0xa0(%rbp)
jmp 0x112c92
xorps %xmm0, %xmm0
movss %xmm0, -0xa0(%rbp)
jmp 0x112c92
movss -0xa0(%rbp), %xmm0
movss %xmm0, -0x3c(%rbp)
movl -0x20(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x112cb9
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0xa4(%rbp)
jmp 0x112cc6
xorps %xmm0, %xmm0
movss %xmm0, -0xa4(%rbp)
jmp 0x112cc6
movss -0xa4(%rbp), %xmm0
movss %xmm0, -0x40(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
addss -0x34(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
addss -0x34(%rbp), %xmm1
leaq -0x48(%rbp), %rdi
callq 0xbf4c0
movq -0x78(%rbp), %rdi
movss -0x34(%rbp), %xmm0
leaq -0x48(%rbp), %rsi
movl $0x6, %edx
movl $0x9, %ecx
callq 0x111da0
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
subss -0x38(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
addss -0x38(%rbp), %xmm1
leaq -0x50(%rbp), %rdi
callq 0xbf4c0
movq -0x78(%rbp), %rdi
movss -0x38(%rbp), %xmm0
leaq -0x50(%rbp), %rsi
movl $0x9, %edx
movl $0xc, %ecx
callq 0x111da0
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
subss -0x3c(%rbp), %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x3c(%rbp), %xmm1
leaq -0x58(%rbp), %rdi
callq 0xbf4c0
movq -0x78(%rbp), %rdi
movss -0x3c(%rbp), %xmm0
leaq -0x58(%rbp), %rsi
xorl %edx, %edx
movl $0x3, %ecx
callq 0x111da0
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
addss -0x40(%rbp), %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x40(%rbp), %xmm1
leaq -0x60(%rbp), %rdi
callq 0xbf4c0
movq -0x78(%rbp), %rdi
movss -0x40(%rbp), %xmm0
leaq -0x60(%rbp), %rsi
movl $0x3, %edx
movl $0x6, %ecx
callq 0x111da0
addq $0xb0, %rsp
popq %rbp
retq
nopl (%rax)