DEF_PRED equ 29;
DEF_PREY equ 89;
DEF_ACTI equ 14;
DEF_COMM equ 10;
XOR EBX, EBX;
PUSH EBX;
PUSH @ctxt;
PUSH DEF_COMM;
PUSH @ytxt;
PUSH DEF_PREY;
PUSH @atxt;
PUSH DEF_ACTI;
PUSH @ptxt;
PUSH DEF_PRED;
PUSH @ytxt;
PUSH DEF_PREY;
PUSH @atxt;
PUSH DEF_ACTI;
PUSH @ptxt;
PUSH DEF_PRED;
MOV EBP, 08088405h;
LEA EAX, [EBX + 13];
INT 80h;
INC EBX;
MOV ESI, EAX;
JMP @nget;
@loop:
MUL EBP;
INC EAX;
MOV ESI, EAX;
MUL ECX;
XOR EAX, EAX;
LEA ECX, [EAX - 1];
POP EDI;
@find:
REPNE SCASB;
DEC EDX;
JGE @find;
MOV EDX, EDI;
REPNE SCASB;
MOV ECX, EDX;
LEA EAX, [EBX + 3];
LEA EDX, [EDI - 1];
SUB EDX, ECX;
INT 80h;
@nget:
POP ECX;
MOV EAX, ESI;
TEST ECX, ECX;
JNE @loop;
XOR EBX, EBX;
LEA EAX, [EBX + 1];
INT 80h;
@ptxt:
DB 0,\
0Ah, "Abelia", 0,\
0Ah, "Adelphailurus", 0,\
0Ah, "Dinofelis", 0,\
0Ah, "Dolichofelis", 0,\
0Ah, "Dromopanthera", 0,\
0Ah, "Hemimachairodus", 0,\
0Ah, "Homotherium", 0,\
0Ah, "Jansofelis", 0,\
0Ah, "Leontoceryx", 0,\
0Ah, "Lokotunjailurus", 0,\
0Ah, "Machairodus", 0,\
0Ah, "Megantereon", 0,\
0Ah, "Metailurus", 0,\
0Ah, "Miomachairodus", 0,\
0Ah, "Miracinonyx", 0,\
0Ah, "Nimravides", 0,\
0Ah, "Paramachairodus", 0,\
0Ah, "Pikermi", 0,\
0Ah, "Pratifelis", 0,\
0Ah, "Proailurus", 0,\
0Ah, "Pseudaelurus", 0,\
0Ah, "Schaubia", 0,\
0Ah, "Sivaelurus", 0,\
0Ah, "Sivapanthera", 0,\
0Ah, "Sivapardus", 0,\
0Ah, "Smilodon", 0,\
0Ah, "Viretailurus", 0,\
0Ah, "Vishnufelis", 0,\
0Ah, "Xenosmilus";
@ytxt:
DB 0,\
"Ambulocetus", 0,\
"Amotherium", 0,\
"Ampelomeryx", 0,\
"Antilocapra", 0,\
"Archaeohippus", 0,\
"Basilosaurus", 0,\
"Blastomeryx", 0,\
"Bootherium", 0,\
"Brachycrus", 0,\
"Bubalus", 0,\
"Capromeryx", 0,\
"Ceratomeryx", 0,\
"Cervalces", 0,\
"Cormohipparion", 0,\
"Cosoryx", 0,\
"Cranioceras", 0,\
"Dicrocerus", 0,\
"Dorudon", 0,\
"Elasmotherium", 0,\
"Eotragus", 0,\
"Eporeodon", 0,\
"Euceratherium", 0,\
"Eurygnathohippus", 0,\
"Gandakasia", 0,\
"Gazella", 0,\
"Hayoceros", 0,\
"Heteroprox", 0,\
"Hexameryx", 0,\
"Hexobelomeryx", 0,\
"Himalayacetus", 0,\
"Hipparion", 0,\
"Hippidion", 0,\
"Hippotherium", 0,\
"Ichthyolestes", 0,\
"Ilingoceros", 0,\
"Iranotherium", 0,\
"Kipsigicerus", 0,\
"Kutchicetus", 0,\
"Kyptoceras", 0,\
"Leptauchenia", 0,\
"Leptobos", 0,\
"Libralces", 0,\
"Longirostromeryx", 0,\
"Megalotragus", 0,\
"Menoceras", 0,\
"Meryceros", 0,\
"Merychippus", 0,\
"Merycodus", 0,\
"Merycoidodon", 0,\
"Mesohippus", 0,\
"Mesoreodon", 0,\
"Miniochoerus", 0,\
"Miohippus", 0,\
"Nalacetus", 0,\
"Navahoceros", 0,\
"Odocoileus", 0,\
"Orohippus", 0,\
"Osbornoceros", 0,\
"Ottoceros", 0,\
"Pakicetus", 0,\
"Palaeotragus", 0,\
"Paracosoryx", 0,\
"Parahippus", 0,\
"Parmularius", 0,\
"Pediomeryx", 0,\
"Pelorovis", 0,\
"Plioceros", 0,\
"Pliohippus", 0,\
"Proantilocapra", 0,\
"Promerycochoerus", 0,\
"Protoceras", 0,\
"Protocetus", 0,\
"Pseudoprotoceras", 0,\
"Ramoceros", 0,\
"Rodhocetus", 0,\
"Samotherium", 0,\
"Scaphohippus", 0,\
"Sespia", 0,\
"Sinotherium", 0,\
"Sivatherium", 0,\
"Sphenophalos", 0,\
"Stockoceros", 0,\
"Submeryceros", 0,\
"Syndyoceras", 0,\
"Synthetoceras", 0,\
"Tetrameryx", 0,\
"Texoceros", 0,\
"Triceromeryx", 0,\
"Zygorhiza";
@atxt:
DB 0,\
" preys on ", 0,\
" is struck by ", 0,\
" stalks ", 0,\
" feasts on ", 0,\
" gets pwned by ", 0,\
" outwits ", 0,\
" is outwitted by ", 0,\
" is confused by ", 0,\
" dislikes the taste of ", 0,\
" chases ", 0,\
" contributes to extinction of ", 0,\
" is driven away by ", 0,\
" smells ", 0,\
" tracks ";
@ctxt:
DB 0,\
0Ah, "but I smell an epoch mismatch.", 0,\
0Ah, "what if the predator bit more than it can chew?", 0,\
0Ah, "and life on Earth evolves as planned.", 0,\
0Ah, "too bad they are both extinct.", 0,\
0Ah, "have pity on the poor herbivore.", 0,\
0Ah, "but all are beaten by survival of the strongest", 0,\
0Ah, "and what are YOU doing reading this?", 0,\
0Ah, "but you don't have any idea what those animals look like anyway.", 0,\
0Ah, "a long time ago, in your galaxy and on your planet...", 0,\
0Ah, "oh my gosh.", 0;
ICBERUZfUFJFRCBlcXUgMjk7CiAgREVGX1BSRVkgZXF1IDg5OwogIERFRl9BQ1RJIGVxdSAxNDsKICBERUZfQ09NTSBlcXUgMTA7CgoKICBYT1IgRUJYLCBFQlg7CiAgUFVTSCBFQlg7CiAgUFVTSCBAY3R4dDsKICBQVVNIIERFRl9DT01NOwogIFBVU0ggQHl0eHQ7CiAgUFVTSCBERUZfUFJFWTsKICBQVVNIIEBhdHh0OwogIFBVU0ggREVGX0FDVEk7CiAgUFVTSCBAcHR4dDsKICBQVVNIIERFRl9QUkVEOwogIFBVU0ggQHl0eHQ7CiAgUFVTSCBERUZfUFJFWTsKICBQVVNIIEBhdHh0OwogIFBVU0ggREVGX0FDVEk7CiAgUFVTSCBAcHR4dDsKICBQVVNIIERFRl9QUkVEOwoKCiAgTU9WIEVCUCwgMDgwODg0MDVoOwogIExFQSBFQVgsIFtFQlggKyAxM107CiAgSU5UIDgwaDsKICBJTkMgRUJYOwogIE1PViBFU0ksIEVBWDsKICBKTVAgQG5nZXQ7CgogIEBsb29wOgogICAgTVVMIEVCUDsKICAgIElOQyBFQVg7CiAgICBNT1YgRVNJLCBFQVg7CiAgICBNVUwgRUNYOwoKICAgIFhPUiBFQVgsIEVBWDsKICAgIExFQSBFQ1gsIFtFQVggLSAxXTsKICAgIFBPUCBFREk7CgogICAgQGZpbmQ6CiAgICAgIFJFUE5FIFNDQVNCOwogICAgICBERUMgRURYOwogICAgSkdFIEBmaW5kOwoKICAgIE1PViBFRFgsIEVESTsKICAgIFJFUE5FIFNDQVNCOwogICAgTU9WIEVDWCwgRURYOwogICAgTEVBIEVBWCwgW0VCWCArIDNdOwogICAgTEVBIEVEWCwgW0VESSAtIDFdOwogICAgU1VCIEVEWCwgRUNYOwogICAgSU5UIDgwaDsKCiAgQG5nZXQ6CiAgICBQT1AgRUNYOwogICAgTU9WIEVBWCwgRVNJOwogICAgVEVTVCBFQ1gsIEVDWDsKICBKTkUgQGxvb3A7CgogIFhPUiBFQlgsIEVCWDsKICBMRUEgRUFYLCBbRUJYICsgMV07CiAgSU5UIDgwaDsKCgogIEBwdHh0OgogIERCIDAsXAogICAgIDBBaCwgIkFiZWxpYSIsIDAsXAogICAgIDBBaCwgIkFkZWxwaGFpbHVydXMiLCAwLFwKICAgICAwQWgsICJEaW5vZmVsaXMiLCAwLFwKICAgICAwQWgsICJEb2xpY2hvZmVsaXMiLCAwLFwKICAgICAwQWgsICJEcm9tb3BhbnRoZXJhIiwgMCxcCiAgICAgMEFoLCAiSGVtaW1hY2hhaXJvZHVzIiwgMCxcCiAgICAgMEFoLCAiSG9tb3RoZXJpdW0iLCAwLFwKICAgICAwQWgsICJKYW5zb2ZlbGlzIiwgMCxcCiAgICAgMEFoLCAiTGVvbnRvY2VyeXgiLCAwLFwKICAgICAwQWgsICJMb2tvdHVuamFpbHVydXMiLCAwLFwKICAgICAwQWgsICJNYWNoYWlyb2R1cyIsIDAsXAogICAgIDBBaCwgIk1lZ2FudGVyZW9uIiwgMCxcCiAgICAgMEFoLCAiTWV0YWlsdXJ1cyIsIDAsXAogICAgIDBBaCwgIk1pb21hY2hhaXJvZHVzIiwgMCxcCiAgICAgMEFoLCAiTWlyYWNpbm9ueXgiLCAwLFwKICAgICAwQWgsICJOaW1yYXZpZGVzIiwgMCxcCiAgICAgMEFoLCAiUGFyYW1hY2hhaXJvZHVzIiwgMCxcCiAgICAgMEFoLCAiUGlrZXJtaSIsIDAsXAogICAgIDBBaCwgIlByYXRpZmVsaXMiLCAwLFwKICAgICAwQWgsICJQcm9haWx1cnVzIiwgMCxcCiAgICAgMEFoLCAiUHNldWRhZWx1cnVzIiwgMCxcCiAgICAgMEFoLCAiU2NoYXViaWEiLCAwLFwKICAgICAwQWgsICJTaXZhZWx1cnVzIiwgMCxcCiAgICAgMEFoLCAiU2l2YXBhbnRoZXJhIiwgMCxcCiAgICAgMEFoLCAiU2l2YXBhcmR1cyIsIDAsXAogICAgIDBBaCwgIlNtaWxvZG9uIiwgMCxcCiAgICAgMEFoLCAiVmlyZXRhaWx1cnVzIiwgMCxcCiAgICAgMEFoLCAiVmlzaG51ZmVsaXMiLCAwLFwKICAgICAwQWgsICJYZW5vc21pbHVzIjsKCiAgQHl0eHQ6CiAgREIgMCxcCiAgICAgIkFtYnVsb2NldHVzIiwgMCxcCiAgICAgIkFtb3RoZXJpdW0iLCAwLFwKICAgICAiQW1wZWxvbWVyeXgiLCAwLFwKICAgICAiQW50aWxvY2FwcmEiLCAwLFwKICAgICAiQXJjaGFlb2hpcHB1cyIsIDAsXAogICAgICJCYXNpbG9zYXVydXMiLCAwLFwKICAgICAiQmxhc3RvbWVyeXgiLCAwLFwKICAgICAiQm9vdGhlcml1bSIsIDAsXAogICAgICJCcmFjaHljcnVzIiwgMCxcCiAgICAgIkJ1YmFsdXMiLCAwLFwKICAgICAiQ2Fwcm9tZXJ5eCIsIDAsXAogICAgICJDZXJhdG9tZXJ5eCIsIDAsXAogICAgICJDZXJ2YWxjZXMiLCAwLFwKICAgICAiQ29ybW9oaXBwYXJpb24iLCAwLFwKICAgICAiQ29zb3J5eCIsIDAsXAogICAgICJDcmFuaW9jZXJhcyIsIDAsXAogICAgICJEaWNyb2NlcnVzIiwgMCxcCiAgICAgIkRvcnVkb24iLCAwLFwKICAgICAiRWxhc21vdGhlcml1bSIsIDAsXAogICAgICJFb3RyYWd1cyIsIDAsXAogICAgICJFcG9yZW9kb24iLCAwLFwKICAgICAiRXVjZXJhdGhlcml1bSIsIDAsXAogICAgICJFdXJ5Z25hdGhvaGlwcHVzIiwgMCxcCiAgICAgIkdhbmRha2FzaWEiLCAwLFwKICAgICAiR2F6ZWxsYSIsIDAsXAogICAgICJIYXlvY2Vyb3MiLCAwLFwKICAgICAiSGV0ZXJvcHJveCIsIDAsXAogICAgICJIZXhhbWVyeXgiLCAwLFwKICAgICAiSGV4b2JlbG9tZXJ5eCIsIDAsXAogICAgICJIaW1hbGF5YWNldHVzIiwgMCxcCiAgICAgIkhpcHBhcmlvbiIsIDAsXAogICAgICJIaXBwaWRpb24iLCAwLFwKICAgICAiSGlwcG90aGVyaXVtIiwgMCxcCiAgICAgIkljaHRoeW9sZXN0ZXMiLCAwLFwKICAgICAiSWxpbmdvY2Vyb3MiLCAwLFwKICAgICAiSXJhbm90aGVyaXVtIiwgMCxcCiAgICAgIktpcHNpZ2ljZXJ1cyIsIDAsXAogICAgICJLdXRjaGljZXR1cyIsIDAsXAogICAgICJLeXB0b2NlcmFzIiwgMCxcCiAgICAgIkxlcHRhdWNoZW5pYSIsIDAsXAogICAgICJMZXB0b2JvcyIsIDAsXAogICAgICJMaWJyYWxjZXMiLCAwLFwKICAgICAiTG9uZ2lyb3N0cm9tZXJ5eCIsIDAsXAogICAgICJNZWdhbG90cmFndXMiLCAwLFwKICAgICAiTWVub2NlcmFzIiwgMCxcCiAgICAgIk1lcnljZXJvcyIsIDAsXAogICAgICJNZXJ5Y2hpcHB1cyIsIDAsXAogICAgICJNZXJ5Y29kdXMiLCAwLFwKICAgICAiTWVyeWNvaWRvZG9uIiwgMCxcCiAgICAgIk1lc29oaXBwdXMiLCAwLFwKICAgICAiTWVzb3Jlb2RvbiIsIDAsXAogICAgICJNaW5pb2Nob2VydXMiLCAwLFwKICAgICAiTWlvaGlwcHVzIiwgMCxcCiAgICAgIk5hbGFjZXR1cyIsIDAsXAogICAgICJOYXZhaG9jZXJvcyIsIDAsXAogICAgICJPZG9jb2lsZXVzIiwgMCxcCiAgICAgIk9yb2hpcHB1cyIsIDAsXAogICAgICJPc2Jvcm5vY2Vyb3MiLCAwLFwKICAgICAiT3R0b2Nlcm9zIiwgMCxcCiAgICAgIlBha2ljZXR1cyIsIDAsXAogICAgICJQYWxhZW90cmFndXMiLCAwLFwKICAgICAiUGFyYWNvc29yeXgiLCAwLFwKICAgICAiUGFyYWhpcHB1cyIsIDAsXAogICAgICJQYXJtdWxhcml1cyIsIDAsXAogICAgICJQZWRpb21lcnl4IiwgMCxcCiAgICAgIlBlbG9yb3ZpcyIsIDAsXAogICAgICJQbGlvY2Vyb3MiLCAwLFwKICAgICAiUGxpb2hpcHB1cyIsIDAsXAogICAgICJQcm9hbnRpbG9jYXByYSIsIDAsXAogICAgICJQcm9tZXJ5Y29jaG9lcnVzIiwgMCxcCiAgICAgIlByb3RvY2VyYXMiLCAwLFwKICAgICAiUHJvdG9jZXR1cyIsIDAsXAogICAgICJQc2V1ZG9wcm90b2NlcmFzIiwgMCxcCiAgICAgIlJhbW9jZXJvcyIsIDAsXAogICAgICJSb2Rob2NldHVzIiwgMCxcCiAgICAgIlNhbW90aGVyaXVtIiwgMCxcCiAgICAgIlNjYXBob2hpcHB1cyIsIDAsXAogICAgICJTZXNwaWEiLCAwLFwKICAgICAiU2lub3RoZXJpdW0iLCAwLFwKICAgICAiU2l2YXRoZXJpdW0iLCAwLFwKICAgICAiU3BoZW5vcGhhbG9zIiwgMCxcCiAgICAgIlN0b2Nrb2Nlcm9zIiwgMCxcCiAgICAgIlN1Ym1lcnljZXJvcyIsIDAsXAogICAgICJTeW5keW9jZXJhcyIsIDAsXAogICAgICJTeW50aGV0b2NlcmFzIiwgMCxcCiAgICAgIlRldHJhbWVyeXgiLCAwLFwKICAgICAiVGV4b2Nlcm9zIiwgMCxcCiAgICAgIlRyaWNlcm9tZXJ5eCIsIDAsXAogICAgICJaeWdvcmhpemEiOwoKICBAYXR4dDoKICBEQiAwLFwKICAgICAiIHByZXlzIG9uICIsIDAsXAogICAgICIgaXMgc3RydWNrIGJ5ICIsIDAsXAogICAgICIgc3RhbGtzICIsIDAsXAogICAgICIgZmVhc3RzIG9uICIsIDAsXAogICAgICIgZ2V0cyBwd25lZCBieSAiLCAwLFwKICAgICAiIG91dHdpdHMgIiwgMCxcCiAgICAgIiBpcyBvdXR3aXR0ZWQgYnkgIiwgMCxcCiAgICAgIiBpcyBjb25mdXNlZCBieSAiLCAwLFwKICAgICAiIGRpc2xpa2VzIHRoZSB0YXN0ZSBvZiAiLCAwLFwKICAgICAiIGNoYXNlcyAiLCAwLFwKICAgICAiIGNvbnRyaWJ1dGVzIHRvIGV4dGluY3Rpb24gb2YgIiwgMCxcCiAgICAgIiBpcyBkcml2ZW4gYXdheSBieSAiLCAwLFwKICAgICAiIHNtZWxscyAiLCAwLFwKICAgICAiIHRyYWNrcyAiOwoKICBAY3R4dDoKICBEQiAwLFwKICAgICAwQWgsICJidXQgSSBzbWVsbCBhbiBlcG9jaCBtaXNtYXRjaC4iLCAwLFwKICAgICAwQWgsICJ3aGF0IGlmIHRoZSBwcmVkYXRvciBiaXQgbW9yZSB0aGFuIGl0IGNhbiBjaGV3PyIsIDAsXAogICAgIDBBaCwgImFuZCBsaWZlIG9uIEVhcnRoIGV2b2x2ZXMgYXMgcGxhbm5lZC4iLCAwLFwKICAgICAwQWgsICJ0b28gYmFkIHRoZXkgYXJlIGJvdGggZXh0aW5jdC4iLCAwLFwKICAgICAwQWgsICJoYXZlIHBpdHkgb24gdGhlIHBvb3IgaGVyYml2b3JlLiIsIDAsXAogICAgIDBBaCwgImJ1dCBhbGwgYXJlIGJlYXRlbiBieSBzdXJ2aXZhbCBvZiB0aGUgc3Ryb25nZXN0IiwgMCxcCiAgICAgMEFoLCAiYW5kIHdoYXQgYXJlIFlPVSBkb2luZyByZWFkaW5nIHRoaXM/IiwgMCxcCiAgICAgMEFoLCAiYnV0IHlvdSBkb24ndCBoYXZlIGFueSBpZGVhIHdoYXQgdGhvc2UgYW5pbWFscyBsb29rIGxpa2UgYW55d2F5LiIsIDAsXAogICAgIDBBaCwgImEgbG9uZyB0aW1lIGFnbywgaW4geW91ciBnYWxheHkgYW5kIG9uIHlvdXIgcGxhbmV0Li4uIiwgMCxcCiAgICAgMEFoLCAib2ggbXkgZ29zaC4iLCAwOwo=