# Interface: com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext

Routine \(local\) IR context. Every method being decompiled is having an associated IR context. The routine context is also a factory for local IR objects, such as IR statements.

## Method: acquireNativeItem
- parameter: `t`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeItem`

Description: 
parameter: t: 

## Method: addNote
- parameter: `note`, type: `java.lang.String`
- return type: `boolean`

Description: 
parameter: note: 
return: 

## Method: buildCfg
- parameter: `statements`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`

Description: Build an IR\-CFG using the provided list of statements, and set the resulting CFG as the current CFG for this converted routine. The current conversion lists will be used.
parameter: statements: input list of [IEStatement](IEStatement)s
return: the newly created CFG

## Method: buildCfg
- parameter: `statements`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- parameter: `subroutineCallNotBreaking`, type: `boolean`
- parameter: `assignToContext`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`

Description: Build an IR\-CFG from a list of statements. The first statement is the input statement. Note that the resulting CFG may not contain all provided IR statements; only reachable IR statements are present. The resulting CFG is gap\-less.
parameter: statements: list of statements
parameter: subroutineCallNotBreaking: if true, [IECall](IECall)\-like statements do not necessarily            break a basic block \(to be used solely in latest pipeline stages\)
return: a CFG; note that `getCfg()` is not updated; to update the CFG reference stored         in this context, use `setCfg()`

## Method: buildEmptyState
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.EState`

Description: Initialize a state to emulate this routine. The variables map is uninitialized.
return: 

## Method: convertIntermediateOffset
- parameter: `offset`, type: `int`
- return type: `java.lang.Long`

Description: Conversion FROM IR offset TO native address.
parameter: offset: IR offset
return: physical address or null on error

## Method: convertNativeAddress
- parameter: `address`, type: `long`
- return type: `java.lang.Long`

Description: Conversion FROM native address to IR offset. The IR offset is an int, but returned as a long to conveniently manipulate it with IInstruction.
parameter: address: physical address
return: IR offset or null on error

## Method: copyFinder
- parameter: `entry`, type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`
- parameter: `filters`, type: `java.util.Collection<java.lang.Integer>`
- parameter: `irOffset`, type: `java.lang.Long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.EVarCopyFinder`


## Method: copyPairOfVariables
- parameter: `lo`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`
- parameter: `hi`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Create a copy variable for a pair of variable. 

 Not all variables can be copied. Currently, copies are limited to registers variables.
parameter: lo: an [IEVar](IEVar)\-register
parameter: hi: an [IEVar](IEVar)\-register
return: 

## Method: copyTruncatedVariable
- parameter: `var`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`
- parameter: `lowPartBitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.util.base.Couple<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar,com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`

Description: Create a truncated copy of a variable. 

 Not all variables can be copied. Currently, copies are limited to registers variables.
parameter: var: an [IEVar](IEVar)\-register
parameter: lowPartBitsize: 
return: null on error, else, a tuple containing the copy variables: low part \(truncated LSB\),         and high part \(remainder MSB\)

## Method: copyVariable
- parameter: `var`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Create the copy of a variable. 

 Not all variables can be copied. Currently, copies are limited to registers variables.
parameter: var: an [IEVar](IEVar)\-register
return: null on error, else, the copied variable

## Method: createAssign
- parameter: `dst`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `src`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEAssign`


## Method: createAssignIf
- parameter: `assignTpl`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEAssign`
- parameter: `predicate`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEAssign`


## Method: createBranchAssign
- parameter: `dst`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `src`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `subroutineCall`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEAssign`


## Method: createBuiltinMethodCall
- parameter: `name`, type: `java.lang.String`
- parameter: `retexp`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `argexps`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric[]`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IECall`

Description: Create a `Call` to a built\-in method reference.
parameter: name: built\-in method name, supported values: `strcpy`, `memcpy`,            `memset`
parameter: retexp: the optional return value
parameter: argexps: the list of IR arguments
return: a call IR expression, null on error

## Method: createCall
- parameter: `callsite`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `retloc`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `returns`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`
- parameter: `params`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`
- parameter: `stackPointerDelta`, type: `int`
- parameter: `spoiledExpressions`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`
- parameter: `prototype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardPrototype`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IECall`


## Method: createCall
- parameter: `callsite`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `targetCandidates`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`
- parameter: `prototype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardPrototype`
- parameter: `varArgTypes`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType>`
- parameter: `failsafePrototype`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IECall`


## Method: createCompose
- parameter: `elts`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric[]`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IECompose`

Description: Create a composition.
parameter: elts: at least two elements, from lowest\-significant to highest\-significant
return: 

## Method: createCompose
- parameter: `elts`, type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IECompose`

Description: Create a composition.
parameter: elts: at least two elements, from lowest\-significant to highest\-significant
return: 

## Method: createCond
- parameter: `p`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `a`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IECond`


## Method: createConversionOperation
- parameter: `convOperator`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.OperationType`
- parameter: `src`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `dstSize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEOperation`

Description: Create a conversion operation: an integer truncation, integer extension \(zero or signed\), float truncation or extension, float\-to\-int and int\-to\-float conversion.
parameter: convOperator: one of for which [OperationType#isConversion()](OperationType#isConversion()) returns true \(eg,            [OperationType#CAST](OperationType#CAST), [OperationType#CAST_S](OperationType#CAST_S),            [OperationType#FP2FP](OperationType#FP2FP), [OperationType#FP2INT](OperationType#FP2INT),            [OperationType#INT2FP](OperationType#INT2FP)\)
parameter: src: operand to be extended, truncated, or converted
parameter: dstSize: resulting bitsize
return: the operation IRE

## Method: createGroupElt
- parameter: `collection`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGroup`
- parameter: `index`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGroupElt`


## Method: createImm
- parameter: `v`, type: `long`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEImm`


## Method: createImm
- parameter: `v`, type: `byte[]`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEImm`


## Method: createImm
- parameter: `v`, type: `java.math.BigInteger`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEImm`


## Method: createImm
- parameter: `v`, type: `java.lang.String`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEImm`


## Method: createImm
- parameter: `v`, type: `float`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEImm`


## Method: createImm
- parameter: `v`, type: `double`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEImm`


## Method: createJump
- parameter: `branchAddress`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEJump`


## Method: createJump
- parameter: `branchAddress`, type: `int`
- parameter: `condition`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEJump`


## Method: createJumpFar
- parameter: `jumpSite`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEJumpFar`


## Method: createJumpFar
- parameter: `jumpSite`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `condition`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEJumpFar`


## Method: createMem
- parameter: `opaddr`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEMem`


## Method: createMem
- parameter: `segment`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `opaddr`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEMem`


## Method: createNop
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IENop`


## Method: createNop
- parameter: `template`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IENop`


## Method: createOperation
- parameter: `optype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.OperationType`
- parameter: `op1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEOperation`


## Method: createOperation
- parameter: `optype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.OperationType`
- parameter: `op1`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `op2`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEOperation`


## Method: createOperation
- parameter: `functionOptype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.FunctionOptype`
- parameter: `opnds`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric[]`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEOperation`


## Method: createResizeOperation
- parameter: `opnd`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `bitsize`, type: `int`
- parameter: `signed`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEOperation`

Description: Create a resize operation operation: truncation, zero\-extension, or sign\-extension.
parameter: opnd: the source to be extended \(`dstSize > srcSize`\) or truncated            \(`dstSize < srcSize`\)
parameter: bitsize: the destination size; should be different than the source's
parameter: signed: for extensions, else N/A
return: the operation IRE

## Method: createReturn
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEReturn`


## Method: createReturn
- parameter: `value`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEReturn`


## Method: createReturn
- parameter: `values`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEReturn`


## Method: createStackReference
- parameter: `stkVarOffset`, type: `long`
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve or create a stack reference, ie a pointer to stack\-memory variable.
parameter: stkVarOffset: stack offset
parameter: type: optional type
return: 

## Method: createStackReference
- parameter: `stkVarOffset`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve or create a stack reference, ie a pointer to stack\-memory variable.
parameter: stkVarOffset: stack offset
return: 

## Method: createSwitch
- parameter: `controlExpression`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `defaultAddress`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IESwitch`


## Method: createSymbolForField
- parameter: `variable`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeFieldItem`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`


## Method: createSymbolForGlobalVariable
- parameter: `variable`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeDataItem`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`


## Method: createSymbolForRoutine
- parameter: `routine`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeMethodItem`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`


## Method: createUntranslatedInstruction
- parameter: `nativeAddress`, type: `long`
- parameter: `nativeMnemonic`, type: `java.lang.String`
- parameter: `irOperands`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric[]`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEUntranslatedInstruction`


## Method: createUntranslatedInstruction
- parameter: `nativeAddress`, type: `long`
- parameter: `nativeMnemonic`, type: `java.lang.String`
- parameter: `irOperands`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEUntranslatedInstruction`


## Method: createVar
- parameter: `name`, type: `java.lang.String`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Create a special routine\-scope variable. The variable id is in the \[[SPECIAL](IEVar#IDL_SPECIAL), [SPECIAL\_END](IEVar#IDL_SPECIAL_END)\] range. 

 Clients should avoid using this method. Non\-stack routine\-scope variables created by third\-party code should generally be in the VIRTUAL range. See the [#createVirtualVar(String, int)](#createVirtualVar(String, int)) method.
parameter: name: 
parameter: bitsize: 
return: 

## Method: createVirtualVar
- parameter: `name`, type: `java.lang.String`
- parameter: `bitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Create a virtual routine\-scope variable. The variable id is in the \[[VIRTUAL](IEVar#IDL_VIRTUAL), [VIRTUAL\_END](IEVar#IDL_VIRTUAL_END)\] range.
parameter: name: 
parameter: bitsize: 
return: 

## Method: getCfg
- return type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`


## Method: getConverter
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IEConverter<?>`


## Method: getCopiesOfVariable
- parameter: `id`, type: `int`
- return type: `java.util.Set<java.lang.Integer>`

Description: Get the set of all variables that are copies or partial copies of the provided input id. The input id may be of a copy variable itself, in which case, this method is equivalent as retrieving the copies of its source. 

 The copies returned is a list of vars entirely contained in the input var.
parameter: id: input id
return: a set of id, including self if it was a copy

## Method: getCopiesUsingVariable
- parameter: `id`, type: `int`
- return type: `java.util.Set<java.lang.Integer>`

Description: Get the set of all variables making use of the provided variable. 

 The copies returned is a list of vars whose overlap with the input var is non\-null.
parameter: id: input id
return: a set of id, including self if it was a copy

## Method: getData
- parameter: `key`, type: `java.lang.Object`
- return type: `java.lang.Object`

Description: Retrieve a piece of transient data.
parameter: key: 
return: 

## Method: getDecompiler
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.INativeDecompilerContext`

Description: Convenience method to retrieve a reference to the decompiler that owns this context. That is, the decompiler that owns the IR converter that originally created this IR context\).
return: a reference to a decompiler \(likely, a [INativeDecompilerUnit](INativeDecompilerUnit)\), or null

## Method: getDuplicatesForRegister
- parameter: `regId`, type: `int`
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`

Description: Retrieve the list of duplicates \(mirror, secondary dups\) associated to a register.
parameter: regId: id of a register\-EVar
return: a list \(possibly empty\), or null if the id was not a legal register\-EVar id

## Method: getGlobalContext
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IEGlobalContext`


## Method: getInputVariableForRegister
- parameter: `dfa`, type: `com.pnfsoftware.jeb.core.units.code.IDFA<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- parameter: `nativeRegId`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`

Description: 
parameter: dfa: 
parameter: nativeRegId: the id of a native register \(per the processor's register bank definition;            do not confuse this with [IEVar](IEVar)\-register id\)
return: 

## Method: getInputVariableForRegister
- parameter: `dfa`, type: `com.pnfsoftware.jeb.core.units.code.IDFA<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- parameter: `reg`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`

Description: 
parameter: dfa: 
parameter: reg: 
return: 

## Method: getIntermediateOffsetsMappingToNativeAddress
- parameter: `address`, type: `long`
- return type: `java.util.List<java.lang.Long>`


## Method: getIntermediateOffsetsMappingToNativeAddresses
- parameter: `addresses`, type: `java.util.Collection<java.lang.Long>`
- return type: `java.util.List<java.lang.Long>`


## Method: getMemoryVariables
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`

Description: Retrieve the list of memory variables used by this context: stack variables and global variables.
return: 

## Method: getNativeContext
- return type: `com.pnfsoftware.jeb.core.units.code.asm.INativeContext`


## Method: getNotes
- return type: `java.util.List<java.lang.String>`

Description: 
return: 

## Method: getOutputVariableForRegister
- parameter: `dfa`, type: `com.pnfsoftware.jeb.core.units.code.IDFA<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- parameter: `exitAddress`, type: `long`
- parameter: `nativeRegId`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`

Description: 
parameter: dfa: 
parameter: exitAddress: 
parameter: nativeRegId: the id of a native register \(per the processor's register bank definition;            do not confuse this with [IEVar](IEVar)\-register id\)
return: 

## Method: getOutputVariableForRegister
- parameter: `dfa`, type: `com.pnfsoftware.jeb.core.units.code.IDFA<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- parameter: `exitAddress`, type: `long`
- parameter: `reg`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`

Description: 
parameter: dfa: 
parameter: exitAddress: 
parameter: reg: 
return: 

## Method: getProgramCounter
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve the PC variable used by this method.
return: 

## Method: getProgramCounterId
- return type: `int`

Description: Convenience method.
return: 

## Method: getPrototype
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardPrototype`

Description: Convenience method.
return: 

## Method: getRegisterMirror
- parameter: `reg`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve or create the mirror \- that is, the first full copy, in the \[[IEVar#IDL_MIRROR](IEVar#IDL_MIRROR), [IEVar#IDL_MIRROR_END](IEVar#IDL_MIRROR_END)\[ range \- of the provided register. 

 Note: A register [IEVar](IEVar) is global and non\-typeable. A mirror [IEVar](IEVar) is local and typeable.
parameter: reg: a register [IEVar](IEVar) \- the method will throw if not
return: the mirror [IEVar](IEVar), never null

## Method: getRoutine
- return type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeMethodItem`


## Method: getRoutineInputVariables
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric>`

Description: Retrieve the IR expressions holding the routine's parameters. May be used only after a decompilation has fully completed.
return: 

## Method: getRoutineVariablesInRange
- parameter: `idStart`, type: `int`
- parameter: `idEnd`, type: `int`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`

Description: 
parameter: idStart: 
parameter: idEnd: 
return: 

## Method: getSourceForVariable
- parameter: `id`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.VarSrc`

Description: 
parameter: id: a copy\-var id
return: the source or null \(only copy\-var have sources\)

## Method: getStackManager
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStackManager`

Description: Retrieve the manager for local IEVars representing physical stack variables \(in the general sense, ie memory slots\).
return: 

## Method: getStackPointer
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve the SP variable used by this method.
return: 

## Method: getStackPointerId
- return type: `int`

Description: Convenience method.
return: 

## Method: getStackReference
- parameter: `stkVarOffset`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve a stack reference, i.e. a pointer to stack\-memory variable.
parameter: stkVarOffset: stack offset
return: a local symbol var, null if none

## Method: getStackVariable
- parameter: `offset`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve the stack variable at the provided offset.
parameter: offset: 
return: 

## Method: getStackVariables
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`

Description: Retrieve the list of memory stack variables used by this context.
return: 

## Method: getStackVariables
- parameter: `offsetStart`, type: `int`
- parameter: `offsetEnd`, type: `int`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`

Description: Retrieve all defined stack variables whose \(starting\) offset are included in the provided range. Note that the last variable may span outside the range.
parameter: offsetStart: 
parameter: offsetEnd: must be greater than the start value
return: 

## Method: getStatements
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`

Description: Retrieve the raw list of converted IR\-statements. **Beware:** this list gets stale very quickly, as the decompiler deals with and optimizes an IR\-CFG \(initially built from this list\), instead.
return: the initial IR\-statements raw list

## Method: getUnderlyingRegisterId
- parameter: `varid`, type: `int`
- return type: `java.lang.Integer`

Description: Retrieve the id of the underlying IEVar\-register used to hold this variable.
parameter: varid: a variable id, which may or not be a register var
return: an id, null if the input variable does not originate from a register, or if it does         not fit on a single physical register \(which means that if the input varid is for a         copy of a pair of registers, this method will return null\)

## Method: getVariableById
- parameter: `id`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve a variable \(routine\-scope or global\-scope\) by id.
parameter: id: var id
return: the variable or null

## Method: getVariableByName
- parameter: `name`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Retrieve a routine\-scope variable by name.
parameter: name: var name
return: the variable or null

## Method: getWildcardTypeManager
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardTypeManager`


## Method: invalidateDataFlowAnalysis

Description: Invalidate all data flow analysis for the IR\-CFG managed by this context. Convenience method.

## Method: isAllowUnsafeAnalysis
- return type: `boolean`


## Method: log
- parameter: `format`, type: `java.lang.String`
- parameter: `args`, type: `java.lang.Object[]`


## Method: logUnsafeOpt
- parameter: `format`, type: `java.lang.String`
- parameter: `args`, type: `java.lang.Object[]`


## Method: removeNote
- parameter: `note`, type: `java.lang.String`
- return type: `boolean`

Description: 
parameter: note: 
return: 

## Method: removeStackReference
- parameter: `stkVarOffset`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Remove a stack reference.
parameter: stkVarOffset: 
return: 

## Method: retrieveVariableForRegister
- parameter: `reg`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `filters`, type: `java.util.Collection<java.lang.Integer>`
- parameter: `createIfNotFound`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`

Description: 
parameter: reg: a physical reg [IEVar](IEVar) or slice of physical register [IEVar](IEVar)
parameter: filters: list of candidates matching var ids
parameter: createIfNotFound: create a copy if not found
return: a copy of the physical input

## Method: setCfg
- parameter: `cfg`, type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.CFG<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`


## Method: setCustomPC
- parameter: `PC`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Set a PC override.
parameter: PC: program counter variable

## Method: setCustomSP
- parameter: `SP`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar`

Description: Set a SP override.
parameter: SP: stack pointer variable

## Method: setData
- parameter: `key`, type: `java.lang.Object`
- parameter: `value`, type: `java.lang.Object`

Description: Store a piece of transient data.
parameter: key: 
parameter: value: 

## Method: setPrototype
- parameter: `prototype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardPrototype`

Description: Convenience method.
parameter: prototype: 

## Method: setRoutine
- parameter: `routine`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeMethodItem`


## Method: setStatements
- parameter: `statements`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`

Description: Set the converted list of raw IR\-statements. A list of statements can only be assigned once, else this method will throw [IllegalStateException](IllegalStateException) \(however, this method may be called with the current list\).
parameter: statements: a list of statements coming out of a converter

## Method: setStatements
- parameter: `statements`, type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- parameter: `verifyStatements`, type: `boolean`
- parameter: `replaceLeftAssignSlices`, type: `boolean`
- parameter: `buildCfg`, type: `boolean`

Description: Set the converted list of raw IR\-statements.
parameter: statements: a list of statements coming out of a converter
parameter: verifyStatements: optional
parameter: replaceLeftAssignSlices: optional
parameter: buildCfg: optional

## Method: setTypeForSame
- parameter: `exp`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric`
- parameter: `type`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`


## Method: usesCopyVars
- return type: `boolean`

Description: 
return: 

