anchor.diff:     endaction
      action
         let data_this_cycle = packet_in_wire;
  -      Vector#(128, Bit#(1)) curr_meta = takeAt(16, unpack(byteSwap(pack(ipv4_meta.first))));
  -      Vector#(128, Bit#(1)) curr_mask = takeAt(16, unpack(byteSwap(pack(ipv4_mask.first))));
  +      Vector#(128, Bit#(1)) curr_meta = takeAt(16, unpack(byteSwap(pack(meta_fifo.first))));
  +      Vector#(128, Bit#(1)) curr_mask = takeAt(16, unpack(byteSwap(pack(mask_fifo.first))));
         let masked_data = data_this_cycle.data & pack(curr_mask);
         let curr_data = masked_data | pack(curr_meta);
         data_this_cycle.data = curr_data;
  
positive.code:       let data_this_cycle <- toGet(deparse_ethernet_fifo).get;
        Vector#(112, Bit#(1)) last_data = takeAt(0, unpack(data_this_cycle.data));
        Vector#(16, Bit#(1)) data = takeAt(112, unpack(data_this_cycle.data));
        Vector#(16, Bit#(1)) curr_meta = takeAt(0, unpack(byteSwap(pack(ipv4_meta.first))));
        Vector#(16, Bit#(1)) curr_mask = takeAt(0, unpack(byteSwap(pack(ipv4_mask.first))));
        let masked_data = pack(data) & pack(curr_mask);
        let out_data = masked_data | pack(curr_meta);
        $display("(%0d) IPv4: [1] ", $time, fshow(data_this_cycle), " meta=%h, mask=%h", curr_mask, curr_meta);
  
negative.code: endinstance
  
  module mkStateStart#(Reg#(ParserState) state, FIFOF#(EtherData) datain, Wire#(Bool) start_fsm)(Empty);
      rule load_packet if (state==StateStart);
          let v = datain.first;
          if (v.sop) begin
  