/*
 |            file: glsl/icunroll.c
 |        language: 1	(ANSI C)
 |     produced by: GNU C 4.2.1
 |    compiler dir: /OST/GraphicsGFX/SDP3430/Source/SGX12.19/GFX_Linux_DDK/src/eurasia/tools/intern/oglcompiler
 | program counter: <0x45354;0x465e4>
 */
typedef unsigned int size_t

typedef long long int __quad_t

typedef long int __off_t

typedef __quad_t __off64_t

struct _IO_FILE {
	int _flags // @0
	char* _IO_read_ptr // @4
	char* _IO_read_end // @8
	char* _IO_read_base // @c
	char* _IO_write_base // @10
	char* _IO_write_ptr // @14
	char* _IO_write_end // @18
	char* _IO_buf_base // @1c
	char* _IO_buf_end // @20
	char* _IO_save_base // @24
	char* _IO_backup_base // @28
	char* _IO_save_end // @2c
	struct _IO_marker* _markers // @30
	struct _IO_FILE* _chain // @34
	int _fileno // @38
	int _flags2 // @3c
	__off_t _old_offset // @40
	short unsigned int _cur_column // @44
	signed char _vtable_offset // @46
	char[1] _shortbuf // @47
	_IO_lock_t* _lock // @48
	__off64_t _offset // @50
	void* __pad1 // @58
	void* __pad2 // @5c
	void* __pad3 // @60
	void* __pad4 // @64
	size_t __pad5 // @68
	int _mode // @6c
	char[40] _unused2 // @70
}

typedef void _IO_lock_t

struct _IO_marker {
	struct _IO_marker* _next // @0
	struct _IO_FILE* _sbuf // @4
	int _pos // @8
}

typedef struct GLSLCompilerPrivateDataTAG GLSLCompilerPrivateData

struct GLSLCompilerPrivateDataTAG {
	LanguageContext* psLanguageContext // @0
	SymbolTableContext* psSymbolTableContext // @4
	SymTable* psVertexSymbolTable // @8
	SymTable* psFragmentSymbolTable // @c
	GLSLIdentifierList sVertexBuiltInsReferenced // @10
	GLSLIdentifierList sFragmentBuiltInsReferenced // @1c
	IMG_VOID* pvUniFlexContext // @28
	ErrorLog* psErrorLog // @2c
	IMG_UINT32 uPointCoordTC // @30
	IMG_UINT32 uCurSrcLine // @34
}

typedef unsigned char IMG_BYTE

typedef char IMG_CHAR

typedef long unsigned int IMG_UINT32

typedef long int IMG_INT32

enum tag_img_bool {
	IMG_FALSE = 0; //0x0
	IMG_TRUE = 1; //0x1
	IMG_FORCE_ALIGN = 2147483647; //0x7fffffff
}

typedef enum tag_img_bool IMG_BOOL

typedef void IMG_VOID

enum TokenNameTag {
	TOK_INVALID_TOKEN = 0; //0x0
	TOK_ARRAY_LENGTH = 1; //0x1
	TOK_ATTRIBUTE = 2; //0x2
	TOK_BOOL = 3; //0x3
	TOK_BREAK = 4; //0x4
	TOK_BVEC2 = 5; //0x5
	TOK_BVEC3 = 6; //0x6
	TOK_BVEC4 = 7; //0x7
	TOK_CENTROID = 8; //0x8
	TOK_CONST = 9; //0x9
	TOK_CONTINUE = 10; //0xa
	TOK_DISCARD = 11; //0xb
	TOK_DO = 12; //0xc
	TOK_ELSE = 13; //0xd
	TOK_FALSE = 14; //0xe
	TOK_FLAT = 15; //0xf
	TOK_FLOAT = 16; //0x10
	TOK_FOR = 17; //0x11
	TOK_HIGH_PRECISION = 18; //0x12
	TOK_IF = 19; //0x13
	TOK_IN = 20; //0x14
	TOK_INOUT = 21; //0x15
	TOK_INT = 22; //0x16
	TOK_INVARIANT = 23; //0x17
	TOK_IVEC2 = 24; //0x18
	TOK_IVEC3 = 25; //0x19
	TOK_IVEC4 = 26; //0x1a
	TOK_LOW_PRECISION = 27; //0x1b
	TOK_MAT2X2 = 28; //0x1c
	TOK_MAT2X3 = 29; //0x1d
	TOK_MAT2X4 = 30; //0x1e
	TOK_MAT3X2 = 31; //0x1f
	TOK_MAT3X3 = 32; //0x20
	TOK_MAT3X4 = 33; //0x21
	TOK_MAT4X2 = 34; //0x22
	TOK_MAT4X3 = 35; //0x23
	TOK_MAT4X4 = 36; //0x24
	TOK_MEDIUM_PRECISION = 37; //0x25
	TOK_OUT = 38; //0x26
	TOK_PRECISION = 39; //0x27
	TOK_RETURN = 40; //0x28
	TOK_SAMPLER1D = 41; //0x29
	TOK_SAMPLER2D = 42; //0x2a
	TOK_SAMPLER3D = 43; //0x2b
	TOK_SAMPLER1DSHADOW = 44; //0x2c
	TOK_SAMPLER2DSHADOW = 45; //0x2d
	TOK_SAMPLERCUBE = 46; //0x2e
	TOK_STRUCT = 47; //0x2f
	TOK_SUPER_PRECISION = 48; //0x30
	TOK_TRUE = 49; //0x31
	TOK_UNIFORM = 50; //0x32
	TOK_VARYING = 51; //0x33
	TOK_VEC2 = 52; //0x34
	TOK_VEC3 = 53; //0x35
	TOK_VEC4 = 54; //0x36
	TOK_VOID = 55; //0x37
	TOK_WHILE = 56; //0x38
	TOK_ASM = 57; //0x39
	TOK_CAST = 58; //0x3a
	TOK_CLASS = 59; //0x3b
	TOK_DEFAULT = 60; //0x3c
	TOK_DOUBLE = 61; //0x3d
	TOK_DVEC2 = 62; //0x3e
	TOK_DVEC3 = 63; //0x3f
	TOK_DVEC4 = 64; //0x40
	TOK_ENUM = 65; //0x41
	TOK_EXTERN = 66; //0x42
	TOK_EXTERNAL = 67; //0x43
	TOK_FIXED = 68; //0x44
	TOK_FVEC2 = 69; //0x45
	TOK_FVEC3 = 70; //0x46
	TOK_FVEC4 = 71; //0x47
	TOK_GOTO = 72; //0x48
	TOK_HALF = 73; //0x49
	TOK_HVEC2 = 74; //0x4a
	TOK_HVEC3 = 75; //0x4b
	TOK_HVEC4 = 76; //0x4c
	TOK_INLINE = 77; //0x4d
	TOK_INPUT = 78; //0x4e
	TOK_INTERFACE = 79; //0x4f
	TOK_LONG = 80; //0x50
	TOK_NAMESPACE = 81; //0x51
	TOK_NOINLINE = 82; //0x52
	TOK_OUTPUT = 83; //0x53
	TOK_PACKED = 84; //0x54
	TOK_PUBLIC = 85; //0x55
	TOK_SAMPLER2DRECT = 86; //0x56
	TOK_SAMPLER2DRECTSHADOW = 87; //0x57
	TOK_SAMPLER3DRECT = 88; //0x58
	TOK_SHORT = 89; //0x59
	TOK_SIZEOF = 90; //0x5a
	TOK_STATIC = 91; //0x5b
	TOK_SWITCH = 92; //0x5c
	TOK_TEMPLATE = 93; //0x5d
	TOK_THIS = 94; //0x5e
	TOK_TYPEDEF = 95; //0x5f
	TOK_UNION = 96; //0x60
	TOK_UNSIGNED = 97; //0x61
	TOK_USING = 98; //0x62
	TOK_VOLATILE = 99; //0x63
	TOK_CASE = 100; //0x64
	TOK_CHAR = 101; //0x65
	TOK_BYTE = 102; //0x66
	TOK_INCOMMENT = 103; //0x67
	TOK_OUTCOMMENT = 104; //0x68
	TOK_COMMENT = 105; //0x69
	TOK_AMPERSAND = 106; //0x6a
	TOK_BANG = 107; //0x6b
	TOK_CARET = 108; //0x6c
	TOK_COMMA = 109; //0x6d
	TOK_COLON = 110; //0x6e
	TOK_DASH = 111; //0x6f
	TOK_DOT = 112; //0x70
	TOK_DOTDOT = 113; //0x71
	TOK_EQUAL = 114; //0x72
	TOK_LEFT_ANGLE = 115; //0x73
	TOK_LEFT_BRACE = 116; //0x74
	TOK_LEFT_BRACKET = 117; //0x75
	TOK_LEFT_PAREN = 118; //0x76
	TOK_PERCENT = 119; //0x77
	TOK_PLUS = 120; //0x78
	TOK_QUESTION = 121; //0x79
	TOK_RIGHT_ANGLE = 122; //0x7a
	TOK_RIGHT_BRACE = 123; //0x7b
	TOK_RIGHT_BRACKET = 124; //0x7c
	TOK_RIGHT_PAREN = 125; //0x7d
	TOK_SEMICOLON = 126; //0x7e
	TOK_SLASH = 127; //0x7f
	TOK_STAR = 128; //0x80
	TOK_TILDA = 129; //0x81
	TOK_VERTICAL_BAR = 130; //0x82
	TOK_APOSTROPHE = 131; //0x83
	TOK_AT = 132; //0x84
	TOK_BACK_SLASH = 133; //0x85
	TOK_DOLLAR = 134; //0x86
	TOK_HASH = 135; //0x87
	TOK_SPEECH_MARK = 136; //0x88
	TOK_UNDERSCORE = 137; //0x89
	TOK_ADD_ASSIGN = 138; //0x8a
	TOK_AND_ASSIGN = 139; //0x8b
	TOK_AND_OP = 140; //0x8c
	TOK_DEC_OP = 141; //0x8d
	TOK_DIV_ASSIGN = 142; //0x8e
	TOK_EQ_OP = 143; //0x8f
	TOK_INC_OP = 144; //0x90
	TOK_GE_OP = 145; //0x91
	TOK_LE_OP = 146; //0x92
	TOK_LEFT_ASSIGN = 147; //0x93
	TOK_LEFT_OP = 148; //0x94
	TOK_MOD_ASSIGN = 149; //0x95
	TOK_MUL_ASSIGN = 150; //0x96
	TOK_NE_OP = 151; //0x97
	TOK_OR_ASSIGN = 152; //0x98
	TOK_OR_OP = 153; //0x99
	TOK_RIGHT_ASSIGN = 154; //0x9a
	TOK_RIGHT_OP = 155; //0x9b
	TOK_SUB_ASSIGN = 156; //0x9c
	TOK_XOR_OP = 157; //0x9d
	TOK_XOR_ASSIGN = 158; //0x9e
	TOK_FLOATCONSTANT = 159; //0x9f
	TOK_BOOLCONSTANT = 160; //0xa0
	TOK_INTCONSTANT = 161; //0xa1
	TOK_IDENTIFIER = 162; //0xa2
	TOK_PROGRAMHEADER = 163; //0xa3
	TOK_ABS = 164; //0xa4
	TOK_ADD = 165; //0xa5
	TOK_ADDRESS = 166; //0xa6
	TOK_ALIAS = 167; //0xa7
	TOK_ARL = 168; //0xa8
	TOK_ATTRIB = 169; //0xa9
	TOK_DP3 = 170; //0xaa
	TOK_DP4 = 171; //0xab
	TOK_DPH = 172; //0xac
	TOK_DST = 173; //0xad
	TOK_END = 174; //0xae
	TOK_EX2 = 175; //0xaf
	TOK_EXP = 176; //0xb0
	TOK_FLR = 177; //0xb1
	TOK_FRC = 178; //0xb2
	TOK_LIT = 179; //0xb3
	TOK_LG2 = 180; //0xb4
	TOK_LOG = 181; //0xb5
	TOK_MAD = 182; //0xb6
	TOK_MAX = 183; //0xb7
	TOK_MIN = 184; //0xb8
	TOK_MOV = 185; //0xb9
	TOK_MUL = 186; //0xba
	TOK_OPTION = 187; //0xbb
	TOK_PARAM = 188; //0xbc
	TOK_POW = 189; //0xbd
	TOK_PROGRAM = 190; //0xbe
	TOK_RCP = 191; //0xbf
	TOK_RESULT = 192; //0xc0
	TOK_RSQ = 193; //0xc1
	TOK_SGE = 194; //0xc2
	TOK_SLT = 195; //0xc3
	TOK_SUB = 196; //0xc4
	TOK_STATE = 197; //0xc5
	TOK_SWZ = 198; //0xc6
	TOK_TEMP = 199; //0xc7
	TOK_VERTEX = 200; //0xc8
	TOK_XPD = 201; //0xc9
	TOK_ATTRIB_LC = 202; //0xca
	TOK_COLOR = 203; //0xcb
	TOK_FOGCOORD = 204; //0xcc
	TOK_MATRIXINDEX = 205; //0xcd
	TOK_NORMAL = 206; //0xce
	TOK_POSITION = 207; //0xcf
	TOK_PRIMARY = 208; //0xd0
	TOK_SECONDARY = 209; //0xd1
	TOK_TEXCOORD = 210; //0xd2
	TOK_WEIGHT = 211; //0xd3
	TOK_ENV = 212; //0xd4
	TOK_LOCAL = 213; //0xd5
	TOK_AMBIENT = 214; //0xd6
	TOK_BACK = 215; //0xd7
	TOK_DIFFUSE = 216; //0xd8
	TOK_EMISSION = 217; //0xd9
	TOK_FRONT = 218; //0xda
	TOK_MATERIAL = 219; //0xdb
	TOK_SHININESS = 220; //0xdc
	TOK_SPECULAR = 221; //0xdd
	TOK_ATTENUATION = 222; //0xde
	TOK_DIRECTION = 223; //0xdf
	TOK_LIGHT = 224; //0xe0
	TOK_LIGHTMODEL = 225; //0xe1
	TOK_LIGHTPROD = 226; //0xe2
	TOK_SCENECOLOR = 227; //0xe3
	TOK_SPOT = 228; //0xe4
	TOK_EYE = 229; //0xe5
	TOK_OBJECT = 230; //0xe6
	TOK_TEXGEN = 231; //0xe7
	TOK_FOG = 232; //0xe8
	TOK_PARAMS = 233; //0xe9
	TOK_CLIP = 234; //0xea
	TOK_PLANE = 235; //0xeb
	TOK_POINT = 236; //0xec
	TOK_SIZE = 237; //0xed
	TOK_INVERSE = 238; //0xee
	TOK_INVTRANS = 239; //0xef
	TOK_MATRIX = 240; //0xf0
	TOK_MODELVIEW = 241; //0xf1
	TOK_MVP = 242; //0xf2
	TOK_PALETTE = 243; //0xf3
	TOK_PROJECTION = 244; //0xf4
	TOK_ROW = 245; //0xf5
	TOK_TEXTURE = 246; //0xf6
	TOK_TRANSPOSE = 247; //0xf7
	TOK_POINTSIZE = 248; //0xf8
	TOK_1SWIZZLE = 249; //0xf9
	TOK_2SWIZZLE = 250; //0xfa
	TOK_3SWIZZLE = 251; //0xfb
	TOK_4SWIZZLE = 252; //0xfc
	TOK_TEXGENCOORD = 253; //0xfd
	TOK_SWIZZLE = 254; //0xfe
	TOK_WRITEMASK = 255; //0xff
	TOK_SET_PREDICATE = 256; //0x100
	TOK_TEST_PREDICATE = 257; //0x101
	TOK_NEWLINE = 258; //0x102
	TOK_CARRIGE_RETURN = 259; //0x103
	TOK_TAB = 260; //0x104
	TOK_VTAB = 261; //0x105
	TOK_LANGUAGE_VERSION = 262; //0x106
	TOK_EXTENSION_CHANGE = 263; //0x107
	TOK_STRING = 264; //0x108
	TOK_ENDOFSTRING = 265; //0x109
	TOK_TERMINATEPARSING = 266; //0x10a
	TOKLAST = 267; //0x10b
}

typedef enum TokenNameTag TokenName

struct TokenTAG {
	TokenName eTokenName // @0
	IMG_CHAR* pszStartOfLine // @4
	IMG_UINT32 uStringNumber // @8
	IMG_UINT32 uLineNumber // @c
	IMG_UINT32 uCharNumber // @10
	IMG_UINT32 uSizeOfDataInBytes // @14
	IMG_VOID* pvData // @18
}

typedef struct TokenTAG Token

enum SyntaxSymbolMatchTAG {
	SYNTAX_SYMBOL_NO_MATCH = 0; //0x0
	SYNTAX_SYMBOL_MATCH = 1; //0x1
}

typedef enum SyntaxSymbolMatchTAG SyntaxSymbolMatch

enum SyntaxSymbolTypeTAG {
	SYMTYPE_RULE = 0; //0x0
	SYMTYPE_TOKEN = 1; //0x1
}

typedef enum SyntaxSymbolTypeTAG SyntaxSymbolType

typedef struct SyntaxSymbolTAG* PSyntaxSymbol

struct SyntaxSymbolTAG {
	IMG_UINT32 uSyntaxSymbolName // @0
	const IMG_CHAR* pSyntaxSymbolName // @4
	SyntaxSymbolType eSyntaxSymbolType // @8
	TokenName eTokenName // @c
	PFN_STATEMENT_MATCH pfnSyntaxSymbolMatchFN // @10
	PFN_STATEMENT_UNMATCH pfnSyntaxSymbolUnmatchFN // @14
	IMG_CHAR* pszDataMatch // @18
	IMG_UINT32 uLRSyntaxSymbolName // @1c
}

typedef SyntaxSymbolMatch* PFN_STATEMENT_MATCH

typedef enum SyntaxSymbolMatchTAG SyntaxSymbolMatch

typedef void* PFN_STATEMENT_UNMATCH

void

typedef struct SyntaxSymbolTAG SyntaxSymbol

struct SyntaxSymbolLookupEntryTAG {
	IMG_UINT32 uSyntaxSymbolGrammarStartPos // @0
	IMG_UINT32 uRuleNumber // @4
	IMG_UINT32 uNumVariants // @8
}

typedef struct SyntaxSymbolLookupEntryTAG SyntaxSymbolLookupEntry

struct SyntaxTableTAG {
	SyntaxSymbol* psSyntaxSymbolTable // @0
	IMG_UINT32 uSyntaxSymbolTableSize // @4
	SyntaxSymbolLookupEntry* psLookupTable // @8
	IMG_UINT32* psSyntaxGrammar // @c
	IMG_UINT32 uNumberSyntaxGrammarRules // @10
	IMG_UINT32 uEmptySyntaxSymbolName // @14
}

typedef struct SyntaxTableTAG SyntaxTable

typedef void* PFN_SYMBOL_DECONSTRUCTOR

void

struct SymTableEntry_TAG {
	IMG_CHAR* pszString // @0
	IMG_UINT32 uSymbolID // @4
	IMG_UINT32 bScopeModifier // @8
	IMG_UINT32 uScopeLevel // @8
	IMG_UINT32 uRefCount // @8
	IMG_UINT32 uDataSizeInBytes // @8
	IMG_VOID* pvData // @c
	PFN_SYMBOL_DECONSTRUCTOR pfnSymbolDeconstructor // @10
}

typedef struct SymTableEntry_TAG SymTableEntry

struct SymTable_TAG {
	IMG_CHAR[20] acDesc // @0
	IMG_UINT32 uNumEntries // @14
	IMG_UINT32 uMaxNumEntries // @18
	IMG_UINT32 uMaxNumBitsForSymbolTableIDs // @1c
	IMG_UINT32 uSymbolIDShift // @20
	IMG_UINT32 uSymbolIDMask // @24
	IMG_UINT32 uMaxTableSize // @28
	IMG_UINT32 uMaxNumUniqueSymbolIDs // @2c
	IMG_UINT32 uCurrentScopeLevel // @30
	IMG_UINT32 uUniqueSymbolTableID // @34
	IMG_UINT32 uGetNextSymbolCounter // @38
	IMG_UINT32 uGetNextSymbolScopeLevel // @3c
	struct SymTable_TAG* psSecondarySymbolTable // @40
	SymTableEntry* psEntries // @44
}

typedef struct SymTable_TAG SymTable

struct SymbolTableContextTAG {
	IMG_UINT32 uSymbolTableListSize // @0
	SymTable** ppsSymbolTables // @4
}

typedef struct SymbolTableContextTAG SymbolTableContext

struct MemHeapTAG {
	IMG_UINT32 uHeapItemSizeInBytes // @0
	IMG_UINT32 uHeapSizeInBytes // @4
	IMG_BYTE* pbHeap // @8
	IMG_BYTE* pbEndOfHeap // @c
	IMG_BYTE* pbCurrentWaterMark // @10
	IMG_VOID* pvFreeListHead // @14
}

typedef struct MemHeapTAG MemHeap

struct ParseTreeEntryTAG {
	IMG_UINT32 uSyntaxSymbolName // @0
	IMG_UINT32 eSyntaxSymbolType // @0
	IMG_UINT32 uSyntaxTablePos // @0
	IMG_UINT32 uSyntaxRuleOffset // @0
	IMG_UINT32 uNumRuleVariantsChecked // @0
	IMG_UINT32 bStopBackTracking // @0
	Token* psToken // @4
	struct ParseTreeEntryTAG* psNextRule // @8
	struct ParseTreeEntryTAG* psPrevRule // @c
	struct ParseTreeEntryTAG* psChildRule // @10
	struct ParseTreeEntryTAG* psParentRule // @14
	PFN_STATEMENT_UNMATCH pfnSyntaxSymbolUnmatchFN // @18
}

typedef struct ParseTreeEntryTAG ParseTreeEntry

struct LanguageContextTAG {
	SyntaxTable* psSyntaxTable // @0
	IMG_UINT32 uLastSyntaxSymbolName // @4
	IMG_UINT32 uEmptySyntaxSymbolName // @8
	IMG_UINT32 uHeadSyntaxSymbolName // @c
}

typedef struct LanguageContextTAG LanguageContext

struct ParseContextTAG {
	GLSLCompilerPrivateData* psCPD // @0
	IMG_CHAR** ppszSources // @4
	IMG_UINT32 uNumSources // @8
	Token* psTokenList // @c
	IMG_UINT32 uNumTokens // @10
	IMG_UINT32 uCurrentToken // @14
	IMG_UINT32 uFurthestMatchedToken // @18
	IMG_UINT32 uFurthestMatchedSyntaxSymbol // @1c
	ParseTreeEntry* psParseTree // @20
	MemHeap* psParseTreeMemHeap // @24
	IMG_UINT32 uNumParseTreeBranchesCreated // @28
	IMG_UINT32 uNumParseTreeBranchesRemoved // @2c
	IMG_UINT32 uMaxNumParseTreeBranches // @30
	IMG_VOID* pvPreProcessorData // @34
}

typedef struct ParseContextTAG ParseContext

enum ErrorTypeTAG {
	ERRORTYPE_INTERNAL = 1; //0x1
	ERRORTYPE_PROGRAM_ERROR = 2; //0x2
	ERRORTYPE_PROGRAM_WARNING = 4; //0x4
	ERRORTYPE_ALL = 7; //0x7
}

typedef enum ErrorTypeTAG ErrorType

struct ErrorMessageTAG {
	ErrorType eErrorType // @0
	IMG_CHAR* pszErrorMessageString // @4
	IMG_CHAR* pszStartOfLine // @8
	IMG_UINT32 uCharNumber // @c
}

typedef struct ErrorMessageTAG ErrorMessage

struct ErrorLogTAG {
	ErrorMessage[100] sErrorMessages // @0
	IMG_UINT32 uNumProgramErrorMessages // @640
	IMG_UINT32 uNumProgramWarningMessages // @644
	IMG_UINT32 uNumInternalErrorMessages // @648
	IMG_UINT32 uTotalNumErrorMessages // @64c
	IMG_BOOL bDisplayMessages // @650
}

typedef struct ErrorLogTAG ErrorLog

enum GLSLICOpcodeTAG {
	GLSLIC_OP_NOP = 0; //0x0
	GLSLIC_OP_MOV = 1; //0x1
	GLSLIC_OP_ADD = 2; //0x2
	GLSLIC_OP_SUB = 3; //0x3
	GLSLIC_OP_MUL = 4; //0x4
	GLSLIC_OP_DIV = 5; //0x5
	GLSLIC_OP_SEQ = 6; //0x6
	GLSLIC_OP_SNE = 7; //0x7
	GLSLIC_OP_SLT = 8; //0x8
	GLSLIC_OP_SLE = 9; //0x9
	GLSLIC_OP_SGT = 10; //0xa
	GLSLIC_OP_SGE = 11; //0xb
	GLSLIC_OP_NOT = 12; //0xc
	GLSLIC_OP_IF = 13; //0xd
	GLSLIC_OP_IFNOT = 14; //0xe
	GLSLIC_OP_IFLT = 15; //0xf
	GLSLIC_OP_IFLE = 16; //0x10
	GLSLIC_OP_IFGT = 17; //0x11
	GLSLIC_OP_IFGE = 18; //0x12
	GLSLIC_OP_IFEQ = 19; //0x13
	GLSLIC_OP_IFNE = 20; //0x14
	GLSLIC_OP_ELSE = 21; //0x15
	GLSLIC_OP_ENDIF = 22; //0x16
	GLSLIC_OP_LABEL = 23; //0x17
	GLSLIC_OP_RET = 24; //0x18
	GLSLIC_OP_CALL = 25; //0x19
	GLSLIC_OP_LOOP = 26; //0x1a
	GLSLIC_OP_STATICLOOP = 27; //0x1b
	GLSLIC_OP_ENDLOOP = 28; //0x1c
	GLSLIC_OP_CONTINUE = 29; //0x1d
	GLSLIC_OP_CONTDEST = 30; //0x1e
	GLSLIC_OP_BREAK = 31; //0x1f
	GLSLIC_OP_DISCARD = 32; //0x20
	GLSLIC_OP_SANY = 33; //0x21
	GLSLIC_OP_SALL = 34; //0x22
	GLSLIC_OP_ABS = 35; //0x23
	GLSLIC_OP_MIN = 36; //0x24
	GLSLIC_OP_MAX = 37; //0x25
	GLSLIC_OP_SGN = 38; //0x26
	GLSLIC_OP_RCP = 39; //0x27
	GLSLIC_OP_RSQ = 40; //0x28
	GLSLIC_OP_LOG2 = 41; //0x29
	GLSLIC_OP_EXP2 = 42; //0x2a
	GLSLIC_OP_DOT = 43; //0x2b
	GLSLIC_OP_CROSS = 44; //0x2c
	GLSLIC_OP_SIN = 45; //0x2d
	GLSLIC_OP_COS = 46; //0x2e
	GLSLIC_OP_FLOOR = 47; //0x2f
	GLSLIC_OP_CEIL = 48; //0x30
	GLSLIC_OP_DFDX = 49; //0x31
	GLSLIC_OP_DFDY = 50; //0x32
	GLSLIC_OP_TEXLD = 51; //0x33
	GLSLIC_OP_TEXLDP = 52; //0x34
	GLSLIC_OP_TEXLDB = 53; //0x35
	GLSLIC_OP_TEXLDL = 54; //0x36
	GLSLIC_OP_TEXLDD = 55; //0x37
	GLSLIC_OP_POW = 56; //0x38
	GLSLIC_OP_FRC = 57; //0x39
	GLSLIC_OP_MOD = 58; //0x3a
	GLSLIC_OP_TAN = 59; //0x3b
	GLSLIC_OP_ASIN = 60; //0x3c
	GLSLIC_OP_ACOS = 61; //0x3d
	GLSLIC_OP_ATAN = 62; //0x3e
	GLSLIC_OP_MAD = 63; //0x3f
	GLSLIC_OP_MIX = 64; //0x40
	GLSLIC_OP_NRM3 = 65; //0x41
	GLSLIC_OP_NUM = 66; //0x42
	GLSLIC_OP_FORCEDWORD = 2147483647; //0x7fffffff
}

typedef enum GLSLICOpcodeTAG GLSLICOpcode

enum GLSLICExtensionsSupportedTAG {
	GLSLIC_EXT_POW = 1; //0x1
	GLSLIC_EXT_FRC = 2; //0x2
	GLSLIC_EXT_MOD = 4; //0x4
	GLSLIC_EXT_TAN = 8; //0x8
	GLSLIC_EXT_ASIN = 16; //0x10
	GLSLIC_EXT_ACOS = 32; //0x20
	GLSLIC_EXT_ATAN = 64; //0x40
	GLSLIC_EXT_MAD = 128; //0x80
	GLSLIC_EXT_SAT_MOD = 256; //0x100
	GLSLIC_EXT_NEG_MOD = 512; //0x200
	GLSLIC_EXT_FORCEDWORD = 2147483647; //0x7fffffff
}

typedef enum GLSLICExtensionsSupportedTAG GLSLICExtensionsSupported

enum GLSLICVecComponentTAG {
	GLSLIC_VECCOMP_X = 0; //0x0
	GLSLIC_VECCOMP_Y = 1; //0x1
	GLSLIC_VECCOMP_Z = 2; //0x2
	GLSLIC_VECCOMP_W = 3; //0x3
}

typedef enum GLSLICVecComponentTAG GLSLICVecComponent

struct GLSLICVecSwizWMaskTAG {
	IMG_UINT32 uNumComponents // @0
	GLSLICVecComponent[4] aeVecComponent // @4
}

typedef struct GLSLICVecSwizWMaskTAG GLSLICVecSwizWMask

struct GLSLICOperandOffsetTAG {
	IMG_UINT32 uOffsetSymbolID // @0
	IMG_UINT32 uStaticOffset // @4
}

typedef struct GLSLICOperandOffsetTAG GLSLICOperandOffset

enum GLSLICModifierTAG {
	GLSLIC_MODIFIER_NONE = 0; //0x0
	GLSLIC_MODIFIER_NEGATE = 1; //0x1
	GLSLIC_MODIFIER_SATURATE = 2; //0x2
	GLSLIC_MODIFIER_FORCEDWORD = 2147483647; //0x7fffffff
}

typedef enum GLSLICModifierTAG GLSLICModifier

struct GLSLICOperandTAG {
	IMG_UINT32 uSymbolID // @0
	GLSLICVecSwizWMask sSwizWMask // @4
	GLSLICModifier eInstModifier // @18
	IMG_UINT32 uNumOffsets // @1c
	GLSLICOperandOffset* psOffsets // @20
}

typedef struct GLSLICOperandTAG GLSLICOperand

struct GLSLICInstructionTAG {
	GLSLICOpcode eOpCode // @0
	IMG_UINT32 uPredicateBoolSymID // @4
	IMG_BOOL bPredicateNegate // @8
	GLSLICOperand[5] asOperand // @c
	IMG_CHAR* pszOriginalLine // @c0
	struct GLSLICInstructionTAG* psNext // @c4
	struct GLSLICInstructionTAG* psPrev // @c8
}

typedef struct GLSLICInstructionTAG GLSLICInstruction

struct GLSLICDepthTextureTAG {
	IMG_INT32 iOffset // @0
	IMG_UINT32 uTextureSymID // @4
	IMG_UINT32 uTexDescSymID // @8
}

typedef struct GLSLICDepthTextureTAG GLSLICDepthTexture

struct GLSLICProgramTAG {
	GLSLICInstruction* psInstrHead // @0
	GLSLICInstruction* psInstrTail // @4
	IMG_UINT32 uNumDepthTextures // @8
	GLSLICDepthTexture[8] asDepthTexture // @c
	SymTable* psSymbolTable // @6c
	ErrorLog* psErrorLog // @70
	IMG_VOID* pvContextData // @74
}

typedef struct GLSLICProgramTAG GLSLICProgram

enum GLSLLogFilesTAG {
	GLSLLF_NOT_LOG = 0; //0x0
	GLSLLF_LOG_ICODE_ONLY = 1; //0x1
	GLSLLF_LOG_ALL = 2; //0x2
}

typedef enum GLSLLogFilesTAG GLSLLogFiles

enum GLSLProgramTypeTAG {
	GLSLPT_VERTEX = 0; //0x0
	GLSLPT_FRAGMENT = 1; //0x1
}

typedef enum GLSLProgramTypeTAG GLSLProgramType

enum GLSLExtensionTAG {
	GLSLEXT_NONE = 0; //0x0
	GLSLEXT_OES_TEXTURE_3D = 1; //0x1
	GLSLEXT_OES_STANDARD_NOISE = 2; //0x2
	GLSLEXT_OES_STANDARD_DERIVATIVES = 4; //0x4
	GLSLEXT_OES_INVARIANTALL = 8; //0x8
	GLSLEXT_IMG_PRECISION = 16; //0x10
	GLSLEXT_FORCE_I32 = 2147483647; //0x7fffffff
}

typedef enum GLSLExtensionTAG GLSLExtension

enum GLSLPrecisionQualifierTAG {
	GLSLPRECQ_UNKNOWN = 0; //0x0
	GLSLPRECQ_LOW = 1; //0x1
	GLSLPRECQ_MEDIUM = 2; //0x2
	GLSLPRECQ_HIGH = 3; //0x3
	GLSLPRECQ_INVALID = 4; //0x4
}

typedef enum GLSLPrecisionQualifierTAG GLSLPrecisionQualifier

enum GLSLBuiltInVariableWrittenToTAG {
	GLSLBVWT_POSITION = 1; //0x1
	GLSLBVWT_POINTSIZE = 2; //0x2
	GLSLBVWT_CLIPVERTEX = 4; //0x4
	GLSLBVWT_FRONTCOLOR = 8; //0x8
	GLSLBVWT_BACKCOLOR = 16; //0x10
	GLSLBVWT_FRONTSECONDARYCOLOR = 32; //0x20
	GLSLBVWT_BACKSECONDARYCOLOR = 64; //0x40
	GLSLBVWT_TEXCOORD = 128; //0x80
	GLSLBVWT_FRAGCOLOR = 256; //0x100
	GLSLBVWT_FRAGDATA = 512; //0x200
	GLSLBVWT_FRAGDEPTH = 1024; //0x400
	GLSLBVWT_FOGFRAGCOORD = 2048; //0x800
	GLSLBVWT_FORCE_I32 = 2147483647; //0x7fffffff
}

typedef enum GLSLBuiltInVariableWrittenToTAG GLSLBuiltInVariableWrittenTo

enum GLSLCompilerWarningsTAG {
	GLSLCW_WARN_GRADIENT_CALC_INSIDE_CONDITIONAL = 1; //0x1
	GLSLCW_WARN_USE_OF_UNINITIALISED_DATA = 2; //0x2
	GLSLCW_WARN_FUNCTION_NOT_CALLED = 4; //0x4
	GLSLCW_WARN_RECURSIVE_FUNCTION_CALL = 8; //0x8
	GLSLCW_WARN_ALL = 2147483647; //0x7fffffff
}

typedef enum GLSLCompilerWarningsTAG GLSLCompilerWarnings

struct GLSLRequestedPrecisionsTAG {
	GLSLPrecisionQualifier eDefaultUserVertFloat // @0
	GLSLPrecisionQualifier eDefaultUserVertInt // @4
	GLSLPrecisionQualifier eDefaultUserVertSampler // @8
	GLSLPrecisionQualifier eDefaultUserFragFloat // @c
	GLSLPrecisionQualifier eDefaultUserFragInt // @10
	GLSLPrecisionQualifier eDefaultUserFragSampler // @14
	GLSLPrecisionQualifier eVertBooleanPrecision // @18
	GLSLPrecisionQualifier eFragBooleanPrecision // @1c
	GLSLPrecisionQualifier eBIStateFloat // @20
	GLSLPrecisionQualifier eBIStateInt // @24
	GLSLPrecisionQualifier eBIVertAttribFloat // @28
	GLSLPrecisionQualifier eBIVaryingFloat // @2c
	GLSLPrecisionQualifier eBIFragFloat // @30
	GLSLPrecisionQualifier eGLPosition // @34
	GLSLPrecisionQualifier eGLPointSize // @38
	GLSLPrecisionQualifier eGLPointCoord // @3c
	GLSLPrecisionQualifier eDepthRange // @40
	GLSLPrecisionQualifier eForceUserVertFloat // @44
	GLSLPrecisionQualifier eForceUserVertInt // @48
	GLSLPrecisionQualifier eForceUserVertSampler // @4c
	GLSLPrecisionQualifier eForceUserFragFloat // @50
	GLSLPrecisionQualifier eForceUserFragInt // @54
	GLSLPrecisionQualifier eForceUserFragSampler // @58
}

typedef struct GLSLRequestedPrecisionsTAG GLSLRequestedPrecisions

struct GLSLCompilerResourcesTAG {
	IMG_INT32 iGLMaxVertexAttribs // @0
	IMG_INT32 iGLMaxTextureImageUnits // @4
	IMG_INT32 iGLMaxDrawBuffers // @8
	IMG_INT32 iGLMaxVertexTextureImageUnits // @c
	IMG_INT32 iGLMaxCombinedTextureImageUnits // @10
	IMG_INT32 iGLMaxVertexUniformVectors // @14
	IMG_INT32 iGLMaxVaryingVectors // @18
	IMG_INT32 iGLMaxFragmentUniformVectors // @1c
}

typedef struct GLSLCompilerResourcesTAG GLSLCompilerResources

struct GLSLInlineFuncRulesTAG {
	IMG_BOOL bInlineSamplerParamFunc // @0
	IMG_BOOL bInlineCalledOnceFunc // @4
	IMG_UINT32 uNumICInstrsBodyLessThan // @8
	IMG_UINT32 uNumParamComponentsGreaterThan // @c
}

typedef struct GLSLInlineFuncRulesTAG GLSLInlineFuncRules

struct GLSLUnrollLoopRulesTAG {
	IMG_BOOL bEnableUnroll // @0
	IMG_BOOL bUnrollRelativeAddressingOnly // @4
	IMG_UINT32 uMaxNumIterations // @8
}

typedef struct GLSLUnrollLoopRulesTAG GLSLUnrollLoopRules

struct GLSLInitCompilerContextTAG {
	GLSLLogFiles eLogFiles // @0
	IMG_BOOL bSuccessfulInit // @4
	GLSLRequestedPrecisions sRequestedPrecisions // @8
	GLSLCompilerResources sCompilerResources // @64
	GLSLInlineFuncRules sInlineFuncRules // @84
	GLSLUnrollLoopRules sUnrollLoopRules // @94
	IMG_VOID* pvCompilerPrivateData // @a0
}

typedef struct GLSLInitCompilerContextTAG GLSLInitCompilerContext

enum GLSLNodeTypeTAG {
	GLSLNT_IDENTIFIER = 0; //0x0
	GLSLNT_FIELD_SELECTION = 1; //0x1
	GLSLNT_ARRAY_SPECIFIER = 2; //0x2
	GLSLNT_POST_INC = 3; //0x3
	GLSLNT_POST_DEC = 4; //0x4
	GLSLNT_FUNCTION_CALL = 5; //0x5
	GLSLNT_ARRAY_LENGTH = 6; //0x6
	GLSLNT_PRE_INC = 7; //0x7
	GLSLNT_PRE_DEC = 8; //0x8
	GLSLNT_NEGATE = 9; //0x9
	GLSLNT_POSITIVE = 10; //0xa
	GLSLNT_NOT = 11; //0xb
	GLSLNT_BITWISE_NOT = 12; //0xc
	GLSLNT_MULTIPLY = 13; //0xd
	GLSLNT_DIVIDE = 14; //0xe
	GLSLNT_MODULUS = 15; //0xf
	GLSLNT_ADD = 16; //0x10
	GLSLNT_SUBTRACT = 17; //0x11
	GLSLNT_SHIFT_LEFT = 18; //0x12
	GLSLNT_SHIFT_RIGHT = 19; //0x13
	GLSLNT_LESS_THAN = 20; //0x14
	GLSLNT_GREATER_THAN = 21; //0x15
	GLSLNT_LESS_THAN_EQUAL = 22; //0x16
	GLSLNT_GREATER_THAN_EQUAL = 23; //0x17
	GLSLNT_EQUAL_TO = 24; //0x18
	GLSLNT_NOTEQUAL_TO = 25; //0x19
	GLSLNT_INCLUSIVE_OR = 26; //0x1a
	GLSLNT_EXCLUSIVE_OR = 27; //0x1b
	GLSLNT_AND = 28; //0x1c
	GLSLNT_LOGICAL_OR = 29; //0x1d
	GLSLNT_LOGICAL_XOR = 30; //0x1e
	GLSLNT_LOGICAL_AND = 31; //0x1f
	GLSLNT_QUESTION = 32; //0x20
	GLSLNT_EQUAL = 33; //0x21
	GLSLNT_MUL_ASSIGN = 34; //0x22
	GLSLNT_DIV_ASSIGN = 35; //0x23
	GLSLNT_MOD_ASSIGN = 36; //0x24
	GLSLNT_ADD_ASSIGN = 37; //0x25
	GLSLNT_SUB_ASSIGN = 38; //0x26
	GLSLNT_RIGHT_ASSIGN = 39; //0x27
	GLSLNT_LEFT_ASSIGN = 40; //0x28
	GLSLNT_AND_ASSIGN = 41; //0x29
	GLSLNT_XOR_ASSIGN = 42; //0x2a
	GLSLNT_OR_ASSIGN = 43; //0x2b
	GLSLNT_SUBEXPRESSION = 44; //0x2c
	GLSLNT_EXPRESSION = 45; //0x2d
	GLSLNT_CONTINUE = 46; //0x2e
	GLSLNT_BREAK = 47; //0x2f
	GLSLNT_DISCARD = 48; //0x30
	GLSLNT_RETURN = 49; //0x31
	GLSLNT_FOR = 50; //0x32
	GLSLNT_WHILE = 51; //0x33
	GLSLNT_DO = 52; //0x34
	GLSLNT_IF = 53; //0x35
	GLSLNT_STATEMENT_LIST = 54; //0x36
	GLSLNT_FUNCTION_DEFINITION = 55; //0x37
	GLSLNT_DECLARATION = 56; //0x38
	GLSLNT_SHADER = 57; //0x39
	GLSLNT_ERROR = 58; //0x3a
}

typedef enum GLSLNodeTypeTAG GLSLNodeType

struct GLSLNodeTAG {
	GLSLNodeType eNodeType // @0
	struct GLSLNodeTAG* psParent // @4
	IMG_UINT32 uNumChildren // @8
	struct GLSLNodeTAG** ppsChildren // @c
	IMG_UINT32 uSymbolTableID // @10
	ParseTreeEntry* psParseTreeEntry // @14
	Token* psToken // @18
	IMG_BOOL bEvaluated // @1c
}

typedef struct GLSLNodeTAG GLSLNode

struct GLSLPrototypedFunctionTAG {
	IMG_UINT32 uSymbolTableID // @0
	struct GLSLPrototypedFunctionTAG* psNext // @4
	struct GLSLPrototypedFunctionTAG* psPrev // @8
}

typedef struct GLSLPrototypedFunctionTAG GLSLPrototypedFunction

struct GLSLIdentifierListTAG {
	IMG_UINT32* puIdentifiersReferenced // @0
	IMG_UINT32 uNumIdentifiersReferenced // @4
	IMG_UINT32 uIdentifiersReferencedListSize // @8
}

typedef struct GLSLIdentifierListTAG GLSLIdentifierList

struct GLSLTreeContextTAG {
	IMG_UINT32 uNumResults // @0
	IMG_UINT32 uNumUnnamedStructures // @4
	IMG_UINT32 uCurrentFunctionDefinitionSymbolID // @8
	IMG_BOOL bFunctionReturnStatus // @c
	IMG_UINT32 uLoopLevel // @10
	IMG_UINT32 uConditionLevel // @14
	GLSLProgramType eProgramType // @18
	GLSLInitCompilerContext* psInitCompilerContext // @1c
	GLSLPrecisionQualifier eDefaultFloatPrecision // @20
	GLSLPrecisionQualifier eDefaultIntPrecision // @24
	GLSLPrecisionQualifier eDefaultSamplerPrecision // @28
	GLSLPrecisionQualifier eForceUserFloatPrecision // @2c
	GLSLPrecisionQualifier eForceUserIntPrecision // @30
	GLSLPrecisionQualifier eForceUserSamplerPrecision // @34
	IMG_BOOL bShaderHasModifiedPrecision // @38
	ParseContext* psParseContext // @3c
	SymTable* psSymbolTable // @40
	GLSLNode* psAbstractSyntaxTree // @44
	GLSLBuiltInVariableWrittenTo eBuiltInsWrittenTo // @48
	GLSLIdentifierList* psBuiltInsReferenced // @4c
	IMG_UINT32* puBuiltInFunctionsCalled // @50
	IMG_UINT32 uNumBuiltInFunctionsCalled // @54
	GLSLNode* psMainFunctionNode // @58
	IMG_BOOL bDiscardExecuted // @5c
	GLSLPrototypedFunction* psPrototypedFunction // @60
	GLSLCompilerWarnings eEnabledWarnings // @64
	GLSLExtension eEnabledExtensions // @68
	IMG_UINT32 uSupportedLanguageVersion // @6c
}

typedef struct GLSLTreeContextTAG GLSLTreeContext

struct GLSLICFunctionDefinitionTAG {
	IMG_UINT32 uFunctionDefinitionID // @0
	IMG_UINT32 uParamSymbolID // @4
	IMG_UINT32 uReturnDataSymbolID // @8
}

typedef struct GLSLICFunctionDefinitionTAG GLSLICFunctionDefinition

struct GLSLICShaderChildTAG {
	IMG_BOOL bDeclaration // @0
	IMG_BOOL bCodeGenerated // @4
	IMG_BOOL bToBeInlined // @8
	IMG_BOOL bEmptyBody // @c
	GLSLICInstruction* psCodeStart // @10
	GLSLICInstruction* psCodeEnd // @14
	IMG_UINT32 uFunctionDefinitionID // @18
}

typedef struct GLSLICShaderChildTAG GLSLICShaderChild

struct GLSLICContextTAG {
	GLSLTreeContext* psTreeContext // @0
	GLSLICExtensionsSupported eExtensionsSupported // @4
	IMG_BOOL bPostOpPending // @8
	GLSLPrecisionQualifier eDefaultFloatPrecision // @c
	GLSLPrecisionQualifier eBooleanPrecision // @10
	GLSLInitCompilerContext* psInitCompilerContext // @14
	IMG_BOOL bMainFunction // @18
	IMG_UINT32 uTempIssusedNo // @1c
	IMG_INT32 iConditionLevel // @20
	IMG_BOOL bHadReturn // @24
	GLSLProgramType eProgramType // @28
	GLSLBuiltInVariableWrittenTo eBuiltInsWrittenTo // @2c
	GLSLICFunctionDefinition* psArcCos2Func // @30
	GLSLICFunctionDefinition* psArcSin2Func // @34
	GLSLICFunctionDefinition* psArcTanFunc // @38
	GLSLICFunctionDefinition* psArcTan2Func // @3c
	GLSLICFunctionDefinition*[4] psNoiseFuncs // @40
	IMG_UINT32 uNumShaderChildren // @50
	GLSLICShaderChild* psShaderChildren // @54
	MemHeap* psInstructionHeap // @58
}

typedef struct GLSLICContextTAG GLSLICContext

struct ICodeOpTableTAG {
	GLSLICOpcode eICOpCode // @0
	IMG_BOOL bHasDest // @4
	IMG_UINT32 uNumSrcOperands // @8
	const IMG_CHAR* pszStr // @c
}

typedef struct ICodeOpTableTAG ICodeOpTable

struct GLSLICInvariantTAG {
	IMG_BOOL bInvariant // @0
	IMG_INT32 iInvariantValue // @4
	IMG_INT32[5] iWriteToLine // @8
}

typedef struct GLSLICInvariantTAG GLSLICInvariant

typedef struct {
	IMG_UINT32 uLoopVarID // @0
	IMG_INT32 iInitValue // @4
	GLSLICOpcode eCompareOp // @8
	IMG_INT32 iComparedValue // @c
	GLSLICOpcode eUpdateOp // @10
	IMG_INT32 iUpdateValue // @14
	IMG_UINT32 uNumBodyInstrs // @18
	GLSLICInvariant* apsInvariants // @1c
	IMG_BOOL bRelativeAddressing // @20
	IMG_UINT32 uNumIterations // @24
} GLSLICLoopInfo

// function
IMG_BOOL EvaluateCondition(
	GLSLCompilerPrivateData* psCPD
	IMG_INT32 iLoopValue
	GLSLICLoopInfo* psLoopInfo
	)
{
	IMG_BOOL condition
}


// function
GLSLICInstruction* FindWrittenToInstrForSymbolID(
	GLSLICInstruction* psSearchStart
	GLSLICInstruction* psSearchEnd
	IMG_UINT32 uSymID
	)
{
	IMG_INT32 iCodeConditionLevel
	GLSLICInstruction* psInstr
}


// function
IMG_INT32 FindWrittenToLineForSymbolID(
	GLSLICInstruction* psSearchStart
	IMG_INT32 iStartIndex
	IMG_UINT32 uSymID
	)
{
	IMG_INT32 iCodeConditionLevel
	GLSLICInstruction* psInstr
	IMG_INT32 loc
}


// function PC=<0x45354;0x457fc>
void RewriteLoopCode(
	GLSLCompilerPrivateData* psCPD
	GLSLICProgram* psICProgram
	GLSLICInstruction* psStart
	GLSLICInstruction* psEnd
	GLSLICLoopInfo* psLoopInfo
	IMG_INT32 iLoopValue
	GLSLPrecisionQualifier eLoopVarPrecision
	)
{
	GLSLICInstruction* psInstr
	IMG_UINT32 i
	IMG_UINT32 j
	IMG_UINT32 k
	IMG_UINT32 uLoopValueID
	SymTable* psSymTab
	IMG_UINT32 uSymID
	GLSLICInvariant* psInvariants
	{
		IMG_INT32[5] iValue
		IMG_INT32 iData
	}
	{
		IMG_INT32 iWriteToLine
		// inlined
		// function
		IMG_INT32 FindWrittenToLineForSymbolID(
			GLSLICInstruction* psSearchStart
			IMG_INT32 iStartIndex
			IMG_UINT32 uSymID
			)
		{
			IMG_INT32 iCodeConditionLevel
			GLSLICInstruction* psInstr
			IMG_INT32 loc
		}

	}
}


// function
IMG_BOOL ExamineLoopUpdateCode(
	GLSLCompilerPrivateData* psCPD
	GLSLICProgram* psICProgram
	GLSLICInstruction* psStart
	GLSLICInstruction* psEnd
	GLSLICLoopInfo* psLoopInfo
	)
{
	IMG_UINT32 uNumLValues
	IMG_BOOL bSingleInteger
	GLSLICInstruction* psInstr
	GLSLICInstruction* psInstr1
	SymTable* psSymbolTab
	{
		IMG_INT32 iData
		IMG_UINT32 uSrcASymID
		{
			GLSLICInstruction* psWriteTo
			{
				{
					IMG_INT32 iCodeConditionLevel
					GLSLICInstruction* psInstr
				}
			}
		}
	}
	{
		IMG_INT32 iData
		IMG_BOOL bOK
		IMG_UINT32 uScopeLevel
		IMG_UINT32 uLoopVarID
	}
}


// function
IMG_BOOL ExamineLoopBodyCode(
	GLSLCompilerPrivateData* psCPD
	GLSLICProgram* psICProgram
	GLSLICInstruction* psStart
	GLSLICInstruction* psEnd
	GLSLICLoopInfo* psLoopInfo
	)
{
	GLSLICInstruction* psInstr
	IMG_UINT32 i
	IMG_UINT32 j
	IMG_UINT32 k
	IMG_UINT32 uSymID
	IMG_BOOL bInvariant
	GLSLICInvariant* psInvariants
	IMG_INT32 iLoopLevel
	IMG_UINT32 uNumInstrs
	IMG_BOOL bStaticLoop
	{
		IMG_INT32 iCodeConditionLevel
		{
			IMG_INT32 iData
			{
				IMG_INT32 iWriteToLine
				{
					{
						IMG_INT32 iCodeConditionLevel
						GLSLICInstruction* psInstr
						IMG_INT32 loc
					}
				}
			}
		}
	}
}


// function
IMG_BOOL ExamineLoopConditionCode(
	GLSLCompilerPrivateData* psCPD
	GLSLICProgram* psICProgram
	GLSLICInstruction* psStart
	GLSLICInstruction* psEnd
	GLSLICLoopInfo* psLoopInfo
	)
{
	GLSLICInstruction* psInstr
	GLSLICInstruction* psLOOPInstr
	{
		IMG_INT32 iData
	}
}


// function
IMG_BOOL ExamineLoopInitCode(
	GLSLCompilerPrivateData* psCPD
	GLSLICProgram* psICProgram
	GLSLICInstruction* psStart
	GLSLICInstruction* psEnd
	GLSLICLoopInfo* psLoopInfo
	)
{
	GLSLICInstruction* psInstr
	IMG_INT32 iData
}


// function
IMG_UINT32 CalculateLoopNumIterations(
	GLSLCompilerPrivateData* psCPD
	GLSLICLoopInfo* psLoopInfo
	)
{
	IMG_INT32 iLoopValue
	IMG_UINT32 uNumIterations
	{
		{
			IMG_BOOL condition
		}
	}
}


// function
void UnrollLoopFORCode(
	GLSLCompilerPrivateData* psCPD
	GLSLICProgram* psICProgram
	GLSLICInstruction* psStart
	GLSLICInstruction* psEnd
	GLSLICLoopInfo* psLoopInfo
	)
{
	IMG_INT32 iLoopValue
	IMG_UINT32 uLoopValueID
	IMG_UINT32 uNumIterations
	GLSLICInstruction* psClonedStart
	GLSLICInstruction* psCloneEnd
	GLSLPrecisionQualifier eLoopVarPrecision
	{
		{
			IMG_BOOL condition
		}
	}
}


// function
void FreeInvariantInfo(
	GLSLICLoopInfo* psLoopInfo
	)
{
}


// external function PC=<0x457fc;0x465e4>
void ICUnrollLoopFOR(
	GLSLCompilerPrivateData* psCPD
	GLSLICProgram* psICProgram
	IMG_BOOL bUnrollLoop
	GLSLICInstruction* psInitStart
	GLSLICInstruction* psInitEnd
	GLSLICInstruction* psCondStart
	GLSLICInstruction* psCondEnd
	GLSLICInstruction* psUpdateStart
	GLSLICInstruction* psUpdateEnd
	)
{
	GLSLICInstruction* psLoopStart
	GLSLICInstruction* psLoopEnd
	GLSLICLoopInfo sLoopInfo
	GLSLICContext* psICContext
	GLSLUnrollLoopRules* psUnrollLoopRules
	IMG_BOOL bStaticLoop
	TidyUp: \\ label @0x45890
	// inlined
	// function
	IMG_BOOL ExamineLoopUpdateCode(
		GLSLCompilerPrivateData* psCPD
		GLSLICProgram* psICProgram
		GLSLICInstruction* psStart
		GLSLICInstruction* psEnd
		GLSLICLoopInfo* psLoopInfo
		)
	{
		IMG_UINT32 uNumLValues
		IMG_BOOL bSingleInteger
		GLSLICInstruction* psInstr
		GLSLICInstruction* psInstr1
		SymTable* psSymbolTab
		{
			IMG_INT32 iData
			IMG_UINT32 uSrcASymID
			{
				GLSLICInstruction* psWriteTo
				{
					{
						IMG_INT32 iCodeConditionLevel
						GLSLICInstruction* psInstr
					}
				}
			}
		}
		{
			IMG_INT32 iData
			IMG_BOOL bOK
			IMG_UINT32 uScopeLevel
			IMG_UINT32 uLoopVarID
		}
	}

	// inlined
	// function
	void FreeInvariantInfo(
		GLSLICLoopInfo* psLoopInfo
		)
	{
	}

	// inlined
	// function
	IMG_BOOL ExamineLoopBodyCode(
		GLSLCompilerPrivateData* psCPD
		GLSLICProgram* psICProgram
		GLSLICInstruction* psStart
		GLSLICInstruction* psEnd
		GLSLICLoopInfo* psLoopInfo
		)
	{
		GLSLICInstruction* psInstr
		IMG_UINT32 i
		IMG_UINT32 j
		IMG_UINT32 k
		IMG_UINT32 uSymID
		IMG_BOOL bInvariant
		GLSLICInvariant* psInvariants
		IMG_INT32 iLoopLevel
		IMG_UINT32 uNumInstrs
		IMG_BOOL bStaticLoop
		{
			IMG_INT32 iCodeConditionLevel
			{
				IMG_INT32 iData
				{
					IMG_INT32 iWriteToLine
					{
						{
							IMG_INT32 iCodeConditionLevel
							GLSLICInstruction* psInstr
							IMG_INT32 loc
						}
					}
				}
			}
		}
	}

	// inlined
	// function
	IMG_BOOL ExamineLoopConditionCode(
		GLSLCompilerPrivateData* psCPD
		GLSLICProgram* psICProgram
		GLSLICInstruction* psStart
		GLSLICInstruction* psEnd
		GLSLICLoopInfo* psLoopInfo
		)
	{
		GLSLICInstruction* psInstr
		GLSLICInstruction* psLOOPInstr
		{
			IMG_INT32 iData
		}
	}

	// inlined
	// function
	IMG_BOOL ExamineLoopInitCode(
		GLSLCompilerPrivateData* psCPD
		GLSLICProgram* psICProgram
		GLSLICInstruction* psStart
		GLSLICInstruction* psEnd
		GLSLICLoopInfo* psLoopInfo
		)
	{
		GLSLICInstruction* psInstr
		IMG_INT32 iData
	}

	// inlined
	// function
	IMG_UINT32 CalculateLoopNumIterations(
		GLSLCompilerPrivateData* psCPD
		GLSLICLoopInfo* psLoopInfo
		)
	{
		IMG_INT32 iLoopValue
		IMG_UINT32 uNumIterations
		{
			{
				IMG_BOOL condition
			}
		}
	}

	// inlined
	// function
	void UnrollLoopFORCode(
		GLSLCompilerPrivateData* psCPD
		GLSLICProgram* psICProgram
		GLSLICInstruction* psStart
		GLSLICInstruction* psEnd
		GLSLICLoopInfo* psLoopInfo
		)
	{
		IMG_INT32 iLoopValue
		IMG_UINT32 uLoopValueID
		IMG_UINT32 uNumIterations
		GLSLICInstruction* psClonedStart
		GLSLICInstruction* psCloneEnd
		GLSLPrecisionQualifier eLoopVarPrecision
		{
			{
				IMG_BOOL condition
			}
		}
	}

	{
		GLSLICInstruction* psLoopInst
	}
}


struct _IO_FILE* stdin

struct _IO_FILE* stdout

const ICodeOpTable[NaN] asICodeOpTable

