# Class: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.EMasterOptimizer

Standard master optimizer for [CFG](CFG) of [IEStatement](IEStatement) IR instructions. Comes with a bundle of standard expression optimizers, all registered in the [#DEFAULT_GROUP](#DEFAULT_GROUP). Additional optimizers can be registered. Refer to the constructor javadoc. Special use registers can be specified in order to improve the optimization rate of the dead\-code removal and expression substitution standard optimizers.

## Constructor: EMasterOptimizer
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`

Description: Create a standard IR master optimizer with no maximum runcount \(unsafe\).
parameter: ectx: optional default context; the target routine may be set after construction using            `setTarget(...)`

## Constructor: EMasterOptimizer
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `grp1NMaxRunCount`, type: `int`

Description: Create a standard IR master optimizer.
parameter: ectx: optional default context; the target routine may be set after construction using            `setTarget(...)`
parameter: grp1NMaxRunCount: maximum run count for the group \[1..N\]

## Constructor: EMasterOptimizer
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `grp1NMaxRunCount`, type: `int`
- parameter: `autoRegisterStandardOptimizers`, type: `boolean`

Description: Create a standard IR master optimizer.
parameter: ectx: optional default context; the target routine may be set after construction using            `setTarget(...)`
parameter: grp1NMaxRunCount: maximum run count for the group \[1..N\]
parameter: autoRegisterStandardOptimizers: 

## Static Field: EMPTY
Type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.EMasterOptimizer`

## Static Field: defaultMaxRunCount
Type: `int`
Description: no max

## Method: addDefaultInput
- parameter: `bit`, type: `int`
- parameter: `val`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEImm`


## Method: addDisregardedOutputBits
- parameter: `disregardedOutputBits`, type: `java.util.Collection<java.lang.Integer>`


## Method: addDisregardedOutputFilter
- parameter: `filter`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.IEOptFilterCanDiscard`


## Method: addDisregardedOutputVariables
- parameter: `disregardedOutputVars`, type: `java.util.Collection<? extends com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`


## Method: canDiscardReachingOutDefinition
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `insnAddress`, type: `long`
- parameter: `def`, type: `int`
- return type: `boolean`


## Method: canDiscardUnusedDefinition
- parameter: `ectx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `insnAddress`, type: `long`
- parameter: `def`, type: `int`
- return type: `boolean`


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


## Method: getDisregardedOutputRegisters
- return type: `java.util.Set<java.lang.Integer>`


## Protected Method: getTargetAddress
- parameter: `target`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- return type: `java.lang.String`


## Protected Method: onOptimizerException
- parameter: `ctx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `opt`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer<com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext>`
- parameter: `ex`, type: `java.lang.Exception`
- return type: `boolean`


## Protected Method: postAllOptimizationsCallback
- parameter: `ctx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`


## Protected Method: postOptimizationCallback
- parameter: `ctx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `e`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.OptimizerEntry<com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext>`
- parameter: `cnt`, type: `int`
- parameter: `executionTimeMs`, type: `long`


## Protected Method: preAllOptimizationsCallback
- parameter: `ctx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`


## Protected Method: preOptimizationCallback
- parameter: `ctx`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext`
- parameter: `e`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.OptimizerEntry<com.pnfsoftware.jeb.core.units.code.asm.decompiler.IERoutineContext>`


## Method: setDecryptorSupport
- parameter: `value`, type: `int`


