def update(self, inBuf):
leninBuf = len(inBuf)<EOL>index = (self.count[<NUM_LIT:1>] >> <NUM_LIT:3>) & <NUM_LIT><EOL>self.count[<NUM_LIT:1>] = self.count[<NUM_LIT:1>] + (leninBuf << <NUM_LIT:3>)<EOL>if self.count[<NUM_LIT:1>] < (leninBuf << <NUM_LIT:3>):<EOL><INDENT>self.count[<NUM_LIT:0>] = self.count[<NUM_LIT:0>] + <NUM_LIT:1><EOL><DEDENT>self.count[<NUM_LIT:0>] = self.count[<NUM_LIT:0>] + (leninBuf >> <NUM_LIT>)<EOL>partLen = <NUM_LIT:64> - index<EOL>if leninBuf >= partLen:<EOL><INDENT>self.input[index:] = list(inBuf[:partLen])<EOL>self._transform(_bytelist2longBigEndian(self.input))<EOL>i = partLen<EOL>while i + <NUM_LIT> < leninBuf:<EOL><INDENT>self._transform(_bytelist2longBigEndian(list(inBuf[i:i+<NUM_LIT:64>])))<EOL>i = i + <NUM_LIT:64><EOL><DEDENT>else:<EOL><INDENT>self.input = list(inBuf[i:leninBuf])<EOL><DEDENT><DEDENT>else:<EOL><INDENT>i = <NUM_LIT:0><EOL>self.input = self.input + list(inBuf)<EOL><DEDENT>
Add to the current message.

        Update the md5 object with the string arg. Repeated calls
        are equivalent to a single call with the concatenation of all
        the arguments, i.e. m.update(a); m.update(b) is equivalent
        to m.update(a+b).

        The hash is immediately calculated for all full blocks. The final
        calculation is made in digest(). It will calculate 1-2 blocks,
        depending on how much padding we have to add. This allows us to
        keep an intermediate value for the hash, so that we only need to
        make minimal recalculation if we call update() to add more data
        to the hashed string.