proc %counter.always.104.0 (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count) { 0: %1 = prb i4$ %count %count.shadow = var i4 %1 br %init init: %clk.prb = prb i1$ %clk wait %check, %clk check: %2 = prb i4$ %count st i4* %count.shadow, %2 %clk.prb1 = prb i1$ %clk %3 = const i1 0 %4 = eq i1 %clk.prb, %3 %5 = neq i1 %clk.prb1, %3 %posedge = and i1 %4, %5 br %posedge, %init, %event event: %reset.prb = prb i1$ %reset %6 = neq i1 %reset.prb, %3 %7 = const time 0s 1d br %6, %if_false, %if_true if_true: %8 = const i4 0 drv i4$ %count, %8, %7 br %0 if_false: %load.prb = prb i1$ %load %9 = neq i1 %load.prb, %3 br %9, %if_false1, %if_true1 if_true1: %data.prb = prb i4$ %data drv i4$ %count, %data.prb, %7 br %0 if_false1: %up_down.prb = prb i1$ %up_down %10 = neq i1 %up_down.prb, %3 %11 = const i32 0 %12 = const i32 1 br %10, %if_false2, %if_true2 if_true2: %count.shadow.ld = ld i4* %count.shadow %zext = inss i32 %11, i4 %count.shadow.ld, 0, 4 %13 = add i32 %zext, %12 %14 = exts i4, i32 %13, 0, 4 drv i4$ %count, %14, %7 br %0 if_false2: %count.shadow.ld1 = ld i4* %count.shadow %zext1 = inss i32 %11, i4 %count.shadow.ld1, 0, 4 %15 = sub i32 %zext1, %12 %16 = exts i4, i32 %15, 0, 4 drv i4$ %count, %16, %7 br %0 } entity @counter (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count) { inst %counter.always.104.0 (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count) }