public void Round3(int blk)
        {
            int num = 16 * blk;

            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.H(this.m_b, this.m_c, this.m_d) + this.m_dd[num] + 1859775393, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.H(this.m_a, this.m_b, this.m_c) + this.m_dd[8 + num] + 1859775393, 9);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.H(this.m_d, this.m_a, this.m_b) + this.m_dd[4 + num] + 1859775393, 11);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.H(this.m_c, this.m_d, this.m_a) + this.m_dd[12 + num] + 1859775393, 15);
            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.H(this.m_b, this.m_c, this.m_d) + this.m_dd[2 + num] + 1859775393, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.H(this.m_a, this.m_b, this.m_c) + this.m_dd[10 + num] + 1859775393, 9);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.H(this.m_d, this.m_a, this.m_b) + this.m_dd[6 + num] + 1859775393, 11);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.H(this.m_c, this.m_d, this.m_a) + this.m_dd[14 + num] + 1859775393, 15);
            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.H(this.m_b, this.m_c, this.m_d) + this.m_dd[1 + num] + 1859775393, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.H(this.m_a, this.m_b, this.m_c) + this.m_dd[9 + num] + 1859775393, 9);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.H(this.m_d, this.m_a, this.m_b) + this.m_dd[5 + num] + 1859775393, 11);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.H(this.m_c, this.m_d, this.m_a) + this.m_dd[13 + num] + 1859775393, 15);
            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.H(this.m_b, this.m_c, this.m_d) + this.m_dd[3 + num] + 1859775393, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.H(this.m_a, this.m_b, this.m_c) + this.m_dd[11 + num] + 1859775393, 9);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.H(this.m_d, this.m_a, this.m_b) + this.m_dd[7 + num] + 1859775393, 11);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.H(this.m_c, this.m_d, this.m_a) + this.m_dd[15 + num] + 1859775393, 15);
        }
        public void Round2(int blk)
        {
            int num = 16 * blk;

            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.G(this.m_b, this.m_c, this.m_d) + this.m_dd[num] + 1518500249, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.G(this.m_a, this.m_b, this.m_c) + this.m_dd[4 + num] + 1518500249, 5);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.G(this.m_d, this.m_a, this.m_b) + this.m_dd[8 + num] + 1518500249, 9);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.G(this.m_c, this.m_d, this.m_a) + this.m_dd[12 + num] + 1518500249, 13);
            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.G(this.m_b, this.m_c, this.m_d) + this.m_dd[1 + num] + 1518500249, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.G(this.m_a, this.m_b, this.m_c) + this.m_dd[5 + num] + 1518500249, 5);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.G(this.m_d, this.m_a, this.m_b) + this.m_dd[9 + num] + 1518500249, 9);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.G(this.m_c, this.m_d, this.m_a) + this.m_dd[13 + num] + 1518500249, 13);
            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.G(this.m_b, this.m_c, this.m_d) + this.m_dd[2 + num] + 1518500249, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.G(this.m_a, this.m_b, this.m_c) + this.m_dd[6 + num] + 1518500249, 5);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.G(this.m_d, this.m_a, this.m_b) + this.m_dd[10 + num] + 1518500249, 9);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.G(this.m_c, this.m_d, this.m_a) + this.m_dd[14 + num] + 1518500249, 13);
            this.m_a = OfficeImageHasher.Rotintlft(this.m_a + OfficeImageHasher.G(this.m_b, this.m_c, this.m_d) + this.m_dd[3 + num] + 1518500249, 3);
            this.m_d = OfficeImageHasher.Rotintlft(this.m_d + OfficeImageHasher.G(this.m_a, this.m_b, this.m_c) + this.m_dd[7 + num] + 1518500249, 5);
            this.m_c = OfficeImageHasher.Rotintlft(this.m_c + OfficeImageHasher.G(this.m_d, this.m_a, this.m_b) + this.m_dd[11 + num] + 1518500249, 9);
            this.m_b = OfficeImageHasher.Rotintlft(this.m_b + OfficeImageHasher.G(this.m_c, this.m_d, this.m_a) + this.m_dd[15 + num] + 1518500249, 13);
        }
 public override string ToString()
 {
     return(OfficeImageHasher.Tohex(this.m_a) + OfficeImageHasher.Tohex(this.m_b) + OfficeImageHasher.Tohex(this.m_c) + OfficeImageHasher.Tohex(this.m_d));
 }