1. A method of deterring an attack on a tamper-resistant application program comprising: beginning execution of the tamper-resistant application program; loading a plurality of agents and starting a plurality of processing threads, each thread executing one of the agents; concurrently executing each agent substantially in parallel to produce a processing result for each agent for an iteration of a stage of protocol processing; storing each processing result in an entry in a buffer associated with each agent; repeating the executing and storing actions for multiple iterations of the protocol processing; when one of the agents stores a processing result in a last entry of the agent's buffer, combining processing results from the first entries of the buffers to produce a combined result; and if the combined result indicates an error, executing failure semantics.