#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int GLenum;

/* Variables and functions */
#define GL_ACTIVE_TEXTURE 264
#define GL_ALIASED_LINE_WIDTH_RANGE 263
#define GL_ALIASED_POINT_SIZE_RANGE 262
#define GL_ALPHA_BITS 261
#define GL_ALPHA_TEST 260
#define GL_ALPHA_TEST_FUNC 259
#define GL_ALPHA_TEST_REF 258
#define GL_ARRAY_BUFFER_BINDING 257
#define GL_ATTRIB_STACK_DEPTH 256
#define GL_AUX_BUFFERS 255
#define GL_BLEND 254
#define GL_BLEND_DST 253
#define GL_BLEND_SRC 252
#define GL_BLUE_BITS 251
#define GL_CLIENT_ACTIVE_TEXTURE 250
#define GL_CLIENT_ATTRIB_STACK_DEPTH 249
#define GL_CLIP_PLANE0 248
#define GL_COLOR_ARRAY 247
#define GL_COLOR_ARRAY_BUFFER_BINDING 246
#define GL_COLOR_ARRAY_SIZE 245
#define GL_COLOR_ARRAY_STRIDE 244
#define GL_COLOR_ARRAY_TYPE 243
#define GL_COLOR_CLEAR_VALUE 242
#define GL_COLOR_LOGIC_OP 241
#define GL_COLOR_MATERIAL 240
#define GL_COLOR_WRITEMASK 239
#define GL_CULL_FACE 238
#define GL_CULL_FACE_MODE 237
#define GL_CURRENT_COLOR 236
#define GL_CURRENT_NORMAL 235
#define GL_CURRENT_RASTER_COLOR 234
#define GL_CURRENT_RASTER_POSITION 233
#define GL_CURRENT_RASTER_POSITION_VALID 232
#define GL_CURRENT_TEXTURE_COORDS 231
#define GL_DEPTH_BITS 230
#define GL_DEPTH_CLEAR_VALUE 229
#define GL_DEPTH_FUNC 228
#define GL_DEPTH_RANGE 227
#define GL_DEPTH_TEST 226
#define GL_DEPTH_WRITEMASK 225
#define GL_ELEMENT_ARRAY_BUFFER_BINDING 224
#define GL_FOG 223
#define GL_FOG_COLOR 222
#define GL_FOG_DENSITY 221
#define GL_FOG_END 220
#define GL_FOG_HINT 219
#define GL_FOG_MODE 218
#define GL_FOG_START 217
#define GL_FRONT_FACE 216
#define GL_GREEN_BITS 215
#define GL_LIGHT0 214
#define GL_LIGHTING 213
#define GL_LIGHT_MODEL_AMBIENT 212
#define GL_LIGHT_MODEL_TWO_SIDE 211
#define GL_LINE_SMOOTH 210
#define GL_LINE_SMOOTH_HINT 209
#define GL_LINE_WIDTH 208
#define GL_LOGIC_OP_MODE 207
#define GL_MATRIX_MODE 206
#define GL_MAX_ATTRIB_STACK_DEPTH 205
#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 204
#define GL_MAX_CLIP_PLANES 203
#define GL_MAX_ELEMENTS_INDICES 202
#define GL_MAX_LIGHTS 201
#define GL_MAX_MODELVIEW_STACK_DEPTH 200
#define GL_MAX_NAME_STACK_DEPTH 199
#define GL_MAX_PROJECTION_STACK_DEPTH 198
#define GL_MAX_TEXTURE_SIZE 197
#define GL_MAX_TEXTURE_STACK_DEPTH 196
#define GL_MAX_TEXTURE_UNITS 195
#define GL_MAX_VIEWPORT_DIMS 194
#define GL_MODELVIEW_MATRIX 193
#define GL_MODELVIEW_STACK_DEPTH 192
#define GL_MULTISAMPLE 191
#define GL_NAME_STACK_DEPTH 190
#define GL_NORMALIZE 189
#define GL_NORMAL_ARRAY 188
#define GL_NORMAL_ARRAY_BUFFER_BINDING 187
#define GL_NORMAL_ARRAY_STRIDE 186
#define GL_NORMAL_ARRAY_TYPE 185
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 184
#define GL_PACK_ALIGNMENT 183
#define GL_PERSPECTIVE_CORRECTION_HINT 182
#define GL_POINT_DISTANCE_ATTENUATION 181
#define GL_POINT_FADE_THRESHOLD_SIZE 180
#define GL_POINT_SIZE 179
#define GL_POINT_SIZE_MAX 178
#define GL_POINT_SIZE_MIN 177
#define GL_POINT_SMOOTH 176
#define GL_POINT_SMOOTH_HINT 175
#define GL_POLYGON_OFFSET_FACTOR 174
#define GL_POLYGON_OFFSET_FILL 173
#define GL_POLYGON_OFFSET_UNITS 172
#define GL_PROJECTION_MATRIX 171
#define GL_PROJECTION_STACK_DEPTH 170
#define GL_RED_BITS 169
#define GL_RESCALE_NORMAL 168
#define GL_SAMPLES 167
#define GL_SAMPLE_ALPHA_TO_COVERAGE 166
#define GL_SAMPLE_ALPHA_TO_ONE 165
#define GL_SAMPLE_BUFFERS 164
#define GL_SAMPLE_COVERAGE 163
#define GL_SAMPLE_COVERAGE_INVERT 162
#define GL_SAMPLE_COVERAGE_VALUE 161
#define GL_SCISSOR_BOX 160
#define GL_SCISSOR_TEST 159
#define GL_SHADE_MODEL 158
#define GL_SMOOTH_LINE_WIDTH_RANGE 157
#define GL_SMOOTH_POINT_SIZE_RANGE 156
#define GL_STENCIL_BACK_FAIL 155
#define GL_STENCIL_BACK_FUNC 154
#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 153
#define GL_STENCIL_BACK_PASS_DEPTH_PASS 152
#define GL_STENCIL_BACK_REF 151
#define GL_STENCIL_BACK_VALUE_MASK 150
#define GL_STENCIL_BACK_WRITEMASK 149
#define GL_STENCIL_BITS 148
#define GL_STENCIL_CLEAR_VALUE 147
#define GL_STENCIL_FAIL 146
#define GL_STENCIL_FUNC 145
#define GL_STENCIL_PASS_DEPTH_FAIL 144
#define GL_STENCIL_PASS_DEPTH_PASS 143
#define GL_STENCIL_REF 142
#define GL_STENCIL_TEST 141
#define GL_STENCIL_VALUE_MASK 140
#define GL_STENCIL_WRITEMASK 139
#define GL_SUBPIXEL_BITS 138
#define GL_TEXTURE_BINDING_2D 137
#define GL_TEXTURE_BINDING_CUBE_MAP 136
#define GL_TEXTURE_GEN_Q 135
#define GL_TEXTURE_GEN_R 134
#define GL_TEXTURE_GEN_S 133
#define GL_TEXTURE_GEN_T 132
#define GL_TEXTURE_MATRIX 131
#define GL_TEXTURE_STACK_DEPTH 130
#define GL_UNPACK_ALIGNMENT 129
#define GL_VIEWPORT 128
const size_t gl_getv_length(GLenum name) {
  switch (name) {
  case GL_ALPHA_BITS:
  case GL_ALPHA_TEST:
  case GL_BLEND:
  case GL_CLIP_PLANE0:
  case GL_COLOR_ARRAY:
  case GL_COLOR_LOGIC_OP:
  case GL_COLOR_MATERIAL:
  case GL_CULL_FACE:
  case GL_CURRENT_RASTER_POSITION_VALID:
  case GL_DEPTH_TEST:
  case GL_DEPTH_WRITEMASK:
  case GL_FOG:
  case GL_LIGHT0:
  case GL_LIGHTING:
  case GL_LIGHT_MODEL_TWO_SIDE:
  case GL_LINE_SMOOTH:
  case GL_MULTISAMPLE:
  case GL_NORMALIZE:
  case GL_NORMAL_ARRAY:
  case GL_POINT_SMOOTH:
  case GL_POLYGON_OFFSET_FILL:
  case GL_RESCALE_NORMAL:
  case GL_SAMPLE_ALPHA_TO_COVERAGE:
  case GL_SAMPLE_ALPHA_TO_ONE:
  case GL_SAMPLE_COVERAGE:
  case GL_SAMPLE_COVERAGE_INVERT:
  case GL_SCISSOR_TEST:
  case GL_STENCIL_TEST:
  case GL_TEXTURE_GEN_Q:
  case GL_TEXTURE_GEN_R:
  case GL_TEXTURE_GEN_S:
  case GL_TEXTURE_GEN_T:
    return 1;
  case GL_MODELVIEW_MATRIX:
  case GL_PROJECTION_MATRIX:
  case GL_TEXTURE_MATRIX:
    return 16;
  case GL_COLOR_CLEAR_VALUE:
  case GL_COLOR_WRITEMASK:
  case GL_CURRENT_COLOR:
  case GL_CURRENT_RASTER_COLOR:
  case GL_CURRENT_RASTER_POSITION:
  case GL_CURRENT_TEXTURE_COORDS:
  case GL_FOG_COLOR:
  case GL_LIGHT_MODEL_AMBIENT:
  case GL_SAMPLE_COVERAGE_VALUE:
  case GL_SCISSOR_BOX:
  case GL_VIEWPORT:
    return 4;
  case GL_CURRENT_NORMAL:
  case GL_POINT_DISTANCE_ATTENUATION:
    return 3;
  case GL_ALIASED_LINE_WIDTH_RANGE:
  case GL_ALIASED_POINT_SIZE_RANGE:
  case GL_DEPTH_RANGE:
  case GL_MAX_VIEWPORT_DIMS:
  case GL_SMOOTH_LINE_WIDTH_RANGE:
  case GL_SMOOTH_POINT_SIZE_RANGE:
    return 2;
  case GL_ALPHA_TEST_REF:
  case GL_DEPTH_CLEAR_VALUE:
  case GL_FOG_DENSITY:
  case GL_FOG_END:
  case GL_FOG_START:
  case GL_LINE_WIDTH:
  case GL_POINT_FADE_THRESHOLD_SIZE:
  case GL_POINT_SIZE_MAX:
  case GL_POINT_SIZE_MIN:
  case GL_POLYGON_OFFSET_FACTOR:
  case GL_POLYGON_OFFSET_UNITS:
  case GL_STENCIL_BACK_REF:
  case GL_STENCIL_REF:
    return 1;
  case GL_ACTIVE_TEXTURE:
  case GL_ALPHA_TEST_FUNC:
  case GL_ARRAY_BUFFER_BINDING:
  case GL_ATTRIB_STACK_DEPTH:
  case GL_AUX_BUFFERS:
  case GL_BLEND_DST:
  case GL_BLEND_SRC:
  case GL_BLUE_BITS:
  case GL_CLIENT_ACTIVE_TEXTURE:
  case GL_CLIENT_ATTRIB_STACK_DEPTH:
  case GL_COLOR_ARRAY_BUFFER_BINDING:
  case GL_COLOR_ARRAY_SIZE:
  case GL_COLOR_ARRAY_STRIDE:
  case GL_COLOR_ARRAY_TYPE:
  case GL_CULL_FACE_MODE:
  case GL_DEPTH_BITS:
  case GL_DEPTH_FUNC:
  case GL_ELEMENT_ARRAY_BUFFER_BINDING:
  case GL_FOG_HINT:
  case GL_FOG_MODE:
  case GL_FRONT_FACE:
  case GL_GREEN_BITS:
  case GL_LINE_SMOOTH_HINT:
  case GL_LOGIC_OP_MODE:
  case GL_MATRIX_MODE:
  case GL_MAX_ATTRIB_STACK_DEPTH:
  case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
  case GL_MAX_CLIP_PLANES:
  case GL_MAX_ELEMENTS_INDICES:
  case GL_MAX_LIGHTS:
  case GL_MAX_MODELVIEW_STACK_DEPTH:
  case GL_MAX_NAME_STACK_DEPTH:
  case GL_MAX_PROJECTION_STACK_DEPTH:
  case GL_MAX_TEXTURE_SIZE:
  case GL_MAX_TEXTURE_STACK_DEPTH:
  case GL_MAX_TEXTURE_UNITS:
  case GL_MODELVIEW_STACK_DEPTH:
  case GL_NAME_STACK_DEPTH:
  case GL_NORMAL_ARRAY_BUFFER_BINDING:
  case GL_NORMAL_ARRAY_STRIDE:
  case GL_NORMAL_ARRAY_TYPE:
  case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
  case GL_PACK_ALIGNMENT:
  case GL_PERSPECTIVE_CORRECTION_HINT:
  case GL_POINT_SIZE:
  case GL_POINT_SMOOTH_HINT:
  case GL_PROJECTION_STACK_DEPTH:
  case GL_RED_BITS:
  case GL_SAMPLES:
  case GL_SAMPLE_BUFFERS:
  case GL_SHADE_MODEL:
  case GL_STENCIL_BACK_FAIL:
  case GL_STENCIL_BACK_FUNC:
  case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
  case GL_STENCIL_BACK_PASS_DEPTH_PASS:
  case GL_STENCIL_BACK_VALUE_MASK:
  case GL_STENCIL_BACK_WRITEMASK:
  case GL_STENCIL_BITS:
  case GL_STENCIL_CLEAR_VALUE:
  case GL_STENCIL_FAIL:
  case GL_STENCIL_FUNC:
  case GL_STENCIL_PASS_DEPTH_FAIL:
  case GL_STENCIL_PASS_DEPTH_PASS:
  case GL_STENCIL_VALUE_MASK:
  case GL_STENCIL_WRITEMASK:
  case GL_SUBPIXEL_BITS:
  case GL_TEXTURE_BINDING_2D:
  case GL_TEXTURE_BINDING_CUBE_MAP:
  case GL_TEXTURE_STACK_DEPTH:
  case GL_UNPACK_ALIGNMENT:
    return 1;
  default:
    return 1;
  }
}


x86 assembly (clang, -O0):
<gl_getv_length>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffff80,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x88,%eax
ja     118d <gl_getv_length+0x8d>
mov    -0x18(%rbp),%rax
lea    0xed7(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movq   $0x1,-0x8(%rbp)
jmp    1195 <gl_getv_length+0x95>
movq   $0x10,-0x8(%rbp)
jmp    1195 <gl_getv_length+0x95>
movq   $0x4,-0x8(%rbp)
jmp    1195 <gl_getv_length+0x95>
movq   $0x3,-0x8(%rbp)
jmp    1195 <gl_getv_length+0x95>
movq   $0x2,-0x8(%rbp)
jmp    1195 <gl_getv_length+0x95>
movq   $0x1,-0x8(%rbp)
jmp    1195 <gl_getv_length+0x95>
movq   $0x1,-0x8(%rbp)
jmp    1195 <gl_getv_length+0x95>
movq   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<gl_getv_length>:
mov    $0x1,%eax
add    $0xffffff80,%edi
cmp    $0x87,%edi
ja     112b <gl_getv_length+0x2b>
lea    0xee9(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
mov    $0x4,%eax
ret
mov    $0x2,%eax
ret
mov    $0x10,%eax
ret
mov    $0x3,%eax
ret

LLVM IR (-O0):
define i64 @gl_getv_length(i32 %0) {
%2 = alloca i64
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %12 [
i32 261, label %5
i32 260, label %5
i32 254, label %5
i32 248, label %5
i32 247, label %5
i32 241, label %5
i32 240, label %5
i32 238, label %5
i32 232, label %5
i32 226, label %5
i32 225, label %5
i32 223, label %5
i32 214, label %5
i32 213, label %5
i32 211, label %5
i32 210, label %5
i32 191, label %5
i32 189, label %5
i32 188, label %5
i32 176, label %5
i32 173, label %5
i32 168, label %5
i32 166, label %5
i32 165, label %5
i32 163, label %5
i32 162, label %5
i32 159, label %5
i32 141, label %5
i32 135, label %5
i32 134, label %5
i32 133, label %5
i32 132, label %5
i32 193, label %6
i32 171, label %6
i32 131, label %6
i32 242, label %7
i32 239, label %7
i32 236, label %7
i32 234, label %7
i32 233, label %7
i32 231, label %7
i32 222, label %7
i32 212, label %7
i32 161, label %7
i32 160, label %7
i32 128, label %7
i32 235, label %8
i32 181, label %8
i32 263, label %9
i32 262, label %9
i32 227, label %9
i32 194, label %9
i32 157, label %9
i32 156, label %9
i32 258, label %10
i32 229, label %10
i32 221, label %10
i32 220, label %10
i32 217, label %10
i32 208, label %10
i32 180, label %10
i32 178, label %10
i32 177, label %10
i32 174, label %10
i32 172, label %10
i32 151, label %10
i32 142, label %10
i32 264, label %11
i32 259, label %11
i32 257, label %11
i32 256, label %11
i32 255, label %11
i32 253, label %11
i32 252, label %11
i32 251, label %11
i32 250, label %11
i32 249, label %11
i32 246, label %11
i32 245, label %11
i32 244, label %11
i32 243, label %11
i32 237, label %11
i32 230, label %11
i32 228, label %11
i32 224, label %11
i32 219, label %11
i32 218, label %11
i32 216, label %11
i32 215, label %11
i32 209, label %11
i32 207, label %11
i32 206, label %11
i32 205, label %11
i32 204, label %11
i32 203, label %11
i32 202, label %11
i32 201, label %11
i32 200, label %11
i32 199, label %11
i32 198, label %11
i32 197, label %11
i32 196, label %11
i32 195, label %11
i32 192, label %11
i32 190, label %11
i32 187, label %11
i32 186, label %11
i32 185, label %11
i32 184, label %11
i32 183, label %11
i32 182, label %11
i32 179, label %11
i32 175, label %11
i32 170, label %11
i32 169, label %11
i32 167, label %11
i32 164, label %11
i32 158, label %11
i32 155, label %11
i32 154, label %11
i32 153, label %11
i32 152, label %11
i32 150, label %11
i32 149, label %11
i32 148, label %11
i32 147, label %11
i32 146, label %11
i32 145, label %11
i32 144, label %11
i32 143, label %11
i32 140, label %11
i32 139, label %11
i32 138, label %11
i32 137, label %11
i32 136, label %11
i32 130, label %11
i32 129, label %11
]
5: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i64 1, i64* %2
br label %13
6: ; preds = %1, %1, %1
store i64 16, i64* %2
br label %13
7: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i64 4, i64* %2
br label %13
8: ; preds = %1, %1
store i64 3, i64* %2
br label %13
9: ; preds = %1, %1, %1, %1, %1, %1
store i64 2, i64* %2
br label %13
10: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i64 1, i64* %2
br label %13
11: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i64 1, i64* %2
br label %13
12: ; preds = %1
store i64 1, i64* %2
br label %13
13: ; preds = %12, %11, %10, %9, %8, %7, %6, %5
%14 = load i64, i64* %2
ret i64 %14
}

LLVM IR (-O2):
define i64 @gl_getv_length(i32 %0) {
switch i32 %0, label %6 [
i32 156, label %5
i32 157, label %5
i32 194, label %5
i32 227, label %5
i32 262, label %5
i32 263, label %5
i32 181, label %4
i32 235, label %4
i32 128, label %3
i32 160, label %3
i32 161, label %3
i32 212, label %3
i32 222, label %3
i32 231, label %3
i32 233, label %3
i32 234, label %3
i32 236, label %3
i32 239, label %3
i32 242, label %3
i32 131, label %2
i32 171, label %2
i32 193, label %2
]
2: ; preds = %1, %1, %1
br label %6
3: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
br label %6
4: ; preds = %1, %1
br label %6
5: ; preds = %1, %1, %1, %1, %1, %1
br label %6
6: ; preds = %1, %5, %4, %3, %2
%7 = phi i64 [ 2, %5 ], [ 3, %4 ], [ 4, %3 ], [ 16, %2 ], [ 1, %1 ]
ret i64 %7
}