// File: /workspace/github_cpp_makefile_star2_O3/disjukr[P]Tetris/Tetris.cc
// Function: Intro::Render()
void Intro::Render() {
    Screen* screen = Console::GetScreen();
    int width = screen -> GetWidth();
    int height = screen -> GetHeight();
    int size = Tetromino::size * 2;
    screen -> Clear(' ', BLACK, WHITE);
    if ((frame % 50) > 25)
        screen -> WriteLine(
            "Press Any Key to Start", (width - 22) >> 1, height - 7);
    for (int i = 0; i < numberOfParticle; ++i){
        Tetromino* particle = particles[i];
        rotations[i] += rotateSpeeds[i];
        if (rotations[i] > 100) {
            if (directions[i])
                particle -> RotateCW();
            else
                particle -> RotateCCW();
            rotations[i] = 0;
        }
        falls[i] += fallSpeeds[i];
        if (falls[i] > 100) {
            ++particle -> y;
            falls[i] = 0;
        }
        if (particle -> y > height) {
            delete particles[i];
            particles[i] = particle = pieceGenerator.Get();
            particle -> x = random.Get(0, width - size);
            particle -> y = -size;
            ResetParticle(i);
        }
        particle -> Render(*screen, particle -> x, particle -> y);
    }
    RenderTitle((width - titleWidth) >> 1, 6);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
callq 0x6eac
movq %rax, %r15
movq %rax, %rdi
callq 0x698a
movl %eax, %r14d
movq %r15, %rdi
callq 0x6992
movl %eax, %r12d
movq %r15, %rdi
movl $0x20, %esi
movl $0x3, %edx
movl $0x1, %ecx
callq 0x6d1e
movslq 0xc(%rbx), %rax
imulq $0x51eb851f, %rax, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x24, %rcx
addl %edx, %ecx
imull $0x32, %ecx, %ecx
subl %ecx, %eax
cmpl $0x1a, %eax
jl 0x3971
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x4995(%rip), %rsi      # 0x82c7
leaq 0x49a4(%rip), %rdx      # 0x82dd
leaq -0x68(%rbp), %rdi
callq 0x5b96
movq %r14, %r13
leal -0x16(%r14), %edx
sarl %edx
leal -0x7(%r12), %ecx
movq %r15, %rdi
leaq -0x68(%rbp), %rsi
callq 0x6a70
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
movq %r13, %r14
je 0x3971
callq 0x3110
leaq 0x30(%rbx), %rax
movq %rax, -0x48(%rbp)
leaq 0x18(%rbx), %rax
movq %rax, -0x40(%rbp)
movq %r14, -0x38(%rbp)
leal -0x8(%r14), %eax
movl %eax, -0x2c(%rbp)
xorl %r14d, %r14d
movq 0x80(%rbx,%r14,8), %r13
movl 0xd0(%rbx,%r14,4), %eax
addl 0xf8(%rbx,%r14,4), %eax
movl %eax, 0xd0(%rbx,%r14,4)
cmpl $0x65, %eax
jl 0x39d7
movzbl 0x170(%rbx,%r14), %eax
movq (%r13), %rcx
xorl $0x1, %eax
movq %r13, %rdi
callq *0x18(%rcx,%rax,8)
movl $0x0, 0xd0(%rbx,%r14,4)
movl 0x120(%rbx,%r14,4), %eax
addl 0x148(%rbx,%r14,4), %eax
movl %eax, 0x120(%rbx,%r14,4)
cmpl $0x65, %eax
jl 0x3a04
incl 0x10(%r13)
movl $0x0, 0x120(%rbx,%r14,4)
movl 0x10(%r13), %ecx
cmpl %r12d, %ecx
jle 0x3a5d
movq 0x80(%rbx,%r14,8), %rdi
testq %rdi, %rdi
je 0x3a20
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x48(%rbp), %rdi
callq 0x6096
movq %rax, %r13
movq %rax, 0x80(%rbx,%r14,8)
movq -0x40(%rbp), %rdi
xorl %esi, %esi
movl -0x2c(%rbp), %edx
callq 0x5e98
movl %eax, 0xc(%r13)
movl $0xfffffff8, 0x10(%r13) # imm = 0xFFFFFFF8
movq %rbx, %rdi
movl %r14d, %esi
callq 0x3788
movl 0x10(%r13), %ecx
movl 0xc(%r13), %edx
movq (%r13), %rax
movq %r13, %rdi
movq %r15, %rsi
callq *0x30(%rax)
incq %r14
cmpq $0xa, %r14
jne 0x398f
movq -0x38(%rbp), %rsi
addl $-0x40, %esi
sarl %esi
movq %rbx, %rdi
movl $0x6, %edx
callq 0x3abe
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x3ab5
callq 0x3110
movq %rbx, %rdi
callq 0x3220
nop