# Interface: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.IEMasterOptimizer

Base interface for IR master optimizers. The standard implementation is [EMasterOptimizer](EMasterOptimizer).

## 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`

Description: Check if an unused variable definition, bleeding out from the routine, may be safely discarded. 

 The implementation may depend on the master optimizer's [mode](#getMode()).
parameter: ectx: 
parameter: insnAddress: instruction address
parameter: def: defined, unused variable
return: 

## 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`

Description: Check if an unused variable definition, **not** bleeding out from the routine, may be safely discarded. 

 The implementation may depend on the master optimizer's [mode](#getMode()).
parameter: ectx: 
parameter: insnAddress: instruction address
parameter: def: defined, unused variable
return: 

## 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>`


