sig
  val var_id : int Pervasives.ref
  val areEnvironmentEqual :
    Types.abstrEnvironment Pervasives.ref ->
    Types.abstrEnvironment Pervasives.ref -> bool
  val wideningOnEnvironments :
    Types.abstrEnvironment Pervasives.ref ->
    Types.abstrEnvironment Pervasives.ref ->
    Types.abstrEnvironment Pervasives.ref
  val environmentJoin :
    Types.abstrEnvironment Pervasives.ref ->
    Types.abstrEnvironment Pervasives.ref ->
    Types.abstrEnvironment Pervasives.ref
  val contextMerge :
    Types.abstrContext -> Types.abstrContext -> Types.abstrContext
  val forgetNewVariables :
    lastContext:Types.abstrContext ->
    newContext:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> unit
  val environmentMeet :
    Types.abstrEnvironment Pervasives.ref ->
    Types.abstrEnvironment Pervasives.ref ->
    Types.abstrEnvironment Pervasives.ref
  val getVar :
    context:Types.abstrContext ->
    vn:Types.name_var ->
    env:Types.abstrEnvironment Pervasives.ref -> Types.abstrD
  val lfp :
    env:Types.abstrEnvironment Pervasives.ref ->
    e1:(Types.abstrContext * Types.memoryStack ->
        Types.abstrContext * Types.memoryStack) ->
    Types.abstrContext * Types.memoryStack -> Types.memoryStack
  val addVarToContext :
    vn:Types.name_var ->
    value:Types.abstrD ->
    env:Types.abstrEnvironment Pervasives.ref ->
    Types.abstrContext -> Types.abstrContext
  val updateVarInContext :
    vn:Types.name_var ->
    value:Types.abstrD ->
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> unit
  val getAsmValue :
    ae:Types.asm_expr ->
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> Types.abstrD
  val getLastFunction :
    l:Types.loc ->
    f:Types.functionContext Pervasives.ref ->
    Types.global_statement * Types.abstrContext
  val joinMemoryStack :
    s1:Types.memoryStack -> s2:Types.memoryStack -> Types.memoryStack
  val initFunction :
    cCall:bool -> callStack:Types.callStack Pervasives.ref -> unit
  val postlude_asm :
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> Types.abstrContext
  val raiseReturn :
    cCall:bool ->
    addReturnPossibility:bool ->
    returnCode:Types.abstrD ->
    returnContext:Types.abstrContext ->
    returnEnv:Types.abstrEnvironment Pervasives.ref ->
    callStack:Types.callStack Pervasives.ref ->
    stack:Types.memoryStack -> unit
  val abexpBoolBin :
    Types.abstrEnvironment Pervasives.ref * bool ->
    Types.boolOpBoolBin ->
    Types.abstrEnvironment Pervasives.ref * bool ->
    Types.abstrEnvironment Pervasives.ref * bool
  val faexp :
    a:Types.arith_expr ->
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> Types.abstrD
  val baexp :
    a:Types.arith_expr ->
    context:Types.abstrContext ->
    p:Types.abstrD -> env:Types.abstrEnvironment Pervasives.ref -> bool
  val abexp :
    b:Types.bool_expr ->
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> bool
  val matchCArgs :
    args_def:Types.arguments ->
    args:Types.arith_expr list ->
    contextToEnhance:Types.abstrContext ->
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> Types.abstrContext
  val matchAsmArgs :
    context:Types.abstrContext ->
    args_def:Types.arguments ->
    stack:Types.memoryStack ->
    env:Types.abstrEnvironment Pervasives.ref ->
    Types.abstrContext * Types.memoryStack
  val prelude_asm :
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> Types.abstrContext
  val reset_registers :
    context:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref ->
    eax_value:Types.abstrD -> unit
  val setRegisters :
    realContext:Types.abstrContext ->
    contextWithRegs:Types.abstrContext ->
    env:Types.abstrEnvironment Pervasives.ref -> unit
  val aPostAsm :
    Types.loc * Types.stat_a * Types.loc ->
    shouldGoBackOnJmp:bool ->
    f:Types.functionContext Pervasives.ref ->
    callStack:Types.callStack Pervasives.ref ->
    stack:Types.memoryStack ->
    env:Types.abstrEnvironment Pervasives.ref ->
    context:Types.abstrContext -> Types.abstrContext * Types.memoryStack
  val aPostAsmBlock :
    Types.loc * (Types.stat_a * Types.loc) list ->
    shouldGoBackOnJmp:bool ->
    f:Types.functionContext Pervasives.ref ->
    callStack:Types.callStack Pervasives.ref ->
    stack:Types.memoryStack ->
    env:Types.abstrEnvironment Pervasives.ref ->
    Types.abstrContext -> Types.abstrContext * Types.memoryStack
  val aPostCBlock :
    Types.loc_stat_c ->
    shouldGoBackOnJmp:bool ->
    f:Types.functionContext Pervasives.ref ->
    callStack:Types.callStack Pervasives.ref ->
    lastAsmStack:Types.memoryStack ->
    env:Types.abstrEnvironment Pervasives.ref ->
    context:Types.abstrContext -> Types.abstrContext * Types.memoryStack
  val aPostC :
    Types.loc * Types.stat_c * Types.loc ->
    shouldGoBackOnJmp:bool ->
    f:Types.functionContext Pervasives.ref ->
    callStack:Types.callStack Pervasives.ref ->
    lastAsmStack:Types.memoryStack ->
    env:Types.abstrEnvironment Pervasives.ref ->
    context:Types.abstrContext -> Types.abstrContext * Types.memoryStack
  val aPostGlobalC :
    pre_loc:Types.loc ->
    stat:Types.global_statement ->
    post_loc:Types.loc ->
    f:Types.functionContext Pervasives.ref ->
    env:Types.abstrEnvironment Pervasives.ref ->
    Types.abstrContext -> Types.abstrContext
  val aPostProgram :
    pre_loc:Types.loc ->
    program:(Types.global_statement * Types.loc) list ->
    f:Types.functionContext Pervasives.ref ->
    env:Types.abstrEnvironment Pervasives.ref ->
    Types.abstrContext -> Types.abstrContext
end