/*
 |            file: icvt_core.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/usc
 | program counter: <0x0;0x5468>
 */
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 int[64] __jmp_buf

typedef struct {
	long unsigned int[32] __val // @0
} __sigset_t

struct __jmp_buf_tag {
	__jmp_buf __jmpbuf // @0
	int __mask_was_saved // @100
	__sigset_t __saved_mask // @104
}

typedef struct __jmp_buf_tag[1] jmp_buf

typedef unsigned char IMG_BYTE

typedef char IMG_CHAR

typedef char* IMG_PCHAR

typedef short unsigned int IMG_UINT16

typedef long unsigned int IMG_UINT32

typedef long unsigned int* IMG_PUINT32

typedef long int IMG_INT32

typedef float IMG_FLOAT

typedef float* IMG_PFLOAT

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 enum tag_img_bool* IMG_PBOOL

typedef void* IMG_PVOID

enum undefined {
	SGX_CORE_ID_INVALID = 0; //0x0
	SGX_CORE_ID_520 = 1; //0x1
	SGX_CORE_ID_530 = 2; //0x2
	SGX_CORE_ID_535 = 3; //0x3
	SGX_CORE_ID_540 = 4; //0x4
	SGX_CORE_ID_545 = 5; //0x5
}

typedef enum undefined SGX_CORE_ID_TYPE

struct _SGX_CORE_INFO {
	SGX_CORE_ID_TYPE eID // @0
	IMG_UINT32 uiRev // @4
}

typedef struct _SGX_CORE_INFO SGX_CORE_INFO

struct _SGX_CORE_BUGS {
	SGX_CORE_ID_TYPE eCoreType // @0
	IMG_UINT32 ui32CoreRevision // @4
	IMG_UINT32 ui32Flags // @8
}

typedef struct _SGX_CORE_BUGS SGX_CORE_BUGS

struct _SGX_CORE_FEATURES {
	IMG_UINT32 ui32Flags // @0
	IMG_UINT32 ui32NumMutexes // @4
	IMG_UINT32 ui32NumMonitors // @8
	IMG_UINT32 ui32TextureStateSize // @c
	IMG_UINT32 ui32NumUSEPipes // @10
	IMG_UINT32 ui32NumProgramCounterBits // @14
}

typedef struct _SGX_CORE_FEATURES SGX_CORE_FEATURES

enum UseasmRegTypeTAG {
	USEASM_REGTYPE_TEMP = 0; //0x0
	USEASM_REGTYPE_OUTPUT = 1; //0x1
	USEASM_REGTYPE_PRIMATTR = 2; //0x2
	USEASM_REGTYPE_SECATTR = 3; //0x3
	USEASM_REGTYPE_INDEX = 4; //0x4
	USEASM_REGTYPE_GLOBAL = 5; //0x5
	USEASM_REGTYPE_FPCONSTANT = 6; //0x6
	USEASM_REGTYPE_FPINTERNAL = 7; //0x7
	USEASM_REGTYPE_IMMEDIATE = 8; //0x8
	USEASM_REGTYPE_LINK = 9; //0x9
	USEASM_REGTYPE_DRC = 10; //0xa
	USEASM_REGTYPE_LABEL = 11; //0xb
	USEASM_REGTYPE_PREDICATE = 12; //0xc
	USEASM_REGTYPE_CLIPPLANE = 13; //0xd
	USEASM_REGTYPE_ADDRESSMODE = 14; //0xe
	USEASM_REGTYPE_SWIZZLE = 15; //0xf
	USEASM_REGTYPE_INTSRCSEL = 16; //0x10
	USEASM_REGTYPE_FILTERCOEFF = 17; //0x11
	USEASM_REGTYPE_LABEL_WITH_OFFSET = 18; //0x12
	USEASM_REGTYPE_TEMP_NAMED = 19; //0x13
	USEASM_REGTYPE_MAXIMUM = 20; //0x14
}

struct _USE_REGISTER {
	IMG_UINT32 uNumber // @0
	IMG_UINT32 uType // @4
	IMG_UINT32 uFlags // @8
	IMG_UINT32 uIndex // @c
	IMG_UINT32 uNamedRegLink // @10
}

typedef struct _USE_REGISTER USE_REGISTER

struct _USE_INST {
	IMG_UINT32 uOpcode // @0
	IMG_UINT32 uFlags1 // @4
	IMG_UINT32 uFlags2 // @8
	IMG_UINT32 uFlags3 // @c
	IMG_UINT32 uTest // @10
	USE_REGISTER[11] asArg // @14
	struct _USE_INST* psPrev // @f0
	struct _USE_INST* psNext // @f4
	IMG_UINT32 uSourceLine // @f8
	IMG_PCHAR pszSourceFile // @fc
}

typedef struct _USE_INST* PUSE_INST

typedef IMG_PVOID* USEASM_REALLOCFN

typedef void* IMG_PVOID

typedef IMG_UINT32* USEASM_GETLABELADDRFN

typedef long unsigned int IMG_UINT32

typedef void* USEASM_SETLABELADDRFN

void

typedef IMG_PCHAR* USEASM_GETLABELNAMEFN

typedef char* IMG_PCHAR

typedef void* USEASM_ASSEMBLERERRORFN

void

typedef void* USEASM_LADDRNOTIFY

void

struct _USEASM_CONTEXT {
	IMG_PVOID pvContext // @0
	IMG_PVOID pvLabelState // @4
	USEASM_REALLOCFN pfnRealloc // @8
	USEASM_GETLABELADDRFN pfnGetLabelAddress // @c
	USEASM_SETLABELADDRFN pfnSetLabelAddress // @10
	USEASM_GETLABELNAMEFN pfnGetLabelName // @14
	USEASM_ASSEMBLERERRORFN pfnAssemblerError // @18
	USEASM_LADDRNOTIFY pfnLADDRNotify // @1c
}

typedef struct _USEASM_CONTEXT* PUSEASM_CONTEXT

typedef void* IMG_PVOID

void

void

enum tagUF_OPCODE {
	UFOP_ADD = 0; //0x0
	UFOP_SUB = 1; //0x1
	UFOP_MUL = 2; //0x2
	UFOP_MAD = 3; //0x3
	UFOP_DOT2ADD = 4; //0x4
	UFOP_DOT3 = 5; //0x5
	UFOP_DOT4 = 6; //0x6
	UFOP_RECIP = 7; //0x7
	UFOP_RSQRT = 8; //0x8
	UFOP_EXP = 9; //0x9
	UFOP_LOG = 10; //0xa
	UFOP_CMP = 11; //0xb
	UFOP_CND = 12; //0xc
	UFOP_FRC = 13; //0xd
	UFOP_FLR = 14; //0xe
	UFOP_TRC = 15; //0xf
	UFOP_RNE = 16; //0x10
	UFOP_CEIL = 17; //0x11
	UFOP_LRP = 18; //0x12
	UFOP_POW = 19; //0x13
	UFOP_MIN = 20; //0x14
	UFOP_MAX = 21; //0x15
	UFOP_CRS = 22; //0x16
	UFOP_NRM = 23; //0x17
	UFOP_ABS = 24; //0x18
	UFOP_SINCOS = 25; //0x19
	UFOP_SINCOS2 = 26; //0x1a
	UFOP_M4X4 = 27; //0x1b
	UFOP_M4X3 = 28; //0x1c
	UFOP_M3X4 = 29; //0x1d
	UFOP_M3X3 = 30; //0x1e
	UFOP_M3X2 = 31; //0x1f
	UFOP_DSX = 32; //0x20
	UFOP_DSY = 33; //0x21
	UFOP_DST = 34; //0x22
	UFOP_LIT = 35; //0x23
	UFOP_OGLLIT = 36; //0x24
	UFOP_SLT = 37; //0x25
	UFOP_SGE = 38; //0x26
	UFOP_SGN = 39; //0x27
	UFOP_SETBEQ = 40; //0x28
	UFOP_SETBGE = 41; //0x29
	UFOP_SETBLT = 42; //0x2a
	UFOP_SETBNE = 43; //0x2b
	UFOP_MOVCBIT = 44; //0x2c
	UFOP_DIV = 45; //0x2d
	UFOP_SQRT = 46; //0x2e
	UFOP_AND = 47; //0x2f
	UFOP_SHL = 48; //0x30
	UFOP_ASR = 49; //0x31
	UFOP_NOT = 50; //0x32
	UFOP_OR = 51; //0x33
	UFOP_SHR = 52; //0x34
	UFOP_XOR = 53; //0x35
	UFOP_LD = 54; //0x36
	UFOP_LDB = 55; //0x37
	UFOP_LDL = 56; //0x38
	UFOP_LDP = 57; //0x39
	UFOP_LDPIFTC = 58; //0x3a
	UFOP_LDD = 59; //0x3b
	UFOP_LDC = 60; //0x3c
	UFOP_LDCLZ = 61; //0x3d
	UFOP_KPLT = 62; //0x3e
	UFOP_KPLE = 63; //0x3f
	UFOP_KILLNZBIT = 64; //0x40
	UFOP_IF = 65; //0x41
	UFOP_ELSE = 66; //0x42
	UFOP_ENDIF = 67; //0x43
	UFOP_CALL = 68; //0x44
	UFOP_CALLNZ = 69; //0x45
	UFOP_RET = 70; //0x46
	UFOP_LOOP = 71; //0x47
	UFOP_ENDLOOP = 72; //0x48
	UFOP_REP = 73; //0x49
	UFOP_ENDREP = 74; //0x4a
	UFOP_IFC = 75; //0x4b
	UFOP_BREAK = 76; //0x4c
	UFOP_BREAKC = 77; //0x4d
	UFOP_SETP = 78; //0x4e
	UFOP_LABEL = 79; //0x4f
	UFOP_IFP = 80; //0x50
	UFOP_BREAKP = 81; //0x51
	UFOP_CALLP = 82; //0x52
	UFOP_GLSLLOOP = 83; //0x53
	UFOP_GLSLSTATICLOOP = 84; //0x54
	UFOP_GLSLENDLOOP = 85; //0x55
	UFOP_GLSLCONTINUE = 86; //0x56
	UFOP_GLSLLOOPTAIL = 87; //0x57
	UFOP_BREAKNZBIT = 88; //0x58
	UFOP_CALLNZBIT = 89; //0x59
	UFOP_RETNZBIT = 90; //0x5a
	UFOP_CONTINUENZBIT = 91; //0x5b
	UFOP_IFNZBIT = 92; //0x5c
	UFOP_SWITCH = 93; //0x5d
	UFOP_CASE = 94; //0x5e
	UFOP_DEFAULT = 95; //0x5f
	UFOP_ENDSWITCH = 96; //0x60
	UFOP_NOP = 97; //0x61
	UFOP_MOV = 98; //0x62
	UFOP_MOVA_TRC = 99; //0x63
	UFOP_MOVA_RNE = 100; //0x64
	UFOP_MOVA_INT = 101; //0x65
	UFOP_EXPP = 102; //0x66
	UFOP_LOGP = 103; //0x67
	UFOP_DOT4_CP = 104; //0x68
	UFOP_MUL2 = 105; //0x69
	UFOP_DIV2 = 106; //0x6a
	UFOP_MAXIMUM = 107; //0x6b
}

typedef enum tagUF_OPCODE UF_OPCODE

enum tagUNIFLEX_SRCMOD {
	UFREG_SMOD_NONE = 0; //0x0
	UFREG_SMOD_COMPLEMENT = 1; //0x1
	UFREG_SMOD_SIGNED = 2; //0x2
	UFREG_SMOD_BIAS = 3; //0x3
	UFREG_SMOD_TIMES2 = 4; //0x4
}

enum tagUF_REGTYPE {
	UFREG_TYPE_TEMP = 0; //0x0
	UFREG_TYPE_COL = 1; //0x1
	UFREG_TYPE_TEXCOORD = 2; //0x2
	UFREG_TYPE_CONST = 3; //0x3
	UFREG_TYPE_TEX = 4; //0x4
	UFREG_TYPE_HW_CONST = 5; //0x5
	UFREG_TYPE_PSOUTPUT = 6; //0x6
	UFREG_TYPE_ICONST = 7; //0x7
	UFREG_TYPE_BCONST = 8; //0x8
	UFREG_TYPE_MISC = 9; //0x9
	UFREG_TYPE_COMPOP = 10; //0xa
	UFREG_TYPE_LABEL = 11; //0xb
	UFREG_TYPE_PREDICATE = 12; //0xc
	UFREG_TYPE_TEXCOORDP = 13; //0xd
	UFREG_TYPE_TEXCOORDPIFTC = 14; //0xe
	UFREG_TYPE_VSINPUT = 15; //0xf
	UFREG_TYPE_VSOUTPUT = 16; //0x10
	UFREG_TYPE_ADDRESS = 17; //0x11
	UFREG_TYPE_INDEXABLETEMP = 19; //0x13
	UFREG_TYPE_CLIPPLANE = 20; //0x14
	UFREG_TYPE_IMMEDIATE = 21; //0x15
	UFREG_TYPE_MAXIMUM = 22; //0x16
}

typedef enum tagUF_REGTYPE UF_REGTYPE

struct _UNIFLEX_INDEXABLE_TEMP_SIZE {
	IMG_UINT32 uTag // @0
	IMG_UINT32 uSize // @4
}

typedef struct _UNIFLEX_INDEXABLE_TEMP_SIZE* PUNIFLEX_INDEXABLE_TEMP_SIZE

struct _UNIFLEX_CONSTS_RANGE {
	IMG_UINT32 uRangeStart // @0
	IMG_UINT32 uRangeEnd // @4
}

typedef struct _UNIFLEX_CONSTS_RANGE* PUNIFLEX_CONSTS_RANGE

struct _UNIFLEX_CONSTS_BUFF_RANGES {
	IMG_UINT32 uConstRangesCount // @0
	PUNIFLEX_CONSTS_RANGE psRanges // @4
}

typedef struct _UNIFLEX_CONSTS_BUFF_RANGES UNIFLEX_CONSTS_BUFF_RANGES

struct _UNIFLEX_PROGRAM_PARAMETERS {
	IMG_UINT32 uConstantBase // @0
	IMG_UINT32 uScratchBase // @4
	IMG_UINT32 uBooleanConsts // @8
	IMG_UINT32 uIntegerConsts // @c
	IMG_UINT32 uTextureState // @10
	IMG_UINT32 uInRegisterConstantOffset // @14
	IMG_UINT32 uInRegisterConstantLimit // @18
	UNIFLEX_CONSTS_BUFF_RANGES[18] psConstsBuffRanges // @1c
	IMG_UINT32 uIndexableTempBase // @ac
	IMG_UINT32 uIndexableTempArrayCount // @b0
	PUNIFLEX_INDEXABLE_TEMP_SIZE psIndexableTempArraySizes // @b4
	IMG_UINT32 uU24ScaleConstantNum // @b8
	IMG_UINT32 uPackDestType // @bc
	IMG_UINT32 uPackPrecision // @c0
	IMG_UINT32 uFeedbackInstCount // @c4
	IMG_UINT32 uExtraPARegisters // @c8
	IMG_UINT32 uNumAvailableTemporaries // @cc
	IMG_UINT32 uCentroidMask // @d0
	IMG_UINT32[4] puOutputSaturate // @d4
	SGX_CORE_INFO sTarget // @e4
	IMG_UINT32[2] puValidVSOutputs // @ec
	IMG_UINT32 uTextureStateConstOffset // @f4
	IMG_UINT32 uValidPSOutputs // @f8
	IMG_UINT32[18] puRelativeConstantMax // @fc
	IMG_UINT32 uVSPointSizeOutputNum // @144
}

typedef struct _UNIFLEX_PROGRAM_PARAMETERS* PUNIFLEX_PROGRAM_PARAMETERS

enum tagUSC_CHANNELFORM {
	USC_CHANNELFORM_INVALID = 0; //0x0
	USC_CHANNELFORM_U8 = 1; //0x1
	USC_CHANNELFORM_S8 = 2; //0x2
	USC_CHANNELFORM_U16 = 3; //0x3
	USC_CHANNELFORM_S16 = 4; //0x4
	USC_CHANNELFORM_F16 = 5; //0x5
	USC_CHANNELFORM_F32 = 6; //0x6
	USC_CHANNELFORM_ZERO = 7; //0x7
	USC_CHANNELFORM_ONE = 8; //0x8
	USC_CHANNELFORM_U24 = 9; //0x9
	USC_CHANNELFORM_U8_UN = 10; //0xa
	USC_CHANNELFORM_C10 = 11; //0xb
}

typedef enum tagUSC_CHANNELFORM USC_CHANNELFORM

struct _UNIFLEX_TEXFORM_ {
	USC_CHANNELFORM[4] peChannelForm // @0
	IMG_UINT32 uSwizzle // @10
	IMG_BOOL bTwoResult // @14
	IMG_UINT32 uChunkSize // @18
	IMG_UINT32 uCSCConst // @1c
	IMG_BOOL bUsePCF // @20
	IMG_BOOL bTFSwapRedAndBlue // @24
}

typedef struct _UNIFLEX_TEXFORM_* PUNIFLEX_TEXFORM

enum tagUFREG_RELATIVEINDEX {
	UFREG_RELATIVEINDEX_NONE = 0; //0x0
	UFREG_RELATIVEINDEX_A0X = 1; //0x1
	UFREG_RELATIVEINDEX_A0Y = 2; //0x2
	UFREG_RELATIVEINDEX_A0Z = 3; //0x3
	UFREG_RELATIVEINDEX_A0W = 4; //0x4
	UFREG_RELATIVEINDEX_AL = 5; //0x5
	UFREG_RELATIVEINDEX_TEMP_REG = 6; //0x6
}

typedef enum tagUFREG_RELATIVEINDEX UFREG_RELATIVEINDEX

enum agUF_REGFORMAT {
	UF_REGFORMAT_F32 = 0; //0x0
	UF_REGFORMAT_F16 = 1; //0x1
	UF_REGFORMAT_C10 = 2; //0x2
	UF_REGFORMAT_U8 = 3; //0x3
	UF_REGFORMAT_I32 = 4; //0x4
	UF_REGFORMAT_U32 = 5; //0x5
}

typedef enum agUF_REGFORMAT UF_REGFORMAT

struct _UF_REGISTER_ {
	IMG_UINT32 uNum // @0
	UF_REGTYPE eType // @4
	UF_REGFORMAT eFormat // @8
		union {
		IMG_UINT16 uSwiz
		IMG_BYTE byMask
	} u // @c
	IMG_BYTE byMod // @e
	UFREG_RELATIVEINDEX eRelativeIndex // @10
	UF_REGTYPE eRelativeType // @14
	IMG_UINT32 uRelativeNum // @18
	IMG_BYTE byRelativeChan // @1c
	IMG_UINT32 uArrayTag // @20
	IMG_UINT32 uAddressAlignment // @24
}

typedef struct _UF_REGISTER_ UF_REGISTER

typedef struct _UF_REGISTER_* PUF_REGISTER

struct _UNIFLEX_INST_ {
	UF_OPCODE eOpCode // @0
	UF_REGISTER sDest // @4
	UF_REGISTER sDest2 // @2c
	UF_REGISTER[4] asSrc // @54
	IMG_UINT32 uPredicate // @f4
	struct _UNIFLEX_INST_* psILink // @f8
	struct _UNIFLEX_INST_* psBLink // @fc
}

typedef struct _UNIFLEX_INST_* PUNIFLEX_INST

struct _UNIFLEX_CONSTDEF_ {
	IMG_UINT32 uCount // @0
	IMG_PUINT32 puConstStaticFlags // @4
	IMG_PFLOAT pfConst // @8
}

typedef struct _UNIFLEX_CONSTDEF_* PUNIFLEX_CONSTDEF

enum tagUNIFLEX_TEXTURE_COORDINATE {
	UNIFLEX_TEXTURE_COORDINATE_0 = 0; //0x0
	UNIFLEX_TEXTURE_COORDINATE_1 = 1; //0x1
	UNIFLEX_TEXTURE_COORDINATE_2 = 2; //0x2
	UNIFLEX_TEXTURE_COORDINATE_3 = 3; //0x3
	UNIFLEX_TEXTURE_COORDINATE_4 = 4; //0x4
	UNIFLEX_TEXTURE_COORDINATE_5 = 5; //0x5
	UNIFLEX_TEXTURE_COORDINATE_6 = 6; //0x6
	UNIFLEX_TEXTURE_COORDINATE_7 = 7; //0x7
	UNIFLEX_TEXTURE_COORDINATE_8 = 8; //0x8
	UNIFLEX_TEXTURE_COORDINATE_9 = 9; //0x9
	UNIFLEX_TEXTURE_COORDINATE_V0 = 10; //0xa
	UNIFLEX_TEXTURE_COORDINATE_V1 = 11; //0xb
	UNIFLEX_TEXTURE_COORDINATE_FOG = 12; //0xc
	UNIFLEX_TEXTURE_COORDINATE_POSITION = 13; //0xd
}

typedef enum tagUNIFLEX_TEXTURE_COORDINATE UNIFLEX_TEXTURE_COORDINATE

enum tagUNIFLEX_TEXLOAD_FORMAT {
	UNIFLEX_TEXLOAD_FORMAT_F32 = 0; //0x0
	UNIFLEX_TEXLOAD_FORMAT_F16 = 1; //0x1
	UNIFLEX_TEXLOAD_FORMAT_C10 = 2; //0x2
	UNIFLEX_TEXLOAD_FORMAT_U8 = 3; //0x3
}

typedef enum tagUNIFLEX_TEXLOAD_FORMAT UNIFLEX_TEXLOAD_FORMAT

struct tagUNIFLEX_TEXTURE_LOAD {
	IMG_UINT32 uTexture // @0
	IMG_UINT32 uChunk // @4
	UNIFLEX_TEXTURE_COORDINATE eCoordinate // @8
	IMG_UINT32 uCoordinateDimension // @c
	IMG_BOOL bProjected // @10
	UNIFLEX_TEXLOAD_FORMAT eFormat // @14
	IMG_BOOL bCentroid // @18
	IMG_UINT32 uNumAttributes // @1c
}

typedef struct tagUNIFLEX_TEXTURE_LOAD UNIFLEX_TEXTURE_LOAD

typedef struct tagUNIFLEX_TEXTURE_LOAD* PUNIFLEX_TEXTURE_LOAD

enum tagUNIFLEX_TEXTURE_UNPACK_FORMAT {
	UNIFLEX_TEXTURE_UNPACK_FORMAT_NATIVE = 0; //0x0
	UNIFLEX_TEXTURE_UNPACK_FORMAT_C10 = 1; //0x1
	UNIFLEX_TEXTURE_UNPACK_FORMAT_F16 = 2; //0x2
	UNIFLEX_TEXTURE_UNPACK_FORMAT_F32 = 3; //0x3
}

typedef enum tagUNIFLEX_TEXTURE_UNPACK_FORMAT UNIFLEX_TEXTURE_UNPACK_FORMAT

struct tagUNIFLEX_TEXTURE_UNPACK {
	UNIFLEX_TEXTURE_UNPACK_FORMAT eFormat // @0
	IMG_BOOL bNormalise // @4
}

typedef struct tagUNIFLEX_TEXTURE_UNPACK UNIFLEX_TEXTURE_UNPACK

enum tagUNIFLEX_CONST_FORMAT {
	UNIFLEX_CONST_FORMAT_F32 = 0; //0x0
	UNIFLEX_CONST_FORMAT_F16 = 1; //0x1
	UNIFLEX_CONST_FORMAT_C10 = 2; //0x2
	UNIFLEX_CONST_FORMAT_STATIC = 3; //0x3
	UNIFLEX_CONST_FORMAT_CONSTS_BUFFER_BASE = 4; //0x4
}

typedef enum tagUNIFLEX_CONST_FORMAT UNIFLEX_CONST_FORMAT

enum undefined {
	USC_METRICS_INTERMEDIATE_CODE_GENERATION = 0; //0x0
	USC_METRICS_VALUE_NUMBERING = 1; //0x1
	USC_METRICS_ASSIGN_INDEX_REGISTERS = 2; //0x2
	USC_METRICS_FLATTEN_CONDITIONALS_AND_ELIMINATE_MOVES = 3; //0x3
	USC_METRICS_INTEGER_OPTIMIZATIONS = 4; //0x4
	USC_METRICS_MERGE_IDENTICAL_INSTRUCTIONS = 5; //0x5
	USC_METRICS_INSTRUCTION_SELECTION = 6; //0x6
	USC_METRICS_REGISTER_ALLOCATION = 8; //0x8
	USC_METRICS_C10_REGISTER_ALLOCATION = 9; //0x9
	USC_METRICS_FINALISE_SHADER = 10; //0xa
	USC_METRICS_CUSTOM_TIMER_A = 11; //0xb
	USC_METRICS_CUSTOM_TIMER_B = 12; //0xc
	USC_METRICS_CUSTOM_TIMER_C = 13; //0xd
	USC_METRICS_LAST = 14; //0xe
}

typedef enum undefined USC_METRICS

typedef IMG_PVOID* USC_ALLOCFN

typedef void* USC_FREEFN

typedef void* USC_PRINTFN

typedef void* USC_PDUMPFN

void

typedef void* USC_STARTFN

void

typedef void* USC_FINISHFN

struct _USC_MEMO_ {
	IMG_PVOID pvData // @0
}

typedef struct _USC_MEMO_ USC_MEMO

struct _USC_CHUNK_ {
	IMG_UINT32 uIndex // @0
	IMG_PVOID* pvArray // @4
	struct _USC_CHUNK_* psPrev // @8
	struct _USC_CHUNK_* psNext // @c
}

typedef struct _USC_CHUNK_* USC_PCHUNK

struct _USC_ARRAY_ {
	IMG_UINT32 uProps // @0
	IMG_UINT32 uChunk // @4
	IMG_UINT32 uSize // @8
	IMG_PVOID pvDefault // @c
	USC_PCHUNK psFirst // @10
	USC_MEMO sMemo // @14
}

typedef struct _USC_ARRAY_* USC_PARRAY

struct _USC_VECTOR_ {
	IMG_UINT32 uHeader // @0
	IMG_UINT32 uChunk // @4
	USC_PCHUNK psFirst // @8
	USC_MEMO sMemo // @c
}

typedef struct _USC_VECTOR_ USC_VECTOR

enum _USC_GRAPH_TYPE_ {
	GRAPH_NULL = 0; //0x0
	GRAPH_PLAIN = 2; //0x2
	GRAPH_SYM = 4; //0x4
	GRAPH_REFL = 8; //0x8
}

typedef enum _USC_GRAPH_TYPE_ USC_GRAPH_TYPE

struct _USC_GRAPH_ {
	IMG_UINT32 uChunk // @0
	USC_GRAPH_TYPE eType // @4
	IMG_PVOID pvDefault // @8
	USC_PARRAY psArray // @c
}

typedef struct _USC_GRAPH_* USC_PGRAPH

typedef struct {
	USC_VECTOR sPredicate // @0
	USC_VECTOR sPrimAttr // @10
	USC_VECTOR sTemp // @20
	USC_VECTOR sOutput // @30
	IMG_UINT32[1] puFpInternal // @40
	IMG_UINT32[1] puIndexReg // @44
} REGISTER_LIVESET

typedef struct {
	USC_VECTOR sPredicate // @0
	USC_VECTOR sPrimAttr // @10
	USC_VECTOR sTemp // @20
	USC_VECTOR sOutput // @30
	IMG_UINT32[1] puFpInternal // @40
	IMG_UINT32[1] puIndexReg // @44
}* PREGISTER_LIVESET

struct _INST_DESC {
	IMG_PCHAR pszName // @0
	IMG_UINT32 uFlags // @4
	IMG_UINT32 uArgumentCount // @8
	IMG_BOOL bHasDest // @c
	IMG_BOOL bCanRepeat // @10
	IMG_UINT32 uMaxRepeatCount // @14
	IMG_BOOL bCanUseRepeatMask // @18
	IMG_BOOL bDestMaskable // @1c
	IMG_UINT32[3] puMoeArgRemap // @20
	IMG_BOOL bCanPredicate // @2c
	IMG_UINT32 uUseasmOpcode // @30
}

typedef struct _INST_DESC INST_DESC

enum _IOPCODE {
	IMOV = 1; //0x1
	IFMOV = 2; //0x2
	IFADD = 3; //0x3
	IFSUB = 4; //0x4
	IFMUL = 5; //0x5
	IFMAD = 6; //0x6
	IFADM = 7; //0x7
	IFMSA = 8; //0x8
	IFDP = 9; //0x9
	IFDDP = 10; //0xa
	IFRCP = 11; //0xb
	IFRSQ = 12; //0xc
	IFLOG = 13; //0xd
	IFEXP = 14; //0xe
	IFDSX = 15; //0xf
	IFDSY = 16; //0x10
	IFMIN = 17; //0x11
	IFMAX = 18; //0x12
	IFSUBFLR = 19; //0x13
	IEFO = 20; //0x14
	ILOADCONST = 21; //0x15
	ILDAB = 22; //0x16
	ISTAB = 23; //0x17
	ILDLB = 24; //0x18
	ISTLB = 25; //0x19
	ILDAW = 26; //0x1a
	ISTAW = 27; //0x1b
	ILDLW = 28; //0x1c
	ISTLW = 29; //0x1d
	ILDAD = 30; //0x1e
	ISTAD = 31; //0x1f
	ILDLD = 32; //0x20
	ISTLD = 33; //0x21
	IELDD = 34; //0x22
	IELDQ = 35; //0x23
	IIDF = 36; //0x24
	IWDF = 37; //0x25
	IIMA16 = 38; //0x26
	IIMAE = 39; //0x27
	IUNPCKS16S8 = 40; //0x28
	IUNPCKU16U8 = 41; //0x29
	IUNPCKU16U16 = 42; //0x2a
	IUNPCKU16F16 = 43; //0x2b
	IPCKU16F32 = 44; //0x2c
	IPCKS16F32 = 45; //0x2d
	IPCKU8U8 = 46; //0x2e
	IPCKU8F16 = 47; //0x2f
	IPCKU8F32 = 48; //0x30
	IPCKC10C10 = 49; //0x31
	IPCKC10F32 = 50; //0x32
	IUNPCKF16C10 = 51; //0x33
	IUNPCKF16O8 = 52; //0x34
	IUNPCKF16U8 = 53; //0x35
	IUNPCKF16S8 = 54; //0x36
	IUNPCKF16U16 = 55; //0x37
	IUNPCKF16S16 = 56; //0x38
	IPCKF16F16 = 57; //0x39
	IPCKF16F32 = 58; //0x3a
	IUNPCKF32C10 = 59; //0x3b
	IUNPCKF32O8 = 60; //0x3c
	IUNPCKF32U8 = 61; //0x3d
	IUNPCKF32S8 = 62; //0x3e
	IUNPCKF32U16 = 63; //0x3f
	IUNPCKF32S16 = 64; //0x40
	IUNPCKF32F16 = 65; //0x41
	IPCKC10F16 = 66; //0x42
	ICOMBC10 = 67; //0x43
	ISMP = 68; //0x44
	ISMPBIAS = 69; //0x45
	ISMPREPLACE = 70; //0x46
	ISMPGRAD = 71; //0x47
	ISHL = 72; //0x48
	ISHR = 73; //0x49
	IASR = 74; //0x4a
	IAND = 75; //0x4b
	IXOR = 76; //0x4c
	IOR = 77; //0x4d
	IRLP = 78; //0x4e
	IBR = 79; //0x4f
	ICALL = 80; //0x50
	ILABEL = 81; //0x51
	ILAPC = 82; //0x52
	ISETL = 83; //0x53
	ISAVL = 84; //0x54
	IDRVPADDING = 85; //0x55
	ISMLSI = 86; //0x56
	ISMR = 87; //0x57
	ISETFC = 88; //0x58
	ISMBO = 89; //0x59
	INOP = 90; //0x5a
	ISOPWM = 91; //0x5b
	ISOP2 = 92; //0x5c
	ISOP3 = 93; //0x5d
	ILRP1 = 94; //0x5e
	IFPMA = 95; //0x5f
	IFPADD8 = 96; //0x60
	IFPSUB8 = 97; //0x61
	IFDPC = 98; //0x62
	IU8DOT3 = 99; //0x63
	IU8DOT4 = 100; //0x64
	IU8DOT3OFF = 101; //0x65
	IU8DOT4OFF = 102; //0x66
	IU16DOT3 = 103; //0x67
	IU16DOT4 = 104; //0x68
	IU16DOT3OFF = 105; //0x69
	IU16DOT4OFF = 106; //0x6a
	IMOVC = 107; //0x6b
	IMOVC_C10 = 108; //0x6c
	IMOVC_I32 = 109; //0x6d
	IFMOV16 = 110; //0x6e
	IFADD16 = 111; //0x6f
	IFMUL16 = 112; //0x70
	IFMAD16 = 113; //0x71
	ILDARRF32 = 114; //0x72
	ILDARRF16 = 115; //0x73
	ILDARRC10 = 116; //0x74
	ISTARRF32 = 117; //0x75
	ISTARRF16 = 118; //0x76
	ISTARRC10 = 119; //0x77
	ISMP_USP = 120; //0x78
	ISMPBIAS_USP = 121; //0x79
	ISMPREPLACE_USP = 122; //0x7a
	ISMPGRAD_USP = 123; //0x7b
	ISMP_USP_NDR = 124; //0x7c
	INVALID_MAXARG = 125; //0x7d
	IOPCODE_MAX = 126; //0x7e
}

typedef enum _IOPCODE IOPCODE

enum undefined {
	MOE_INCREMENT = 0; //0x0
	MOE_SWIZZLE = 1; //0x1
}

struct _MOE_DATA {
	enum undefined eOperandMode // @0
		union {
		IMG_INT32 iIncrement
		IMG_UINT32 uSwizzle
	} u // @4
}

typedef struct _MOE_DATA MOE_DATA

enum _ISSUE_TYPE {
	SINGLE_INST = 0; //0x0
	PRIMARY_INST = 1; //0x1
	SECONDARY_INST = 2; //0x2
	SCRATCH_INST = 3; //0x3
}

typedef enum _ISSUE_TYPE ISSUE_TYPE

struct _ARG {
	IMG_UINT32 uType // @0
	IMG_UINT32 uNumber // @4
	IMG_UINT32 uIndex // @8
	IMG_UINT32 uComponent // @c
	IMG_BOOL bNegate // @10
	IMG_BOOL bAbs // @14
	IMG_BOOL bKilled // @18
	IMG_UINT32 uImmTempType // @1c
	IMG_UINT32 uImmTempNum // @20
	IMG_UINT32 uArrayOffset // @24
	IMG_UINT32 uNumberPreMoe // @28
	UF_REGFORMAT eFmt // @2c
	IMG_UINT32 uF16Swizzle // @30
}

typedef struct _ARG ARG

typedef struct _ARG* PARG

enum _EFO_SRC {
	I0 = 0; //0x0
	I1 = 1; //0x1
	A0 = 2; //0x2
	A1 = 3; //0x3
	M0 = 4; //0x4
	M1 = 5; //0x5
	SRC0 = 6; //0x6
	SRC1 = 7; //0x7
	SRC2 = 8; //0x8
}

typedef enum _EFO_SRC EFO_SRC

struct _EFO_PARAMETERS {
	EFO_SRC eDSrc // @0
	EFO_SRC eI0Src // @4
	EFO_SRC eI1Src // @8
	EFO_SRC eA0Src0 // @c
	EFO_SRC eA0Src1 // @10
	EFO_SRC eA1Src0 // @14
	EFO_SRC eA1Src1 // @18
	EFO_SRC eM0Src0 // @1c
	EFO_SRC eM0Src1 // @20
	EFO_SRC eM1Src0 // @24
	EFO_SRC eM1Src1 // @28
	IMG_BOOL bWriteI0 // @2c
	IMG_BOOL bWriteI1 // @30
	IMG_BOOL bA0RightNeg // @34
	IMG_BOOL bA1LeftNeg // @38
	IMG_BOOL bIgnoreDest // @3c
	IMG_BOOL bM0Used // @40
	IMG_BOOL bM1Used // @44
	IMG_BOOL bA0Used // @48
	IMG_BOOL bA1Used // @4c
	IMG_BOOL bI0Used // @50
	IMG_BOOL bI1Used // @54
	IMG_BOOL bI0Killed // @58
	IMG_BOOL bI1Killed // @5c
	IMG_BOOL bI0DestValid // @60
	IMG_BOOL bI1DestValid // @64
	ARG sI0Dest // @68
	ARG sI1Dest // @9c
}

typedef struct _EFO_PARAMETERS* PEFO_PARAMETERS

struct _SOP2_PARAMS {
	IMG_UINT32 uCSel1 // @0
	IMG_UINT32 uCSel2 // @4
	IMG_BOOL bComplementCSel1 // @8
	IMG_BOOL bComplementCSel2 // @c
	IMG_BOOL bComplementCSrc1 // @10
	IMG_UINT32 uCOp // @14
	IMG_UINT32 uASel1 // @18
	IMG_UINT32 uASel2 // @1c
	IMG_BOOL bComplementASel1 // @20
	IMG_BOOL bComplementASel2 // @24
	IMG_UINT32 uAOp // @28
	IMG_UINT32 bComplementASrc1 // @2c
}

typedef struct _SOP2_PARAMS* PSOP2_PARAMS

struct _SOP3_PARAMS {
	IMG_UINT32 uCSel1 // @0
	IMG_UINT32 uCSel2 // @4
	IMG_BOOL bComplementCSel1 // @8
	IMG_BOOL bComplementCSel2 // @c
	IMG_BOOL bNegateCResult // @10
	IMG_UINT32 uCOp // @14
	IMG_UINT32 uCoissueOp // @18
	IMG_UINT32 uASel1 // @1c
	IMG_UINT32 uASel2 // @20
	IMG_BOOL bComplementASel1 // @24
	IMG_BOOL bComplementASel2 // @28
	IMG_BOOL bNegateAResult // @2c
	IMG_UINT32 uAOp // @30
}

typedef struct _SOP3_PARAMS* PSOP3_PARAMS

struct _LRP1_PARAMS {
	IMG_UINT32 uCSel10 // @0
	IMG_BOOL bComplementCSel10 // @4
	IMG_UINT32 uCSel11 // @8
	IMG_BOOL bComplementCSel11 // @c
	IMG_UINT32 uCS // @10
	IMG_UINT32 uASel1 // @14
	IMG_BOOL bComplementASel1 // @18
	IMG_UINT32 uASel2 // @1c
	IMG_BOOL bComplementASel2 // @20
	IMG_UINT32 uAOp // @24
}

typedef struct _LRP1_PARAMS* PLRP1_PARAMS

struct _SMP_USP_PARAMS_ {
	IMG_BOOL bProjected // @0
	IMG_BOOL bCentroid // @4
	IMG_BOOL bNonDependent // @8
	IMG_UINT32 uNDRTexCoord // @c
	IMG_UINT32 uChanMask // @10
	IMG_UINT32 uChanSwizzle // @14
	IMG_UINT32 uCoordDim // @18
	IMG_UINT32[4] auDestMask // @1c
	IMG_UINT32[4] auLiveChansInDest // @2c
	UF_REGFORMAT eTexPrecision // @3c
}

typedef struct _SMP_USP_PARAMS_ SMP_USP_PARAMS

typedef struct {
	IMG_BOOL bIMA32High // @0
	IMG_BOOL bIMA32Carry // @4
	IMG_UINT32 uIRegDestNum // @8
	IMG_BOOL bSigned // @c
}* PIMA32_PARAMS

typedef struct {
	IMG_UINT32 uDot34Scale // @0
} DOT34_PARAMS

typedef struct {
	IMG_UINT32 uClipplane // @0
} DPC_PARAMS

typedef struct {
	IMG_UINT32 uCoordSize // @0
	IMG_UINT32 uGradSize // @4
	IMG_UINT32 uTextureStage // @8
	IMG_BOOL bUsesPCF // @c
	IMG_UINT32 uDimensionality // @10
}* PSMP_PARAMS

typedef struct {
	IMG_UINT32 uCSel0 // @0
	IMG_UINT32 uCSel1 // @4
	IMG_UINT32 uCSel2 // @8
	IMG_UINT32 uASel0 // @c
	IMG_BOOL bComplementCSel0 // @10
	IMG_BOOL bComplementCSel1 // @14
	IMG_BOOL bComplementCSel2 // @18
	IMG_BOOL bComplementASel0 // @1c
	IMG_BOOL bComplementASel1 // @20
	IMG_BOOL bComplementASel2 // @24
}* PFPMA_PARAMS

typedef struct {
	IMG_UINT32 uSel1 // @0
	IMG_UINT32 uSel2 // @4
	IMG_BOOL bComplementSel1 // @8
	IMG_BOOL bComplementSel2 // @c
	IMG_UINT32 uCop // @10
	IMG_UINT32 uAop // @14
}* PSOPWM_PARAMS

typedef struct {
	IMG_UINT32 uIRegDestNum // @0
} DDP_PARAMS

typedef struct {
	IMG_BOOL bEnableRangeCheck // @0
} LD_PARAMS

typedef struct {
	IMG_BOOL bSrcModNegate // @0
	IMG_BOOL bSrcModAbsolute // @4
} NRM_PARAMS

typedef struct {
	IMG_BOOL bRelativeAddress // @0
	IMG_BOOL bStaticConst // @4
	IMG_UINT32 uStaticConstValue // @8
} LOADCONST_PARAMS

typedef struct {
	IMG_UINT32 uSrc2Type // @0
	IMG_BOOL bSigned // @4
	IMG_BOOL bCarryIn // @8
	IMG_BOOL bCarryOut // @c
	IMG_UINT32 uCarryIReg // @10
	IMG_BOOL bCarryInKilled // @14
} IMAE_PARAMS

struct _INST {
	IOPCODE eOpcode // @0
	IMG_UINT32[1] auFlag // @4
	IMG_UINT32 uPredSrc // @8
	ARG[4] asDest // @c
	IMG_UINT32 uPredDest // @dc
	PARG asArg // @e0
	IMG_UINT32 uTest // @e4
	IMG_UINT32 uRepeat // @e8
	IMG_UINT32 uMask // @ec
	PEFO_PARAMETERS psEfo // @f0
	PSOPWM_PARAMS psSopWm // @f4
	PSOP2_PARAMS psSop2 // @f8
	PSOP3_PARAMS psSop3 // @fc
	PLRP1_PARAMS psLrp1 // @100
	PFPMA_PARAMS psFpma // @104
	PIMA32_PARAMS psIma32 // @108
	PSMP_PARAMS psSmp // @10c
	DOT34_PARAMS sDot34 // @110
	DPC_PARAMS sDpc // @114
	DDP_PARAMS sDdp // @118
	LD_PARAMS sLd // @11c
	NRM_PARAMS sNrm // @120
	LOADCONST_PARAMS sLoadConst // @128
	IMAE_PARAMS sImae // @134
	IMG_UINT32 uDestCount // @14c
	IMG_UINT32 uDestMask // @150
	IMG_UINT32 uLiveChansInDest // @154
	PEFO_STAGEDATA psEfoData // @158
	IMG_UINT32 uId // @15c
	struct _INST* psGroupNext // @160
	PREPEAT_GROUP psRepeatGroup // @164
	IMG_UINT32[1] puSrcInc // @168
	ISSUE_TYPE eIssueType // @16c
	struct _INST* psCoInst // @170
	IMG_UINT32 uIRegUse // @174
	IMG_UINT32 uShaderResultHWOperands // @178
	SMP_USP_PARAMS sUSPSample // @17c
	struct _INST* psPrev // @1bc
	struct _INST* psNext // @1c0
}

typedef struct {
	IMG_UINT32 uEfoGroupId // @0
	struct _INST* psEfoGroupPrevWriter // @4
	struct _INST* psEfoGroupNextWriter // @8
	struct _INST* psEfoGroupFirstReader // @c
	struct _INST* psEfoGroupNextReader // @10
	IMG_BOOL bSelfContained // @14
}* PEFO_STAGEDATA

typedef struct {
	IMG_BOOL bDirty // @0
	struct _INST* psPrev // @4
	struct _INST* psNext // @8
}* PREPEAT_GROUP

enum _INST_FLAGS_ {
	INST_NULL = 0; //0x0
	INST_PRED_NEG = 1; //0x1
	INST_PRED_KILLED = 2; //0x2
	INST_TEST = 3; //0x3
	INST_SKIPINV = 4; //0x4
	INST_SYNCSTART = 5; //0x5
	INST_NOSCHED = 6; //0x6
	INST_DISABLEWB = 7; //0x7
	INST_SCALE = 8; //0x8
	INST_ONCEONLY = 9; //0x9
	INST_FETCH = 10; //0xa
	INST_TYPE_PRESERVE = 11; //0xb
	INST_DUMMY_FETCH = 12; //0xc
	INST_SPILL = 13; //0xd
	INST_FORMAT_SELECT = 14; //0xe
	INST_MOE = 15; //0xf
	INST_SINGLE = 16; //0x10
	INST_PRIMARY = 17; //0x11
	INST_SECONDARY = 18; //0x12
	INST_RESERVED = 19; //0x13
	INST_NOEMIT = 20; //0x14
	INST_RGB = 21; //0x15
	INST_ALPHA = 22; //0x16
	INST_FLAGS_NUM = 23; //0x17
}

typedef struct _INST* PINST

struct _CODEBLOCKLIST {
	struct _CODEBLOCK* psHead // @0
	struct _CODEBLOCK* psTail // @4
}

struct _CODEBLOCK {
	IMG_UINT32 uType // @0
	CODEBLOCKLIST sCodeBody // @4
	CODEBLOCKLIST sCodeElse // @c
	CODEBLOCKLIST sCodeLoopTail // @14
	struct _CODEBLOCK* psNext // @1c
	struct _CODEBLOCK* psPrev // @20
	PCODEBLOCKLIST psParent // @24
	REGISTER_LIVESET sRegistersLiveOut // @28
	PREGISTER_LIVESET psLoopRegistersLiveOut // @70
	struct _CODEBLOCK* psTypePrev // @74
	struct _CODEBLOCK* psTypeNext // @78
		union {
			struct {
		IMG_UINT32 uFlags // @0
		IMG_UINT32 uInstCount // @4
		PINST psBody // @8
		PINST psBodyTail // @c
		IMG_BOOL bEfoFmtCtl // @10
		IMG_BOOL bColFmtCtl // @14
		MOE_DATA[4] asMoeIncSwiz // @18
		IMG_UINT32[4] auMoeBaseOffset // @38
	} sBasic
			struct {
		IMG_UINT32 uPredSrc // @0
		IMG_BOOL bPredNegate // @4
		IMG_BOOL bSyncEndAfterMain // @8
		IMG_BOOL bSyncEndAfterElse // @c
		IMG_UINT32 uSyncEndPredSrc // @10
		struct _CODEBLOCK* psCondPrev // @14
		struct _CODEBLOCK* psCondNext // @18
		IMG_BOOL bStatic // @1c
	} sCond
			struct {
		IMG_UINT32 uPredSrc // @0
		IMG_BOOL bPredNegate // @4
		struct _CODEBLOCK* psNestedLoop // @8
		IMG_BOOL bSyncEnd // @c
		IMG_BOOL bStatic // @10
		BREAKTYPE eBreakType // @14
	} sBreak
			struct {
		IMG_UINT32 uPredSrc // @0
		IMG_BOOL bPredNegate // @4
		struct _CODEBLOCK* psNestedLoop // @8
		IMG_BOOL bSyncEnd // @c
		IMG_BOOL bStatic // @10
	} sContinue
			struct {
		IMG_UINT32 uDest // @0
		IMG_UINT32 uPredSrc // @4
		IMG_BOOL bPredNegate // @8
		struct _CODEBLOCK* psCallSiteNext // @c
		IMG_BOOL bSyncEnd // @10
		IMG_BOOL bStatic // @14
	} sCall
			struct {
		IMG_UINT32 uSkipPredSrc // @0
		IMG_BOOL bSkipPredNegate // @4
		IMG_UINT32 uContinuePredSrc // @8
		IMG_BOOL bContinuePredNegate // @c
		IMG_BOOL bHasSync // @10
		IMG_BOOL bSyncEnd // @14
		IMG_BOOL bSyncEndForBreak // @18
		IMG_BOOL bSyncEndForContinue // @1c
		IMG_UINT32 uBreakSyncEndPredSrc // @20
		IMG_UINT32 uContSyncEndPredSrc // @24
		IMG_BOOL bStatic // @28
	} sLoop
			struct {
		IMG_UINT32 uPredSrc // @0
		IMG_BOOL bPredNegate // @4
		IMG_BOOL bMain // @8
	} sExit
			struct {
		IMG_UINT32 uLabel // @0
		IMG_BOOL bHasEarlyExit // @4
		IMG_UINT32 uFuncFlags // @8
		struct _CODEBLOCK* psPrologBlock // @c
		struct _CODEBLOCK* psResetBlock // @10
		struct _CODEBLOCK* psEpilogBlock // @14
		struct _CODEBLOCK* psFuncEnd // @18
	} sFunc
			struct {
		IMG_UINT32 uCaseCount // @0
		PSWITCHCASE psCases // @4
		IMG_UINT32 uDefaultCase // @8
	} sSwitch
	} u // @7c
}

typedef struct _CODEBLOCKLIST CODEBLOCKLIST

typedef struct _CODEBLOCKLIST* PCODEBLOCKLIST

struct _SWITCHCASE {
	CODEBLOCKLIST sCaseBody // @0
	struct _CODEBLOCK* psTestBlock // @8
	IMG_BOOL bJustDefault // @c
	IMG_UINT32 uPredSrc // @10
	IMG_BOOL bPredNegate // @14
}

typedef struct _SWITCHCASE* PSWITCHCASE

enum undefined {
	BREAKTYPE_UNKNOWN = 0; //0x0
	BREAKTYPE_LOOP = 1; //0x1
	BREAKTYPE_SWITCH = 2; //0x2
}

typedef enum undefined BREAKTYPE

typedef struct _CODEBLOCK* PCODEBLOCK

struct _FIXED_TEMPORARY_GROUP {
	IMG_UINT32 uRefCount // @0
	IMG_UINT32 uTempCount // @4
	IMG_PUINT32 puTemps // @8
	IMG_BOOL bFixedNum // @c
	struct _FIXED_TEMPORARY_GROUP* psNext // @10
}

typedef struct _FIXED_TEMPORARY_GROUP* PFIXED_TEMPORARY_GROUP

struct tagINTERMEDIATE_STATE {
	IMG_UINT32 uCompilationStatus // @0
	IMG_UINT32 uFlags // @4
	PUSC_ALLOC_HEADER psAllocationListHead // @8
	USC_PCHUNK[2] apsChunkMem // @c
	IMG_UINT32 uCompilerFlags // @14
	IMG_PUINT32 puTextureDimensions // @18
	PUNIFLEX_CONSTDEF psConstants // @1c
	IMG_UINT32 uProjectedCoordinateMask // @20
	const SGX_CORE_FEATURES* psTargetFeatures // @24
	const SGX_CORE_BUGS* psTargetBugs // @28
	IMG_UINT32 uTexStateSize // @2c
	IMG_UINT32 uGammaStages // @30
	IMG_UINT32 uNrTextureLoads // @34
	PUNIFLEX_TEXTURE_LOAD psTextureLoads // @38
	IMG_UINT32 uMaxLabel // @3c
	IMG_UINT32 uNumLabels // @40
	IMG_PUINT32 auNestSortedLabel // @44
	PLABELDATA psLabelData // @48
	IMG_UINT32 uMaxNesting // @4c
	IMG_UINT32 uNumRegisters // @50
	IMG_UINT32 uNumPredicates // @54
	IMG_UINT32[18] puRemappedConstCount // @58
	USC_PARRAY[18] ppsRemappedConstMap // @a0
	USC_PARRAY[18] ppsRemappedConstFormat // @e8
	IMG_UINT32[18] puSaForBaseOfConstsBuff // @130
	IMG_UINT32 uStaticConstsBuffer // @178
	IMG_UINT32 uTextureStateConstsBuffer // @17c
	IMG_UINT32 uEmitsPresent // @180
	CODEBLOCKLIST sMainFunc // @184
	IMG_UINT32 uD3DLoopIndexMem // @18c
	IMG_UINT32 uD3DLoopIndexReg // @190
	IMG_UINT32 uLastUpdatedDest // @194
	PUNIFLEX_PROGRAM_PARAMETERS psSAOffsets // @198
	IMG_UINT32 uTemporaryRegisterCount // @19c
	IMG_UINT32 uNonDrTextureReadLimit // @1a0
	PUNIFLEX_TEXFORM psTextures // @1a4
	IMG_UINT32 uIterationSize // @1a8
	IMG_UINT32 uPrimaryAttributeRegisterCount // @1ac
	IMG_UINT32 uPARegistersUsed // @1b0
	IMG_UINT32 uInRegisterConstantCount // @1b4
	PINREGISTER_CONST psInRegisterConstantMap // @1b8
	IMG_UINT32 uConstSecAttrCount // @1bc
	IMG_UINT32 uLoadedConstSecAttrCount // @1c0
	IMG_UINT32 uCalculatedConstSecAttrCount // @1c4
	CODEBLOCKLIST sBasicBlockList // @1c8
	CODEBLOCKLIST sFlowControlList // @1d0
	PCODEBLOCK psCondSiteListHead // @1d8
	PCODEBLOCK psCondSiteListTail // @1dc
	PUSC_VEC_ARRAY_DATA* apsTempVecArray // @1e0
	IMG_UINT32 uIndexableTempArraySize // @1e4
	IMG_UINT32 uNumVecArrayRegs // @1e8
	PUSC_VEC_ARRAY_REG* apsVecArrayReg // @1ec
	IMG_UINT32 uNonAnisoTexStages // @1f0
	IMG_UINT32 uPreambleCount // @1f4
	PDGRAPH_STATE psDepState // @1f8
	PPRECOVR_STATE psPrecovrState // @1fc
	IMG_UINT32 uNumPrecovrStates // @200
	IMG_UINT32 uNextPackedRegisterTag // @204
	PFIXED_TEMPORARY_GROUP psFixedTemporaryGroupListHead // @208
	PFIXED_TEMPORARY_GROUP psFixedTemporaryGroupListTail // @20c
	PCODEBLOCK psPreFeedbackBlock // @210
	IMG_UINT32 uPAOutputNum // @214
	IMG_PUINT32 puInstructions // @218
	IMG_PUINT32 puLabels // @21c
	PUSEASM_CONTEXT psUseasmContext // @220
	IMG_UINT32 uNextLabel // @224
	IMG_UINT32 uMainProgInstCount // @228
	IMG_UINT32 uMainProgLabelCount // @22c
	IMG_UINT32 uMainProgStart // @230
	IMG_UINT32 uMainProgFeedbackPhase0End // @234
	PINST psMainProgFeedbackPhase0EndInst // @238
	IMG_UINT32 uMainProgFeedbackPhase1Start // @23c
	IMG_UINT32 uSAProgInstCount // @240
	IMG_UINT32 uSpillAreaSize // @244
	USC_ALLOCFN pfnAlloc // @248
	USC_FREEFN pfnFree // @24c
	USC_PRINTFN pfnPrint // @250
	IMG_PVOID pvPDumpFnDrvParam // @254
	USC_PDUMPFN pfnPDump // @258
	IMG_PVOID pvMetricsFnDrvParam // @25c
	USC_STARTFN pfnStart // @260
	USC_FINISHFN pfnFinish // @264
	IMG_UINT32 uNonPackedPSOutputType // @268
	IMG_UINT32 uNonPackedPSOutputNum // @26c
	IMG_UINT32 uPackedPSOutputType // @270
	IMG_UINT32 uPackedPSOutputNum // @274
	IMG_UINT32 uPackedPSOutputMask // @278
	IMG_UINT32 uDepthOutputNum // @27c
	IMG_UINT32 uTexkillOutputNum // @280
	IMG_UINT32 uVSClipOutputNum // @284
	PCODEBLOCK psSecAttrBlock // @288
	IMG_UINT32 uMaximumVSOutput // @28c
	IMG_UINT32 uColOutputCount // @290
	IMG_UINT32 uInRegisterConstantLimit // @294
	IMG_UINT32 uVSInputPARegCount // @298
	IMG_PUINT32 auVSInputPARegUsage // @29c
	IMG_UINT32 uMemOffsetAdjust // @2a0
	IMG_UINT32[18] puRangeCheckType // @2a4
	IMG_UINT32[18] puRangeCheckNumber // @2ec
	IMG_BOOL bExceptionReturnValid // @334
	jmp_buf sExceptionReturn // @338
	IMG_UINT32 uTextureUnpackFormatSelectedMask // @4c0
	IMG_UINT32 uTextureUnpackFormatReduced // @4c4
	UNIFLEX_TEXTURE_UNPACK[16] asTextureUnpackFormat // @4c8
	IMG_UINT32 uNumDynamicBranches // @548
	IMG_UINT32 uNumOfConstsBuffsAvailable // @54c
	IMG_UINT32[18] puConstsBufferInUse // @550
	IMG_UINT32 uInputTempRegisterCount // @598
	IMG_UINT32 uInputMacroTemp // @59c
}

typedef struct {
	struct tagINTERMEDIATE_STATE* psState // @0
	IMG_UINT32 uBlockInstructionCount // @4
	USC_PARRAY psInstructions // @8
	USC_PARRAY psTempLastWriter // @c
	USC_PARRAY psPALastWriter // @10
	USC_PARRAY psOutputLastWriter // @14
	USC_PARRAY psIRegLastWriter // @18
	IMG_UINT32[2] auIndexLastWriter // @1c
	USC_PARRAY psPredLastWriter // @24
	USC_PARRAY[1] apsRegArrayLastWriter // @28
	USC_PARRAY psMainDep // @2c
	USC_PGRAPH psDepGraph // @30
	USC_PGRAPH psClosedDepGraph // @34
	USC_PARRAY psDepCount // @38
	USC_PARRAY psSatDepCount // @3c
	IMG_UINT32 uAvailInstCount // @40
	IMG_UINT32 uRemovedInstCount // @44
}* PDGRAPH_STATE

typedef struct {
	UF_REGTYPE eType // @0
	IMG_UINT32 uNum // @4
	IMG_UINT32 uMask // @8
	IMG_UINT32 uTag // @c
	IMG_UINT32 uPrecision // @10
	UF_REGFORMAT eFormat // @14
}* PPACKED_OUTPUT

typedef struct {
	PPACKED_OUTPUT[16] apsPackedRegisters // @0
	IMG_UINT32 uNumPackedRegisters // @40
}* PPRECOVR_STATE

struct _USC_VEC_ARRAY_DATA_ {
	IMG_UINT32 uArrayTag // @0
	IMG_UINT32 uSize // @4
	IMG_UINT32 uVecs // @8
	IMG_UINT32 uLoads // @c
	IMG_UINT32 uStores // @10
	UF_REGFORMAT eFmt // @14
	IMG_UINT32 uRegArray // @18
	IMG_BOOL bStatic // @1c
}

typedef struct _USC_VEC_ARRAY_DATA_* PUSC_VEC_ARRAY_DATA

struct _USC_VEC_ARRAY_REG_ {
	IMG_UINT32 uArrayNum // @0
	IMG_UINT32 uBaseReg // @4
	IMG_UINT32 uRegs // @8
}

typedef struct _USC_VEC_ARRAY_REG_* PUSC_VEC_ARRAY_REG

struct _USC_ALLOC_HEADER {
	IMG_UINT32 uSize // @0
	IMG_UINT32 uAllocNum // @4
	struct _USC_ALLOC_HEADER* psPrev // @8
	struct _USC_ALLOC_HEADER* psNext // @c
}

typedef struct _USC_ALLOC_HEADER* PUSC_ALLOC_HEADER

struct _LABELDATA {
	PCODEBLOCK psDest // @0
	IMG_UINT32 uNestingLevel // @4
	PCODEBLOCK psCallSiteListHead // @8
	REGISTER_LIVESET sCallStartRegistersLive // @c
}

typedef struct _LABELDATA* PLABELDATA

struct _INREGISTER_CONST {
	IMG_UINT32 uNum // @0
	UNIFLEX_CONST_FORMAT eFormat // @4
	IMG_UINT32 uBuffer // @8
}

typedef struct _INREGISTER_CONST* PINREGISTER_CONST

typedef struct tagINTERMEDIATE_STATE* PINTERMEDIATE_STATE

// function
IMG_UINT32 ChansPerReg(
	UF_REGFORMAT eFmt
	)
{
}


// function
IMG_UINT32 GetBit(
	const IMG_UINT32* auArr
	const IMG_UINT32 uPos
	)
{
}


// external function PC=<0x0;0x368>
void ReduceAngleBetweenNegPieToPie(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PARG psSrc
	PARG psDest
	)
{
	ARG sNegPiToPi
	{
		PINST psLimmInst
	}
	{
		PINST psInst
	}
	{
		PINST psInst
	}
	{
		PINST psInst
	}
	{
		PINST psInst
	}
}


// external function PC=<0x368;0x1248>
void ConvertSincos2Core(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PARG psSrc
	PARG psDestX
	PARG psDestY
	IMG_UINT32 uPredicate
	)
{
	PINST psInst
	IMG_UINT32 i
	ARG[3] asTemp
	ARG sNegPiToPi
	{
		IMG_UINT32 uI
		{
			PINST psLimmInst
		}
	}
	{
		PARG psDest
	}
}


// external function PC=<0x1248;0x1c40>
void ConvertSincosCore(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PARG psSrc
	PARG psDestX
	PARG psDestY
	IMG_UINT32 uPredicate
	)
{
	PINST psInst
	IMG_UINT32 i
	ARG[3] asTemp
	{
		PARG psDest
	}
}


// external function
PUSC_VEC_ARRAY_DATA NewVecArrayData(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uArrayTag
	IMG_UINT32 uVecs
	IMG_UINT32 uSize
	UF_REGFORMAT eFmt
	IMG_UINT32 uLoads
	)
{
	PUSC_VEC_ARRAY_DATA psRet
}


// external function
PUSC_VEC_ARRAY_DATA NewVecArrayData(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uArrayTag
	IMG_UINT32 uVecs
	IMG_UINT32 uSize
	UF_REGFORMAT eFmt
	IMG_UINT32 uLoads
	)
{
	PUSC_VEC_ARRAY_DATA psRet
}


// external function PC=<0x1c8c;0x1e54>
void SetupLoadStoreArray(
	PINTERMEDIATE_STATE psState
	)
{
	const IMG_UINT32 uMaxSize
	const IMG_UINT32 uNumArrays
	PUSC_VEC_ARRAY_DATA psCurr
	PUSC_VEC_ARRAY_DATA psData
	PUSC_VEC_ARRAY_DATA psUse
	PUSC_VEC_ARRAY_REG psVecReg
	IMG_UINT32 uVecIdx
	IMG_UINT32 uNumRegs
	IMG_UINT32 uAccesses
	IMG_UINT32 uCtr
	IMG_UINT32 uCurrIdx
	IMG_UINT32 uChansPerReg
	{
		IMG_UINT32 uBusyness
	}
}


// function
void ConvertRelativeOffset(
	PINTERMEDIATE_STATE psState
	UFREG_RELATIVEINDEX eRelativeIndex
	UF_REGFORMAT eFormat
	IMG_UINT32 uCompOffset
	IMG_PUINT32 puMemIndexTempNum
	IMG_PUINT32 puRegIndexTempNum
	)
{
	{
		IMG_UINT32 uAddressRegisterIndex
	}
}


// external function PC=<0x1e54;0x21b8>
void LoadConstantNoHWReg(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PUF_REGISTER psSource
	IMG_UINT32 uSrcChan
	PARG psHwSource
	UF_REGFORMAT eFormat
	IMG_UINT32 uCompOffset
	)
{
	PINST psLoadInst
	IMG_UINT32 uOffset
	IMG_UINT32 uTemp
	{
		IMG_UINT32 uMemIndexTempNum
		IMG_UINT32 uRegIndexTempNum
		// inlined
		// function
		void ConvertRelativeOffset(
			PINTERMEDIATE_STATE psState
			UFREG_RELATIVEINDEX eRelativeIndex
			UF_REGFORMAT eFormat
			IMG_UINT32 uCompOffset
			IMG_PUINT32 puMemIndexTempNum
			IMG_PUINT32 puRegIndexTempNum
			)
		{
			{
				IMG_UINT32 uAddressRegisterIndex
			}
		}

	}
}


// function
IMG_UINT32 CheckForHwConst(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uNum
	IMG_UINT32 uChan
	IMG_BOOL bAllowSourceMod
	IMG_PBOOL pbNegate
	)
{
	IMG_FLOAT fValue
	IMG_UINT32 uResult
	IMG_UINT32 uOffset
	{
	}
}


// external function PC=<0x21b8;0x232c>
void LoadConstant(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PUF_REGISTER psSource
	IMG_UINT32 uSrcChan
	PARG psHwSource
	IMG_BOOL bAllowSourceMod
	IMG_PBOOL pbNegate
	UF_REGFORMAT eFormat
	IMG_UINT32 uCompOffset
	)
{
	{
		IMG_UINT32 uValue
		// inlined
		// function
		IMG_UINT32 CheckForHwConst(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uNum
			IMG_UINT32 uChan
			IMG_BOOL bAllowSourceMod
			IMG_PBOOL pbNegate
			)
		{
			IMG_FLOAT fValue
			IMG_UINT32 uResult
			IMG_UINT32 uOffset
			{
			}
		}

	}
}


// function
void LoadTextureState(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	IMG_UINT32 uStateOffset
	PARG psArg
	)
{
	UF_REGISTER sSource
}


// external function PC=<0x232c;0x2390>
void LoadMaxTexarrayIndex(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	IMG_UINT32 uTexture
	PARG psArg
	)
{
	IMG_UINT32 uMaxTexArrayIndexOffset
	// inlined
	// function
	void LoadTextureState(
		PINTERMEDIATE_STATE psState
		PCODEBLOCK psCodeBlock
		IMG_UINT32 uStateOffset
		PARG psArg
		)
	{
		UF_REGISTER sSource
	}

}


// external function PC=<0x2390;0x25d4>
void UnpackU24Channel(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	IMG_UINT32 uSrcRegType
	IMG_UINT32 uSrcRegNum
	IMG_UINT32 uSample
	IMG_UINT32 uByteOffset
	IMG_UINT32 uTemp
	)
{
	PINST psScaleInst
	UF_REGISTER sScaleFactor
}


// external function PC=<0x25d4;0x2b34>
void LoadStoreIndexableTemp(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	IMG_BOOL bLoad
	UF_REGFORMAT eFmt
	PUF_REGISTER psSource
	IMG_UINT32 uChanMask
	IMG_UINT32 uTemp
	IMG_UINT32 uDataReg
	)
{
	IMG_UINT32 i
	PINST psInst
	IMG_UINT32 eOpcode
	IMG_UINT32 uCompDataSize
	IMG_UINT32 uChansPerReg
	IMG_UINT32 uDynOffsetReg
	IMG_UINT32 uChansPerInputReg
	IMG_UINT32 uChansPerOutputReg
	IMG_BOOL bHasDynOffset
	IMG_UINT32 uAddrReg
	IMG_UINT32 uArrayNum
	IMG_UINT32 uArrayTag
	PUSC_VEC_ARRAY_DATA psVecData
	{
		IMG_BOOL bFirstChan
		IMG_UINT32 uSrcChan
		IMG_UINT32 uRegOffset
		IMG_UINT32 uLastRegOffset
		IMG_UINT32 uFirstArg
	}
	{
		IMG_UINT32 uVecs
		IMG_UINT32 uSize
		// inlined
		// external function
		PUSC_VEC_ARRAY_DATA NewVecArrayData(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArrayTag
			IMG_UINT32 uVecs
			IMG_UINT32 uSize
			UF_REGFORMAT eFmt
			IMG_UINT32 uLoads
			)
		{
			PUSC_VEC_ARRAY_DATA psRet
		}

	}
}


// external function PC=<0x2b34;0x2b88>
void StoreIndexableTemp(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PUF_REGISTER psDest
	UF_REGFORMAT eFmt
	)
{
	IMG_UINT32 uChanMask
}


// function
void EmitGradCalc(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	IMG_UINT32 uDims
	PARG psCbase
	PARG psLbase
	IMG_BOOL bLODBias
	)
{
	IMG_UINT32 uCtr
	IMG_UINT32 uNum
	IMG_UINT32 uSrcType
	IMG_UINT32 uSrcReg
	IMG_UINT32 uSrcFmt
	IMG_UINT32 uChan
	IMG_UINT32 uFmt
	PINST psInst
	PINST psPackInst
	{
		PINST psExpInst
	}
	{
		IMG_UINT32 uAxisIdx
		{
			PINST psMulInst
		}
	}
}


// function
void SetBit(
	IMG_UINT32* auArr
	IMG_UINT32 uBit
	IMG_UINT32 uBitData
	)
{
}


// external function PC=<0x2b88;0x3b28>
void ConvertSamplerInstructionCore(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PUNIFLEX_INST psSrc
	IMG_UINT32 uChanMask
	IMG_UINT32 uChanSwizzle
	PARG psDest
	IMG_BOOL bConditional
	)
{
	PINST psSmpInst
	IOPCODE eSmpOpcode
	PUF_REGISTER psUFCoordSrc
	UF_OPCODE eUFOpcode
	IMG_UINT32 uSCMask
	IMG_BOOL bProjected
	IMG_UINT32 uTextureIdx
	IMG_UINT32 uTextureDim
	IMG_UINT32 uCoordSize
	IMG_UINT32 uCoordMask
	IMG_UINT32 uGradSize
	IMG_UINT32 uGradMask
	IMG_BOOL bCondLod
	IMG_BOOL bNonDependent
	PARG psArg
	IMG_UINT32 uArg
	IMG_UINT32 uDestOffset
	IMG_BOOL bCondLodBias
	{
		PUNIFLEX_TEXTURE_LOAD psTexLoad
		PUNIFLEX_TEXTURE_LOAD psTexLoadEnd
		{
			IMG_UINT32 uNumLoads
		}
	}
	{
		IMG_UINT32 uTCMask
		UF_REGFORMAT eTCFormat
		ARG sCoords
		{
			IMG_UINT32 uCoord
		}
		{
			ARG sGradients
			// inlined
			// function
			void EmitGradCalc(
				PINTERMEDIATE_STATE psState
				PCODEBLOCK psCodeBlock
				IMG_UINT32 uDims
				PARG psCbase
				PARG psLbase
				IMG_BOOL bLODBias
				)
			{
				IMG_UINT32 uCtr
				IMG_UINT32 uNum
				IMG_UINT32 uSrcType
				IMG_UINT32 uSrcReg
				IMG_UINT32 uSrcFmt
				IMG_UINT32 uChan
				IMG_UINT32 uFmt
				PINST psInst
				PINST psPackInst
				{
					PINST psExpInst
				}
				{
					IMG_UINT32 uAxisIdx
					{
						PINST psMulInst
					}
				}
			}

		}
	}
	{
		UNIFLEX_TEXTURE_LOAD* psTexLoad
		UNIFLEX_TEXTURE_COORDINATE eCoord
		IMG_UINT32 uTexLoad
		IMG_UINT32 uPAReg
	}
	// inlined
	// function
	void SetBit(
		IMG_UINT32* auArr
		IMG_UINT32 uBit
		IMG_UINT32 uBitData
		)
	{
	}

	{
		IMG_UINT32 uDestMask
	}
}


// function PC=<0x3b28;0x3e80>
void EmitLdStRegMove(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PINST psInsertPoint
	UF_REGFORMAT eFmt
	IMG_BOOL bLoad
	IMG_BOOL bSecond
	IMG_UINT32 uRegChan
	IMG_UINT32 uPredReg
	PARG psDestReg
	PARG psDataReg
	)
{
	PINST psInst
	PARG psMovSrc
	IMG_UINT32 uExtraOffset
	IMG_UINT32 uStoreComp
	IMG_UINT32 uRegComp
	IMG_BOOL bOddStoreOffset
	// inlined
	// function
	void SetBit(
		IMG_UINT32* auArr
		IMG_UINT32 uBit
		IMG_UINT32 uBitData
		)
	{
	}

	// inlined
	// function
	void SetBit(
		IMG_UINT32* auArr
		IMG_UINT32 uBit
		IMG_UINT32 uBitData
		)
	{
	}

}


// function
IMG_BOOL ExpandLoadStoreInst(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PINST psLdStInst
	)
{
	const IMG_UINT32 uFirstStSrc
	IMG_UINT32 i
	UF_REGFORMAT eFmt
	IMG_UINT32 uArrayNum
	PINST psInst
	PINST psInsertPoint
	PINST psLoadInst
	IMG_UINT32 uCompDataSize
	IMG_UINT32 uBaseAddr
	IMG_UINT32 uStaticIdx
	IMG_UINT32 uRegOffset
	IMG_UINT32 uDynOffsetType
	IMG_UINT32 uDynOffsetReg
	IMG_UINT32 uChanOffset
	IMG_UINT32 uChansPerDataReg
	IMG_UINT32 uSrcChan
	IMG_BOOL bHasDynOffset
	IMG_BOOL bDynArray
	ARG sDataReg
	ARG sTempReg
	PARG psValReg
	IMG_UINT32 uChanMask
	IMG_BOOL bLoad
	IMG_UINT32 uFirstChan
	{
		PUSC_VEC_ARRAY_DATA psVecData
	}
	{
		PINST psAddInst
		PINST psShiftInst
		PINST psOrInst
	}
	{
		IMG_BOOL bUnPack
		IOPCODE eOpcode
		IMG_UINT32 uReadChan
	}
	{
		IOPCODE eOpcode
	}
	{
		IOPCODE eOpcode
	}
	{
		IMG_BOOL bPack
		IMG_UINT32 uDestMask
		IOPCODE eOpcode
	}
}


// function
void GetLocalAddressingMemoryOffset(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PINST psInsertPoint
	PARG psOffsetArg
	IMG_UINT32 uBaseAddr
	IMG_BOOL bHasDynOffset
	IMG_UINT32 uDynOffsetReg
	IMG_UINT32 uCompDataSize
	)
{
	PINST psLimmInst
	IMG_UINT32 uOffset
	{
		IMG_UINT32 uSecAttrNum
	}
	{
		IMG_UINT32 uAddrReg
	}
	{
		PINST psAddInst
		IMG_UINT32 uDynAddrReg
	}
}


// function
IMG_BOOL ExpandRegLdStInst(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PINST psLdStInst
	)
{
	const IMG_UINT32 uMaxIdxOffset
	const IMG_UINT32 uFirstStSrc
	IMG_UINT32 uIndexReg
	UF_REGFORMAT eFmt
	IMG_UINT32 uBaseReg
	IMG_UINT32 uStaticIdx
	IMG_UINT32 uRegChanOffset
	IMG_UINT32 uStoreChanOffset
	IMG_UINT32 uChanPerReg
	IMG_UINT32 uArrayNum
	IMG_UINT32 uRegArrayNum
	IMG_UINT32 uRegChan
	IMG_UINT32 uDstIdx
	ARG sDestReg
	ARG sDataReg
	ARG sIndexReg
	IMG_UINT32 uChanPerStore
	IMG_UINT32 uChanMask
	IMG_UINT32 uIdxOffset
	IMG_UINT32 uPredReg
	PUSC_VEC_ARRAY_REG psVecArrayReg
	PUSC_VEC_ARRAY_DATA psVecArrayData
	IMG_BOOL bHasDynOffset
	IMG_BOOL bDynArray
	IMG_BOOL bLoad
	{
		IMG_UINT32 uAddr
		IMG_BOOL bOddStoreOffset
		{
			IMG_BOOL bSetupIdxReg
			IMG_UINT32 uStoreOffset
			{
				ARG sBaseReg
				UF_REGFORMAT eStoreFmt
			}
		}
	}
}


// function
void EmitLdStRegIndex(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psCodeBlock
	PARG psDynReg
	PARG psBaseReg
	UF_REGFORMAT eFmt
	PINST psInsertPoint
	IMG_PUINT32 puPredReg
	)
{
	IMG_UINT32 uPredReg
	PINST psInst
	const IMG_UINT32 uChansPerReg
	IMG_UINT32 uTempReg
	{
	}
}


// external function PC=<0x3e80;0x5468>
IMG_BOOL ExpandLoadStoreBlock(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psBlock
	IMG_BOOL bRegArray
	)
{
	PINST psInst
	PINST psNextInst
	IMG_BOOL bBlockChange
	{
		IMG_BOOL bChange
		// inlined
		// function
		IMG_BOOL ExpandRegLdStInst(
			PINTERMEDIATE_STATE psState
			PCODEBLOCK psCodeBlock
			PINST psLdStInst
			)
		{
			const IMG_UINT32 uMaxIdxOffset
			const IMG_UINT32 uFirstStSrc
			IMG_UINT32 uIndexReg
			UF_REGFORMAT eFmt
			IMG_UINT32 uBaseReg
			IMG_UINT32 uStaticIdx
			IMG_UINT32 uRegChanOffset
			IMG_UINT32 uStoreChanOffset
			IMG_UINT32 uChanPerReg
			IMG_UINT32 uArrayNum
			IMG_UINT32 uRegArrayNum
			IMG_UINT32 uRegChan
			IMG_UINT32 uDstIdx
			ARG sDestReg
			ARG sDataReg
			ARG sIndexReg
			IMG_UINT32 uChanPerStore
			IMG_UINT32 uChanMask
			IMG_UINT32 uIdxOffset
			IMG_UINT32 uPredReg
			PUSC_VEC_ARRAY_REG psVecArrayReg
			PUSC_VEC_ARRAY_DATA psVecArrayData
			IMG_BOOL bHasDynOffset
			IMG_BOOL bDynArray
			IMG_BOOL bLoad
			{
				IMG_UINT32 uAddr
				IMG_BOOL bOddStoreOffset
				{
					IMG_BOOL bSetupIdxReg
					IMG_UINT32 uStoreOffset
					{
						ARG sBaseReg
						UF_REGFORMAT eStoreFmt
					}
				}
			}
		}

		// inlined
		// function
		IMG_BOOL ExpandLoadStoreInst(
			PINTERMEDIATE_STATE psState
			PCODEBLOCK psCodeBlock
			PINST psLdStInst
			)
		{
			const IMG_UINT32 uFirstStSrc
			IMG_UINT32 i
			UF_REGFORMAT eFmt
			IMG_UINT32 uArrayNum
			PINST psInst
			PINST psInsertPoint
			PINST psLoadInst
			IMG_UINT32 uCompDataSize
			IMG_UINT32 uBaseAddr
			IMG_UINT32 uStaticIdx
			IMG_UINT32 uRegOffset
			IMG_UINT32 uDynOffsetType
			IMG_UINT32 uDynOffsetReg
			IMG_UINT32 uChanOffset
			IMG_UINT32 uChansPerDataReg
			IMG_UINT32 uSrcChan
			IMG_BOOL bHasDynOffset
			IMG_BOOL bDynArray
			ARG sDataReg
			ARG sTempReg
			PARG psValReg
			IMG_UINT32 uChanMask
			IMG_BOOL bLoad
			IMG_UINT32 uFirstChan
			{
				PUSC_VEC_ARRAY_DATA psVecData
			}
			{
				PINST psAddInst
				PINST psShiftInst
				PINST psOrInst
			}
			{
				IMG_BOOL bUnPack
				IOPCODE eOpcode
				IMG_UINT32 uReadChan
			}
			{
				IOPCODE eOpcode
			}
			{
				IOPCODE eOpcode
			}
			{
				IMG_BOOL bPack
				IMG_UINT32 uDestMask
				IOPCODE eOpcode
			}
		}

	}
}


struct _IO_FILE* stdin

struct _IO_FILE* stdout

const INST_DESC[NaN] g_psInstDesc

const IMG_UINT32[NaN] g_puSwapRedAndBlueChan

const IMG_UINT32[NaN] g_puSwapRedAndBlueMask

