// File: KellerMartins[P]PDS2-Pacman/source/main.cpp
// Function: OpenConfigWindow()
bool OpenConfigWindow(){ 
    #ifdef NDEBUG
    SetTraceLog(0);
    #endif
    
    SetConfigFlags(FLAG_MSAA_4X_HINT);
    InitWindow(575, 110, "Opções | Pacman Remake - PDS2");
    
    Font font = LoadFont("assets/interface/metropolis/Metropolis.fnt");
    SetTextureFilter(font.texture, FILTER_TRILINEAR);

    int resolution = 3;
    while(1){
        if(WindowShouldClose()){
            //Fecha a janela
            CloseWindow();
            return false;
        }

        //Define os retângulos dos botões da janela
        Rectangle play = { 430, 10, 135, 90 };
        Rectangle fullscr = { 175, 75, 240, 27 };
        Rectangle previousRes = { 175, 5, 20, 30 };
        Rectangle nextRes = { 405, 5, 20, 30 };
        Rectangle previousQual = { 175, 40, 20, 30 };
        Rectangle nextQual = { 405, 40, 20, 30 };

        bool clicked = IsMouseButtonPressed(MOUSE_LEFT_BUTTON);

        //Checa se clicou em um deles ou apertou a tecla correspondente ao comando
        if((CheckCollisionPointRec(GetMousePosition(), previousRes) && clicked) ||  IsKeyReleased(KEY_LEFT))
            resolution -= resolution-1>=0? 1:0;
        
        if((CheckCollisionPointRec(GetMousePosition(), nextRes) && clicked) ||  IsKeyReleased(KEY_RIGHT))
            resolution += resolution+1<=3? 1:0;

        if(CheckCollisionPointRec(GetMousePosition(), previousQual) && clicked)
            quality = (RenderManager::BlurQuality) (quality-1>=0? quality-1:quality);
        
        if(CheckCollisionPointRec(GetMousePosition(), nextQual) && clicked)
            quality = (RenderManager::BlurQuality) (quality+1<=2? quality+1:quality);
        
        if(CheckCollisionPointRec(GetMousePosition(), fullscr) && clicked)
            fullscreen = !fullscreen;
        
        if((CheckCollisionPointRec(GetMousePosition(), play) && clicked) ||  IsKeyReleased(KEY_ENTER))
            break; //Termina o loop da tela de configuraçoes
        
        //Define a resolução a ser usada
        switch(resolution){
            case 3:
                width = 1920;
                height = 1080;
            break;
            case 2:
                width = 1366;
                height = 768;
            break;
            case 1:
                width = 1280;
                height = 720;
            break;
            case 0:
            default:
                width = 800;
                height = 450;
            break;
        }
        
        //> Renderização
        BeginDrawing();

        //Define a cor de fundo
        Color settingsCol = {255,191,0,255};
        ClearBackground({35,45,60,255});
        //Renderiza o texto
        DrawTextEx(font,"Resolução", (Vector2){5,5}, 30, 1, RAYWHITE); 
        DrawTextEx(font,FormatText("%4d x %4d",width,height),(Vector2){195, 5}, 33,2, settingsCol); 

        const char* qualityString = quality==2 ?" Alta " : (quality==1? "Média" : "Baixa ");
        DrawTextEx(font,"Qualidade", (Vector2){5,40}, 30, 1, RAYWHITE); 
        DrawTextEx(font, qualityString, (Vector2){255, 40}, 33, 2, settingsCol); 

        DrawTextEx(font,"Tela cheia", (Vector2){5, 75}, 30, 1, RAYWHITE); 
        DrawTextEx(font, fullscreen? "   Ativado" : "Desativado", (Vector2){205, 75}, 33, 2, settingsCol); 
        
        //Renderiza o botão de jogar
        DrawRectangleRec(play, {255,191,0,255});
        DrawTextEx(font, "Jogar!",(Vector2){455, 40}, 30, 0, WHITE); 
        
        //Renderiza as setas de resolução
        DrawTextEx(font,"<",(Vector2){175, 5}, 33, 2, resolution>0? settingsCol : (Color)DARKGRAY); 
        DrawTextEx(font,">",(Vector2){403, 5}, 33, 2, resolution<3? settingsCol : (Color)DARKGRAY);

        //Renderiza as setas de qualidade
        DrawTextEx(font,"<",(Vector2){175, 40}, 33, 2, quality>0? settingsCol : (Color)DARKGRAY); 
        DrawTextEx(font,">",(Vector2){403, 40}, 33, 2, quality<2? settingsCol : (Color)DARKGRAY);
           
        EndDrawing();
    }
    //Fecha a janela de configurações
    CloseWindow();

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x480, %rsp            # imm = 0x480
movl $0x20, %edi
callq 0x3b8dd
movl $0x23f, %edi            # imm = 0x23F
movl $0x6e, %esi
leaq 0x9a6b2(%rip), %rdx     # 0xa5038
callq 0x39615
leaq -0x30(%rbp), %rdi
leaq 0x9a6c2(%rip), %rsi     # 0xa5058
callq 0x67bc5
movq -0x30(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x38(%rbp)
leaq -0x48(%rbp), %rax
movl $0x2, %edi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movl 0x10(%rax), %eax
movl %eax, 0x10(%rsp)
callq 0x830eb
movl $0x3, -0x4c(%rbp)
callq 0x39735
testb $0x1, %al
jne 0xa9e8
jmp 0xa9f6
callq 0x396d1
movb $0x0, -0x1(%rbp)
jmp 0xb5e6
movups 0x9a6e7(%rip), %xmm0    # 0xa50e4
movaps %xmm0, -0x60(%rbp)
movups 0x9a6ec(%rip), %xmm0    # 0xa50f4
movaps %xmm0, -0x70(%rbp)
movups 0x9a6f1(%rip), %xmm0    # 0xa5104
movaps %xmm0, -0x80(%rbp)
movups 0x9a6f6(%rip), %xmm0    # 0xa5114
movaps %xmm0, -0x90(%rbp)
movups 0x9a6f8(%rip), %xmm0    # 0xa5124
movaps %xmm0, -0xa0(%rbp)
movups 0x9a6fa(%rip), %xmm0    # 0xa5134
movaps %xmm0, -0xb0(%rbp)
xorl %edi, %edi
callq 0x3c3e8
movb %al, -0xb1(%rbp)
callq 0x3c527
movlpd %xmm0, -0xbc(%rbp)
movaps -0x80(%rbp), %xmm0
movaps %xmm0, -0xd0(%rbp)
movsd -0xbc(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
movsd -0xc8(%rbp), %xmm2
callq 0x57831
testb $0x1, %al
jne 0xaa89
jmp 0xaa9a
movb $0x1, %al
testb $0x1, -0xb1(%rbp)
movb %al, -0x41d(%rbp)
jne 0xaaaa
movl $0x107, %edi            # imm = 0x107
callq 0x3bfa8
movb %al, -0x41d(%rbp)
movb -0x41d(%rbp), %al
testb $0x1, %al
jne 0xaab6
jmp 0xaad1
movl -0x4c(%rbp), %edx
subl $0x1, %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovgel %eax, %ecx
movl -0x4c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x4c(%rbp)
callq 0x3c527
movlpd %xmm0, -0xd8(%rbp)
movaps -0x90(%rbp), %xmm0
movaps %xmm0, -0xf0(%rbp)
movsd -0xd8(%rbp), %xmm0
movsd -0xf0(%rbp), %xmm1
movsd -0xe8(%rbp), %xmm2
callq 0x57831
testb $0x1, %al
jne 0xab0f
jmp 0xab20
movb $0x1, %al
testb $0x1, -0xb1(%rbp)
movb %al, -0x41e(%rbp)
jne 0xab30
movl $0x106, %edi            # imm = 0x106
callq 0x3bfa8
movb %al, -0x41e(%rbp)
movb -0x41e(%rbp), %al
testb $0x1, %al
jne 0xab3c
jmp 0xab55
movl -0x4c(%rbp), %edx
addl $0x1, %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x3, %edx
cmovlel %ecx, %eax
addl -0x4c(%rbp), %eax
movl %eax, -0x4c(%rbp)
callq 0x3c527
movlpd %xmm0, -0xf8(%rbp)
movaps -0xa0(%rbp), %xmm0
movaps %xmm0, -0x110(%rbp)
movsd -0xf8(%rbp), %xmm0
movsd -0x110(%rbp), %xmm1
movsd -0x108(%rbp), %xmm2
callq 0x57831
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x41f(%rbp)
jne 0xab9e
jmp 0xabaa
movb -0xb1(%rbp), %al
movb %al, -0x41f(%rbp)
movb -0x41f(%rbp), %al
testb $0x1, %al
jne 0xabb6
jmp 0xabed
movl 0xddcbc(%rip), %eax     # 0xe8878
subl $0x1, %eax
cmpl $0x0, %eax
jl 0xabd5
movl 0xddcae(%rip), %eax     # 0xe8878
subl $0x1, %eax
movl %eax, -0x424(%rbp)
jmp 0xabe1
movl 0xddc9d(%rip), %eax     # 0xe8878
movl %eax, -0x424(%rbp)
movl -0x424(%rbp), %eax
movl %eax, 0xddc8b(%rip)     # 0xe8878
callq 0x3c527
movlpd %xmm0, -0x118(%rbp)
movaps -0xb0(%rbp), %xmm0
movaps %xmm0, -0x130(%rbp)
movsd -0x118(%rbp), %xmm0
movsd -0x130(%rbp), %xmm1
movsd -0x128(%rbp), %xmm2
callq 0x57831
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x425(%rbp)
jne 0xac36
jmp 0xac42
movb -0xb1(%rbp), %al
movb %al, -0x425(%rbp)
movb -0x425(%rbp), %al
testb $0x1, %al
jne 0xac4e
jmp 0xac85
movl 0xddc24(%rip), %eax     # 0xe8878
addl $0x1, %eax
cmpl $0x2, %eax
jg 0xac6d
movl 0xddc16(%rip), %eax     # 0xe8878
addl $0x1, %eax
movl %eax, -0x42c(%rbp)
jmp 0xac79
movl 0xddc05(%rip), %eax     # 0xe8878
movl %eax, -0x42c(%rbp)
movl -0x42c(%rbp), %eax
movl %eax, 0xddbf3(%rip)     # 0xe8878
callq 0x3c527
movlpd %xmm0, -0x138(%rbp)
movaps -0x70(%rbp), %xmm0
movaps %xmm0, -0x150(%rbp)
movsd -0x138(%rbp), %xmm0
movsd -0x150(%rbp), %xmm1
movsd -0x148(%rbp), %xmm2
callq 0x57831
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x42d(%rbp)
jne 0xaccb
jmp 0xacd7
movb -0xb1(%rbp), %al
movb %al, -0x42d(%rbp)
movb -0x42d(%rbp), %al
testb $0x1, %al
jne 0xace3
jmp 0xacf3
movb 0xe0178(%rip), %al      # 0xeae61
xorb $-0x1, %al
andb $0x1, %al
movb %al, 0xe016e(%rip)      # 0xeae61
callq 0x3c527
movlpd %xmm0, -0x158(%rbp)
movaps -0x60(%rbp), %xmm0
movaps %xmm0, -0x170(%rbp)
movsd -0x158(%rbp), %xmm0
movsd -0x170(%rbp), %xmm1
movsd -0x168(%rbp), %xmm2
callq 0x57831
testb $0x1, %al
jne 0xad2e
jmp 0xad3f
movb $0x1, %al
testb $0x1, -0xb1(%rbp)
movb %al, -0x42e(%rbp)
jne 0xad4f
movl $0x101, %edi            # imm = 0x101
callq 0x3bfa8
movb %al, -0x42e(%rbp)
movb -0x42e(%rbp), %al
testb $0x1, %al
jne 0xad5b
jmp 0xad60
jmp 0xb5dd
movl -0x4c(%rbp), %eax
movq %rax, -0x438(%rbp)
subq $0x3, %rax
ja 0xadcb
movq -0x438(%rbp), %rax
leaq 0x9a2aa(%rip), %rcx     # 0xa5028
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x780, 0xddadf(%rip)   # imm = 0x780
movl $0x438, 0xddad9(%rip)   # imm = 0x438
jmp 0xaddf
movl $0x556, 0xddac9(%rip)   # imm = 0x556
movl $0x300, 0xddac3(%rip)   # imm = 0x300
jmp 0xaddf
movl $0x500, 0xddab3(%rip)   # imm = 0x500
movl $0x2d0, 0xddaad(%rip)   # imm = 0x2D0
jmp 0xaddf
jmp 0xadcb
movl $0x320, 0xdda9b(%rip)   # imm = 0x320
movl $0x1c2, 0xdda95(%rip)   # imm = 0x1C2
callq 0x39a9a
movl $0xff00bfff, -0x174(%rbp) # imm = 0xFF00BFFF
movb $0x23, -0x178(%rbp)
movb $0x2d, -0x177(%rbp)
movb $0x3c, -0x176(%rbp)
movb $-0x1, -0x175(%rbp)
movl -0x178(%rbp), %edi
callq 0x39a65
movq -0x10(%rbp), %rax
movq %rax, -0x180(%rbp)
movups -0x30(%rbp), %xmm0
movups -0x20(%rbp), %xmm1
movaps %xmm1, -0x190(%rbp)
movaps %xmm0, -0x1a0(%rbp)
movl $0x40a00000, -0x1a8(%rbp) # imm = 0x40A00000
movl $0x40a00000, -0x1a4(%rbp) # imm = 0x40A00000
movb $-0xb, -0x1ac(%rbp)
movb $-0xb, -0x1ab(%rbp)
movb $-0xb, -0x1aa(%rbp)
movb $-0x1, -0x1a9(%rbp)
movsd -0x1a8(%rbp), %xmm0
movl -0x1ac(%rbp), %esi
movq -0x180(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movaps -0x1a0(%rbp), %xmm1
movaps -0x190(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x9a1e5(%rip), %rdi     # 0xa5083
movss 0x9a166(%rip), %xmm1    # 0xa500c
movss 0x9a162(%rip), %xmm2    # 0xa5010
callq 0x690a7
movq -0x10(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movups -0x30(%rbp), %xmm0
movups -0x20(%rbp), %xmm1
movaps %xmm1, -0x1d0(%rbp)
movaps %xmm0, -0x1e0(%rbp)
movl 0xdd996(%rip), %esi     # 0xe8870
movl 0xdd994(%rip), %edx     # 0xe8874
leaq 0x9a1a8(%rip), %rdi     # 0xa508f
xorl %eax, %eax
callq 0x69482
movq %rax, %rdi
movl $0x43430000, -0x1e8(%rbp) # imm = 0x43430000
movl $0x40a00000, -0x1e4(%rbp) # imm = 0x40A00000
movl -0x174(%rbp), %eax
movl %eax, -0x1ec(%rbp)
movsd -0x1e8(%rbp), %xmm0
movl -0x1ec(%rbp), %esi
movq -0x1c0(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x1e0(%rbp), %xmm1
movups -0x1d0(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
movss 0x9a0ba(%rip), %xmm1    # 0xa5004
movss 0x9a0b6(%rip), %xmm2    # 0xa5008
callq 0x690a7
cmpl $0x2, 0xdd91a(%rip)     # 0xe8878
jne 0xaf70
leaq 0x9a132(%rip), %rax     # 0xa5099
movq %rax, -0x440(%rbp)
jmp 0xafa7
cmpl $0x1, 0xdd901(%rip)     # 0xe8878
jne 0xaf89
leaq 0x9a120(%rip), %rax     # 0xa50a0
movq %rax, -0x448(%rbp)
jmp 0xaf99
leaq 0x9a117(%rip), %rax     # 0xa50a7
movq %rax, -0x448(%rbp)
jmp 0xaf99
movq -0x448(%rbp), %rax
movq %rax, -0x440(%rbp)
movq -0x440(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x200(%rbp)
movups -0x30(%rbp), %xmm0
movups -0x20(%rbp), %xmm1
movaps %xmm1, -0x210(%rbp)
movaps %xmm0, -0x220(%rbp)
movl $0x40a00000, -0x228(%rbp) # imm = 0x40A00000
movl $0x42200000, -0x224(%rbp) # imm = 0x42200000
movb $-0xb, -0x22c(%rbp)
movb $-0xb, -0x22b(%rbp)
movb $-0xb, -0x22a(%rbp)
movb $-0x1, -0x229(%rbp)
movsd -0x228(%rbp), %xmm0
movl -0x22c(%rbp), %esi
movq -0x200(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movaps -0x220(%rbp), %xmm1
movaps -0x210(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x9a070(%rip), %rdi     # 0xa50ae
movss 0x99fc6(%rip), %xmm1    # 0xa500c
movss 0x99fc2(%rip), %xmm2    # 0xa5010
callq 0x690a7
movq -0x10(%rbp), %rax
movq %rax, -0x240(%rbp)
movups -0x30(%rbp), %xmm0
movups -0x20(%rbp), %xmm1
movaps %xmm1, -0x250(%rbp)
movaps %xmm0, -0x260(%rbp)
movq -0x1f8(%rbp), %rdi
movl $0x437f0000, -0x268(%rbp) # imm = 0x437F0000
movl $0x42200000, -0x264(%rbp) # imm = 0x42200000
movl -0x174(%rbp), %eax
movl %eax, -0x26c(%rbp)
movsd -0x268(%rbp), %xmm0
movl -0x26c(%rbp), %esi
movq -0x240(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movaps -0x260(%rbp), %xmm1
movaps -0x250(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
movss 0x99f30(%rip), %xmm1    # 0xa5004
movss 0x99f2c(%rip), %xmm2    # 0xa5008
callq 0x690a7
movq -0x10(%rbp), %rax
movq %rax, -0x280(%rbp)
movups -0x30(%rbp), %xmm0
movups -0x20(%rbp), %xmm1
movaps %xmm1, -0x290(%rbp)
movaps %xmm0, -0x2a0(%rbp)
movl $0x40a00000, -0x2a8(%rbp) # imm = 0x40A00000
movl $0x42960000, -0x2a4(%rbp) # imm = 0x42960000
movb $-0xb, -0x2ac(%rbp)
movb $-0xb, -0x2ab(%rbp)
movb $-0xb, -0x2aa(%rbp)
movb $-0x1, -0x2a9(%rbp)
movsd -0x2a8(%rbp), %xmm0
movl -0x2ac(%rbp), %esi
movq -0x280(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x2a0(%rbp), %xmm1
movups -0x290(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x99f4e(%rip), %rdi     # 0xa50b8
movss 0x99e9a(%rip), %xmm1    # 0xa500c
movss 0x99e96(%rip), %xmm2    # 0xa5010
callq 0x690a7
leaq -0x2d8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x28, %edx
callq 0x96e0
testb $0x1, 0xdfcc6(%rip)     # 0xeae61
je 0xb1ad
leaq 0x99f1f(%rip), %rax     # 0xa50c3
movq %rax, -0x450(%rbp)
jmp 0xb1bd
leaq 0x99f1a(%rip), %rax     # 0xa50ce
movq %rax, -0x450(%rbp)
jmp 0xb1bd
movq -0x450(%rbp), %rdi
movl $0x434d0000, -0x2e0(%rbp) # imm = 0x434D0000
movl $0x42960000, -0x2dc(%rbp) # imm = 0x42960000
movl -0x174(%rbp), %eax
movl %eax, -0x2e4(%rbp)
movsd -0x2e0(%rbp), %xmm0
movl -0x2e4(%rbp), %esi
movq -0x2b8(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x2d8(%rbp), %xmm1
movups -0x2c8(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
movss 0x99de7(%rip), %xmm1    # 0xa5004
movss 0x99de3(%rip), %xmm2    # 0xa5008
callq 0x690a7
movaps -0x60(%rbp), %xmm0
movaps %xmm0, -0x300(%rbp)
movb $-0x1, -0x304(%rbp)
movb $-0x41, -0x303(%rbp)
movb $0x0, -0x302(%rbp)
movb $-0x1, -0x301(%rbp)
movsd -0x300(%rbp), %xmm0
movsd -0x2f8(%rbp), %xmm1
movl -0x304(%rbp), %edi
callq 0x56761
movq -0x10(%rbp), %rax
movq %rax, -0x310(%rbp)
movups -0x30(%rbp), %xmm0
movups -0x20(%rbp), %xmm1
movaps %xmm1, -0x320(%rbp)
movaps %xmm0, -0x330(%rbp)
movl $0x43e38000, -0x338(%rbp) # imm = 0x43E38000
movl $0x42200000, -0x334(%rbp) # imm = 0x42200000
movb $-0x1, -0x33c(%rbp)
movb $-0x1, -0x33b(%rbp)
movb $-0x1, -0x33a(%rbp)
movb $-0x1, -0x339(%rbp)
movsd -0x338(%rbp), %xmm0
movl -0x33c(%rbp), %esi
movq -0x310(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x330(%rbp), %xmm1
movups -0x320(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x99de4(%rip), %rdi     # 0xa50d9
movss 0x99d0f(%rip), %xmm1    # 0xa500c
xorps %xmm2, %xmm2
callq 0x690a7
leaq -0x368(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x28, %edx
callq 0x96e0
movss 0x99cf6(%rip), %xmm0    # 0xa5018
movss %xmm0, -0x370(%rbp)
movss 0x99ce2(%rip), %xmm0    # 0xa5014
movss %xmm0, -0x36c(%rbp)
cmpl $0x0, -0x4c(%rbp)
jle 0xb34e
movl -0x174(%rbp), %eax
movl %eax, -0x374(%rbp)
jmp 0xb36a
movb $0x50, -0x374(%rbp)
movb $0x50, -0x373(%rbp)
movb $0x50, -0x372(%rbp)
movb $-0x1, -0x371(%rbp)
movsd -0x370(%rbp), %xmm0
movl -0x374(%rbp), %esi
movq -0x348(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x368(%rbp), %xmm1
movups -0x358(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x99d3e(%rip), %rdi     # 0xa50e0
movss 0x99c5a(%rip), %xmm1    # 0xa5004
movss 0x99c56(%rip), %xmm2    # 0xa5008
callq 0x690a7
leaq -0x3a0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x28, %edx
callq 0x96e0
movss 0x99c48(%rip), %xmm0    # 0xa501c
movss %xmm0, -0x3a8(%rbp)
movss 0x99c30(%rip), %xmm0    # 0xa5014
movss %xmm0, -0x3a4(%rbp)
cmpl $0x3, -0x4c(%rbp)
jge 0xb400
movl -0x174(%rbp), %eax
movl %eax, -0x3ac(%rbp)
jmp 0xb41c
movb $0x50, -0x3ac(%rbp)
movb $0x50, -0x3ab(%rbp)
movb $0x50, -0x3aa(%rbp)
movb $-0x1, -0x3a9(%rbp)
movsd -0x3a8(%rbp), %xmm0
movl -0x3ac(%rbp), %esi
movq -0x380(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x3a0(%rbp), %xmm1
movups -0x390(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x99c8e(%rip), %rdi     # 0xa50e2
movss 0x99ba8(%rip), %xmm1    # 0xa5004
movss 0x99ba4(%rip), %xmm2    # 0xa5008
callq 0x690a7
leaq -0x3d8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x28, %edx
callq 0x96e0
movss 0x99b92(%rip), %xmm0    # 0xa5018
movss %xmm0, -0x3e0(%rbp)
movss 0x99b8a(%rip), %xmm0    # 0xa5020
movss %xmm0, -0x3dc(%rbp)
cmpl $0x0, 0xdd3d3(%rip)     # 0xe8878
jle 0xb4b5
movl -0x174(%rbp), %eax
movl %eax, -0x3e4(%rbp)
jmp 0xb4d1
movb $0x50, -0x3e4(%rbp)
movb $0x50, -0x3e3(%rbp)
movb $0x50, -0x3e2(%rbp)
movb $-0x1, -0x3e1(%rbp)
movsd -0x3e0(%rbp), %xmm0
movl -0x3e4(%rbp), %esi
movq -0x3b8(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x3d8(%rbp), %xmm1
movups -0x3c8(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x99bd7(%rip), %rdi     # 0xa50e0
movss 0x99af3(%rip), %xmm1    # 0xa5004
movss 0x99aef(%rip), %xmm2    # 0xa5008
callq 0x690a7
leaq -0x410(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x28, %edx
callq 0x96e0
movss 0x99ae1(%rip), %xmm0    # 0xa501c
movss %xmm0, -0x418(%rbp)
movss 0x99ad5(%rip), %xmm0    # 0xa5020
movss %xmm0, -0x414(%rbp)
cmpl $0x2, 0xdd31e(%rip)     # 0xe8878
jge 0xb56a
movl -0x174(%rbp), %eax
movl %eax, -0x41c(%rbp)
jmp 0xb586
movb $0x50, -0x41c(%rbp)
movb $0x50, -0x41b(%rbp)
movb $0x50, -0x41a(%rbp)
movb $-0x1, -0x419(%rbp)
movsd -0x418(%rbp), %xmm0
movl -0x41c(%rbp), %esi
movq -0x3f0(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x410(%rbp), %xmm1
movups -0x400(%rbp), %xmm2
movups %xmm2, 0x10(%rax)
movups %xmm1, (%rax)
leaq 0x99b24(%rip), %rdi     # 0xa50e2
movss 0x99a3e(%rip), %xmm1    # 0xa5004
movss 0x99a3a(%rip), %xmm2    # 0xa5008
callq 0x690a7
callq 0x39b62
jmp 0xa9dd
callq 0x396d1
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x480, %rsp            # imm = 0x480
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop