sig
  type t
  val create : Cil_types.kernel_function -> Build.??.t
  val get_kf : Build.??.-> Cil_types.kernel_function
  type arg_nodes
  val get_states :
    Build.??.-> PdgTypes.data_state Cil_datatype.Stmt.Hashtbl.t
  val print_state : Format.formatter -> PdgTypes.data_state -> unit
  val empty_state : PdgTypes.data_state
  val bottom_state : PdgTypes.data_state
  val process_declarations :
    Build.??.->
    formals:Cil_types.varinfo list ->
    locals:Cil_types.varinfo list -> PdgTypes.data_state
  val process_asgn :
    Build.??.->
    PdgTypes.data_state ->
    Cil_types.stmt ->
    l_loc:Locations.Zone.t ->
    exact:bool ->
    l_dpds:Locations.Zone.t ->
    l_decl:Cil_datatype.Varinfo.Set.t ->
    r_dpds:Locations.Zone.t ->
    r_decl:Cil_datatype.Varinfo.Set.t -> PdgTypes.data_state
  val process_skip :
    Build.??.->
    PdgTypes.data_state -> Cil_types.stmt -> PdgTypes.data_state option
  val process_asm :
    Build.??.->
    PdgTypes.data_state -> Cil_types.stmt -> PdgTypes.data_state option
  val process_unreachable :
    Build.??.->
    PdgTypes.data_state -> Cil_types.stmt -> PdgTypes.data_state option
  val process_unreachable_call :
    Build.??.->
    PdgTypes.data_state -> Cil_types.stmt -> PdgTypes.data_state option
  val process_jump :
    Build.??.-> Cil_types.stmt -> bool * Cil_datatype.Stmt.Hptset.t -> unit
  val process_stmt_labels : Build.??.-> Cil_types.stmt -> unit
  val process_block : Build.??.-> Cil_types.stmt -> Cil_types.block -> unit
  val process_entry_point : Build.??.-> Cil_types.stmt list -> unit
  val process_jump_with_exp :
    Build.??.->
    Cil_types.stmt ->
    bool * Cil_datatype.Stmt.Hptset.t ->
    PdgTypes.data_state ->
    Locations.Zone.t -> Cil_datatype.Varinfo.Set.t -> unit
  val test_and_merge_states :
    old:PdgTypes.data_state ->
    PdgTypes.data_state -> bool * PdgTypes.data_state
  val process_call_node : Build.??.-> Cil_types.stmt -> unit
  val process_call_args :
    Build.??.->
    PdgTypes.data_state ->
    Cil_types.stmt ->
    (Locations.Zone.t * Cil_datatype.Varinfo.Set.t) list ->
    Build.??.arg_nodes
  val process_call_params :
    Build.??.->
    PdgTypes.data_state ->
    Cil_types.stmt ->
    Cil_types.kernel_function -> Build.??.arg_nodes -> PdgTypes.data_state
  val process_call_ouput :
    Build.??.->
    PdgTypes.data_state ->
    PdgTypes.data_state ->
    Cil_types.stmt ->
    int ->
    Locations.Zone.t ->
    bool -> Locations.Zone.t -> Locations.Zone.t -> PdgTypes.data_state
  val process_call_return :
    Build.??.->
    PdgTypes.data_state ->
    PdgTypes.data_state ->
    Cil_types.stmt ->
    l_loc:Locations.Zone.t ->
    exact:bool ->
    l_dpds:Locations.Zone.t ->
    l_decl:Cil_datatype.Varinfo.Set.t ->
    r_dpds:Locations.Zone.t -> Locations.Zone.t -> PdgTypes.data_state
  val add_retres :
    Build.??.->
    PdgTypes.data_state ->
    Cil_types.stmt ->
    Locations.Zone.t -> Cil_datatype.Varinfo.Set.t -> PdgTypes.data_state
  val store_last_state : Build.??.-> PdgTypes.data_state -> unit
  val finalize_pdg : Build.??.-> Function_Froms.t option -> PdgTypes.Pdg.t
end