// File: donfreiday[P]gb/./imgui/imgui_draw.cpp
// Function: ImDrawList::PathRect(ImVec2 const&, ImVec2 const&, float, int)
void ImDrawList::PathRect(const ImVec2& a, const ImVec2& b, float rounding, int rounding_corners)
{
    float r = rounding;
    r = ImMin(r, fabsf(b.x-a.x) * ( ((rounding_corners&(1|2))==(1|2)) || ((rounding_corners&(4|8))==(4|8)) ? 0.5f : 1.0f ) - 1.0f);
    r = ImMin(r, fabsf(b.y-a.y) * ( ((rounding_corners&(1|8))==(1|8)) || ((rounding_corners&(2|4))==(2|4)) ? 0.5f : 1.0f ) - 1.0f);

    if (r == 0.0f || rounding_corners == 0)
    {
        PathLineTo(a);
        PathLineTo(ImVec2(b.x,a.y));
        PathLineTo(b);
        PathLineTo(ImVec2(a.x,b.y));
    }
    else
    {
        const float r0 = (rounding_corners & 1) ? r : 0.0f;
        const float r1 = (rounding_corners & 2) ? r : 0.0f;
        const float r2 = (rounding_corners & 4) ? r : 0.0f;
        const float r3 = (rounding_corners & 8) ? r : 0.0f;
        PathArcToFast(ImVec2(a.x+r0,a.y+r0), r0, 6, 9);
        PathArcToFast(ImVec2(b.x-r1,a.y+r1), r1, 9, 12);
        PathArcToFast(ImVec2(b.x-r2,b.y-r2), r2, 0, 3);
        PathArcToFast(ImVec2(a.x+r3,b.y-r3), r3, 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, -0x24(%rbp)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x70(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x10(%rbp), %rax
subss (%rax), %xmm0
movaps 0x1b05e(%rip), %xmm1    # 0x5b140
pand %xmm1, %xmm0
movss %xmm0, -0x6c(%rbp)
movl -0x20(%rbp), %ecx
andl $0x3, %ecx
movb $0x1, %al
cmpl $0x3, %ecx
movb %al, -0x65(%rbp)
je 0x4010a
movl -0x20(%rbp), %eax
andl $0xc, %eax
cmpl $0xc, %eax
sete %al
movb %al, -0x65(%rbp)
movb -0x65(%rbp), %al
movss 0x1af0f(%rip), %xmm0    # 0x5b024
movss 0x1aefb(%rip), %xmm1    # 0x5b018
movss %xmm1, -0x80(%rbp)
testb $0x1, %al
movss %xmm0, -0x7c(%rbp)
jne 0x40135
movss -0x80(%rbp), %xmm0
movss %xmm0, -0x7c(%rbp)
movss -0x70(%rbp), %xmm0
movss -0x6c(%rbp), %xmm1
movss -0x7c(%rbp), %xmm2
mulss %xmm2, %xmm1
movss 0x1af2c(%rip), %xmm2    # 0x5b07c
addss %xmm2, %xmm1
callq 0x40480
movss %xmm0, -0x24(%rbp)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x8c(%rbp)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x10(%rbp), %rax
subss 0x4(%rax), %xmm0
movaps 0x1afbc(%rip), %xmm1    # 0x5b140
pand %xmm1, %xmm0
movss %xmm0, -0x88(%rbp)
movl -0x20(%rbp), %ecx
andl $0x9, %ecx
movb $0x1, %al
cmpl $0x9, %ecx
movb %al, -0x81(%rbp)
je 0x401b5
movl -0x20(%rbp), %eax
andl $0x6, %eax
cmpl $0x6, %eax
sete %al
movb %al, -0x81(%rbp)
movb -0x81(%rbp), %al
movss 0x1ae61(%rip), %xmm0    # 0x5b024
movss 0x1ae4d(%rip), %xmm1    # 0x5b018
movss %xmm1, -0x94(%rbp)
testb $0x1, %al
movss %xmm0, -0x90(%rbp)
jne 0x401ef
movss -0x94(%rbp), %xmm0
movss %xmm0, -0x90(%rbp)
movss -0x8c(%rbp), %xmm0
movss -0x88(%rbp), %xmm1
movss -0x90(%rbp), %xmm2
mulss %xmm2, %xmm1
movss 0x1ae69(%rip), %xmm2    # 0x5b07c
addss %xmm2, %xmm1
callq 0x40480
movss %xmm0, -0x24(%rbp)
movss -0x24(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x40232
jp 0x40232
jmp 0x40238
cmpl $0x0, -0x20(%rbp)
jne 0x402a5
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x2eab0
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
leaq -0x2c(%rbp), %rdi
callq 0x2d280
movq -0x78(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x2eab0
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2eab0
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
leaq -0x34(%rbp), %rdi
callq 0x2d280
movq -0x78(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0x2eab0
jmp 0x40472
movl -0x20(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x402bf
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x98(%rbp)
jmp 0x402cc
xorps %xmm0, %xmm0
movss %xmm0, -0x98(%rbp)
jmp 0x402cc
movss -0x98(%rbp), %xmm0
movss %xmm0, -0x38(%rbp)
movl -0x20(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x402f3
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x9c(%rbp)
jmp 0x40300
xorps %xmm0, %xmm0
movss %xmm0, -0x9c(%rbp)
jmp 0x40300
movss -0x9c(%rbp), %xmm0
movss %xmm0, -0x3c(%rbp)
movl -0x20(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x40327
movss -0x24(%rbp), %xmm0
movss %xmm0, -0xa0(%rbp)
jmp 0x40334
xorps %xmm0, %xmm0
movss %xmm0, -0xa0(%rbp)
jmp 0x40334
movss -0xa0(%rbp), %xmm0
movss %xmm0, -0x40(%rbp)
movl -0x20(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x4035b
movss -0x24(%rbp), %xmm0
movss %xmm0, -0xa4(%rbp)
jmp 0x40368
xorps %xmm0, %xmm0
movss %xmm0, -0xa4(%rbp)
jmp 0x40368
movss -0xa4(%rbp), %xmm0
movss %xmm0, -0x44(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
addss -0x38(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
addss -0x38(%rbp), %xmm1
leaq -0x4c(%rbp), %rdi
callq 0x2d280
movq -0x78(%rbp), %rdi
movss -0x38(%rbp), %xmm0
leaq -0x4c(%rbp), %rsi
movl $0x6, %edx
movl $0x9, %ecx
callq 0x3f750
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
subss -0x3c(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm1
addss -0x3c(%rbp), %xmm1
leaq -0x54(%rbp), %rdi
callq 0x2d280
movq -0x78(%rbp), %rdi
movss -0x3c(%rbp), %xmm0
leaq -0x54(%rbp), %rsi
movl $0x9, %edx
movl $0xc, %ecx
callq 0x3f750
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
subss -0x40(%rbp), %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x40(%rbp), %xmm1
leaq -0x5c(%rbp), %rdi
callq 0x2d280
movq -0x78(%rbp), %rdi
movss -0x40(%rbp), %xmm0
leaq -0x5c(%rbp), %rsi
xorl %edx, %edx
movl $0x3, %ecx
callq 0x3f750
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
addss -0x44(%rbp), %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
subss -0x44(%rbp), %xmm1
leaq -0x64(%rbp), %rdi
callq 0x2d280
movq -0x78(%rbp), %rdi
movss -0x44(%rbp), %xmm0
leaq -0x64(%rbp), %rsi
movl $0x3, %edx
movl $0x6, %ecx
callq 0x3f750
addq $0xb0, %rsp
popq %rbp
retq
nopl (%rax,%rax)