See this post of mine first (from today):
Now the promised source code:
// tonywank
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main (){
char data[] = {0x4, 0x3, 0x6, 0x4, 0x0, 0x0, 0x5, 0x7, 0x7, 0x3, 0x4, 0x0, 0x0, 0x5, 0x5, 0x1, 0x3, 0x7, 0x6, 0x7, 0x7, 0x2, 0x8,
0x5, 0x3, 0x5, 0x8, 0x4, 0x8, 0x8, 0x0, 0x8, 0x5, 0x3, 0x9, 0x3, 0x3, 0x5, 0x4, 0x4, 0x6, 0x2, 0x3, 0x9, 0x3, 0x1,
0x6, 0x9, 0x0, 0x5, 0x8, 0x5, 0x0, 0x3, 0x6, 0x2, 0x1, 0x7, 0x8, 0x1, 0x7, 0x1, 0x0, 0x1, 0x7, 0x7, 0x7, 0x2, 0x3,
0x6, 0x3, 0x1, 0x1, 0x0, 0x5, 0x3, 0x7, 0x3, 0x8, 0x0, 0x7, 0x4, 0x0, 0x3, 0x1, 0x9, 0x1, 0x1, 0x4, 0x5, 0x0, 0x1,
0x4, 0x3, 0x0, 0x9, 0x6, 0x5, 0x9, 0x0, 0x2, 0x9, 0x3, 0x0, 0x5, 0x0, 0x5, 0x8, 0x9, 0x3, 0x4, 0x2, 0x0, 0x6, 0x9,
0x0, 0x3, 0x5, 0x4, 0x6, 0x1, 0x0, 0x0, 0x1, 0x9, 0x6, 0x0, 0x7, 0x2, 0x7, 0x9, 0x3, 0x4, 0x8, 0x6, 0x0, 0x1, 0x0,
0x9, 0x2, 0x0, 0x0, 0x7, 0x2, 0x8, 0x8, 0x7, 0x7, 0x1, 0x8, 0x2, 0x8, 0x2, 0x7, 0x7, 0x5, 0x0, 0x9, 0x9, 0x5, 0x4,
0x0, 0x5, 0x1, 0x0, 0x1, 0x1, 0x8, 0x3, 0x2, 0x0, 0x1, 0x0, 0x4, 0x5, 0x2, 0x5, 0x0, 0x6, 0x5, 0x9, 0x9, 0x8, 0x3,
0x9, 0x0, 0x8, 0x0, 0x1, 0x0, 0x0, 0x1, 0x5, 0x3, 0x8, 0x6, 0x5, 0x4, 0x3, 0x8, 0x8, 0x9, 0x9, 0x0, 0x4, 0x3, 0x3,
0x0, 0x4, 0x6, 0x1, 0x7, 0x6, 0x2, 0x9, 0x7, 0x8, 0x8, 0x0, 0x4, 0x3, 0x1, 0x6, 0x4, 0x6, 0x2, 0x0, 0x8, 0x2, 0x1,
0x2, 0x7, 0x7, 0x8, 0x4, 0x1, 0x7, 0x6, 0x9, 0x1, 0x9, 0x0, 0x8, 0x0, 0x0, 0x5, 0x6, 0x0, 0x9, 0x7, 0x4, 0x9, 0x9,
0x1, 0x8, 0x7, 0x2, 0x9, 0x1, 0x4, 0x6, 0x0, 0x2, 0x6, 0x7, 0x7, 0x3, 0x8, 0x3, 0x7, 0x7, 0x6, 0x5, 0x4, 0x3, 0x0,
0x9, 0x8, 0x8, 0x8, 0x4, 0x8, 0x6, 0x3, 0x4, 0x3, 0x4, 0x6, 0x7, 0x7, 0x2, 0x2, 0x9, 0x6, 0x5, 0x0, 0x9, 0x5, 0x7,
0x6, 0x5, 0x3, 0x1, 0x6, 0x5, 0x1, 0x2, 0x5, 0x3, 0x0, 0x1, 0x2, 0x1, 0x3, 0x3, 0x9, 0x9, 0x0, 0x8, 0x0, 0x6, 0x4,
0x7, 0x2, 0x6, 0x3, 0x1, 0x1, 0x6, 0x0, 0x6, 0x4, 0x8, 0x5, 0x7, 0x2, 0x2, 0x7, 0x7, 0x5, 0x1, 0x1, 0x2, 0x8, 0x8,
0x7, 0x8, 0x1, 0x2, 0x5, 0x7, 0x2, 0x2, 0x5, 0x9, 0x2, 0x1, 0x9, 0x8, 0x0, 0x4, 0x3, 0x5, 0x2, 0x4, 0x5, 0x0, 0x5,
0x8, 0x8, 0x5, 0x2, 0x1, 0x6, 0x6, 0x6, 0x5, 0x4, 0x9, 0x8, 0x9, 0x7, 0x0, 0x2, 0x3, 0x5, 0x6, 0x1, 0x2, 0x1, 0x5,
0x0, 0x3, 0x5, 0x1, 0x8, 0x7, 0x9, 0x0, 0x7, 0x5, 0x8, 0x0, 0x1, 0x1, 0x2, 0x4, 0x1, 0x5, 0x5, 0x2, 0x2, 0x5, 0x1,
0x7, 0x8, 0x4, 0x1, 0x0, 0x9, 0x9, 0x8, 0x6, 0x2, 0x3, 0x6, 0x5, 0x7, 0x7, 0x9, 0x5, 0x8, 0x6, 0x4, 0x8, 0x4, 0x9,
0x2, 0x9, 0x2, 0x2, 0x0, 0x0, 0x1, 0x3, 0x4, 0x1, 0x9, 0x9, 0x5, 0x6, 0x3, 0x2, 0x5, 0x8, 0x0, 0x9, 0x3, 0x1, 0x0,
0x6, 0x8, 0x9, 0x2, 0x7, 0x9, 0x3, 0x3, 0x5, 0x7, 0x3, 0x5, 0x7, 0x6, 0x1, 0x6, 0x3, 0x1, 0x2, 0x3, 0x3, 0x9, 0x5,
0x0, 0x3, 0x4, 0x5, 0x3, 0x0, 0x2, 0x5, 0x1, 0x2, 0x1, 0x2, 0x7, 0x0, 0x9, 0x6, 0x9, 0x8, 0x4, 0x1, 0x0, 0x0, 0x5,
0x4, 0x3, 0x5, 0x1, 0x2, 0x9, 0x6, 0x3, 0x2, 0x2, 0x0, 0x1, 0x2, 0x1, 0x4, 0x9, 0x1, 0x8, 0x9, 0x5, 0x2, 0x6, 0x2,
0x1, 0x7, 0x2, 0x9, 0x3, 0x2, 0x0, 0x0, 0x2, 0x7, 0x1, 0x1, 0x5, 0x0, 0x1, 0x5, 0x5, 0x7, 0x2, 0x3, 0x0, 0x8, 0x9,
0x8, 0x4, 0x4, 0x0, 0x2, 0x4, 0x9, 0x6, 0x0, 0x4, 0x4, 0x3, 0x5, 0x1, 0x9, 0x6, 0x4, 0x2, 0x4, 0x3, 0x9, 0x9, 0x6,
0x7, 0x8, 0x8, 0x0, 0x2, 0x6, 0x3, 0x7, 0x1, 0x5, 0x0, 0x9, 0x2, 0x9, 0x2, 0x3, 0x5, 0x8, 0x0, 0x5, 0x5, 0x4, 0x4,
0x1, 0x7, 0x9, 0x7, 0x2, 0x1, 0x3, 0x7, 0x4, 0x1, 0x3, 0x2, 0x7, 0x5, 0x5, 0x0, 0x6, 0x0, 0x1, 0x3, 0x6, 0x0, 0x0,
0x9, 0x8, 0x5, 0x6, 0x9, 0x3, 0x0, 0x1, 0x5, 0x6, 0x8, 0x3, 0x0, 0x3, 0x3, 0x6, 0x0, 0x8, 0x3, 0x5, 0x1, 0x0, 0x9,
0x0, 0x9, 0x5, 0x3, 0x7, 0x5, 0x9, 0x6, 0x7, 0x2, 0x0, 0x9, 0x8, 0x7, 0x1, 0x8, 0x3, 0x7, 0x4, 0x9, 0x2, 0x9, 0x5,
0x1, 0x5, 0x6, 0x8, 0x8, 0x2, 0x8, 0x6, 0x0, 0x5, 0x3, 0x3, 0x9, 0x9, 0x8, 0x5, 0x2, 0x2, 0x2, 0x1, 0x1, 0x0, 0x0,
0x8, 0x9, 0x6, 0x7, 0x9, 0x4, 0x1, 0x5, 0x3, 0x1, 0x0, 0x7, 0x0, 0x5, 0x3, 0x4, 0x3, 0x8, 0x4, 0x7, 0x5, 0x3, 0x9,
0x2, 0x8, 0x4, 0x0, 0x0, 0x4, 0x4, 0x4, 0x1, 0x7, 0x7, 0x7, 0x0, 0x2, 0x3, 0x5, 0x0, 0x3, 0x7, 0x9, 0x7, 0x0, 0x0,
0x7, 0x7, 0x4, 0x6, 0x6, 0x0, 0x7, 0x8, 0x4, 0x3, 0x8, 0x5, 0x4, 0x1, 0x6, 0x6, 0x5, 0x6, 0x1, 0x5, 0x4, 0x7, 0x8,
0x2, 0x5, 0x1, 0x1, 0x6, 0x6, 0x7, 0x9, 0x4, 0x8, 0x0, 0x6, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x6, 0x5, 0x5, 0x4, 0x1,
0x7, 0x0, 0x6, 0x9, 0x2, 0x0, 0x9, 0x9, 0x5, 0x9, 0x4, 0x5, 0x1, 0x8, 0x8, 0x0, 0x1, 0x8, 0x6, 0x9, 0x1, 0x7, 0x3,
0x8, 0x8, 0x9, 0x8, 0x5, 0x1, 0x7, 0x3, 0x5, 0x6, 0x7, 0x8, 0x5, 0x3, 0x8, 0x3, 0x5, 0x6, 0x5, 0x9, 0x9, 0x3, 0x1,
0x5, 0x3, 0x8, 0x6, 0x6, 0x9, 0x0, 0x8, 0x8, 0x9, 0x6, 0x1, 0x0, 0x3, 0x9, 0x4, 0x4, 0x7, 0x6, 0x3, 0x9, 0x1, 0x5,
0x7, 0x1, 0x9, 0x0, 0x4, 0x9, 0x2, 0x0, 0x7, 0x9, 0x2, 0x3, 0x2, 0x2, 0x5, 0x6, 0x8, 0x6, 0x4, 0x6, 0x8, 0x5, 0x7,
0x7, 0x5, 0x9, 0x9, 0x6, 0x7, 0x7, 0x7, 0x8, 0x1, 0x4, 0x5, 0x3, 0x3, 0x0, 0x8, 0x8, 0x1, 0x4, 0x1, 0x8, 0x2, 0x0,
0x8, 0x0, 0x5, 0x8, 0x2, 0x6, 0x8, 0x6, 0x7, 0x2, 0x9, 0x3, 0x4, 0x9, 0x5, 0x4, 0x0, 0x8, 0x3, 0x1, 0x8, 0x3, 0x8,
0x2, 0x6, 0x8, 0x3, 0x0, 0x4, 0x7, 0x1, 0x7, 0x0, 0x7, 0x7, 0x4, 0x7, 0x2, 0x6, 0x7, 0x9, 0x3, 0x9, 0x5, 0x9, 0x2,
0x1, 0x5, 0x2, 0x1, 0x4, 0x5, 0x0, 0x8, 0x9, 0x8, 0x5, 0x1, 0x9, 0x0, 0x3, 0x1, 0x0, 0x0, 0x1, 0x5, 0x6, 0x8, 0x7,
0x3, 0x1, 0x4, 0x6, 0x0, 0x5, 0x5, 0x8, 0x1, 0x2, 0x2, 0x4, 0x4, 0x7, 0x9, 0x7, 0x5, 0x8, 0x2, 0x8, 0x9, 0x3, 0x3,
0x3, 0x3, 0x3, 0x4, 0x0, 0x4, 0x3, 0x1, 0x2, 0x5, 0x9, 0x8, 0x7, 0x4, 0x5, 0x4, 0x7, 0x3, 0x8, 0x2, 0x5, 0x9, 0x9,
0x6, 0x4, 0x1, 0x8, 0x8, 0x7, 0x9, 0x9, 0x3, 0x4, 0x6, 0x6, 0x6, 0x1, 0x8, 0x7, 0x2, 0x7, 0x0, 0x5, 0x3, 0x8, 0x4,
0x5, 0x9, 0x3, 0x3, 0x8, 0x9, 0x7, 0x8, 0x5, 0x6, 0x1, 0x9, 0x4, 0x9, 0x0, 0x5, 0x2, 0x5, 0x0, 0x1, 0x8, 0x5, 0x0,
0x4, 0x9, 0x9, 0x8, 0x3, 0x6, 0x7, 0x6, 0x1, 0x2, 0x5, 0x5, 0x6, 0x5, 0x6, 0x1, 0x0, 0x4, 0x5, 0x8, 0x6, 0x9, 0x4,
0x4, 0x8, 0x2, 0x0, 0x2, 0x1, 0x9, 0x5, 0x4, 0x4, 0x8, 0x7, 0x5, 0x2, 0x2, 0x3, 0x2, 0x3, 0x4, 0x7, 0x2, 0x0, 0x0,
0x3, 0x3, 0x4, 0x0, 0x2, 0x0, 0x4, 0x2, 0x8, 0x2, 0x4, 0x2, 0x5, 0x3, 0x2, 0x5, 0x9, 0x7, 0x7, 0x5, 0x2, 0x7, 0x9,
0x1, 0x9, 0x0, 0x1, 0x0, 0x4, 0x7, 0x0, 0x7, 0x1, 0x4, 0x0, 0x9, 0x8, 0x0, 0x8, 0x7, 0x5, 0x5, 0x3, 0x8, 0x4, 0x4,
0x6, 0x8, 0x1, 0x0, 0x5, 0x3, 0x6, 0x0, 0x6, 0x5, 0x9, 0x8, 0x0, 0x3, 0x2, 0x1, 0x3, 0x0, 0x9, 0x9, 0x2, 0x1, 0x2,
0x5, 0x8, 0x0, 0x2, 0x7, 0x0, 0x3, 0x7, 0x9, 0x5, 0x9, 0x4, 0x2, 0x8, 0x3, 0x4, 0x6, 0x1, 0x7, 0x0, 0x9, 0x8, 0x2,
0x8, 0x5, 0x2, 0x2, 0x7, 0x5, 0x1, 0x8, 0x0, 0x1, 0x3, 0x7, 0x5, 0x7, 0x1, 0x1, 0x0, 0x1, 0x0, 0x9, 0x1, 0x2, 0x7,
0x9, 0x3, 0x5, 0x1, 0x6, 0x4, 0x6, 0x6, 0x2, 0x0, 0x4, 0x6, 0x3, 0x2, 0x8, 0x0, 0x7, 0x0, 0x6, 0x9, 0x0, 0x5, 0x4,
0x4, 0x7, 0x0, 0x4, 0x3, 0x2, 0x4, 0x9};
char email[0x14]; // Personal choice an email limit up to 20 characters (limitation will be coded in MFC later) //
char email_low[0x14];
char buff[0x32] = {0};
char reg_code[0x20];
int i, j, len;
unsigned int sum = 0, mod = 0;
/* Email not necessary in valid format */
printf("Enter an email: ");
gets(email);
len = strlen(email);
/* Email input lowercase */
for(i=0; i<len; i++){
email_low[i] = tolower(email[i]);
}
/* First calculation */
i = len;
j = 0;
do{
if((email_low[j] >= 0x20) && (email_low[j]) <= 0x80) {
sum += email_low[j];
}
j ++;
-- i;
}while (i);
/* Second Calculation */
mod = (sum % 0x32);
sum = 0x19 * mod;
/* Third Calculation */
j = 0x19;
i = 0;
do{
buff[i] = *(data + i + sum) ;
i ++;
-- j;
}while (j>0);
/* Fourth Calculation */
i = 0;
j = len;
do{
if ((email_low[i] >= 0x20) && (email_low[i] <= 0x80)) {
buff[i] += email_low[i];
}
i ++;
-- j;
}while (j);
/* Fifth Calculation */
/* Registration Code should, and finally will be 0x16 (23d) characters length */
i = 0;
do{
reg_code[i] = 0x80 + ((buff[i] % 0x0a));
i ++;
}while (i<0x9);
/* Print registration Code */
i = 0;
printf("Registration code: ");
for(i=0; i<0x12; i++) {
printf("%c", reg_code[i]);
}
return(0);
}