program ideone;
var
b: Byte;
i: Integer;
serialn: String;
ProductId: String;
IdentCode: String;
LicenseKey: String;
HoldRegs: Array [1..19] of Byte = (0,$DF,32,$E8,83,$97,$B2,3,0,96,$9F,$9F,33,38,64,53,0,0,1);
begin
IdentCode := '';
LicenseKey := '';
serialn := 'PNSIFBHHAHDGDILIL4' + Chr(0) + Chr(0);
ProductId := 'MODPN2XV94501MB02';
for i := 1 to Length(ProductId) do
begin
b := Ord(serialn[i]) xor Ord(ProductId[i]);
b := (b mod 26) + 65;
IdentCode := IdentCode + Chr(b);
end;
IdentCode := IdentCode + Chr($32);
for i := 1 to 17 do
begin
b := Ord(IdentCode[i]) xor HoldRegs[i] xor i;
b := (b mod 26) + 65;
LicenseKey := LicenseKey + Chr(b);
end;
LicenseKey := LicenseKey + Chr($0);
Writeln('IDENT CODE: ' + IdentCode);
Writeln('LICENSE KEYE: ' + LicenseKey);
end.
cHJvZ3JhbSBpZGVvbmU7Cgp2YXIKCmI6IEJ5dGU7CgppOiBJbnRlZ2VyOwoKc2VyaWFsbjogU3RyaW5nOwoKUHJvZHVjdElkOiBTdHJpbmc7CgpJZGVudENvZGU6IFN0cmluZzsKCkxpY2Vuc2VLZXk6IFN0cmluZzsKCkhvbGRSZWdzOiBBcnJheSBbMS4uMTldIG9mIEJ5dGUgPSAoMCwkREYsMzIsJEU4LDgzLCQ5NywkQjIsMywwLDk2LCQ5RiwkOUYsMzMsMzgsNjQsNTMsMCwwLDEpOwoKYmVnaW4KCklkZW50Q29kZSA6PSAnJzsKCkxpY2Vuc2VLZXkgOj0gJyc7CgpzZXJpYWxuIDo9ICdQTlNJRkJISEFIREdESUxJTDQnICsgQ2hyKDApICsgQ2hyKDApOwoKUHJvZHVjdElkIDo9ICdNT0RQTjJYVjk0NTAxTUIwMic7CgoKCiAKCmZvciBpIDo9IDEgdG8gTGVuZ3RoKFByb2R1Y3RJZCkgZG8KCmJlZ2luCgogYiA6PSBPcmQoc2VyaWFsbltpXSkgeG9yIE9yZChQcm9kdWN0SWRbaV0pOwoKIGIgOj0gKGIgbW9kIDI2KSArIDY1OwoKIElkZW50Q29kZSA6PSBJZGVudENvZGUgKyBDaHIoYik7CgplbmQ7CgpJZGVudENvZGUgOj0gSWRlbnRDb2RlICsgQ2hyKCQzMik7CgogCgoKCmZvciBpIDo9IDEgdG8gMTcgZG8KCmJlZ2luCgogYiA6PSBPcmQoSWRlbnRDb2RlW2ldKSB4b3IgSG9sZFJlZ3NbaV0geG9yIGk7CgogYiA6PSAoYiBtb2QgMjYpICsgNjU7CgogTGljZW5zZUtleSA6PSBMaWNlbnNlS2V5ICsgQ2hyKGIpOwoKZW5kOwoKTGljZW5zZUtleSA6PSBMaWNlbnNlS2V5ICsgQ2hyKCQwKTsKCgoKCgpXcml0ZWxuKCdJREVOVCBDT0RFOiAnICsgSWRlbnRDb2RlKTsKCldyaXRlbG4oJ0xJQ0VOU0UgS0VZRTogJyArIExpY2Vuc2VLZXkpOwoKZW5kLg==