private void RewriteCall(Statement stm, CallInstruction call)
{
var e = expander.Expand(call.Callee);
var pt = e.Accept(asc) as Pointer;
if (pt == null)
{
return;
}
var ft = pt.Pointee as FunctionType;
if (ft == null)
{
return;
}
var returnId = ft.ReturnValue.DataType is VoidType ?
null : ft.ReturnValue;
var sigCallee = new ProcedureSignature(returnId, ft.Parameters);
var ab = new ApplicationBuilder(
program.Architecture, proc.Frame, call.CallSite,
call.Callee, sigCallee, true);
stm.Instruction = ab.CreateInstruction();
ssaIdTransformer.Transform(stm, call);
}