// File: XuhuiSun95[P]My-OpenGL/main.cpp
// Function: display()
void display(void)
{
    myLoadIdentity();
    myLookAt(0.0, 10.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

    myScaled(0.15,0.15,0.15);
    
    for(int i = 0; i < 200; i++){
        mySetBackground();
        
        // Blocks
        myPushMatrix();
        myTranslated(-5.0, 0.0, 0.0);
        myRotated(45.0+2*i, 0.0, 1.0, 0.0);
        drawBlock(1.0, 1.0, 1.0, 'a', 3, 6, 8, 'h', 'i');
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(-2.5, 0.0, 0.0);
        myRotated(30.0-2*i, 0.0, 1.0, 0.0);
        drawBlock(1.0, 1.0, 1.0, 4, 1, 9, 'b', 'd', 0);
        myPopMatrix();
        
        myPushMatrix();
        myRotated(2*i, 0.0, 1.0, 0.0);
        drawBlock(1.0, 1.0, 1.0, 'k', 5, 'l', 2, 'e', 'f');
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(2.5, 0.0, 0.0);
        myRotated(-30.0-2*i, 0.0, 1.0, 0.0);
        drawBlock(1.0, 1.0, 1.0, 1, 6, 2, 4, 5, 3);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(5.0, 0.0, 0.0);
        myRotated(-45.0+2*i, 0.0, 1.0, 0.0);
        drawBlock(1.0, 1.0, 1.0, 'm', 2, 5, 4, 1, 7);
        myPopMatrix();

        // Numbers
	int j = i%20;
	
        myPushMatrix();
        myTranslated(-10.0+j, 2.0, 10.0-j);
        drawLetter(0);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(11.0-j, 2.0, 11.0-j);
        drawLetter(1);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(-12.0+j, 2.0, 12.0-j);
        drawLetter(2);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(13.0-j, 2.0, 13.0-j);
        drawLetter(3);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(-14.0+j, 2.0, 14.0-j);
        drawLetter(4);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(15.0-j, 2.0, 15.0-j);
        drawLetter(5);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(-16.0+j, 2.0, 16.0-j);
        drawLetter(6);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(17.0-j, 2.0, 17.0-j);
        drawLetter(7);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(-18.0+j, 2.0, 18.0-j);
        drawLetter(8);
        myPopMatrix();
        
        myPushMatrix();
        myTranslated(19.0-j, 2.0, 19.0-j);
        drawLetter(9);
        myPopMatrix();
        
        mySwapBuffers();
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
callq 0x45e0
xorps %xmm8, %xmm8
movsd 0xa277(%rip), %xmm2     # 0xe210
movsd 0xa09f(%rip), %xmm7     # 0xe040
movaps %xmm8, %xmm0
movaps %xmm2, %xmm1
movaps %xmm8, %xmm3
movaps %xmm8, %xmm4
movaps %xmm8, %xmm5
movaps %xmm8, %xmm6
movsd %xmm8, (%rsp)
callq 0x4780
movsd 0xa0fd(%rip), %xmm2     # 0xe0c8
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x4e40
movl $0x0, -0x4(%rbp)
cmpl $0xc8, -0x4(%rbp)
jge 0x44e1
callq 0x4dd0
callq 0x5860
movsd 0xa2b4(%rip), %xmm0     # 0xe2b0
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x4c50
movl -0x4(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm1
movsd 0xa160(%rip), %xmm0     # 0xe178
addsd %xmm1, %xmm0
xorps %xmm3, %xmm3
movsd 0xa019(%rip), %xmm2     # 0xe040
movaps %xmm3, %xmm1
callq 0x4fb0
movss 0xa2b1(%rip), %xmm2     # 0xe2e8
movl $0x61, %edi
movl $0x3, %esi
movl $0x6, %edx
movl $0x8, %ecx
movl $0x68, %r8d
movl $0x69, %r9d
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3620
callq 0x5950
callq 0x5860
movsd 0xa234(%rip), %xmm0     # 0xe2a8
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x4c50
movl -0x4(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm1
movsd 0xa210(%rip), %xmm0     # 0xe2a0
subsd %xmm1, %xmm0
xorps %xmm3, %xmm3
movsd 0x9fa1(%rip), %xmm2     # 0xe040
movaps %xmm3, %xmm1
callq 0x4fb0
movss 0xa239(%rip), %xmm2     # 0xe2e8
movl $0x4, %edi
movl $0x1, %esi
movl $0x9, %edx
movl $0x62, %ecx
movl $0x64, %r8d
xorl %r9d, %r9d
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3620
callq 0x5950
callq 0x5860
movl -0x4(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm0
xorps %xmm3, %xmm3
movsd 0x9f4b(%rip), %xmm2     # 0xe040
movaps %xmm3, %xmm1
callq 0x4fb0
movss 0xa1e3(%rip), %xmm2     # 0xe2e8
movl $0x6b, %edi
movl $0x5, %esi
movl $0x6c, %edx
movl $0x2, %ecx
movl $0x65, %r8d
movl $0x66, %r9d
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3620
callq 0x5950
callq 0x5860
movsd 0xa156(%rip), %xmm0     # 0xe298
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x4c50
movl -0x4(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm1
movsd 0xa132(%rip), %xmm0     # 0xe290
subsd %xmm1, %xmm0
xorps %xmm3, %xmm3
movsd 0x9ed3(%rip), %xmm2     # 0xe040
movaps %xmm3, %xmm1
callq 0x4fb0
movss 0xa16b(%rip), %xmm2     # 0xe2e8
movl $0x1, %edi
movl $0x6, %esi
movl $0x2, %edx
movl $0x4, %ecx
movl $0x5, %r8d
movl $0x3, %r9d
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3620
callq 0x5950
callq 0x5860
movsd 0xa0ce(%rip), %xmm0     # 0xe288
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x4c50
movl -0x4(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm1
movsd 0x9fb2(%rip), %xmm0     # 0xe188
addsd %xmm1, %xmm0
xorps %xmm3, %xmm3
movsd 0x9e5b(%rip), %xmm2     # 0xe040
movaps %xmm3, %xmm1
callq 0x4fb0
movss 0xa0f3(%rip), %xmm2     # 0xe2e8
movl $0x6d, %edi
movl $0x2, %esi
movl $0x5, %edx
movl $0x4, %ecx
movl $0x1, %r8d
movl $0x7, %r9d
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3620
callq 0x5950
movl -0x4(%rbp), %eax
movl $0x14, %ecx
cltd
idivl %ecx
movl %edx, -0x8(%rbp)
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0xa03b(%rip), %xmm0     # 0xe280
addsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9fba(%rip), %xmm2     # 0xe210
subsd %xmm1, %xmm2
movsd 0x9f4e(%rip), %xmm1     # 0xe1b0
callq 0x4c50
xorl %edi, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9ff3(%rip), %xmm0     # 0xe278
subsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9fe2(%rip), %xmm2     # 0xe278
subsd %xmm1, %xmm2
movsd 0x9f0e(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x1, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9fa8(%rip), %xmm0     # 0xe270
addsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9f8f(%rip), %xmm2     # 0xe268
subsd %xmm1, %xmm2
movsd 0x9ecb(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x2, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9f55(%rip), %xmm0     # 0xe260
subsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9f44(%rip), %xmm2     # 0xe260
subsd %xmm1, %xmm2
movsd 0x9e88(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x3, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9f0a(%rip), %xmm0     # 0xe258
addsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9ef1(%rip), %xmm2     # 0xe250
subsd %xmm1, %xmm2
movsd 0x9e45(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x4, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9eb7(%rip), %xmm0     # 0xe248
subsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9ea6(%rip), %xmm2     # 0xe248
subsd %xmm1, %xmm2
movsd 0x9e02(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x5, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9e6c(%rip), %xmm0     # 0xe240
addsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9e53(%rip), %xmm2     # 0xe238
subsd %xmm1, %xmm2
movsd 0x9dbf(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x6, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9e19(%rip), %xmm0     # 0xe230
subsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9e08(%rip), %xmm2     # 0xe230
subsd %xmm1, %xmm2
movsd 0x9d7c(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x7, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9dce(%rip), %xmm0     # 0xe228
addsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9db5(%rip), %xmm2     # 0xe220
subsd %xmm1, %xmm2
movsd 0x9d39(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x8, %edi
callq 0x2630
callq 0x5950
callq 0x5860
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9d7b(%rip), %xmm0     # 0xe218
subsd %xmm1, %xmm0
cvtsi2sdl -0x8(%rbp), %xmm1
movsd 0x9d6a(%rip), %xmm2     # 0xe218
subsd %xmm1, %xmm2
movsd 0x9cf6(%rip), %xmm1     # 0xe1b0
callq 0x4c50
movl $0x9, %edi
callq 0x2630
callq 0x5950
callq 0x5a00
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x3fdd
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)