// File: /workspace/github_c_makefile_star2_O0/stetre[P]moongl/src/program.c
// Function: GetProgram
static int GetProgram(lua_State *L)
    {
#define BOOLEAN return GetBoolean(L, program, pname);
#define INTEGER return GetInteger(L, program, pname);
#define INTEGER3 return GetInteger3(L, program, pname);
#define ENUM(e) return GetEnum(L, program, pname, e);
    GLuint program = luaL_checkinteger(L, 1);
    GLenum pname = checkprogrampname(L, 2);
    switch(pname)
        {
        case GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: INTEGER
        case GL_ACTIVE_ATTRIBUTES: INTEGER
        case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: INTEGER
        case GL_ACTIVE_UNIFORMS: INTEGER
        case GL_ACTIVE_UNIFORM_BLOCKS: INTEGER
        case GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: INTEGER
        case GL_ACTIVE_UNIFORM_MAX_LENGTH: INTEGER
        case GL_ATTACHED_SHADERS: INTEGER
        case GL_VALIDATE_STATUS: BOOLEAN
        case GL_COMPUTE_WORK_GROUP_SIZE: INTEGER3
        case GL_DELETE_STATUS: BOOLEAN
        case GL_GEOMETRY_INPUT_TYPE: ENUM(DOMAIN_GEOMETRY_INPUT_TYPE)
        case GL_GEOMETRY_OUTPUT_TYPE:  ENUM(DOMAIN_GEOMETRY_OUTPUT_TYPE)
        case GL_GEOMETRY_SHADER_INVOCATIONS: INTEGER
        case GL_GEOMETRY_VERTICES_OUT: INTEGER
        case GL_INFO_LOG_LENGTH: INTEGER
        case GL_LINK_STATUS: BOOLEAN
        case GL_PROGRAM_SEPARABLE: BOOLEAN
        case GL_PROGRAM_BINARY_RETRIEVABLE_HINT: BOOLEAN
        case GL_TESS_CONTROL_OUTPUT_VERTICES: INTEGER
        case GL_TESS_GEN_MODE: ENUM(DOMAIN_TESS_GEN_MODE)
        case GL_TESS_GEN_SPACING: ENUM(DOMAIN_TESS_GEN_SPACING)
        case GL_TESS_GEN_VERTEX_ORDER: ENUM(DOMAIN_TESS_GEN_VERTEX_ORDER)
        case GL_TESS_GEN_POINT_MODE: BOOLEAN
        case GL_PROGRAM_BINARY_LENGTH: INTEGER
        case GL_TRANSFORM_FEEDBACK_BUFFER_MODE: ENUM(DOMAIN_BUFFER_MODE)
        case GL_TRANSFORM_FEEDBACK_VARYINGS: INTEGER
        case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: INTEGER
        default: return luaL_error(L, UNEXPECTED_ERROR);
        }
    return 0;
#undef ENUM
#undef BOOLEAN
#undef INTEGER
#undef INTEGER3
    }

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x11af0
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %rdi
movl $0x8, %esi
movl $0x2, %edx
callq 0x11160
movl %eax, 0x10(%rsp)
movl 0x10(%rsp), %eax
movl %eax, 0xc(%rsp)
subl $0x8257, %eax           # imm = 0x8257
je 0x40034
jmp 0x3fc79
movl 0xc(%rsp), %eax
subl $0x8258, %eax           # imm = 0x8258
je 0x40019
jmp 0x3fc8a
movl 0xc(%rsp), %eax
subl $0x8267, %eax           # imm = 0x8267
je 0x3ff37
jmp 0x3fc9b
movl 0xc(%rsp), %eax
subl $0x8741, %eax           # imm = 0x8741
je 0x400e5
jmp 0x3fcac
movl 0xc(%rsp), %eax
subl $0x887f, %eax           # imm = 0x887F
je 0x3ffad
jmp 0x3fcbd
movl 0xc(%rsp), %eax
subl $0x8916, %eax           # imm = 0x8916
je 0x3ffc8
jmp 0x3fcce
movl 0xc(%rsp), %eax
subl $0x8917, %eax           # imm = 0x8917
je 0x3ff6d
jmp 0x3fcdf
movl 0xc(%rsp), %eax
subl $0x8918, %eax           # imm = 0x8918
je 0x3ff8d
jmp 0x3fcf0
movl 0xc(%rsp), %eax
subl $0x8a35, %eax           # imm = 0x8A35
je 0x3fecb
jmp 0x3fd01
movl 0xc(%rsp), %eax
subl $0x8a36, %eax           # imm = 0x8A36
je 0x3feb0
jmp 0x3fd12
movl 0xc(%rsp), %eax
subl $0x8b80, %eax           # imm = 0x8B80
je 0x3ff52
jmp 0x3fd23
movl 0xc(%rsp), %eax
subl $0x8b82, %eax           # imm = 0x8B82
je 0x3fffe
jmp 0x3fd34
movl 0xc(%rsp), %eax
subl $0x8b83, %eax           # imm = 0x8B83
je 0x3ff1c
jmp 0x3fd45
movl 0xc(%rsp), %eax
subl $0x8b84, %eax           # imm = 0x8B84
je 0x3ffe3
jmp 0x3fd56
movl 0xc(%rsp), %eax
subl $0x8b85, %eax           # imm = 0x8B85
je 0x3ff01
jmp 0x3fd67
movl 0xc(%rsp), %eax
subl $0x8b86, %eax           # imm = 0x8B86
je 0x3fe95
jmp 0x3fd78
movl 0xc(%rsp), %eax
subl $0x8b87, %eax           # imm = 0x8B87
je 0x3fee6
jmp 0x3fd89
movl 0xc(%rsp), %eax
subl $0x8b89, %eax           # imm = 0x8B89
je 0x3fe5f
jmp 0x3fd9a
movl 0xc(%rsp), %eax
subl $0x8b8a, %eax           # imm = 0x8B8A
je 0x3fe7a
jmp 0x3fdab
movl 0xc(%rsp), %eax
subl $0x8c76, %eax           # imm = 0x8C76
je 0x40132
jmp 0x3fdbc
movl 0xc(%rsp), %eax
subl $0x8c7f, %eax           # imm = 0x8C7F
je 0x400fd
jmp 0x3fdcd
movl 0xc(%rsp), %eax
subl $0x8c83, %eax           # imm = 0x8C83
je 0x4011a
jmp 0x3fdde
movl 0xc(%rsp), %eax
subl $0x8e75, %eax           # imm = 0x8E75
je 0x4004f
jmp 0x3fdef
movl 0xc(%rsp), %eax
subl $0x8e76, %eax           # imm = 0x8E76
je 0x4006a
jmp 0x3fe00
movl 0xc(%rsp), %eax
subl $0x8e77, %eax           # imm = 0x8E77
je 0x4008a
jmp 0x3fe11
movl 0xc(%rsp), %eax
subl $0x8e78, %eax           # imm = 0x8E78
je 0x400aa
jmp 0x3fe22
movl 0xc(%rsp), %eax
subl $0x8e79, %eax           # imm = 0x8E79
je 0x400ca
jmp 0x3fe33
movl 0xc(%rsp), %eax
subl $0x92d9, %eax           # imm = 0x92D9
jne 0x4014a
jmp 0x3fe44
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x403b0
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40410
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x403b0
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
movl $0x52, %ecx
callq 0x40480
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
movl $0x53, %ecx
callq 0x40480
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x403b0
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x403b0
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x403b0
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
movl $0x54, %ecx
callq 0x40480
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
movl $0x55, %ecx
callq 0x40480
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
movl $0x56, %ecx
callq 0x40480
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x403b0
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
movl $0x57, %ecx
callq 0x40480
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
movl 0x10(%rsp), %edx
callq 0x40360
movl %eax, 0x24(%rsp)
jmp 0x4016d
movq 0x18(%rsp), %rdi
leaq 0x1212f(%rip), %rsi     # 0x52285
leaq 0x1d3fc(%rip), %rdx     # 0x5d559
movl $0xe0, %ecx
movb $0x0, %al
callq 0x11ae0
movl %eax, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)