// File: /workspace/github_cpp_makefile_star2_O2/KellerMartins[P]PDS2-Pacman/source/game/game.cpp
// Function: Game::Init(int, int, bool, RenderManager::BlurQuality)
void Init(int screenWidth, int screenHeight, bool fullscreen, RenderManager::BlurQuality quality){
        RenderManager::Init(screenWidth, screenHeight, fullscreen, "Pacman Remake - PDS2");
        RenderManager::SetBloomQuality(quality);
        RenderManager::SetCameraOffset((Vector3){0.0f, 18.5237f, 7.3416f});

        Mapa::CarregaArquivo("assets/maps/mapa1.txt");

        pacman = new Pacman(Mapa::GetPlayerSpawn().x,Mapa::GetPlayerSpawn().y);

        Vector2 enemyPos;
        if(Mapa::GetEnemySpawn(0, enemyPos))
            Enemy::AdicionaInimigo(new Blinky(enemyPos.x,enemyPos.y));

        if(Mapa::GetEnemySpawn(1, enemyPos))
            Enemy::AdicionaInimigo(new Pinky(enemyPos.x,enemyPos.y));

        if(Mapa::GetEnemySpawn(2, enemyPos))
            Enemy::AdicionaInimigo(new Inky(enemyPos.x,enemyPos.y));

        if(Mapa::GetEnemySpawn(3, enemyPos))
            Enemy::AdicionaInimigo(new Clyde(enemyPos.x,enemyPos.y));

        SetState(Menu);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
movl %ecx, %ebx
movl %edx, %r12d
movl %esi, %r14d
movl %edi, %r15d
leaq 0x8da4a(%rip), %rsi     # 0x9814b
leaq -0x80(%rbp), %rdi
leaq -0x28(%rbp), %rdx
callq 0x8310
movzbl %r12b, %edx
leaq -0x80(%rbp), %rcx
movl %r15d, %edi
movl %r14d, %esi
callq 0xe3b0
leaq -0x80(%rbp), %rdi
callq 0x83a0
movl %ebx, %edi
callq 0xe940
movsd 0x8db57(%rip), %xmm0    # 0x98290
movss 0x8db7f(%rip), %xmm1    # 0x982c0
callq 0xee52
leaq 0x8dbeb(%rip), %rsi     # 0x98338
leaq -0x60(%rbp), %rdi
leaq -0x28(%rbp), %rdx
callq 0x8310
leaq -0x60(%rbp), %rdi
callq 0xb5de
leaq -0x60(%rbp), %rdi
callq 0x83a0
movl $0x380, %edi            # imm = 0x380
callq 0x8860
movq %rax, %rbx
callq 0xc036
movaps %xmm0, -0x40(%rbp)
callq 0xc036
cvttss2si -0x40(%rbp), %esi
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
cvttss2si %xmm0, %edx
movq %rbx, %rdi
callq 0xcb88
movq %rbx, 0xce6b5(%rip)     # 0xd8e58
leaq -0x28(%rbp), %rsi
xorl %edi, %edi
callq 0xc04a
testb %al, %al
je 0xa7d9
movl $0x2f8, %edi            # imm = 0x2F8
callq 0x8860
cvttss2si -0x28(%rbp), %esi
movq %rax, %rbx
cvttss2si -0x24(%rbp), %edx
movq %rax, %rdi
callq 0x107b4
movq %rbx, %rdi
callq 0x9f5a
pushq $0x1
popq %rdi
leaq -0x28(%rbp), %rsi
callq 0xc04a
testb %al, %al
je 0xa810
movl $0x2f8, %edi            # imm = 0x2F8
callq 0x8860
cvttss2si -0x28(%rbp), %esi
movq %rax, %rbx
cvttss2si -0x24(%rbp), %edx
movq %rax, %rdi
callq 0x10a7c
movq %rbx, %rdi
callq 0x9f5a
pushq $0x2
popq %rdi
leaq -0x28(%rbp), %rsi
callq 0xc04a
testb %al, %al
je 0xa847
movl $0x2f8, %edi            # imm = 0x2F8
callq 0x8860
cvttss2si -0x28(%rbp), %esi
movq %rax, %rbx
cvttss2si -0x24(%rbp), %edx
movq %rax, %rdi
callq 0x10970
movq %rbx, %rdi
callq 0x9f5a
pushq $0x3
popq %rdi
leaq -0x28(%rbp), %rsi
callq 0xc04a
testb %al, %al
je 0xa87e
movl $0x2f8, %edi            # imm = 0x2F8
callq 0x8860
cvttss2si -0x28(%rbp), %esi
movq %rax, %rbx
cvttss2si -0x24(%rbp), %edx
movq %rax, %rdi
callq 0x10874
movq %rbx, %rdi
callq 0x9f5a
pushq $0x1
popq %rdi
callq 0xa8db
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa899
jmp 0xa899
jmp 0xa899
movq %rax, %r14
movl $0x2f8, %esi            # imm = 0x2F8
jmp 0xa8cb
jmp 0xa8c3
movq %rax, %r14
leaq -0x60(%rbp), %rdi
jmp 0xa8b7
jmp 0xa8be
movq %rax, %r14
leaq -0x80(%rbp), %rdi
callq 0x83a0
jmp 0xa8d3
movq %rax, %r14
jmp 0xa8d3
movq %rax, %r14
movl $0x380, %esi            # imm = 0x380
movq %rbx, %rdi
callq 0x8890
movq %r14, %rdi
callq 0x8ed0