# Class: com.pnfsoftware.jeb.core.units.code.asm.mangling.UnmanglerService

The service offers access to a set of [IManglingEngine](IManglingEngine) for a [INativeCodeUnit](INativeCodeUnit).

## Constructor: UnmanglerService
- parameter: `codeUnit`, type: `com.pnfsoftware.jeb.core.units.INativeCodeUnit<?>`


## Static Field: MANGLING_ENGINE_CXXA
Type: `int`

Constant value: `4`

## Static Field: MANGLING_ENGINE_MSVC
Type: `int`

Constant value: `1`

## Static Field: MANGLING_ENGINE_MSVCPP
Type: `int`

Constant value: `2`

## Static Field: MANGLING_ENGINE_MSVCPP_V2
Type: `int`

Constant value: `3`

## Method: getRegisteredEngine
- parameter: `manglingEngineId`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.mangling.IManglingEngine`


## Method: importUnmangledRoutineName
- parameter: `routine`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeMethodItem`
- parameter: `mangledName`, type: `java.lang.String`
- parameter: `unmangledRoutine`, type: `com.pnfsoftware.jeb.core.units.code.asm.mangling.IUnmangledRoutine`
- parameter: `changeRoutineName`, type: `boolean`
- return type: `boolean`

Description: Applies unmangled routine declaration to a native routine item. This method only takes care of applying the name\-related changes, i.e. setting the new routine name and the related attributes. 

 See [UnmanglerService#importUnmangledRoutinePrototype(INativeCodeUnit, INativeMethodItem, IUnmangledRoutine)](UnmanglerService#importUnmangledRoutinePrototype(INativeCodeUnit, INativeMethodItem, IUnmangledRoutine)).
parameter: routine: 
parameter: mangledName: the mangled declaration for this routine
parameter: unmangledRoutine: the unmangled declaration for this routine \(computed from the mangled            name\)
parameter: changeRoutineName: if true the name of the routine will be changed, otherwise it will            be kept as\-is and only the attributes will be set
return: true if the import was successfully done, false otherwise

## Method: importUnmangledRoutinePrototype
- parameter: `routine`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeMethodItem`
- parameter: `unmangledRoutine`, type: `com.pnfsoftware.jeb.core.units.code.asm.mangling.IUnmangledRoutine`
- return type: `boolean`

Description: Applies unmangled routine declaration to a native routine item. This method only takes care of applying the prototype change. 

 **important**: 
 
- only strict C prototypes are applied 
- mangled prototypes usually do not contain attributes, such as noreturn. Therefore the typelib prototype should be preferred to this one, if existing. 

 

 See [UnmanglerService#importUnmangledRoutineName(INativeMethodItem, IUnmangledRoutine)](UnmanglerService#importUnmangledRoutineName(INativeMethodItem, IUnmangledRoutine)).
parameter: routine: 
parameter: unmangledRoutine: 
return: true if the import was successfully done, false otherwise \(e.g. because the prototype         application failed\)

## Method: registerEngine
- parameter: `manglingEngineId`, type: `int`
- return type: `boolean`


## Method: unmangle
- parameter: `mangledName`, type: `java.lang.String`
- parameter: `returnFirstResult`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.mangling.IUnmangledData`

Description: Unmangle a mangled string.
parameter: mangledName: 
parameter: returnFirstResult: if true the first engine to provide a result will have the last            word, otherwise a result is returned only if all engines agree \(or provide no            result\)
return: unmangled string if the given string can be unmangled, null otherwise

## Method: unmangleData
- parameter: `mangledName`, type: `java.lang.String`
- parameter: `returnFirstResult`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.mangling.IUnmangledData`

Description: Unmangle a mangled string representing a data.
parameter: mangledName: 
parameter: returnFirstResult: if true the first engine to provide a result will have the last            word, otherwise a result is returned only if all engines agree \(or provide no            result\)
return: unmangled string if the given string can be unmangled **as a data**, null         otherwise

## Method: unmangleRoutine
- parameter: `mangledName`, type: `java.lang.String`
- parameter: `returnFirstResult`, type: `boolean`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.mangling.IUnmangledRoutine`

Description: Unmangle a mangled string representing a routine.
parameter: mangledName: 
parameter: returnFirstResult: if true the first engine to provide a result will have the last            word, otherwise a result is returned only if all engines agree \(or provide no            result\)
return: unmangled string if the given string can be unmangled **as a routine**, null         otherwise

## Method: unregisterAllEngines


## Method: unregisterEngine
- parameter: `manglingEngineId`, type: `int`
- return type: `boolean`


