def update(self, inBuf):
leninBuf = len(inBuf)<EOL>index = (self.count[<NUM_LIT:0>] >> <NUM_LIT:3>) & <NUM_LIT><EOL>self.count[<NUM_LIT:0>] = self.count[<NUM_LIT:0>] + (leninBuf << <NUM_LIT:3>)<EOL>if self.count[<NUM_LIT:0>] < (leninBuf << <NUM_LIT:3>):<EOL><INDENT>self.count[<NUM_LIT:1>] = self.count[<NUM_LIT:1>] + <NUM_LIT:1><EOL><DEDENT>self.count[<NUM_LIT:1>] = self.count[<NUM_LIT:1>] + (leninBuf >> <NUM_LIT>)<EOL>partLen = <NUM_LIT:64> - index<EOL>if leninBuf >= partLen:<EOL><INDENT>self.input[index:] = list(inBuf[:partLen])<EOL>self._transform(_bytelist2long(self.input))<EOL>i = partLen<EOL>while i + <NUM_LIT> < leninBuf:<EOL><INDENT>self._transform(_bytelist2long(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(). 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 moredata to
        the hashed string.