// File: XuhuiSun95[P]My-OpenGL/main.cpp
// Function: drawCube(double, double, double)
void drawCube (double length, double height, double depth)
{
    // FRONT
    myBegin(POLYGON);
    myVertex3d(  0.5*length, -0.5*height, 0.5*depth );
    myVertex3d(  0.5*length,  0.5*height, 0.5*depth );
    myVertex3d( -0.5*length,  0.5*height, 0.5*depth );
    myVertex3d( -0.5*length, -0.5*height, 0.5*depth );
    myEnd();
    
    // BACK
    myBegin(POLYGON);
    myVertex3d(  0.5*length, -0.5*height, -0.5*depth );
    myVertex3d(  0.5*length,  0.5*height, -0.5*depth );
    myVertex3d( -0.5*length,  0.5*height, -0.5*depth);
    myVertex3d( -0.5*length, -0.5*height, -0.5*depth );
    myEnd();
    
    // RIGHT
    myBegin(POLYGON);
    myVertex3d( 0.5*length, -0.5*height, -0.5*depth );
    myVertex3d( 0.5*length,  0.5*height, -0.5*depth );
    myVertex3d( 0.5*length,  0.5*height,  0.5*depth );
    myVertex3d( 0.5*length, -0.5*height,  0.5*depth );
    myEnd();
    
    // LEFT
    myBegin(POLYGON);
    myVertex3d( -0.5*length, -0.5*height,  0.5*depth );
    myVertex3d( -0.5*length,  0.5*height,  0.5*depth );
    myVertex3d( -0.5*length,  0.5*height, -0.5*depth );
    myVertex3d( -0.5*length, -0.5*height, -0.5*depth );
    myEnd();
    
    // TOP
    myBegin(POLYGON);
    myVertex3d(  0.5*length,  0.5*height,  0.5*depth );
    myVertex3d(  0.5*length,  0.5*height, -0.5*depth );
    myVertex3d( -0.5*length,  0.5*height, -0.5*depth );
    myVertex3d( -0.5*length,  0.5*height,  0.5*depth );
    myEnd();
    
    // BOTTOM
    myBegin(POLYGON);
    myVertex3d(  0.5*length, -0.5*height, -0.5*depth );
    myVertex3d(  0.5*length, -0.5*height,  0.5*depth );
    myVertex3d( -0.5*length, -0.5*height,  0.5*depth );
    myVertex3d( -0.5*length, -0.5*height, -0.5*depth );
    myEnd();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movsd %xmm0, -0x8(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x18(%rbp)
xorl %edi, %edi
callq 0x5370
movsd 0xccba(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcca5(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xcca0(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcc8e(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcc81(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xcc74(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcc5a(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xcc55(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xcc48(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcc2e(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xcc21(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xcc1c(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
callq 0x53f0
xorl %edi, %edi
callq 0x5370
movsd 0xcbfe(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcbe9(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xcbdc(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcbd2(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcbc5(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xcbb0(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcb9e(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xcb99(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xcb84(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcb72(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xcb65(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xcb58(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
callq 0x53f0
xorl %edi, %edi
callq 0x5370
movsd 0xcb42(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcb2d(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xcb20(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcb16(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcb09(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xcaf4(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcaea(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcadd(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xcad0(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xcabe(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xcaa9(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xcaa4(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
callq 0x53f0
xorl %edi, %edi
callq 0x5370
movsd 0xca7e(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xca71(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xca6c(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xca52(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xca4d(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xca40(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xca26(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xca21(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xca0c(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xc9fa(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xc9ed(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xc9e0(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
callq 0x53f0
xorl %edi, %edi
callq 0x5370
movsd 0xc9ca(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xc9bd(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xc9b0(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xc99e(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xc991(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xc97c(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xc96a(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xc965(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xc950(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xc93e(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xc939(%rip), %xmm1     # 0xe010
mulsd -0x10(%rbp), %xmm1
movsd 0xc92c(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
callq 0x53f0
xorl %edi, %edi
callq 0x5370
movsd 0xc90e(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xc8f9(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xc8ec(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xc8e2(%rip), %xmm0     # 0xe010
mulsd -0x8(%rbp), %xmm0
movsd 0xc8cd(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xc8c8(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xc8ae(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xc8a1(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xc89c(%rip), %xmm2     # 0xe010
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
movsd 0xc882(%rip), %xmm0     # 0xe008
mulsd -0x8(%rbp), %xmm0
movsd 0xc875(%rip), %xmm1     # 0xe008
mulsd -0x10(%rbp), %xmm1
movsd 0xc868(%rip), %xmm2     # 0xe008
mulsd -0x18(%rbp), %xmm2
callq 0x53a0
callq 0x53f0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)