private bool TryGetNoDecompiledParsedProcedure(Address addr, out Procedure_v1 parsedProc)
{
Procedure_v1 sProc;
if (!TryGetNoDecompiledProcedure(addr, out sProc))
{
parsedProc = null;
return false;
}
if (noDecompiledProcs.TryGetValue(addr, out parsedProc))
return true;
parsedProc = new Procedure_v1()
{
Name = sProc.Name,
};
noDecompiledProcs[addr] = parsedProc;
if (string.IsNullOrEmpty(sProc.CSignature))
{
Warn(addr, "The user-defined procedure at address {0} did not have a signature.", addr);
return true;
}
var usb = new UserSignatureBuilder(program);
var procDecl = usb.ParseFunctionDeclaration(sProc.CSignature);
if (procDecl == null)
{
Warn(addr, "The user-defined procedure signature at address {0} could not be parsed.", addr);
return true;
}
parsedProc.Signature = procDecl.Signature;
return true;
}