// File: /workspace/github_cpp_makefile_star2_O1/XuhuiSun95[P]My-OpenGL/main.cpp
// Function: drawCurve(float, float, float, float, float)
void drawCurve(float radian, float radius, float width, float depth, float samplingRate)
{
    // FRONT
    myBegin(QUAD_STRIP);
    for(int i=0; i<samplingRate; i++) {
        myVertex3d(-(radius-width)*cosf(i*radian/samplingRate), (radius-width)*sinf(i*radian/samplingRate), 0.5*depth);
        myVertex3d(-radius*cosf(i*radian/samplingRate), radius*sinf(i*radian/samplingRate), 0.5*depth);
        myVertex3d(-(radius-width)*cosf((i+1)*radian/samplingRate), (radius-width)*sinf((i+1)*radian/samplingRate), 0.5*depth);
        myVertex3d(-radius*cosf((i+1)*radian/samplingRate), radius*sinf((i+1)*radian/samplingRate), 0.5*depth);
    }
    myEnd();
    
    // BACK
    myBegin(QUAD_STRIP);
    for(int i=0; i<samplingRate; i++) {
        myVertex3d(-(radius-width)*cosf(i*radian/samplingRate), (radius-width)*sinf(i*radian/samplingRate), -0.5*depth);
        myVertex3d(-radius*cosf(i*radian/samplingRate), radius*sinf(i*radian/samplingRate), -0.5*depth);
        myVertex3d(-(radius-width)*cosf((i+1)*radian/samplingRate), (radius-width)*sinf((i+1)*radian/samplingRate), -0.5*depth);
        myVertex3d(-radius*cosf((i+1)*radian/samplingRate), radius*sinf((i+1)*radian/samplingRate), -0.5*depth);
        
    }
    myEnd();
    
    // LEFT
    myBegin(POLYGON);
    myVertex3d(-radius, 0.0 , -0.5*depth);
    myVertex3d(-radius, 0.0 , 0.5*depth);
    myVertex3d(-(radius-width), 0.0, 0.5*depth);
    myVertex3d(-(radius-width), 0.0, -0.5*depth);
    myEnd();
    
    // RIGHT
    myBegin(POLYGON);
    myVertex3d(-radius*cosf(radian), radius*sinf(radian), 0.5*depth);
    myVertex3d(-radius*cosf(radian), radius*sinf(radian), -0.5*depth);
    myVertex3d(-(radius-width)*cosf(radian), (radius-width)*sinf(radian), -0.5*depth);
    myVertex3d(-(radius-width)*cosf(radian), (radius-width)*sinf(radian), 0.5*depth);
    myEnd();
    
    // TOP
    myBegin(QUAD_STRIP);
    for(int i=0; i<samplingRate; i++) {
        myVertex3d(-radius*cosf(i*radian/samplingRate), radius*sinf(i*radian/samplingRate), 0.5*depth);
        myVertex3d(-radius*cosf(i*radian/samplingRate), radius*sinf(i*radian/samplingRate), -0.5*depth);
        myVertex3d(-radius*cosf((i+1)*radian/samplingRate), radius*sinf((i+1)*radian/samplingRate), 0.5*depth);
        myVertex3d(-radius*cosf((i+1)*radian/samplingRate), radius*sinf((i+1)*radian/samplingRate), -0.5*depth);
    }
    myEnd();
    
    // BOTTOM
    myBegin(QUAD_STRIP);
    for(int i=0; i<samplingRate; i++) {
        myVertex3d(-(radius-width)*cosf(i*radian/samplingRate), (radius-width)*sinf(i*radian/samplingRate), -0.5*depth);
        myVertex3d(-(radius-width)*cosf(i*radian/samplingRate), (radius-width)*sinf(i*radian/samplingRate), 0.5*depth);
        myVertex3d(-(radius-width)*cosf((i+1)*radian/samplingRate), (radius-width)*sinf((i+1)*radian/samplingRate), -0.5*depth);
        myVertex3d(-(radius-width)*cosf((i+1)*radian/samplingRate), (radius-width)*sinf((i+1)*radian/samplingRate), 0.5*depth);
    }
    myEnd();
    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x78, %rsp
movss %xmm4, -0x18(%rbp)
movss %xmm3, -0x68(%rbp)
movss %xmm2, -0x60(%rbp)
movaps %xmm1, -0x40(%rbp)
movss %xmm0, -0x14(%rbp)
movl $0x1, %ebx
movl $0x1, %edi
callq 0x3d34
movss -0x18(%rbp), %xmm3
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm3
movaps -0x40(%rbp), %xmm1
subss -0x60(%rbp), %xmm1
movaps %xmm1, -0x60(%rbp)
jbe 0x17f6
movaps 0x5bfd(%rip), %xmm1     # 0x72a0
movaps -0x60(%rbp), %xmm2
xorps %xmm1, %xmm2
movaps %xmm2, -0x50(%rbp)
xorps %xmm2, %xmm2
cvtss2sd -0x68(%rbp), %xmm2
mulsd 0x594a(%rip), %xmm2     # 0x7008
movsd %xmm2, -0x28(%rbp)
xorps -0x40(%rbp), %xmm1
movaps %xmm1, -0x80(%rbp)
xorps %xmm0, %xmm0
mulss -0x14(%rbp), %xmm0
divss %xmm3, %xmm0
movss %xmm0, -0x10(%rbp)
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x10(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
xorps %xmm0, %xmm0
cvtsi2ss %ebx, %xmm0
movss %xmm0, -0x10(%rbp)
mulss -0x14(%rbp), %xmm0
divss -0x18(%rbp), %xmm0
movss %xmm0, -0x20(%rbp)
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movss -0x20(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x20(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movss -0x20(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x10(%rbp), %xmm0
movss -0x18(%rbp), %xmm3
incl %ebx
ucomiss %xmm0, %xmm3
ja 0x16ce
callq 0x3dab
movl $0x1, %ebx
movl $0x1, %edi
callq 0x3d34
movss -0x18(%rbp), %xmm3
ucomiss 0x5a9a(%rip), %xmm3     # 0x72b0
jbe 0x1976
movaps 0x5a7d(%rip), %xmm1     # 0x72a0
movaps -0x60(%rbp), %xmm2
xorps %xmm1, %xmm2
movaps %xmm2, -0x50(%rbp)
xorps %xmm2, %xmm2
cvtss2sd -0x68(%rbp), %xmm2
mulsd 0x57d2(%rip), %xmm2     # 0x7010
movsd %xmm2, -0x28(%rbp)
xorps -0x40(%rbp), %xmm1
movaps %xmm1, -0x80(%rbp)
xorps %xmm0, %xmm0
mulss -0x14(%rbp), %xmm0
divss %xmm3, %xmm0
movss %xmm0, -0x10(%rbp)
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x10(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
xorps %xmm0, %xmm0
cvtsi2ss %ebx, %xmm0
movss %xmm0, -0x10(%rbp)
mulss -0x14(%rbp), %xmm0
divss -0x18(%rbp), %xmm0
movss %xmm0, -0x20(%rbp)
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movss -0x20(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x20(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movss -0x20(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x10(%rbp), %xmm0
movss -0x18(%rbp), %xmm3
incl %ebx
ucomiss %xmm0, %xmm3
ja 0x184e
callq 0x3dab
xorl %edi, %edi
callq 0x3d34
movaps -0x40(%rbp), %xmm0
xorps 0x5913(%rip), %xmm0     # 0x72a0
movaps %xmm0, -0x50(%rbp)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
xorps %xmm1, %xmm1
cvtss2sd -0x68(%rbp), %xmm1
movsd %xmm1, -0x28(%rbp)
movsd 0x5661(%rip), %xmm2     # 0x7010
mulsd %xmm1, %xmm2
movsd %xmm2, -0x20(%rbp)
xorps %xmm1, %xmm1
callq 0x3d57
movsd -0x28(%rbp), %xmm2
mulsd 0x563b(%rip), %xmm2     # 0x7008
movsd %xmm2, -0x28(%rbp)
xorps %xmm1, %xmm1
movsd -0x10(%rbp), %xmm0
callq 0x3d57
movaps 0x58ba(%rip), %xmm0     # 0x72a0
xorps -0x60(%rbp), %xmm0
movaps %xmm0, -0x80(%rbp)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
xorps %xmm1, %xmm1
movsd -0x28(%rbp), %xmm2
callq 0x3d57
xorps %xmm1, %xmm1
movsd -0x10(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
callq 0x3d57
callq 0x3dab
xorl %edi, %edi
callq 0x3d34
movss -0x14(%rbp), %xmm0
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movss -0x14(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x10(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x14(%rbp), %xmm0
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movss -0x14(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x10(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
callq 0x3d57
movss -0x14(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movss -0x14(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x10(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
callq 0x3d57
movss -0x14(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movss -0x14(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x10(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
callq 0x3dab
movl $0x1, %ebx
movl $0x1, %edi
callq 0x3d34
movss -0x18(%rbp), %xmm2
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm2
jbe 0x1c66
xorps %xmm0, %xmm0
mulss -0x14(%rbp), %xmm0
divss %xmm2, %xmm0
movss %xmm0, -0x10(%rbp)
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x10(%rbp), %xmm0
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
callq 0x3d57
xorps %xmm0, %xmm0
cvtsi2ss %ebx, %xmm0
movss %xmm0, -0x10(%rbp)
mulss -0x14(%rbp), %xmm0
divss -0x18(%rbp), %xmm0
movss %xmm0, -0x30(%rbp)
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x68(%rbp)
movss -0x30(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x68(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x30(%rbp), %xmm0
callq 0x10b0
mulss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x68(%rbp)
movss -0x30(%rbp), %xmm0
callq 0x10e0
mulss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x68(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
callq 0x3d57
movss -0x10(%rbp), %xmm0
movss -0x18(%rbp), %xmm2
incl %ebx
ucomiss %xmm0, %xmm2
ja 0x1b3e
callq 0x3dab
movl $0x1, %ebx
movl $0x1, %edi
callq 0x3d34
movss -0x18(%rbp), %xmm1
ucomiss 0x562a(%rip), %xmm1     # 0x72b0
jbe 0x1db7
xorps %xmm0, %xmm0
mulss -0x14(%rbp), %xmm0
divss %xmm1, %xmm0
movss %xmm0, -0x40(%rbp)
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movss -0x40(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x10(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
callq 0x3d57
movss -0x40(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movss -0x40(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x10(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
xorps %xmm0, %xmm0
cvtsi2ss %ebx, %xmm0
movss %xmm0, -0x40(%rbp)
mulss -0x14(%rbp), %xmm0
divss -0x18(%rbp), %xmm0
movss %xmm0, -0x10(%rbp)
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x50(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
callq 0x3d57
movss -0x10(%rbp), %xmm0
callq 0x10b0
mulss -0x80(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
movss -0x10(%rbp), %xmm0
callq 0x10e0
mulss -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd -0x50(%rbp), %xmm0
movsd -0x28(%rbp), %xmm2
callq 0x3d57
movss -0x40(%rbp), %xmm0
movss -0x18(%rbp), %xmm1
incl %ebx
ucomiss %xmm0, %xmm1
ja 0x1c8f
addq $0x78, %rsp
popq %rbx
popq %rbp
jmp 0x3dab