Program keygen ; { program heading } uses crt ; { uses clause, similar to #include directive in c++ } var { variable declaration } temp1, i, name1, name4, temp2, temp3, temp5 : longint ; name2, name3, temp, temp4 : string ; begin clrscr ; { clear the screen } Writeln('Darts 95 v1.1 KeyGen by ManKind') ; { intro } Writeln('===============================') ; { part of intro } Write('Name: ') ; { input for name } Readln(name2) ; { assign inputed name into string variable name2 } if Length(name2) > 0 then { only calculate if name is inputed } begin { uppercase all the chars of name } for i := 1 to Length(name2) do begin name3 := name3 + Upcase(Chr(Ord(name2[i]))) ; end ; { main calculation here } for i := 1 to Length(name2) do { loop all chars of name } begin name4 := Ord(name3[i]) ; { name4 = ascii of current char of name } name4 := name4 and 255 ; { originally -> and edx, 000000FF } temp3 := name4 ; { assign value of name4 into temp3 } name4 := name4 * name4 ; { originally -> imul ebx, edx } temp2 := temp2 + name4 ; { originally -> add esi, ebx } temp5 := temp3 div 2 ; { originally -> sar ebx, 1 } temp2 := temp2 + temp5 ; { originally -> add esi, ebx } temp2 := temp2 - temp3 ; { originally -> sub esi, edx } end ; Write('Password: ') ; { output the password } Writeln(temp2) ; { same as above } Readln { exit to dos when the user press Enter } end else { if name's length is less than 1, then ask the user to try again } begin Writeln('Invalid name! Please try again!') ; { bad_boy message } Readln end ; end.