// File: XuhuiSun95[P]My-OpenGL/main.cpp
// Function: drawBlock(float, float, float, char, char, char, char, char, char)
void drawBlock(float length, float height, float depth, char front, char back, char top , char bot, char left, char right)
{
    //draw inner cube
    drawCube(0.9*length, 0.9*height, 0.9*depth);
    
    //draw edges
    myPushMatrix();
    myTranslated(0.0, 0.475*height, 0.475*depth);
    drawCube(1.0*length, 0.05*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(0.0, -0.475*height, 0.475*depth);
    drawCube(1.0*length, 0.05*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(0.0, 0.475*height, -0.475*depth);
    drawCube(1.0*length, 0.05*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(0.0, -0.475*height, -0.475*depth);
    drawCube(1.0*length, 0.05*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(0.475*length, 0.0, 0.475*depth);
    drawCube(0.05*length, 1.0*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(-0.475*length, 0.0, 0.475*depth);
    drawCube(0.05*length, 1.0*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(-0.475*length, 0.0, -0.475*depth);
    drawCube(0.05*length, 1.0*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(0.475*length, 0.0, -0.475*depth);
    drawCube(0.05*length, 1.0*height, 0.05*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(0.475*length, 0.475*height, 0.0);
    drawCube(0.05*length, 0.05*height, 1.0*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(-0.475*length, 0.475*height, 0.0);
    drawCube(0.05*length, 0.05*height, 1.0*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(0.475*length, -0.475*height, 0.0);
    drawCube(0.05*length, 0.05*height, 1.0*depth);
    myPopMatrix();
    
    myPushMatrix();
    myTranslated(-0.475*length, -0.475*height, 0.0);
    drawCube(0.05*length, 0.05*height, 1.0*depth);
    myPopMatrix();

    // FRONT
    myPushMatrix();
    myTranslated(0.0, 0.0, 0.475*depth);
    myScaled(length, height, depth);
    drawLetter(front);
    myPopMatrix();
    
    // BACK
    myPushMatrix();
    myTranslated(0.0, 0.0, -0.475*depth);
    myRotated(180.0, 0.0, 1.0, 0.0);
    myScaled(length, height, depth);
    drawLetter(back);
    myPopMatrix();
    
    // TOP
    myPushMatrix();
    myTranslated(0.0, 0.475*height, 0.0);
    myRotated(-90.0, 1.0, 0.0, 0.0);
    myScaled(length, height, depth);
    drawLetter(top);
    myPopMatrix();
    
    // BOTTOM
    myPushMatrix();
    myTranslated(0.0, -0.475*height, 0.0);
    myRotated(90.0, 1.0, 0.0, 0.0);
    myScaled(length, height, depth);
    drawLetter(bot);
    myPopMatrix();
    
    // LEFT
    myPushMatrix();
    myTranslated(-0.475*length, 0.0, 0.0);
    myRotated(90.0, 0.0, -1.0, 0.0);
    myScaled(length, height, depth);
    drawLetter(left);
    myPopMatrix();
    
    // RIGHT
    myPushMatrix();
    myTranslated(0.475*length, 0.0, 0.0);
    myRotated(90.0, 0.0, 1.0, 0.0);
    myScaled(length, height, depth);
    drawLetter(right);
    myPopMatrix();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %r8d, -0x24(%rbp)
movl %ecx, %eax
movl -0x24(%rbp), %ecx
movl %eax, -0x20(%rbp)
movl %edx, %eax
movl -0x20(%rbp), %edx
movl %eax, -0x1c(%rbp)
movl %esi, %eax
movl -0x1c(%rbp), %esi
movl %eax, -0x18(%rbp)
movl %edi, %r8d
movl -0x18(%rbp), %edi
movb %r9b, %al
movss %xmm0, -0x4(%rbp)
movss %xmm1, -0x8(%rbp)
movss %xmm2, -0xc(%rbp)
movb %r8b, -0xd(%rbp)
movb %dil, -0xe(%rbp)
movb %sil, -0xf(%rbp)
movb %dl, -0x10(%rbp)
movb %cl, -0x11(%rbp)
movb %al, -0x12(%rbp)
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xab7e(%rip), %xmm0     # 0xe200
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xab69(%rip), %xmm1     # 0xe200
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xab54(%rip), %xmm2     # 0xe200
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5860
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xab15(%rip), %xmm1     # 0xe1e0
mulsd %xmm0, %xmm1
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xab00(%rip), %xmm2     # 0xe1e0
mulsd %xmm0, %xmm2
xorps %xmm0, %xmm0
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa943(%rip), %xmm0     # 0xe040
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa91e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa909(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xaaa5(%rip), %xmm1     # 0xe1f0
mulsd %xmm0, %xmm1
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xaa80(%rip), %xmm2     # 0xe1e0
mulsd %xmm0, %xmm2
xorps %xmm0, %xmm0
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa8c3(%rip), %xmm0     # 0xe040
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa89e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa889(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xaa15(%rip), %xmm1     # 0xe1e0
mulsd %xmm0, %xmm1
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xaa10(%rip), %xmm2     # 0xe1f0
mulsd %xmm0, %xmm2
xorps %xmm0, %xmm0
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa843(%rip), %xmm0     # 0xe040
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa81e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa809(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xa9a5(%rip), %xmm1     # 0xe1f0
mulsd %xmm0, %xmm1
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xa990(%rip), %xmm2     # 0xe1f0
mulsd %xmm0, %xmm2
xorps %xmm0, %xmm0
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa7c3(%rip), %xmm0     # 0xe040
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa79e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa789(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa915(%rip), %xmm0     # 0xe1e0
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0xa900(%rip), %xmm2     # 0xe1e0
mulsd %xmm1, %xmm2
xorps %xmm1, %xmm1
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa733(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa72e(%rip), %xmm1     # 0xe040
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa709(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa8a5(%rip), %xmm0     # 0xe1f0
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0xa880(%rip), %xmm2     # 0xe1e0
mulsd %xmm1, %xmm2
xorps %xmm1, %xmm1
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa6b3(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa6ae(%rip), %xmm1     # 0xe040
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa689(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa825(%rip), %xmm0     # 0xe1f0
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0xa810(%rip), %xmm2     # 0xe1f0
mulsd %xmm1, %xmm2
xorps %xmm1, %xmm1
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa633(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa62e(%rip), %xmm1     # 0xe040
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa609(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa795(%rip), %xmm0     # 0xe1e0
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0xa790(%rip), %xmm2     # 0xe1f0
mulsd %xmm1, %xmm2
xorps %xmm1, %xmm1
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa5b3(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa5ae(%rip), %xmm1     # 0xe040
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa589(%rip), %xmm2     # 0xe030
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa715(%rip), %xmm0     # 0xe1e0
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa700(%rip), %xmm1     # 0xe1e0
mulsd %xmm2, %xmm1
xorps %xmm2, %xmm2
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa533(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa51e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa519(%rip), %xmm2     # 0xe040
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa6a5(%rip), %xmm0     # 0xe1f0
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa680(%rip), %xmm1     # 0xe1e0
mulsd %xmm2, %xmm1
xorps %xmm2, %xmm2
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa4b3(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa49e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa499(%rip), %xmm2     # 0xe040
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa615(%rip), %xmm0     # 0xe1e0
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa610(%rip), %xmm1     # 0xe1f0
mulsd %xmm2, %xmm1
xorps %xmm2, %xmm2
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa433(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa41e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa419(%rip), %xmm2     # 0xe040
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa5a5(%rip), %xmm0     # 0xe1f0
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa590(%rip), %xmm1     # 0xe1f0
mulsd %xmm2, %xmm1
xorps %xmm2, %xmm2
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa3b3(%rip), %xmm0     # 0xe030
mulsd %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0xa39e(%rip), %xmm1     # 0xe030
mulsd %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm3
movsd 0xa399(%rip), %xmm2     # 0xe040
mulsd %xmm3, %xmm2
callq 0x1330
callq 0x5950
callq 0x5860
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xa515(%rip), %xmm2     # 0xe1e0
mulsd %xmm0, %xmm2
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x4c50
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
callq 0x4e40
movsbl -0xd(%rbp), %edi
callq 0x2630
callq 0x5950
callq 0x5860
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xa4d2(%rip), %xmm2     # 0xe1f0
mulsd %xmm0, %xmm2
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x4c50
movsd 0xa4c3(%rip), %xmm0     # 0xe1f8
xorps %xmm3, %xmm3
movsd 0xa300(%rip), %xmm2     # 0xe040
movaps %xmm3, %xmm1
callq 0x4fb0
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
callq 0x4e40
movsbl -0xe(%rbp), %edi
callq 0x2630
callq 0x5950
callq 0x5860
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xa454(%rip), %xmm1     # 0xe1e0
mulsd %xmm0, %xmm1
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
callq 0x4c50
movsd 0xa2f5(%rip), %xmm0     # 0xe098
movsd 0xa295(%rip), %xmm1     # 0xe040
xorps %xmm3, %xmm3
movaps %xmm3, %xmm2
callq 0x4fb0
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
callq 0x4e40
movsbl -0xf(%rbp), %edi
callq 0x2630
callq 0x5950
callq 0x5860
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xa3f6(%rip), %xmm1     # 0xe1f0
mulsd %xmm0, %xmm1
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
callq 0x4c50
movsd 0xa3c7(%rip), %xmm0     # 0xe1d8
movsd 0xa227(%rip), %xmm1     # 0xe040
xorps %xmm3, %xmm3
movaps %xmm3, %xmm2
callq 0x4fb0
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
callq 0x4e40
movsbl -0x10(%rbp), %edi
callq 0x2630
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa388(%rip), %xmm0     # 0xe1f0
mulsd %xmm1, %xmm0
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x4c50
movsd 0xa359(%rip), %xmm0     # 0xe1d8
xorps %xmm3, %xmm3
movsd 0xa35e(%rip), %xmm2     # 0xe1e8
movaps %xmm3, %xmm1
callq 0x4fb0
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
callq 0x4e40
movsbl -0x11(%rbp), %edi
callq 0x2630
callq 0x5950
callq 0x5860
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xa30a(%rip), %xmm0     # 0xe1e0
mulsd %xmm1, %xmm0
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x4c50
movsd 0xa2eb(%rip), %xmm0     # 0xe1d8
xorps %xmm3, %xmm3
movsd 0xa148(%rip), %xmm2     # 0xe040
movaps %xmm3, %xmm1
callq 0x4fb0
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0xc(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
callq 0x4e40
movsbl -0x12(%rbp), %edi
callq 0x2630
callq 0x5950
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)