When link editing, use NEW as the response file. Also, be sure to specify MASM switch /a to force segment order as shown in CRYPT.MAP. ZZZ.OBJ is the stack segment and must be last because CRYPT manages its own memory and uses the stack registers to determine the beginning of available memory. More recent assemblers screw around with the order of segments to make everything more C-like, so you must use the switch. My preferred order is all code segments all data segments stack to facilitate debugging.