#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 GLint;
typedef int GLenum;

/* Variables and functions */
#define GL_DEPTH_TEXTURE_MODE 160
#define GL_GENERATE_MIPMAP 159
#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 158
#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 157
#define GL_TEXTURE_BASE_LEVEL 156
#define GL_TEXTURE_BORDER_COLOR 155
#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 154
#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 153
#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 152
#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 151
#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 150
#define GL_TEXTURE_COMPARE_FUNC 149
#define GL_TEXTURE_COMPARE_MODE 148
#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 147
#define GL_TEXTURE_COMPARE_SGIX 146
#define GL_TEXTURE_LOD_BIAS 145
#define GL_TEXTURE_LOD_BIAS_R_SGIX 144
#define GL_TEXTURE_LOD_BIAS_S_SGIX 143
#define GL_TEXTURE_LOD_BIAS_T_SGIX 142
#define GL_TEXTURE_MAG_FILTER 141
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 140
#define GL_TEXTURE_MAX_CLAMP_R_SGIX 139
#define GL_TEXTURE_MAX_CLAMP_S_SGIX 138
#define GL_TEXTURE_MAX_CLAMP_T_SGIX 137
#define GL_TEXTURE_MAX_LEVEL 136
#define GL_TEXTURE_MAX_LOD 135
#define GL_TEXTURE_MIN_FILTER 134
#define GL_TEXTURE_MIN_LOD 133
#define GL_TEXTURE_PRIORITY 132
#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 131
#define GL_TEXTURE_WRAP_R 130
#define GL_TEXTURE_WRAP_S 129
#define GL_TEXTURE_WRAP_T 128
__attribute__((visibility("internal"))) __attribute__((pure)) GLint
__glTexParameterfv_size(GLenum e) {
  switch (e) {
  case GL_TEXTURE_MAG_FILTER:
  case GL_TEXTURE_MIN_FILTER:
  case GL_TEXTURE_WRAP_S:
  case GL_TEXTURE_WRAP_T:
  case GL_TEXTURE_PRIORITY:
  case GL_TEXTURE_WRAP_R:
  case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
  case GL_TEXTURE_MIN_LOD:
  case GL_TEXTURE_MAX_LOD:
  case GL_TEXTURE_BASE_LEVEL:
  case GL_TEXTURE_MAX_LEVEL:
  case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
  case GL_TEXTURE_LOD_BIAS_S_SGIX:
  case GL_TEXTURE_LOD_BIAS_T_SGIX:
  case GL_TEXTURE_LOD_BIAS_R_SGIX:
  case GL_GENERATE_MIPMAP:
  case GL_TEXTURE_COMPARE_SGIX:
  case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
  case GL_TEXTURE_MAX_CLAMP_S_SGIX:
  case GL_TEXTURE_MAX_CLAMP_T_SGIX:
  case GL_TEXTURE_MAX_CLAMP_R_SGIX:
  case GL_TEXTURE_MAX_ANISOTROPY_EXT:
  case GL_TEXTURE_LOD_BIAS:
  case GL_DEPTH_TEXTURE_MODE:
  case GL_TEXTURE_COMPARE_MODE:
  case GL_TEXTURE_COMPARE_FUNC:
  case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
    return 1;
  case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
  case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
    return 2;
  case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
    return 3;
  case GL_TEXTURE_BORDER_COLOR:
  case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
  case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
    return 4;
  default:
    return 0;
  }
}


x86 assembly (clang, -O0):
<__glTexParameterfv_size>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0xffffff80,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x20,%eax
ja     1160 <__glTexParameterfv_size+0x60>
mov    -0x10(%rbp),%rax
lea    0xed9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x1,-0x4(%rbp)
jmp    1167 <__glTexParameterfv_size+0x67>
movl   $0x2,-0x4(%rbp)
jmp    1167 <__glTexParameterfv_size+0x67>
movl   $0x3,-0x4(%rbp)
jmp    1167 <__glTexParameterfv_size+0x67>
movl   $0x4,-0x4(%rbp)
jmp    1167 <__glTexParameterfv_size+0x67>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<__glTexParameterfv_size>:
add    $0xffffff80,%edi
xor    %eax,%eax
cmp    $0x20,%edi
ja     1117 <__glTexParameterfv_size+0x17>
movslq %edi,%rax
lea    0xeec(%rip),%rcx
mov    (%rcx,%rax,4),%eax
ret

LLVM IR (-O0):
define hidden i32 @__glTexParameterfv_size(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %9 [
i32 141, label %5
i32 134, label %5
i32 129, label %5
i32 128, label %5
i32 132, label %5
i32 130, label %5
i32 150, label %5
i32 133, label %5
i32 135, label %5
i32 156, label %5
i32 136, label %5
i32 153, label %5
i32 143, label %5
i32 142, label %5
i32 144, label %5
i32 159, label %5
i32 146, label %5
i32 147, label %5
i32 138, label %5
i32 137, label %5
i32 139, label %5
i32 140, label %5
i32 145, label %5
i32 160, label %5
i32 148, label %5
i32 149, label %5
i32 131, label %5
i32 154, label %6
i32 152, label %6
i32 151, label %7
i32 155, label %8
i32 158, label %8
i32 157, label %8
]
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
store i32 1, i32* %2
br label %10
6: ; preds = %1, %1
store i32 2, i32* %2
br label %10
7: ; preds = %1
store i32 3, i32* %2
br label %10
8: ; preds = %1, %1, %1
store i32 4, i32* %2
br label %10
9: ; preds = %1
store i32 0, i32* %2
br label %10
10: ; preds = %9, %8, %7, %6, %5
%11 = load i32, i32* %2
ret i32 %11
}

LLVM IR (-O2):
@switch.table.__glTexParameterfv_size = [33 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 3, i32 2, i32 1, i32 2, i32 4, i32 1, i32 4, i32 4, i32 1, i32 1]
define hidden i32 @__glTexParameterfv_size(i32 %0) {
%2 = add i32 %0, -128
%3 = icmp ult i32 %2, 33
br i1 %3, label %4, label %8
4: ; preds = %1
%5 = sext i32 %2 to i64
%6 = getelementptr inbounds [33 x i32], [33 x i32]* @switch.table.__glTexParameterfv_size, i64 0, i64 %5
%7 = load i32, i32* %6
br label %8
8: ; preds = %1, %4
%9 = phi i32 [ %7, %4 ], [ 0, %1 ]
ret i32 %9
}