SRL Archive - Java Help and Tutorials

script obber


sherlockmeister

2008-02-24 12:10:54

heres a scar script obber that i wrote (for fun of course since we are all open source here).
basically all it does is replace all the var names with random string making it very hard to understand.
i put it an encoding bitmap feature (with my crappy encoding algorithm) but for some reason scar throws lots of funny exceptions with lots of large bitmaps (like in bejewled.scar) even when it is decoded properly.
all the params are consts in the main class so you will have to recompile to change them (sorry) and are as followed.
length: approx alias length
password: bitmap encoding pass, leave null if you are not encoding;
proc name: name that decode proc should be
comment: keep comments?
pass var: universal var (or const) that the password is going to be stored if you encode bitmaps
proc flag: put this in your script above the first procedure to mark where the decode proc should be inserted
path, out: the path of the script and the path to write to
hash: insert hash proc as well? if you are not including srl and are encoding bitmaps you will need this (Srl/Srl/Math.scar - BenLand100);

heres bejeweled obbed
program Bejeweled;

Type
vm6LQh = ReCorD
t212679, XJ42i7: INtegER;
MJ841g: InTeGEr;
End;
ByTeARRAy7 = aRray[0..7] OF BYTe;

Var
gCP325: tFOrm;
ubX139H: tTimer;
B64Z7, LzHQ8: ARRAY[1..8] of ArRay[1..8] oF byte;
OgCY5O: ARrAY[1..8] OF bytE;
Qtt7G5s: aRrAY[1..7] oF INTegEr;
h87t1t7: ArraY[1..7] of TCaNVAs;
J7Mg, euBO2i5: IntEGer;
viAZ50Z: ArrAy oF VM6Lqh;
t4mVy: INTegEr;
IL85: IntegEr;
xjk7: ByTearRaY7;
XvF70g: IntEGeR;


pROceDurE L4K6; FOrwARd;
ProCedUre bQS82V(gbb98: IntEgER; N2wY8: IntEger; PP67E: iNteger; VD613: InteGEr);
VAr
T212679, xj42i7: iNTeGER;
u1yu: TCaNvaS;
BEGin
U1yu := GEtBItMApcaNvas(IL85);
U1yu.brUsh.stYlE := bSsOliD;
u1Yu.brUSh.COLor := clblAcK;
U1Yu.pEN.COlOR := cLBLAcK;
U1Yu.REctANGle(0, 0, GCP325.WIdtH, GCp325.heigHT);
For XJ42i7 := N2wy8 to vD613 do
for T212679 := gbB98 To pP67e DO
bEGIn
if (B64Z7[t212679][xJ42I7] >= 1) ThEN

coPyCanvaS(H87t1t7[b64Z7[t212679][xj42i7]], U1yU, 0, 0, 32, 32, t212679 * 32, Xj42i7 * 32, T212679
* 32 + 32, Xj42i7 * 32 + 32);
eND;
if (j7mg > -1) and (eUBO2I5 > -1) thEn
BEGIn
T212679 := J7mG;
Xj42I7 := eubO2i5;
u1yU.PEN.coLoR := cLblaCK;
u1yu.BrUSH.StYLe := bSClear;
U1yU.RECtAngLE(T212679 * 32, XJ42i7 * 32, t212679 * 32 + 31, xj42I7 * 32 + 31);
U1yu.RectaNGle(t212679 * 32 + 2, xj42I7 * 32 + 2, T212679 * 32 + 29, Xj42i7 * 32 + 29);
U1yu.pEN.COlOr := cLreD;
U1yu.reCTANGle(t212679 * 32 + 1, xJ42i7 * 32 + 1, T212679 * 32 + 30, xJ42I7 * 32 + 30);
eND;
FOr t212679 := 0 TO getARraylENGtH(vIAz50z) - 1 Do
BEGIN
U1Yu.brUSh.sTylE := BScleAR;
u1Yu.fOnT.sIZe := 14;
U1Yu.FoNT.nAMe := 'Verdana';
u1yu.fONT.COLOR := ClBLaCk;
u1yU.TextoUt(ViAz50Z[T212679].T212679 * 32 + 1, viaz50Z[t212679].xj42i7 * 32 + 1,
INttostr(vIAz50Z[t212679].mJ841G));
U1yU.fONT.Color := ClWhITe;
U1yU.tExtOUT(Viaz50Z[t212679].T212679 * 32, vIAZ50z[T212679].xJ42I7 * 32,
inTtoSTR(ViAz50z[t212679].Mj841g));
enD;
U1yu.BruSh.stylE := BscLeAr;
u1YU.foNT.sIZE := 12;
u1Yu.FOnt.nAmE := 'Verdana';
u1yu.font.ColoR := cLwHiTe;
U1yu.tExtoUT(32, 293, 'Score: ' + InTTostR(T4mVY * 10));
u1YU.pEN.coLor := CLWhIte;
U1yU.rEctAnGLE(30, 30, 290, 290);
iF (gbB98 <> 1) Or (pP67E <> 8) oR (N2wY8 <> 1) Or (VD613 <> 8) TheN
BeGin

CoPYcanVas(U1Yu, GCP325.cANvAS, gbB98 * 32, n2wy8 * 32, pP67e * 32 + 32, VD613 * 32 +
32, GBb98 * 32, N2Wy8 * 32, pP67E * 32 + 32, VD613 * 32 + 32);
enD ELse

cOPyCANvAS(u1YU, gCp325.canvAS, 0, 0, gcP325.WiDth, GCP325.hEiGHT, 0, 0,
gcP325.WidTh, GcP325.hEiGHT);
End;

PrOCEdURe l4k6;
vaR
t212679, xj42i7: iNtEGeR;
BeGIN
for T212679 := 1 TO 8 Do
FOr XJ42I7 := 1 TO 8 Do
B64z7[T212679][xJ42i7] := raNdom(7) + 1;
eND;

pROceDuRE V126L05(w8H682S: tobjeCt);
beGiN
BqS82V(1, 1, 8, 8);
end;

FUNCtioN W415W(gbb98, n2WY8, pP67e, VD613: InTeGEr): BoOleaN;
BegIN
rEsulT := falsE;
iF (GBb98 >= 1) And (Gbb98 <= 8) anD (n2WY8 >= 1) aND (N2wy8 <= 8) ThEN
iF (pP67e >= 1) and (pp67e <= 8) and (vD613 >= 1) AnD (vd613 <= 8) then
BeGiN
rEsult := ((gbb98 = PP67E) ANd (ABS(N2wY8 - Vd613) = 1)) OR
((N2wY8 = VD613) aND (ABs(GBb98 - Pp67E) = 1));
ENd;
End;

ProCEDUre z253F(gBb98, n2wY8, PP67e, Vd613: INtEgeR);
var
K4w9883, TxKik66: InteGer;
bEgIn

gCP325.CAnVAS.brusH.sTYlE := BssoLId;
GCP325.CAnvAs.BRuSh.coLoR := CLBLACK;
GCp325.CANVAs.pEn.cOloR := Clblack;
FOr TXKiK66 := 0 to 15 DO
BeGIN
gcp325.cANVAS.rECtaNGlE(gbb98 * 32, N2Wy8 * 32, GBb98 * 32 + 31, N2wY8 * 32 + 31);
GCP325.CanvAs.RECTANGle(pp67E * 32, vD613 * 32, PP67e * 32 + 31, VD613 * 32 + 31);

CoPyCanvAs(H87t1T7[B64z7[pp67e][vd613]], gcP325.canvas, 0, 0, 32, 32, Pp67e * 32 + (GBb98
- pp67E) * TXkik66 * 2, vD613 * 32 + (n2WY8 - vd613) * txkik66 * 2, Pp67E * 32 + (GBb98 - PP67E) * TxKik66 * 2 +
32, VD613 * 32 + (n2wY8 - VD613) * Txkik66 * 2 + 32);

CopyCanvas(H87T1T7[b64Z7[gBB98][N2WY8]], GCP325.caNvas, 0, 0, 32, 32, gBb98 * 32 + (PP67e
- gbB98) * tXkIK66 * 2, N2wy8 * 32 + (Vd613 - n2Wy8) * TxKIK66 * 2, GBb98 * 32 + (pp67e - gBb98) * TXKik66 * 2 +
32, N2Wy8 * 32 + (vd613 - n2Wy8) * TxKiK66 * 2 + 32);
SLEep(10);
EnD;
K4w9883 := B64z7[GbB98][n2Wy8];
B64z7[gbb98][n2Wy8] := B64Z7[pP67e][Vd613];
b64z7[pP67e][vd613] := k4W9883;
ENd;

fuNCTIOn A61B(T212679, XJ42I7: INTeGer): iNtegEr;
bEgin
resuLT := -1;
IF (t212679 >= 1) AnD (T212679 <= 8) aNd (XJ42I7 >= 1) aNd (xJ42i7 <= 8) THEN
reSuLt := B64Z7[T212679][xj42I7];
END;

fUnCtion A7zW7V(kuJGBTT: CHAR; var mRR32H1: InTEger; t212679, Xj42I7: inteGer): BOoLean;
BEGiN
RESULt := TRUE;
If (Kujgbtt = '1') ThEN
BEgIN
rEsULt := ((mRr32H1 = -1) OR (B64z7[t212679][XJ42i7] = mrr32h1));
MrR32h1 := b64z7[t212679][xj42i7];
ENd;
eND;

FUNcTiON SWFzK9G(kdm3S28: sTRiNg; t212679, Xj42i7: InTegeR): BOOlEan;
var
MrR32H1: InTEgEr;
bEGIn
REsuLT := TRUe;
MrR32H1 := -1;
ResULt := ReSUlt and A7ZW7v(kdM3s28[1], mRr32h1, T212679, xj42i7);
RESUlt := ResULt AnD A7ZW7V(KDM3S28[2], mrr32h1, T212679 + 1, Xj42I7);
REsuLT := reSUlT AND a7Zw7V(KdM3s28[3], Mrr32H1, T212679, XJ42i7 + 1);
resuLt := rESULT AND a7zw7V(kDm3S28[4], MrR32h1, t212679 + 1, xJ42i7 + 1);
rEsulT := resuLT aND A7ZW7V(KDm3S28[5], MRR32h1, t212679, xJ42i7 + 2);
resULT := rESult And a7Zw7V(kdM3S28[6], mrr32H1, T212679 + 1, XJ42I7 + 2);
enD;

fUncTiON q89k6G(kdM3S28: StrInG; t212679, Xj42i7: iNTEgEr): BooleaN;
var
mRR32h1: IntEGER;
BEGIn
ResuLT := trUe;
mrR32H1 := -1;
reSulT := ReSULt And a7Zw7V(KdM3S28[1], MRR32H1, T212679, xJ42i7);
rEsuLt := reSUlt and A7ZW7V(KDM3s28[2], mrR32h1, t212679 + 1, XJ42I7);
RESult := REsulT aND A7Zw7V(KdM3S28[3], mRr32H1, T212679 + 2, xj42I7);
ReSuLt := REsULt ANd a7ZW7V(KDm3s28[4], MrR32h1, T212679, Xj42I7 + 1);
rESUlt := resulT And A7Zw7v(kdM3s28[5], MRr32h1, T212679 + 1, Xj42I7 + 1);
reSulT := RESult And A7Zw7V(Kdm3S28[6], mRr32h1, T212679 + 2, Xj42I7 + 1);
eND;

FUNctIoN CVe3(KDm3s28: STriNG; T212679, xj42I7: intEgER): booLeAn;
var
mrR32H1: iNtEGEr;
BEgiN
resUlt := TruE;
mRr32h1 := -1;
REsULT := rEsulT And a7Zw7V(kdm3S28[1], MrR32h1, t212679, xJ42i7);
resulT := rEsult AND A7ZW7v(KdM3s28[2], MRR32h1, t212679 + 1, xj42i7);
ReSULT := REsulT anD a7Zw7V(KDm3s28[3], MRR32h1, T212679 + 2, xj42I7);
RESuLT := rESuLT AND A7Zw7v(kDM3s28[4], mRr32h1, T212679 + 3, xJ42i7);
ENd;

functioN v3Fc56(kDM3s28: stRinG; t212679, XJ42I7: intEger): BOOlEAN;
vAR
MRr32H1: IntEgEr;
bEGiN
rEsULT := truE;
mRr32h1 := -1;
resUlt := ResULT aNd A7zw7V(KdM3s28[1], MRr32h1, T212679, xJ42I7);
reSUlT := Result and A7Zw7v(kdM3S28[2], mrR32H1, t212679, XJ42I7 + 1);
reSULt := REsulT AND a7zw7v(kDm3s28[3], mRR32H1, t212679, Xj42I7 + 2);
ResULT := REsUlt AND A7zw7v(KDM3S28[4], MRr32h1, t212679, xj42I7 + 3);
End;

funCtIoN O1rd: BoOleAN;
VAR
T212679, Xj42I7: iNteGEr;
begiN
rESuLt := fAlsE;
FOr T212679 := 1 TO 7 dO
fOR XJ42i7 := 1 to 6 Do
begin
rESult := rEsult Or SwfZk9G('011010', T212679, xJ42i7);
rESulT := reSuLT Or swfZK9g('100101', t212679, xJ42i7);
rESuLt := rEsULt Or SwFzk9G('011001', T212679, xj42i7);
REsulT := RESuLt oR SwFzK9G('100110', t212679, XJ42I7);
reSULT := rEsULt oR swfZK9g('010110', T212679, Xj42i7);
resulT := rEsulT or SwFZK9G('101001', T212679, Xj42I7);
END;
For t212679 := 1 To 6 Do
For xj42I7 := 1 to 7 do
BEgIN
ResuLT := RESulT or q89k6g('011100', T212679, XJ42i7);
ResULT := resuLt OR Q89k6g('100011', t212679, XJ42I7);
REsUlt := ReSULt OR q89K6g('110001', t212679, Xj42i7);
resULT := ResulT OR q89K6g('001110', t212679, XJ42I7);
ReSult := reSulT or Q89k6g('101010', t212679, XJ42I7);
rEsULt := ResulT OR Q89k6g('010101', t212679, xJ42I7);
EnD;
for T212679 := 1 To 5 Do
FOr xj42i7 := 1 tO 8 DO
BEGiN
REsult := reSuLt OR cvE3('1011', T212679, Xj42i7);
result := RESuLT oR Cve3('1101', T212679, xJ42i7);
END;
fOr T212679 := 1 tO 8 dO
fOR xJ42I7 := 1 to 5 do
BeGIN
resULt := RESULt oR V3fc56('1011', T212679, xJ42I7);
rEsUlt := reSULt OR V3fc56('1101', t212679, xJ42i7);
END;
end;

fuNctION BWOP2: bOolEAn;
VaR
k4W9883, mRR32H1, t212679, XJ42i7: InTEGeR;
Begin
resuLT := FAlse;
fOR xj42i7 := 1 tO 8 Do
BEgIn
k4w9883 := 0;
MRr32h1 := 0;
FoR t212679 := 1 TO 8 Do
IF (B64Z7[T212679][XJ42i7] = mRR32H1) thEn
BEgIN
K4w9883 := K4W9883 + 1;
iF (k4w9883 = 3) tHen
reSulT := trUe;
End ElsE
bEgiN
k4W9883 := 1;
Mrr32h1 := b64Z7[t212679][Xj42i7];
EnD;
end;
for t212679 := 1 To 8 do
BeGiN
mRR32h1 := 0;
k4w9883 := 0;
FoR xJ42I7 := 1 To 8 do
IF (b64z7[T212679][xJ42I7] = MRR32H1) theN
bEgiN
K4w9883 := k4W9883 + 1;
iF (K4W9883 = 3) THen
rESUlT := truE;
End ELSE
BEGin
K4w9883 := 1;
MRR32H1 := B64z7[T212679][Xj42I7];
EnD;
ENd;
end;

fUnctiON har4V(T212679, XJ42i7, UX6TRPE, RT76, oc9NT8: integer): INTEgER;
bEgIN
reSULt := xJK7[OC9nt8];
WhIle (oC9Nt8 > 0) DO
begIn
lzHQ8[t212679][Xj42i7] := 1;
t212679 := t212679 + ux6Trpe;
xj42i7 := xj42I7 + rt76;
Oc9NT8 := OC9nT8 - 1;
ENd;
ENd;

PRoCEDUrE z576w4(VAr t4MVy, F27oYZk: iNTeGeR; T212679, xJ42i7, Ux6trPE, rt76, K4w9883: inteGEr);
VAR
uhrv: InTEgEr;
BEgIn
uhrV := Har4v(t212679, XJ42I7, uX6TrPe, Rt76, K4w9883);
setARrAyleNgTH(Viaz50z, getArRaYlenGTH(vIAz50z) + 1);
viaz50Z[geTarrAYLEngth(VIAZ50z) - 1].t212679 := t212679 + uX6TRpe;
VIAZ50z[getArrAyleNgTh(viAz50z) - 1].xJ42I7 := XJ42I7 + rt76;
VIaZ50z[getarRAYlEngTH(VIAz50Z) - 1].MJ841G := (f27oYZK + UHRv) * 10;
T4MVy := T4Mvy + f27OyzK + uhrv;
f27oyzK := F27OYzK + 1;
enD;

fUnctIoN UETM1K7(F27OYZK: INTeGer): inteGEr;
VAR
k4w9883, MrR32H1, t212679, xj42I7: iNteger;
bEgiN
For T212679 := 1 to 8 dO
fOR XJ42i7 := 1 TO 8 do
LzhQ8[t212679][XJ42i7] := 0;
rESulT := 0;
fOR xJ42I7 := 1 to 8 dO
BegIN
K4w9883 := 0;
mrr32H1 := 0;
fOR t212679 := 1 TO 8 DO
if (b64z7[T212679][XJ42i7] = mrr32H1) thEN
K4w9883 := K4W9883 + 1
ElSE BeGin
iF (K4W9883 >= 3) Then
Z576w4(rEsULT, F27OyzK, t212679 - 1, xj42i7, -1, 0, K4w9883);
k4w9883 := 1;
mrR32h1 := B64Z7[T212679][XJ42I7];
End;
If (K4w9883 >= 3) theN
Z576W4(result, F27oyZK, 8, xj42i7, -1, 0, k4W9883);
end;
for T212679 := 1 to 8 DO
begiN
MrR32h1 := 0;
K4w9883 := 0;
for Xj42I7 := 1 tO 8 Do
If (b64z7[t212679][Xj42i7] = mrR32H1) thEn
k4w9883 := K4W9883 + 1
ElsE BeGiN
IF (K4W9883 >= 3) THeN
z576w4(reSuLt, f27OYZk, T212679, XJ42I7 - 1, 0, -1, k4W9883);
k4W9883 := 1;
mrr32H1 := b64z7[t212679][xj42I7];
eND;
iF (K4W9883 >= 3) THeN
z576w4(ReSULT, f27OYzK, T212679, 8, 0, -1, K4w9883);
EnD;
fOR t212679 := 1 tO 8 do
fOr xj42I7 := 1 tO 8 DO
iF (LzHq8[T212679][XJ42i7] = 1) THeN
b64z7[t212679][Xj42I7] := 0;
EnD;

FuncTiON au5f: booLEaN;
var
T212679, xj42i7: integeR;
bEGiN
ReSULt := FAlse;
For T212679 := 1 to 8 do
fOR xJ42i7 := 1 to 8 Do
rEsuLt := ReSult OR (B64Z7[T212679][Xj42i7] <= 0);
End;

ProCeDuRE D9E02b;
VaR
TXKIk66: intEGEr;
BeGin
FoR TxkiK66 := 1 tO 8 dO
ogcY5O[txkIk66] := RanDOM(7) + 1;
eNd;

pROCEduRe xLD80w;
VAR
t212679, xj42I7, tXkiK66: INtEger;
ed29Z0V: ARrAy[1..8] oF aRRAY[0..8] of byTe;
beGIn
D9E02B;
fOR T212679 := 1 to 8 Do
FOR Xj42I7 := 1 To 8 DO
eD29z0V[T212679][Xj42I7] := 0;

For Xj42I7 := 8 Downto 1 do
fOr T212679 := 1 To 8 dO
IF (B64z7[t212679][xj42i7] < 1) OR (ED29Z0V[t212679][xJ42I7] = 1) tHen
Ed29z0v[T212679][Xj42I7 - 1] := 1;


GCp325.CAnvaS.BRUsH.STylE := bssolID;
gcp325.canvas.bruSh.COLoR := cLBlACK;
gCp325.CANVAS.pen.COLOR := CLblaCk;
FOr Txkik66 := 0 to 7 DO
bEgin
for XJ42i7 := 8 DowNtO 1 dO
FOr t212679 := 1 To 8 DO
If (eD29z0V[t212679][xj42I7] = 1) thEn
IF (B64Z7[T212679][Xj42I7] > 0) thEN
beGIN
Gcp325.cAnvaS.ReCtanGLE(t212679 * 32, xj42I7 * 32 + tXkIk66 * 4 - 3, t212679 * 32 + 31, XJ42i7 *
32 + TxkIk66 * 4);

COPyCanVAS(H87t1t7[B64z7[t212679][Xj42i7]], GCp325.CaNVAs, 0, 0, 32, 32, t212679 * 32, xj42I7
* 32 + TxkiK66 * 4, T212679 * 32 + 32, Xj42i7 * 32 + txkiK66 * 4 + 32);
eND;

For t212679 := 1 To 8 DO
beGIn
iF (Ed29z0v[T212679][0] = 1) then

cOpyCaNvaS(h87T1t7[OGcY5O[T212679]], GCp325.caNvaS, 0, 32 - tXkIK66 * 4, 32, 32, T212679 *
32, 32, t212679 * 32 + 32, 32 + txKik66 * 4);
end;
slEep(10);
EnD;
fOr XJ42i7 := 8 DOWNto 2 DO
FOR t212679 := 1 to 8 Do
If (B64z7[T212679][XJ42I7] < 1) THEN
BEgIN
b64z7[T212679][xJ42I7] := b64z7[T212679][Xj42I7 - 1];
B64z7[T212679][Xj42I7 - 1] := 0;
END;
FOR T212679 := 1 to 8 DO
If (b64Z7[T212679][1] < 1) tHEn
B64z7[T212679][1] := OGCY5O[T212679];
ENd;

pRoCEduRE OK5T;
BEGIN
l4K6;
j7mG := -1;
EuBO2I5 := -1;
rEpEat
UETm1K7(0);
WhILE (Au5f) DO
xLD80W;
uNtil (Not bwop2);
SETarraylength(ViaZ50z, 0);
bqs82v(1, 1, 8, 8);
T4mvy := 0;
END;

procEdurE a11510g;
var
cpd5h: TVaRianTarrAy;
bEgIN
SetArRAylENGtH(Cpd5H, 0);
ThreaDSAFEcALL('oK5T',Cpd5H);
eND;

pRocedUrE b92tbf(w8H682S: TobJEct; kT2u: TMOuSEbUtToN;
Q304X: tSHIftSTATE; t212679, xJ42I7: inteGeR);
VAr
F27OYzK: intEgeR;
bEgIn
t212679 := T212679 diV 32;
xj42I7 := xJ42I7 Div 32;
IF (t212679 >= 1) ANd (T212679 <= 8) AND (xj42I7 >= 1) anD (Xj42I7 <= 8) tHeN
if (W415W(j7mG, euBO2I5, t212679, XJ42i7)) ThEN
BEGin
z253f(J7mG, eUBo2I5, t212679, Xj42i7);
IF (NOT BwoP2) THEN
bEgIN

Z253F(J7MG, EuBO2I5, t212679, xJ42i7);
J7Mg := -1;
eubO2i5 := -1;
END else
bEGIN
j7Mg := -1;
euBO2I5 := -1;
f27OYzk := 0;
SetaRrAYlenGTH(ViAZ50Z, 0);
REPEaT
T4mVy := t4mvY + uetm1K7(F27oYZk);
Bqs82v(1, 1, 8, 8);
SLEep(200);
F27OYzk := F27oyZK + 1;
wHILe (AU5f) Do
xld80w;
uNTIl (nOT bWOP2);
ubX139H.eNAbLEd := TRuE;
eNd;
BQS82v(1, 1, 8, 8);
ENd elSE
If (t212679 = j7Mg) ANd (Xj42i7 = euBo2i5) ThEn
bEGin
J7mG := -1;
euBo2I5 := -1;
BQS82V(1, 1, 8, 8);
ENd Else
begIn
J7Mg := t212679;
EuBo2I5 := xJ42i7;
BQS82V(1, 1, 8, 8);
end;
If (nOT o1Rd) THen
iF (GetapPlIcAtioN.mEssAgeboX('You lost! Score: ' + intTOStr(t4mVY * 10) + #13#10 +
'Play Again?', 'Game Over', 4) = 6) thEN
BeGIN
oK5T;
BqS82v(1, 1, 8, 8);
EnD;
end;

pRoceDuRE H5M0N(w8h682s: ToBjEcT);
BEgiN
UBX139h.eNaBLeD := FaLsE;
SeTArRAylEnGTH(vIaz50Z, 0);
BQs82V(1, 1, 8, 8);
EnD;

prOceDURE j95A;
beGiN
qtt7g5S[1] := bitMaPFromStRING(32, 32,
'z78DAD598D9AE832010407F6916361F15E1FF3FE9CE607B53E312' +
'DC5A65126A5A35E70CC54100AE6DD46AC0031B45EAC0932146C0A' +
'8F11472CC98C10FC7ECD8890B1240BABFC540DEE4463F4B4B39E5' +
'27587C926B631EBED7E37B5B4CC9A7FCF7B458225FE2BF8FC53AF' +
'93AFF6F2DD8B2051B72C81897C86BF8A7164C7249779D05F7DC83' +
'B5D966E475F27AFE198B20F969CFB5D84ABE95FF3A8B7DE4FBF8C' +
'FB538427E847FD1A2C506C377C88FF3CF587836108A85DF4F6EBC' +
'F63669EF4AEF5DE9CBAF2E945F6D39BF3FCE5F6FC12D379066948' +
'2865C25E1AC4663342269642D03D8278D0E34026A587DC8B2AC3C' +
'254E7E0876206B712242889F16AF39D26A68555ACA060EB92D393' +
'76DC9B6297D2963A68C02956368DEF98FF1589F72A7F937FA1681' +
'160D38C892EB5EE703BA5155ADB4A8EB8FF34FC8FD27B90E3D763' +
'36B83932C8EF08FC81D5AF9172B795A273FD7621FFF945CDEDE34' +
'94DCD7909F65B1957F91BC2B9131EDADC5FB2CEAF9D7C965752A7' +
'1C29A79B0C812A1C6A286FF3BE4A35D05B923966A0E76DD629DFF' +
'FBE4230B961212D72D96F87F4B5E6F31E5BF0F798DC527FF3DC94' +
'716F43F2FCC60F1DEFF9923873C9C4B4080F9467B8628CF692F64' +
'015E2BB7A575CBD64AF47D0B6A492C9E453EAA179D8E83F2233F8' +
'B7C3416BA5714CBEC4857DCFF0F5EF50252'
);
Qtt7G5s[2] := bITmapFROMStrING(32, 32,
'z78DAED98EB8EE2300C855F2976EE3F93D67EFF471A27EE88CC00' +
'9DB6B32BC16E7CA4A3AA14F8EC3A90DA98C701110238F30281D07' +
'4E2FA8A19BD1E5B820469E9C7B45E710D269B6D3EEE916181C594' +
'A19E4B3FB34F4EB86032568499BCF1C210534CBFC9E22CBF67F02' +
'26EEF4A9DDFB396B2097DD33DB90564AC268B52209B6CE2359964' +
'D4350BC7983065F7E7F989ACB77E24CFDD4BB9B9D52C62935459F' +
'4A5DBE52B0C29E148FEE94582A9C61A636E25389EC53EBF92234B' +
'A7142C8FC9CB705EB333D42415176D957FB68AD7A6DCB55253304' +
'DAF10CAB6F5BC56A9060AF4CD59949A38260936ADBBCEF6CF12CF' +
'B9C6EA1EFBB8A27FE417379F2B577AEFDAFA7D11FECBBF3F937FF' +
'24FFEC9FF6FF3BF576CFCE5B65BDEAF06C115DF3ED9C9F3443CEE' +
'FBBBA62FFC1103E2E49FFC937FF24FFEFF8E1F1180DEF8FF37CB1' +
'DB0FDA1DCFBBE63E1BCE77A4D288FA704F77E7CFEE04958F2B33D' +
'18D51043440607AECF79F238D10216AD069A72FDCE4C97C88FF0D' +
'F67E1483A029576E4D7EC8C13D9364D83840EAD547EBC23FDFCD6' +
'B1E546AE1D17F91CF971FE310BC720A175D62CD26A455A5B396BE' +
'5E5552A9F9F361637E9A448C953B9427E96FF7E8AB875CB306183' +
'0A058EED967B162FB15017534D11EE0CF1DA1AFF8BAABDA29D6DD' +
'F9F117E009926FAFE'
);
QTT7g5s[3] := bitmApFRomsTRInG(32, 32,
'z78DAED985B8EEB200C86B784CDFD1148BDFF250DC655432E93D2' +
'26A3A323054BBFAA19053E638CB0951A1E8F667F3CD020025D3CA' +
'766AB3FDABC3AB2C63F50E03540790560C1005E476E1B79917D69' +
'6B05BA92DC0BAB63696B0198735E2CC9A953A4D72A97F14B4CB13' +
'427D65E38F6E30A72D1D814CA35E4A13BEB36CEFC4F2FF82F4665' +
'652041047F8E5CF4212BB24E01D50421210435C5879A3EE7B78D1' +
'336E40B2FF09D1763E4B3A2F701BD051F6C0D6F511CE21C2D604C' +
'11E3C739AB341DF16FBC08E0C11E0482E63945FD4B412707DADA6' +
'CAC0D1475A094A79872545305B73E175BE74EC0F30FE56C1BA674' +
'2BEA3917242EA2DD0036C8351AA1C623CEFF2FEDABBCC9CD791F1' +
'05DBDA15D0EC1E56CD848B365C7E61E6C68D93EB92D8400DDCC2F' +
'192D7E99B28E45FBA69DA53DFE23853401244B13598A0FB682440' +
'513102570F5B74328449CDF34701A651C9F9CAD7ECF2FAAFDE4B5' +
'7796CD07221F9CAFE45E4722DE391ACCA37FC52F8A32880809755' +
'5AD6A14EAD9FC4FF85FE94EDFEBCD7FF3DFFC37FFCD7FF3DFFCEF' +
'DF9FAFB7AEBEB243B0F3FED4EBF7A7A5F7FCCFD1CD866E7F1EA99' +
'BBA8AFBE33D345D046515E99B2CDEFCA553BD7AFF77FCD0C627BD' +
'11DDF9E84EA8B001AD777EABD2375089EBD6FA55EE6B4974B5E23' +
'0EC02BCEDF084AE8BD26ABA53FCBADBE741F252B9C36E15DC7A5F' +
'FCFCE53EDB6F5EC86991BAD59DDE7FDB65319603F2D6FDAB3563B' +
'5910EDEEF5E4019ADB8C7F579FEDD2E79697B3E40BEB81108A6FA' +
'C5C20B5FCEE6EC9B5CDE27DFBB61BEF2425D94B3C7B9ACCC15E45' +
'B2F2A7D54E1AFFBCF75A7AA5D45BEC80BF6A33C6FDD2B35D45957' +
'364EF503C073D4BC'
);
QtT7G5S[4] := bITmaPFROMStrinG(32, 32,
'z78DAED9869AEDC300880AF64F0FED3EBFD8F54304E9A28CD3499' +
'E5F5556D90D028E3F17C600CC64A7DEA014D02D0A141567FC9030' +
'92278A54970BE6A2A907624F67BDA821E1DA210624636A2075456' +
'BEAD398052DE1ABBFE209324B46810FE1873C3820CD6C9BF4D25A' +
'58276A0744BA9292F7ABA3F85B4E8523CAD8589C86B002CAC688E' +
'2F793460C73C23643CD61B505873D2CA6DC9CFF8B73A75472368B' +
'EC853B34061F988B779171689109DC87B905BA8CA1E99AFF36F75' +
'D0A6AE3BC50F799D396344ABAA2A2A43058ADE88AE28F398F9397' +
'ED1B2539CD33FD7A00DB91B211E1C1879E3ADA56C721621675AC6' +
'2F33F0CEBD6EC576A7D05AE3BA533CCB69DEAB147B51F29E44482' +
'931DC61162DBB587634EDD33E22BC8CF96189F9BBB6C8AF6486B9' +
'533ACB8C9348F94FAF56581ECFD9EF3AB38C97CC4933689EC123F' +
'F7B8C8B0EDABA110F71C93FE2E1EB565030BB83CF492413AED1D2' +
'20D0BF64B27113F3337E6A2E64BA2ACE6233399BE0D030EFA0A23' +
'8297BE6A3A608EF9CB5745C76EB59748975B36A8C91834BF96CD6' +
'18927CB5E56F8908A7A665B1D0C8ABFC31A10746481EAA2D29E59' +
'8638CD657974D2A25D8DF911FB5ACD136BAC4C3649D5EF763E5C8' +
'88C6D2FCC5F178D157F8B73AD7A44CCA985224CF0F8935E4D4298' +
'FDA7A97FCA86774494D719A774A757ACFFC0A7FCB851252C7EA7C' +
'8F86A5DB5203B64ECBD35FE7172DCF19F34BFCA24B41637460699' +
'596A3BD8BFC8BF8875E46BE93FC3FFFBFC05F4A32983EC12F7561' +
'3607D1A5F7F10B339D931DE05AF560683D32767F8D59AA9E5440A' +
'950745EA40AE534D7B8335B1EF31F99A5A66C2BBED49ABBB61C99' +
'A9412EFB0A259FE5FD992D67FC8F991F9F4CCE6CB9C27CA6CF6CD' +
'9F1EFCF6F70FF64F5D896BBCC673A04B346D7967F7EE667399D6E' +
'4E23CF59215A9EA46C7996596266FA5CC8E56683BB9A0AA397DD9' +
'D48C7B91AC498618B7410CF9DDBAFE7C38BCCD40B42A02EC64AB7' +
'42719FD03DE868486607373AA0BBB6DCE5FF05B374AFA31F9CCC6' +
'974B5776FA524D26EDA72855FCEF33373E2106176E465332224CC' +
'FBA577DDB09DD8929B57D7F877CC6306BECF52F173CC976C3964D' +
'D2DFF2F980BCB8867FF95CC0F6E3E4994C8F6FD96797C4B7E6691' +
'EE3592846F7417EA58C8AB6170B3889F85592ACE18F3FDEFA2851' +
'3F5908F31FF006BCE05C3'
);
QTt7g5S[5] := BiTmaPFROMstRinG(32, 32,
'z78DAD558D96E1B310CFC25DDC7A3CEFFFFA4921C055D23DEC36E' +
'ED384B9470BAB630948643524ABDEAD189CD7836F5AB1EEDD9D61' +
'F91FE4DDDD87E4D009531E3A3EB4AE5A9349B496C1F8DDCB245C2' +
'5F16FE48BB3EA71DF469E2ADB8CF431ED97C619CD531E62D7E781' +
'3E83CA64A629FC376790CF1C42EE47BF823FDFF98CC2C3DB565FB' +
'1CB697C4D84EF08B0FF4B6ADB7C6186D7E98ED8914A6DE203FC60' +
'FEF489F1232C29862F29B3576B039CACA7007F915FCF07A32EB54' +
'574D4EF17D9C0FCCE1EF9C79147F20DFE7AA1145671D7F963377F' +
'04BCE1E47F11E2EA1AADAC41A788C1CD141617847CD09FE1B2E31' +
'33DBEB7426773EF13DE460946DD6DA59BC0DB552BDF5661ACA147' +
'F827FE9122A352B6CFBBFD9BAAD4D7BDE476B43C83DD4127B3365' +
'CED67419535765F5F49EEBF27114885465B2F46A85DFFAA8B4CD3' +
'1CD64B31E2A86E97BD16D4EF8ECB52D2B4F91B327190DC64E3D74' +
'7DF5CE23AEE8C28871D81A471DCAF92FE45B4FFBDAC2EA228E4FC' +
'10656E67F3F05E8E4316742B531995E5AED7D8C9CEE2187BFE152' +
'E71CDF8D029D0674B553EF9D9FDB795E20EF22472E679D6A2689E' +
'96DB63EEDDCC70F9F92D679754127A780AEF5B95310CE9FEC3C29' +
'4DF2BDB738F428C99F21DF7A9C02A6838BB9D0AFE50274FB12E72' +
'DDB08C54D436A931FC18F5380E65F52A4EB754114F858E789F0F4' +
'8DE2932A6D50B97C04F9D653E7A3CF140999B2AAB3A38675EE013' +
'78AEBC6950AEB9B2D549C9C772D3E877CAB48E0F9F129ACA92192' +
'8503CE57558E7316CC31958D30F46791C317AB3D751A177A8CA5A' +
'84DECF0D9AB53AB3790D359E7DE49A1960792EB98F12BECFF6A0C' +
'0F4F6175173BC33334768F39C86528121557E5BAA36FD662A53F8' +
'6D70908AEDC0BF137D76F69575375348295C28318E5AAF064AFD3' +
'582C0A6C378BCA04B1650E3EA37E6165600E9ADEA6D7794B38735' +
'541F64AD4695BE9168B60DF340798318933CB289765B55763FEEE' +
'F9C447C2192116A8E89A14363718269A60BE4668F9267E8515DE8' +
'FFC4E2CC4879E0D793E89BFBBBDF04351F9F626DC6129F849B1B7' +
'FCCE9D474618FA1C1A9870C39620B6455B69FA4C347F26C90DAF1' +
'DDFE928CED942E6C4F0C86A880EEB6FB3F8510F35B893FB460C3C' +
'11B6E33678D9CE6D2A664F308A6F66B8FB96B864B2E6CA4171F11' +
'4693938597750E6A3BF7ACEF3EE64DC80D1DA6C4058C40427EDD6' +
'DCAFB9571E9EFF28B24C91D9159DCC77F02BBAE77DA255D99EBA6' +
'9FF0383A104FA'
);
qTt7g5S[6] := BitmAPFRomSTRinG(32, 32,
'z78DAED58DB6E62310CFC25C7CEF53137FFFF27AD13A7BBB02570' +
'0E2DA82BAD2DA5485487B1331E0F001C0D03C0D0E1C5619CB1C66' +
'21DF96DCF2449E35AA88993AB81D7E97D8C994D30C570E156F9D0' +
'994385C6FA648B097BB521555EA7C9945D3733D08F7C05723DB15' +
'3B7ECD8F77002BF9EC8148831B810DB25FEEFAAE23EF2584AEEAB' +
'87DACFB3F84388293134D3903FE3FF4A15F791EBA9EF22C9F59F4' +
'6BE4EAAFDA303D4636CF5EB551C41AE2715EB1D8514434A4FE29F' +
'A73CC75AE983EDA1EFF01FA9E238F2D40A771F67B62CC40FB5747' +
'C167FA4143243944FE7FBF82FAB80995A8530202089388E3C102E' +
'8DAC79E694390723DF1A13ADA9235154041334A8504CC642EC938' +
'CE6F68CA18CD3448ABE9A46DD17DBA2A8626A74FE741C7C642858' +
'84453E16DE9F1451E60521028F0D21C923B52004795D8124918A3' +
'7F1411584B6F8E88AE7E89E43AEA7110545D920CEA707F8B54608' +
'23B5F39BDD87E021037BCCD4B7F8ADF13229FAE9CF214FBDBA0FF' +
'DD1DEEE909BEC5866443993463E60571C352290B7FB5B98D5E9BF' +
'2B92B3F87D92D9957E0A678F7146E38233DBE160D34CD17A6D8F5' +
'8B6551842400E36997C1A3FF1D8DC86AC0BFBCE0355CFC207C91D' +
'67B631344A16AB706ACB256C569EAF48CEE2178E36E96A0F506F2' +
'1AFE3CFEA67187956A284D91E71D6EE14E78D2998B72315667302' +
'79E8A90B363BD8B0E5CC7C57755ED820F9A4D066999755BB73B2E' +
'46F54A1F31E532EF5107E2B8B5058D1853AB73A3F1935578A135F' +
'2BF90DFB42B7C364FB0D16CD4957253FA1995355AE904F2EFD564' +
'249F157925F878F0E2D9ADD76502D9511B1F44833A9C4B6D54CD5' +
'22E994E4573873F79BD1DA0EAE2441A2F8F5F5112D5D9A9910E9B' +
'AF34E2669E8A4E4646C7C85E910AB93C5F515C19F3F3B8D235A4A' +
'56D6FE42BBF09B90DA87C2A3CCAC3A81177E4B5D4E43B7430CE21' +
'E8F6BE97AC2C4BC3833EF029264BCD48A971B401ADDBA741AF7B5' +
'54EFE55233D5F32CCE04E38D7DA7815DAEFBD376D869A96AA6EED' +
'32B57307FD39059AD0F5DCD2B6E413FF7C269ECB454EF6539B13F' +
'4ED2BF933347B683AAABCEA922D7BB58DD56FC5ABB1F7A063F203' +
'00A97ECDC98168335EEE37789CB6F283AA7EA0A862F183727DF97' +
'E0C7C4677FA833AB7B4DFBBF5CC15927F9CE98DB73FD2A32B5F4A' +
'A463F127E7ED0CCBFDD78877F24AEFA3C6BF93627F9CE1893CAEA' +
'24E17F6CE21796C41956'
);
qTt7g5S[7] := biTmapFROMSTrIng(32, 32,
'z78DAED985B72DB300C45B7C487444A9FD66BFF4BAA700FA681C7' +
'95EB3449F3D1F2CC642672225F001720A594FEDD557339CA527A6' +
'9A5E45B9E737FFE93BFFC5ECD652F6B99724A47DAD366D4C118AB' +
'28221BC32136A34E465E8CD44E468F4877FB3BCA3D93CDE8B3711' +
'BC52176B18859F06936E64D4C461B8D528D6414EAF8750EC9D349' +
'EBD958BA98025C1945313CA2554CA21A318AB91A433388E2FCC7B' +
'98C1FD7ACCA2FE37ACAB1FA6E6555B2FBB289C358D31BCB2EF894' +
'0234412CD4858AC4282861365490E6FECCF9C8EB1F2ADF4CF3999' +
'7321DBA7B43CEDAC5289AE801AE0C221B1E0BD5190C8F825A1463' +
'5E4533A6C3E85A72E97CF6F9C97BF5F7D6CF94CB0DEDA8C63E1A6' +
'AC16165EDE2086C621144540DAFCB2CAA71DB4413C99859F2929B' +
'51376032300C5ED7DF6AABA3FB76670DC6D64415A36801AE14C3A' +
'323B9AA884781380D20EFF1E825AAB08B6E340D2985787BBD1656' +
'FA7C5B8B41524998EBE4CB587B80BFE4532A455D8842775B58EA7' +
'1F75217B10AEA052C3615233332348E759BCBBEA0F787C958411A' +
'3CB7B2F39E842AB2372177EDD5D80E4114AA94FB4ADD41D7DF558' +
'18EA617F825B8484206BE2A4D46DE8CCBCCDB5C1FA666E064FC80' +
'1E578E660C110B4042711A97BA9089BD0AF435D6612E4517F1478' +
'3316D6234FA6EFCF4C6C9A597E693895E236F9E79FD4286D17964' +
'310A6DB0FB21B06F36DC7574047D4D47B39848EC0EDAE37ED105C' +
'A24FAD9319DA755F049A81E74FD981D9F28B568F6D1338B627815' +
'8A81DFDC452C7A9960E80282BCD2AF2EEE878111E802AAF01BFD8' +
'FF9C788720E73F5F0912D54914BFD888EFA5FC97FD0AFD1BB9CE7' +
'AD93DFE8670FD2F26949E7CA15EE10AA808B74534626DDE15D8C8' +
'9556C64DEF987BD800F06C3F58FC6A3FF7DF2A805BD0BD4F6F7A3' +
'DFCE84CC3A9A89EEF34EC445CAEDCE4D674144B80BE79379D5CEF' +
'702DF9074D2602F63FEB0E85F3EA07F197FE8D797E3F9E81F3FFB' +
'C5B5BDDDDE5D4415301F49C158CAB05704CDE41CE5EC144C1E528' +
'C73F858E7223FDD31E8E3FC2F86CF7F1DB83D74324FFF5EE8E76C' +
'DC078359E779A31788026DC43207B842BFA09C451E62E6999CD1F' +
'91492B31C4390A523AF3DF0F412E7E7957EDFBFB4C8957B892868' +
'3C7634CA590268A63C888BCAE3CE1B33CFCE159DF3E07C35FAE2F' +
'B57D4AFEDF96A17606741B2FF037D4D2C6C36B70057C2C9ED51F9' +
'920CF77CECD998F97072E066EE7956D07F798AD0D95B6360F6333' +
'CC15011CEFBD4A506FCA6D28CCF496B54CE8DF00CDB463C799279' +
'F62CCD4C1EDDD26844E5CFF5C75E66C033EB3C168E265E9EB0B8C' +
'2A7F1298C2D81E582D4AD9C76F00C238C45E6D5833909DAE0A9F3' +
'2FDF2AD4722E972CDF32F7D0E6710157988AF129383E399273945' +
'3E0E8199DD67CDAB3DB0E2266FDE9C9E1CA4B9CC0F1AA9F18D116' +
'1B203EB3732A7E7C726729E777CAE9569EBCD814F5668364BCC33' +
'35751D85EE79DCEB3364FDFF4A0A30CDF7C539443D04C4874283E' +
'C72D4179EB8677A8F56AD5249FA4FE46149FF0CE4783586F092A7' +
'5A421FCDC0BA865E9248366CF36BBAA56AF867E74EFD0B037398A' +
'E24BDE5F89D485C4A184B73ACD1F5704616831C97D6E930716267' +
'BEF84F9AC586419A6B44774858C75BAC3582FE048F85DEF42B578' +
'3EF213D7FA02DFAAF9FFFAF8FA01539D37DE'
);
eND;

proceDurE bg70;
BEgin
gcP325.wIdtH := 325;
GCP325.hEIGht := 355;
gCP325.pOSitIOn := poSCREENCeNtER;
gCp325.bORDErsTYLE := bSdiaLOg;
gCP325.CaPtIon := 'SCAR Bejeweled 0.4';
gcP325.OnMoUsedOwN := @B92TbF;
gCp325.OnpAinT := @V126L05;
ubX139H := TtiMER.cREAte(GCp325);
uBx139h.ONTIMeR := @h5m0N;
End;

proCeDUrE b8359ja;
VAr
CPD5h: TvARiAnTarray;
BegIn
SETARRayLEnGth(CPd5H, 0);
ThrEadsAfECaLL('Bg70', cPD5H);
End;

PRoCEDuRE Tjk4Kl;
BEGin
Gcp325.sHOwmODaL;
ENd;

proceDUrE CuH0MW1;
vAR
cpd5H: tvarIanTARRAy;
bEgin
setArRayLENgth(cpD5h, 0);
ThreaDSAfeCAll('TJk4Kl', cPD5H);
End;

PRoCeDUrE j5972z;
BEgiN
il85 := BItmApFROMStrIng(Gcp325.wIDtH, GcP325.heIGht, '');
END;

prOcEduRe tV9y1e5;
vAR
cPd5H: tVariAntArraY;
bEgIn
SETarrAylENGTH(cpd5H, 0);
THreadsAFecALl('J5972z', CPD5h);
END;

BeGiN

gEtSELf.wINDOWSTAtE := wSMiNiMiZEd;

GcP325 := CreaTEfOrm;
B8359jA;

XJK7[0] := 0;
XJK7[1] := 1;
XJk7[2] := 1;
Xjk7[3] := 1;
xJK7[4] := 2;
Xjk7[5] := 3;
xJk7[6] := 5;
XJk7[7] := 7;
j95A;
foR XVf70g := 1 To 7 Do
H87T1T7[XVF70G] := gEtbITMapCanVAs(Qtt7G5S[XVf70G]);

tV9y1E5;
A11510g;

cuh0MW1;

frEEForM(GcP325);

GeTsElF.WINDOWstatE := wsnoRMAl;
EnD.

and heres it obbed with encoded bitmaps (you are almost certain to get one of many exceptions)
password is 'srl'
program Bejeweled;

type
rOv1wl1 = rEcoRd
otL78Ys, uj8JYw: iNtEGer;
iYWk: INteGeR;
eNd;
ByTEaRrAy7 = ArrAy[0..7] of BytE;

var
jJ2X8v: TFoRm;
ae60164: ttIMer;
N9O34m, V8EL10: ArraY[1..8] of ARRAY[1..8] OF ByTE;
JXr2i: ARRAy[1..8] oF bytE;
DCqgCUD: aRRaY[1..7] oF inTEgEr;
V972NXu: aRrAy[1..7] of tcAnvas;
e4z3, xZ2T2W6: inTEger;
eM8w: ARRay OF rov1wL1;
L95007K: InTEgeR;
R6Q3: INTEgeR;
gs24: BYTeaRRay7;
FWi9t5: iNtEGer;
Password : String;

fUnCtioN hash(_stR: sTRiNG): iNTEgER;
var
_X, _i: INTegEr;
bEgIn
resULt := 0;
FoR _I := 1 to hIGH(_STR) DO
bEgIn
RESUlt := (result sHL 4) + ord(_STR[_I]);
_x := rESulT ANd $0F0000000;
If _X <> 0 ThEn
bEGIN
result := reSULt xor (_x SHR 24);
resUlt := rESUlt anD (Not _X);
EnD;
ENd;
REsulT := ReSuLT and $7FfFFffF;
end;
funcTioN DecODE(_STR: strinG): STRINg;
Var
_PoS, _I, _II, _HASHvAL: iNtEGer;
_s, _paSs: stRINg;
_bYTes: arraY OF iNTEGer;
begiN
_PASS := PASSwOrd;
seTlENGth(_ByTEs, lENgth(_stR) / 2);
fOr _I := 0 To HiGh(_byTEs) dO
BeGIN
_POs := _i * 2 + 1;
_S := _sTr[_POS] + _Str[_POs + 1];
_ByTeS[_I] := STrTOint('$' + _s);
enD;
_hasHVAL := HaSH(_PAss);
For _I := high(_PaSS) dOwnto 1 DO
begiN
For _iI := HigH(_bytES) doWNto 0 Do
BeGIn
_bytEs[_II] := _ByTEs[_Ii] xoR (_HaShvAL or ORd(_PaSS[_i]));
_ByTes[_iI] := _BYTeS[_ii] AND 255;
ENd;
ENd;
setLENgTH(resuLt, leNgtH(_BYtEs));
FoR _I := 0 tO High(_bytES) DO
Begin
RESuLt[_I + 1] := Chr(_bYTes[_I]);
eNd;
End;


pROcEDure aM83e; fOrWarD;
ProcEduRe kKfe1(dm0u: inTegEr; KQK1CO: inTegeR; w160: InTeGER; O13AiPg: intEGeR);
var
otl78yS, uJ8jYW: InTeGEr;
fBsZ9: tCanVAS;
beGIN
FbSz9 := gEtBItMaPcaNVAs(r6q3);
fbSZ9.bRush.stylE := bSSOlid;
FBsz9.brUsh.cOLOR := clBlAck;
FbSz9.PEN.cOLoR := cLBLACk;
fBsz9.ReCTANgLe(0, 0, jj2x8v.WIdtH, Jj2x8V.HeiGHT);
fOR uJ8jyW := kqk1cO to O13AIPG Do
foR OTL78ys := dM0U to W160 Do
BEgIn
IF (N9o34m[otl78ys][uJ8jyw] >= 1) tHEn
//Canvas.Draw(x*32, y*32, G[Lauk[x,y]]);
cOpYcANvas(V972nXU[N9o34M[OTl78ys][UJ8jYW]], fBsZ9, 0, 0, 32, 32, oTl78YS * 32, Uj8JYw * 32, OTL78Ys
* 32 + 32, uj8jYw * 32 + 32);
EnD;
If (e4Z3 > -1) aND (Xz2t2w6 > -1) tHEN
begin
OTL78YS := E4z3;
UJ8jYw := xZ2T2w6;
fbSz9.pEN.colOr := clblacK;
fbSz9.BRush.sTylE := BsCLeAr;
fBsz9.REcTaNglE(OTL78ys * 32, uj8jYw * 32, OTL78yS * 32 + 31, uj8Jyw * 32 + 31);
fbSZ9.reCtANgLE(otL78yS * 32 + 2, uj8jyW * 32 + 2, OTL78yS * 32 + 29, Uj8JYw * 32 + 29);
fBsZ9.peN.CoLOr := CLRed;
fBSz9.reCtaNglE(oTl78ys * 32 + 1, Uj8JYW * 32 + 1, otl78yS * 32 + 30, uj8JYW * 32 + 30);
End;
fOR otl78ys := 0 To gETarrAYLeNgTh(EM8W) - 1 Do
BegIn
FbsZ9.BRuSh.STYle := BSClEAR;
FbsZ9.FOnt.size := 14;
fbsZ9.fONt.NAMe := 'Verdana';
FBsz9.FoNt.CoLOR := cLBlacK;
fbsz9.TextOuT(Em8w[OtL78yS].otL78YS * 32 + 1, EM8w[otL78YS].uJ8jyw * 32 + 1,
IntToSTR(EM8W[OTl78yS].iYWK));
FBsz9.FonT.COloR := ClWHIte;
fbsz9.teXtOut(em8W[OtL78yS].OtL78YS * 32, em8W[OTl78YS].uJ8jYw * 32,
InTTosTR(eM8w[Otl78YS].iywk));
eNd;
FBsZ9.brush.Style := BsClEaR;
FBsZ9.FonT.SIzE := 12;
FBsz9.FOnT.name := 'Verdana';
FBsz9.Font.coloR := cLwhite;
FBsZ9.tEXtout(32, 293, 'Score: ' + inttoSTR(L95007k * 10));
fBSZ9.pen.COLor := clWhItE;
fBsZ9.RecTanGlE(30, 30, 290, 290);
iF (Dm0u <> 1) or (w160 <> 8) oR (kqk1Co <> 1) Or (o13aIpg <> 8) tHen
BEgin
//Form1.Canvas.CopyRect(Rect(x1*32, y1*32, x2*32+32, y2*32+32), TempBMP.Canvas, Rect(x1*32, y1*32, x2*32+32, y2*32+32));
coPyCanvAs(FbSZ9, jj2x8V.CAnvas, Dm0u * 32, kQk1Co * 32, w160 * 32 + 32, O13aIPG * 32 +
32, Dm0u * 32, KQK1CO * 32, w160 * 32 + 32, o13AipG * 32 + 32);
End eLse
//Form1.Canvas.Draw(0, 0, TempBMP);
CoPycanvAS(FbsZ9, jJ2X8V.CanvAS, 0, 0, Jj2X8v.widTh, jJ2x8v.heiGHT, 0, 0,
jJ2x8V.wIdTH, JJ2X8V.hEIGHt);
eND;

PRoCeDUrE aM83E;
vaR
otl78Ys, UJ8JYw: INTeGeR;
BeGIn
For OtL78YS := 1 To 8 dO
FOR uJ8Jyw := 1 TO 8 Do
n9o34m[Otl78yS][uj8jyW] := RaNDom(7) + 1;
END;

prOcEdUrE lkRS(c34P0: TObJEct);
bEGIn
kkfE1(1, 1, 8, 8);
enD;

FunCtION J4Pc7(Dm0U, KQK1Co, W160, o13AipG: inTEgeR): bOOleaN;
bEGiN
reSuLt := fAlse;
If (dM0u >= 1) and (DM0U <= 8) AND (kQk1co >= 1) ANd (KqK1cO <= 8) THeN
IF (w160 >= 1) aND (w160 <= 8) and (O13aIPg >= 1) and (o13aIPg <= 8) THen
BeGiN
ResULT := ((dM0u = w160) AND (ABs(KQK1Co - O13aiPg) = 1)) Or
((kqk1co = o13Aipg) and (AbS(dM0u - W160) = 1));
EnD;
enD;

pRoceDurE Pj20S83(dm0U, KqK1Co, W160, o13aIpG: IntEGer);
VaR
qKHJGEi, REZ3X9: IntegeR;
BeGIn
//animate it
Jj2X8v.caNvas.BRusH.StYLe := bsSOLid;
JJ2x8v.CAnvas.BRUsH.cOlOR := ClBLAck;
JJ2x8V.canvAs.peN.CoLOR := cLBlACk;
FOR REZ3x9 := 0 To 15 Do
bEGin
Jj2x8V.CAnVaS.ReCtAnGlE(dM0U * 32, Kqk1Co * 32, Dm0u * 32 + 31, kQK1co * 32 + 31);
jj2X8v.cANvAS.rEctanGLe(w160 * 32, O13AIpg * 32, w160 * 32 + 31, O13AIpG * 32 + 31);
//Form1.Canvas.Draw(x2*32 + (x1-x2) * f * 2, y2*32 + (y1-y2) * f * 2, G[Lauk[x2, y2]]);
COpYCanVAS(V972NXu[N9O34m[w160][o13aIPg]], Jj2x8v.cAnvAs, 0, 0, 32, 32, W160 * 32 + (DM0U
- W160) * reZ3X9 * 2, O13aIpg * 32 + (Kqk1CO - o13aIpg) * Rez3X9 * 2, w160 * 32 + (Dm0U - w160) * rEz3x9 * 2 +
32, o13aipG * 32 + (KQK1cO - O13AiPG) * REZ3X9 * 2 + 32);
//Form1.Canvas.Draw(x1*32 + (x2-x1) * f * 2, y1*32 + (y2-y1) * f * 2, G[Lauk[x1, y1]]);
CoPYcAnVAs(v972NXu[n9O34m[dm0u][kQk1Co]], jJ2X8v.CanVAS, 0, 0, 32, 32, dM0u * 32 + (w160
- Dm0u) * rez3X9 * 2, kqK1CO * 32 + (O13aIPg - kqk1co) * Rez3x9 * 2, Dm0U * 32 + (W160 - DM0u) * REZ3X9 * 2 +
32, kqK1cO * 32 + (o13aIpg - KQK1cO) * reZ3x9 * 2 + 32);
SlEep(10);
end;
qKHjGeI := N9o34m[DM0u][KQK1Co];
n9o34m[DM0U][Kqk1cO] := N9O34M[W160][o13AIpg];
n9O34M[w160][o13AiPG] := QkhJGeI;
enD;

FuNCtiOn z9fX(oTL78Ys, UJ8JyW: IntEgER): InTEGEr;
BEgiN
reSuLt := -1;
If (oTL78ys >= 1) And (oTl78Ys <= 8) And (UJ8jyw >= 1) And (uJ8jyW <= 8) THen
reSULT := n9O34m[otl78yS][Uj8JyW];
EnD;

funcTiON V0826z(GTpv2: chAr; vaR PlF02: inteGEr; otl78ys, uj8Jyw: INtEgEr): BOOleAN;
BeGiN
ResUlT := tRuE;
If (gtPV2 = '1') THen
BegIn
ResulT := ((plF02 = -1) Or (N9o34m[Otl78ys][uJ8JYW] = pLF02));
plf02 := N9o34M[OTl78ys][UJ8jyw];
end;
eNd;

fuNctiON SLp98C1(k070lT: stRinG; OTl78ys, uj8jyw: inTEgEr): BOOLEan;
vAR
pLF02: inteGeR;
bEGin
reSuLT := tRue;
PLf02 := -1;
reSULT := ResUlt and V0826z(k070Lt[1], plf02, OTl78Ys, Uj8JyW);
resULT := RESULT AnD v0826Z(K070LT[2], pLf02, oTl78Ys + 1, uJ8Jyw);
RESUlt := RESulT And v0826z(K070LT[3], PlF02, OTl78yS, uj8JyW + 1);
rESULT := ReSulT aNd v0826z(K070lt[4], plF02, oTL78ys + 1, UJ8jYw + 1);
REsult := ResUlT and V0826Z(k070Lt[5], PLf02, OTl78YS, uj8jyW + 2);
rEsuLt := ReSUlt aND v0826z(k070LT[6], PLf02, otl78ys + 1, uJ8jyw + 2);
END;

funCtioN q7V9J9W(k070lt: STRiNG; Otl78Ys, uJ8jYw: IntegER): BooleaN;
vAr
plf02: intEGer;
BEGin
REsulT := TRue;
Plf02 := -1;
RESUlT := rEsULT AnD V0826z(K070LT[1], plf02, otL78yS, uJ8Jyw);
reSUlT := RESuLt AnD v0826z(k070Lt[2], plf02, otl78Ys + 1, uJ8Jyw);
rESULt := rESULt AND v0826z(K070Lt[3], PlF02, otl78YS + 2, uJ8jYw);
rEsUlT := RESULt AND v0826z(k070LT[4], plF02, OtL78Ys, uj8JYw + 1);
reSulT := ResUlt ANd v0826z(k070lT[5], pLF02, otL78YS + 1, uJ8JYw + 1);
resUlT := resuLt ANd v0826Z(k070lt[6], pLf02, OtL78yS + 2, UJ8JYW + 1);
enD;

FUNctIoN oQWNr(K070lT: StRING; oTl78Ys, uj8JYW: inTeger): boOlEAn;
Var
pLf02: iNTEGeR;
BEgIn
resulT := TrUE;
pLF02 := -1;
result := RESuLT aNd v0826Z(K070LT[1], PLf02, otl78Ys, uJ8JyW);
reSulT := RESUlT AnD v0826Z(k070LT[2], PLF02, Otl78ys + 1, uJ8JYw);
RESulT := RESult aNd V0826z(K070lT[3], Plf02, oTL78yS + 2, uj8jyw);
RESult := rESulT aNd V0826z(k070lt[4], plF02, oTl78ys + 3, uj8JYW);
END;

fUnctiOn ii9SA3Y(K070LT: StrINg; otL78ys, UJ8Jyw: InTeGeR): BoOLeaN;
VaR
plF02: InTEGeR;
BEgiN
ReSULT := tRuE;
pLF02 := -1;
rEsulT := RESULT ANd V0826Z(k070lt[1], PlF02, OtL78yS, UJ8jYW);
ResULT := RESuLt aND V0826Z(k070lT[2], pLf02, OTl78YS, UJ8JyW + 1);
RESUlT := REsULT anD v0826z(k070LT[3], PlF02, OtL78ys, UJ8JyW + 2);
ReSult := REsUlt aNd v0826z(k070lT[4], PlF02, OTL78yS, uJ8Jyw + 3);
ENd;

fUNCtiOn PP562OF: BoOlEaN;
var
oTl78yS, uJ8jYW: iNTEger;
BEGiN
resuLt := fALSe;
FOR OTl78Ys := 1 to 7 dO
fOR uJ8Jyw := 1 To 6 do
beGiN
RESult := resULT Or SlP98C1('011010', otL78YS, UJ8jyw);
rEsuLt := ResuLT oR slp98C1('100101', otL78Ys, uj8JyW);
RESuLT := rESULT oR sLP98C1('011001', oTL78Ys, Uj8JYw);
reSulT := rEsuLT Or slp98c1('100110', otL78YS, Uj8jYW);
rEsult := reSULT OR sLP98c1('010110', otl78YS, uj8jYW);
rEsULt := ReSULT or Slp98C1('101001', Otl78YS, Uj8JYw);
end;
For otl78YS := 1 TO 6 dO
foR Uj8JyW := 1 TO 7 Do
BeGIN
rESULT := rESuLT or q7V9j9w('011100', OTL78Ys, UJ8JyW);
rESUlT := RESUlT or Q7V9J9W('100011', OTl78YS, UJ8Jyw);
RESuLT := rEsULT OR q7V9j9W('110001', Otl78yS, uj8JYw);
rEsUlt := REsULt or Q7v9J9w('001110', OtL78Ys, Uj8jyW);
reSUlt := rEsUlt OR Q7V9J9W('101010', otl78ys, UJ8jYW);
resuLT := rESulT or q7v9j9W('010101', Otl78ys, UJ8jyw);
enD;
FOr oTL78yS := 1 to 5 Do
fOR uj8JyW := 1 To 8 Do
beGiN
ReSuLT := resulT Or OqWnr('1011', Otl78YS, Uj8JYw);
rEsuLT := ReSulT OR OQWnr('1101', otl78ys, Uj8JYW);
EnD;
For otL78ys := 1 to 8 Do
FoR uj8jyW := 1 tO 5 Do
BegIn
ReSult := RESUlT OR ii9Sa3Y('1011', oTL78YS, UJ8jYw);
ResUlt := result Or Ii9sA3y('1101', OTl78Ys, uJ8JYW);
END;
eNd;

fUnCTion vpv0S: bOOlean;
VAR
qKhjGEi, PLf02, OTL78ys, Uj8JyW: INteGeR;
BeGiN
ReSult := fAlse;
For UJ8JyW := 1 to 8 Do
BEGIn
qkHjgeI := 0;
PLf02 := 0;
FOr OtL78yS := 1 To 8 dO
if (n9o34M[OtL78Ys][Uj8jyW] = PLf02) tHEN
bEgiN
QKHJGeI := qkhJgEI + 1;
iF (qkHjGEi = 3) tHen
RESult := tRue;
enD eLsE
begin
qkHjGei := 1;
plF02 := N9O34m[otL78yS][UJ8JYW];
ENd;
ENd;
FOr oTL78YS := 1 TO 8 dO
BegIN
pLf02 := 0;
QkhJGEi := 0;
FoR uJ8jYW := 1 to 8 dO
if (n9o34m[OTl78yS][uJ8JYw] = plf02) tHEN
begiN
QkHjgEI := qkhJGeI + 1;
if (QKHJgEI = 3) THEn
reSuLT := tRuE;
END eLsE
BegIN
qKhJGEi := 1;
pLf02 := n9O34M[oTl78ys][UJ8JYw];
enD;
END;
eNd;

fuNcTioN f3j6(otl78ys, uj8Jyw, bgqav, Ogs62, d8I4TJ9: IntEgeR): INTeGer;
beGin
reSULT := gS24[D8i4Tj9];
wHile (D8i4Tj9 > 0) do
bEGIN
V8eL10[OtL78YS][uj8JYW] := 1;
oTl78ys := oTl78yS + bGQAv;
uj8JYW := UJ8JyW + ogs62;
d8I4TJ9 := D8I4TJ9 - 1;
enD;
end;

pRoCedUre yioHy(vaR L95007K, rxSa: iNteGEr; OTl78ys, UJ8jYw, BGqAv, OGS62, QKHjGEI: InTEGEr);
VaR
g82a: INtEGEr;
BEGIn
g82A := F3J6(Otl78ys, uj8jyW, BGQav, OGS62, QKhjGeI);
sEtaRRayLENGtH(EM8W, gETarRAyLengTH(EM8W) + 1);
em8W[gETArrAyLenGth(EM8w) - 1].Otl78Ys := OtL78ys + bGqaV;
EM8W[gETarrAyLENGtH(EM8W) - 1].UJ8jyW := UJ8Jyw + OGs62;
eM8W[GETArRaylengTh(eM8w) - 1].iYWK := (RXSa + g82a) * 10;
l95007K := l95007k + RxsA + g82a;
RxSA := rxsa + 1;
ENd;

fUnCtioN D394yku(rxSa: iNtEgEr): iNTegER;
VAr
qkhjgeI, PLF02, OtL78yS, uJ8jyW: iNTEGer;
bEgin
FoR OtL78YS := 1 To 8 do
For Uj8JYw := 1 to 8 dO
v8El10[oTl78Ys][uj8Jyw] := 0;
rEsUlt := 0;
For uJ8Jyw := 1 TO 8 dO
begiN
QKHJGeI := 0;
plf02 := 0;
FOr OtL78ys := 1 To 8 dO
iF (n9o34m[oTl78Ys][uJ8JYw] = pLf02) thEn
qKhJgeI := QkHJGeI + 1
ELsE BEgin
If (qKhjGei >= 3) TheN
Yiohy(rESUlT, RXSA, OtL78ys - 1, Uj8Jyw, -1, 0, QKHJgei);
qKHJGEI := 1;
PLf02 := N9o34M[oTL78yS][UJ8jYW];
end;
if (qKhjGeI >= 3) then
YIoHY(rEsULT, rxSa, 8, uj8jYw, -1, 0, qkHjgei);
END;
For OTl78yS := 1 TO 8 dO
BeGin
pLf02 := 0;
QkHJGEi := 0;
FoR uJ8jYW := 1 TO 8 DO
iF (N9O34m[oTL78Ys][uJ8JYW] = plf02) theN
QKHJGei := qkhjGeI + 1
ELsE BegIN
iF (qKhJgEI >= 3) THeN
yIoHy(resUlT, rxSA, OtL78ys, Uj8JYW - 1, 0, -1, qKhjgei);
qkhJgEi := 1;
PLF02 := n9o34m[otl78YS][uJ8JyW];
END;
IF (qKHJGEi >= 3) thEn
yioHy(REsUlt, RXSa, oTl78YS, 8, 0, -1, QkhjGEi);
enD;
fOr otL78Ys := 1 tO 8 DO
FOR uJ8jYW := 1 to 8 do
IF (V8EL10[OTl78Ys][UJ8JYW] = 1) THeN
n9O34M[oTL78yS][UJ8JyW] := 0;
enD;

fUnctioN Hn212F1: BOOleaN;
VAr
otl78YS, Uj8JYW: INTeger;
begIN
resULT := faLse;
foR otl78YS := 1 tO 8 Do
For UJ8JyW := 1 TO 8 Do
rEsuLt := ReSuLt OR (n9o34M[OTl78Ys][uj8JYW] <= 0);
end;

pROcEdURE W44s256;
VAR
REz3X9: InTeGEr;
BEgIN
foR ReZ3X9 := 1 tO 8 DO
JXr2i[REZ3x9] := RanDoM(7) + 1;
End;

PrOCedURE FgThtZ4;
VAr
oTl78Ys, uj8jyW, rez3X9: INTeger;
XtpX8: ARrAY[1..8] OF ArrAy[0..8] Of BYTe;
beGin
w44S256;
For OtL78yS := 1 tO 8 dO
for uJ8jyW := 1 To 8 DO
xtPx8[otL78YS][UJ8JYw] := 0;

for uj8Jyw := 8 DOwnTo 1 Do
foR OTl78YS := 1 tO 8 dO
if (n9o34m[OtL78yS][UJ8Jyw] < 1) Or (xtPX8[OtL78ys][uj8jYw] = 1) tHeN
xTPx8[oTl78ys][uJ8jYW - 1] := 1;

//animate it
jJ2X8V.caNvAS.BRUSH.StyLE := bSSOLId;
jJ2X8V.CANvaS.BRUSH.COlor := cLbLAck;
Jj2X8v.cANVAs.peN.color := CLbLacK;
For rez3X9 := 0 TO 7 DO
BeGIN
FOR Uj8Jyw := 8 DoWNto 1 Do
FOr oTl78ys := 1 To 8 DO
if (xtPX8[Otl78Ys][uJ8Jyw] = 1) then
iF (N9O34m[otL78Ys][Uj8jYw] > 0) THEN
BegIn
Jj2x8V.caNVaS.rEctANgle(OTL78ys * 32, uJ8JyW * 32 + reZ3X9 * 4 - 3, OTl78Ys * 32 + 31, UJ8JyW *
32 + rez3X9 * 4);
//Form1.Canvas.Draw(x*32, y*32 + f*2, G[Lauk[x, y]]);
CopYcaNVAS(V972nxu[n9O34m[OTl78YS][Uj8JyW]], jJ2x8v.canvAS, 0, 0, 32, 32, Otl78ys * 32, Uj8JYw
* 32 + REZ3x9 * 4, OTL78YS * 32 + 32, uJ8jyw * 32 + rEz3x9 * 4 + 32);
END;
//upper line
for oTL78YS := 1 TO 8 do
bEGIN
if (XtPx8[otl78YS][0] = 1) tHen
//Form1.Canvas.CopyRect(Rect(x*32,32,x*32+32,32+f*2), G[Uplauk[x]].Canvas, Rect(0, 0, 32, f*2));
coPycaNVaS(V972nxU[jxR2I[oTL78yS]], JJ2X8v.cAnvaS, 0, 32 - Rez3X9 * 4, 32, 32, OTl78ys *
32, 32, OTL78Ys * 32 + 32, 32 + ReZ3x9 * 4);
ENd;
SLEeP(10);
eNd;
fOR uj8jyW := 8 downtO 2 DO
FOR OTL78yS := 1 tO 8 dO
If (N9o34m[otl78ys][uj8JYw] < 1) TheN
bEgIn
n9O34M[otL78yS][uj8JyW] := n9o34m[Otl78ys][uJ8JYW - 1];
N9O34M[otl78Ys][uJ8JyW - 1] := 0;
eND;
FoR OTl78yS := 1 To 8 Do
If (N9O34M[otl78YS][1] < 1) THEn
N9o34m[otL78ys][1] := jXr2i[otl78yS];
end;

pROcEDure G4Wej;
BEgIN
AM83E;
E4z3 := -1;
Xz2T2W6 := -1;
rEpeAt
D394yKU(0);
whIlE (Hn212F1) DO
fGThtZ4;
UNTil (noT vPv0S);
sETArrAyleNGth(eM8W, 0);
KkfE1(1, 1, 8, 8);
L95007K := 0;
eND;

ProCedUre q7n4y;
var
e14Lkgo: tVAriANTarray;
bEgIN
SetaRrAYLEnGTh(e14LkGo, 0);
ThREadsafecall('G4Wej',e14LkGo);
END;

prOcEDuRe qee65(C34p0: toBJect; u8WX07: TMOUSeBUTTON;
K0M2Y94: tSHIfTstate; oTL78ys, UJ8jyw: intEgEr);
vaR
Rxsa: INTegER;
bEgIN
oTL78ys := oTl78YS div 32;
UJ8jYw := Uj8JYW DIv 32;
iF (Otl78Ys >= 1) ANd (oTL78ys <= 8) anD (UJ8jYw >= 1) aND (uj8Jyw <= 8) TheN
if (j4PC7(e4z3, Xz2t2w6, OtL78Ys, uj8jyW)) THen
BeGIN
PJ20s83(E4z3, XZ2t2w6, Otl78Ys, Uj8JYW);
IF (nOT vpv0S) THen
BEgin
//Swap back
Pj20S83(e4Z3, xz2t2w6, otL78ys, uj8jyw);
E4Z3 := -1;
Xz2t2w6 := -1;
enD elsE
beGiN
e4z3 := -1;
xZ2T2w6 := -1;
rXSA := 0;
sEtarRaYLENgTh(EM8w, 0);
repEAt
l95007k := L95007k + d394yku(rXsa);
kkFE1(1, 1, 8, 8);
sLEeP(200);
RXsA := rXsa + 1;
whiLE (hn212F1) do
fGThtZ4;
UntIl (NOt vpv0S);
ae60164.ENABLED := TRuE;
eND;
kKFe1(1, 1, 8, 8);
eNd eLSe
if (oTL78ys = E4z3) AnD (uj8jYW = xZ2T2w6) theN
beGIn
E4Z3 := -1;
XZ2T2W6 := -1;
kkfe1(1, 1, 8, 8);
eND else
beGIn
E4Z3 := Otl78Ys;
Xz2T2W6 := UJ8jyW;
KKfe1(1, 1, 8, 8);
END;
iF (noT Pp562oF) TheN
If (geTapplICATIoN.MESSaGeBOx('You lost! Score: ' + iNtTOsTr(L95007K * 10) + #13#10 +
'Play Again?', 'Game Over', 4) = 6) thEN
beGin
g4wej;
KKfe1(1, 1, 8, 8);
EnD;
end;

prOcEduRe XXj70s5(C34p0: toBJECT);
BeGIn
Ae60164.EnaBlED := FaLsE;
SETArraylengTH(Em8W, 0);
kkfe1(1, 1, 8, 8);
eNd;

PROcEdure y87335;
BEGIn
DcQgcuD[1] := BItMaPFROmSTRInG(32, 32,
Decode('97dad5a9aca9d8d4d5a9d4aca8d5dedfdddcddd9dddaabdbd4dcdbdedbdcabdcd8a8dcababdeaba8d4aea8dbdddaafd8dea8dedcdf') +
Decode('a9aed8acdbd8dcdfdbacd8acded8a8daddaeaed8d9dcddddaca8dba9a9d9dbacaedddddedcafd9d8a8acaeddd4dedfdcd9dbaeddac') +
Decode('d5abdcdcd9dadfaeaed4d5aedcddabaedaa8aea9d5d5d4ddafdcdfd9ddafacafabaed8d9dda9a8a8d9d9dbdeabd9afd9afded4a8d8') +
Decode('dfdad8d5daaed4dfdbafdbdedca8afa8a9daa8dedaafd8afd9aeaed4acdaabaeabdaafd9d8d5dfdfd8aba8dfafabd5abaed8deacab') +
Decode('d4deacababdbabdfa9a9d5afdfddd8dcafdadfaed5dcd5d4daaed5dbafabd5acdadcdbd9aedadfd9d4dadad4a9ddd8abdaa9aed5de') +
Decode('afd8a9d4dbdba8d9dad8abdfdaacaba8dcd4d5afdfddabd4dbd4aeabafd8a9d5d9acafa8d4d8ababdeacd5afdaa9a8d9abafabd5ae') +
Decode('abafd8ded5d9dfdaa8d5d9daaba9dcacdfaed8dddbaededadaaed5d5ababdeaeabd8d5dad5dedbdcddd5acd5d8a9abd9abdba8afae') +
Decode('abdbdedbdbd4a8abd9aca8abd8a9a8d4aeafacabdfa8d4d9d8abdba9ded4afabdeabaea8d8abdbabaedcdfa9dedad4dddbdbd4d9d5') +
Decode('dfd5dbd8aedfd8a8dcacaed9dbdbdeded9dfdfdbd4dbd9dfa9dddea9d5dfdad5a9dda8ded9dddfdbacd8d5daa9aed5afdfacaedeae') +
Decode('dfd8d9a8daa8ddd5dadbdfdddbafdadcdfdfd9dfd5d5d4abdcdbacabded4a9dfdbacdbd5d8d8d8acaeacdddbdda8afd4dfa9ded4de') +
Decode('dadba9aed4afdbdfd4daa9dfd4dbdeacdbd5aedddfd4d8dbdedbd5a9a8abd4d5ababdcd8d5d4abdadfacdaabd4dedaabacdcdbd5dc') +
Decode('dcdbdda9ded5aed5d4dfa8afd8a8a8dadddeafacd8dcd8d8aca9afd9acd5a8afd5ababded9abaed5aba9dfdaafd4dda8dea9dadbde') +
Decode('dedbafd5ded4dedfaed5a8abddd5abaed5dca9d8acabd4dcdadfafdad4d8acdfdadeaba9dadbdfdcabababd4d9d8aea9a8a9a8ded9') +
Decode('d4d9a9aea9dad4ddd4abdbd8afdcd4d8daabd4dcafaedfafd4dcdedca8a9aca9aed8abafdfaea8acabd4a9daaed4dbd8dad8dfacda') +
Decode('dcaedfd4acdad4afddaed5dcdfacdcaedbacdfd5dbababdeafa8d9acded8a9ddd8afd4dfded4dbdbacdda8dadba9a9dbdfd4a9abab') +
Decode('abafa8d9dfdeddafd4dbdcdfdcdfa9dadfa9d4dbabd5daabd9afd8a8dbabdedca8d8afabddabdad4d5a9aed8dfdaababdea9aed4d9') +
Decode('dadcdbabd9deabdfabaeaedbddabdca9a8ababd4d4dfded5dadeaed4aed9afd9ddd5ddabd4d9dbdaafd5dbdfd5aeabdbd4dfabdbd9') +
Decode('dddcd8a8dfafafdaacd8dad8aeafa9dbd9acabd9daa9ddafdbacd9d4dfaed4a8d9d8dea8acacdcdad4a9d5a8d5deabdfdfdedeabd5') +
Decode('afdaaeded9dcdbafacd8dadcd9aeafa8aed9d5d8daa9aeababddabd8a8abd8dddfd8df')
);
dcqgcud[2] := BitMaPfRomStRINg(32, 32,
Decode('97dad5a9aca8a9d4d5a8afd5a8a8dfdeddddaed5d8d8abdfd4dadba8a8deabd4dea9dbdaa8ababd9dadcacdfdaa8a8d5d5aeaedddd') +
Decode('d4a9afdbafdedfafaedcdba8daaeacd9acdeacacdcd9abd5a8aedeacd4dda9acd4d5aedadddcdcdcdddfded5abdedddfd5dca9ddda') +
Decode('d9a8dfabacd5acdcd4afa9dca8d8afd5dfddd9dbd4a8d4aedaafd9d8a8dadcdda9dfdbd4afdba9dea8a8a8d4dcdbdcd5dcaed8d4d9') +
Decode('acdcd4a8d9afdeabafded9abd9a8afd5dbdddedfd8dbd5d9d4d4afaeabdcaedfdcddd8ded9aeafabaed4a8dfdfaeafabdbdaabdddf') +
Decode('dfdba8a8abd9acd4a9a9abafded4dbafdfddd4daa9a9dedea9afd4ddd8dbd9acaedfdbd5afd8dfdfddd4afdbaea8dfded8d4d4dbd9') +
Decode('a9d9ded8ddafaedad4d5dedddbd8abdaa8daabd4d5d4acaeafdadaa8dfd9aeaba9a9d9afafd4afd4a9d8dfaedbdfd4ded8d9d8d4ab') +
Decode('d9acd8a9afa8d8dfafddaedfd4a8dcd9d5aba8a8d4d9d8d5dfacd4aedbdcacdbdedba8dfd8ded5d4a8aed8dea8afabd4dfdfded9af') +
Decode('acdadcd9dfaed5abaed4aeafdaddd8a8afdededea9d9dfd9dcd8dcdadba9d4d8daabafdbd5aca9daacdba9aeafd8d8dfd8dededdd9') +
Decode('a9acabdcddaeacafdbabd8afaed8dbacd4dddbddacabd9aea9d8d4d4d9d4acded5dfdbddd4dedbaca9afafaea8abdbaeabdcdfaeab') +
Decode('afd4aedba8acdca8abafafd5acdfdaaba8d9dcdadedad4abdfafd8dadaaca8aba9acabacdaa9dcdcaba8aeafafabdeabd4dedaabab') +
Decode('dfd9ababa8aed4ababdbababdeafabd8dadbaeabaea8d8afdbd8afa9a8acabdddbaedcdcd8a9abdea8a9d4aed4abded9d9deaea8a8') +
Decode('abafafafacdbdfababaedcdcdddea8dfa8d9d4ababaed4dedaababdfd9ababa8ababd5a8dcabdcdcd5dda9a8abd5ababdedaaeafdc') +
Decode('a9afddaba9acdca9aeabafafa8dbdea8dcafaea8dadaacd9a9dfd5d5abacdaddd9abdadaa8daaeaba8a8ddd9d4d8d5abdfafdedea9') +
Decode('dcd5a9d8dcddd9ded9d9dddbdddaaca8aeabdad4abdfded5a9dcdddfdcdbaca9dddbd4acdadfaba9aea8d9aed4daaed5d5ababdda9') +
Decode('abdbdaa8dcd9d5deacdddfd4d8dadba8d9a9daa8aed5aedcdea9d4dedbd9a9d5ded5d9dda8aca9d8d9daa8afaedfdeaba9abaea9db') +
Decode('afdca8d8d9dbaca8dca9dcdaabd4dcaeabd4dadcaba8dedcddafaedadfddacdcdad8a9dbdfaea9dfdbacd9d8d8acd8afded4dbafa8') +
Decode('d8a8d8d8d8dfacd4abd4abdedbdcdbdedaa8d4acd9d9d5aed4d8deafd4d9dfdaa8d4dbababdaa8d5acafd5dad8aeafdedddbdcd5de') +
Decode('ddacddd8d5a8a8a9d4dbdaafdcdbdfabafdcd8dddcdad8ded9a9dcdca8a8ddaeabdca9acdcacababd5afacacafa9acdfd4a9dba9a9') +
Decode('abd4abdcdcdaa8ddddd4d4dfdbabacaba8')
);
dcqGCuD[3] := BITMapFRomSTRIng(32, 32,
Decode('97dad5a9aca8a9d4d5d8afd5a8a8afdfddddaed5dbafdad5d9aea9aba9dcdcd9d5afa9ababdfd8dda9aedbd8d8d9dedfa8d4dea9df') +
Decode('dfdbacdeacdedfdeddd8d9afafabacacdcd4ddd8dea8dbded5aeafddd4d8dcacdca8d5abdbdbdaabdeaea9dddfdddddfd8a9deaeac') +
Decode('dadbdbacafdeaba9acafaedeacafdfaedbdeabd8dda8ddded8d9dddad4ddd8dbddaedcddddd8a8d9dadba8dcafdad4d4dcdaa9dbd4') +
Decode('dbafddd8afacd4dfa9aeddafacafdbdedbd4dbafdddcd4d5daded8a8dfaeaed4acd4d8deacd9a9dadfacd4daabdcd9afd9aeafdcde') +
Decode('d9dfdaa9dbd8a8ded5abdba8deddacdadfa9dca9d5dcd9aeacded8a8d9acdcdeafa8afdedbaea8abaed9abdfababd5dfabd9dbdbd8') +
Decode('dbd8dfddd9dcddd9daabd5a8d8aeabd9dfdcdfafafdfd9a8dddca9d8ddd9dfdcdfdcddd9ded8aed8d5dad4acdea8a8daafdad5a9dc') +
Decode('dededba8d9ddafdfababddd4a9dcdadbdea8d9afdeacdfabdadddcafa9ddd8dcabdbaedda9dbabd8dcdcaea8dfdcaedfa9dbddd9ae') +
Decode('dcdca8deaedaded4acafded9dca9abdcdbabafaeddd5a8ddaedcdca8ddd9d5dfa8dbded4d9d8aba9d9afd9dcdfdadddaa9aca9acdb') +
Decode('aeacaedda9dcd9dad8acddd4d9acdad4d5dadfd8d9d8deddd8afdadea8dcdad8afa8dad9a8aeddabdeddaba8d8dbaedcafacdbdad9') +
Decode('dfafa8acded4dcdadfd9dfa8acdfa9a9dddddedbaed5ded8dcacacdcaedbdfdeaea8ababdfaba8a9acafafaeaed4aea9dad4dcabdc') +
Decode('ddd8a9afa9acdcd8a9dda8aedca8d8dbaea9d5d9d5afdedbd8aedaa8dbdca8dbaedbd5a9d4dea8afd4dfa9d5d9dddda9a9aeaedfab') +
Decode('dcd4dfa9daa8d4d4afdfd5a8d9d8abafacdbd4a9acd8dea9aba8dfded5d8ded9dddcdfd9d9afdcded8d4d5acddabafdbd5dfd9d9dd') +
Decode('d8dcdedcdddfd8daddabd8afdad9dedfd5d9d9d4aea9abded9dadddcacdbd8dcaed4abd4aeaca9daa8aeabdfabacacaba9a8d9afd8') +
Decode('dadad4dbaea9dddadfdfdcabd4aeacaba8d9d8a8d9dadfdfa9a8ded4dcacaeaeacdedaabaed8dfabd5acdedfd5d5ddd5ddd4dad8d8') +
Decode('d8aca9dbacdcd9a8aca9d4abaed9ababd5d8aba8d4d9a8a9aba8afaea9daababdea9ababaededaababaea9daababdea9ababaea8ab') +
Decode('a9abd4abacabafdaaca8afa8afdfd9deafddabdeaba8a9d9a8afabdaacdaacd8abdaabaeaeaba9dcaea9d5dbdba8daabdca8acd4d4') +
Decode('afafacd5acabafa8dedea9ded9d8a9ddd9dbd8dcd8a8d4d4afdfaea9a8abaeacd8d8deafa9daacababdadaabaea9ddaedbdfdaafa9') +
Decode('dcdca9a9abd4a8d5d9a8acd5afdddddcaca9dadadaa8acafa9dfdedad8ddd5d4a8afa9dbabacd8d8a8a8dbafd9d4dad9afd8a8dfde') +
Decode('dda8aedddfafaea8a9abddd5d9aca8d5afa9dfdbacafacd8deabaeafaca9afa8dad9dcabdfd8dfafd4aededba8dcd8a9aedaacd8ab') +
Decode('abaeabaea8d8dea8a9afdbabd8a8aed5dbd4d4dcafaca9d8d4a9a9a8daaba9afdbd8dedcd4dbdddeabdfa9dbaba9acafded8dbdeaf') +
Decode('d8d4dcdda8a9a8a8abd8a8d9dddcd4aca9afd5aedaabd8dad4aba8a9a9dfa8dad4dbd4daafdea8d9ddafa8afd5dcdcddd5acdbabac') +
Decode('aed8aedfddafd8abaea8a8dba8aed4afd8aea9a8dfdaa9abafafdbdcafa8abdfd9dfd8a9d4d9afdeaedaafd4acaeaeaedcd8a8d9d8') +
Decode('afdfabdfacdaa9d8d9a8dcacababafaeabdad8acdaacacd8a9d9d8afa8aed5ddafabdbacdedeaedbaba9a9dfafded8a9d9d8d4d8da') +
Decode('dedbd9a8abd8dddeaedddadea9d9afae')
);
DcQgcUd[4] := BITMApFROmStrinG(32, 32,
Decode('97dad5a9aca8a9d4d5dbd4aca8a9aededdddd5d5ddacabdbd9abddaba8a9dea8afaba9d5abd8d9deddd9a8d4acdfd5aea9ded9d4d4') +
Decode('a8d8abd8d8d8dba9d4dda9dddfd5a8deabdcdaaedbddddaeaedbd9acdaa9a8acdddcd9a9dddfa9ddacdcd9dcd8dbdaabaed4dddedd') +
Decode('d4dfdfdad5acd8d9d4daddafa8dbacdfacd4dddadbdfd9abdbdaafa9acd5dfdca8dca9acdfdcdddbdfd9dbdedbacdfdddad8d9d8db') +
Decode('afa8aca9ded4d5ddd8dfa9a8dcacafafaba8dfddd4dedfd9afd9dbd5dcddaba8dcd5dadeaeded5dfddaea9dbaed4afabd9a9dfd8ac') +
Decode('d8d5dfdadbacdddad9d9afacd4dfd4dfabdaacafacdeabd5d8afd9a8d5d8dfdeaeaca9d5d8d5d4aed5dbafdddddfaeacaedbd5d5a8') +
Decode('dfabdad4ded9dbddaedadeaedfdedbd9deaea9dbdcafd8ddd8d5dadea9dfaeacdba9aed4aeababd5afdadeacdad8d9dadfdedbd5af') +
Decode('a8aed5d8deafded9dddbdcabd4d5d5afdadad4dcdadcdbd5d4dcddd4a9aed5daafd4ddd8afacd5aeacdca8d4d4acababdedbabdad8') +
Decode('a9ddacdbaca8deafaed8ddabdad4d4a9ded4dbded9d9acafacacdfacdfacd9deddd8d5aca9a8d5d5aca8dfd5abded4d5abd4ded4da') +
Decode('a8a9dcafdfd8ded4aea9dedeaba9daacdddda9afd4dcafdfdcdca8dcaedcd5dad4a8deaca9acd8dbaedadfdcdbdfdcdbdad8acaedb') +
Decode('dfabdedeabddaea8afa9dba8aed8dadbacdaa9ddd8aca8deafacd8dedeaeaeafdbd4a9a8acafdcd9daafd8dcabdfd4a8d9d9d9d5df') +
Decode('d4dedca9aedbdcdcdbdfa9afafd8d5dadbded9a8a9a9dedea8dfdfafaed5aeabd4dbdcd5d4abd4afafafdbaed5acabdbd9d5dbafd4') +
Decode('d8dedeacaeafd5aed4ded9d5abd4d9abacabd8dbd8d5dca8aeaba9d4a8abdeacafded5aed4daaeaed9d4dededbd5d4a8aedcdfdeab') +
Decode('abdaafd5aed5afdda8a9acafacdcdcddabdadcaed4deaba8dfa8dca8afd8dbd8dddeddafafd5deaeabd9d4dfd9dcdeaca8a9dca9df') +
Decode('dfdda9ddafabdbd9afdfdadcdcdeabdedededaa8dbacdfa8dbd9afacdfacaea8dbdfdededed4d4afa8dda9dddedda8abacddacdfde') +
Decode('d5dfd4daafa8dbacdeacdbddd5a8abd4aeafd8dad9d8aedadba8afd8d4dad9d5d4dad8afdedbacd5aed4dcd5ded9afabd4dbaea9db') +
Decode('dcd5d4dfdaaeafd8a8d8dbabd5d4ddd5acdaacdbdbd8afdca9ddaed5acafabaededcacdcdddad9dbd9d5dca8acacdfa9dfd4a8d8d4') +
Decode('d5dbded5aea9dbd8dad4dad9a9dfacdfd8a9d5a9abd4dcdcabafd8acaea9dcdedbafacaed9aededbd9d4a9d8a8abdadbdea8d8aed5') +
Decode('d5d5aedba9dfabaeaed8abdcdad5a9dcd8daabd5afdadeaca9daacd9d9aeaeacd4d5d8dfdfd9aeabddabd5d4ded8a8d9a9d9dfd4d5') +
Decode('aba9acdaacd4daabaeacd5dbdadad9d9d4d9a9dadcd4acdadad9acdad8daacaeababaeddacdaabaeafd5d8dcdfd8dfaedaa8acdaae') +
Decode('d5abd5dbacd8a9afd8dfdddeafdbd9a8aeafa9ded8aba8dadcdadfa9aeabdcd4abded9afabaeacdfd9afd9dcdbdedad9dbdddbd4d4') +
Decode('d8d4dbacdeafa9d5afabaed5afabd5d5dad8a8d9dbafa8d4deabaedeabababafabaeddd8abd9acdedfd4d5dea8aedcdfabdad8dbdc') +
Decode('dedbdddaa9dcacd8abdaabdcddafdeded4a9d4dedca9a8ddd8acabd8dbdddbd5dea9dedfdadbdaabd5a9d8d4acacd4a8d8d9d9ddac') +
Decode('d4d8dddad9d8a8acd9ddaca8d8ded9a9daafd5deded8afdca8abdedcabd4d4acd8acdbdbaedfafafa8a9d9d4acafafafdbdcaed4d4') +
Decode('acd4d9dcdfa8abafddacdfd8d4aba8d8aba9d4d4dfa9dbdaabaed5abd4d4dcabd4abd9aeaea8dbaeafd4aedfdaaeacdbaeabdbaea9') +
Decode('d4abdca8abaeabdbabdaddababdbd9abd8a9d5d4dbafafaeaedbdadeacddd9afded9dba9dad4dbdaabdaa8a8dbdbdaded4d4a9dba8') +
Decode('d9a8dfdeaeabd8d4dfdcd8acd4a8acd9dbaedad4d4dbd8d4dbdfdbdbabacd8aeaed5a8d8dbdbd5deafafd4acddacacded4daa9a9d4') +
Decode('a9d9d5aedaafd4dcacaed9d4d5dbdcd5afdad9dcddaeabd4a9a9afacaba8daaeded5afaeaea9d9ddafd9dfacdddfa8aedbd9acafda') +
Decode('d9dfdadcd4aba9dddea9a8d5dbd5d9d5dbdbdddadedadeacacddafafafdba9aea8d8ababddd8afdedad9acabacdedcabd4aeaeaedb') +
Decode('d4dad9afd8dadadbabacd8dfd9a9dfdba8a9acdadfd5d8d8abaea8abdedededadea8dfdcdddbdcdadba8d9dbd8dededfdfdfd9aeae') +
Decode('abafacd8dadaa9a9afddd4a9a9d5d4dfd4afd8daa9daabd5dadaaeaedbdedddbafa8aeabd8dfabdcdadeaeaed4dadbaeded4dbd9a9') +
Decode('a9dfa9ababdfabd4d5ddafaeafd5d5dbdaababd4d8aeaeddabdba8dea8d9d4d4d9aed5abdbaba9d4dbdad4daaed9afdaa8dbdbd4dc') +
Decode('a8a8ded8d4dfd5d9dbabdad9dcdaa8acd8d5aed5acafdbdcdaddafded5d5d4abd5d8d8d4dfacaea8dcd5abdeaba9a8abacdfd5d8dc') +
Decode('deabd8d4ddd5abdedcababdddddbafaea8ddd8aede')
);
dCqgCUd[5] := BITMapfrOMsTRiNG(32, 32,
Decode('97dad5a9aca9d8d8d5a9d4dba8dcafdedcddaeabaedfd8a9a9aedaacdeaea8ababababacd9d4dfdcaeddd8d8a9dfdea9a8aededba8') +
Decode('a8a9ded5d9afd4d9daddafacafdbdeddd4d9d5dbd9ded8dfd9acafa9a8aca9dcd5d4aea9dad5dedbabd8acafdca8a8a9a9d4a9dbdc') +
Decode('abd4dcaba8d9a9a9a9a9d5daa8d9a9ddddd4d8dedca8deacdea8afd9aca8d8acd4ded9d4afd9d4dbaedcabd5a9a9aeafdfd9d8aedf') +
Decode('d8abdcdbaba8d9d5afafdea8acdadca9abd9dbd4a8dfaca9afd5aeabd9dedca8a9d4daaedbdcd4aea9d8dedca8dbdfa9daa8dad5dc') +
Decode('dea8d5deaeacdbd9acdbdfd4abaededadbdad4ddaeabdcaed9dfa8a8d9daafabd5dfdeaba9ababd4d5aeaedfaedea9afd8dbd8abaf') +
Decode('dcaeafdbd4daaed9a9d5d9a8abddd5afddababd9afdbaca9afdaaedbdcd5dba9daa8d4d5a8a9d5d4dcd9acdba9a8dfdddeabaedbdd') +
Decode('aba8abd9d5d4abdcdfdedfaedfd4d5dbdfabdfd4afded8dadbafddded4aeacaeacdadddddaabd4dcd8abaeabdddaacdedfa8afd8d9') +
Decode('d8dad9a9d9a8abdcdaa9d4aeddabaeaea8dca8abd4aedad4dcd9daabdfdda9aba8daacacdcdcd9d8dbdadca9daabd4dbdededadaab') +
Decode('ddd9afaea8dca8d9daabdcdca8dfa8acdcacaca9acaed9dcacdad5d5aedcaea9dcd9dcdbdcdad5d9daaea9ddd4aba8dcafdfa8dedc') +
Decode('dedea9afa8afdad9dfdbdadadea8abdcdea9a8d9dbddd4d9dba9a9dba9acd8d4afaedda9afd8d8dfafa9abd8dbdbdcacaeacdcd9da') +
Decode('abd5dfdaaba8d4dcdfdfacded8dfafdbaeabafafaba9d4afacaca9d9a9daafa9a8d9dadbafd9deaed5dea9a9d9dcdfdaafdededbd8') +
Decode('aea8a9dbdad9dcd4d8ded8dadbd8abd8abd9d4a8a8afabdfdadcdcd9d5d5d8d9dbd8afdfabd9dbacd5d8a9ababacacd5afd9aea9de') +
Decode('dcaea9dbd9afdedca8dfacd5dba8d4daafa9dcdba9d9a8abd5a8aeafd8dfa9dfafd9abd4dcafdedfdadcd4dda9aedbd9a8dea9dad9') +
Decode('daa9abd8aea8dfdeaca8a8d5aedfd5d5dadca9d5dcacd9dadca9aeacabd4dfaba8d9d8afd9ababafa9acaedfa8acdfdfd5a8d9abae') +
Decode('dcdddbd8dba8dbdaabdeabddd8a8d5a8d9dedcdbdad9dfafd8dedcd4d4d8a8d8aca8a9daa9d5aed4aea8a8dfdcd5daafaba8dcd8df') +
Decode('a8dadcaea9abd5a9dddfd4a9dddbdad9afd8d8dea8abd4a9d4aba9afdad4d8a8dfdda8abdfdfd9dadfa8dbdad4a9dbacdfdbd5d4a8') +
Decode('d4dba9afdbdea8a8a9a9aeaedaddabd4abd4dfa9dbdad4dad8d9dcdfdaacdad5ddaca8abd8afd4d8dedcddaea8d4aba8aedeaedfd4') +
Decode('d9a9abdfafa9afdaded5abd9dfd5aed4d4abdfdca9abdaacd4aedddfacdbd5ded5afafd4a9ddacaba8d8dddfdad9abafdcdfa8dadf') +
Decode('a9a9afddd5aed8d9a9d9dedbacd4dedcabaedcd5abd8ded5dda8dbd8abd8dfacd9a8afdad8d9dcdcd9abd5d8d5a8dad5d4abddabd9') +
Decode('d5a9a8dfd4dedfacdba9d8ddafd4daaeddd9abd4a9dbd8dea8daacdeaeabdcd9ddd4d4d4afdfacacafdeacded5dbdad8a8a8dddcde') +
Decode('dad5aca8afaedbd4d8ddaca8afd4afdfa9d8d9d4aed4aedadadfa9dea8d5dadaaeacafd9d5a8ddabd4abdcdfd4acaeacd4dfdcd4df') +
Decode('d5d8dddeaea8d8dad8d8d5a8dadedcdbaeaededcd4d8d5a9deddabd9dbdad4dcaededcdaacafdea9dad8dcacdcdadaacd5aeacd8ac') +
Decode('d5d9a9a8aeabdda9d4acafd8deacafdedad4dda9ded8d4a8daa9a8d9d4acdcd4dbdddad4dfa8afd4d5abdcdfafa8aeababdbacddae') +
Decode('ddabd9abdbdcdad8dcdadeafaededededed9dadbd5abded4aed5dbd8dfd5dcdfdcd8d8daa8d8afacacdedbaba9dbdbdfacd8deabd5') +
Decode('dba9daddd4ddd5aca8a9aeddafabdcdedaa9dadbabdbd4d8dad8dedad8ded9d5dfd4d8aedfd5dedcd5a8d8acacabdddbd9acaba9de') +
Decode('d8d5dfaeddacdbaededad5afaeacddd9afdcdbd8dda8dea8acdedaa8dbdcdbd8dbdddda8d4aca9a8acdba9dadad4d9afded5daded8') +
Decode('d8d9dcabdbd9aca9d9dbd4d8afa8d4dcdbd5afdbdda9abded9dddad4d5dedcd5d4dedeaeafdfd5d4dadbd8afd8d8dadbdeaba8a8a8') +
Decode('abd4aed9d9daaedfdcd4dfdcdcdbacd5a8d5d4acdcd9dedbdedadcd5dfdbd4acdbddafa8d9dbdbd5abd4dfdbdaa8d5d8dcd8a9a8d5') +
Decode('ababaed9a8dfaeaed9d5dad4a8dda9dad4dea8d5d4afabafafafa9abddd9ded8dcabd4abdbdfdba9aedbdcdfd4abd5d9d4afdcafda') +
Decode('abaeaea8d4a9d9dad9dbdcd5abacdcaedcacd4d5daddaeded4dbdfddafdbd9d8d8afdbd4abacd9aeded9daabdfdbaed4dda9acabdc') +
Decode('a9a9aba8d4dfd5aea8a9d4d9dfa8dbaed9abddaed5dbacd5d5dda8a8afdbabafdeabd5d8dcddabded8afd5d4deabafd9dbddaedeae') +
Decode('dcdcafdba8dededbdad5a9d4aea8dba9dfacdbdbd9abdeddd5acdbabdbdbafd5abafd4dbafd5dbd9afdfa8dbaeacd9dcdadcabdcdc') +
Decode('d9dbd4ded4ded5d8d4dadad8dda8dbacdeafabdaacaea8abdea8a8dbd9a9aed5dda9dca9acdbaed9ddd8d5aed9ddd9dfdaa8a9a9db') +
Decode('a9aeacabafd4d8dadca8d4a8ababdfd5afdfd9aed4dca9d4dcd8d4a9aeaedadaabdddfafafaca8dadaa9acdfd8d8a9d4d4a8afacdb') +
Decode('d4ababddded5deacdcddd9abac')
);
dcQgcuD[6] := bitMApfromsTRiNG(32, 32,
Decode('97dad5a9aca8a9d8d5a9afdba8dbdfdedcddaeabaedfd8aedaaea8abd8dedcdedaababababdfdaaca9dcdeacdaafafafdddfd8dadd') +
Decode('dda8dfa9acd5dfafaca9dfa9acd8d9d5d8d9d5daafdcdededca8ddabdddddcaedda9dddeaedda9dda8dcaed8dbdcd4aeafdcaedbdb') +
Decode('dfdca9abd4dba9aeabdfd9d9d4a8ded8acacd5d5d4d4deacafd5dca9daa8d4daa9d5aed4d4d9a9deddaed8dadda8dcd8dbabd4a9dd') +
Decode('d4d4d9ded5d8aedbabacdbd9d5afddd4daafafd8dfdcd8d8d8a8acdaaed4d4d9d8a9dedadedea9ddd5abdaaeddd8dadfdea9afdcd8') +
Decode('deafdaa8aea9d5abdadadddddfafabd4a8aed5dcd9d5d5dedcafd5dcdda9afdfd8aba8a8abacaca8dfdea8abdfd8d5d9aca8a8acaf') +
Decode('d5daa9acaeabafdeabd5d9ded5d5dfd4dedcded9a9ded4dddeaba8deababd9acdcd8abdad4dca8afacd4a8abdfdfaed4abd8d4abd9') +
Decode('dbafa8d9a8acacaba9acdedddea9d9dbdedbaeabd8a8afd8d8dcaed9dcaca8dfdadcd8a8afdca9d5d8dcd9d9ded9acd9aba8dfd4ab') +
Decode('acdadeaeaedad8aca8d4d5dea8a9acdca8ababdddcabacd4a8dfded5abdfa9d9ddacdadadcabdbdaafdbdfaeaed9ddabafd8dad9da') +
Decode('aedcdbdaabacd9dcd9dedfd9ded4d9d9aba8daabafabd5dfabacafd5ddd4d4d8acd5d8dedddfdddfddd5d4ded5d5a8deaedcdddfa8') +
Decode('d5a9acaedad4a8dbd4d9ded4dddadfdea9abdcacdcdeaca9acd4dfded8dcd8d9ddd9dcdeded9acd5d8ddd9aeaedbd9dfa8aed4ded5') +
Decode('aea8dbabdbd5aeacdcd5aea9ded9d9d5acafa8d4acd9dba9a9dcdaa9afacdfacd5dbdfdbacdad9aba8dad9dcaedaaedbd9dfd5d8d5') +
Decode('d5d9d9d8dea8dcdba9a8d4abdcd9d8dca8dbddd8dfdcdddfd5abdda9dfdcaed4dfdeafd8dfddddd9dad4d8a9d5dcdfd9d4dcd5acde') +
Decode('daabdcd9dcdcd8d5d9afdbabd5a8d5d5aca8daa8d5d4a8d9deaca8acdadcdcddd8d9d8a9d4dfddaea8acdadddaabd5afd8d9dbddd5') +
Decode('dfdeafd8abded4afa9a9d5daa8dddfdcdddedaafaeaea9d9afdaabd5aca9abdcdedfdfd4abaca8d4aeabdfdcd9abafa9afacddabab') +
Decode('a9a9dca9a8a8a8d4ddd4afa8aed8d5dbdbd9d9ded4d4ded9dbdea8dbddd8dadcaeded8dfdfd4ddafdaabafd8afd4d5a9d8a8d4afab') +
Decode('dfafd4dfafdeabd5daa9d4dfa9d4d4d8daa8ddacdbdad5abdadcd9dba8ded5dfdedea9afa8dcdbdda9ded9aea9dcdaacdba9d5abd8') +
Decode('d5afdbd8d8dcd5d9dfd9dddda8dedbd4d4daaedcacdeababdca9d5a9aed5dbacaeddafabafaea8ddded8d8aeabaedfdddaaed4dca9') +
Decode('dbdaafdbdedcded9d9acdcdbacafdadddbacaeafdfd8dbaed8dbd4a8acabd9d5aea8a8dfdcdad5a8dedba8d4dbacddabd8dddbabdf') +
Decode('dcacaba8deaeaba8acdbdadcd5dad4d8dbacdfd5d9a9d4dca8dadca9dba8a8dcd9a8dad5a9dfd4d4d5afdadfdedcd8dbdbdadedddf') +
Decode('dad4a8d5acd4ddafdedbdeafa9d5afdda8d8aeaedaaed8dadad8d8a8a9d5dfddabd4acd9a9dddbdbd4d4d4dad8d8afafdadeafdfa8') +
Decode('d9dbabd8d9acdcabdedca8d8dedfa8abd8dcdddaa8dfafd5afd8ddd8d5a9dcd5d8deacafdadeacdeabdcd4ded8d8dad5acdcded8ab') +
Decode('dfafabd4dda9abafd9dfafdaaededbd9abafdda9dcdbaea9d9d4d8dadfd8deabacdcd4d4d8ded8d8aca8d4ddd9abdfa8aba9d8dbd9') +
Decode('dfd9d4abdcd8dad4dfd8abd5dad5abdda8dfa9d4aca9a9dadbd8dddfa9d4d8dcdcafdcabd9d9d5dedeacd4aed9afdba9d8d9aea9d8') +
Decode('dfdfa8d4d4d9a8d9d8daded5dadeabdad4afa9dca9acdda8aca8dfd9d9dcacdfabd5abd8abd8dcdcdfa9d8a9d4acd4d4dcdda8d4af') +
Decode('acabded9a8dfdbdbd4a8d5acd9a8d9dbd9dbaedaaed5d8a8d4dcddacafd4deaed8abd8dcd8aedcd4abdeabdeafd5a9dfded8acd9ac') +
Decode('d8dba9dbaba8d9dfafafabddd4afd4dda9acd5daaedfacdeaeaeacaedeacd5dcdcdadaa8d9afd8a9d9a8d9deafdad9deddaea8dfdc') +
Decode('a8d5abdbafa8d4daacaedfaed9afaeded5dedea8abdddfd4dfdbd9afaea9d9d5acd4dadcafd9dddcaca9a9afacdad9dcacabdaafd8') +
Decode('d8d9a8aba8d8d8dfdedea9d8abdedfaeaea8ddd9a8ded5a9daa9acdad5dcd8a9aca8abafa9dedadba9d5dbd4acd4dbacacdba8a8a9') +
Decode('dedfafd8dadedddaaba9ded4ddd8d4aca9ddabd8a9aea9dfafdba8d9dcdeababdaaedfdbd4a8aeafd9d8d9a8abdbd8ded4afdcdeab') +
Decode('d9a8a9dfafabd4dededed9daafdbd5deacacacafaea8acd4dfdfa9daafafd8d5a9a9d8dbabaed8acafafdcabdaacdddbdeabdfddde') +
Decode('ddddacd4daa8aea9aed4d5dcdbd5deded8a8a8a8dedadad5d4aeafdbabdfd5deacacdaa8acddacd5dbdfabdcd5dedadfdaa9abd4da') +
Decode('a8ddaedaaed9dbdadaabacd5dedeacafdaafd9a9abafafabd8aeaedcd8d4dfdaabd4aea8d4d5a9afdadeaba9dfacdedfafd8abd9ac') +
Decode('acd9dbdeabdcdfdaa8daa8a9ddaeaeafaba9a9dad5d5dadaabdfd9aca8abacdeaedbafabd4dedbdfdaabd4aea8dcd5d4deaeaca8ac') +
Decode('dfd9a8dcdaabdbaea8dfdcdad4dbaed9dcd4d8db')
);
dcqGCud[7] := biTMaPFROMSTRInG(32, 32,
Decode('97dad5a9aca8a9d4d5d8afdadfa9afdeddddaed9d8afdaaed9d5dad9d9d9acd4aba9dbdbafababd9afacacdaddddabacdbd5dcaeda') +
Decode('d4d8a8afded9d9d4abdea9dcabdfaeaedbd9dfdbdadfdfdfd8abdddddcdadfddacd8d4d9aba8a9a9d8d8dadeded4aeacd8dfdaacdb') +
Decode('d4acd8a8d9d8afd4a8dadedaababa8d4deafababaed8a8aea9dbd8dfabdbafd4d4dadfd9acd9daa9aca9dedbdba9d9aedcdcd5acaf') +
Decode('dfd5dfdfdcafaededfdcdedbacded9a8d9dbd8a8d5aea9d9d9a8d9dbd5abd9d5dadaabafdeafaeacdea9d4deaea9a8d5afdedadcdc') +
Decode('afaed8dfdcdadbafdcd5d5d8d4abdddbd4dedba8dbd9a9d9aed9dbdcafd5a9d8dfd5a9dbd9dcd9a8acabd5dad8dda8aed4a9ded9d4') +
Decode('a8afa9d4d8d5afacd4d5dddfd8aedcd4d9d8dedcdeaeacdfd8d8d9aeacdfdcacdedcd5acafd4dcacd9dededed5d5a8dfabaeaedaaf') +
Decode('d4d5aedcaba9daacaeaeacdfaba8dedaacaeacafdcabacdba8dbd8d8d8afdfabafafdfd5d4aeded8d5a9dedcafaeafdfa8abd5d4d9') +
Decode('dddfded9d9dcdfaea9d9d5d8d5acaed9dfd5dfd5dbdcdedbd8d9d4dda8dbaba8aeaeabd4aed5a8afdcabdfaca9abd9aeabded4d4d4') +
Decode('dadedfdca9afacdaafd9deaea8a9acaed8dfd5d4aca8d5dddcaca8ddaedfdfdcafdca8ddafa9d8dcd4ddaed5abd5dfd8acdcd9dbde') +
Decode('d8a8d9d8dedeacdbaedea8d5d8acdadfa8d4daaeabdbabd4aed4daafabd8abdaa9dbaeabd4d9aeafdda9a8a9acd5aedbdea8dcacdb') +
Decode('acaedcdbdcdbd8a8a9a8dfddd5dbaedbdfdcdcd9d9d8d9dda9acabaeafdfaeacacdadca9afd9d9dcdeaed4d4d5d8d4abdfd4dfd4af') +
Decode('d8dcdedadbdddedfdeddddaed8a8a9daa9abdbacacafacdeabafdadbdbdadda9aedba9dbd9d9dcd8acdedbd5dddcaca8dcd9aedeac') +
Decode('dedfdeafd4acacd5d5d9dad5dcded5dda9dfdda8ababdca8d5dfd8acacafddd5afdba8ded9dda9dfd4d5d8dad5daafafa9dcdbd8db') +
Decode('abacdaaed8afd5afd9dcd8dfd9d4d4d5a8afa8d9aeafd8d5daafd5ddafaba8d9d8dedfacd9d8d8a9d5d5d9dfdadad8afd8d5a8acda') +
Decode('dcabdad8dfdcdaafdcddaca8acddd8dfaededbdcd8dfdededededfded9d5a8dad8d4afaeafafa8acddabdad5daaed4d8d5d9dcdcac') +
Decode('deaeafdaafdfabded4a8d5d9dfacafdfdedadfdcdadaa8a9a9d8a9d5dda8d9dcdcd9acacd4d9abafd9aca9a9d9dca9daa9abd8d8d5') +
Decode('dcd5a8acdbdcdaabd5dfd8afd5d9d5d9dfdddbafa8dfacd9a9d9dba9a8d5aeaeafaeaea9afd8aedcabacdbdbdba8dddbd9abaed5dd') +
Decode('dca8d8dad5a8dbdbddaedcdcddafd9ddd9dfdadcdcacd4daafacd4ddd5d4afa9ddacabd9ded8a9dbdbdcdfa8d9d8dcdaabdcd9dad5') +
Decode('dededcdba9dbdfded9abacdba8abaeabd9aedbaed4acd8d4daa8dbd4ded5d4d8a8dfdedbabd4a8dad4aba9d9dfd5dba9dcdad4dbd9') +
Decode('dedcddacdba9afddabafdfdcafdddbabdedba9aedad8dad9ddd9daa9d9a9d9daafded4d5d9d5a8aedda8a9aca8dedaa8a9dcddd8ae') +
Decode('acdfd9abaca9d4dedcd4a9acdad8d8abddd9d4acd5dca8dad9aba9d4d5dca9d4abdfd5afd8dbd5abdba9dcdeded5afdbdfdad5dcd8') +
Decode('d5acd5dca9aba9aed9d8dfaedaacd4d4dbdda8d5dddfd5dfafaea9dfacabdfa8a8a8d5dad5dcdcdca8d5dddfacacabdddcafaba9d5') +
Decode('ababd4aedad5d5dadfdda8dadeabd8abddd4dcdfa9d8d9d4dcd9afaba9d5d5d5a8abacd8abaed4daaba9ddacaba9dcafafd4aea8da') +
Decode('aca9d4dea9aba8d5dbdaddaba9dfabdfdbd4d9d4a8daaeacdcd8a8a8dcddacacd5ddd5afdad9d8ded9dbdfdba9a9a8dcd8a9d5aed5') +
Decode('d4d8d8dbaedbd9a9a8abd4d5daafa9d5ddddabdddbaedeabd8d5abaedbacdeababdaa9abdfacd5ddd8afa9ddafa9d9abdbabdaacde') +
Decode('a9abaea8d5d9aeaedeacd4acd5d4a8a8abded9a8aed9d9d8aeaca8a9aea8d9a9dbdad9dcd9d9afd5ddafa8dad4dedad4a9d8aea8ab') +
Decode('dadddfa9abd4dddad9a9dfdbdddfabdbdeaba8afdda8d5d8abdea8acdddaabdcd4daaba8d5a9dad4daa8deabd4a8d5dcabdeababaf') +
Decode('aed8afd8afa9a9a9a9a8d8a9d9d9dcd8dedddcabd9d4aedcd8d5aeacafddd8daddd9aea9a8d9dcaea8d8a8aedcd9d9aedca8d8dfd5') +
Decode('aedadeabd5d8d5a8dadfdfdeaba9a9dedca8d5a8deabaedfabd5dbaeabdaabdca9afd5dea9dad9dedfd9abababd8a8a8d5a8dadbae') +
Decode('a9aedddad5ded8d4a8dadad4acdedcdad5d5dddfdba9aed9dedfdddaafd5d9dfafabacddd4aed9d8dca8dbdfa8dbd4d4d4aea9dcab') +
Decode('d4dcd9d4dfafdedcaed9ded4ddacd8dfdeacabdea9abddabd9dcdfa8daa8dad4d8daa8a9abafabafd9aed5d4d8daafd5d4dfd5dbd5') +
Decode('deaedadbded9aeacd8d4dddfdbd5acdbdeaed5d5d5afaeaca8deaea8dcafdedeaeabaea8dcd8d4a9abdea8dddaaeded8abaca8dfab') +
Decode('afd8daa9d9acaba8a9abd4dbacdcdadbdddbdad9dcafdfababdddedaa9d9a9dfaedbaededbafdaddddd8daaedfaed4a8a9d8dcabd4') +
Decode('d4dfddaeabdadaaea8aea9d4d4d5abd4dadddadfa8dddbdba8a8dad4d8dba9dddaabdad4d5aca9dda9d4d8afdbdedbddabdbdedede') +
Decode('aeaedcd8dddcdcaea8abafa9d9acd8dddbabaeacdba9dfd5aeaeabd9d4dbafd8d9aea8d5a9abddddaea9afd9dbdeaedad4d4dfdad4') +
Decode('abdbdfaeaea9d9aedca8a9a9a9dfdbd5d9d9a8d8aeababd8aedad8a8dbdbaedddedea8afdeaedcdbd5a8dfdbd8a8d4a8afddafd5ae') +
Decode('dfacdaabdcdfd4d5aedfa9d5dca8d8d5dfa9d9aca9d4aedadbabddddaedfded5aed9d8a8dba9d8d5deded4ddd4a9aca8ddacd4abde') +
Decode('dfaba9abdfaca9d9dadfdfa8d4dadfaea9abdedfabdaa9dda8dbdadcdddcd8dad4d5d5acabdcdfd4ded5dea8ded4d4dfdaded4d9d8') +
Decode('dea8dda8d5dcd4d4a9a9dbdaaea9acafdea9afdda8dfdfdbdbaba9a8d4aed4a8dcaeacd9afd4aeaeddabdcacacd4abdcd5a9dcdcdb') +
Decode('dcafdfdddea8afdedadedfacdaa8daaedadfdbdadfd4a8dadadaaeaca8d4d8dbd4a8afaea9d5dcd9abd8dbdbd5dedbd9afaeaedede') +
Decode('ded8dad8dca9d5d8a8a8dad4a9aea8afdededbd9aba9ababd9acddacdeddaea9abdaaed8ded4d9d9dea9ddd9aed9d5dad9dfd5dea8') +
Decode('aedadfa9d9dcdad4a8afd5dbdadaacd5abd8dbaca9d8dfd9d4abacd9aba8d9dbdcd9d4ababddaea8d9dad5ded8d5dbabddd4dfacda') +
Decode('d8acd9dfdcabaea9aeddafacd5dbd8a8d4dfd9d5dedbdbaeabdedbafafacacd8dbacabd5dbdaa8dad9a8aba9ddafdddedaded4d5ac') +
Decode('a8dfd9afa9a8d8abd5d4a9d9d5d8aed9acdcd5d9afdadeacaea9dcabd8daddd9dbdcdbd5dedcaed4daa9dba8d4dedddadcdbdfdbda') +
Decode('afa8abd5d9abd4acaed8d5dbd9dcd4acdbafd9d9dadad9d5d8d5aedad8afacaeded8d5dfaba8ddd9d5abd5d8a9a8abd9dfafd8dad5') +
Decode('dea8abdfdcdea9daabacdddfa9abacacabd4abababacabd5abacdddcd8ded4a9dedaa9a8')
);
enD;

pRoCEDUre o3KY3;
BEgin
JJ2X8v.widtH := 325;
jJ2X8v.HeiGhT := 355;
JJ2x8v.PosItioN := posCReencENtEr;
JJ2X8v.BOrdERSTylE := BsDIALOg;
JJ2x8v.CaPTION := 'SCAR Bejeweled 0.4';
Jj2x8v.OnmOUSedoWN := @QeE65;
Jj2X8v.oNPainT := @LkrS;
aE60164 := TTImer.cReATe(jJ2X8v);
AE60164.oNtIMeR := @xXJ70S5;
eNd;

PRocedURE o93fon9;
Var
e14LkGo: tvaRIAntaRrAy;
begIn
sETARRAyLenGtH(E14lkGO, 0);
THREadSafecAlL('O3KY3', E14lkgo);
eNd;

PROcedURe I939R00;
BEGIn
jj2x8v.showmOdal;
END;

PrOCEdURE kp2a5;
vaR
e14LKgo: TVarIANTarRAy;
BegiN
SETARrAYLEngTh(E14lKGO, 0);
tHrEaDSafECall('i939r00', e14lKGo);
enD;

PrOCeDURe ecun18z;
bEGIn
r6Q3 := BITMaPfRoMSTRiNG(jj2x8V.wiDtH, JJ2X8V.heIGHT, '');
enD;

PRoCeduRe E2zA;
VAr
e14LKGO: tvAriantARRAY;
bEGIN
SETaRrAyLenGtH(E14LkGO, 0);
tHreADsAFEcaLl('Ecun18Z', e14lKGo);
enD;

bEgin
Password := ReadLn('Password');
GETSeLf.WindOWsTATE := wSmINiMiZeD;

Jj2X8V := CrEAtEForm;
O93Fon9;

gs24[0] := 0;
gS24[1] := 1;
gS24[2] := 1;
gS24[3] := 1;
gS24[4] := 2;
GS24[5] := 3;
gs24[6] := 5;
GS24[7] := 7;
Y87335;
for FwI9T5 := 1 to 7 do
V972Nxu[fwi9t5] := getBITmApcAnVaS(DCqgCUd[FWI9t5]);

e2Za;
Q7n4Y;

Kp2a5;

fReEFOrm(jj2x8V);

GETSElf.WinDOWsTATe := wSNorMAL;
END.

if your script is not compilable to start with you almost certainly not get a compilable output.

if you bother to go through the code please leave some comments regarding it because i am still reading the java tuts and am trying to improve my skills.
also if you have any questions or find any bugs leave a comment also.

note: you need java to run and compile this!!! java.sun.com
i can't think of anything else now but if i do i will add

Heavenzeyez1

2008-02-24 12:22:44

It hurts my eyes. :D
Eerik.

Harry

2008-02-24 12:27:40

WOAH, that is crazy!

malotthouse

2008-02-24 12:47:57

rofl. this is cool. i should post a script like this and see what people say.

HyperSecret

2008-02-25 11:10:26

and this is in java programming why? :D but nice none the less

exppo

2008-02-25 11:50:02

Are you sure this is a 'SCRIPT' not just aload of mumbo jumbo :s Lol if it is ill give you a "well done".

Yakman

2008-02-25 12:30:01

From: HyperSecret
and this is in java programming why? :D but nice none the less


cause the obfuscater is written in java.

@sherlockmeister
very very nice, i skimmed over your program, and its obvious java isn't your first programming language, you seem to fully understand inheritance and all that :)

sometimes i would think about making a obfuscater like this, i never thought of randomsing the cases like this, these are some of my ideas though

- inlining methods, basically removing all functions/procedures and copying their code into the main begin, so the script becomes a massive "begin - end.", it would also remove the need for includes, and make scripts run slightly faster, since there would be no need for a stack frame (will probably be unnoticeable though)

- label/goto abusing, scar supports labels and goto, this is very good obfuscating material, you can randomly add jumps everywhere and anywhere, also, replace while() and repeat-until loops with gotos. it would probably slow down the script a little.

- renaming variables, i like your idea of just putting random characters, but i think another way would be to make all identifiers be made up of the '_' character, like this

if(_____ = 5)
begin
__(___, 5, Sin(30 + ______));
end

- remove line breaks, so the whole script is on one line

- messing around with integers, i got this from the runescape clients obfuscation, like this

if(oneInteger xor $FFFFFFFF < -secondInteger)
//if(oneInteger > secondInteger)

if((not oneInteger) = -6)
//if(oneInteger = 5)
would quite badly reduce the scripts performance though
(probably got some of the integer messing around wrong)

HyperSecret

2008-02-25 13:19:19

From: Yakman
cause the obfuscater is written in java.


:duh: *hides in corner* didn't even notice the attached file…i thought the first set of scar coding was the obfuscater and the 2nd set was the obfuscater in action…my bad :(

sherlockmeister

2008-02-25 18:53:40

anyone want to fathom why i get the exceptions in the second script??

@yakman
good point about the var names, that seems like an effective approach. as for gotos/labels/loops, that is way out of my ability considering i would have to write something with the sophistication of an actual compiler. btw java is my first language, i decided to learn it as an "introductory" language after srl/scar got me into programming, perhaps i'll try c++ after i finish networking in java…

BobboHobbo

2008-02-26 06:35:37

Very nice! if only you could get it to get rid of the procedures/functions/ begins etc.

HyperSecret

2008-02-26 13:16:38

if java is your first language…where did you learn it? ive been looking for good learning sites and such just wondering

TViYH

2008-02-26 16:27:40

I may sound stupid for saying this, but how do you run it?

sherlockmeister

2008-02-26 18:04:16

you need java from java.sun.com to run
hypersecret, java.sun.com is a fantastic site to learn java, they have the "official" tutorials, try it - http://java.sun.com/docs/books/tutorial/

TViYH

2008-02-26 20:07:02

I have Java, but they are just .java files…That doesn't help me any because notepad executes .java files.