09488af869
git-svn-id: svn://kolibrios.org@4867 a494cfbc-eb01-0410-851d-a64ba20cac60
5062 lines
138 KiB
Forth
5062 lines
138 KiB
Forth
\ Îïòèìèçèðóþùèé ìàêðîïîäñòàíîâøèê Ìàêñèìîâ Ì.Î.
|
|
\ http://wiki.forth.org.ru/optimizer
|
|
|
|
[UNDEFINED] C>S
|
|
[IF]
|
|
: C>S ( c -- n ) 0xFF AND [ 0x7F INVERT ] LITERAL XOR 0x80 + ;
|
|
[THEN]
|
|
|
|
BASE @ HEX
|
|
|
|
\ : REL! ( ADDR' ADDR -- )
|
|
\ TUCK - SWAP ! ;
|
|
|
|
: REL@ ( ADDR -- ADDR' )
|
|
DUP @ + ;
|
|
|
|
\ FALSE VALUE OPT?
|
|
TRUE VALUE OPT?
|
|
|
|
084 VALUE J_COD
|
|
|
|
: SET-OPT TRUE TO OPT? ;
|
|
|
|
: DIS-OPT FALSE TO OPT? ;
|
|
|
|
INLINEVAR
|
|
[IF]
|
|
0x20 VALUE MM_SIZE
|
|
|
|
0 VALUE OFF-EBP
|
|
|
|
0 VALUE OFF-EAX
|
|
|
|
0 VALUE :-SET
|
|
|
|
0 VALUE J-SET
|
|
|
|
0 VALUE LAST-HERE
|
|
|
|
0x44 CELLS DUP CONSTANT OpBuffSize
|
|
|
|
CREATE OP0 HERE >T DUP , 0 , SWAP ALLOT
|
|
|
|
DUP OpBuffSize + CELL- CONSTANT OPLast
|
|
|
|
CELL+ DUP CONSTANT OP1
|
|
CELL+ DUP CONSTANT OP2
|
|
CELL+ DUP CONSTANT OP3
|
|
CELL+ DUP CONSTANT OP4
|
|
CELL+ DUP CONSTANT OP5
|
|
CELL+ DUP CONSTANT OP6
|
|
CELL+ DUP CONSTANT OP7
|
|
CELL+ DUP CONSTANT OP8
|
|
|
|
DROP
|
|
|
|
: SetOP ( -- )
|
|
OP0 OP1 OpBuffSize CELL- CMOVE>
|
|
DP @ OP0 !
|
|
;
|
|
|
|
: ToOP0 ( OPn -- )
|
|
OP0 OpBuffSize CELL- CMOVE ;
|
|
|
|
0x11 CELLS DUP CONSTANT JpBuffSize
|
|
|
|
CREATE JP0 HERE DUP , OVER ALLOT
|
|
|
|
|
|
DUP ROT ERASE
|
|
|
|
CELL+ DUP CONSTANT JP1
|
|
|
|
|
|
CELL+ DUP CONSTANT JP2
|
|
|
|
|
|
CELL+ DUP CONSTANT JP3
|
|
|
|
|
|
CELL+ DUP CONSTANT JP4
|
|
|
|
DROP
|
|
|
|
[THEN]
|
|
|
|
: ClearJpBuff JP0 JpBuffSize ERASE ;
|
|
|
|
: J@ 1+ REL@ CELL+ ;
|
|
|
|
: SJ@ 1+ DUP C@ C>S + 1+ ;
|
|
|
|
: J_@
|
|
DUP C@ F0
|
|
AND 70 = IF SJ@ ELSE
|
|
DUP C@ EB = IF SJ@ ELSE
|
|
DUP C@ E9 = IF J@ ELSE
|
|
DUP W@ F0FF
|
|
AND 800F = IF 1+ J@ ELSE
|
|
HEX U. 1 ." J_@ ERR" ABORT
|
|
THEN THEN THEN THEN
|
|
;
|
|
|
|
: SetJP ( -- )
|
|
JP0 JpBuffSize + CELL- @ DUP
|
|
IF J_@
|
|
THEN
|
|
\ DP @ UMIN
|
|
J-SET UMAX TO J-SET
|
|
JP0 JP1 JpBuffSize CELL- CMOVE>
|
|
DP @ JP0 ! ;
|
|
|
|
\ : ToJP0 ( OPn -- )
|
|
\ JP0 JpBuffSize CELL- CMOVE
|
|
\ JP0 JpBuffSize + CELL- 0! ;
|
|
|
|
: ?SET DP @
|
|
DUP LAST-HERE <> IF DUP TO :-SET DUP TO J-SET THEN
|
|
DUP OP0 @ U< IF OP0 0! THEN
|
|
DUP OP1 @ U< IF OP1 0! THEN
|
|
DUP JP0 @ U< IF JP0 0! THEN
|
|
JP1 @ U< IF JP1 0! THEN
|
|
;
|
|
|
|
: SHORT? ( n -- -129 < n < 128 )
|
|
0x80 + 0x100 U<
|
|
;
|
|
|
|
M\ VECT DTST
|
|
|
|
\ \\\\\\\\\\
|
|
|
|
[DEFINED] [TTO] \ CR .( TTO=) DUP .
|
|
[IF]
|
|
|
|
GET-CURRENT
|
|
|
|
WORDLIST CONSTANT MACROOPT-WL
|
|
|
|
\ çàïèøåì àäðåñ èìåíè ñëîâàðÿ
|
|
' MACROOPT-WL EXECUTE CELL+ ( name_addr )
|
|
LAST @ SWAP !
|
|
|
|
ALSO ' MACROOPT-WL EXECUTE CONTEXT ! DEFINITIONS
|
|
TC-WL ALSO TC-IMM
|
|
|
|
[THEN]
|
|
|
|
\ \\\\\\\\\\\\
|
|
|
|
: EVEN-EAX OFF-EAX
|
|
IF M\ 1000 DTST
|
|
SetOP OFF-EAX DUP SHORT?
|
|
IF 0408D W, C,
|
|
ELSE 0808D W, ,
|
|
THEN \ LEA EAX, OFF-EBP [EAX]
|
|
0 TO OFF-EAX
|
|
M\ 1001 DTST
|
|
THEN
|
|
;
|
|
|
|
: EVEN-EBP OFF-EBP
|
|
IF SetOP OFF-EBP 06D8D W, C, \ LEA ebp, OFF-EBP [EBP]
|
|
0 TO OFF-EBP
|
|
THEN
|
|
;
|
|
|
|
: +>OFF-EBP ( C -- )
|
|
C>S OFF-EBP + TO OFF-EBP ;
|
|
|
|
: ADD|XOR|OR|AND= ( W -- FLAG )
|
|
CASE
|
|
DUP 4503 <> IF \ ADD EAX, X2 [EBP]
|
|
DUP 450B <> IF \ OR
|
|
DUP 4523 <> IF \ AND
|
|
DUP 4533 <> IF \ XOR
|
|
DROP FALSE EXIT
|
|
DUPENDCASE DROP TRUE ;
|
|
|
|
: DUP3B?[EBP] ( W -- W FLAG )
|
|
CASE
|
|
DUP 0E7C4 AND 04500 <> IF \ 010X.X101 00XX.X0XX
|
|
\ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP _L | E_X | X [EBP] , _L | E_X | X [EBP]
|
|
|
|
DUP E7FD AND 4589 <> IF \ 010X.X101 1000.10X1
|
|
\ MOV X [EBP], E(ABCD)X | E(ABCD)X , X [EBP]
|
|
\ DUP 5503 <> IF \ ADD EDX , 0 [EBP]
|
|
DUP 758B <> IF \ MOV ESI , X [EBP]
|
|
|
|
DUP EFFF AND 6DDB <> IF \ FLD | FSTP EXTENDED 0 [EBP]
|
|
|
|
DUP 45DB <> IF \ FILD DWORD FC [EBP]
|
|
DUP 65F7 <> IF \ MUL X [EBP]
|
|
DUP 6DF7 <> IF \ IMUL X [EBP]
|
|
DUP 04587 <> IF \ XCHG EAX , X [EBP]
|
|
FALSE EXIT
|
|
DUPENDCASE TRUE ;
|
|
|
|
: DUP3B? ( W -- W FLAG )
|
|
CASE
|
|
\ 11XX.X000 1000.0011
|
|
DUP C7FF AND C083 <> IF \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
|
|
DUP 0478B <> IF \ MOV EAX, X [EDI]
|
|
DUP 0488B <> IF \ MOV ECX, X [EAX]
|
|
DUP 0588B <> IF \ MOV EBX, X [EAX]
|
|
DUP 0508B <> IF \ MOV EDX, X [EAX]
|
|
DUP 0788B <> IF \ MOV EDI, X [EAX]
|
|
DUP 0708B <> IF \ MOV ESI, X [EAX]
|
|
|
|
|
|
DUP 0588D <> IF \ LEA EBX, X [EAX]
|
|
DUP 0508D <> IF \ LEA EDX, X [EAX]
|
|
DUP 05089 <> IF \ MOV X [EAX], EDX
|
|
DUP 05189 <> IF \ MOV X [ECX] , EDX
|
|
DUP 07589 <> IF \ MOV X [EAX], ESI
|
|
|
|
DUP 0F8C1 <> IF \ SAR EAX, # X
|
|
DUP 0E0C1 <> IF \ SHL EAX, # X
|
|
DUP 0E1C1 <> IF \ SHL ECX, # X
|
|
|
|
DUP 0E8C1 <> IF \ SHR EAX, # X
|
|
DUP 0408D <> IF \ LEA EAX , X [EAX]
|
|
DUP 0408B <> IF \ MOV EAX , X [EAX]
|
|
FALSE EXIT
|
|
DUPENDCASE TRUE ;
|
|
|
|
: DUP2B? ( W -- W FLAG )
|
|
CASE
|
|
DUP 0E4C5 AND 0C001 <> IF
|
|
\ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP E_X , E_X
|
|
|
|
\ DUP 01801 <> IF \ ADD [EAX], EBX
|
|
|
|
DUP 01001 <> IF \ ADD [EAX], EDX
|
|
DUP 0003 <> IF \ ADD EAX, [EAX]
|
|
DUP F633 <> IF \ XOR ESI, ESI
|
|
DUP 108B <> IF \ MOV EDX , [EAX]
|
|
DUP 0C0FF AND C085 <> IF \ TEST E__ , E__
|
|
|
|
\ 110X.X0XX 1000.10X1
|
|
DUP 0E4FC AND 0C088 <> IF \ MOV E(ABCD)X , E(ABCD)X | (ABCD)L , (ABCD)L
|
|
|
|
\ 00XX.X0XX 1000.100X
|
|
|
|
DUP 0C4FE AND 00088 <> IF \ MOV [E(ABCD)X] , E(ABCD)X | (ABCD)(HL)
|
|
DUP 0008B <> IF \ MOV EAX, [EAX]
|
|
DUP 028B <> IF \ MOV EAX, [EDX]
|
|
DUP 0C78B <> IF \ MOV EAX, EDI
|
|
DUP 0F88B <> IF \ MOV EDI, EAX
|
|
DUP 0F08B <> IF \ MOV ESI, EAX
|
|
DUP 0C88B <> IF \ MOV ECX , EAX
|
|
DUP 0D18B <> IF \ MOV EDX , ECX
|
|
DUP 0C68B <> IF \ MOV EAX, ESI
|
|
\ 111X.X0XX 1101.00XX
|
|
DUP 0E4FC AND 0E0D0 <> IF \ S(AH)(LR) (ABCD)L | E(ABCD)X, CL | 1
|
|
DUP 0C0DD <> IF \ FFREE ST
|
|
|
|
DUP F0FF AND C0D9 <> IF \ FLD ST(X) | FXCH ST(X)
|
|
\ 1100.XXXX.1101.1001
|
|
|
|
DUP FAFF AND E0D9 <> IF \ FCHS|FABS|FTST|FXAM
|
|
\ 1110.0X0X.1101.1001
|
|
DUP E8FF AND E8D9 <> IF \ FLD1 FLDL2T FLDL2E FLDPI FLDLG2 FLDLN2 FLDZ ???
|
|
\ 1110.1XXX.1101.1001
|
|
|
|
DUP F0FF AND F0D9 <> IF \ F2XM1 FYL2X FPTAN FPATAN
|
|
\ 1111.XXXX.1101.1001 \ FXTRACT FPREM1 FDECSTP FINCSTP
|
|
\ FPREM FYL2XP1 FSQRT FSINCOS
|
|
\ FRNDINT FSCALE FSIN FCOS
|
|
DUP E8FF AND 20DB <> IF \ FLD EXTENDED [E_X] | FST EXTENDED [E_X]
|
|
\ 001X.0XXX.1101.1011
|
|
|
|
DUP E8FF AND 00DD <> IF \ FLD DOUBLE [E_X] | FST DOUBLE [E_X]
|
|
\ 000X.0XXX.1101.1101
|
|
|
|
DUP F0FF AND C0DE <> IF \ FADDP ST(X) | FMULP ST(X)
|
|
DUP E0FF AND E0DE <> IF \ FSUBRP ST(X) | FSUBP ST(X)
|
|
\ 111X.XXXX.1101.1110 \ FDIVRP ST(X) | FDIVP ST(X)
|
|
|
|
DUP 00FF <> IF \ INC [EAX]
|
|
\ DUP 0C0FF <> IF \ INC EAX
|
|
\ DUP 0C3FF <> IF \ INC EBX
|
|
\ DUP 0C8FF <> IF \ DEC EAX
|
|
DUP 0D0F7 <> IF \ NOT EAX
|
|
DUP 0D1F7 <> IF \ NOT ECX
|
|
DUP 0D8F7 <> IF \ NEG EAX
|
|
DUP 0D9F7 <> IF \ NEG ECX
|
|
DUP 0DAF7 <> IF \ NEG EDX
|
|
DUP 0E9F7 <> IF \ IMUL ECX
|
|
DUP 0F1F7 <> IF \ DIV ECX
|
|
DUP 0F9F7 <> IF \ IDIV ECX
|
|
FALSE EXIT
|
|
DUPENDCASE TRUE ;
|
|
|
|
: DUP6B? ( W -- W FLAG )
|
|
CASE
|
|
\ X00X.X101 1000.10X1
|
|
DUP 67FD AND 0589 <> IF \ MOV X {[EBP]}, E(ACDB)X | E(ACDB)X , X {[EBP]}
|
|
|
|
DUP C3FF AND C081 <> IF \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
|
|
|
|
DUP 00501 <> IF \ ADD X , EAX
|
|
DUP 0503 <> IF \ ADD EAX, X
|
|
DUP 053B <> IF \ CMP EAX, X
|
|
DUP 873B <> IF \ CMP EAX, X [EDI]
|
|
DUP F281 <> IF \ XOR EDX , # 80000000
|
|
DUP 928D <> IF \ LEA EDX , [EDX+80000000H]
|
|
|
|
\ DUP 0589 <> IF \ MOV X , EAX
|
|
\ DUP 058B <> IF \ MOV EAX, X
|
|
DUP 808B <> IF \ MOV EAX, X [EAX]
|
|
DUP 808D <> IF \ LEA EAX, X [EAX]
|
|
DUP 8703 <> IF \ MOV EAX, X [EDI]
|
|
|
|
DUP 878B <> IF \ MOV EAX, X [EDI]
|
|
DUP 878D <> IF \ LEA EAX, X [EDI]
|
|
DUP 0C7 <> IF \ MOV [EAX], # X
|
|
DUP 0081 <> IF \ ADD [EAX], # X
|
|
DUP 05FF <> IF \ INC X
|
|
|
|
\ DUP FCFF AND C0C7 <> IF \ MOV EAX|EBX|ECX|EDX, # X
|
|
FALSE EXIT
|
|
DUPENDCASE TRUE ;
|
|
|
|
: DUP5B? ( C -- C FLAG )
|
|
|
|
|
|
DUP 0C7 AND 5 = \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
|
|
OVER 0FC AND 0B8 = OR \ MOV EAX|EBX|ECX|EDX, # X
|
|
OVER 0FD AND 0A1 = OR \ MOV EAX, X | X , EAX
|
|
;
|
|
|
|
: DUP7B? ( N -- N FLAG )
|
|
\ XX00.0101 0000.0100 1000.10X1
|
|
DUP 3FFFFD AND 050489 = \ MOV X [EAX*_] , EAX | MOV EAX , X [EAX*_]
|
|
\ XX00.0101 0000.0100 1000.1X01
|
|
OVER 3FFFFB AND 050489 = OR \ MOV X [EAX*_] , EAX | LEA EAX , X [EAX*_]
|
|
OVER 80B60F = OR \ MOVZX EAX, BYTE PTR [EAX]
|
|
OVER 45048D = OR \ LEA EAX, X [EAX*2]
|
|
|
|
;
|
|
|
|
0 VALUE TTTT
|
|
|
|
\ 0 VALUE ZZZZ \ VECT VVV
|
|
|
|
: ?ChEAX ( ADDR -- FALSE | TRUE )
|
|
CASE
|
|
DUP C@
|
|
DUP B8 <> IF \ MOV EAX, # X
|
|
DUP A1 <> IF \ MOV EAX, X
|
|
DROP
|
|
DUP W@
|
|
\ DUP ADD|XOR|OR|AND= 0= IF
|
|
DUP C033 <> IF \ XOR EAX, EAX
|
|
DUP C031 <> IF \ XOR EAX, EAX
|
|
DUP D889 <> IF \ MOV EAX, EBX
|
|
|
|
38FF AND
|
|
DUP 008B <> IF \ MOV EAX, ___
|
|
DUP 008D <> IF \ LEA EAX, ___
|
|
DROP
|
|
DUP @ FFFFFF AND
|
|
DUP 02048D <> IF \ LEA EAX, [EDX] [EAX]
|
|
|
|
2DROP TRUE EXIT
|
|
DUPENDCASE 2DROP FALSE ;
|
|
|
|
: ^?EAX= ( ADDR -- FALSE | TRUE )
|
|
\ FALSE
|
|
DUP ?ChEAX IF DROP TRUE EXIT THEN
|
|
DUP W@
|
|
DUP 00F9
|
|
AND 0089 <> IF 2DROP FALSE EXIT THEN
|
|
\ LEA MOV
|
|
CASE
|
|
FF00 AND
|
|
DUP 0100 AND
|
|
0100 <> IF \ MOV EAX,
|
|
|
|
DUP C200 <> IF \ MOV EAX, EDX
|
|
DUP D800 <> IF \ MOV EAX, EBX
|
|
DROP
|
|
DUP @ FFFF00 AND
|
|
|
|
DUP 240400 <> IF \ MOV EAX, [ESP]
|
|
DUP 244400 <> IF \ MOV EAX, X [ESP]
|
|
DUP 95048B <> IF \ 8B0495F0065A00 MOV EAX , 5A06F0 [EDX*4]
|
|
2DROP TRUE EXIT
|
|
DUPENDCASE 2DROP FALSE ;
|
|
|
|
\ DUP 8B00 = \ MOV EAX, [EAX]
|
|
|
|
: OP_SIZE ( OP - n )
|
|
DUP IF THEN DUP CELL- @ SWAP @ -
|
|
;
|
|
|
|
: OPexcise ( OPX -- )
|
|
DUP OP0 = IF @ DP ! OP1 ToOP0 EXIT THEN
|
|
>R
|
|
R@ CELL- @ R@ @ DP @ R@ CELL- @ - CMOVE
|
|
|
|
R@ OP_SIZE NEGATE
|
|
R@ OP0 DO DUP I +! CELL +LOOP
|
|
ALLOT
|
|
R@ CELL+ R@ OpBuffSize CELL- R> - OP0 + CMOVE
|
|
;
|
|
: ?OPlast ( OPX -- OPX flag )
|
|
DUP OP0 OpBuffSize + CELL- CELL- U> ;
|
|
|
|
: XX_STEP ( OPX -- OPX+CELL FALSE | { OPX | FALSE } TRUE )
|
|
\ Ïðîâåðêà íà íå èçìåíåíèå EAX
|
|
?OPlast
|
|
IF DROP FALSE TRUE EXIT THEN
|
|
DUP @
|
|
DUP :-SET U< IF 2DROP FALSE TRUE EXIT THEN
|
|
C@
|
|
CASE
|
|
DUP 3D <> IF \ CMP EAX, # X
|
|
DUP 3B <> IF \ CMP E_X , X
|
|
DUP A3 <> IF \ MOV X , EAX
|
|
DUP B9 <> IF \ MOV ECX , # X
|
|
DUP BA <> IF \ MOV EDX , # X
|
|
DUP BB <> IF \ MOV EBX , # X
|
|
DUP 50 <> IF \ PUSH EAX
|
|
DROP
|
|
DUP @ W@
|
|
DUP 04FF AND 04C7 <> IF \ MOV 4444 , # 5555
|
|
DUP 40FE AND 0088 <> IF \ MOV [EAX] , DL
|
|
DUP 4D89 <> IF \ MOV 4 [EBP] , ECX
|
|
DUP 558B <> IF \ MOV EDX , FC [EBP]
|
|
DUP 4C8B <> IF \ MOV ECX , FC [E__] [E__]
|
|
DUP 648D <> IF \ LEA ESP , 8 [ESP]
|
|
DUP 34FF AND 04FF <> IF \ INC 0 [ESP]
|
|
DUP C00B <> IF \ OR EAX, EAX
|
|
DUP D00B <> IF \ OR EDX, EAX
|
|
DUP D02B <> IF \ SUB EDX, EAX
|
|
DUP 0401 <> IF \ ADD [E_X]
|
|
DUP 06FD \ CMP X [EBP], # Z \ CMP 44444, # 55555
|
|
AND 0481 <> IF
|
|
DUP FFFD
|
|
AND 4589 =
|
|
IF OVER @ 2+ C@ OP0 @ 2+ C@ =
|
|
IF DROP TRUE
|
|
EXIT
|
|
THEN
|
|
458B = IF DROP FALSE TRUE EXIT THEN
|
|
CELL+ FALSE EXIT
|
|
THEN
|
|
2DROP
|
|
FALSE TRUE EXIT
|
|
DUPENDCASE DROP CELL+ FALSE ;
|
|
|
|
: ?EDX_[EBP] ( OPX - FLAG )
|
|
DUP @ @ FFFFFF AND
|
|
DUP 24048B = \ 8B0424 MOV EAX , [ESP]
|
|
IF 2DROP FALSE EXIT THEN
|
|
FFFF AND
|
|
|
|
DUP 458B XOR \ 8B4500 MOV EAX , 0 [EBP]
|
|
OVER 4589 XOR OR \ OPX N F MOV FC [EBP] , EAX
|
|
0= IF DROP
|
|
@ 2+ C@ OP0 @ 2+ C@ =
|
|
EXIT
|
|
THEN
|
|
NIP
|
|
DUP ADD|XOR|OR|AND=
|
|
IF DROP FALSE EXIT THEN
|
|
DUP E8C1 = \ C1E819 SHR EAX , 19
|
|
IF DROP FALSE EXIT THEN
|
|
DUP 418D = \ 8D41FF LEA EAX , FF [ECX]
|
|
IF DROP FALSE EXIT THEN
|
|
DUP 408D = \ 8D40FF LEA EAX , FF [EAX]
|
|
IF DROP FALSE EXIT THEN
|
|
DUP 878D = \ 8D873C100000 LEA EAX , 103C [EDI]
|
|
IF DROP FALSE EXIT THEN
|
|
DUP D0F7 = \ F7D0 NOT EAX
|
|
IF DROP FALSE EXIT THEN
|
|
DUP D8F7 = \ F7D8 NEG EAX
|
|
IF DROP FALSE EXIT THEN
|
|
DUP C123 = \ 23C1 AND EAX , ECX
|
|
IF DROP FALSE EXIT THEN
|
|
|
|
DUP C033 = \ XOR EAX , EAX
|
|
IF DROP FALSE EXIT THEN
|
|
|
|
DUP 808D = \ 8D8024475A00 LEA EAX , 5A4724 [EAX]
|
|
IF DROP FALSE EXIT THEN
|
|
|
|
DUP 088B = \ MOV ECX , [EAX]
|
|
IF DROP FALSE EXIT THEN
|
|
|
|
DUP C00B = \ 0BC0 OR EAX , EAX
|
|
IF DROP FALSE EXIT THEN
|
|
|
|
DUP 488D = \ 8D4820 LEA ECX , 20 [EAX]
|
|
IF DROP FALSE EXIT THEN
|
|
|
|
DUP E0D3 = \ D3E0 SHL EAX , CL
|
|
IF DROP FALSE EXIT THEN
|
|
|
|
FF AND
|
|
DUP A1 = \ A1047A5800 MOV EAX , 587A04
|
|
IF DROP FALSE EXIT THEN
|
|
DUP 58 = \ 58 POP EAX
|
|
IF DROP FALSE EXIT THEN
|
|
DUP B9 = \ B907000000 MOV ECX , # 7
|
|
IF DROP FALSE EXIT THEN
|
|
DROP TRUE
|
|
;
|
|
|
|
: MOV_EDX_[EBP] ( OPX - OPX' FALSE | FLAG TRUE )
|
|
?OPlast IF DROP FALSE TRUE EXIT THEN
|
|
DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN
|
|
DUP @ ?ChEAX 0= IF CELL+ FALSE EXIT THEN
|
|
DUP ?EDX_[EBP] 0= IF CELL+ FALSE EXIT THEN
|
|
DUP @ W@
|
|
|
|
DUP 448B = \ MOV EAX , 4 [EDX] [EAX*4]
|
|
IF DROP CELL+ FALSE EXIT THEN
|
|
|
|
DUP 1489 = \ MOV 59C2E4 [EAX*4] , EDX
|
|
IF DROP CELL+ FALSE EXIT THEN
|
|
DUP 8BCA = \ MOV ECX , EDX
|
|
IF DROP CELL+ FALSE EXIT THEN
|
|
DUP FFFD AND 5589 = \ OPX N F
|
|
IF DROP @ 2+ C@ OP0 @ 2+ C@ = TRUE EXIT
|
|
THEN
|
|
2DROP FALSE TRUE
|
|
;
|
|
|
|
: OPresize ( OPX n -- )
|
|
DUP >R
|
|
OVER OP0 ?DO DUP I +! CELL +LOOP
|
|
ALLOT
|
|
@ DUP R> + DUP DP @ - NEGATE MOVE
|
|
;
|
|
|
|
: OPinsert ( OPX n -- )
|
|
DUP >R
|
|
2DUP OPresize DROP
|
|
DUP
|
|
DUP CELL + OVER OP0 CC - OpBuffSize CELL- - NEGATE MOVE
|
|
R> SWAP +!
|
|
;
|
|
|
|
VARIABLE ?~EAX
|
|
VARIABLE SAVE-?~EAX
|
|
: ?~EAX{ ( FLAG -- )
|
|
?~EAX @ SAVE-?~EAX ! ?~EAX ! ;
|
|
|
|
: }?~EAX ( -- )
|
|
SAVE-?~EAX @ ?~EAX ! ;
|
|
|
|
|
|
: ?EAX>EBX ( OPX - OPX' FALSE | FALSE TRUE | OPX' TRUE TRUE )
|
|
\ TTTT 0= IF DROP FALSE TRUE EXIT THEN
|
|
\ ." $=" DUP @ @ U.
|
|
\ TTTT IF HEX DUP @ U. THEN
|
|
\ DROP FALSE TRUE EXIT
|
|
?OPlast IF DROP FALSE TRUE EXIT THEN
|
|
DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN
|
|
DUP @ W@
|
|
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
|
|
OVER 458B = OR \ OPX N F MOV EAX , FC [EBP]
|
|
IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ =
|
|
IF CELL- TRUE TRUE
|
|
ELSE DUP @ W@ 458B = IF ?~EAX 0! THEN
|
|
CELL+ FALSE
|
|
THEN EXIT
|
|
THEN
|
|
|
|
CASE
|
|
\ ." $=" DUP @ U.
|
|
DUP 083B <> \ CMP ECX , [EAX]
|
|
IF
|
|
DUP C83B <> \ CMP ECX , EAX
|
|
IF
|
|
DUP C13B <> \ CMP EAX , ECX
|
|
IF
|
|
DUP 508B <> \ MOV EDX , 4 [EAX]
|
|
IF
|
|
DUP 088B <> \ MOV ECX , [EAX]
|
|
IF
|
|
DUP 098B <> \ MOV ECX , [ECX]
|
|
IF
|
|
DUP C88B <> \ MOV ECX , EAX
|
|
IF
|
|
DUP 0889 <> \ MOV [EAX] , ECX
|
|
IF
|
|
DUP 1089 <> \ MOV [EAX] , EDX
|
|
IF
|
|
DUP 4889 <> \ MOV 4 [EAX] , ECX
|
|
IF
|
|
0 ?~EAX{
|
|
DUP 408D <> \ LEA EAX , 1 [EAX]
|
|
IF
|
|
DUP 808D <> \ LEA EAX , 1 [EAX]
|
|
IF
|
|
DUP 008B <> \ MOV EAX , [EAX]
|
|
IF
|
|
\ TTTT IF HEX ." M=" DUP U. THEN
|
|
|
|
DUP C18B <> \ MOV EAX , ECX
|
|
IF
|
|
TRUE ?~EAX !
|
|
DUP D8F7 <> \ NEG EAX
|
|
IF
|
|
}?~EAX
|
|
DROP
|
|
DUP @ @ FFFFFF AND
|
|
DUP 240C8B <> \ MOV ECX , [ESP]
|
|
IF
|
|
DUP 8D0489 <> \ MOV X [ECX*4] , EAX
|
|
IF
|
|
0 ?~EAX{
|
|
DUP 24048B <> \ MOV EAX , [ESP]
|
|
IF
|
|
TRUE ?~EAX !
|
|
DUP 24442B <> \ SUB EAX , 4 [ESP]
|
|
IF
|
|
}?~EAX
|
|
0xFFFF AND
|
|
OVER @ 2+ C@ OP0 @ 2+ C@
|
|
\ TTTT IF HEX ." N=" 2DUP U. U. THEN
|
|
=
|
|
IF 2DROP FALSE TRUE EXIT
|
|
THEN
|
|
DUP 4D8B <> \ MOV ECX , [EBP]
|
|
IF
|
|
DUP 5589 <> \ MOV [EBP] , EDX
|
|
IF
|
|
|
|
2DROP FALSE TRUE EXIT
|
|
DUPENDCASE DROP CELL+ FALSE ;
|
|
|
|
: EAX>EBX0 ( OPX - OPX' FLAG )
|
|
|
|
|
|
DUP OP0 = IF TRUE EXIT THEN
|
|
\ TTTT IF 1 EMIT DUP U. DUP @ U. THEN
|
|
DUP @ W@
|
|
|
|
DUP 508B = \ MOV EDX , [EAX+4]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 088B = \ MOV ECX , [EAX]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 098B = \ MOV ECX , [ECX]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 4D8B = \ MOV ECX , [EBP]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 5589 = \ MOV 0 [EBP] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP C88B = \ MOV ECX , EAX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 0889 = \ MOV [EAX] , ECX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 1089 = \ MOV [EAX] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 4889 = \ MOV 4 [EAX] , ECX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 408D = \ LEA EAX , 1 [EAX]
|
|
IF DROP
|
|
58 OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP 808D = \ LEA EAX , 1 [EAX]
|
|
IF DROP
|
|
98 OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
DUP 008B = \ MOV EAX , [EAX]
|
|
IF DROP
|
|
18 OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP C18B = \ MOV EAX , ECX
|
|
IF DROP
|
|
D9 OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP 458B = \ MOV EAX , [EBP+X]
|
|
IF DROP
|
|
5D OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP D8F7 = \ NEG EAX
|
|
IF DROP
|
|
DB OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DROP
|
|
DUP @ @ FFFFFF AND
|
|
|
|
DUP 8D0489 = \ MOV X [ECX*4] , EAX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 24048B = \ MOV EAX , [ESP]
|
|
IF DROP
|
|
1C OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
DUP 240C8B = \ MOV ECX , [ESP]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
\ BASE @ >R HEX DUP U. R> BASE !
|
|
FF AND
|
|
DUP 3B = \ CMP
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
HEX U. U. ." EAX>EBX0" ABORT
|
|
;
|
|
|
|
: EAX>EBX ( OPX - OPX' FLAG )
|
|
|
|
|
|
DUP OP0 = IF TRUE EXIT THEN
|
|
DUP @ W@ \ ." #=" DUP U.
|
|
|
|
DUP 508B = \ MOV EDX , [EAX+4]
|
|
IF DROP
|
|
53 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 083B = \ CMP ECX , [EAX]
|
|
IF DROP
|
|
0B OVER @ 1+ W! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP C83B = \ CMP ECX , EAX
|
|
IF DROP
|
|
CB OVER @ 1+ W! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP C13B = \ CMP EAX , ECX
|
|
IF DROP
|
|
D9 OVER @ 1+ W! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 088B = \ MOV ECX , [EAX]
|
|
IF DROP
|
|
0B OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 458B = \ MOV EAX , [EBP+X]
|
|
IF DROP
|
|
5D OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 098B = \ MOV ECX , [ECX]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 4D8B = \ MOV ECX , [EBP]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 5589 = \ MOV 0 [EBP] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP C88B = \ MOV ECX , EAX
|
|
IF DROP
|
|
CB OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 0889 = \ MOV [EAX] , ECX
|
|
IF DROP
|
|
0B OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 1089 = \ MOV [EAX] , EDX
|
|
IF DROP
|
|
13 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 4889 = \ MOV 4 [EAX] , ECX
|
|
IF DROP
|
|
4B OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
|
|
IF DROP
|
|
5D OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 408D = \ LEA EAX , 1 [EAX]
|
|
IF DROP
|
|
5B OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 808D = \ LEA EAX , X [EAX]
|
|
IF DROP
|
|
9B OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 008B = \ MOV EAX , [EAX]
|
|
IF DROP
|
|
1B OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP C18B = \ MOV EAX , ECX
|
|
IF DROP
|
|
D9 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
|
|
DUP D8F7 = \ NEG EAX
|
|
IF DROP
|
|
DB OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DROP
|
|
DUP @ @ FFFFFF AND
|
|
|
|
DUP 8D0489 = \ MOV X [ECX*4] , EAX
|
|
IF DROP
|
|
1C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 24048B = \ MOV EAX , [ESP]
|
|
IF DROP
|
|
1C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 240C8B = \ MOV ECX , [ESP]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 24442B = \ SUB EAX , [ESP+4]
|
|
IF DROP
|
|
5C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
HEX U. U. ." EAX>EBX" ABORT
|
|
;
|
|
|
|
: ?EAX>ECX ( OPX - OPX' FALSE | FALSE TRUE | OPX' TRUE TRUE )
|
|
\ ZZZZ 0= IF DROP FALSE TRUE EXIT THEN
|
|
\ DROP FALSE TRUE EXIT
|
|
?OPlast IF DROP FALSE TRUE EXIT THEN
|
|
DUP @ :-SET U< IF DROP FALSE TRUE EXIT THEN
|
|
\ TTTT IF HEX DUP @ U. THEN
|
|
DUP @ W@
|
|
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
|
|
OVER 458B = OR \ OPX N F MOV EAX , FC [EBP]
|
|
IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ =
|
|
IF CELL- TRUE TRUE
|
|
ELSE DUP @ W@ 458B = IF ?~EAX 0! THEN
|
|
CELL+ FALSE
|
|
THEN EXIT
|
|
THEN
|
|
DUP 5589 = \ OPX N F MOV FC [EBP] , EDX
|
|
IF DROP DUP @ 2+ C@ OP0 @ 2+ C@ =
|
|
IF DROP FALSE TRUE
|
|
ELSE CELL+ FALSE
|
|
THEN EXIT
|
|
THEN
|
|
|
|
CASE
|
|
0 ?~EAX{
|
|
|
|
\ 8B00 MOV EAX , [EAX]
|
|
\ 3B05E3745400 CMP EAX , 5474E3 ( :-SET+5 )
|
|
DUP 3AFF AND 028B <> \ MOV EAX , [EDX]
|
|
IF
|
|
DUP 008B <> \ MOV EAX , [EAX]
|
|
IF
|
|
DUP 408D <> \ LEA EAX , 1 [EAX]
|
|
IF
|
|
DUP 408B <> \ MOV EAX , 1 [EAX]
|
|
IF
|
|
DUP 428D <> \ LEA EAX , 1 [EDX]
|
|
IF
|
|
\ DUP 808D <> \ LEA EAX , X [EAX]
|
|
\ IF
|
|
DUP C28B <> \ MOV EAX , EDX
|
|
IF
|
|
TRUE ?~EAX !
|
|
DUP C00B <> \ OR EAX , EAX
|
|
IF
|
|
DUP C01B <> \ SBB EAX , EAX
|
|
IF
|
|
DUP F8D1 <> \ SAR EAX , 1
|
|
IF
|
|
DUP E8C1 <> \ SHR EAX , 1
|
|
IF
|
|
DUP D8F7 <> \ NEG EAX
|
|
IF
|
|
DUP D0F7 <> \ NOT EAX
|
|
IF
|
|
DUP D0F7 <> \ NOT EAX
|
|
IF
|
|
DUP 4503 <> \ ADD EAX , 0 [EBP]
|
|
IF
|
|
DUP 0523 <> \ AND EAX , 587744 ( D+5 )
|
|
IF
|
|
DUP E0C1 <> \ SHL EAX , 7
|
|
IF
|
|
DUP C223 <> \ AND EAX , EDX
|
|
IF
|
|
}?~EAX
|
|
DUP 508B <> \ MOV EDX , [EAX+4]
|
|
IF
|
|
DUP 053B <> \ CMP EAX , 5474E3 ( :-SET+5 )
|
|
IF
|
|
DUP 103B <> \ CMP EDX , [EAX]
|
|
IF
|
|
DUP 558B <> \ OPX N F MOV F8 [EBP] , EDX
|
|
IF
|
|
DUP 158B <> \ MOV EDX , 587A88
|
|
IF
|
|
DUP D08B <> \ MOV EDX , EAX
|
|
IF
|
|
DUP 0501 <> \ MOV ADD 555555 , EAX
|
|
IF
|
|
DUP 5089 <> \ MOV C [EAX] , EDX
|
|
IF
|
|
DUP 1089 <> \ MOV [EAX] , EDX
|
|
IF
|
|
|
|
DUP 80C6 <> \ MOV BYTE [EAX] , # X
|
|
IF
|
|
DUP 45C7 <> \ MOV FC [EBP] , # 1
|
|
IF
|
|
FF AND
|
|
DUP 50 <> \ PUSH EAX
|
|
IF
|
|
DUP A3 <> \ MOV 1000 , EAX
|
|
IF
|
|
0 ?~EAX{
|
|
DUP B8 <> \ MOV EAX , # 1000
|
|
IF
|
|
DUP A1 <> \ MOV EAX , 1000
|
|
IF
|
|
TRUE ?~EAX !
|
|
DUP 25 <> \ AND EAX , # X
|
|
IF
|
|
|
|
}?~EAX
|
|
DUP BA <> \ MOV EDX , # 1000
|
|
IF
|
|
DUP 3D <> \ CMP EAX , # 1000
|
|
IF
|
|
DROP
|
|
DUP @ @
|
|
0 ?~EAX{
|
|
DUP 0244B60F <> \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
|
|
IF
|
|
FFFFFF AND
|
|
DUP 85048D <> \ LEA EAX , 0 [EAX*4]
|
|
IF
|
|
DUP 85048B <> \ MOV EAX , X [EAX*4]
|
|
IF
|
|
DUP 80B60F <> \ MOVZX EAX , BYTE PTR X [EAX]
|
|
IF
|
|
DUP 40B70F <> \ MOVZX EAX , WORD PTR X [EAX]
|
|
IF
|
|
DUP 00B70F <> \ MOVZX EAX , WORD [EAX]
|
|
IF
|
|
DUP 82448B <> \ MOV EAX , 4 [EDX] [EAX*4]
|
|
IF
|
|
DUP 24048B <> \ MOV EAX , [ESP]
|
|
IF
|
|
DUP 24448B <> \ MOV EAX , [ESP+4]
|
|
IF
|
|
TRUE ?~EAX !
|
|
DUP 24442B <> \ SUB EAX , [ESP+4]
|
|
IF
|
|
}?~EAX
|
|
DUP 24043B <> \ CMP EAX , [ESP]
|
|
IF
|
|
DUP 24443B <> \ CMP EAX , 20 [ESP]
|
|
IF
|
|
DUP 24548B <> \ MOV EDX , C [ESP]
|
|
IF
|
|
2DROP FALSE TRUE EXIT
|
|
DUPENDCASE DROP CELL+ FALSE ;
|
|
|
|
: EAX>ECX0 ( OPX - OPX' FLAG )
|
|
|
|
DUP OP0 = IF TRUE EXIT THEN
|
|
DUP @ W@
|
|
DUP EFFF AND 4589 = \ OPX N F
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 0501 = \ ADD [444444H] , EAX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 5589 = \ MOV X [EBP] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 38FF AND 008B = \ MOV EAX , ___
|
|
IF DROP
|
|
0800 OVER @ +! CELL- TRUE EXIT
|
|
THEN
|
|
DUP C28B = \ MOV EAX , EDX
|
|
IF DROP
|
|
CA OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
DUP 808D = \ LEA EAX , 1 [EAX]
|
|
IF DROP
|
|
88 OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
DUP 408D = \ LEA EAX , 1 [EAX]
|
|
IF DROP
|
|
48 OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP 408B = \ MOV EAX , 1 [EAX]
|
|
IF DROP
|
|
48 OVER @ 1+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP FF AND 8B = \ MOV ~EAX , ___
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 38FF AND 008D = \ LEA EAX , ___
|
|
IF DROP
|
|
0800 OVER @ +! CELL- TRUE EXIT
|
|
THEN
|
|
DUP 428D = \ LEA EAX , 1 [EDX]
|
|
IF DROP
|
|
0800 OVER @ +! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP C00B = \ OR EAX , EAX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 5089 = \ MOV C [EAX] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 1089 = \ MOV [EAX] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 80C6 = \ MOV BYTE [EAX] , # X
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 45C7 = \ MOV FC [EBP] , # 1
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DROP
|
|
DUP @ @
|
|
DUP 0244B60F = \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
|
|
IF DROP
|
|
4C OVER @ 2+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
FFFFFF AND
|
|
|
|
DUP 80B60F = \ MOVZX EAX , BYTE PTR X [EAX]
|
|
IF DROP
|
|
88 OVER @ 2+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP 40B70F = \ MOVZX EAX , WORD PTR x [EAX]
|
|
IF DROP
|
|
48 OVER @ 2+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
DUP 00B70F = \ MOVZX EAX , WORD PTR [EAX]
|
|
IF DROP
|
|
08 OVER @ 2+ C! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
\ DUP 24442B = \ SUB EAX , [ESP+4]
|
|
\ IF DROP
|
|
\ 4C OVER @ 1+ C! CELL- TRUE EXIT
|
|
\ THEN
|
|
|
|
FF AND
|
|
DUP 50 = \ PUSH EAX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP B8 = \ MOV EAX , # 1000
|
|
IF DROP
|
|
B9 OVER @ C! CELL- TRUE EXIT
|
|
THEN
|
|
DUP BA = \ MOV EDX , # 1000
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 3D = \ CMP EAX , # 1000
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 3B = \ CMP
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP A3 = \ MOV 1000 , EAX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP A1 = \ MOV EAX , 1000
|
|
IF DROP DUP 1 OPresize
|
|
0D8B OVER @ W! CELL- TRUE EXIT
|
|
THEN
|
|
|
|
HEX U. DUP @ @ U. U. ." EAX>ECX0" ABORT
|
|
;
|
|
|
|
: EAX>ECX ( OPX - OPX' F | T )
|
|
|
|
DUP OP0 = IF TRUE EXIT THEN
|
|
DUP @ W@
|
|
\ 8B00 MOV EAX , [EAX]
|
|
\ 3B05E3745400 CMP EAX , 5474E3 ( :-SET+5 )
|
|
|
|
DUP 5589 = \ MOV X [EBP] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
|
|
DUP 3AFF AND 028B = \ MOV EAX , [EDX]
|
|
IF DROP
|
|
0800 OVER @ +! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 458B = \ MOV EAX , [EBP+X]
|
|
IF DROP
|
|
4D OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 008B = \ MOV EAX , [EAX]
|
|
IF DROP
|
|
09 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP D08B = \ MOV EDX , EAX
|
|
IF DROP
|
|
D1 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP C28B = \ MOV EAX , EDX
|
|
IF DROP
|
|
CA OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP E0C1 = \ SHL EAX , 7
|
|
IF DROP
|
|
E1 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP C223 = \ AND EAX , EDX
|
|
IF DROP
|
|
CA OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 0501 = \ ADD [444444H] , EAX
|
|
IF DROP
|
|
0D01 OVER @ W! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 508B = \ MOV EDX , [EAX+4]
|
|
IF DROP
|
|
51 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 053B = \ CMP EAX , 5474E3 ( :-SET+5 )
|
|
IF DROP
|
|
0D OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 103B = \ CMP EDX , [EAX]
|
|
IF DROP
|
|
11 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP C23B = \ CMP EAX , EDX
|
|
IF DROP
|
|
CA OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP C00B = \ OR EAX , EAX
|
|
IF DROP
|
|
C9 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP C01B = \ SBB EAX , EAX
|
|
IF DROP
|
|
C9 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP F8D1 = \ SAR EAX , 1
|
|
IF DROP
|
|
F9 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP E8C1 = \ SAR EAX , 1
|
|
IF DROP
|
|
E9 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 4589 = \ OPX N F MOV FC [EBP] , EAX
|
|
IF DROP
|
|
4D OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 5089 = \ MOV C [EAX] , EDX
|
|
IF DROP
|
|
51 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 1089 = \ MOV [EAX] , EDX
|
|
IF DROP
|
|
11 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 80C6 = \ MOV BYTE [EAX] , # X
|
|
IF DROP
|
|
81 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 408D = \ LEA EAX , 1 [EAX]
|
|
IF DROP
|
|
49 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 408B = \ MOV EAX , 1 [EAX]
|
|
IF DROP
|
|
49 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 428D = \ LEA EAX , 1 [EDX]
|
|
IF DROP
|
|
0800 OVER @ +! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 808D = \ LEA EAX , 1 [EAX]
|
|
IF DROP
|
|
89 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP C28B = \ MOV EAX , EDX
|
|
IF DROP
|
|
CA OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP D8F7 = \ NEG EAX
|
|
IF DROP
|
|
D9 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP D0F7 = \ NOT EAX
|
|
IF DROP
|
|
D1 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP D0F7 = \ NOT EAX
|
|
IF DROP
|
|
D1 OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 4503 = \ ADD EAX , 0 [EBP]
|
|
IF DROP
|
|
4D OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 0523 = \ AND EAX , 587744 ( D+5 )
|
|
IF DROP
|
|
0D OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 558B = \ OPX N F MOV F8 [EBP] , EDX
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 158B = \ MOV EDX , 587A88
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 45C7 = \ MOV FC [EBP] , # 1
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DROP
|
|
DUP @ @
|
|
DUP 0244B60F = \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
|
|
IF DROP
|
|
0A4C OVER @ 2+ W! CELL- TRUE EXIT
|
|
THEN
|
|
FFFFFF AND
|
|
DUP 85048D = \ LEA EAX , 0 [EAX*4]
|
|
IF DROP
|
|
8D0C OVER @ 1+ W! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 85048B = \ MOV EAX , X [EAX*4]
|
|
IF DROP
|
|
8D0C OVER @ 1+ W! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 80B60F = \ MOVZX EAX , BYTE PTR X [EAX]
|
|
IF DROP
|
|
89 OVER @ 2+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 40B70F = \ MOVZX EAX , WORD PTR x [EAX]
|
|
IF DROP
|
|
49 OVER @ 2+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 00B70F = \ MOVZX EAX , WORD PTR [EAX]
|
|
IF DROP
|
|
09 OVER @ 2+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 82448B = \ MOV EAX , 4 [EDX] [EAX*4]
|
|
IF DROP
|
|
8A4C OVER @ 1+ W! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 24048B = \ MOV EAX , [ESP]
|
|
IF DROP
|
|
0C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 24448B = \ MOV EAX , [ESP+4]
|
|
IF DROP
|
|
4C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
DUP 24043B = \ CMP EAX , [ESP]
|
|
IF DROP
|
|
0C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 24443B = \ CMP EAX , 20 [ESP]
|
|
IF DROP
|
|
4C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 24548B = \ MOV EDX , C [ESP]
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 24442B = \ SUB EAX , [ESP+4]
|
|
IF DROP
|
|
4C OVER @ 1+ C! CELL- FALSE EXIT
|
|
THEN
|
|
|
|
FF AND
|
|
DUP 50 = \ PUSH EAX
|
|
IF DROP
|
|
51 OVER @ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP B8 = \ MOV EAX , # 1000
|
|
IF DROP
|
|
B9 OVER @ C! CELL- FALSE EXIT
|
|
THEN
|
|
DUP A3 = \ MOV 1000 , EAX
|
|
IF DROP DUP 1 OPresize
|
|
0D89 OVER @ W! CELL- FALSE EXIT
|
|
THEN
|
|
DUP A1 = \ MOV EAX , # 1000
|
|
IF DROP DUP 1 OPresize
|
|
0D8B OVER @ W! CELL- FALSE EXIT
|
|
THEN
|
|
DUP 25 = \ AND EAX , # X
|
|
IF DROP DUP 1 OPresize
|
|
E181 OVER @ W! CELL- FALSE EXIT
|
|
THEN
|
|
DUP BA = \ MOV EDX , # 1000
|
|
IF DROP CELL- FALSE EXIT THEN
|
|
DUP 3D = \ CMP EAX , # 1000
|
|
IF DROP DUP 1 OPresize
|
|
F981 OVER @ W! CELL- FALSE EXIT
|
|
THEN
|
|
U. DUP @ @ U. U. ." EAX>ECX" ABORT
|
|
;
|
|
|
|
: -EBPLIT ( n OPX -- n OPX' )
|
|
DUP @ :-SET U> 0= IF EXIT THEN
|
|
BEGIN
|
|
?OPlast IF EXIT THEN
|
|
DUP @ W@ 6D8D = IF EXIT THEN \ LEA EBP , X [EBP]
|
|
DUP @ C@ E8 = IF EXIT THEN \ CALL
|
|
DUP @ C@ E9 = IF EXIT THEN \ JMP
|
|
DUP @ C@ F0
|
|
AND 70 = IF EXIT THEN \ Jx
|
|
DUP @ C@ EB = IF EXIT THEN
|
|
DUP @ W@ F0FF
|
|
AND 800F = IF EXIT THEN
|
|
2DUP @ 2+ C@ = IF EXIT THEN
|
|
CELL+ DUP @ :-SET U> 0=
|
|
UNTIL ;
|
|
1 [IF]
|
|
: -EBPCLR ( FLAG OPX -- FLAG' )
|
|
DUP @ :-SET U< IF DROP EXIT THEN
|
|
OFF-EBP CELL- TO OFF-EBP
|
|
BEGIN
|
|
?OPlast IF DROP EXIT THEN
|
|
DUP @ W@ 6D8D = IF DROP EXIT THEN
|
|
DUP @ C@ E8 = IF DROP EXIT THEN \ CALL
|
|
DUP @ C@ E9 = IF DROP EXIT THEN \ JMP
|
|
DUP @ C@ F0
|
|
AND 70 = IF DROP EXIT THEN \ Jx
|
|
DUP @ C@ EB = IF DROP EXIT THEN
|
|
DUP @ W@ F0FF
|
|
AND 800F = IF DROP EXIT THEN
|
|
DUP @ @ FFFFFF AND 85448B = \ MOV EAX , FC [EBP] [EAX*4]
|
|
IF DROP EXIT THEN
|
|
|
|
\ DUP @ 2+ C@ DUP U. OFF-EBP FF AND DUP U. =
|
|
DUP @ 2+ C@ OFF-EBP FF AND =
|
|
IF DUP @ W@ E7FF AND 4589 = \ MOV X [EBP] , EAX|EDX|EBX|ECX
|
|
OVER @ W@ 45C7 = OR \ MOV F8 [EBP] , # 2710
|
|
IF M\ 20A DTST
|
|
\ ." ^" DUP @ U. :-SET U. \ OPexcise NIP TRUE SWAP CELL-
|
|
DUP OPexcise NIP TRUE SWAP CELL-
|
|
ELSE DROP EXIT
|
|
THEN
|
|
THEN
|
|
CELL+ DUP @ :-SET U<
|
|
UNTIL DROP ;
|
|
|
|
[ELSE]
|
|
: -EBPCLR ( FLAG OPX -- FLAG' )
|
|
OFF-EBP CELL- TO OFF-EBP
|
|
BEGIN
|
|
OFF-EBP SWAP -EBPLIT NIP
|
|
?OPlast IF DROP EXIT THEN
|
|
:-SET OVER @ U<
|
|
WHILE DUP @ 2+ C@ OFF-EBP FF AND =
|
|
IF DUP @ W@ E7FF AND 4589 = \ MOV X [EBP] , EAX|EDX|EBX|ECX
|
|
IF M\ 20A DTST
|
|
DUP OPexcise NIP TRUE SWAP \ CELL-
|
|
ELSE DROP EXIT
|
|
THEN
|
|
ELSE
|
|
DUP @ @ FFFFFF AND 85448B = \ MOV EAX , FC [EBP] [EAX*4]
|
|
IF DROP EXIT THEN
|
|
CELL+
|
|
?OPlast IF DROP EXIT THEN
|
|
DUP @ :-SET U< IF DROP EXIT THEN
|
|
THEN
|
|
REPEAT DROP
|
|
;
|
|
[THEN]
|
|
|
|
: T?EAX>ECX ( FALSE | OPX' TRUE -- ... )
|
|
IF CELL+ CELL+ FALSE
|
|
ELSE FALSE TRUE
|
|
THEN ;
|
|
|
|
: F?EAX>ECX ( FLAG -- ... )
|
|
IF \ TRUE TRUE
|
|
?~EAX @
|
|
IF DROP FALSE
|
|
ELSE TRUE
|
|
THEN TRUE
|
|
ELSE FALSE
|
|
THEN ;
|
|
: ECX:=EAX ( OPX -- OPX- )
|
|
DUP 2 OPinsert
|
|
C88B OVER CELL+ @ W! \ MOV ECX , EAX
|
|
\ CELL-
|
|
;
|
|
|
|
: EBX:=EAX ( OPX -- OPX- )
|
|
DUP 2 OPinsert
|
|
D88B OVER CELL+ @ W! \ MOV EBX , EAX
|
|
\ CELL-
|
|
;
|
|
|
|
TRUE VALUE ~BR-OPT
|
|
|
|
: ?EAX:=ECX ( -- )
|
|
?~EAX @
|
|
IF SetOP 8B C, C1 C, \ MOV EAX , ECX
|
|
THEN ;
|
|
: DO_EAX>ECX ( -- FLAG )
|
|
OP1
|
|
BEGIN ?EAX>ECX
|
|
DUP 0= \ TTTT AND
|
|
IF DROP CELL-
|
|
?OPlast IF DROP FALSE EXIT THEN
|
|
DUP @ :-SET U< IF DROP FALSE EXIT THEN
|
|
DUP @ W@ 4D89 = \ OPX N F MOV FC [EBP] , ECX
|
|
IF DUP @ 2+ C@
|
|
OP0 @ 2+ C@ =
|
|
IF M\ 410 DTST
|
|
DROP ?~EAX 0!
|
|
OP0 2 OPinsert
|
|
C18B OP1 @ W! \ MOV EAX , ECX
|
|
OP0 TRUE TRUE
|
|
ELSE DROP FALSE TRUE
|
|
THEN
|
|
ELSE CELL+ FALSE
|
|
THEN
|
|
THEN
|
|
UNTIL DUP >R
|
|
IF M\ 40E DTST
|
|
?~EAX @
|
|
IF ECX:=EAX
|
|
ELSE BEGIN EAX>ECX0 UNTIL
|
|
THEN BEGIN EAX>ECX UNTIL
|
|
DROP
|
|
OP1 ToOP0
|
|
-3 ALLOT
|
|
M\ 40F DTST
|
|
THEN R>
|
|
;
|
|
M\ VARIABLE VPPP : PPPP DUP VPPP @ <> IF 0 @ THEN ;
|
|
|
|
VECT FPOP
|
|
|
|
: ?EAX=RULES ( ADDR -- ADDR' FLAG )
|
|
|
|
BEGIN OP1 @ :-SET
|
|
\ TTTT IF ." T=" 2DUP HEX U. U. THEN
|
|
U< IF TRUE EXIT THEN
|
|
OP1 @ ?ChEAX 0=
|
|
~BR-OPT AND
|
|
\ OP1 @ W@ ADD|XOR|OR|AND= OR
|
|
WHILE M\ 0 DTST
|
|
OP1 OPexcise
|
|
M\ 1 DTST
|
|
REPEAT
|
|
OP1 @ @ FC458B58 = \ POP EAX MOV EAX , FC [EBP]
|
|
IF M\ F0 DTST
|
|
0424648D OP1 @ !
|
|
OP1 ToOP0
|
|
FALSE M\ F1 DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
|
|
OP2 @ :-SET U< 0= IF \ GOTO OP2>
|
|
OP2 @ C@ B8 = \ MOV EAX , # 44444
|
|
IF
|
|
OP1 @ @ FFFFFF AND 240401 = \ ADD [ESP] , EAX
|
|
IF M\ B0E DTST
|
|
OP2 @ 1+ @
|
|
240481 OP2 @ ! \ ADD [ESP] , #
|
|
OP2 @ 3 + !
|
|
2 OP1 +!
|
|
OP0 @ 2@ OP1 @ 2!
|
|
OP1 ToOP0
|
|
FALSE -1 ALLOT M\ B0F DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP1 @ W@ 00C7 = \ MOV [EAX] , # X
|
|
IF M\ C0E DTST
|
|
OP1 @ 2+ @
|
|
OP2 @ 1+ @
|
|
05C7 OP2 @ W! \ MOV 44444 , # X
|
|
OP2 @ 2+ ! OP2 @ 6 + !
|
|
5 OP1 +!
|
|
OP0 @ 2@ OP1 @ 2!
|
|
OP1 ToOP0
|
|
FALSE -1 ALLOT M\ C0F DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
M\ PPPP
|
|
|
|
OP2 @ ?ChEAX
|
|
OP1 @ W@ 5589 XOR \ 8955FC MOV FC [EBP] , EDX
|
|
OP1 @ W@ 1501 <> AND \ 011544444400 ADD 444444 , EDX
|
|
OP1 @ W@ 1589 <> AND OR \ 891544444400 MOV 444444 , EDX
|
|
\ EAX=
|
|
0= IF M\ C2 DTST
|
|
OP2 OPexcise
|
|
FALSE M\ C3 DTST
|
|
EXIT
|
|
THEN
|
|
THEN \ LAB: OP2>
|
|
|
|
OP0 @ W@ 458B = \ MOV EAX , X [EBP]
|
|
IF
|
|
OP1 \ ." $"
|
|
BEGIN XX_STEP
|
|
UNTIL
|
|
IF M\ 90E DTST
|
|
OP1 ToOP0 -3 ALLOT FALSE M\ 90F DTST
|
|
EXIT
|
|
THEN
|
|
DO_EAX>ECX IF FALSE EXIT THEN
|
|
TRUE ?~EAX !
|
|
OP1
|
|
BEGIN ?EAX>EBX
|
|
UNTIL
|
|
IF M\ 80E DTST
|
|
?~EAX @
|
|
IF EBX:=EAX
|
|
ELSE BEGIN EAX>EBX0 UNTIL
|
|
THEN BEGIN EAX>EBX UNTIL
|
|
DROP
|
|
OP1 ToOP0
|
|
FALSE
|
|
-3 ALLOT M\ 80F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
:-SET OP2 @ U< IF \ GOTO OP2 MOV EAX , X [EBP]
|
|
|
|
|
|
OP2 @ W@ 5589 XOR \ 8955FC MOV FC [EBP] , EDX
|
|
OP1 @ W@ 889 XOR OR \ 8908 MOV [EAX] , ECX
|
|
\ MOV EAX , X [EBP]
|
|
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X2=X0
|
|
0= IF M\ 11E DTST
|
|
C28B OP0 @ W! \ MOV EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ 11F DTST
|
|
EXIT
|
|
THEN
|
|
\ $ DUP >R
|
|
OP2 @ W@ 4589 XOR \ MOV X2 [EBP] , EAX
|
|
OP1 @ C@ 50 XOR OR \ PUSH EAX
|
|
\ OP0 @ W@ 458B XOR OR \ MOV EAX , X0 [EBP]
|
|
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= \ X2=X0
|
|
IF M\ 1E DTST
|
|
50 OP2 @ C!
|
|
OP2 ToOP0
|
|
-6 ALLOT
|
|
FALSE M\ 1F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ C@ BA XOR OR \ MOV EDX , # 1000
|
|
OP1 @ W@ 1089 XOR OR \ MOV [EAX] , EDX
|
|
\ MOV EAX , FC [EBP]
|
|
0= IF M\ 52 DTST
|
|
OP2 1 OPresize
|
|
00C7 OP2 @ W! \ MOV [EAX] , # 1000
|
|
OP1 OPexcise
|
|
FALSE M\ 53 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
:-SET OP4 @ U< IF \ GOTO OP4 MOV EAX , X [EBP]
|
|
|
|
DUP C@ 0C3 XOR
|
|
\ CR ." XX"
|
|
OP4 @ W@ 4D89 XOR OR \ 567F5A 894DF8 MOV F8 [EBP] , ECX
|
|
OP3 @ W@ 1089 XOR OR \ 567F5D 8910 MOV [EAX] , EDX
|
|
OP2 @ W@ 558B XOR OR \ 567F5F 8B55F8 MOV EDX , F8 [EBP]
|
|
OP1 @ W@ 5089 XOR OR \ 567F62 895004 MOV 4 [EAX] , EDX
|
|
\ OP0 @ W@ 458B XOR OR \ 567F65 8B45FC MOV EAX , FC [EBP]
|
|
OP4 @ 2+ C@ OP2 @ 2+ C@ XOR OR \ X0=X2 \ ÃÐÓÁÎ
|
|
0= IF M\ 232 DTST
|
|
OP2 OPexcise
|
|
4889 OP1 @ W! \ MOV [EAX+4] , ECX
|
|
FALSE M\ 233 DTST
|
|
EXIT
|
|
THEN
|
|
THEN \ L: OP4 MOV EAX , X [EBP]
|
|
THEN \ L: OP2 MOV EAX , X [EBP]
|
|
THEN
|
|
DUP C@ C3 XOR
|
|
OP0 @ C@ A1 XOR OR \ MOV EAX , X
|
|
0= IF OP1
|
|
BEGIN ?EAX>ECX
|
|
IF T?EAX>ECX
|
|
ELSE CELL- ?OPlast >R
|
|
DUP @ :-SET U< R> OR
|
|
IF DROP FALSE TRUE
|
|
ELSE DUP >R
|
|
R@ CELL- @ CELL- @
|
|
OP0 @ 1+ @ =
|
|
IF R@ @ C@ FD AND A1 = \ MOV { EAX , X } | { X ,EAX }
|
|
DUP
|
|
IF F?EAX>ECX
|
|
ELSE 2DROP FALSE TRUE
|
|
THEN
|
|
ELSE DROP FALSE TRUE
|
|
THEN RDROP
|
|
THEN
|
|
THEN
|
|
UNTIL
|
|
IF M\ F0E DTST
|
|
CELL- \ DROP TRUE EXIT
|
|
BEGIN EAX>ECX0 UNTIL
|
|
BEGIN EAX>ECX UNTIL
|
|
DROP \ ." #"
|
|
OP1 ToOP0
|
|
FALSE
|
|
-5 ALLOT M\ F0F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
THEN
|
|
M\ PPPP
|
|
DUP C@ C3 XOR
|
|
OP0 @ C@ 58 XOR OR \ POP EAX
|
|
0= IF OP1 \ TTTT IF ." ?EAX>ECX" THEN
|
|
BEGIN ?EAX>ECX
|
|
IF T?EAX>ECX
|
|
ELSE CELL-
|
|
?OPlast
|
|
OVER @ :-SET U< OR
|
|
OVER @ @ FF00FF AND 24008B = OR \ 8B0424 MOV ___ , [ESP]
|
|
IF DROP FALSE TRUE
|
|
ELSE DUP @ C@ 50 XOR \ PUSH EAX , X
|
|
\ 0= F?EAX>ECX
|
|
0= IF TRUE TRUE
|
|
ELSE CELL+ FALSE
|
|
THEN
|
|
|
|
THEN
|
|
THEN
|
|
UNTIL
|
|
IF M\ CA DTST \ ." $"
|
|
DUP OPexcise
|
|
CELL- \ DROP TRUE EXIT
|
|
?~EAX @
|
|
IF ECX:=EAX
|
|
ELSE BEGIN EAX>ECX0 UNTIL
|
|
THEN BEGIN EAX>ECX UNTIL
|
|
DROP
|
|
OP1 ToOP0
|
|
FALSE
|
|
-1 ALLOT
|
|
\ ?EAX:=ECX
|
|
M\ CB DTST
|
|
EXIT
|
|
THEN
|
|
|
|
THEN
|
|
|
|
OP1 @ @ 24048B50 = \ 50 PUSH EAX
|
|
\ 8B0424 MOV EAX , [ESP]
|
|
IF M\ E2 DTST
|
|
OP0 OPexcise
|
|
FALSE M\ E3 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP1 @ W@ D08B XOR OR \ 8BD0 MOV EDX , EAX
|
|
OP0 @ @ FFFFFF AND 95048B XOR OR \ 8B0495F0065A00 MOV EAX , 5A06F0 [EDX*4]
|
|
0= IF M\ 13C DTST
|
|
OP1 OPexcise
|
|
85 OP0 @ 2+ C! \ MOV EAX , 5982D8 [EAX*4]
|
|
|
|
FALSE M\ 13D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ 2+ @
|
|
OP0 @ 1+ @ XOR
|
|
OP1 @ W@ 589 XOR OR \ 890577770700 MOV 77777 , EAX
|
|
OP0 @ C@ A1 XOR OR \ A177770700 MOV EAX , 77777
|
|
0= IF M\ 150 DTST
|
|
OP0 OPexcise
|
|
FALSE M\ 151 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
OP2 @ :-SET U< IF TRUE EXIT THEN M\ PPPP
|
|
|
|
OP1 @ C@ A3 = \ MOV ' VVVV >BODY , EAX
|
|
IF OP2 @ C@ B8 = \ MOV EAX, # X
|
|
IF M\ 20E DTST
|
|
OP2 @ 1+ @ OP1 @ 1+ @
|
|
OP2 @ 2+ ! OP1 @ 1+ !
|
|
05C7 OP2 @ W!
|
|
OP0 @ OP1 !
|
|
FALSE
|
|
OP1 ToOP0 M\ 20F DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ W@ C033 = \ XOR EAX , EAX
|
|
IF M\ 30E DTST
|
|
3 ALLOT
|
|
OP0 @ @ OP0 @ 3 + !
|
|
05C7 OP2 @ W!
|
|
OP1 @ 1+ @ OP1 @ !
|
|
OP1 @ CELL+ 0!
|
|
OP1 @ 08 + OP1 !
|
|
FALSE
|
|
OP1 ToOP0 M\ 30F DTST
|
|
EXIT
|
|
THEN
|
|
OP3 @ :-SET U< IF TRUE EXIT THEN M\ PPPP
|
|
OP3 @ 1+ @
|
|
OP1 @ 1+ @ XOR
|
|
OP3 @ C@ 0A1 XOR OR \ MOV EAX , XX \ MOV XX , EAX \ EAX=
|
|
0= IF
|
|
OP2 @ C@ 025 = \ AND EAX , # ZZ
|
|
IF
|
|
M\ 530 DTST
|
|
OP3 @ 1+ @
|
|
OP2 @ 1+ @
|
|
OP3 OPexcise
|
|
OP2 OPexcise
|
|
OP1 OPexcise
|
|
OP0 0A OPinsert
|
|
2581 OP1 @ ! OP1 @ 6 + ! OP1 @ 2+ !
|
|
FALSE M\ 531 DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ W@ 408D =
|
|
IF
|
|
OP2 @ 2+ C@ FF = \ LEA EAX , FF [EAX]
|
|
IF
|
|
M\ 632 DTST
|
|
OP3 01 OPresize
|
|
0DFF OP3 @ W!
|
|
OP2 OPexcise
|
|
OP1 OPexcise
|
|
FALSE M\ 633 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
THEN TRUE EXIT
|
|
THEN
|
|
|
|
\ $ 4444 TO VVVV
|
|
|
|
OP2 @ C@ A1 XOR \ MOV EAX , 44444
|
|
OP1 @ C@ 3D XOR OR \ CMP EAX , # 55555
|
|
0= IF M\ 218 DTST
|
|
OP2 @ 1+ @ OP2 @ 2+ !
|
|
3D81 OP2 @ W! \ CMP 44444 , # 55555
|
|
OP0 @ OP1 !
|
|
OP1 ToOP0
|
|
FALSE
|
|
EXIT M\ 219 DTST
|
|
THEN
|
|
|
|
\ OP0 @ C@ 58 = \ POP EAX
|
|
\ IF
|
|
OP1 @ C@ 50 = \ PUSH EAX
|
|
IF
|
|
\ 444 >R
|
|
OP2 @ C@ B8 = \ MOV EAX , # 5
|
|
IF M\ 1A DTST
|
|
68 OP2 @ C!
|
|
OP0 @ 2@ OP1 @ 2!
|
|
OP1 ToOP0
|
|
FALSE -1 ALLOT M\ 1B DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
OP1 @ W@ 4589 = \ MOV X [EBP], EAX EAX=
|
|
IF
|
|
\ 444 555
|
|
OP2 @ C@ B8 = \ MOV EAX , 5
|
|
IF M\ 1C DTST
|
|
OP2 @ 1+ @
|
|
45C7 OP2 @ W!
|
|
OP1 @ 2+ C@ OP2 @ 2+ C!
|
|
OP2 @ 3 + !
|
|
2 OP1 +!
|
|
OP0 @ 2@ OP1 @ 2!
|
|
OP1 ToOP0
|
|
FALSE -1 ALLOT M\ 1D DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
\ THEN
|
|
M\ PPPP
|
|
OP2 @ C@ B8 XOR \ MOV EAX , # 789
|
|
OP1 @ W@ C88B XOR OR \ MOV ECX , EAX
|
|
\ EAX=
|
|
0= IF M\ 830 DTST
|
|
B9 OP2 @ C!
|
|
OP1 OPexcise
|
|
FALSE M\ 831 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 878D XOR \ LEA EAX , 1448 [EDI]
|
|
OP1 @ W@ 00FF XOR OR \ INC [EAX]
|
|
\ EAX=
|
|
0= IF M\ 930 DTST
|
|
FF OP2 @ C!
|
|
OP1 OPexcise
|
|
FALSE M\ 931 DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ @ FFFFFF AND 8D048D XOR \ LEA EAX , X [ECX*4]
|
|
OP1 @ W@ 1089 XOR OR \ MOV [EAX] , EDX
|
|
\ EAX=
|
|
0= IF M\ 5E DTST
|
|
1489 OP2 @ W! \ MOV [44444H+ECX*4], EDX
|
|
OP1 OPexcise
|
|
FALSE M\ 5F DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
DUP C@ 0C3 XOR
|
|
OP2 @ W@ D08B XOR OR \ MOV EDX , EAX
|
|
OP1 @ @ FFFFFF AND 8D1489 XOR OR \ MOV X [ECX*4] , EDX
|
|
\ EAX=
|
|
0= IF M\ 60 DTST
|
|
OP2 OPexcise
|
|
0489 OP1 @ W! \ MOV [44444H+ECX*4], EAX
|
|
FALSE M\ 61 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 5589 XOR OR \ MOV F8 [EBP] , EDX
|
|
OP1 @ W@ 4589 XOR OR \ MOV F4 [EBP] , EAX
|
|
OP0 @ W@ 458B XOR OR \ MOV EAX , F8 [EBP]
|
|
0= IF M\ 64 DTST
|
|
C28B OP0 @ W! \ MOV EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ 65 DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ W@ C033 XOR \ 57DD80 33C0 XOR EAX , EAX
|
|
OP1 @ W@ 4589 XOR OR \ 57DD82 8945F8 MOV F8 [EBP] , EAX
|
|
\ EAX=
|
|
0= IF M\ 6C DTST
|
|
OP2 OPexcise
|
|
OP0 4 OPresize 4 OP0 +!
|
|
45C7 OP1 @ W! OP1 @ 3 + 0! \ MOV F8 [EBP] , # 0
|
|
FALSE M\ 6D DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ @ 45C7D08B XOR \ MOV EDX , EAX MOV F8 [EBP] , # X
|
|
OP0 @ W@ C28B XOR OR \ MOV EAX , EDX
|
|
0= IF M\ 6E DTST
|
|
OP0 OPexcise
|
|
FALSE M\ 6F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ C@ BA XOR OR \ MOV EDX , # 0
|
|
OP1 @ W@ 1088 XOR OR \ MOV [EAX] , DL
|
|
\ EAX=
|
|
0= IF M\ 70 DTST
|
|
OP2 @ 1+ C@
|
|
OP2 OPexcise
|
|
OP1 1 OPresize
|
|
00C6 OP1 @ W! \ MOV BYTE PTR [EAX] , 44H
|
|
OP1 @ 2+ C!
|
|
FALSE M\ 71 DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ W@ 808D XOR \ LEA EAX , X [EAX]
|
|
OP1 @ W@ 00C6 XOR OR \ MOV [EAX] , # 0
|
|
\ EAX=
|
|
0= IF M\ 72 DTST
|
|
80C6 OP2 @ W!
|
|
OP1 @ 2+ C@ OP1 @ C!
|
|
1 OP1 +!
|
|
OP1 OPexcise
|
|
FALSE M\ 73 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ D18B XOR OR \ 596C15 8BD1 MOV EDX , ECX
|
|
OP1 @ W@ 1089 XOR OR \ 596C17 8910 MOV [EAX] , EDX
|
|
\ EAX=
|
|
0= IF M\ 72 DTST
|
|
OP2 OPexcise
|
|
0889 OP1 @ W!
|
|
FALSE M\ 73 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ @ FFFFFF AND 24448B XOR \ MOV EAX , 30 [ESP]
|
|
OP1 @ W@ F7FF AND 44FF XOR OR \ FF4424 INC DEC 30 [ESP]
|
|
\ EAX=
|
|
0= IF M\ 8A DTST
|
|
OP2 OPexcise
|
|
FALSE M\ 8B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ C@ B8 XOR \ MOV EAX , # 1
|
|
OP1 @ @ FFFFFF AND 21C8D XOR OR \ LEA EBX , [EDX] [EAX]
|
|
\ EAX=
|
|
0= IF M\ AA DTST
|
|
OP2 1 OPresize
|
|
9A8D OP2 @ W!
|
|
OP1 OPexcise
|
|
FALSE M\ AB DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ C@ BA XOR \ MOV EDX , # 7FFFFFEE
|
|
OP1 @ W@ 9A8D XOR OR \ LEA EBX , 1 [EDX]
|
|
\ EAX=
|
|
0= IF M\ AC DTST
|
|
OP1 @ 2+ @
|
|
OP1 OPexcise
|
|
OP0 5 OPinsert
|
|
BB OP1 @ C! \ MOV EBX , #
|
|
OP2 @ 1+ @ + OP1 @ 1+ !
|
|
FALSE M\ AD DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ C28B XOR \ 8BC2 MOV EAX , EDX
|
|
OP1 @ @ C28BC00B XOR OR \ 0BC0 OR EAX , EAX
|
|
\ 8BC2 MOV EAX , EDX
|
|
0= IF M\ C4 DTST
|
|
OP2 OPexcise
|
|
C28BD20B OP1 @ ! \ OR EDX , EDX MOV EAX , EDX
|
|
FALSE M\ C5 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ D18B XOR OR \ 58270A 8BD1 MOV EDX , ECX
|
|
OP1 @ W@ 4589 XOR OR \ 58270C 8945F8 MOV F8 [EBP] , EAX
|
|
OP0 @ W@ C28B XOR OR \ 58270F 8BC2 MOV EAX , EDX
|
|
0= IF M\ D4 DTST
|
|
OP2 OPexcise
|
|
C18B OP0 @ W! \ MOV EAX , ECX
|
|
FALSE M\ D5 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
\ 8BD0 MOV EDX , EAX
|
|
OP2 @ @ 501D08B XOR \ 010544440400 ADD 44444 , EAX
|
|
OP2 @ @ 589D08B <> AND OR \ 890544440400 MOV 44444 , EAX
|
|
OP0 @ W@ 458B XOR OR \ 8B4500 MOV EAX , 0 [EBP]
|
|
0= IF M\ D4 DTST
|
|
OP2 OPexcise
|
|
FALSE M\ D5 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ @ 1589D08B = \ 8BD0 MOV EDX , EAX
|
|
\ 891555550500 MOV 55555 , EDX
|
|
IF M\ E8 DTST
|
|
0589 OP1 @ W! \ MOV 5800E0 , EAX
|
|
FALSE M\ E9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 408D XOR \ 8D4020 LEA EAX , 20 [EAX]
|
|
OP1 @ @ 458BC88B XOR OR \ 8BC8 MOV ECX , EAX
|
|
\ 8B45F8 MOV EAX , F8 [EBP]
|
|
0= IF M\ F2 DTST
|
|
488D OP2 @ W! \ LEA ECX , 20 [EAX]
|
|
OP1 OPexcise
|
|
FALSE M\ F3 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ ?ChEAX
|
|
OP2 @ ^?EAX= AND
|
|
OP1 @ C@ B9 XOR OR \ 587AC6 B919000000 MOV ECX , # 19
|
|
\ EAX=
|
|
0= IF M\ FE DTST
|
|
OP2 OPexcise
|
|
FALSE M\ FF DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 5589 XOR OR \ 8955E8 MOV E8 [EBP] , EDX
|
|
|
|
OP1 ?EDX_[EBP] OR
|
|
|
|
OP0 @ W@ 458B XOR OR \ 8B45E8 MOV EAX , E8 [EBP]
|
|
0= IF M\ BC DTST
|
|
C28B OP0 @ W! \ MOV EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ BD DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ @ 9788D08B XOR OR \ 8BD0 MOV EDX , EAX
|
|
\ 88973C100000 MOV 103C [EDI] , DL
|
|
\ EAX=
|
|
0= IF M\ 112 DTST
|
|
OP2 OPexcise
|
|
8788 OP1 @ W! \ MOV 103C [EDI] , AL
|
|
FALSE M\ 113 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ C@ 50 XOR \ 50 PUSH EAX
|
|
OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
|
|
OP0 @ W@ 48B XOR OR \ 8B0424 MOV EAX , [ESP]
|
|
0= IF M\ 164 DTST
|
|
OP0 OPexcise
|
|
FALSE M\ 165 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
M\ PPPP
|
|
OP3 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
\ $ SWAP 4444
|
|
OP2 @ W@ C28B = \ MOV EAX , EDX
|
|
IF OP1 @ W@ 4589 = \ MOV X [EBP] , EAX
|
|
IF M\ 60E DTST
|
|
1000 OP1 @ +! \ MOV X [EBP] , EDX
|
|
FALSE OP2 OPexcise M\ 60F DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
OP3 @ @ 408DC48B XOR \ MOV EAX , ESP LEA EAX , 8 [EAX]
|
|
OP1 @ W@ E08B XOR OR \ MOV ESP , EAX
|
|
0= IF M\ 8A DTST
|
|
-1 OP2 +!
|
|
24648D00 OP2 @ 1- ! \ LEA ESP , 8 [ESP]
|
|
OP3 OPexcise
|
|
OP1 OPexcise
|
|
FALSE M\ 8B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ W@ C88B = \ 581B54 8BC8 MOV ECX , EAX
|
|
IF
|
|
DUP C@ C3 XOR
|
|
\ OP3 @ W@ C88B XOR OR \ 587733 8BC8 MOV ECX , EAX
|
|
OP2 @ W@ 428D XOR OR \ 587735 8D4201 LEA EAX , 1 [EDX]
|
|
OP1 @ W@ 4589 XOR OR \ 587738 894500 MOV 0 [EBP] , EAX
|
|
OP0 @ W@ C18B XOR OR \ 58773B 8BC1 MOV EAX , ECX
|
|
0= IF M\ 142 DTST
|
|
OP3 OPexcise
|
|
OP0 OPexcise
|
|
528D OP1 @ W! \ LEA EDX , 1 [EDX]
|
|
5589 OP0 @ W! \ MOV 0 [EBP] , EDX
|
|
FALSE M\ 143 DTST
|
|
EXIT
|
|
THEN
|
|
OP5 @ J-SET U< 0= IF \ GOTO 5SET
|
|
OP5 @ W@ C18B XOR \ 581B4C 8BC1 MOV EAX , ECX
|
|
OP4 @ W@ 840F XOR OR \ 581B4E 0F8400000000 JE 581B54 ( zz+14 )
|
|
0= IF M\ B0 DTST
|
|
OP3 OPexcise
|
|
FALSE M\ B1 DTST
|
|
EXIT
|
|
THEN THEN \ 5SET:
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP3 @ @ C103D8F7 XOR OR \ F7D8 NEG EAX
|
|
\ 03C1 ADD EAX , ECX
|
|
OP1 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
|
|
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
|
|
0= IF M\ CE DTST
|
|
OP3 OPexcise
|
|
C82B OP2 @ W! \ SUB ECX , EAX
|
|
4D89 OP1 @ W! \ MOV 0 [EBP] , ECX
|
|
FALSE M\ CF DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ @ C82BD08B XOR \ 8BD0 MOV EDX , EAX
|
|
\ 2BC8 SUB ECX , EAX
|
|
OP1 @ W@ 4D89 XOR OR \ 894D00 MOV 0 [EBP] , ECX
|
|
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
|
|
0= IF M\ D0 DTST
|
|
DUP C@ 0C3 =
|
|
IF OP3 OPexcise THEN
|
|
OP0 OPexcise
|
|
FALSE M\ D1 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP3 @ @ 418DD08B XOR OR \ 8BD0 MOV EDX , EAX
|
|
\ 8D41FF LEA EAX , FF [ECX]
|
|
OP1 @ W@ 4589 XOR OR \ 8945F8 MOV F8 [EBP] , EAX
|
|
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
|
|
0= IF M\ EA DTST
|
|
OP3 OPexcise
|
|
OP0 OPexcise
|
|
498D OP1 @ W! \ LEA ECX , FF [ECX]
|
|
4D89 OP0 @ W! \ MOV F8 [EBP] , ECX
|
|
FALSE M\ EB DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP3 @ W@ 5589 XOR OR \ 8955E8 MOV E8 [EBP] , EDX
|
|
|
|
OP2 ?EDX_[EBP] OR
|
|
OP1 ?EDX_[EBP] OR
|
|
|
|
OP0 @ W@ 458B XOR OR \ 8B45E8 MOV EAX , E8 [EBP]
|
|
0= IF M\ BC DTST
|
|
C28B OP0 @ W! \ MOV EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ BD DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ C@ BA XOR OR \ BA2C000000 MOV EDX , # 2C
|
|
OP1 @ @ 458B1001 XOR OR \ 0110 ADD [EAX] , EDX
|
|
\ 8B45FC MOV EAX , FC [EBP]
|
|
0= IF M\ 14C DTST
|
|
OP1 OPexcise
|
|
OP1 1 OPresize
|
|
0081 OP1 @ W! \ ADD [EAX] , # 2C
|
|
FALSE M\ 14D DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ C@ B8 XOR \ 57DDE3 B844440400 MOV EAX , # 44444
|
|
OP1 @ W@ 81 XOR OR \ 57DDE8 81002C000000 ADD [EAX] , # 2C
|
|
OP0 @ W@ 458B XOR OR \ 57DDEE 8B45FC MOV EAX , FC [EBP]
|
|
0= IF M\ 14E DTST
|
|
OP2 @ 1+ @ OP2 @ 2+ !
|
|
OP1 @ 2+ @ OP1 @ 1+ !
|
|
0581 OP2 @ W! \ ADD 44444 , # 2C
|
|
5 OP1 +!
|
|
OP1 OPexcise
|
|
FALSE M\ 14F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 45C7 XOR OR \ MOV F8 [EBP] , # 3
|
|
OP1 @ C@ B9 XOR OR \ MOV ECX , # 4
|
|
OP0 @ W@ 458B XOR OR \ MOV EAX , F8 [EBP]
|
|
0= IF M\ 3E DTST
|
|
OP2 @ 3 + @ OP2 @ 1+ !
|
|
B8 OP2 @ C!
|
|
OP1 0 OPinsert -2 OP2 +!
|
|
OP2 OPexcise \ MOV EAX , # 3
|
|
4589 OP0 @ W! \ MOV F8 [EBP] , EAX
|
|
|
|
FALSE M\ 3F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
OP3 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
OP3 @ C@ A1 XOR \ 57E2D7 A108E15700 MOV EAX , 57E108
|
|
OP2 @ W@ 4589 XOR OR \ 57E2DC 8945EC MOV EC [EBP] , EAX
|
|
OP1 @ W@ D08B XOR OR \ 57E2DF 8BD0 MOV EDX , EAX
|
|
\ EAX=
|
|
0= IF M\ 152 DTST
|
|
OP3 1 OPresize
|
|
158B OP3 @ W! \ MOV EDX , 57E108
|
|
5589 OP2 @ W! \ MOV EC [EBP] , EDX
|
|
OP1 OPexcise
|
|
FALSE M\ 153 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
OP3 @ C@ 58 XOR \ POP EAX
|
|
OP2 @ @ FFFFFF AND FF408D XOR OR \ LEA EAX , FF [EAX]
|
|
OP1 @ C@ 50 XOR OR \ PUSH EAX
|
|
\ EAX=
|
|
0= IF M\ D30 DTST
|
|
\ OP2 1 OPresize
|
|
240CFF OP2 @ ! \ DEC DWORD PTR [ESP]
|
|
OP3 OPexcise
|
|
OP1 OPexcise
|
|
FALSE M\ D31 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP3 @ @ 458BD08B XOR OR \ 8BD0 MOV EDX , EAX MOV EAX , 0 [EBP]
|
|
OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
|
|
OP0 @ W@ C28B XOR OR \ 8BC2 MOV EAX , EDX
|
|
0= IF M\ 166 DTST
|
|
OP3 OPexcise
|
|
OP0 OPexcise
|
|
558B OP1 @ W! \ MOV EDX , 0 [EBP]
|
|
5589 OP0 @ W! \ MOV FC [EBP] , EAX
|
|
FALSE M\ 167 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP3 @ W@ D08B XOR OR \ 5822F8 8BD0 MOV EDX , EAX
|
|
OP2 @ W@ 458B XOR OR \ 5822FA 8B4508 MOV EAX , 8 [EBP]
|
|
OP1 @ W@ 1089 XOR OR \ 5822FD 8910 MOV [EAX] , EDX
|
|
OP0 @ W@ 458B XOR OR \ 5822FF 8B450C MOV EAX , C [EBP]
|
|
0= IF M\ 156 DTST
|
|
OP3 OPexcise
|
|
558B OP2 @ W! \ MOV EDX , 8 [EBP]
|
|
0289 OP1 @ W! \ MOV [EDX] , EAX
|
|
FALSE M\ 157 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
|
|
OP4 @ :-SET U< IF TRUE EXIT THEN
|
|
OP5 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
OP5 @ C@ B8 XOR \ 596994 B812000000 MOV EAX , # 12
|
|
OP4 @ W@ 4589 XOR OR \ 596999 8945F4 MOV F4 [EBP] , EAX
|
|
OP3 @ W@ 4589 XOR OR \ 59699C 8945F0 MOV F0 [EBP] , EAX
|
|
OP2 @ C@ BA XOR OR \ 59699F BA00000080 MOV EDX , # 80000000
|
|
OP1 @ W@ D02B XOR OR \ 5969A4 2BD0 SUB EDX , EAX
|
|
\ EAX=
|
|
0= IF M\ A6 DTST
|
|
OP5 @ 1+ @ NEGATE OP2 @ 1+ +!
|
|
OP1 OPexcise
|
|
FALSE M\ A7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
TRUE
|
|
;
|
|
|
|
|
|
\ : SSSSSS ;
|
|
\ TRUE VALUE ?C-JMP
|
|
FALSE VALUE ?C-JMP
|
|
|
|
\ $ - óêàçûâàåò íà ôðàãìåíò èñõîäíîãî òåêñòà, îïòèìèçèðóåìûé
|
|
\ äàííûì ìåòîäîì
|
|
|
|
: OPT-RULES ( ADDR -- ADDR' FLAG )
|
|
|
|
BEGIN M\ -1 DTST
|
|
OP0 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
OP0 @ W@ 408D = \ LEA EAX, X [EAX]
|
|
WHILE M\ 2 DTST
|
|
OP0 @ 2+ C@ C>S OFF-EAX + TO OFF-EAX
|
|
OP1 ToOP0
|
|
-3 ALLOT M\ 3 DTST
|
|
REPEAT M\ DUP VPPP !
|
|
OP0 @ C@ 05 = ~BR-OPT AND \ ADD EAX, # X
|
|
IF M\ 4 DTST
|
|
OP0 @ 1+ @ OFF-EAX + TO OFF-EAX
|
|
OP1 ToOP0
|
|
FALSE -5 ALLOT M\ 5 DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP0 @ W@ 808D = \ LEA EAX, X [EAX]
|
|
IF M\ 6 DTST
|
|
OP0 @ 2+ @ OFF-EAX + TO OFF-EAX
|
|
OP1 ToOP0
|
|
-6 ALLOT FALSE M\ 7 DTST
|
|
EXIT
|
|
THEN
|
|
OFF-EAX
|
|
OP0 @ W@ C033 = AND \ XOR EAX , EAX
|
|
IF M\ 4A DTST
|
|
B8 OP0 @ C!
|
|
OFF-EAX OP0 @ 1+ !
|
|
0 TO OFF-EAX
|
|
3 ALLOT FALSE M\ 4B DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP0 @ @ 3FFFFF AND
|
|
05048D = \ LEA EAX, X [EAX*_]
|
|
IF
|
|
|
|
\ $ 4444 CELLS
|
|
|
|
OP1 @ :-SET U< 0=
|
|
IF
|
|
OP1 @ C@ B8 XOR \ MOV EAX, # X1
|
|
OP0 @ 3 + @ \ X=0
|
|
OR 0=
|
|
IF M\ 8 DTST
|
|
OP1 @ 1+ @ OP0 @ @ C00000 AND 16 RSHIFT
|
|
LSHIFT
|
|
OP1 @ 1+ !
|
|
OP1 ToOP0 \ FIX
|
|
FALSE -7 ALLOT M\ 9 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
\ $ CELLS 4444 +
|
|
|
|
OFF-EAX OP0 @ 3 + +!
|
|
0 TO OFF-EAX
|
|
|
|
THEN
|
|
M\ PPPP
|
|
|
|
OP0 @ C@ B8 = \ MOV EAX, # X
|
|
IF OFF-EAX OP0 @ 1+ +!
|
|
0 TO OFF-EAX
|
|
OP0 @ 1+ @ 0= \ MOV EAX, # 0
|
|
IF M\ A DTST
|
|
C033 OP0 @ W! \ XOR EAX, EAX
|
|
-3 ALLOT
|
|
\ FALSE EXIT
|
|
M\ B DTST
|
|
THEN
|
|
OP1 @ :-SET U< IF TRUE EXIT THEN
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ W@ 45C7 XOR OR 0= \ MOV F8 [EBP] , # 5
|
|
IF OP1 @ 2+ C@ C>S OFF-EBP U<
|
|
IF
|
|
M\ 10A DTST
|
|
OP1 OPexcise
|
|
\ FALSE EXIT
|
|
M\ 10B DTST
|
|
THEN
|
|
THEN
|
|
THEN
|
|
M\ PPPP
|
|
|
|
DUP C@ C3 =
|
|
IF OFF-EBP >R
|
|
5555 DP @ !
|
|
FALSE OP0 -EBPCLR OP0 -EBPCLR OP0 -EBPCLR OP0 -EBPCLR
|
|
IF M\ 20B DTST
|
|
R> TO OFF-EBP FALSE EXIT
|
|
THEN R> TO OFF-EBP
|
|
THEN
|
|
|
|
OFF-EAX
|
|
OP0 @ W@ C28B = \ MOV EAX , EDX
|
|
OP0 @ W@ C18B = OR AND \ MOV EAX , ECX
|
|
IF M\ D6 DTST
|
|
OFF-EAX DUP SHORT?
|
|
IF 0418D C18B - OP0 @ +! C,
|
|
ELSE 0828D C28B - OP0 @ +! ,
|
|
THEN \ LEA EAX, OFF-EBP [EDX]
|
|
0 TO OFF-EAX
|
|
FALSE M\ D7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP0 @ 2+ @ 5 XOR
|
|
OP0 @ W@ C069 XOR OR \ 59A095 69C005000000 IMUL EAX , EAX , # 5
|
|
0= IF M\ 8E DTST
|
|
80048D OP0 @ ! \ MOV EAX , [EAX*4+EAX]
|
|
-3 ALLOT
|
|
FALSE M\ 8F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP0 @ W@ D28B = \ MOV EDX, EDX \ C-DO
|
|
IF OP0 OPexcise TRUE EXIT
|
|
THEN
|
|
|
|
OP0 @ @ 1004583 = \ 587890 83450001 ADD 0 [EBP] , # 1
|
|
IF M\ 146 DTST
|
|
45FF OP0 @ W! \ INC 0 [EBP]
|
|
-1 ALLOT
|
|
FALSE M\ 147 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
M\ PPPP
|
|
OP1 @ :-SET U< IF TRUE EXIT THEN
|
|
?~EAX 0!
|
|
|
|
OP1 @ @ 00FFFFFD AND 244489 XOR \ MOV 8 [ESP] , EAX
|
|
OP0 @ @ FFFFFFFD AND
|
|
OP1 @ @ FFFFFFFD AND XOR OR \ MOV EAX , 8 [ESP]
|
|
0= IF M\ 1F0 DTST
|
|
OP1 ToOP0
|
|
-4 ALLOT
|
|
FALSE M\ 1F1 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP1 @ W@ 5089 XOR OR \ MOV C [EAX] , EDX
|
|
OP0 @ W@ 408B XOR OR \ MOV EAX , C [EAX]
|
|
0= IF M\ 2F0 DTST
|
|
C28B OP0 @ W! \ MOV EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ 2F1 DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP1 @ @ 008B0889 = \ MOV [EAX] , ECX MOV EAX , [EAX]
|
|
IF M\ F0 DTST
|
|
C18B OP0 @ W!
|
|
FALSE M\ F1 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP0 @ C@ 58 XOR \ POP EAX
|
|
OP0 @ ^?EAX= AND 0=
|
|
\ OP0 @ ^?EAX= 0=
|
|
IF ?EAX=RULES EXIT
|
|
THEN
|
|
|
|
OP1 @ @ 4503C033 = \ XOR EAX , EAX ADD EAX , F8 [EBP]
|
|
IF M\ 10C DTST
|
|
OP1 OPexcise
|
|
8B OP0 @ C! \ MOV EAX , F8 [EBP]
|
|
FALSE M\ 10D DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP1 @ @ 048DC033 = \ XOR EAX , EAX LEA EAX , 57B680 [EAX*4]
|
|
IF OP0 @ 2+ C@ 85 =
|
|
IF M\ 62 DTST
|
|
OP1 OPexcise
|
|
B8 OP0 @ C! \ MOV EAX , # 57B680
|
|
OP0 @ 3 + @ OP0 @ 1+ !
|
|
-2 ALLOT
|
|
FALSE M\ 63 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
|
|
?C-JMP
|
|
IF OP0 @ C@ C3 XOR
|
|
OP1 @ C@ E8 XOR OR 0= \ CALL X RET
|
|
IF M\ 0C DTST
|
|
OP1 @ 1+!
|
|
OP1 ToOP0
|
|
FALSE -6 ALLOT
|
|
SetJP 5 ALLOT M\ 0D DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
\ TRUE EXIT
|
|
|
|
\ $ CELLS 444 + @
|
|
OP1 @ W@ 38FF AND 008D = \ LEA EAX , ____
|
|
IF OP0 @ W@ 008B = \ MOV EAX , [EAX]
|
|
IF
|
|
M\ 0E DTST
|
|
8B OP1 @ C!
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 0F DTST
|
|
EXIT
|
|
THEN
|
|
OP0 @ @ FFFEFF AND 00B60F = \ MOVZX EAX , BYTE|WORD PTR [EAX]
|
|
\ LEA EAX , ____
|
|
IF
|
|
M\ 10E DTST
|
|
OP0 @ W@ OP1 @ 2@ ( 2DUP U. U. ) OP1 @ 1+ ( 0 IF THEN ) 2!
|
|
OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 10F DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
OP0 @ W@ 4589 XOR \ MOV X [EBP], EAX
|
|
OP0 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR OR 0= \ (FALG &( X1=X ))
|
|
IF
|
|
OP1 @ W@ 458B = \ MOV EAX, 1X [EBP] \ $ DROP DUP
|
|
IF M\ 10 DTST
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ 11 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
OP1 @ C@ B8 = \ MOV EAX, # X \ eax=
|
|
IF OP0 @ W@
|
|
DUP D8F7 = \ NEG EAX
|
|
IF DROP M\ 14 DTST
|
|
OP1 @ 1+ @ NEGATE OP1 @ 1+ ! \ MOV EAX, # -X
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 15 DTST
|
|
EXIT
|
|
THEN
|
|
DUP D0F7 = \ MOV EAX, # X NOT EAX
|
|
IF DROP M\ 16 DTST
|
|
OP1 @ 1+ @ INVERT OP1 @ 1+ ! \ MOV EAX, # ~X
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 17 DTST
|
|
EXIT
|
|
THEN
|
|
DUP 008B = \ MOV EAX, # X MOV EAX, [EAX]
|
|
IF DROP M\ 18 DTST
|
|
A1 OP1 @ C! \ MOV EAX, X
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 19 DTST
|
|
EXIT
|
|
THEN
|
|
DROP
|
|
OP0 @ @ FFFFFF AND 85448B = \ MOV EAX, # X MOV EAX , X1 [EBP] [EAX*4]
|
|
IF M\ 518 DTST
|
|
OP0 @ 3 + C@
|
|
OP1 @ 1+ @ CELLS +
|
|
458B OP1 @ W! \ MOV EAX , X [EBP]
|
|
OP1 @ 2+ C!
|
|
OP1 ToOP0
|
|
FALSE -6 ALLOT M\ 519 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
OP1 @ W@ 5589 XOR \ MOV X1 [EBP] , EDX
|
|
OP0 @ W@ 4503 XOR OR \ ADD EAX , X0 [EBP]
|
|
OP1 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X1=X0
|
|
0= IF M\ 418 DTST
|
|
02048D OP0 @ ! \ lea EAX, [EAX+EDX]
|
|
FALSE M\ 419 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ W@ 4D89 XOR \ MOV 4 [EBP] , ECX
|
|
OP0 @ W@ 558B XOR OR \ MOV EDX , 4 [EBP]
|
|
OP1 @ 2+ C@ OP0 @ 2+ C@ XOR OR \ X1=X0
|
|
0= IF M\ 418 DTST
|
|
D18B OP0 @ W! \ MOV EDX , ECX
|
|
-1 ALLOT
|
|
FALSE M\ 419 DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP1 @ W@ 408D XOR \ LEA EAX , Y [EAX]
|
|
OP0 @ @ 85048D FFFFFF AND XOR OR 0= \ LEA EAX , X [EAX*4]
|
|
IF M\ 30E DTST
|
|
OP1 @ 2+ C@ C>S CELLS OP0 @ 3 + +!
|
|
FALSE
|
|
OP1 OPexcise M\ 30F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ FFFFFF AND 85048D XOR \ LEA EAX , X [EAX*4]
|
|
OP0 @ @ FFFFFF AND 02048D XOR OR \ MOV EAX , [EDX] [EAX]
|
|
OP1 @ 3 + @ 80 + FFFFFF00 AND OR 0=
|
|
IF M\ 50E DTST
|
|
8244 OP1 @ 1+ W!
|
|
OP1 ToOP0
|
|
FALSE
|
|
-6 ALLOT M\ 50F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP0 @ W@ FFFD AND 5589 = \ MOV EDX , X [EBP]
|
|
IF OP1
|
|
BEGIN MOV_EDX_[EBP]
|
|
UNTIL
|
|
IF M\ A0E DTST
|
|
OP1 ToOP0
|
|
FALSE
|
|
-3 ALLOT M\ A0F DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ W@ 4589 XOR OR \ 5695B0 8945FC MOV FC [EBP] , EAX
|
|
OP0 @ W@ 6DF7 XOR OR \ 5695B3 F76DFC IMUL FC [EBP]
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
OP0 @ 2+ C@ C>S OFF-EBP > OR
|
|
0= IF M\ 32A DTST
|
|
E8F7 OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -4 ALLOT M\ 32B DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP0 @ W@ E7FF AND 4589 = \ TTTT AND \ MOV X [EBP] , EAX|EDX|EBX|ECX
|
|
IF OFF-EBP >R OP0 @ 2+ C@ C>S CELL+ TO OFF-EBP
|
|
FALSE OP1 -EBPCLR
|
|
IF R> TO OFF-EBP FALSE EXIT THEN
|
|
R> TO OFF-EBP
|
|
THEN
|
|
|
|
OP1 @ W@ CA8B XOR \ 8BCA MOV ECX , EDX
|
|
OP0 @ @ FFFFFF AND 88048D XOR OR \ 8D0488 LEA EAX , [EAX] [ECX*4]
|
|
0= IF M\ 42A DTST
|
|
90048D OP0 @ !
|
|
FALSE M\ 42B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ W@ CA8B XOR OR \ 8BCA MOV ECX , EDX
|
|
OP0 @ @ FFFFFF AND 90048D XOR OR \ 8D0488 LEA EAX , [EAX] [EDX*4]
|
|
0= IF M\ 62A DTST
|
|
OP1 OPexcise
|
|
FALSE M\ 62B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ FFFFFF AND 8D0C8D XOR \ 8D0C8D00000000 LEA ECX , 0 [ECX*4]
|
|
OP1 @ 3 + @ XOR
|
|
OP0 @ @ FFFFFF AND 1048D XOR OR \ 8D0401 LEA EAX , [ECX] [EAX]
|
|
0= IF M\ 52A DTST
|
|
88048D OP1 @ !
|
|
OP1 ToOP0
|
|
FALSE -7 ALLOT M\ 52B DTST
|
|
EXIT
|
|
THEN
|
|
OP1 @ C@ B8 XOR \ MOV EAX , # 58DDE8
|
|
OP0 @ @ FFFFFF AND 90048D XOR OR \ LEA EAX , [EAX] [EDX*4]
|
|
0= IF M\ 4C DTST
|
|
OP1 @ 1+ @
|
|
OP1 OPexcise
|
|
95 OP0 @ 2+ C! ,
|
|
FALSE M\ 4D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ @ 048DD9F7 XOR OR \ NEG ECX LEA EAX , [ECX] [EAX]
|
|
0= IF M\ 90 DTST
|
|
C12B OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ 91 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ @ FFFFFF AND 244C8B XOR OR \ MOV ECX , 20 [ESP]
|
|
OP0 @ W@ C12B XOR OR \ 59A13C 2BC1 SUB EAX , ECX
|
|
0= IF M\ 92 DTST
|
|
442B OP1 @ W! \ SUB EAX , 20 [ESP]
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 93 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ W@ D8B XOR OR \ MOV ECX , 599825
|
|
OP0 @ W@ C12B XOR OR \ SUB EAX , ECX
|
|
0= IF M\ 92 DTST
|
|
052B OP1 @ W! \ SUB EAX , 599825
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 93 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ C@ B8 XOR OR \ 59A227 B841000000 MOV EAX , # 1000
|
|
OP0 @ C@ A3 XOR OR \ 59A22C A375995900 MOV 599975 ( Char1Glob+5 ) , EAX
|
|
0= IF M\ 98 DTST
|
|
OP1 @ 1+ @ OP0 @ 1+ @
|
|
OP1 @ 2+ ! OP0 @ 1+ !
|
|
05C7 OP1 @ W! \ MOV 599975 , # 1000
|
|
OP1 ToOP0
|
|
FALSE M\ 99 DTST
|
|
EXIT
|
|
THEN
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ C@ B8 XOR OR \ MOV EAX , # 2000
|
|
OP0 @ @ FFFFFF AND 244489 XOR OR \ MOV 1C [ESP] , EAX
|
|
0= IF M\ A8 DTST
|
|
OP1 @ 1+ @ ,
|
|
OP1 OPexcise
|
|
C7 OP0 @ C! \ MOV 1C [ESP] , # 2000
|
|
FALSE M\ A9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ C@ B8 XOR \ B8E0005800 MOV EAX , # 5800E0
|
|
OP0 @ W@ 1001 XOR OR \ 0110 ADD [EAX] , EDX
|
|
0= IF M\ E4 DTST
|
|
OP1 @ 1+ @
|
|
1501 OP0 @ W! , \ ADD 5800E0 , EDX
|
|
FALSE M\ E5 DTST
|
|
EXIT
|
|
THEN
|
|
OP1 @ C@ B8 XOR \ 580185 B855550500 MOV EAX , # 55555
|
|
OP0 @ W@ 1089 XOR OR \ 58018A 8910 MOV [EAX] , EDX
|
|
0= IF M\ EE DTST
|
|
OP1 @ 1+ @
|
|
1589 OP0 @ W! , \ MOV 5800E0 , EDX
|
|
FALSE M\ EF DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ 1501D08B = \ 8BD0 MOV EDX , EAX
|
|
\ 011560015800 ADD 580160 , EDX
|
|
IF M\ E6 DTST
|
|
0501 OP0 @ W! \ ADD 5800E0 , EAX
|
|
FALSE M\ E7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ @ 0A4CB60F XOR OR \ MOVZX ECX , BYTE PTR 2 [EDX] [ECX]
|
|
OP0 @ W@ C133 XOR OR \ XOR EAX , ECX
|
|
0= IF M\ A0 DTST
|
|
OP0 OPexcise
|
|
0A443200 OP0 @ !
|
|
OP0 @ 1+ @ OP0 @ ! \ XOR AL , BYTE PTR [EAX+EDX+44H]
|
|
-1 ALLOT
|
|
FALSE M\ A1 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ @ FFFFFF AND 850C8D XOR OR \ LEA ECX , 58E188 ( rson+5 ) [EAX*4]
|
|
OP0 @ W@ 1189 XOR OR \ 596738 8911 MOV [ECX] , EDX
|
|
0= IF M\ A2 DTST
|
|
OP0 OPexcise
|
|
1489 OP0 @ W!
|
|
FALSE M\ A3 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP1 @ W@ 5589 XOR OR \ 8955F8 MOV F8 [EBP] , EDX
|
|
0= IF
|
|
OP0 @ W@ 450B = \ 0B45F8 OR EAX , F8 [EBP]
|
|
IF M\ B2 DTST
|
|
C20B OP0 @ W! \ OR EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ B3 DTST
|
|
EXIT
|
|
THEN
|
|
OP0 @ W@ 453B = \ 3B45F8 CMP EAX , F8 [EBP] !!!
|
|
IF M\ BE DTST
|
|
C23B OP0 @ W! \ CMP EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ BF DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
OP1 @ W@ C28B XOR \ 8BC2 MOV EAX , EDX
|
|
OP0 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
|
|
0= IF M\ C0 DTST
|
|
5589 OP0 @ W! \ 8955FC MOV FC [EBP] , EDX
|
|
FALSE M\ C1 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP1 @ W@ D08B XOR OR \ 8BD0 MOV EDX , EAX
|
|
OP0 @ W@ 45C7 XOR OR \ C7450001000000 MOV 0 [EBP] , # 1
|
|
0= IF M\ C6 DTST
|
|
OP1 OPexcise
|
|
FALSE M\ C7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP1 @ W@ 4589 XOR OR \ 58251C 894500 MOV 0 [EBP] , EAX
|
|
OP0 @ W@ 45C7 XOR OR \ 58251F C7450001000000 MOV 0 [EBP] , # 1
|
|
0= IF M\ C6 DTST
|
|
OP1 OPexcise
|
|
FALSE M\ C7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP1 @ @ 0501D08B XOR OR \ 8BD0 MOV EDX , EAX
|
|
\ 011510025800 ADD 580210 , EAX
|
|
0= IF M\ E8 DTST
|
|
OP1 OPexcise
|
|
FALSE M\ E9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP1 @ C@ B9 XOR OR \ B94C025800 MOV ECX , # 58024C
|
|
OP0 @ W@ 1C7 XOR OR \ C70189ABCDEF MOV [ECX] , # EFCDAB89
|
|
0= IF M\ EC DTST
|
|
OP0 @ 2+ @ OP1 @ 1+ @
|
|
OP1 @ 2+ ! OP0 @ 1+ !
|
|
05C7 OP1 @ W! \ MOV 58024C , # EFCDAB89
|
|
OP1 ToOP0
|
|
-1 ALLOT
|
|
FALSE M\ ED DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ C@ B8 XOR \ 587294 B801000000 MOV EAX , # 1
|
|
OP0 @ W@ C88B XOR OR \ 587299 8BC8 MOV ECX , EAX
|
|
0= IF M\ F6 DTST
|
|
OP1 @ 1+ @
|
|
OP0 @ 1+ !
|
|
B9 OP0 @ C! \ MOV ECX , # 1
|
|
3 ALLOT
|
|
FALSE M\ F7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ C@ B9 XOR \ B901000000 MOV ECX , # 1
|
|
OP0 @ W@ D9F7 XOR OR \ F7D9 NEG ECX
|
|
0= IF M\ F8 DTST
|
|
OP1 @ 1+ @ NEGATE
|
|
OP1 @ 1+ !
|
|
OP1 ToOP0
|
|
-2 ALLOT
|
|
FALSE M\ F9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP1 @ C@ B9 XOR OR \ B919000000 MOV ECX , # 19
|
|
OP0 @ W@ F7FF AND E0D3 XOR OR \ D3E8 SHR|SHL EAX , CL
|
|
0= IF M\ 100 DTST
|
|
OP1 @ 1+ @
|
|
OP1 OPexcise
|
|
C1 OP0 @ C! C,
|
|
FALSE M\ 101 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ C@ B8 XOR \ B801000000 MOV EAX , # 1
|
|
OP0 @ @ FFFFFF AND 85048B XOR OR \ 8B04851CDE5700 MOV EAX , 57DE1C [EAX*4]
|
|
0= IF M\ 148 DTST
|
|
A1 OP1 @ C! \ MOV EAX , 1
|
|
OP0 @ 3 + @
|
|
OP1 @ 1+ @ CELLS + OP1 @ 1+ !
|
|
OP0 OPexcise
|
|
FALSE M\ 149 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ W@ C033 XOR \ 33C0 XOR EAX , EAX
|
|
OP0 @ @ FFFFFF AND 85048B XOR OR \ 8B04851CDE5700 MOV EAX , 57DE1C [EAX*4]
|
|
0= IF M\ 348 DTST
|
|
2 OP0 +!
|
|
A1 OP0 @ C! \ MOV EAX , 57DE1C
|
|
OP1 OPexcise
|
|
FALSE M\ 349 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ C@ B8 XOR \ B803000000 MOV EAX , # 3
|
|
OP0 @ W@ F7FF AND E0C1 XOR OR \ C1E804 SH[R|L] EAX , 4
|
|
0= IF M\ 48 DTST
|
|
OP1 @ 1+ @
|
|
OP0 @ 2+ C@ OP0 @ W@ 0x800 AND IF RSHIFT ELSE LSHIFT THEN
|
|
OP1 @ 1+ !
|
|
OP0 OPexcise
|
|
FALSE M\ 49 DTST
|
|
EXIT
|
|
THEN
|
|
DUP C@ C3 XOR
|
|
OP1 @ W@ CA8B XOR OR \ 582148 8BCA MOV ECX , EDX
|
|
OP0 @ W@ C12B XOR OR \ 58214A 2BC1 SUB EAX , ECX
|
|
0= IF M\ 180 DTST
|
|
C22B OP1 @ W! \ SUB EAX , ECX
|
|
OP0 OPexcise
|
|
FALSE M\ 181 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
M\ PPPP
|
|
OP2 @ :-SET
|
|
\ TTTT IF ." T=" 2DUP HEX U. U. THEN
|
|
U< IF TRUE EXIT THEN
|
|
|
|
\ $ - DUP
|
|
OP2 @ W@ D8F7 XOR
|
|
OP1 @ W@ 4501 XOR OR 0=
|
|
IF M\ 118 DTST
|
|
OP2 OPexcise
|
|
29 OP1 @ C!
|
|
FALSE
|
|
EXIT M\ 119 DTST
|
|
THEN
|
|
|
|
\ $ - -
|
|
OP2 @ @ 4503D8F7 XOR \ NEG EAX ADD EAX, X [EBP]
|
|
OP0 @ W@ D8F7 XOR OR 0= \ NEG EAX
|
|
IF M\ 20 DTST
|
|
OP1 @ @ 452B OR OP2 @ ! \ SUB EAX, X [EBP]
|
|
OP2 ToOP0
|
|
-4 ALLOT
|
|
FALSE M\ 21 DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
OP0 @ W@ ADD|XOR|OR|AND= \ $ 4444 OR
|
|
IF
|
|
OP2 @ W@ 4589 XOR \ MOV X1 [EBP], EAX
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR 0=
|
|
IF
|
|
OP1 @ W@
|
|
DUP 0878B = \ MOV EAX, X [EDI]
|
|
IF DROP M\ 22 DTST
|
|
OP0 @ C@ 8700 + OP2 @ W!
|
|
OP1 @ 2+ @ OP2 @ 2+ !
|
|
OP2 ToOP0
|
|
FALSE -6 ALLOT M\ 23 DTST
|
|
EXIT
|
|
THEN
|
|
\ MOV X1 [EBP], EAX
|
|
DUP 0458B = \ MOV EAX , X [EBP]
|
|
\ ADD|XOR|OR|AND=
|
|
IF DROP M\ 122 DTST
|
|
OP0 @ C@ 4500 + OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ 123 DTST
|
|
EXIT
|
|
THEN
|
|
FF AND
|
|
\ MOV X1 [EBP], EAX
|
|
DUP 0B8 = \ MOV EAX, # X
|
|
\ ADD|XOR|OR|AND=
|
|
IF DROP M\ 24 DTST
|
|
OP0 @ C@ 2+ OP1 @ C!
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ 25 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
\ MOV X1 [EBP], EAX
|
|
DUP 0A1 = \ MOV EAX, X
|
|
\ ADD|XOR|OR|AND=
|
|
IF DROP M\ 26 DTST
|
|
OP0 @ C@ 500 +
|
|
OP1 @ 1+ @ OP1 @ 2+ !
|
|
OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 27 DTST
|
|
EXIT
|
|
THEN
|
|
DROP
|
|
THEN
|
|
OP2 @ W@ 45C7 XOR \ MOV X1 [EBP], # 4444 \ $ 4444 5555 OR
|
|
OP1 @ C@ B8 XOR OR 0= \ MOV EAX , # 4
|
|
\ ADD|XOR|OR|AND=
|
|
IF M\ 124 DTST
|
|
OP2 @ 3 + @ OP1 @ 1+ @
|
|
C300 OP0 @ 2+ ! OP0 @ EXECUTE
|
|
OP1 @ 1+ ! DROP
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ 125 DTST
|
|
EXIT
|
|
THEN
|
|
OP1 @ W@ 4D89 XOR \ MOV F4 [EBP] , ECX
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR 0= \ ADD|XOR|OR|AND=
|
|
IF M\ 12 DTST
|
|
C1 OP0 @ 1+ C! \ XOR EAX , ECX
|
|
FALSE -1 ALLOT M\ 13 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
\ ADD|XOR|OR|AND=
|
|
OP0 @ 2+ C@ OP1 -EBPLIT NIP
|
|
DUP @ W@ 45C7 = \ MOV F8 [EBP] , # 2710
|
|
OVER @ 2+ C@ OP0 @ 2+ C@ = AND
|
|
IF OP0 @ W@ 4503 = \ ADD EAX , F8 [EBP]
|
|
IF M\ 46 DTST
|
|
@ 3 + @ OFF-EAX + TO OFF-EAX
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ 47 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
DROP
|
|
|
|
OP0 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR
|
|
OP1 @ W@ 45C7 XOR OR \ 599B95 C745F401000000 MOV F4 [EBP] , # 1
|
|
\ ADD|XOR|OR|AND=
|
|
0= IF M\ 8C DTST
|
|
OP0 @ C@ 2+ OP0 @ C!
|
|
2 ALLOT
|
|
OP1 @ 3 + @ OP0 @ 1+ !
|
|
FALSE M\ 8D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
THEN
|
|
M\ PPPP
|
|
|
|
\ OP0 @ W@ 4D8B =
|
|
OP0 @ W@ 558B = \ MOV EDX , X [EBP]
|
|
IF \ OP-1 MOV EAX , FC [EBP]
|
|
OP0 @ 2+ C@ OP1 -EBPLIT NIP
|
|
DUP @ W@ 45C7 = \ MOV F8 [EBP] , # 2710
|
|
OVER @ 2+ C@ OP0 @ 2+ C@ = AND
|
|
IF M\ 50 DTST
|
|
-2 ALLOT
|
|
BA OP0 @ C!
|
|
@ 3 + @ ,
|
|
FALSE M\ 51 DTST
|
|
EXIT
|
|
THEN
|
|
DROP
|
|
THEN
|
|
|
|
OP0 @ W@ 4539 = \ CMP X [EBP] , EAX
|
|
IF
|
|
OP1 @ W@ 5589 XOR \ MOV X [EBP] , EDX
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR 0= \
|
|
IF M\ 128 DTST
|
|
D03B OP0 @ W!
|
|
FALSE -1 ALLOT M\ 129 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ C@ 0B8 XOR \ MOV EAX, # X
|
|
OP2 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR 0=
|
|
IF M\ 28 DTST
|
|
3D OP2 @ C!
|
|
OP1 @ 1+ @ OP2 @ 1+ !
|
|
OP2 ToOP0
|
|
FALSE -6 ALLOT M\ 29 DTST
|
|
EXIT
|
|
THEN
|
|
\ $ 4444 @ U<
|
|
OP1 @ C@ 0A1 XOR \ MOV EAX, # X
|
|
OP2 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR 0=
|
|
IF M\ 2A DTST
|
|
053B OP2 @ W!
|
|
OP1 @ 1+ @ OP2 @ 2+ !
|
|
OP2 ToOP0
|
|
FALSE -5 ALLOT M\ 2B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
THEN
|
|
DUP W@ 458B XOR \ MOV EAX , FC [EBP]
|
|
OP0 @ W@ 1089 XOR OR \ MOV [EAX] , EDX
|
|
OP1 @ W@ 558B XOR OR 0= \ MOV EDX , X [EBP] \ !?
|
|
IF \ OP-1 MOV EAX , FC [EBP]
|
|
OP2 @ W@ 408D = \ LEA EAX , 4 [EAX] \ $ CELL+ !
|
|
IF M\ 430 DTST
|
|
OP2 @ 2+ C@
|
|
OP2 OPexcise
|
|
5089 OP0 @ W! C,
|
|
FALSE M\ 431 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ :-SET U< IF TRUE EXIT THEN
|
|
\ $ 44444 !
|
|
OP3 @ 2+ C@
|
|
OP1 @ 2+ C@ =
|
|
IF OP3 @ W@ 4589 = \ MOV X [EBP] , EAX
|
|
IF OP2 @ C@ B8 = \ MOV EAX, X
|
|
IF M\ 30 DTST
|
|
A3 OP3 @ C!
|
|
OP2 @ 1+ @ OP3 @ 1+ !
|
|
OP3 ToOP0
|
|
FALSE -8 ALLOT M\ 31 DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ W@ 878D = \ LEA EAX, X [EDI]
|
|
IF M\ 230 DTST \ ???
|
|
OP3 OPexcise
|
|
8789 OP2 @ W! \ MOV X [EDI] , EAX
|
|
OP2 ToOP0
|
|
FALSE -5 ALLOT M\ 231 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
OP3 @ W@ 45C7 = \ MOV X [EBP] , # 44444
|
|
IF OP2 @ C@ B8 = \ TTTT AND \ MOV EAX, X
|
|
IF M\ 130 DTST
|
|
-4000 OP3 @ +!
|
|
OP3 @ 3 + @ OP2 @ 1+ @ OP3 @ 2+ !
|
|
OP3 @ 6 + !
|
|
|
|
OP3 ToOP0
|
|
FALSE -7 ALLOT M\ 131 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 878D = \ LEA EAX, X [EDI]
|
|
IF M\ 330 DTST \ ???
|
|
87C7 OP3 @ W!
|
|
OP3 @ 3 + @ OP2 @ 2+ @ OP3 @ 2+ !
|
|
OP3 @ 6 + !
|
|
|
|
OP3 ToOP0
|
|
FALSE -8 ALLOT M\ 331 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
THEN
|
|
THEN
|
|
|
|
M\ PPPP
|
|
OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX
|
|
OP1 @ @ FFFFFF AND 85048D XOR OR \ LEA EAX , Y [EAX*X] ãðóáî
|
|
OP0 @ W@ 4503 XOR OR
|
|
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0= \ X2=X0
|
|
IF M\ 318 DTST
|
|
048D OP0 @ W! 2 OP0 @ 2+ C!
|
|
FALSE
|
|
EXIT M\ 319 DTST
|
|
THEN
|
|
|
|
OP2 @ W@ 04D89 XOR \ MOV X [EBP] , ECX
|
|
OP1 @ ?ChEAX \ MOV EAX , ____
|
|
OP1 @ W@ 5589 <> AND OR \ MOV FC [EBP] , EDX
|
|
OP0 @ W@ 558B XOR OR \ MOV EDX , X [EBP]
|
|
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0=
|
|
IF M\ 630 DTST
|
|
D1 OP0 @ 1+ C!
|
|
FALSE -1 ALLOT M\ 631 DTST
|
|
EXIT
|
|
THEN
|
|
OP1 @ @ 008BC28B = \ MOV EAX , EDX MOV EAX , [EAX]
|
|
IF M\ 730 DTST
|
|
028B OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 731 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 =
|
|
IF
|
|
OP1 @ W@ D18B XOR \ MOV EDX , ECX
|
|
OP0 @ W@ 1089 XOR OR 0= \ MOV [EAX] , EDX
|
|
IF M\ 30E DTST
|
|
0889 OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE
|
|
-2 ALLOT M\ 40F DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
M\ PPPP
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ C@ B8 XOR OR \ MOV EAX , # 400
|
|
OP0 @ W@ 6DF7 XOR OR \ IMUL F8 [EBP]
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
0= IF
|
|
OP2 @ W@ 45C7 = \ MOV F8 [EBP] , # C8
|
|
IF M\ E30 DTST
|
|
OP2 @ 3 + @
|
|
OP1 @ 1+ @ * OP1 @ 1+ !
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ E31 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 4589 = \ MOV F8 [EBP] , EAX
|
|
IF M\ D0E DTST
|
|
OP1 @ 1+ @
|
|
OP1 OPexcise
|
|
-3 ALLOT
|
|
69 C, C0 C, , \ IMUL EAX,EAX,44444H
|
|
FALSE M\ D0F DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ C@ A1 XOR OR \ MOV EAX , 569598 ( X+5 )
|
|
OP0 @ W@ 6DF7 XOR OR \ IMUL FC [EBP]
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
\ OP0 @ 2+ C@ C>S OFF-EBP > OR
|
|
0= IF
|
|
OP2 @ W@ 4589 = \ MOV FC [EBP] , EAX
|
|
IF M\ 12A DTST
|
|
2DF7 OP2 @ W!
|
|
OP1 @ 1+ @ OP2 @ 2+ !
|
|
OP2 ToOP0
|
|
FALSE -5 ALLOT M\ 12B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 45C7 = \ MOV F8 [EBP] , # 123
|
|
IF M\ 22A DTST
|
|
B8 OP2 @ C!
|
|
OP2 @ 3 + @ OP2 @ 1+ !
|
|
-2 OP1 +!
|
|
2DF7 OP1 @ W!
|
|
OP1 @ 3 + @ OP1 @ 2+ !
|
|
OP1 ToOP0
|
|
FALSE -4 ALLOT M\ 22B DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
OP2 @ W@ 4589 XOR \ MOV FC [EBP] , EAX
|
|
OP1 @ @ 4503008B XOR OR \ MOV EAX , [EAX] ADD EAX , FC [EBP]
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
0= IF M\ 830 DTST
|
|
03 OP1 @ C!
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ 831 DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP2 @ W@ 558B XOR OR \ MOV EDX , 0 [EBP]
|
|
OP1 @ W@ CA8B XOR OR \ MOV ECX , EDX
|
|
OP0 @ C@ 51 XOR OR \ PUSH ECX
|
|
0= IF M\ A30 DTST
|
|
75FF OP2 @ W!
|
|
OP2 ToOP0
|
|
FALSE -3 ALLOT M\ A31 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 4589 XOR \ MOV 0 [EBP] , EAX
|
|
OP1 @ @ FFBFFF AND 24048B XOR OR \ MOV EAX , [ESP(+4)]
|
|
OP0 @ W@ 4503 XOR OR \ ADD EAX , 0 [EBP]
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
0= IF M\ B30 DTST
|
|
03 OP1 @ C!
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ C31 DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX
|
|
OP1 @ ?ChEAX OR \ MOV EAX , [EAX]
|
|
OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP]
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
0= IF M\ C30 DTST
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ C31 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 4589 XOR OR \ 579DE0 8945FC MOV FC [EBP] , EAX
|
|
OP1 @ C@ 25 XOR OR \ 579DE3 2555555555 AND EAX , # 55555555
|
|
OP0 @ W@ 558B XOR OR \ 579DE8 8B55FC MOV EDX , FC [EBP]
|
|
0= IF M\ C32 DTST
|
|
OP2 OPexcise
|
|
OP1 02 OPinsert
|
|
D08B OP2 @ W! \ MOV EDX , EAX
|
|
OP1 ToOP0
|
|
FALSE -3 ALLOT M\ C33 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
M\ PPPP
|
|
OP0 @ W@ ADD|XOR|OR|AND=
|
|
IF
|
|
TRUE ?~EAX !
|
|
OP1
|
|
BEGIN ?EAX>ECX
|
|
UNTIL
|
|
\ DUP IF ?~EAX @ IF 2DROP FALSE THEN
|
|
\ THEN
|
|
IF M\ AE DTST
|
|
?~EAX @
|
|
IF ECX:=EAX
|
|
ELSE BEGIN EAX>ECX0 UNTIL
|
|
THEN BEGIN EAX>ECX UNTIL
|
|
DROP
|
|
OP0 @ W@ 4503 = \ TTTT AND \ ADD EAX , X [EBP]
|
|
IF 01048D OP0 @ ! ELSE \ LEA EAX, [EAX+ECX]
|
|
0C1 OP0 @ 1+ C! -1 ALLOT \ OR EAX,ECX
|
|
THEN FALSE M\ AF DTST
|
|
EXIT
|
|
THEN M\ PPPP
|
|
|
|
TRUE ?~EAX !
|
|
OP1 \ TTTT IF ." ?EAX>EBX" THEN
|
|
BEGIN ?EAX>EBX \ TTTT IF ." F=" DUP . THEN
|
|
UNTIL
|
|
\ DUP IF ?~EAX @ IF 2DROP FALSE THEN
|
|
\ THEN
|
|
IF M\ AE DTST
|
|
?~EAX @ \ ." {#}"
|
|
IF EBX:=EAX
|
|
ELSE BEGIN EAX>EBX0 UNTIL
|
|
THEN BEGIN EAX>EBX UNTIL
|
|
DROP
|
|
OP0 @ W@ 4503 = \ TTTT AND \ ADD EAX , X [EBP]
|
|
IF 03048D OP0 @ ! ELSE \ LEA EAX, [EAX+EBX]
|
|
OP0 @ W@ 4539 = \ CMP F8 [EBP] , EAX
|
|
IF C33B OP0 @ W! -1 ALLOT ELSE \ CMP EAX , EBX
|
|
OP0 @ W@ 453B = \ CMP EAX , F8 [EBP]
|
|
IF D83B OP0 @ W! -1 ALLOT ELSE \ CMP EBX , EAX
|
|
0C3 OP0 @ 1+ C! -1 ALLOT \ OR EAX,EBX
|
|
THEN THEN THEN FALSE M\ AF DTST
|
|
EXIT
|
|
THEN M\ PPPP
|
|
|
|
|
|
OP1 @ @ 4503D8F7 = \ NEG EAX \ ADD EAX , 4 [EBP]
|
|
IF OP2 @ W@ 458B = \ MOV EAX , X [EBP]
|
|
IF M\ D0E DTST
|
|
OP1 OPexcise
|
|
OP1 @ 2+ C@ OP0 @ 2+ C@
|
|
OP1 @ 2+ C! OP0 @ 2+ C!
|
|
2B OP0 @ C!
|
|
FALSE M\ D0F DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ C@ A1 = \ MOV EAX , X
|
|
IF M\ D0E DTST
|
|
OP2 @ 1+ @
|
|
OP2 OPexcise
|
|
OP1 OPexcise
|
|
8B OP0 @ C!
|
|
SetOP 2B C, 5 C, ,
|
|
FALSE M\ D0F DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
THEN
|
|
M\ PPPP
|
|
|
|
OP2 @ W@ FFFD AND 4589 XOR \ MOV F8 [EBP] , EAX
|
|
OP1 @ W@ FFFD AND 4589 XOR OR \ MOV EAX , F8 [EBP]
|
|
OP2 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR OR
|
|
0= IF M\ E30 DTST
|
|
OP1 OPexcise
|
|
FALSE M\ E31 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ @ 458BC28B = \ MOV EAX , EDX MOV EAX , 0 [EBP]
|
|
IF M\ 44 DTST
|
|
OP2 OPexcise
|
|
FALSE M\ 45 DTST
|
|
EXIT
|
|
THEN
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ C@ B9 - FE AND OR \ MOV EDX , # 1000 MOV ECX , # 1000
|
|
OP0 @ W@ 1189 XOR OR \ MOV [ECX] , EDX
|
|
0= IF M\ 54 DTST
|
|
OP1 @ C@ BA =
|
|
IF 01C7 \ MOV [ECX] , # 1000
|
|
ELSE 1589 \ MOV 1000 , [EDX]
|
|
THEN
|
|
OP1 1 OPresize
|
|
OP1 @ W!
|
|
OP0 OPexcise
|
|
FALSE M\ 55 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP1 @ C@ B9 XOR OR \ MOV ECX , # 1000
|
|
OP0 @ W@ 4D89 XOR OR \ MOV X [EBP] , ECX
|
|
0= IF M\ 58 DTST
|
|
OP1 @ 1+ @
|
|
OP1 OPexcise
|
|
45C7 OP0 @ W! , \ MOV FC [EBP] , # 1000
|
|
FALSE M\ 59 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ @ FFFFFF AND 8D0C8D XOR OR \ LEA ECX , 5898B8 ( rson+5 ) [ECX*4]
|
|
OP0 @ W@ 01C7 XOR OR \ MOV [ECX] , # 1000
|
|
0= IF M\ 56 DTST
|
|
04C7 OP1 @ W! \ MOV X [ECX*4] , # 1000
|
|
OP0 @ 2+ @
|
|
OP0 OPexcise ,
|
|
FALSE M\ 57 DTST
|
|
EXIT
|
|
EXIT
|
|
THEN
|
|
DUP C@ 0C3 XOR
|
|
OP1 @ W@ C18B XOR OR \ MOV EAX , ECX
|
|
OP0 @ @ FFFFFF AND 85048D XOR OR \ LEA EAX , X [EAX*4]
|
|
0= IF M\ 5A DTST
|
|
OP1 OPexcise
|
|
8D OP0 @ 2+ C! \ LEA EAX , X [ECX*4]
|
|
FALSE M\ 5B DTST
|
|
EXIT
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 4589 XOR OR \ MOV F8 [EBP] , EAX
|
|
OP1 @ @ FFFFFF AND 8D048D XOR \ LEA EAX , X [ECX*4]
|
|
OP1 @ C@ B8 <> AND OR \ B801000000 MOV EAX , # 1
|
|
OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP]
|
|
0= IF M\ 5C DTST
|
|
OP1 2 OPinsert
|
|
D08B OP2 @ W! \ MOV EDX , EAX
|
|
OP0 OPexcise
|
|
FALSE M\ 5D DTST
|
|
EXIT
|
|
EXIT
|
|
THEN
|
|
|
|
OP0 @ 2+ C@
|
|
OP2 @ 2+ C@ XOR
|
|
OP2 @ W@ 4589 XOR OR \ MOV F8 [EBP] , EAX
|
|
OP1 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 18 [ESP]
|
|
OP0 @ W@ 558B XOR OR \ MOV EDX , F8 [EBP]
|
|
0= IF M\ 9C DTST
|
|
OP1 2 OPinsert
|
|
D08B OP2 @ W! \ MOV EDX , EAX
|
|
OP0 OPexcise
|
|
FALSE M\ 9D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP2 @ @ D9F7CA8B XOR OR \ MOV ECX , EDX NEG ECX
|
|
OP0 @ 1- @ 01048DD9 XOR OR \ LEA EAX , [ECX] [EAX]
|
|
0= IF M\ 66 DTST
|
|
OP2 OPexcise
|
|
02048DDA OP1 @ 1+ ! \ NEG EDX lea EAX, [EAX+EDX]
|
|
FALSE M\ 67 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ @ 45C7D08B XOR \ MOV EDX , EAX MOV F8 [EBP] , # X
|
|
OP0 @ C@ BA XOR OR \ MOV EDX , # 0
|
|
0= IF M\ 6A DTST
|
|
OP2 OPexcise
|
|
FALSE M\ 6B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ 0C3 XOR
|
|
OP2 @ C@ BA XOR OR \ MOV EDX , # 4
|
|
OP1 @ W@ 5501 XOR OR \ ADD 0 [EBP] , EDX
|
|
OP0 @ W@ 4513 XOR OR \ ADC EAX , FC [EBP]
|
|
0= IF M\ 82 DTST
|
|
OP0 4 OPresize 4 OP0 +!
|
|
OP2 @ 1+ @ OP2 OPexcise
|
|
OP1 @ 3 + ! 4581 OP1 @ W! \ ADD 0 [EBP] , # 4
|
|
FALSE M\ 83 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 3 + C@
|
|
OP0 @ 3 + C@ XOR
|
|
OP2 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 30 [ESP]
|
|
OP0 @ @ FFFFFF AND 244489 XOR OR \ MOV 30 [ESP] , EAX
|
|
0= IF OP1 @ @ 8901408D = \ 8D4001 LEA EAX , 1 [EAX]
|
|
IF M\ 88 DTST
|
|
OP1 OPexcise
|
|
FF OP0 @ C!
|
|
FALSE M\ 89 DTST
|
|
EXIT
|
|
THEN
|
|
OP1 @ @ 89FF408D = \ 8D4001 LEA EAX , -1 [EAX]
|
|
IF M\ 94 DTST
|
|
OP1 OPexcise
|
|
4CFF OP0 @ W!
|
|
FALSE M\ 95 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 408D XOR OR \ LEA EAX , 1 [EAX]
|
|
OP1 @ @ FFFFFF AND 244403 XOR OR \ ADD EAX , 8 [ESP]
|
|
OP0 @ @ FFFFFF AND B60F XOR OR \ MOVZX EAX , BYTE PTR [EAX]
|
|
0= IF M\ 9E DTST
|
|
OP2 @ 2+ C@ OP2 OPexcise
|
|
548B OP1 @ W! \ MOV EDX , 8 [ESP]
|
|
-3 ALLOT
|
|
0244B60F , C, \ MOVZX EAX , BYTE PTR 2 [EDX] [EAX]
|
|
FALSE M\ 9F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 5589 XOR OR \ 8955F8 MOV F8 [EBP] , EDX
|
|
|
|
OP1 @ W@ D8F7 XOR \ F7D8 NEG EAX
|
|
OP1 @ W@ D0F7 <> AND \ F7D0 NOT EAX
|
|
OP1 @ C@ 58 <> AND \ 58 POP EAX
|
|
OP1 @ W@ C123 <> AND OR \ 23C1 AND EAX , ECX
|
|
|
|
OP0 @ W@ ADD|XOR|OR|AND= 0=
|
|
OP0 @ W@ 458B <> AND OR
|
|
\ OP0 @ W@ 4503 XOR OR \ 0345F8 ADD EAX , F8 [EBP]
|
|
0= IF M\ 1B6 DTST
|
|
C2 OP0 @ 1+ C! \ ADD EAX , EDX
|
|
-1 ALLOT
|
|
FALSE M\ 1B7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 4D8B XOR OR \ 8B4D00 MOV ECX , 0 [EBP]
|
|
OP1 @ @ 4D89C82B XOR OR \ 2BC8 SUB ECX , EAX
|
|
\ 894D00 MOV 0 [EBP] , ECX
|
|
0= IF M\ B6 DTST
|
|
|
|
4529 OP2 @ W! \ SUB 0 [EBP] , EAX
|
|
OP2 ToOP0
|
|
-5 ALLOT
|
|
FALSE M\ B7 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 458B XOR OR \ 58266F 8B4500 MOV EAX , 0 [EBP]
|
|
OP1 @ W@ 558B XOR OR \ 582672 8B5504 MOV EDX , 4 [EBP]
|
|
OP0 @ W@ 4589 XOR OR \ 582675 894500 MOV 0 [EBP] , EAX
|
|
0= IF M\ D2 DTST
|
|
OP0 OPexcise
|
|
FALSE M\ D3 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
OP2 @ W@ 458B XOR \ 8B4500 MOV EAX , 0 [EBP]
|
|
OP1 @ W@ 5589 XOR OR \ 895500 MOV 0 [EBP] , EDX
|
|
OP0 @ W@ C88B XOR OR \ 8BC8 MOV ECX , EAX
|
|
0= IF M\ F4 DTST
|
|
4D8B OP2 @ W! \ MOV ECX , 0 [EBP]
|
|
C18B OP0 @ W! \ MOV EAX , ECX
|
|
FALSE M\ F5 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ C@ B8 XOR \ B801000000 MOV EAX , # 1
|
|
OP2 @ 1+ @ SHORT? 0= OR
|
|
OP1 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
|
|
OP0 @ W@ 48D XOR OR \ 8D0402 LEA EAX , [EDX] [EAX]
|
|
0= IF M\ FC DTST
|
|
OP2 @ 1+ @
|
|
OP2 OPexcise
|
|
428D OP0 @ W! \ LEA EAX , 1 [EDX]
|
|
OP0 @ 2+ C!
|
|
FALSE M\ FD DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 558B XOR \ 5876BB 8B5500 MOV EDX , 0 [EBP]
|
|
OP1 @ W@ 428D XOR OR \ 5876BE 8D4201 LEA EAX , 1 [EDX]
|
|
OP0 @ W@ 4589 XOR OR \ 5876C1 894500 MOV 0 [EBP] , EAX
|
|
0= IF M\ FC DTST
|
|
OP1 @ 2+ C@
|
|
OP1 OPexcise
|
|
4583 OP0 @ W! C, \ ADD EAX , 1 [EDX]
|
|
FALSE M\ FD DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 4589 XOR OR \ 8945EC MOV EC [EBP] , EAX
|
|
|
|
OP1 ?EDX_[EBP] OR
|
|
|
|
OP0 @ W@ 558B XOR OR \ 8B55EC MOV EDX , EC [EBP]
|
|
0= IF M\ 104 DTST
|
|
OP0 OPexcise
|
|
OP0 02 OPinsert
|
|
D08B OP1 @ W! \ MOV EDX , EAX
|
|
FALSE M\ 105 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ D08B XOR \ 5A5408 8BD0 MOV EDX , EAX
|
|
|
|
OP1 @ @ FFFFFF AND 95048D XOR \ 8D0495D8825900 LEA EAX , 5982D8 [EDX*4]
|
|
OP1 @ @ FFFFFF AND 95048B <> AND OR \ 8B0495D8825900 MOV EAX , 5982D8 [EDX*4]
|
|
|
|
OP0 @ W@ 558B XOR OR \ 5A5411 8B55F8 MOV EDX , F8 [EBP]
|
|
0= IF M\ 138 DTST
|
|
OP2 OPexcise
|
|
85 OP1 @ 2+ C! \ LEA EAX , 5982D8 [EAX*4]
|
|
FALSE M\ 139 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ @ E1C1CA8B XOR OR \ 8BCA MOV ECX , EDX
|
|
\ C1E107 SHL ECX , 7
|
|
OP0 @ W@ C10B XOR OR \ 0BC1 OR EAX , ECX
|
|
0= IF M\ 108 DTST
|
|
OP2 OPexcise
|
|
E2C1 OP1 @ W! \ SHL EDX , 7
|
|
C20B OP0 @ W! \ OR EAX , EDX
|
|
FALSE M\ 109 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ @ 878DD08B XOR \ 8BD0 MOV EDX , EAX
|
|
\ 8D873C100000 LEA EAX , 103C [EDI]
|
|
OP0 @ W@ 1088 XOR OR \ 8810 MOV [EAX] , DL
|
|
0= IF M\ 110 DTST
|
|
OP1 @ 2+ @
|
|
9788 OP1 @ W! \ MOV 103C [EDI] , DL
|
|
878D OP0 @ W! \ LEA EAX , 103C [EDI]
|
|
,
|
|
FALSE M\ 111 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ @ 5589D98B XOR OR \ 58809A 8BD9 MOV EBX , ECX
|
|
\ 58809C 8955EC MOV EC [EBP] , EDX
|
|
OP0 @ W@ C323 XOR OR \ 58809F 23C3 AND EAX , EBX
|
|
0= IF M\ 116 DTST
|
|
OP2 OPexcise
|
|
C123 OP0 @ W! \ AND EAX , ECX
|
|
FALSE M\ 117 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 4D8B XOR OR \ 8B4DF0 MOV ECX , F0 [EBP]
|
|
OP1 @ @ 23F05589 XOR OR \ 8955F0 MOV F0 [EBP] , EDX
|
|
\ 23C1 AND EAX , ECX
|
|
0= IF M\ 11E DTST
|
|
OP0 OPexcise
|
|
4523 OP1 @ W! \ AND EAX , F0 [EBP]
|
|
FALSE M\ 11D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 558B XOR OR \ 5881D2 8B55EC MOV EDX , EC [EBP]
|
|
OP1 @ @ BF04523 XOR OR \ 5881D5 2345F0 AND EAX , F0 [EBP]
|
|
OP0 @ W@ C20B XOR OR \ 5881D8 0BC2 OR EAX , EDX
|
|
0= IF M\ 120 DTST
|
|
OP2 @ 2+ C@
|
|
OP2 OPexcise
|
|
450B OP0 @ W! \ OR EAX , EC [EBP]
|
|
C,
|
|
FALSE M\ 11D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR
|
|
OP2 @ W@ 5589 XOR OR \ 8955F0 MOV F0 [EBP] , EDX
|
|
OP1 @ W@ 4523 XOR OR \ 2345F0 AND EAX , F0 [EBP]
|
|
0= IF M\ 126 DTST
|
|
OP1 OPexcise
|
|
OP0 2 OPinsert
|
|
C223 OP1 @ W! \ AND EAX , EDX
|
|
FALSE M\ 127 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR
|
|
OP2 @ W@ 4D89 XOR OR \ 894DFC MOV FC [EBP] , ECX
|
|
OP1 @ W@ 4523 XOR OR \ 2345FC AND EAX , FC [EBP]
|
|
0= IF M\ 13E DTST
|
|
OP1 OPexcise
|
|
OP0 2 OPinsert
|
|
C123 OP1 @ W! \ AND EAX , ECX
|
|
FALSE M\ 13F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ 2+ C@ C>S OFF-EBP U< 0= OR
|
|
OP2 @ W@ 558B XOR OR \ 58838C 8955F8 MOV EDX , F4 [EBP]
|
|
OP1 @ @ C20BC123 XOR OR \ 58838F 23C1 AND EAX , ECX
|
|
\ 588391 0BC2 OR EAX , EDX
|
|
0= IF M\ 12C DTST
|
|
OP2 @ 2+ C@
|
|
OP2 OPexcise
|
|
450B OP0 @ W! \ OR EAX , F8 [EBP]
|
|
C,
|
|
FALSE M\ 12D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ @ C123CA8B XOR OR \ 8BCA MOV ECX , EDX
|
|
\ 23C1 AND EAX , ECX
|
|
OP0 @ W@ 450B XOR OR \ 0B45F4 OR EAX , F4 [EBP]
|
|
0= IF M\ 1F2 DTST
|
|
OP2 OPexcise
|
|
C223 OP1 @ W! \ AND EAX , EDX
|
|
FALSE M\ 1F3 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 4D8B XOR OR \ 5884C1 8B4DF8 MOV ECX , F8 [EBP]
|
|
OP1 @ @ C10BCA23 XOR OR \ 5884C4 23CA AND ECX , EDX
|
|
OP0 @ W@ C10B XOR OR \ 5884C6 0BC1 OR EAX , ECX
|
|
0= IF M\ 1F4 DTST
|
|
OP1 OPexcise
|
|
5523 OP1 @ W! \ AND EDX , F8 [EBP]
|
|
C20B OP0 @ W! \ OR EAX , EDX
|
|
FALSE M\ 1F5 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 558B XOR OR \ 587860 8B5500 MOV EDX , 0 [EBP]
|
|
OP1 @ W@ 528D XOR OR \ 587863 8D5201 LEA EDX , 1 [EDX]
|
|
OP0 @ W@ 5589 XOR OR \ 587866 895500 MOV 0 [EBP] , EDX
|
|
0= IF M\ 144 DTST
|
|
OP1 @ 2+ C@
|
|
OP2 OPexcise
|
|
OP1 OPexcise
|
|
4583 OP0 @ W! \ ADD 0 [EBP] , # 1
|
|
C,
|
|
FALSE M\ 145 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
\ OP2 @ W@ 5589 XOR OR \ 8B5500 EDX , MOV 0 [EBP]
|
|
OP2 @ W@ 558B XOR OR \ 8B5500 EDX , MOV 0 [EBP]
|
|
OP1 @ W@ E0D3 XOR OR \ D3E0 SHL EAX , CL
|
|
\ OP1 ?EDX_[EBP] OR \ D3E0 SHL EAX , CL
|
|
OP0 @ W@ C20B XOR OR \ 0BC2 OR EAX , EDX
|
|
0= IF M\ 14A DTST
|
|
OP2 @ 2+ C@
|
|
OP2 OPexcise
|
|
45 OP0 @ 1+ C! \ OR EAX , 0 [EBP]
|
|
C,
|
|
FALSE M\ 14B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
|
|
OP1 @ W@ 458B XOR OR \ 8B4500 MOV EAX , 0 [EBP]
|
|
OP0 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP]
|
|
0= IF M\ 162 DTST
|
|
OP1 ToOP0 -3 ALLOT
|
|
OP0 2 OPinsert
|
|
D08B OP1 @ W!
|
|
FALSE M\ 163 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 4D8B XOR OR \ 582055 8B4D04 MOV ECX , 4 [EBP]
|
|
OP1 @ W@ 5589 XOR OR \ 582058 895504 MOV 4 [EBP] , EDX
|
|
OP0 @ @ FFFFFF AND 1048D XOR OR \ 58205B 8D0401 LEA EAX , [ECX] [EAX]
|
|
0= IF M\ 168 DTST
|
|
4503 OP2 @ W! \ ADD EAX , 4 [EBP]
|
|
OP0 OPexcise
|
|
FALSE M\ 169 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ W@ 558B XOR OR \ 582202 8B5500 MOV EDX , 0 [EBP]
|
|
OP1 @ W@ 4503 XOR OR \ 582205 034504 ADD EAX , 4 [EBP]
|
|
OP0 @ W@ C22B XOR OR \ 582208 2BC2 SUB EAX , EDX
|
|
0= IF M\ 170 DTST
|
|
OP2 @ 2+ C@
|
|
OP2 OPexcise
|
|
452B OP0 @ W! C, \ SUB EAX , 0 [EBP]
|
|
FALSE M\ 171 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ 2+ C@
|
|
OP1 @ 2+ C@ = OR
|
|
OP2 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
|
|
OP1 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
|
|
OP0 @ @ FFFFFF AND 2048D XOR OR \ 8D0402 LEA EAX , [EDX] [EAX]
|
|
0= IF M\ 158 DTST
|
|
OP2 @ 2+ C@
|
|
OP2 OPexcise
|
|
4503 OP0 @ W! \ ADD EAX , 0 [EBP]
|
|
OP0 @ 2+ C!
|
|
FALSE M\ 159 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
OP2 @ 2+ C@
|
|
OP1 @ 2+ C@ = OR
|
|
OP2 @ W@ 4589 XOR OR \ 571DD0 8945FC MOV FC [EBP] , EAX
|
|
OP1 @ W@ 4503 XOR OR \ 571DD3 034500 ADD EAX , 0 [EBP]
|
|
OP0 @ W@ 6DF7 XOR OR \ 571DD6 F76DFC IMUL FC [EBP]
|
|
0= IF M\ 160 DTST
|
|
OP2 OPexcise
|
|
OP1 2 OPinsert
|
|
C88B OP2 @ W! \ MOV ECX , EAX
|
|
E9F7 OP0 @ W! \ IMUL ECX
|
|
FALSE -1 ALLOT M\ 161 DTST
|
|
EXIT
|
|
THEN
|
|
DUP C@ C3 XOR
|
|
OP2 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
|
|
OP2 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
|
|
OP1 @ W@ AF0F XOR OR \ 0FAFC2 IMUL EAX , EDX
|
|
OP0 @ W@ 4503 XOR OR \ 034500 ADD EAX , 0 [EBP]
|
|
|
|
0= IF M\ 248 DTST
|
|
OP2 OPexcise
|
|
OP1 2 OPinsert
|
|
C88B OP2 @ W! \ MOV ECX , EAX
|
|
C103 OP0 @ W! \ ADD EAX , ECX
|
|
|
|
FALSE -1 ALLOT M\ 141 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP2 @ W@ C28B XOR OR \ 571EED 8BC2 MOV EAX , EDX
|
|
OP1 @ W@ 5589 XOR OR \ 571EEF 8955FC MOV FC [EBP] , EDX
|
|
OP0 @ W@ 6DF7 XOR OR \ 571EF2 F76DFC IMUL FC [EBP]
|
|
0= IF M\ 182 DTST
|
|
EAF7 OP0 @ W! \ IMUL EDX
|
|
FALSE -1 ALLOT M\ 183 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
( !!!!!!!!!!
|
|
DUP C@ C3 XOR
|
|
OP1 @ @ EAF7C28B XOR OR \ 8BC2 MOV EAX , EDX
|
|
\ F7EA IMUL EDX
|
|
0= IF M\ 184 DTST
|
|
OP1 OPexcise
|
|
C2AF0F OP0 @ ! \ IMUL EAX , EDX
|
|
FALSE 1 ALLOT M\ 185 DTST
|
|
EXIT
|
|
THEN
|
|
)
|
|
|
|
|
|
OP3 @ :-SET U< IF TRUE EXIT THEN
|
|
M\ PPPP
|
|
|
|
OP3 @ @ D08BC28B = \ MOV EAX , EDX MOV EDX , EAX
|
|
IF M\ 42 DTST
|
|
OP2 OPexcise
|
|
FALSE M\ 43 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ W@ 453B = \ CMP EAX , X [EBP]
|
|
IF OP0 @ @ FFFCFF AND C09C0F = \ SETLE AL
|
|
IF
|
|
\ $ 4444 <
|
|
OP2 @ C@ 0B8 XOR \ MOV EAX, # X
|
|
OP3 @ W@ 4589 XOR OR \ MOV X1 [EBP], EAX
|
|
OP3 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR OR 0=
|
|
IF M\ 2C DTST
|
|
3D OP3 @ C!
|
|
OP2 @ 1+ @ OP3 @ 1+ !
|
|
2 OP2 +!
|
|
OP0 @ @ 300 XOR OP2 @ ! \ SETGE AL
|
|
OP2 ToOP0
|
|
FALSE -6 ALLOT M\ 2D DTST
|
|
EXIT
|
|
THEN
|
|
\ $ 4444 @ <
|
|
OP2 @ C@ 0A1 XOR \ MOV EAX, # X
|
|
OP3 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR OR 0=
|
|
IF
|
|
OP3 @ W@ 4589 = \ MOV X1 [EBP], EAX
|
|
IF M\ 2E DTST
|
|
053B OP3 @ W!
|
|
OP2 @ 1+ @ OP3 @ 2+ !
|
|
3 OP2 +!
|
|
OP0 @ @ 300 XOR OP2 @ ! \ SETGE AL
|
|
OP2 ToOP0
|
|
FALSE -5 ALLOT M\ 2F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ W@ 45C7 = \
|
|
IF M\ 12E DTST
|
|
3D81 OP3 @ W!
|
|
OP3 @ 3 + @
|
|
OP2 @ 1+ @ OP3 @ 2+ ! OP3 @ 6 + !
|
|
3 OP2 +!
|
|
OP0 @ @ OP2 @ !
|
|
OP2 ToOP0
|
|
FALSE -5 ALLOT M\ 12F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
THEN
|
|
THEN
|
|
THEN
|
|
DUP @ 458B1089 XOR \ MOV [EAX], EDX MOV EAX , X [EBP]
|
|
OVER 5 + @ C3086D8D XOR OR \ LEA EBP, 8 [EBP] RET
|
|
OP0 @ W@ D18B XOR OR 0= \ MOV EDX , ECX
|
|
IF M\ 51E DTST
|
|
0889 OP0 @ W! \ MOV [EAX] , ECX
|
|
2+ FALSE M\ 51F DTST
|
|
EXIT
|
|
THEN
|
|
M\ PPPP
|
|
|
|
OP3 @ W@ 4589 XOR \ 8945FC MOV FC [EBP] , EAX
|
|
OP2 @ C@ B8 XOR OR \ B8189D5700 MOV EAX , # 579D18
|
|
OP1 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP]
|
|
OP0 @ @ FFFFFF AND 90048D XOR OR \ 8D0490 LEA EAX , [EAX] [EDX*4]
|
|
OP3 @ 2+ C@ OP1 @ 2+ C@ XOR OR \ X0=X2
|
|
0= IF M\ 840 DTST
|
|
OP2 @ 1+ @ 85048D OP2 @ !
|
|
OP2 @ 3 + !
|
|
OP2 ToOP0
|
|
FALSE -4 ALLOT M\ 841 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ W@ 558B XOR \ MOV EDX , FC [EBP]
|
|
OP2 @ W@ 4589 XOR OR \ MOV FC [EBP] , EAX
|
|
OP1 @ W@ C28B XOR OR \ MOV EAX , EDX
|
|
OP0 @ W@ 558B XOR OR \ MOV EDX , FC [EBP]
|
|
OP3 @ 2+ C@ OP2 @ 2+ C@ XOR OR
|
|
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR
|
|
0= IF M\ F30 DTST
|
|
OP3 OPexcise
|
|
OP2 OPexcise
|
|
D08B OP1 @ W! \ MOV EDX , EAX
|
|
458B OP0 @ W! \ MOV EAX , FC [EBP]
|
|
DO_EAX>ECX DROP
|
|
SetOP 89 C, 55 C, OP0 @ 2+ C@ C, \ MOV FC [EBP] , EDX
|
|
FALSE M\ F31 DTST
|
|
EXIT
|
|
THEN
|
|
OP3 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP3 @ W@ 4589 XOR OR \ 57BF16 8945FC MOV FC [EBP] , EAX
|
|
OP2 @ W@ C033 XOR OR \ 57BF19 33C0 XOR EAX , EAX
|
|
OP1 @ W@ 4581 XOR OR \ 57BF1B 814500BA040000 ADD 0 [EBP] , # 4BA
|
|
OP0 @ W@ 4513 XOR OR \ 57BF22 1345FC ADC EAX , FC [EBP]
|
|
0= IF M\ 84 DTST
|
|
OP2 OPexcise
|
|
D083 OP0 @ ! \ ADC EAX , # 0
|
|
FALSE M\ 85 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP3 @ W@ 4589 XOR OR \ 59690C 8945F0 MOV F0 [EBP] , EAX
|
|
OP2 @ C@ B8 XOR OR \ 59690F B801000000 MOV EAX , # 1
|
|
OP1 @ C@ BA XOR OR \ 596914 BA00000080 MOV EDX , # 80000000
|
|
OP0 @ W@ 552B XOR OR \ 596919 2B55F0 SUB EDX , F0 [EBP]
|
|
0= IF M\ A4 DTST
|
|
OP2 @ 1+ @
|
|
OP2 OPexcise
|
|
D02B OP0 @ ! \ SUB EDX , EAX
|
|
-1 ALLOT
|
|
SetOP B8 C, ,
|
|
FALSE M\ A5 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP3 @ W@ 4589 XOR OR \ 8945F8 MOV F8 [EBP] , EAX
|
|
OP2 ?EDX_[EBP] OR
|
|
OP1 ?EDX_[EBP] OR
|
|
OP0 @ W@ 558B XOR OR \ 8B55F8 MOV EDX , F8 [EBP]
|
|
0= IF M\ EC DTST
|
|
OP2 2 OPinsert
|
|
D08B OP3 @ W! \ MOV EDX , EAX
|
|
OP0 OPexcise
|
|
FALSE M\ ED DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR
|
|
OP3 @ W@ 4589 XOR OR \ 8945FC MOV FC [EBP] , EAX
|
|
OP2 @ C@ B8 XOR OR \ B801000000 MOV EAX , # 1
|
|
OP1 @ C@ B9 XOR OR \ B9FFFFFFFF MOV ECX , # FFFFFFFF
|
|
OP0 @ W@ 4D03 XOR OR \ 034DFC ADD ECX , FC [EBP]
|
|
0= IF M\ FA DTST
|
|
OP2 @ 1+ @
|
|
OP2 OPexcise
|
|
C803 OP0 @ W! \ ADD ECX , EAX
|
|
-1 ALLOT
|
|
SetOP B8 C, ,
|
|
FALSE M\ FB DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ C@ A1 XOR \ 587C37 A1D8795800 MOV EAX , 5879D8 ( C+5 )
|
|
OP2 @ W@ D08B XOR OR \ 587C3C 8BD0 MOV EDX , EAX
|
|
OP1 @ C@ A1 XOR OR \ 587C3E A1E4795800 MOV EAX , 5879E4 ( D+5 )
|
|
OP0 @ W@ 4589 XOR OR \ 587C43 8945EC MOV EC [EBP] , EAX
|
|
0= IF M\ 114 DTST
|
|
OP2 OPexcise
|
|
OP2 1 OPresize
|
|
158B OP2 @ W!
|
|
FALSE M\ 115 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP3 @ 2+ C@
|
|
OP1 @ 2+ C@ XOR
|
|
OP1 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
OP3 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
|
|
OP2 @ W@ 428D XOR OR \ 8D4201 LEA EAX , 1 [EDX]
|
|
OP1 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
|
|
OP0 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
|
|
0= IF M\ 140 DTST
|
|
OP3 OPexcise
|
|
OP2 2 OPinsert
|
|
C88B OP3 @ W! \ MOV ECX , EAX
|
|
OP1 OPexcise
|
|
OP0 2 OPinsert
|
|
D18B OP1 @ W! \ MOV EAX , ECX
|
|
FALSE M\ 141 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
|
|
OP4 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
\ $ 10 LSHIFT
|
|
OP4 @ W@ 4589 XOR \ MOV X0 [EBP] , EAX
|
|
OP3 @ C@ B8 XOR OR \ MOV EAX, # 10
|
|
OP2 @ @ 458BC88B XOR OR \ MOV ECX, EAX \ !? MOV EAX, X2 [EBP]
|
|
OP0 @ W@ F7FF AND E0D3 XOR OR \ SHL|SHR EAX , CL
|
|
OP4 @ 2+ C@ OP1 @ 2+ C@ XOR OR \ X0=X2
|
|
0=
|
|
IF M\ 32 DTST
|
|
OP0 @ W@ 0012 - OP4 @ W!
|
|
OP3 @ 1+ @ OP4 @ 2+ C!
|
|
OP4 ToOP0
|
|
FALSE -C ALLOT M\ 33 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ FFFFFF AND 82448D XOR \ LEA EAX , 0 [EDX] [EAX*4]
|
|
OP0 @ W@ 0889 XOR OR \ MOV [EAX] , ECX
|
|
0=
|
|
IF M\ 132 DTST
|
|
4C89 OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 133 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
OP4 @ 2+ C@
|
|
OP3 @ 2+ C@ XOR
|
|
OP3 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
OP4 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
|
|
OP3 @ W@ 4589 XOR OR \ 894500 MOV 0 [EBP] , EAX
|
|
OP2 @ @ C203D8F7 XOR OR \ F7D8 NEG EAX
|
|
\ 03C2 ADD EAX , EDX
|
|
OP0 @ W@ 558B XOR OR \ 8B5500 MOV EDX , 0 [EBP]
|
|
0= IF M\ C8 DTST
|
|
4D OP4 @ 1+ C! \ MOV ECX , 0 [EBP]
|
|
\ MOV 0 [EBP] , EAX
|
|
D08B OP2 @ W! \ MOV EDX , EAX
|
|
C103D8F7 OP1 @ ! \ NEG EAX
|
|
\ ADD EAX , ECX
|
|
FALSE -1 ALLOT M\ C9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP4 @ W@ 5589 XOR \ 895500 MOV 0 [EBP] , EDX
|
|
OP3 @ W@ 558B XOR OR \ 8B55FC MOV EDX , FC [EBP]
|
|
OP2 @ W@ 4D8B XOR OR \ 8B4D00 MOV ECX , 0 [EBP]
|
|
0= IF M\ C8 DTST
|
|
OP3 2 OPinsert
|
|
CA8B OP4 @ W! \ MOV ECX , EDX
|
|
OP2 OPexcise
|
|
FALSE M\ C9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP C@ C3 XOR
|
|
OP3 @ 2+ C@
|
|
OP0 @ 2+ C@ XOR OR
|
|
OP3 @ W@ 4589 XOR OR \ 571FEA 894500 MOV 0 [EBP] , EAX
|
|
OP2 @ W@ C28B XOR OR \ 571FED 8BC2 MOV EAX , EDX
|
|
OP1 @ W@ EAF7 XOR OR \ 571FEF F7EA IMUL EDX
|
|
OP0 @ W@ 4503 XOR OR \ 571FF1 034500 ADD EAX , 0 [EBP]
|
|
0= IF M\ 1C8 DTST
|
|
|
|
OP2 OPexcise
|
|
OP1 OPexcise
|
|
|
|
OP0 3 OPinsert
|
|
AF0F OP1 @ W!
|
|
D2 OP1 @ 2+ C! \ IMUL EDX , EDX
|
|
|
|
C203 OP0 @ W! \ ADD EAX , EDX
|
|
FALSE
|
|
-1 ALLOT
|
|
M\ 1C9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
OP5 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
M\ PPPP
|
|
|
|
TRUE
|
|
;
|
|
|
|
: -EVEN-EBP
|
|
OP0 @ :-SET U< IF EXIT THEN
|
|
OP0 @ W@ 06D8D = \ LEA ebp, OFF-EBP [EBP]
|
|
IF OP0 @ 2+ C@ +>OFF-EBP
|
|
OP1 ToOP0
|
|
-3 ALLOT EXIT
|
|
THEN ;
|
|
|
|
|
|
: OPT_ ( -- )
|
|
BEGIN
|
|
\ M\ -D DTST
|
|
OPT-RULES UNTIL
|
|
\ M\ -F DTST
|
|
EVEN-EAX ;
|
|
|
|
: DO_OPT ( ADDR -- ADDR' )
|
|
OPT? IF OPT_ THEN ;
|
|
|
|
: INLINE? ( CFA -- CFA FLAG )
|
|
DUP BEGIN
|
|
2DUP
|
|
MM_SIZE - U> 0= IF DROP FALSE EXIT THEN
|
|
DUP C@ \ CFA CFA+OFF N'
|
|
DUP 0C3 = IF 2DROP TRUE EXIT THEN \ RET
|
|
DUP5B? M_WL DROP 5 + REPEAT
|
|
\ 0100.X0XX
|
|
DUP 0F4
|
|
AND 40 = M_WL DROP 1+ REPEAT \ INC|DEC E(ACDB)X
|
|
|
|
DUP 099 = M_WL DROP 1+ REPEAT \ CDQ
|
|
\ 1110.11XX
|
|
OS\ DUP FC
|
|
OS\ AND EC = M_WL DROP 1+ REPEAT \ IN|OUT EAX AL, DX | DX, EAX EL
|
|
OS\ DUP CD = M_WL DROP 2+ REPEAT \ INTX
|
|
DROP
|
|
DUP W@ \ CFA CFA+OFF N'
|
|
|
|
DUP3B?[EBP] M_WL DROP 3 + REPEAT
|
|
DUP3B? M_WL DROP 3 + REPEAT
|
|
DUP 06D8D = M_WL DROP 3 + REPEAT \ LEA EBP, OFF-EBP [EBP]
|
|
DUP 0C583 = M_WL DROP 3 + REPEAT \ ADD EBP, # OFF-EBP
|
|
DUP 0ED83 = M_WL DROP 3 + REPEAT \ SUB EBP, # X
|
|
DUP2B? M_WL DROP 2+ REPEAT
|
|
DUP 0EC87 = M_WL DROP 2+ REPEAT \ XCHG EBP , ESP
|
|
|
|
DUP C58B = M_WL DROP 2+ REPEAT \ MOV EAX, EBP
|
|
|
|
\ DUP 0E3FF = M_WL DROP 2+ REPEAT \ JMP EBX
|
|
DUP6B? M_WL DROP 6 + REPEAT
|
|
DUP 45C7 = M_WL DROP 7 + REPEAT \ MOV X [EBP] , # X
|
|
DUP 05C7 = M_WL DROP A + REPEAT \ MOV X , # Y
|
|
DUP 0581 = M_WL DROP A + REPEAT \ ADD X , # Y
|
|
|
|
DROP
|
|
DUP @
|
|
DUP 0424448B = M_WL DROP 4 + REPEAT
|
|
DUP 0424448D = M_WL DROP 4 + REPEAT
|
|
DUP 8BE08B5B =
|
|
IF OVER 3 + 2@ \ 1 TO TTTT
|
|
E3FF046D 8D00458B D= \ RP!
|
|
IF 2DROP TRUE EXIT THEN
|
|
THEN
|
|
FFFFFF AND
|
|
DUP C09D0F = M_WL DROP 3 + REPEAT \ SETGE AL
|
|
DUP C09E0F = M_WL DROP 3 + REPEAT \ SETLE AL
|
|
DUP 90048D = M_WL DROP 3 + REPEAT \ LEA EAX , [EAX] [EDX*4]
|
|
DUP 02048D = M_WL DROP 3 + REPEAT \ LEA EAX, [EDX] [EAX]
|
|
DUP 40B70F = M_WL DROP 4 + REPEAT \ MOVZX EAX , WORD PTR FE [EAX]
|
|
|
|
|
|
\ CMPXCHG [EAX] , AL| EAX
|
|
\ LSS EAX , [EAX]
|
|
\ BTR [EAX] , EAX
|
|
\ LFS EAX , [EAX]
|
|
\ LGS EAX , [EAX]
|
|
\ MOVZX EAX , BYTE|WORD PTR [EAX]
|
|
\ 0000.0000 1011.1XXX 0000.1111
|
|
DUP FFF8FF
|
|
AND 00B00F = M_WL DROP 3 + REPEAT \ MOVZX EAX, WORD PTR [EAX]
|
|
|
|
DUP 20488B = M_WL DROP 3 + REPEAT \ MOV ECX , [EAX+20H]
|
|
DUP 20488D = M_WL DROP 3 + REPEAT \ LEA ECX , [EAX+20H]
|
|
|
|
DUP 85448B = M_WL DROP 4 + REPEAT \ MOV EAX, X [EBP] [EAX*4]
|
|
DUP 02048D = M_WL DROP 4 + REPEAT \ LEA EAX , [EDX] [EAX]
|
|
\ XX00.0101 0000.0100 1000.1XX1
|
|
DUP7B? WHILE DROP 7 + REPEAT
|
|
2DROP FALSE
|
|
;
|
|
|
|
: MACRO? INLINE? ;
|
|
|
|
\ ÌÀÊÐÎÏÎÄÑÒÀÍÎÂÙÈÊ
|
|
|
|
: +EBP DUP C@ C>S OFF-EBP + C, 1+ ;
|
|
|
|
: 1_,_STEP SetOP DROP DUP C@ C, 1+ ;
|
|
|
|
: 2_,_STEP SetOP DROP DUP W@ W, 2+ ;
|
|
|
|
: 3_,_STEP 2_,_STEP DUP C@ C, 1+ ;
|
|
|
|
: 4_,_STEP_ DUP @ , CELL+ ;
|
|
|
|
: 4_,_STEP SetOP DROP 4_,_STEP_ ;
|
|
|
|
: 5_,_STEP 1_,_STEP 4_,_STEP_ ;
|
|
|
|
: 6_,_STEP 2_,_STEP 4_,_STEP_ ;
|
|
|
|
: 7_,_STEP 3_,_STEP 4_,_STEP_ ;
|
|
|
|
: A_,_STEP 2_,_STEP 4_,_STEP_ 4_,_STEP_ ;
|
|
|
|
: 0A_,_STEP DUP DUP @ + DP @ - , CELL+ ;
|
|
|
|
: 1A_,_STEP 1_,_STEP 0A_,_STEP ;
|
|
|
|
: 2A_,_STEP 2_,_STEP 0A_,_STEP ;
|
|
|
|
: _INLINE, ( CFA -- )
|
|
\ ." ^" DUP H.
|
|
BEGIN
|
|
DO_OPT
|
|
|
|
DUP @ \ CFA N'
|
|
DUP 8BE08B5B = DUP
|
|
IF DROP OVER 3 + 2@ E3FF046D 8D00458B D= \ RP!
|
|
THEN M_WL DROP SetOP
|
|
8B C, E0 C, \ MOV ESP, EAX
|
|
DROP 'DROP
|
|
REPEAT
|
|
FF AND \ CFA N'
|
|
DUP 0C3 = IF 2DROP EXIT THEN \ RET
|
|
|
|
DUP5B? M_WL 5_,_STEP REPEAT \ ADD EAX, # X
|
|
|
|
\ 010X.XXXX
|
|
DUP E0 AND 40 = M_WL 1_,_STEP REPEAT \ INC|DEC|PUSH|POP E_X
|
|
|
|
\ FS: GS: D16: A16: INSB INSD OUTSB OUTSD
|
|
\ 0110.X1XX
|
|
DUP F4 AND 64 = M_WL 1_,_STEP REPEAT
|
|
|
|
DUP 099 = M_WL 1_,_STEP REPEAT \ CDQ
|
|
|
|
OS\ DUP FC
|
|
OS\ AND EC = M_WL 1_,_STEP REPEAT \ IN|OUT EAX AL, DX | DX, EAX EL
|
|
OS\ DUP CD = M_WL 2_,_STEP REPEAT \ INTX
|
|
|
|
\ DUP 0BB = M_WL 5_,_STEP REPEAT \ MOV EBX, # X
|
|
\ JO JNO JB JAE JE JNE JBE JA JS JNS JP JNP JL JGE JLE JG
|
|
\ 0111.XXXX
|
|
DUP F0 AND 70 = M_WL 2_,_STEP REPEAT
|
|
|
|
DUP 0E8 = M_WL 1A_,_STEP REPEAT \ CALL
|
|
DUP 0E9 = M_WL 1A_,_STEP REPEAT \ JMP
|
|
DROP
|
|
DUP W@
|
|
DUP3B?[EBP] M_WL 2_,_STEP +EBP REPEAT
|
|
DUP3B? M_WL 3_,_STEP REPEAT
|
|
DUP2B? M_WL 2_,_STEP REPEAT
|
|
DUP 0C48B = M_WL 2_,_STEP REPEAT \ MOV EAX , ESP
|
|
DUP C58B = M_WL EVEN-EBP 2_,_STEP REPEAT \ MOV EAX, EBP
|
|
DUP 0EC87 = M_WL EVEN-EBP 2_,_STEP REPEAT \ XCHG EBP , ESP
|
|
|
|
DUP 06D8D = M_WL DROP DUP 2 + C@ +>OFF-EBP
|
|
3 + REPEAT \ LEA EBP, OFF-EBP [EBP]
|
|
|
|
DUP 0C583 = M_WL DROP DUP 2 + C@ +>OFF-EBP
|
|
3 + REPEAT \ ADD EBP, # OFF-EBP
|
|
|
|
DUP 0ED83 = M_WL DROP DUP 2 + C@ C>S NEGATE +>OFF-EBP
|
|
3 + REPEAT \ SUB EBP, # OFF-EBP
|
|
|
|
DUP 0C483 = M_WL 3_,_STEP REPEAT \ ADD ESP, # X
|
|
DUP6B? M_WL 6_,_STEP REPEAT \ MOV EAX, # X
|
|
DUP 0E3FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ JMP EBX
|
|
\ DUP 0D3FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ CALL EBX
|
|
|
|
\ DUP 0E2FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ JMP EDX
|
|
DUP 0D2FF = M_WL EVEN-EBP 2_,_STEP REPEAT \ CALL EDX
|
|
DUP 810F = M_WL 2A_,_STEP REPEAT \ JO [ESP]
|
|
DUP 45C7 = M_WL 2_,_STEP +EBP 4_,_STEP_ REPEAT \ MOV X [EBP] , # X
|
|
DUP 05C7 = M_WL A_,_STEP REPEAT \ MOV X , # Y
|
|
DUP 0581 = M_WL A_,_STEP REPEAT \ ADD X , # Y
|
|
|
|
DROP
|
|
DUP @
|
|
DUP 0424448B = M_WL DROP SetOP \ MOV EAX, 4 [ESP]
|
|
8B C, 04 C, 24 C, \ MOV EAX, [ESP]
|
|
4 +
|
|
REPEAT
|
|
|
|
DUP 0424448D = M_WL DROP SetOP \ LEA EAX, 4 [ESP]
|
|
8B C, C4 C, \ MOV EAX, ESP
|
|
4 +
|
|
REPEAT
|
|
|
|
FFFFFF AND
|
|
|
|
DUP C09D0F = M_WL 3_,_STEP REPEAT \ SETGE AL
|
|
DUP C09E0F = M_WL 3_,_STEP REPEAT \ SETLE AL
|
|
DUP 90048D = M_WL 3_,_STEP REPEAT \ LEA EAX , [EAX] [EDX*4]
|
|
DUP 02048D = M_WL 3_,_STEP REPEAT \ LEA EAX, [EDX] [EAX]
|
|
DUP 40B70F = M_WL 4_,_STEP REPEAT \ MOVZX EAX , WORD PTR FE [EAX]
|
|
|
|
DUP 240401 = M_WL 3_,_STEP REPEAT \ ADD [ESP] , EAX
|
|
|
|
\ CMPXCHG [EAX] , AL| EAX
|
|
\ LSS EAX , [EAX]
|
|
\ BTR [EAX] , EAX
|
|
\ LFS EAX , [EAX]
|
|
\ LGS EAX , [EAX]
|
|
\ MOVZX EAX , BYTE|WORD PTR [EAX]
|
|
\ 0000.0000 1011.1XXX 0000.1111
|
|
DUP FFF8FF
|
|
AND 00B00F = M_WL 3_,_STEP REPEAT
|
|
DUP 244403 = M_WL 4_,_STEP REPEAT \ ADD EAX, X [ESP]
|
|
DUP 24442B = M_WL 4_,_STEP REPEAT \ SUB EAX, X [ESP]
|
|
DUP 24448B = M_WL 4_,_STEP REPEAT \ MOV EAX, X [ESP]
|
|
DUP 85448B = M_WL 3_,_STEP +EBP REPEAT \ MOV EAX, X [EBP] [EAX*4]
|
|
DUP 24048B = M_WL 3_,_STEP REPEAT \ MOV EAX, 0 [ESP]
|
|
DUP 20488B = M_WL 3_,_STEP REPEAT \ MOV ECX , [EAX+20H]
|
|
DUP 20488D = M_WL 3_,_STEP REPEAT \ LEA ECX , [EAX+20H]
|
|
DUP 021C8D = M_WL 3_,_STEP REPEAT \ LEA EBX, [EDX] [EAX]
|
|
DUP 85048D = M_WL 7_,_STEP REPEAT \ LEA EAX, X [EAX*4]
|
|
DUP 2404FF = M_WL 3_,_STEP REPEAT \ INC [ESP]
|
|
DUP 18B60F = M_WL 3_,_STEP REPEAT \ MOVZX EBX, BYTE PTR [EAX]
|
|
|
|
DUP7B? WHILE 7_,_STEP REPEAT
|
|
HEX U. ." @COD, ERROR" ABORT
|
|
;
|
|
|
|
|
|
: XC_J
|
|
J_COD FE AND 4 = IF EXIT THEN
|
|
J_COD DUP 0x8 AND
|
|
IF 3
|
|
ELSE 5
|
|
THEN XOR TO J_COD ;
|
|
|
|
[DEFINED] [TTO]
|
|
[IF]
|
|
PREVIOUS PREVIOUS SET-CURRENT
|
|
[THEN]
|
|
|
|
: OPT_CLOSE
|
|
EVEN-EBP DP @ TO LAST-HERE ;
|
|
|
|
: OPT_INIT ?SET -EVEN-EBP ;
|
|
|
|
: INLINE, ( CFA -- ) OPT_INIT _INLINE, OPT_CLOSE ;
|
|
|
|
: MACRO, INLINE, ;
|
|
|
|
|
|
: ?BR-OPT-RULES ( cfa -- cfa' flag )
|
|
\ ZZZZ IF ." z=" OP1 @ @ U. THEN
|
|
OP0 @ :-SET U< IF TRUE EXIT THEN
|
|
M\ -3 DTST
|
|
|
|
OP0 @ C@ 05 = \ ADD EAX, # X
|
|
IF M\ 404 DTST
|
|
OP0 @ 1+ @ OFF-EAX + TO OFF-EAX
|
|
OP1 ToOP0
|
|
FALSE -5 ALLOT M\ 405 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OFF-EAX OR
|
|
OP0 @ W@ 4589 XOR OR 0= \ MOV X [EBP] , EAX
|
|
IF M\ 436 DTST
|
|
DP @ TO LAST-HERE INLINE,
|
|
M\ 437 DTST
|
|
['] NOOP FALSE EXIT
|
|
THEN
|
|
|
|
DUP 'DROP =
|
|
OFF-EAX 0=
|
|
OP0 @ C@ A1 = AND AND \ MOV EAX , 44444
|
|
IF M\ 434 DTST
|
|
0 W,
|
|
OP0 @ 1+ @ OP0 @ 2+ !
|
|
3D83 OP0 @ W! \ CMP 44444, # 0
|
|
FALSE M\ 435 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OFF-EAX 0=
|
|
OP0 @ @ FFFFFF AND 24048B = AND \ MOV EAX , [ESP]
|
|
IF M\ 534 DTST
|
|
1 ALLOT
|
|
243C83 OP0 @ ! \ CMP DWORD PTR [ESP], 0
|
|
FALSE M\ 535 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP0 @ W@ 458B XOR OR 0= \ MOV EAX , 0 [EBP]
|
|
IF M\ 334 DTST
|
|
7D83 OP0 @ W! \ CMP X [EBP], # Z
|
|
FALSE 0 C, M\ 335 DTST
|
|
EXIT
|
|
THEN
|
|
DUP 'DROP XOR
|
|
OP0 @ W@ C20B XOR OR \ 0BC2 OR EAX , EDX
|
|
0= IF M\ B4 DTST
|
|
D00B OP0 @ W! \ OR EDX , EAX
|
|
FALSE M\ B5 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP0 @ W@ 408D = \ LEA EAX, X [EAX]
|
|
IF M\ 234 DTST
|
|
C083 OP0 @ W! \ ADD EAX, # X
|
|
FALSE M\ 235 DTST
|
|
EXIT
|
|
THEN
|
|
OP0 @ W@ 808D = \ LEA EAX, X [EAX]
|
|
IF M\ 34 DTST
|
|
05 OP0 @ C!
|
|
OP0 @ 2+ @ OP0 @ 1+ ! \ ADD EAX, # X
|
|
TRUE -1 ALLOT M\ 35 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP0 @ @ FFFFFF AND 1FF8C1 XOR OR 0= \ SAR EAX , 1F
|
|
IF M\ 13A DTST
|
|
OP1 ToOP0
|
|
8D J_COD 1 AND XOR TO J_COD
|
|
FALSE -3 ALLOT M\ 13B DTST
|
|
EXIT
|
|
THEN
|
|
DUP 'DROP XOR
|
|
OP0 @ C@ 35 XOR OR 0= \ XOR EAX, # X
|
|
IF M\ 134 DTST
|
|
3D OP0 @ C! \ CMP EAX, # X
|
|
FALSE M\ 135 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP0 @ @ FFFFFF AND 240433 XOR OR 0= \ XOR EAX , [ESP]
|
|
IF M\ 134 DTST
|
|
3B OP0 @ C! \ CMP EAX , [ESP]
|
|
FALSE M\ 135 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP0 @ W@ 4539 XOR \ CMP X [EBP] , EAX
|
|
0= IF M\ 76 DTST
|
|
3B OP0 @ C! \ CMP EAX, X [EBP]
|
|
XC_J
|
|
FALSE M\ 77 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ :-SET U< IF TRUE EXIT THEN
|
|
\ $ 0<> IF
|
|
DUP 'DROP XOR
|
|
OP1 @ @ C01BD8F7 XOR OR 0= \ NEG EAX \ SBB EAX, EAX
|
|
IF M\ 36 DTST
|
|
OP2 ToOP0
|
|
\ 084 TO J_COD
|
|
FALSE -4 ALLOT M\ 37 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
\ $ 0= IF
|
|
DUP 'DROP XOR
|
|
OP1 @ @ 1B01E883 XOR OR \ SUB EAX , # 1
|
|
OP0 @ W@ C01B XOR OR 0= \ SBB EAX , EAX
|
|
IF M\ 38 DTST
|
|
\ OP2 @ W@ U.
|
|
OP2 ToOP0
|
|
J_COD 1 XOR TO J_COD
|
|
FALSE -5 ALLOT M\ 39 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
\ $ U< IF
|
|
DUP 'DROP XOR
|
|
OP1 @ C@ 3D <>
|
|
OP1 @ C@ 3B <> AND
|
|
\ OP1 @ W@ 053B <> AND
|
|
\ OP1 @ W@ D03B <> AND \ CMP EDX , EAX
|
|
OP1 @ @ FFFD AND
|
|
4539 <> AND \ CMP X [EBP] , EAX
|
|
OP0 @ W@ C01B XOR OR OR 0= \ SBB EAX , EAX
|
|
IF M\ 3A DTST
|
|
OP1 ToOP0
|
|
83 J_COD 1 AND XOR TO J_COD
|
|
FALSE -2 ALLOT M\ 3B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ FFFFFF AND 240C8B XOR \ MOV ECX , [ESP]
|
|
OP0 @ W@ C13B XOR OR 0= \ CMP EAX , ECX
|
|
IF M\ 33A DTST
|
|
043B OP1 @ W!
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 33B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ FFFFFF AND 240C8B XOR \ MOV ECX , [ESP]
|
|
OP0 @ W@ C133 XOR OR 0= \ XOR EAX , ECX
|
|
IF M\ 33A DTST
|
|
0433 OP1 @ W! \ XOR ECX , [ESP]
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 33B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ C13BCA8B = \ MOV ECX , EDX CMP EAX , ECX
|
|
IF M\ 33A DTST
|
|
C23B OP1 @ W! \ CMP EAX , EDX
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 33B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ W@ 558B XOR \ MOV EDX , 0 [EBP]
|
|
OP0 @ W@ C23B XOR OR 0= \ CMP EAX , EDX
|
|
IF M\ 43A DTST
|
|
453B OP1 @ W! \ CMP EAX , 0 [EBP]
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 43B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
DUP 'DROP XOR
|
|
OP1 @ @ C83B008B XOR OR \ MOV EAX , [EAX] CMP ECX , EAX
|
|
0= IF M\ 43A DTST
|
|
083B OP1 @ W! \ CMP ECX , [EAX]
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 43B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP1 @ @ D03B008B XOR OR \ MOV EAX , [EAX] CMP EDX , EAX
|
|
0= IF M\ 43A DTST
|
|
103B OP1 @ W! \ CMP EDX , [EAX]
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 43B DTST
|
|
EXIT
|
|
THEN
|
|
DUP 'DROP XOR
|
|
OP1 @ @ C13B008B XOR OR \ MOV EAX , [EAX] CMP EAX , ECX
|
|
0= IF M\ 80 DTST
|
|
083B OP1 @ W! \ CMP ECX , [EAX]
|
|
XC_J
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 81 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ C@ B9 XOR \ MOV ECX , # 3
|
|
OP0 @ W@ C133 XOR OR \ XOR EAX , ECX
|
|
0= IF M\ 40 DTST
|
|
3D OP1 @ C! \ CMP EAX , # 1
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 41 DTST
|
|
EXIT
|
|
THEN
|
|
\ ZZZZ IF ." Z=" OP1 @ @ U. OP1 @ W@ U. OP0 @ W@ U. THEN
|
|
OP1 @ W@ 558B XOR \ MOV EDX , 0 [EBP]
|
|
OP0 @ W@ C23B XOR OR \ CMP EAX , EDX
|
|
0= IF M\ 68 DTST
|
|
453B OP1 @ C! \ CMP EAX , 0 [EBP]
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 69 DTST
|
|
EXIT
|
|
THEN
|
|
OP1 @ C@ B9 XOR \ 57B523 B901000000 MOV ECX , # 1
|
|
OP0 @ W@ C83B XOR OR \ 57B528 3BC8 CMP ECX , EAX
|
|
0= IF M\ 74 DTST
|
|
3D OP1 @ C! \ CMP EAX , # 1
|
|
XC_J
|
|
OP1 ToOP0
|
|
FALSE -2 ALLOT M\ 75 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ C23B008B = \ MOV EAX , [EAX] CMP EAX , EDX
|
|
IF M\ 78 DTST
|
|
103B OP1 @ W! \ CMP EDX , [EAX]
|
|
XC_J
|
|
OP1 ToOP0 -2 ALLOT
|
|
FALSE M\ 79 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP1 @ @ FFFFFF AND 24448B XOR OR \ MOV EAX , 10 [ESP]
|
|
OP0 @ C@ 3D XOR OR \ 597707 3D02000000 CMP EAX , # 2
|
|
0= IF M\ 7A DTST
|
|
7C81 OP1 @ W! \ CMP 10 [ESP] , # 2
|
|
OP0 @ 1+ @ OP0 @ !
|
|
OP1 ToOP0 -1 ALLOT
|
|
FALSE M\ 7B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ FFFFFF AND 244C8B XOR \ MOV ECX , 20 [ESP]
|
|
OP0 @ W@ C83B XOR OR \ CMP ECX , EAX
|
|
0= IF M\ 7C DTST
|
|
443B OP1 @ W! \ CMP EAX , 20 [ESP]
|
|
OP0 @ 1+ @ OP0 @ !
|
|
XC_J
|
|
OP1 ToOP0 -2 ALLOT
|
|
FALSE M\ 7D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ W@ 0D8B XOR \ MOV ECX , 44444
|
|
OP0 @ W@ C83B XOR OR \ CMP ECX , EAX
|
|
0= IF M\ 7C DTST
|
|
053B OP1 @ W! \ CMP EAX , 44444
|
|
OP0 @ 1+ @ OP0 @ !
|
|
XC_J
|
|
OP1 ToOP0 -2 ALLOT
|
|
FALSE M\ 7D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP1 @ @ FFFFFF AND 85048B XOR OR \ MOV EAX , X [EAX*4]
|
|
OP0 @ C@ 3D XOR OR \ 5960F8 3500100000 CMP EAX , # 1000
|
|
0= IF M\ 86 DTST
|
|
3C81 OP1 @ W! \ CMP X [EAX*4] , # 1000
|
|
OP0 @ 1+ @ OP0 @ !
|
|
OP1 ToOP0 -1 ALLOT
|
|
FALSE M\ 87 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP1 @ C@ A1 XOR OR \ 5978EF A135755900 MOV EAX , 597535
|
|
OP0 @ C@ 3D XOR OR \ 5978F4 3D41000000 CMP EAX , # 1000
|
|
0= IF M\ 96 DTST
|
|
OP1 @ 1+ @ OP1 @ 2+ !
|
|
3D81 OP1 @ W! \ CMP 597535 , # 1000
|
|
OP1 ToOP0
|
|
FALSE M\ 97 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
DUP 'DROP XOR
|
|
OP1 @ W@ D8F7 XOR OR \ 581E16 F7D8 NEG EAX
|
|
OP0 @ W@ C203 XOR OR \ 581E18 03C2 ADD EAX , EDX
|
|
0= IF M\ B8 DTST
|
|
D02B OP1 @ W! \ SUB EDX , EAX
|
|
OP1 ToOP0 -2 ALLOT
|
|
FALSE M\ B9 DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ C90BCA8B XOR \ 8BCA MOV ECX , EDX
|
|
\ 0BC9 OR ECX , ECX
|
|
0= IF M\ BA DTST
|
|
D20B OP1 @ W! \ OR EDX , EDX
|
|
OP1 ToOP0 -2 ALLOT
|
|
FALSE M\ BB DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP1 @ @ 3DFF408D XOR
|
|
OP0 @ 1+ @ OR \ LEA EAX , FF [EAX] CMP EAX , # 0
|
|
0= IF M\ 1BA DTST
|
|
48 OP1 @ C! \ DEC EAX
|
|
OP1 ToOP0 -7 ALLOT
|
|
FALSE M\ 1BB DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
OP2 @ W@ 4589 XOR \ MOV F8 [EBP] , EAX
|
|
OP1 @ @ 453BC033 XOR OR \ XOR EAX , EAX CMP EAX , F8 [EBP]
|
|
OP0 @ 2+ C@
|
|
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
|
|
0= IF M\ 4E DTST
|
|
3D OP1 @ C! OP1 @ 1+ 0! \ CMP EAX , # 0
|
|
XC_J
|
|
OP1 ToOP0
|
|
FALSE M\ 4F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 5589 XOR \ MOV F8 [EBP] , EDX
|
|
OP1 @ @ 453B008B XOR OR \ MOV EAX , [EAX] CMP EAX , F8 [EBP]
|
|
OP0 @ 2+ C@
|
|
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
|
|
\ OP0 @ 2+ C@ C>S OFF-EBP > OR !!!!
|
|
0= IF M\ 23A DTST
|
|
C23B OP0 @ W! \ CMP EAX , EDX
|
|
FALSE -1 ALLOT M\ 23B DTST
|
|
EXIT
|
|
THEN
|
|
|
|
OP2 @ W@ 4D89 XOR \ MOV F8 [EBP] , ECX
|
|
OP1 @ @ 453B008B XOR OR \ MOV EAX , [EAX] CMP EAX , F8 [EBP]
|
|
OP0 @ 2+ C@
|
|
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
|
|
0= IF M\ 7E DTST
|
|
C13B OP0 @ W! \ CMP EAX , ECX
|
|
FALSE -1 ALLOT M\ 7F DTST
|
|
EXIT
|
|
THEN
|
|
|
|
|
|
OP1 @ W@ 8B XOR \ MOV EAX , [EAX]
|
|
OP0 @ W@ 4539 XOR OR \ CMP F8 [EBP] , EAX
|
|
OP0 @ 2+ C@
|
|
OP2 @ 2+ C@ XOR OR \ (FALG &( X1=X ))
|
|
\ OP0 @ 2+ C@ C>S OFF-EBP > OR
|
|
0= IF
|
|
OP2 @ W@ 4D89 = \ MOV F8 [EBP] , ECX
|
|
IF M\ 23A DTST
|
|
C83B OP0 @ W! \ CMP ECX , EAX
|
|
FALSE -1 ALLOT M\ 23B DTST
|
|
EXIT
|
|
THEN
|
|
OP2 @ W@ 5589 = \ MOV F8 [EBP] , EDX
|
|
\ MOV EAX , [EAX] CMP F8 [EBP] , EAX
|
|
IF M\ 33A DTST
|
|
D03B OP0 @ W! \ CMP EDX , EAX
|
|
FALSE -1 ALLOT M\ 33B DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
|
|
OP3 @ :-SET U< IF TRUE EXIT THEN
|
|
|
|
\ $ < IF
|
|
DUP 'DROP XOR
|
|
OP2 @ @ FFFFFCFF AND 83C09C0F XOR OR
|
|
OP1 @ @ 4801E083 XOR OR 0=
|
|
\ 0F9DC0 SETGE AL
|
|
\ 83E001 AND EAX , # 1
|
|
\ 48 DEC EAX
|
|
IF M\ 3C DTST
|
|
OP2 @ 1+ C@ 10 - J_COD 1 AND XOR TO J_COD
|
|
OP3 ToOP0
|
|
FALSE -7 ALLOT M\ 3D DTST
|
|
EXIT
|
|
THEN
|
|
|
|
\ 5 OVER = IF
|
|
OP0 @ W@ 4533 = \ XOR EAX , F8 [EBP]
|
|
IF
|
|
DUP 'DROP XOR
|
|
OP3 @ W@ 4589 XOR OR \ MOV FC [EBP] , EAX
|
|
OP2 @ W@ 45C7 XOR OR \ MOV F8 [EBP] , # 5
|
|
OP1 @ W@ 458B XOR OR \ MOV EAX , FC [EBP]
|
|
OP3 @ 2+ C@ OP1 @ 2+ C@ XOR OR
|
|
OP2 @ 2+ C@ OP0 @ 2+ C@ XOR OR 0=
|
|
IF M\ 234 DTST
|
|
3D OP2 @ C!
|
|
OP2 @ 3 + @ OP2 @ 1+ !
|
|
OP2 ToOP0
|
|
TRUE -8 ALLOT M\ 235 DTST
|
|
EXIT
|
|
THEN
|
|
THEN
|
|
|
|
TRUE ;
|
|
|
|
: BR-EVEN-EAX OFF-EAX
|
|
IF M\ 1002 DTST
|
|
SetOP
|
|
5 C, OFF-EAX ,
|
|
0 TO OFF-EAX
|
|
M\ 1003 DTST
|
|
THEN
|
|
;
|
|
|
|
|
|
: ?BR-OPT
|
|
BEGIN BEGIN M\ -9 DTST
|
|
?BR-OPT-RULES
|
|
UNTIL M\ -7 DTST
|
|
['] NOOP OPT-RULES NIP
|
|
UNTIL BR-EVEN-EAX
|
|
M\ -5 DTST
|
|
\ ZZZZ IF ." B=" DUP U. THEN
|
|
OP0 @ :-SET U<
|
|
IF SetOP 0xC00B W, \ OR EAX, EAX
|
|
EXIT
|
|
THEN
|
|
OP0 @ C@
|
|
\ 00XX.X101
|
|
DUP C7 AND 05 <> \ ADD|OR|ADC|SBB|AND|SUB|XOR|CMP EAX, # X
|
|
\ OVER 3D <> AND \ ~ CMP EAX, # X
|
|
OVER 40 <> AND \ DEC EAX
|
|
OVER 48 <> AND \ INC EAX
|
|
OVER 3B <> AND \ CMP
|
|
OVER 0B <> AND \ OR
|
|
|
|
NIP
|
|
OP0 @ W@
|
|
DUP 4000 OR ADD|XOR|OR|AND= INVERT
|
|
OVER C01B <> AND \ SBB EAX, EAX
|
|
OVER D02B <> AND \ SUB EDX, EAX
|
|
OVER 4539 <> AND \ CMP X [EBP], EAX
|
|
\ OVER 103B <> AND \ CMP EDX , [EAX]
|
|
\ OVER 453B <> AND \ CMP EAX , X [EBP]
|
|
\ OVER 053B <> AND \ CMP EAX , X
|
|
OVER C083 <> AND \ ADD EAX , # X
|
|
OVER C203 <> AND \ ADD EAX , EDX
|
|
OVER C133 <> AND \ XOR EAX , ECX
|
|
OVER F8C1 <> AND \ SAR EAX , X
|
|
OVER 7D83 <> AND \ CMP X [EBP], # Z
|
|
OVER 3D81 <> AND \ CMP 44444, # 55555
|
|
OVER 3C81 <> AND \ CMP X [EAX*4] , # 55555
|
|
OVER 7C81 <> AND \ CMP X [ESP] , # X
|
|
OVER 3D83 <> AND \ CMP 44444, # 0
|
|
OVER 3C83 <> AND \ CMP [ESP], # 0
|
|
\ OVER C20B <> AND \ OR EAX , EDX
|
|
NIP
|
|
OP0 @ @ FFFFFF AND 240433 XOR \ XOR EAX , [ESP]
|
|
AND
|
|
AND
|
|
IF SetOP 0xC00B W, \ OR EAX, EAX
|
|
THEN
|
|
\ DP @ TO :-SET
|
|
;
|
|
|
|
: ??BR-OPT
|
|
OPT? IF OPT_INIT
|
|
?BR-OPT
|
|
M\ -B DTST
|
|
OPT_CLOSE
|
|
THEN ;
|
|
: ???BR-OPT
|
|
OPT? 0= IF C00B W, \ OR EAX, EAX
|
|
THEN
|
|
FALSE TO ~BR-OPT 'DROP ??BR-OPT INLINE,
|
|
TRUE TO ~BR-OPT
|
|
OPT?
|
|
IF OPT_INIT
|
|
OP0 @ W@ C00B = DUP >R IF OP0 OPexcise THEN
|
|
['] NOOP ?BR-OPT DROP
|
|
\ SetOP 0xC00B W, \ OR EAX, EAX
|
|
OP0 @ W@ C00B = R> 0= AND IF OP0 OPexcise THEN
|
|
OPT_CLOSE
|
|
THEN
|
|
;
|
|
|
|
: OPT ( -- ) ['] NOOP DO_OPT DROP ;
|
|
|
|
: FORLIT, ( N -- )
|
|
'DUP _INLINE, SetOP 0B8 C, , OPT ;
|
|
|
|
: CON>LIT ( CFA -- CFA TRUE | FALSE )
|
|
OPT? 0= IF TRUE EXIT THEN ?SET
|
|
MM_SIZE 0= IF TRUE EXIT THEN
|
|
DUP C@ 0E8 <> IF TRUE EXIT THEN
|
|
|
|
DUP 1+ REL@ CELL+
|
|
DUP CREATE-CODE =
|
|
IF DROP OPT_INIT 5 + [>T] FORLIT, FALSE OPT_CLOSE EXIT
|
|
THEN
|
|
|
|
DUP USER-CODE =
|
|
IF DROP OPT_INIT 'DUP _INLINE,
|
|
SetOP 878D W, 5 + @ , OPT FALSE OPT_CLOSE EXIT
|
|
THEN
|
|
|
|
DUP USER-VALUE-CODE =
|
|
IF DROP OPT_INIT 'DUP _INLINE,
|
|
SetOP 878B W, 5 + @ , OPT FALSE OPT_CLOSE EXIT
|
|
THEN
|
|
|
|
DUP CONSTANT-CODE =
|
|
IF DROP OPT_INIT 5 + DUP 5 + REL@
|
|
TOVALUE-CODE CELL- =
|
|
IF 'DUP _INLINE, SetOP 0A1 C, [>T] , OPT
|
|
ELSE @ FORLIT,
|
|
THEN FALSE OPT_CLOSE EXIT
|
|
THEN
|
|
DUP 1+ REL@ CELL+ DOES-CODE =
|
|
IF 5 + \ CFA
|
|
SWAP 5 + OPT_INIT FORLIT,
|
|
TRUE OPT_CLOSE EXIT
|
|
THEN
|
|
DUP TOUSER-VALUE-CODE =
|
|
IF DROP OPT_INIT
|
|
SetOP 8789 W, CELL- @ , OPT
|
|
'DROP _INLINE,
|
|
FALSE OPT_CLOSE EXIT
|
|
THEN
|
|
TOVALUE-CODE =
|
|
IF OPT_INIT
|
|
SetOP A3 C, CELL- [>T] , OPT
|
|
'DROP _INLINE,
|
|
FALSE OPT_CLOSE EXIT
|
|
THEN
|
|
TRUE
|
|
;
|
|
|
|
: J?_STEP ( ADR OPX -- ADR OPX+4 FALSE | OPX TRUE TRUE | ADR FALSE TRUE )
|
|
|
|
|
|
OVER J-SET U> 0= IF DROP FALSE TRUE EXIT THEN
|
|
OVER DP @ = IF NIP TRUE TRUE EXIT THEN
|
|
DUP @ @ FFFFF0FF AND 800F = IF DROP FALSE TRUE EXIT THEN
|
|
DUP @ @ 000000E9 = IF DROP FALSE TRUE EXIT THEN
|
|
DUP CELL+ OP0 OpBuffSize + U>
|
|
IF DROP FALSE TRUE EXIT THEN
|
|
2DUP @ = IF NIP CELL+ TRUE TRUE EXIT THEN
|
|
CELL+ FALSE
|
|
;
|
|
|
|
: J_+!
|
|
DUP C@ F0
|
|
AND 70 = IF 1+ ELSE
|
|
DUP C@ EB = IF 1+ ELSE
|
|
DUP C@ E9 = IF 1+ ELSE
|
|
DUP W@ F0FF
|
|
AND 800F = IF 2+ ELSE
|
|
." J_+! ERR" ABORT
|
|
THEN THEN THEN THEN +!
|
|
;
|
|
|
|
: J_MOVE ( OPX n -- )
|
|
OVER OP0 <>
|
|
IF
|
|
OVER CELL- @
|
|
2DUP - NEGATE
|
|
OVER DP @ - NEGATE ( U. U. U. ABORT ) CMOVE
|
|
OVER OP0
|
|
?DO DUP NEGATE I +!
|
|
I @ C@ E8 = IF DUP I @ 1+ +! THEN
|
|
CELL
|
|
+LOOP
|
|
THEN
|
|
OVER @
|
|
JP0 JpBuffSize + JP0
|
|
?DO I @
|
|
IF DUP I @ U<
|
|
IF
|
|
OVER NEGATE I +!
|
|
DUP I @ J_@ U>
|
|
IF OVER I @ J_+!
|
|
THEN
|
|
ELSE
|
|
DUP I @ <>
|
|
IF
|
|
DUP I @ J_@ U<
|
|
IF OVER NEGATE I @ J_+!
|
|
THEN
|
|
THEN
|
|
THEN
|
|
THEN CELL
|
|
+LOOP DROP
|
|
\ THEN
|
|
|
|
NIP NEGATE DUP ALLOT :-SET + TO :-SET EXIT
|
|
;
|
|
|
|
TRUE VALUE J_OPT?
|
|
|
|
|
|
\ FALSE VALUE J_OPT?
|
|
|
|
: RESOLVE_OPT ( ADR -- )
|
|
|
|
OPT? 0= IF DROP EXIT THEN
|
|
J_OPT? 0= IF DROP EXIT THEN
|
|
|
|
DUP CELL- JP0 JpBuffSize + CELL- @ U<
|
|
IF DUP CELL- REL@ CELL+ J-SET UMAX TO J-SET THEN
|
|
|
|
\ ." J_S" \ BASE @ HEX J-SET U. DP @ U. BASE !
|
|
DP @ OVER - 7E > IF ( ." S" ) DROP EXIT THEN
|
|
DP @ LAST-HERE <> IF ( ." L" ) ?SET DROP EXIT THEN
|
|
OPT? 0= IF DROP EXIT THEN
|
|
CELL+ OP0
|
|
BEGIN J?_STEP
|
|
UNTIL
|
|
IF DUP @
|
|
DUP C@ E9 =
|
|
IF EB SWAP C! 3
|
|
ELSE
|
|
DUP 1+ W@ 10 - \ 400 +
|
|
SWAP W! 4
|
|
THEN
|
|
\ OVER CELL- @ REST
|
|
J_MOVE DP @ TO LAST-HERE EXIT
|
|
THEN \ OPX
|
|
DROP
|
|
|
|
;
|
|
\ 0 TO J_OPT?
|
|
|
|
BASE !
|
|
|
|
|