- // MIR for `foo` before MatchBranchSimplification
+ // MIR for `foo` after MatchBranchSimplification
  
  fn foo(_1: [u8; 16]) -> Option<[u8; 4]> {
      debug bytes => _1;
      let mut _0: std::option::Option<[u8; 4]>;
      let _2: [u32; 4];
      let mut _3: [u8; 16];
      let mut _5: [u8; 4];
      let mut _6: u32;
      scope 1 {
          debug dwords => _2;
          scope 2 {
              debug ip => _4;
              let _4: u32;
          }
      }
  
      bb0: {
          StorageLive(_2);
          StorageLive(_3);
          _3 = copy _1;
          _2 = move _3 as [u32; 4] (Transmute);
          StorageDead(_3);
          switchInt(copy _2[0 of 4]) -> [0: bb1, otherwise: bb4];
      }
  
      bb1: {
          switchInt(copy _2[1 of 4]) -> [0: bb2, otherwise: bb4];
      }
  
      bb2: {
          switchInt(copy _2[2 of 4]) -> [0: bb3, 4294901760: bb3, otherwise: bb4];
      }
  
      bb3: {
          StorageLive(_4);
          _4 = copy _2[3 of 4];
          StorageLive(_5);
          StorageLive(_6);
          _6 = copy _4;
          _5 = move _6 as [u8; 4] (Transmute);
          StorageDead(_6);
          _0 = Option::<[u8; 4]>::Some(move _5);
          StorageDead(_5);
          StorageDead(_4);
          goto -> bb5;
      }
  
      bb4: {
          _0 = Option::<[u8; 4]>::None;
          goto -> bb5;
      }
  
      bb5: {
          StorageDead(_2);
          return;
      }
  }
  
