/*
 |            file: efo.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: <0x7ffe0;0x8e298>
 */
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 char IMG_CHAR

typedef char* IMG_PCHAR

typedef long unsigned int IMG_UINT32

typedef long unsigned int* IMG_PUINT32

typedef long int IMG_INT32

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_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 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 _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* 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_VECTOR_OP_ {
	USC_VEC_NOT = 0; //0x0
	USC_VEC_AND = 1; //0x1
	USC_VEC_OR = 2; //0x2
	USC_VEC_ADD = 3; //0x3
	USC_VEC_SUB = 4; //0x4
	USC_VEC_EQ = 5; //0x5
	USC_VEC_DISJ = 6; //0x6
}

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

struct _EFO_GROUP_DATA {
	IMG_UINT32 uArgCount // @0
	PINST psHead // @4
	PINST psTail // @8
	IMG_BOOL bExistingGroup // @c
	IMG_UINT32 uInstCount // @10
	IMG_PUINT32 auDeschedDependencies // @14
	IMG_UINT32 uDeschedDependencyCount // @18
	IMG_UINT32 uGroupDependencyCount // @1c
}

typedef struct _EFO_GROUP_DATA* PEFO_GROUP_DATA

typedef struct {
	IMG_PUINT32 aauEfoDependencyGraph // @0
	IMG_PUINT32 aauClosedEfoDependencyGraph // @4
	PEFO_GROUP_DATA asEfoGroup // @8
	IMG_UINT32 uEfoGroupCount // @c
	IMG_BOOL bNewEfoFeature // @10
}* PEFOGEN_STATE

typedef IMG_BOOL* PFN_EFO_BUILDER

typedef enum tag_img_bool IMG_BOOL

typedef struct {
	IMG_UINT32[2] puASrcInIReg // @0
	IMG_UINT32[2] puASrcInNegIReg // @8
	IMG_UINT32[2] puBSrcInIReg // @10
	IMG_UINT32[2] puBSrcInNegIReg // @18
} IREG_STATUS

typedef struct {
	IMG_UINT32[2] puASrcInIReg // @0
	IMG_UINT32[2] puASrcInNegIReg // @8
	IMG_UINT32[2] puBSrcInIReg // @10
	IMG_UINT32[2] puBSrcInNegIReg // @18
}* PIREG_STATUS

typedef struct {
	EFO_SRC eM0Src0 // @0
	EFO_SRC eM0Src1 // @4
	EFO_SRC eM1Src0 // @8
	EFO_SRC eM1Src1 // @c
	EFO_SRC eA0Src0 // @10
	EFO_SRC eA0Src1 // @14
	EFO_SRC eA1Src0 // @18
	EFO_SRC eA1Src1 // @1c
	EFO_SRC eI0Src // @20
	EFO_SRC eI1Src // @24
	EFO_SRC eDSrc // @28
} EFO_PARAMS_TEMPLATE

typedef struct {
	IMG_PCHAR pszSameSources // @0
	IMG_PCHAR pszEfoSources // @4
	IMG_PCHAR pszI0Sources // @8
	IMG_PCHAR pszI1Sources // @c
	const EFO_PARAMS_TEMPLATE* psEfoParams // @10
	IMG_BOOL bInstBIsFirst // @14
	IMG_BOOL bWriteI0Only // @18
} EFO_TEMPLATE

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


// function
IMG_BOOL CanUseHardwareConstant(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uArg
	)
{
}


// function
IMG_BOOL GetClosedDependency(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uSrc
	IMG_UINT32 uDest
	)
{
	{
	}
}


// external function
IMG_BOOL IsDeschedBeforeInst(
	PINTERMEDIATE_STATE psState
	PINST psInst
	)
{
}


// external function
IMG_BOOL IsDeschedAfterInst(
	PINST psInst
	)
{
}


// function
IMG_BOOL IsGroupDependency(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoSrcGroup
	IMG_UINT32 uEfoDestGroup
	)
{
	{
		{
		}
	}
}


// external function
IMG_BOOL CanUseSource0(
	PARG psArg
	)
{
}


// function
IMG_BOOL GetDependency(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uSrc
	IMG_UINT32 uDest
	)
{
	{
	}
}


// function
void AddToEfoReaderList(
	PINST psEfoInst
	PINST psReaderInst
	)
{
	PINST psInst
}


// function
IMG_BOOL IsInvalidSrc0ForUnwindEfo(
	PINTERMEDIATE_STATE psState
	PINST psEfoInst
	EFO_SRC eSrc
	)
{
	{
	}
}


// external function PC=<0x7ffe0;0x80030>
IMG_BOOL SameRegister(
	PARG psArgA
	PARG psArgB
	)
{
}


// external function
IMG_BOOL CanUseSource0(
	PARG psArg
	)
{
}


// external function
IMG_BOOL IsDeschedBeforeInst(
	PINTERMEDIATE_STATE psState
	PINST psInst
	)
{
}


// external function
IMG_BOOL IsDeschedAfterInst(
	PINST psInst
	)
{
}


// external function
IMG_BOOL IsDeschedulingPoint(
	PINTERMEDIATE_STATE psState
	PINST psInst
	)
{
	{
		PINST psInst
		PINTERMEDIATE_STATE psState
	}
	{
		PINST psInst
	}
}


// external function
IMG_BOOL IsDeschedulingPoint(
	PINTERMEDIATE_STATE psState
	PINST psInst
	)
{
	{
		PINST psInst
		PINTERMEDIATE_STATE psState
	}
	{
		PINST psInst
	}
}


// external function PC=<0x8018c;0x80760>
void SetupEfoUsage(
	PINTERMEDIATE_STATE psState
	PINST psInst
	)
{
	PEFO_PARAMETERS psEfo
	IMG_BOOL[3] abSrcUsed
	IMG_UINT32 uSrc
}


// function PC=<0x80760;0x8088c>
void AddToEfoWriterList(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoGroupId
	PINST psInst
	)
{
	PINST psOldTail
	{
		PDGRAPH_STATE psDepState
	}
}


// function
void SetupEfoStageData(
	PINTERMEDIATE_STATE psState
	PINST psInst
	)
{
}


// function PC=<0x8088c;0x80984>
PINST CreateEfoInst(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uInstA
	IMG_UINT32 uInstB
	IMG_PUINT32 puEfoInst
	)
{
	IMG_UINT32 uEfoInst
	PINST psEfoInst
	PDGRAPH_STATE psDepState
	// inlined
	// function
	void SetupEfoStageData(
		PINTERMEDIATE_STATE psState
		PINST psInst
		)
	{
	}

}


// function PC=<0x80984;0x80aa0>
void AddClosedDependency(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uTo
	IMG_UINT32 uFrom
	)
{
	PDGRAPH_STATE psDepState
}


// function
void ClearDependencies(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uNode
	)
{
	IMG_UINT32 uGraphStride
}


// function PC=<0x80aa0;0x817ec>
IMG_BOOL UnwindEfo(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	IMG_UINT32 uEfoInst
	PINST psEfoInst
	IMG_BOOL bUpdateGraph
	IMG_BOOL bCheckOnly
	)
{
	PEFO_PARAMETERS psEfo
	IMG_UINT32 uInst
	IMG_UINT32 uArg
	EFO_SRC[2] aaeArg
	IMG_BOOL[2] abNegateArg
	IOPCODE[2] aeOpcode
	IMG_UINT32[2] auNewInst
	PDGRAPH_STATE psDepState
	{
		EFO_SRC eISrc
		IMG_BOOL bNegateALeft
		IMG_BOOL bNegateARight
		{
			EFO_SRC eTemp
			IMG_BOOL bTemp
			// inlined
			// function
			IMG_BOOL IsInvalidSrc0ForUnwindEfo(
				PINTERMEDIATE_STATE psState
				PINST psEfoInst
				EFO_SRC eSrc
				)
			{
				{
				}
			}

		}
		// inlined
		// function
		IMG_BOOL IsInvalidSrc0ForUnwindEfo(
			PINTERMEDIATE_STATE psState
			PINST psEfoInst
			EFO_SRC eSrc
			)
		{
			{
			}
		}

		{
			EFO_SRC eASrc0
			EFO_SRC eASrc1
			{
				IMG_BOOL bNegateMSrc
				EFO_SRC eMSrc0
				EFO_SRC eMSrc1
			}
		}
		{
			EFO_SRC eMSrc0
			EFO_SRC eMSrc1
		}
	}
	{
		PINST psNewInst
		IMG_BOOL bUsesIReg
		{
			const IMG_UINT32 uDepCount
			{
				PINST psPrevWriter
				IMG_UINT32 uEfoGroupId
				// inlined
				// function
				void AddToEfoReaderList(
					PINST psEfoInst
					PINST psReaderInst
					)
				{
					PINST psInst
				}

			}
		}
		{
			EFO_SRC eSrc
		}
		// inlined
		// function
		void SetupEfoStageData(
			PINTERMEDIATE_STATE psState
			PINST psInst
			)
		{
		}

	}
	{
		IMG_UINT32 uDepInst
		IMG_UINT32 uEfoGroupId
		{
			PINST psPrevWriter
			PINST* ppsPrevReader
			PINST psReader
		}
		// inlined
		// function
		void ClearDependencies(
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uNode
			)
		{
			IMG_UINT32 uGraphStride
		}

	}
}


// function
void SetClosedDependency(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uSrc
	IMG_UINT32 uDest
	IMG_UINT32 uBit
	)
{
}


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


// function PC=<0x817ec;0x81940>
void UpdateClosedEfoDependencyGraph(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uTo
	IMG_UINT32 uFrom
	)
{
	IMG_UINT32 uEfoGroup
	IMG_UINT32 uDepend
	IMG_UINT32 uGraphStride
	// inlined
	// function
	void SetClosedDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		IMG_UINT32 uBit
		)
	{
	}

	// inlined
	// function
	IMG_BOOL GetClosedDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		)
	{
		{
		}
	}

	// inlined
	// function
	void SetClosedDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		IMG_UINT32 uBit
		)
	{
	}

}


// function
IMG_BOOL CheckPackDependency(
	PINST psSrc
	PINST psDest
	)
{
	IMG_UINT32 uArg
	{
	}
	{
	}
}


// function
IMG_BOOL CheckPackDestDependency(
	PARG psSrc
	PINST psDest
	)
{
	IMG_UINT32 uArg
}


// function PC=<0x81940;0x82460>
void TryReorderPacks(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uEfoInst
	)
{
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	IMG_UINT32 uInst
	PINST[2] apsInst
	IMG_UINT32[2] auInst
	IMG_UINT32 uIRegMask
	IMG_BOOL[2] abMatch
	ARG sTemp
	PARG psSecondMatch
	IMG_UINT32[2] auMatchMask
	IMG_UINT32 uMatchCount
	IMG_BOOL bSwap
	IMG_UINT32 uMaskSrc1
	IMG_UINT32 uMaskSrc2
	{
		PINST psInst
		IMG_UINT32 uArg
	}
	{
		PINST psInst
		IMG_UINT32 uChanCount
		IMG_UINT32 uChan
	}
	{
		IMG_UINT32 uDepInst
		IMG_UINT32 uPackInst
		{
			PINST psDepInst
			// inlined
			// function
			IMG_BOOL CheckPackDependency(
				PINST psSrc
				PINST psDest
				)
			{
				IMG_UINT32 uArg
				{
				}
				{
				}
			}

		}
	}
	const IMG_BOOL[16] abTwoBitsSet
}


// function
void SetDependency(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uSrc
	IMG_UINT32 uDest
	IMG_UINT32 uBit
	)
{
}


// function PC=<0x82460;0x8286c>
void MergeEfoGroup(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psEfoInst
	IMG_UINT32 uEfoInstGroupId
	PINST psOtherEfoInst
	IMG_UINT32 uOtherEfoInstGroupId
	)
{
	IMG_UINT32 uInst
	IMG_UINT32 uDepEfoGroupId
	PDGRAPH_STATE psDepState
	// inlined
	// function
	IMG_BOOL GetDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		)
	{
		{
		}
	}

	// inlined
	// function
	void SetDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		IMG_UINT32 uBit
		)
	{
	}

	// inlined
	// function
	IMG_BOOL GetDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		)
	{
		{
		}
	}

	// inlined
	// function
	IMG_BOOL GetDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		)
	{
		{
		}
	}

	// inlined
	// function
	void SetDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		IMG_UINT32 uBit
		)
	{
	}

	// inlined
	// function
	void SetDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		IMG_UINT32 uBit
		)
	{
	}

	// inlined
	// function
	void SetClosedDependency(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uSrc
		IMG_UINT32 uDest
		IMG_UINT32 uBit
		)
	{
	}

	// inlined
	// function
	void ClearDependencies(
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uNode
		)
	{
		IMG_UINT32 uGraphStride
	}

	{
		PINST psInst
	}
}


// function
void AddWriteAfterReadDependency(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uEfoInst
	IMG_UINT32 uOtherEfoInst
	)
{
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	PINST psDepInst
	{
		IMG_UINT32 uDepInst
	}
}


// function
void AddIRegDependency(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst
	IMG_UINT32 uNewInst
	)
{
	IMG_UINT32 uEfoGroupId
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	IMG_UINT32 uDepInst
	PINST psNextEfoInst
	{
		PINST psDepInst
		{
			{
				{
				}
			}
		}
	}
	{
		IMG_UINT32 uNextEfoInst
	}
	{
		{
		}
	}
}


// function PC=<0x8286c;0x831e0>
void ReplaceIRegMove(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst
	PARG psDest1
	PARG psDest2
	IMG_UINT32 uIRegNum
	IMG_UINT32 uEfoDependencyInst
	IMG_UINT32 uDeschedDependencyInst
	)
{
	IMG_UINT32 uDepInst
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	PINST psEfoDependencyInst
	IMG_BOOL bKilledDest1
	IMG_BOOL bKilledDest2
	{
		IMG_UINT32 uEfoInstGroupId
		IMG_UINT32 uEfoDependencyInstGroupId
		// inlined
		// function
		void AddToEfoReaderList(
			PINST psEfoInst
			PINST psReaderInst
			)
		{
			PINST psInst
		}

		// inlined
		// function
		void AddWriteAfterReadDependency(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uEfoInst
			IMG_UINT32 uOtherEfoInst
			)
		{
			PDGRAPH_STATE psDepState
			PINST psEfoInst
			PINST psDepInst
			{
				IMG_UINT32 uDepInst
			}
		}

	}
	{
		PINST psDepInst
		IMG_UINT32 uArg
		IMG_BOOL bReplaced
		{
			IMG_BOOL bUsed
			IMG_UINT32 uIRegForArg
			{
				ARG sTemp
			}
		}
		{
			IMG_UINT32 uEfoGroupId
			// inlined
			// function
			void AddIRegDependency(
				PINTERMEDIATE_STATE psState
				PEFOGEN_STATE psEfoState
				IMG_UINT32 uEfoInst
				IMG_UINT32 uNewInst
				)
			{
				IMG_UINT32 uEfoGroupId
				PDGRAPH_STATE psDepState
				PINST psEfoInst
				IMG_UINT32 uDepInst
				PINST psNextEfoInst
				{
					PINST psDepInst
					{
						{
							{
							}
						}
					}
				}
				{
					IMG_UINT32 uNextEfoInst
				}
				{
					{
					}
				}
			}

			// inlined
			// function
			void AddToEfoReaderList(
				PINST psEfoInst
				PINST psReaderInst
				)
			{
				PINST psInst
			}

		}
	}
	// inlined
	// function
	void AddWriteAfterReadDependency(
		PINTERMEDIATE_STATE psState
		IMG_UINT32 uEfoInst
		IMG_UINT32 uOtherEfoInst
		)
	{
		PDGRAPH_STATE psDepState
		PINST psEfoInst
		PINST psDepInst
		{
			IMG_UINT32 uDepInst
		}
	}

}


// function
IMG_BOOL EqualArgsIgnoreNegate(
	PARG psArgA
	PARG psArgB
	IMG_BOOL bIgnoreNegate
	)
{
}


// external function
IMG_BOOL EqualArgs(
	PARG psArgA
	PARG psArgB
	)
{
	{
		IMG_BOOL bIgnoreNegate
		PARG psArgB
		PARG psArgA
	}
}


// external function
IMG_BOOL EqualArgs(
	PARG psArgA
	PARG psArgB
	)
{
	{
		IMG_BOOL bIgnoreNegate
		PARG psArgB
		PARG psArgA
	}
}


// function
PARG GetArg(
	PINTERMEDIATE_STATE psState
	PINST psInstA
	PINST psInstB
	IMG_CHAR cArg
	)
{
	PARG psArg
}


// function
IMG_BOOL CanUseEfoSrc(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uArg
	PARG psArg
	)
{
	{
	}
}


// function
IMG_BOOL CheckEfoIReg(
	PINTERMEDIATE_STATE psState
	IMG_CHAR cArg
	PIREG_STATUS psIRegStatus
	IMG_UINT32 uIReg
	IMG_BOOL bNegate
	IMG_BOOL bSwap
	IMG_PBOOL pbNegateResult
	)
{
	IMG_UINT32 uMask
	IMG_PUINT32 puSrcInIReg
	IMG_PUINT32 puSrcInNegIReg
}


// function PC=<0x832a0;0x83ff8>
IMG_BOOL CheckEfoTemplate(
	PINTERMEDIATE_STATE psState
	const EFO_TEMPLATE* psTemplate
	PINST psInstA
	PINST psInstB
	PIREG_STATUS psIRegStatus
	IMG_BOOL bSwap
	PINST psEfoInst
	)
{
	IMG_PCHAR pszSameSources
	IMG_PCHAR pszIReg
	IMG_UINT32 uArg
	IMG_BOOL bA0RightNegate
	IMG_BOOL bA1LeftNegate
	{
		PARG psSame1
		PARG psSame2
		IMG_BOOL bNegate
		// inlined
		// function
		PARG GetArg(
			PINTERMEDIATE_STATE psState
			PINST psInstA
			PINST psInstB
			IMG_CHAR cArg
			)
		{
			PARG psArg
		}

		// inlined
		// function
		PARG GetArg(
			PINTERMEDIATE_STATE psState
			PINST psInstA
			PINST psInstB
			IMG_CHAR cArg
			)
		{
			PARG psArg
		}

		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

	}
	{
		PARG psArg
		IMG_CHAR cEfoSrc
		// inlined
		// function
		IMG_BOOL CanUseHardwareConstant(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			)
		{
		}

		// inlined
		// function
		PARG GetArg(
			PINTERMEDIATE_STATE psState
			PINST psInstA
			PINST psInstB
			IMG_CHAR cArg
			)
		{
			PARG psArg
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

	}
	{
		IMG_BOOL bCouldNegate
		// inlined
		// function
		IMG_BOOL CheckEfoIReg(
			PINTERMEDIATE_STATE psState
			IMG_CHAR cArg
			PIREG_STATUS psIRegStatus
			IMG_UINT32 uIReg
			IMG_BOOL bNegate
			IMG_BOOL bSwap
			IMG_PBOOL pbNegateResult
			)
		{
			IMG_UINT32 uMask
			IMG_PUINT32 puSrcInIReg
			IMG_PUINT32 puSrcInNegIReg
		}

	}
	{
		IMG_BOOL bCouldNegate
		// inlined
		// function
		IMG_BOOL CheckEfoIReg(
			PINTERMEDIATE_STATE psState
			IMG_CHAR cArg
			PIREG_STATUS psIRegStatus
			IMG_UINT32 uIReg
			IMG_BOOL bNegate
			IMG_BOOL bSwap
			IMG_PBOOL pbNegateResult
			)
		{
			IMG_UINT32 uMask
			IMG_PUINT32 puSrcInIReg
			IMG_PUINT32 puSrcInNegIReg
		}

	}
}


// function PC=<0x83ff8;0x84874>
IMG_BOOL MakeEfo_MulMad_SharedSrc(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psInstA
	PINST psInstB
	IMG_UINT32 uASrcInI0
	IMG_UINT32 uASrcInI1
	IMG_UINT32 uBSrcInI0
	IMG_UINT32 uBSrcInI1
	IMG_UINT32 uBSrcFromADest
	PINST psEfoInst
	IMG_PBOOL pbExtraSub
	)
{
	{
		IMG_UINT32 uAArg
		IMG_UINT32 uBArg
		// inlined
		// external function
		IMG_BOOL EqualArgs(
			PARG psArgA
			PARG psArgB
			)
		{
			{
				IMG_BOOL bIgnoreNegate
				PARG psArgB
				PARG psArgA
			}
		}

		{
			IMG_BOOL bValidBanks
			// inlined
			// function
			IMG_BOOL CanUseEfoSrc(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uArg
				PARG psArg
				)
			{
				{
				}
			}

			// inlined
			// function
			IMG_BOOL CanUseEfoSrc(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uArg
				PARG psArg
				)
			{
				{
				}
			}

			// inlined
			// function
			IMG_BOOL CanUseEfoSrc(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uArg
				PARG psArg
				)
			{
				{
				}
			}

			// inlined
			// function
			IMG_BOOL CanUseEfoSrc(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uArg
				PARG psArg
				)
			{
				{
				}
			}

			// inlined
			// function
			IMG_BOOL CanUseEfoSrc(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uArg
				PARG psArg
				)
			{
				{
				}
			}

			// inlined
			// function
			IMG_BOOL CanUseEfoSrc(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uArg
				PARG psArg
				)
			{
				{
				}
			}

		}
	}
}


// function PC=<0x84874;0x84dac>
IMG_BOOL MakeEfo_MulMad_IRegSrcs(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psInstA
	PINST psInstB
	IMG_UINT32 uASrcInI0
	IMG_UINT32 uASrcInI1
	IMG_UINT32 uBSrcInI0
	IMG_UINT32 uBSrcInI1
	IMG_UINT32 uBSrcFromADest
	PINST psEfoInst
	IMG_PBOOL pbExtraSub
	)
{
	{
		IMG_UINT32 uAArg
		IMG_UINT32 uBArg
		{
			PARG psI0Mul
			PARG psI1Mul
			{
				IMG_BOOL bValidBanks
				// inlined
				// function
				IMG_BOOL CanUseEfoSrc(
					PINTERMEDIATE_STATE psState
					IMG_UINT32 uArg
					PARG psArg
					)
				{
					{
					}
				}

				// inlined
				// function
				IMG_BOOL CanUseEfoSrc(
					PINTERMEDIATE_STATE psState
					IMG_UINT32 uArg
					PARG psArg
					)
				{
					{
					}
				}

				// inlined
				// function
				IMG_BOOL CanUseEfoSrc(
					PINTERMEDIATE_STATE psState
					IMG_UINT32 uArg
					PARG psArg
					)
				{
					{
					}
				}

				// inlined
				// function
				IMG_BOOL CanUseEfoSrc(
					PINTERMEDIATE_STATE psState
					IMG_UINT32 uArg
					PARG psArg
					)
				{
					{
					}
				}

			}
		}
	}
}


// function PC=<0x84dac;0x85534>
IMG_BOOL MakeEfo_EfoMad_Lrp_545(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psInstA
	PINST psInstB
	IMG_UINT32 uASrcInI0
	IMG_UINT32 uASrcInI1
	IMG_UINT32 uBSrcInI0
	IMG_UINT32 uBSrcInI1
	IMG_UINT32 uBSrcFromADest
	PINST psEfoInst
	IMG_PBOOL pbExtraSub
	)
{
	{
		IMG_UINT32 uBCandidate
		IMG_UINT32 uACommonSrc
		IMG_UINT32 uAOtherSrc
		{
			IMG_BOOL bExtraSub
		}
		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// external function
		IMG_BOOL EqualArgs(
			PARG psArgA
			PARG psArgB
			)
		{
			{
				IMG_BOOL bIgnoreNegate
				PARG psArgB
				PARG psArgA
			}
		}

		// inlined
		// external function
		IMG_BOOL EqualArgs(
			PARG psArgA
			PARG psArgB
			)
		{
			{
				IMG_BOOL bIgnoreNegate
				PARG psArgB
				PARG psArgA
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

	}
}


// function PC=<0x85534;0x85ce0>
IMG_BOOL MakeEfo_EfoMad_Lrp_535(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psInstA
	PINST psInstB
	IMG_UINT32 uASrcInI0
	IMG_UINT32 uASrcInI1
	IMG_UINT32 uBSrcInI0
	IMG_UINT32 uBSrcInI1
	IMG_UINT32 uBSrcFromADest
	PINST psEfoInst
	IMG_PBOOL pbExtraSub
	)
{
	{
		IMG_UINT32 uBCandidate
		IMG_UINT32 uACommonSrc
		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// external function
		IMG_BOOL EqualArgs(
			PARG psArgA
			PARG psArgB
			)
		{
			{
				IMG_BOOL bIgnoreNegate
				PARG psArgB
				PARG psArgA
			}
		}

		// inlined
		// external function
		IMG_BOOL EqualArgs(
			PARG psArgA
			PARG psArgB
			)
		{
			{
				IMG_BOOL bIgnoreNegate
				PARG psArgB
				PARG psArgA
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

	}
}


// function PC=<0x85ce0;0x865ec>
IMG_BOOL MakeEfo_MadMad_Lrp(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psInstA
	PINST psInstB
	IMG_UINT32 uASrcInI0
	IMG_UINT32 uASrcInI1
	IMG_UINT32 uBSrcInI0
	IMG_UINT32 uBSrcInI1
	IMG_UINT32 uBSrcFromADest
	PINST psEfoInst
	IMG_PBOOL pbExtraSub
	)
{
	{
		IMG_UINT32 uBCandidate
		IMG_UINT32 uACommonSrc
		IMG_BOOL bExtraSub
		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// function
		IMG_BOOL EqualArgsIgnoreNegate(
			PARG psArgA
			PARG psArgB
			IMG_BOOL bIgnoreNegate
			)
		{
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CanUseEfoSrc(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uArg
			PARG psArg
			)
		{
			{
			}
		}

	}
}


// function
IMG_BOOL IsInstDependentOnGroup(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uInst
	IMG_UINT32 uGroupId
	)
{
	PEFO_GROUP_DATA psEfoGroup
	PDGRAPH_STATE psDepState
	{
		PINST psSrcInst
	}
	{
		IMG_UINT32 uGroupHead
	}
}


// function PC=<0x865ec;0x8680c>
IMG_BOOL IsDescheduleBetweenGroupAndInsts(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoGroupId
	IMG_UINT32 uDest1
	IMG_UINT32 uDest2
	)
{
	IMG_UINT32 uDeschedInst
	PDGRAPH_STATE psDepState
	{
		PINST psDeschedInst
		// inlined
		// function
		IMG_BOOL IsInstDependentOnGroup(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uInst
			IMG_UINT32 uGroupId
			)
		{
			PEFO_GROUP_DATA psEfoGroup
			PDGRAPH_STATE psDepState
			{
				PINST psSrcInst
			}
			{
				IMG_UINT32 uGroupHead
			}
		}

		// inlined
		// external function
		IMG_BOOL IsDeschedulingPoint(
			PINTERMEDIATE_STATE psState
			PINST psInst
			)
		{
			{
				PINST psInst
				PINTERMEDIATE_STATE psState
			}
			{
				PINST psInst
			}
		}

	}
}


// function
IMG_BOOL CheckEfoGroupOrder(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoGroup
	IMG_UINT32 uEfoInst1
	IMG_UINT32 uEfoInst2
	)
{
	IMG_UINT32 uOtherEfoGroup
	{
		PEFO_GROUP_DATA psOtherEfoGroup
		PINST psOtherEfoGroupInst
	}
}


// function
IMG_UINT32 CountArgs(
	PINST psInst
	IMG_UINT32 uSrcToIReg
	IMG_UINT32 uPrevArgCount
	PARG* ppsPrevArgs
	)
{
	IMG_UINT32 uArg
	IMG_UINT32 uPrevArg
}


// function PC=<0x8680c;0x873f0>
void CheckSrcToIReg(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_PUINT32 puStartEfoGroupIdx
	IMG_UINT32 uInstA
	IMG_UINT32 uInstB
	PIREG_STATUS psIRegStatus
	IMG_PUINT32 puEfoInst
	)
{
	IMG_UINT32 uArg
	IMG_BOOL bFound
	PDGRAPH_STATE psDepState
	IMG_UINT32 uEfoGroupIdx
	{
		PINST psEfoInst
		IMG_UINT32 uEfoInst
		{
			IMG_UINT32 uInst
			IMG_BOOL bI0DestValid
			IMG_BOOL bI1DestValid
			IMG_UINT32[2] uInstSrcsToIRegs
			{
				IMG_UINT32 uArgCount
				PARG[32] ppsArgs
				// inlined
				// function
				IMG_UINT32 CountArgs(
					PINST psInst
					IMG_UINT32 uSrcToIReg
					IMG_UINT32 uPrevArgCount
					PARG* ppsPrevArgs
					)
				{
					IMG_UINT32 uArg
					IMG_UINT32 uPrevArg
				}

				// inlined
				// function
				IMG_UINT32 CountArgs(
					PINST psInst
					IMG_UINT32 uSrcToIReg
					IMG_UINT32 uPrevArgCount
					PARG* ppsPrevArgs
					)
				{
					IMG_UINT32 uArg
					IMG_UINT32 uPrevArg
				}

			}
			{
				IMG_PUINT32 puSrcToIReg
				IMG_PUINT32 puSrcToNegIReg
				PINST psInst
			}
		}
		// inlined
		// function
		IMG_BOOL CheckEfoGroupOrder(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uEfoGroup
			IMG_UINT32 uEfoInst1
			IMG_UINT32 uEfoInst2
			)
		{
			IMG_UINT32 uOtherEfoGroup
			{
				PEFO_GROUP_DATA psOtherEfoGroup
				PINST psOtherEfoGroupInst
			}
		}

	}
}


// function
IMG_BOOL IsGroupDependentOnInst(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uInst
	IMG_UINT32 uGroupId
	)
{
	PEFO_GROUP_DATA psEfoGroup
	PDGRAPH_STATE psDepState
	{
		PINST psSrcInst
	}
	{
		IMG_UINT32 uGroupTail
		PINST psTailReader
	}
}


// function PC=<0x873f0;0x8768c>
IMG_BOOL IsDescheduleBetweenGroups(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoGroupId1
	IMG_UINT32 uEfoGroupId2
	)
{
	IMG_UINT32 uDeschedInst
	PDGRAPH_STATE psDepState
	{
		PINST psDeschedInst
		// inlined
		// function
		IMG_BOOL IsGroupDependentOnInst(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uInst
			IMG_UINT32 uGroupId
			)
		{
			PEFO_GROUP_DATA psEfoGroup
			PDGRAPH_STATE psDepState
			{
				PINST psSrcInst
			}
			{
				IMG_UINT32 uGroupTail
				PINST psTailReader
			}
		}

		// inlined
		// function
		IMG_BOOL IsInstDependentOnGroup(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uInst
			IMG_UINT32 uGroupId
			)
		{
			PEFO_GROUP_DATA psEfoGroup
			PDGRAPH_STATE psDepState
			{
				PINST psSrcInst
			}
			{
				IMG_UINT32 uGroupHead
			}
		}

		// inlined
		// external function
		IMG_BOOL IsDeschedulingPoint(
			PINTERMEDIATE_STATE psState
			PINST psInst
			)
		{
			{
				PINST psInst
				PINTERMEDIATE_STATE psState
			}
			{
				PINST psInst
			}
		}

	}
}


// function
IMG_BOOL CheckForDeschedReaders(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uEfoInst
	)
{
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	PINST psDepInst
	{
	}
	{
	}
}


// function
IMG_BOOL CanWriteDestUsingEfo(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uEfoInst
	PARG psDest
	IMG_UINT32 uOtherEfoInst
	)
{
	IMG_UINT32 uDepInst
	PDGRAPH_STATE psDepState
	{
		PINST psDepInst
		{
			IMG_BOOL bUsed
			IMG_UINT32 uArg
			IMG_UINT32 uDestIdx
			{
			}
		}
	}
}


// function
IMG_BOOL CheckWriteAfterReadDependency(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uEfoInst
	IMG_UINT32 uDestInst
	IMG_BOOL bAllowDirect
	)
{
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	PINST psDepInst
	{
		IMG_UINT32 uDepInst
	}
}


// function
void AddDepsForWriteDestUsingEfo(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uEfoInst
	PARG psDest
	IMG_UINT32 uOtherEfoInst
	)
{
	IMG_UINT32 uDepInst
	PDGRAPH_STATE psDepState
	{
		PINST psDepInst
		{
			IMG_BOOL bUsed
			IMG_UINT32 uArg
		}
	}
}


// function PC=<0x8768c;0x87f84>
IMG_BOOL WriteDestUsingEfo(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst
	IMG_UINT32 uOtherEfoInst
	PARG psDest
	IMG_UINT32 uIRegNum
	)
{
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	PINST psOtherEfoInst
	IMG_UINT32 uEfoInstGroupId
	IMG_UINT32 uOtherEfoInstGroupId
	IMG_UINT32 uNewArgCount
	{
		IMG_UINT32 uArg
		// inlined
		// function
		void AddDepsForWriteDestUsingEfo(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uEfoInst
			PARG psDest
			IMG_UINT32 uOtherEfoInst
			)
		{
			IMG_UINT32 uDepInst
			PDGRAPH_STATE psDepState
			{
				PINST psDepInst
				{
					IMG_BOOL bUsed
					IMG_UINT32 uArg
				}
			}
		}

		// inlined
		// function
		void AddWriteAfterReadDependency(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uEfoInst
			IMG_UINT32 uOtherEfoInst
			)
		{
			PDGRAPH_STATE psDepState
			PINST psEfoInst
			PINST psDepInst
			{
				IMG_UINT32 uDepInst
			}
		}

	}
	// inlined
	// function
	IMG_BOOL CheckForDeschedReaders(
		PINTERMEDIATE_STATE psState
		IMG_UINT32 uEfoInst
		)
	{
		PDGRAPH_STATE psDepState
		PINST psEfoInst
		PINST psDepInst
		{
		}
		{
		}
	}

	// inlined
	// function
	IMG_BOOL CanWriteDestUsingEfo(
		PINTERMEDIATE_STATE psState
		IMG_UINT32 uEfoInst
		PARG psDest
		IMG_UINT32 uOtherEfoInst
		)
	{
		IMG_UINT32 uDepInst
		PDGRAPH_STATE psDepState
		{
			PINST psDepInst
			{
				IMG_BOOL bUsed
				IMG_UINT32 uArg
				IMG_UINT32 uDestIdx
				{
				}
			}
		}
	}

}


// function
IMG_BOOL IsEfoOrDeschedDependent(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uEfoInst
	PARG psDest1
	PARG psDest2
	IMG_PUINT32 puEfoDependencyInst
	IMG_PUINT32 puDeschedDependencyInst
	)
{
	IMG_UINT32 uDepInst
	PDGRAPH_STATE psDepState
	{
		PINST psDepInst
		IMG_BOOL bUsed
		IMG_UINT32 uArg
		{
		}
		{
		}
	}
}


// function
IMG_BOOL IsInterveningGroup(
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoSrcGroup
	IMG_UINT32 uEfoDestGroup
	)
{
	IMG_UINT32 uEfoGroup
	{
		{
			{
			}
		}
	}
	{
		{
			{
			}
		}
	}
}


// function
IMG_BOOL IsInterveningIRegWriteForRead(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psSrcEfoInst
	IMG_UINT32 uDest
	)
{
	IMG_UINT32 uEfoGroup
	IMG_UINT32 uSrcEfoGroupId
	PINST psEfoInst
	PDGRAPH_STATE psDepState
	{
		{
			{
			}
		}
	}
}


// function PC=<0x87f84;0x89120>
IMG_BOOL CanReplaceIRegMove(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst
	PARG psDest1
	PARG psDest2
	IMG_PUINT32 puEfoDependencyInst
	IMG_PUINT32 puDeschedDependencyInst
	)
{
	IMG_UINT32 uDepInst
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	IMG_BOOL bKilledDest1
	IMG_BOOL bKilledDest2
	IMG_UINT32 uEfoDependencyInst
	PINST psEfoDependencyInst
	IMG_UINT32 uDeschedDependencyInst
	PINST psDeschedDependencyInst
	// inlined
	// function
	IMG_BOOL IsEfoOrDeschedDependent(
		PINTERMEDIATE_STATE psState
		IMG_UINT32 uEfoInst
		PARG psDest1
		PARG psDest2
		IMG_PUINT32 puEfoDependencyInst
		IMG_PUINT32 puDeschedDependencyInst
		)
	{
		IMG_UINT32 uDepInst
		PDGRAPH_STATE psDepState
		{
			PINST psDepInst
			IMG_BOOL bUsed
			IMG_UINT32 uArg
			{
			}
			{
			}
		}
	}

	{
		IMG_UINT32 uEfoGroupId
		IMG_UINT32 uEfoDependencyGroupId
		// inlined
		// function
		IMG_BOOL CheckForDeschedReaders(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uEfoInst
			)
		{
			PDGRAPH_STATE psDepState
			PINST psEfoInst
			PINST psDepInst
			{
			}
			{
			}
		}

		// inlined
		// function
		IMG_BOOL CheckWriteAfterReadDependency(
			PINTERMEDIATE_STATE psState
			IMG_UINT32 uEfoInst
			IMG_UINT32 uDestInst
			IMG_BOOL bAllowDirect
			)
		{
			PDGRAPH_STATE psDepState
			PINST psEfoInst
			PINST psDepInst
			{
				IMG_UINT32 uDepInst
			}
		}

		// inlined
		// function
		IMG_BOOL IsInterveningGroup(
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uEfoSrcGroup
			IMG_UINT32 uEfoDestGroup
			)
		{
			IMG_UINT32 uEfoGroup
			{
				{
					{
					}
				}
			}
			{
				{
					{
					}
				}
			}
		}

		// inlined
		// function
		IMG_BOOL IsGroupDependency(
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uEfoSrcGroup
			IMG_UINT32 uEfoDestGroup
			)
		{
			{
				{
				}
			}
		}

	}
	// inlined
	// function
	IMG_BOOL CheckWriteAfterReadDependency(
		PINTERMEDIATE_STATE psState
		IMG_UINT32 uEfoInst
		IMG_UINT32 uDestInst
		IMG_BOOL bAllowDirect
		)
	{
		PDGRAPH_STATE psDepState
		PINST psEfoInst
		PINST psDepInst
		{
			IMG_UINT32 uDepInst
		}
	}

	{
		PINST psDepInst
		IMG_UINT32 uUsedMask
		IMG_UINT32 uD1UsedMask
		IMG_UINT32 uD2UsedMask
		IMG_BOOL bSwapped
		IMG_UINT32 uArg
		{
			IMG_BOOL bUsed
		}
		// inlined
		// function
		IMG_BOOL IsInterveningIRegWriteForRead(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			PINST psSrcEfoInst
			IMG_UINT32 uDest
			)
		{
			IMG_UINT32 uEfoGroup
			IMG_UINT32 uSrcEfoGroupId
			PINST psEfoInst
			PDGRAPH_STATE psDepState
			{
				{
					{
					}
				}
			}
		}

		{
			IMG_UINT32 uRegSetIdx
			{
				IMG_UINT32 uRegSetStart
				IMG_UINT32 uRegSetSize
				IMG_UINT32 uRegSetMask
			}
		}
		// inlined
		// external function
		IMG_BOOL IsDeschedAfterInst(
			PINST psInst
			)
		{
		}

		// inlined
		// external function
		IMG_BOOL IsDeschedBeforeInst(
			PINTERMEDIATE_STATE psState
			PINST psInst
			)
		{
		}

	}
}


// function PC=<0x89120;0x89330>
IMG_BOOL GetEfoGroupOrder(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoGroup1
	IMG_UINT32 uEfoGroup2
	)
{
	PEFO_GROUP_DATA psEfoGroup1
	PEFO_GROUP_DATA psEfoGroup2
	PDGRAPH_STATE psDepState
	{
		PINST psSrcInst
		// inlined
		// function
		IMG_BOOL IsGroupDependentOnInst(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uInst
			IMG_UINT32 uGroupId
			)
		{
			PEFO_GROUP_DATA psEfoGroup
			PDGRAPH_STATE psDepState
			{
				PINST psSrcInst
			}
			{
				IMG_UINT32 uGroupTail
				PINST psTailReader
			}
		}

	}
	{
		PINST psEfoGroup1Head
		PINST psEfoGroup2Tail
		PINST psTailReader
	}
}


// function
void SetupGroupDependencyGraph(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_BOOL bIgnoreDesched
	)
{
	IMG_UINT32 uEfoGroup1
	IMG_UINT32 uEfoGroup2
	IMG_UINT32 uGraphStride
	{
		IMG_UINT32 uDepend
	}
	{
		PDGRAPH_STATE psDepState
		IMG_UINT32 uDeschedInst
		{
			PINST psDeschedInst
		}
	}
	{
		{
		}
	}
}


// function
IMG_BOOL CanStartGroup(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoGroupId
	IMG_BOOL bIgnoreDesched
	)
{
	{
		IMG_UINT32 uGroupIdx
		IMG_UINT32 uCount
		{
			{
			}
		}
	}
}


// function
void ExpandInternalRegistersMoves(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	PINST psInst
	)
{
	IMG_UINT32 uDest
	{
		PINST psMoveInst
	}
}


// function
void FinishGroup(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uFinishedGroup
	)
{
	IMG_UINT32 uOtherGroup
	{
		{
		}
	}
}


// function
void FinishDeschedInst(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uDeschedInst
	)
{
	IMG_UINT32 uGroup
	{
	}
}


// function
void FinishGroupDependencyGraph(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_BOOL bIgnoreDesched
	)
{
	{
		IMG_UINT32 uEfoGroup
	}
}


// function PC=<0x89330;0x89fa8>
void OutputInstructionsInGroupOrder(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	IMG_BOOL bIgnoreDesched
	IMG_BOOL bExpandIRegMoves
	)
{
	PDGRAPH_STATE psDepState
	IMG_UINT32 uCurrentGroup
	IMG_UINT32 uCountInCurrentGroup
	// inlined
	// function
	void SetupGroupDependencyGraph(
		PINTERMEDIATE_STATE psState
		PEFOGEN_STATE psEfoState
		IMG_BOOL bIgnoreDesched
		)
	{
		IMG_UINT32 uEfoGroup1
		IMG_UINT32 uEfoGroup2
		IMG_UINT32 uGraphStride
		{
			IMG_UINT32 uDepend
		}
		{
			PDGRAPH_STATE psDepState
			IMG_UINT32 uDeschedInst
			{
				PINST psDeschedInst
			}
		}
		{
			{
			}
		}
	}

	{
		IMG_UINT32 uInst
		PINST psInst
		// inlined
		// external function
		IMG_BOOL IsDeschedAfterInst(
			PINST psInst
			)
		{
		}

		// inlined
		// external function
		IMG_BOOL IsDeschedAfterInst(
			PINST psInst
			)
		{
		}

		// inlined
		// external function
		IMG_BOOL IsDeschedBeforeInst(
			PINTERMEDIATE_STATE psState
			PINST psInst
			)
		{
		}

		// inlined
		// function
		void FinishDeschedInst(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uDeschedInst
			)
		{
			IMG_UINT32 uGroup
			{
			}
		}

		// inlined
		// external function
		IMG_BOOL IsDeschedulingPoint(
			PINTERMEDIATE_STATE psState
			PINST psInst
			)
		{
			{
				PINST psInst
				PINTERMEDIATE_STATE psState
			}
			{
				PINST psInst
			}
		}

		{
			IMG_UINT32 uEfoGroupId
			// inlined
			// function
			void FinishGroup(
				PINTERMEDIATE_STATE psState
				PEFOGEN_STATE psEfoState
				IMG_UINT32 uFinishedGroup
				)
			{
				IMG_UINT32 uOtherGroup
				{
					{
					}
				}
			}

		}
		// inlined
		// function
		void ExpandInternalRegistersMoves(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			PCODEBLOCK psBlock
			PINST psInst
			)
		{
			IMG_UINT32 uDest
			{
				PINST psMoveInst
			}
		}

		// inlined
		// function
		IMG_BOOL CanStartGroup(
			PINTERMEDIATE_STATE psState
			PEFOGEN_STATE psEfoState
			IMG_UINT32 uEfoGroupId
			IMG_BOOL bIgnoreDesched
			)
		{
			{
				IMG_UINT32 uGroupIdx
				IMG_UINT32 uCount
				{
					{
					}
				}
			}
		}

	}
	// inlined
	// function
	void FinishGroupDependencyGraph(
		PINTERMEDIATE_STATE psState
		PEFOGEN_STATE psEfoState
		IMG_BOOL bIgnoreDesched
		)
	{
		{
			IMG_UINT32 uEfoGroup
		}
	}

}


// function PC=<0x89fa8;0x8a2f0>
IMG_BOOL WouldBeInterveningIRegWrite(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst1
	IMG_UINT32 uEfoInst2
	)
{
	IMG_UINT32 uEfoGroupIdx
	// inlined
	// function
	IMG_BOOL IsInstDependentOnGroup(
		PINTERMEDIATE_STATE psState
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uInst
		IMG_UINT32 uGroupId
		)
	{
		PEFO_GROUP_DATA psEfoGroup
		PDGRAPH_STATE psDepState
		{
			PINST psSrcInst
		}
		{
			IMG_UINT32 uGroupHead
		}
	}

	// inlined
	// function
	IMG_BOOL IsGroupDependentOnInst(
		PINTERMEDIATE_STATE psState
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uInst
		IMG_UINT32 uGroupId
		)
	{
		PEFO_GROUP_DATA psEfoGroup
		PDGRAPH_STATE psDepState
		{
			PINST psSrcInst
		}
		{
			IMG_UINT32 uGroupTail
			PINST psTailReader
		}
	}

	// inlined
	// function
	IMG_BOOL IsInstDependentOnGroup(
		PINTERMEDIATE_STATE psState
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uInst
		IMG_UINT32 uGroupId
		)
	{
		PEFO_GROUP_DATA psEfoGroup
		PDGRAPH_STATE psDepState
		{
			PINST psSrcInst
		}
		{
			IMG_UINT32 uGroupHead
		}
	}

	// inlined
	// function
	IMG_BOOL IsGroupDependentOnInst(
		PINTERMEDIATE_STATE psState
		PEFOGEN_STATE psEfoState
		IMG_UINT32 uInst
		IMG_UINT32 uGroupId
		)
	{
		PEFO_GROUP_DATA psEfoGroup
		PDGRAPH_STATE psDepState
		{
			PINST psSrcInst
		}
		{
			IMG_UINT32 uGroupTail
			PINST psTailReader
		}
	}

}


// function
IMG_UINT32 CheckSrcToDest(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uInstA
	IMG_UINT32 uInstB
	)
{
	IMG_UINT32 uOtherInst
	PDGRAPH_STATE psDepState
	PINST psInstA
	PINST psInstB
	IMG_UINT32 uBSrcFromADest
	IMG_UINT32 uArg
	IMG_BOOL bDestDependency
	IMG_BOOL bI0Dependency
	IMG_BOOL bI1Dependency
	{
		PINST psOtherInst
	}
	{
	}
}


// function
IMG_BOOL IsDestDependency(
	PINST psInst
	PARG psDest
	)
{
	IMG_UINT32 uArg
	{
	}
}


// function
IMG_BOOL IsInterveningInst(
	PINTERMEDIATE_STATE psState
	IMG_UINT32 uInstA
	IMG_UINT32 uInstB
	)
{
	IMG_UINT32 uDepInst
	PDGRAPH_STATE psDepState
}


// function
IMG_BOOL TryCombineDependentInstructions(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	IMG_UINT32 uInstA
	PINST psInstA
	IMG_UINT32 uInstB
	PINST psInstB
	IMG_UINT32 uBSrcFromADest
	PIREG_STATUS psIRegStatus
	IMG_UINT32 uEfoInst
	)
{
	PDGRAPH_STATE psDepState
	PINST psNewInst
	IMG_UINT32 uNewInst
	IMG_UINT32 uEfoGroupId
	IMG_UINT32 uArg
	IMG_BOOL bExtraAdd
	IMG_BOOL bExtraSub
	IMG_UINT32 uExtraAddInst
	PINST psExtraAddInst
	PFN_EFO_BUILDER pfnBuilder
	{
		PINST psPrevWriter
		IMG_UINT32 uEfoGroupId
	}
	{
		IMG_UINT32 uDepInst
		{
			PINST psDepInst
		}
	}
	{
		PINST psEfoInst
		{
			{
				PINST psInst
			}
		}
	}
}


// function
IMG_BOOL CanCombineDependentsIntoEfo(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PINST psInstA
	PINST psInstB
	PIREG_STATUS psIRegStatus
	IMG_UINT32 uBSrcFromADest
	IMG_PBOOL pbExtraAdd
	PFN_EFO_BUILDER* ppfnSelectedBuilder
	)
{
	IMG_UINT32 uEntry
	
	const struct {
	PFN_EFO_BUILDER pfnBuilder // @0
	IMG_BOOL bExtraAdd // @4
}[5] sEfoBuilders
}


// function
IMG_UINT32 FindMadForEfoWriteBack(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst
	IMG_UINT32 uOtherInst
	)
{
	IMG_UINT32 uMadInst
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	{
		PINST psMadInst
		{
			IMG_UINT32 uMulSrc0
			IMG_UINT32 uMulSrc1
			IMG_UINT32 uAddSrc
		}
		{
		}
	}
}


// function
void BuildExtraAddInst(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	PINST psExtraAddInst
	PINST psInstB
	)
{
	ARG sTemp
}


// function
void ReplaceHardwareConstants(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psBlock
	PINST psInst
	)
{
	IMG_UINT32 uArg
	IMG_UINT32 uSAConstType
	{
		IMG_UINT32 uSecAttr
	}
}


// function
IMG_UINT32 CreateNewEfoGroup(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_BOOL bPreEfoGroup
	)
{
	IMG_UINT32 uEfoGroupId
}


// function PC=<0x8a2f0;0x8c654>
void GenerateEfosFromDependentInstructions(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	)
{
	IMG_UINT32 uInstA
	IMG_UINT32 uInstB
	PDGRAPH_STATE psDepState
	{
		PINST psInstA
		// inlined
		// function
		IMG_UINT32 GetBit(
			const IMG_UINT32* auArr
			const IMG_UINT32 uPos
			)
		{
		}

		{
			PINST psInstB
			IMG_UINT32 uBSrcFromADest
			IMG_UINT32 uEfoInst
			IMG_UINT32 uStartGroup
			IMG_BOOL bCombined
			{
				IREG_STATUS sIRegStatus
				// inlined
				// function
				IMG_BOOL TryCombineDependentInstructions(
					PINTERMEDIATE_STATE psState
					PEFOGEN_STATE psEfoState
					PCODEBLOCK psBlock
					IMG_UINT32 uInstA
					PINST psInstA
					IMG_UINT32 uInstB
					PINST psInstB
					IMG_UINT32 uBSrcFromADest
					PIREG_STATUS psIRegStatus
					IMG_UINT32 uEfoInst
					)
				{
					PDGRAPH_STATE psDepState
					PINST psNewInst
					IMG_UINT32 uNewInst
					IMG_UINT32 uEfoGroupId
					IMG_UINT32 uArg
					IMG_BOOL bExtraAdd
					IMG_BOOL bExtraSub
					IMG_UINT32 uExtraAddInst
					PINST psExtraAddInst
					PFN_EFO_BUILDER pfnBuilder
					{
						PINST psPrevWriter
						IMG_UINT32 uEfoGroupId
					}
					{
						IMG_UINT32 uDepInst
						{
							PINST psDepInst
						}
					}
					{
						PINST psEfoInst
						{
							{
								PINST psInst
							}
						}
					}
				}

			}
			// inlined
			// function
			IMG_BOOL IsInterveningInst(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uInstA
				IMG_UINT32 uInstB
				)
			{
				IMG_UINT32 uDepInst
				PDGRAPH_STATE psDepState
			}

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

			// inlined
			// function
			IMG_UINT32 CheckSrcToDest(
				PINTERMEDIATE_STATE psState
				IMG_UINT32 uInstA
				IMG_UINT32 uInstB
				)
			{
				IMG_UINT32 uOtherInst
				PDGRAPH_STATE psDepState
				PINST psInstA
				PINST psInstB
				IMG_UINT32 uBSrcFromADest
				IMG_UINT32 uArg
				IMG_BOOL bDestDependency
				IMG_BOOL bI0Dependency
				IMG_BOOL bI1Dependency
				{
					PINST psOtherInst
				}
				{
				}
			}

		}
	}
}


// function
void CreateExistingIRegGroups(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	)
{
	PDGRAPH_STATE psDepState
	IMG_UINT32 uInst
	IMG_UINT32 uPreEfoGroupId
	IMG_UINT32 uIRegsLive
	PINST psLastWriter
	{
		PINST psInst
		IMG_UINT32 uIRegsRead
		IMG_UINT32 uIRegsWritten
		IMG_UINT32 uIRegsUsed
		{
			{
				PINST psInst
			}
		}
	}
}


// function
IMG_BOOL TryEfoCombine(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	IMG_UINT32 uInstA
	PINST psInstA
	IMG_UINT32 uInstB
	PINST psInstB
	)
{
	IREG_STATUS sIRegStatus
	IMG_UINT32 uEfoInst
	IMG_UINT32 uStartGroup
	PDGRAPH_STATE psDepState
	{
	}
	{
	}
}


// function
IMG_BOOL TryEfoCombineWithEfo(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	IMG_UINT32 uInstA
	PINST psInstA
	IMG_UINT32 uInstB
	PINST psInstB
	PIREG_STATUS psIRegStatus
	IMG_UINT32 uEfoInst
	)
{
	PINST psNewInst
	IMG_UINT32 uNewInst
	IMG_UINT32 uEfoGroupId
	IMG_UINT32 uArg
	const EFO_TEMPLATE* psEfoForm
	PDGRAPH_STATE psDepState
	{
		PINST psEfoInst
		{
			{
				PINST psInst
			}
		}
	}
}


// function
IMG_BOOL CanCombineIntoEfo(
	PINTERMEDIATE_STATE psState
	PINST psInstA
	PINST psInstB
	PIREG_STATUS psIRegStatus
	const EFO_TEMPLATE** ppsSelectedEntry
	)
{
}


// function
IMG_BOOL CheckEfoTemplateTable(
	PINTERMEDIATE_STATE psState
	const EFO_TEMPLATE* psTemplateTable
	IMG_UINT32 uNumTemplateTableEntries
	PINST psInstA
	PINST psInstB
	PIREG_STATUS psIRegStatus
	IMG_BOOL bSwap
	const EFO_TEMPLATE** ppsSelectedEntry
	)
{
	IMG_UINT32 uEntry
	{
		const EFO_TEMPLATE* psEntry
	}
}


// function
IMG_BOOL CheckEfoGroupDependency(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst1
	IMG_UINT32 uEfoInst2
	)
{
	IMG_UINT32 uSrcEfoGroup
	IMG_UINT32 uDestEfoGroup
}


// function
void CombineIntoEfo(
	PINTERMEDIATE_STATE psState
	const EFO_TEMPLATE* psSelectedEntry
	PINST psInstA
	PINST psInstB
	PIREG_STATUS psIRegStatus
	PINST psEfoInst
	)
{
}


// function
IMG_BOOL CanUseStandardDest(
	PARG psArg
	)
{
}


// function
IMG_BOOL ConvertM0ToA0(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	PCODEBLOCK psBlock
	PINST psEfoInst
	EFO_SRC* peIRegSrc
	)
{
	{
		IMG_UINT32 uSecAttr
		IMG_UINT32 uSAConstType
	}
}


// function
IMG_BOOL WriteDestUsingAnotherEfo(
	PINTERMEDIATE_STATE psState
	PEFOGEN_STATE psEfoState
	IMG_UINT32 uEfoInst
	PARG psDest
	IMG_UINT32 uIRegNum
	)
{
	PDGRAPH_STATE psDepState
	PINST psEfoInst
	{
		IMG_UINT32 uEfoGroup
		{
			PINST psOtherEfoInst
			{
				{
					{
					}
				}
			}
		}
	}
}


// external function PC=<0x8c654;0x8e298>
void GenerateEfoInstructionsBlock(
	PINTERMEDIATE_STATE psState
	PCODEBLOCK psBlock
	)
{
	IMG_UINT32 uInstA
	IMG_UINT32 uInstB
	IMG_UINT32 uEfoInst
	IMG_UINT32 uEfoCount
	PEFOGEN_STATE psEfoState
	PDGRAPH_STATE psDepState
	{
		PINST psInstA
		// inlined
		// function
		void SetupEfoStageData(
			PINTERMEDIATE_STATE psState
			PINST psInst
			)
		{
		}

	}
	// inlined
	// function
	void CreateExistingIRegGroups(
		PINTERMEDIATE_STATE psState
		PEFOGEN_STATE psEfoState
		)
	{
		PDGRAPH_STATE psDepState
		IMG_UINT32 uInst
		IMG_UINT32 uPreEfoGroupId
		IMG_UINT32 uIRegsLive
		PINST psLastWriter
		{
			PINST psInst
			IMG_UINT32 uIRegsRead
			IMG_UINT32 uIRegsWritten
			IMG_UINT32 uIRegsUsed
			{
				{
					PINST psInst
				}
			}
		}
	}

	{
		PINST psInstA
		{
			PINST psInstB
			// inlined
			// function
			IMG_BOOL TryEfoCombine(
				PINTERMEDIATE_STATE psState
				PEFOGEN_STATE psEfoState
				PCODEBLOCK psBlock
				IMG_UINT32 uInstA
				PINST psInstA
				IMG_UINT32 uInstB
				PINST psInstB
				)
			{
				IREG_STATUS sIRegStatus
				IMG_UINT32 uEfoInst
				IMG_UINT32 uStartGroup
				PDGRAPH_STATE psDepState
				{
				}
				{
				}
			}

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

	}
	{
		PINST psEfoInst
		IMG_UINT32 uIReg
		{
			IMG_UINT32 uIReg
			{
				IMG_BOOL bIRegMove
				PARG psDest
				IMG_PBOOL pbValid
				// inlined
				// function
				IMG_BOOL CanUseStandardDest(
					PARG psArg
					)
				{
				}

				// inlined
				// function
				IMG_BOOL WriteDestUsingAnotherEfo(
					PINTERMEDIATE_STATE psState
					PEFOGEN_STATE psEfoState
					IMG_UINT32 uEfoInst
					PARG psDest
					IMG_UINT32 uIRegNum
					)
				{
					PDGRAPH_STATE psDepState
					PINST psEfoInst
					{
						IMG_UINT32 uEfoGroup
						{
							PINST psOtherEfoInst
							{
								{
									{
									}
								}
							}
						}
					}
				}

			}
		}
		{
			IMG_BOOL bIRegMove
			PARG psDest
			EFO_SRC eISrc
			IMG_PBOOL pbValid
			IMG_UINT32 uEfoDependencyInst
			IMG_UINT32 uDeschedDependencyInst
			// inlined
			// function
			IMG_BOOL ConvertM0ToA0(
				PINTERMEDIATE_STATE psState
				PEFOGEN_STATE psEfoState
				PCODEBLOCK psBlock
				PINST psEfoInst
				EFO_SRC* peIRegSrc
				)
			{
				{
					IMG_UINT32 uSecAttr
					IMG_UINT32 uSAConstType
				}
			}

			// inlined
			// function
			IMG_BOOL CanUseStandardDest(
				PARG psArg
				)
			{
			}

		}
		{
			IMG_UINT32 uEfoDependencyInst
			IMG_UINT32 uDeschedDependencyInst
			PARG psDest1
			PARG psDest2
		}
	}
	{
		PINST psInst
	}
}


const EFO_PARAMS_TEMPLATE sS0S1S0S2_M0M1

const EFO_PARAMS_TEMPLATE sS1S2S0S0_M0M1

const EFO_PARAMS_TEMPLATE sS1I0S0I1_M0M1

const EFO_PARAMS_TEMPLATE sS0S1S2S0_A0A1

const EFO_PARAMS_TEMPLATE sS0S1_M0S2I1I0

const EFO_PARAMS_TEMPLATE sS0S2_S0S1_A0M1

const EFO_PARAMS_TEMPLATE sS1S2_I1I0_M0

const EFO_PARAMS_TEMPLATE sS1S2S0S0_M0I0_I1M1

const EFO_PARAMS_TEMPLATE sS0S1S0S2_M0I0_I1M1

const EFO_PARAMS_TEMPLATE sS1I0S0I1_M0I0_I1M1

const EFO_PARAMS_TEMPLATE sS0S1_M0S2_I1I0

const EFO_PARAMS_TEMPLATE sS0S1S0S2_M0S2

const EFO_PARAMS_TEMPLATE sS1I0S0I1_M0S2

const EFO_PARAMS_TEMPLATE sS0S1S0S2_M0I0

const EFO_PARAMS_TEMPLATE sS0S1S0S0_M0S2

const EFO_PARAMS_TEMPLATE sS0S1_M0S2_M0_A0

const EFO_TEMPLATE[14] psMulMulTemplate_535

const EFO_TEMPLATE[12] psAddAddTemplate_535

const EFO_TEMPLATE[6] psAddMulTemplate_535

const EFO_TEMPLATE[18] psMadMadTemplate_535

const EFO_TEMPLATE[4] psMadAddTemplate_535

const EFO_TEMPLATE[16] psMadMulTemplate_535

struct _IO_FILE* stdin

struct _IO_FILE* stdout

const INST_DESC[NaN] g_psInstDesc

