// File: KellerMartins[P]PDS2-Pacman/source/game/game.cpp
// Function: Game::GameInProgressStateUpdate()
void GameInProgressStateUpdate(){
        GameEvents::TriggerUpdate();
        std::ostringstream scoreString;
        scoreString << "Score:" << pacman->GetPontuacao();
        UI::DrawTextCentered(scoreString.str(), 0.5, 0.05, 5, 0.5, RAYWHITE);
        for(unsigned i=0; i<pacman->GetVidas(); i++)
            UI::DrawImage("assets/interface/pacman_icon.png", 0.05 + i*0.05, 0.9, 0.1, 0.1);

        if(!pacman->IsAlive()){
            if(restartTimer < 0)
                restartTimer = 0;

            restartTimer += GetFrameTime();

            if(restartTimer >= 3){
                if(pacman->GetVidas() == 0){
                    SetState(GameOver);
                }else{
                    GameEvents::TriggerRestart();
                    SetState(GameStart);
                }
            }
        }
        else if(Mapa::GetPontosRestantes() == 0){
            SetState(LevelCleared);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
callq 0xe520
leaq -0x178(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x9b10
movq -0x1e8(%rbp), %rdi
leaq 0x978b8(%rip), %rsi     # 0xa52c9
callq 0x9890
movq %rax, -0x1e0(%rbp)
jmp 0xda1f
movq 0xdd472(%rip), %rdi     # 0xeae98
callq 0x147f0
movl %eax, -0x1ec(%rbp)
jmp 0xda33
movl -0x1ec(%rbp), %esi
movq -0x1e0(%rbp), %rdi
callq 0x9af0
jmp 0xda47
leaq -0x1a8(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x9900
jmp 0xda5c
movb $-0xb, -0x1ac(%rbp)
movb $-0xb, -0x1ab(%rbp)
movb $-0xb, -0x1aa(%rbp)
movb $-0x1, -0x1a9(%rbp)
movl -0x1ac(%rbp), %esi
leaq -0x1a8(%rbp), %rdi
movss 0x97767(%rip), %xmm1    # 0xa51f4
movss 0x9757f(%rip), %xmm2    # 0xa5014
movss 0x97743(%rip), %xmm3    # 0xa51e0
movaps %xmm3, %xmm0
callq 0x1a750
jmp 0xdaa7
leaq -0x1a8(%rbp), %rdi
callq 0x9530
movl $0x0, -0x1b0(%rbp)
movl -0x1b0(%rbp), %eax
movl %eax, -0x1f4(%rbp)
movq 0xdd3c8(%rip), %rdi     # 0xeae98
callq 0x14810
movl %eax, -0x1f0(%rbp)
jmp 0xdadd
movl -0x1f4(%rbp), %eax
movl -0x1f0(%rbp), %ecx
cmpl %ecx, %eax
jae 0xdc09
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x9f60
movq -0x200(%rbp), %rdx
leaq 0x977be(%rip), %rsi     # 0xa52d0
leaq -0x1d0(%rbp), %rdi
callq 0x9b20
jmp 0xdb20
movl -0x1b0(%rbp), %eax
cvtsi2sd %rax, %xmm0
movsd 0x976ed(%rip), %xmm1    # 0xa5220
mulsd %xmm1, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
leaq -0x1d0(%rbp), %rdi
movss 0x976aa(%rip), %xmm1    # 0xa51f8
movss 0x976a6(%rip), %xmm3    # 0xa51fc
movaps %xmm3, %xmm2
callq 0x1a590
jmp 0xdb60
leaq -0x1d0(%rbp), %rdi
callq 0x9530
leaq -0x1d1(%rbp), %rdi
callq 0x9960
movl -0x1b0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1b0(%rbp)
jmp 0xdabd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x180(%rbp)
movl %eax, -0x184(%rbp)
jmp 0xdd09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x180(%rbp)
movl %eax, -0x184(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x9530
jmp 0xdd09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x180(%rbp)
movl %eax, -0x184(%rbp)
jmp 0xdbf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x180(%rbp)
movl %eax, -0x184(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x9530
leaq -0x1d1(%rbp), %rdi
callq 0x9960
jmp 0xdd09
movq 0xdd288(%rip), %rdi     # 0xeae98
callq 0x147d0
movb %al, -0x201(%rbp)
jmp 0xdc1d
movb -0x201(%rbp), %al
testb $0x1, %al
jne 0xdccc
jmp 0xdc2d
xorps %xmm0, %xmm0
ucomisd 0xdd288(%rip), %xmm0    # 0xeaec0
jbe 0xdc45
xorps %xmm0, %xmm0
movsd %xmm0, 0xdd27b(%rip)    # 0xeaec0
callq 0x3b476
movss %xmm0, -0x208(%rbp)
jmp 0xdc54
movss -0x208(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd 0xdd258(%rip), %xmm0    # 0xeaec0
movsd %xmm0, 0xdd250(%rip)    # 0xeaec0
movsd 0xdd248(%rip), %xmm0    # 0xeaec0
movsd 0x974e8(%rip), %xmm1    # 0xa5168
ucomisd %xmm1, %xmm0
jb 0xdcca
movq 0xdd20b(%rip), %rdi     # 0xeae98
callq 0x14810
movl %eax, -0x20c(%rbp)
jmp 0xdc9a
movl -0x20c(%rbp), %eax
cmpl $0x0, %eax
jne 0xdcb3
movl $0x5, %edi
callq 0xd4d0
jmp 0xdcb1
jmp 0xdcc8
callq 0xe5a0
jmp 0xdcba
movl $0x2, %edi
callq 0xd4d0
jmp 0xdcc6
jmp 0xdcc8
jmp 0xdcca
jmp 0xdcf4
callq 0x104b0
movl %eax, -0x210(%rbp)
jmp 0xdcd9
movl -0x210(%rbp), %eax
cmpl $0x0, %eax
jne 0xdcf2
movl $0x4, %edi
callq 0xd4d0
jmp 0xdcf0
jmp 0xdcf2
jmp 0xdcf4
leaq -0x178(%rbp), %rdi
callq 0x91c0
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
leaq -0x178(%rbp), %rdi
callq 0x91c0
movq -0x180(%rbp), %rdi
callq 0x9f50
nopw %cs:(%rax,%rax)