using System.Collections.Generic;
public static void Main()
for(int i = 32; i >= 0; i--) {
var zeroIndecies = new List<int>();
for(int i = 0; i < firstBit; i++) {
if(((flag >> i) & 1) == 0) {
var numOneBits = (firstBit + 1) - zeroIndecies.Count;
var numResults = (int)Math.Pow(2, numOneBits);
var output = new uint[numResults - 1];
for(uint i = 1; i < numResults; i++) {
for(var k = 0; k < zeroIndecies.Count; k++) {
int bitIndex = zeroIndecies[k];
uint preChunk = temp & ~(~(uint)0 << bitIndex);
for(var i = 0; i < output.Length; i++) {
Console.WriteLine(Convert.ToString(output[i], 2).PadLeft(6, '0'));