# Interface: com.pnfsoftware.jeb.core.units.code.asm.analyzer.INativeCodeModel

Memory model manager for [native code unit](INativeCodeUnit), normally handled by a [code analyzer](INativeCodeAnalyzer).

## Method: getBasicBlockHeader
- parameter: `address`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.BasicBlock<InsnType>`

Description: Retrieve a basic block header at the given address.
parameter: address: address to query
return: basic block, or null

## Method: getCallGraphManager
- return type: `com.pnfsoftware.jeb.core.units.code.asm.analyzer.ICallGraphManager`

Description: Get the call graph manager.
return: call graph manager

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

Description: Get the list of routines which contain the instruction at the given address. The address must be the exact address of an instruction. If the address is the routine header or any instruction contained in a routine header block, then the returned list will contain a single element. For other addresses, the returned list may contain more than one address, for cases where a basic block is used among two or more routines. Note that this is not the norm; compiler\-generated code generates routines whose code do not overlap with other routines, for most cases.
parameter: address: instruction address
return: a list, potentially empty

## Method: getReferenceManager
- return type: `com.pnfsoftware.jeb.core.units.code.asm.analyzer.IReferenceManager`

Description: Get the reference manager.
return: reference manager

## Method: getRoutineAddresses
- return type: `java.util.List<java.lang.Long>`

Description: Get routine header addresses.
return: routine addresses

## Method: isBasicBlockHeader
- parameter: `address`, type: `long`
- return type: `boolean`

Description: Determine whether an address is a basic block header.
parameter: address: address to query
return: true if the address is a basic block header

## Method: isRoutineHeader
- parameter: `address`, type: `long`
- return type: `boolean`

Description: Determine whether an address is a routine header.
parameter: address: address to query
return: true if the address is a routine header

