BOOL Gen(HWND hWnd)
{
  if(GetDlgItemText(hWnd, IDC_INFIELD1, sInfield1, sizeof sInfield1))
  {
        int result = 0;               
        int serial = 0;
        int count = 0;
        int nbrChar = 0;
        char Chaine[32];
        char ChaineSerial[32];
        long algo1[32] = {0xD5, 0x00, 0xF7, 0x24, 0x5D, 0x5C, 0x0A, 0x8C,
        0x10, 0xD6, 0x9E, 0xB5, 0x9C, 0x66, 0x00, 0x24, 0x6F, 0x20, 0x44, 0x4D,
        0xD4, 0x63};                      
        for(int i = 0; i < sizeof(Chaine);i++){
                Chaine[i] = 0;
        }
        for(int i = 0; i < sizeof(ChaineSerial);i++){
                ChaineSerial[i] = 0;
        }
        for(nbrChar = 0;sInfield1[nbrChar] != 0;nbrChar++){
                    
        }
        for(int count2 = 0; count2 < nbrChar; count2++)
        {
             result = algo1[count2] ^ sInfield1[count2];
             serial += result << count2;
        }
        for(int i = 0;serial > 0; i++){
              Chaine[i] = ((serial % 10)+48);
              serial = serial / 10;
        }
        count = 0;
        for(int i = 0;Chaine[i] != 0;i++){
                count++;
        }
        for(int i = 0;i < count;i++){
                ChaineSerial[count-i-1] = Chaine[i];
        }
    if(nbrChar >= 10){
        SetDlgItemText(hWnd, IDC_OUTFIELD1, ChaineSerial);
    }
    else
    {
        SetDlgItemText(hWnd, IDC_OUTFIELD1, "Entrez plus de 10 caractères");
    }
    SetStatusText(hWnd, TEXT("© - Krom - 2007"));
    return TRUE;
  }
  else {
    SetStatusText(hWnd, TEXT("© - Krom - 2007"));
    SetDlgItemText(hWnd, IDC_OUTFIELD1, 0);
    return FALSE;
  }

}