home *** CD-ROM | disk | FTP | other *** search
/ Dream 49 / Amiga_Dream_49.iso / beos / utils / skey-1.000 / SKey-1.4.3 / Source / Sources / Put.c < prev    next >
C/C++ Source or Header  |  1997-05-25  |  19KB  |  2,203 lines

  1. #include "skey.h"
  2.  
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <ctype.h>
  6.  
  7. static unsigned long extract (char *s, int start, int length);
  8. static void standard (char *word);
  9. static void insert (char *s, int x, int start, int length);
  10. static int wsrch (char *w, int low, int high);
  11.  
  12. /* Dictionary for integer-word translations */
  13. char Wp[2048][5] = {
  14. "A",
  15. "ABE",
  16. "ACE",
  17. "ACT",
  18. "AD",
  19. "ADA",
  20. "ADD",
  21. "AGO",
  22. "AID",
  23. "AIM",
  24. "AIR",
  25. "ALL",
  26. "ALP",
  27. "AM",
  28. "AMY",
  29. "AN",
  30. "ANA",
  31. "AND",
  32. "ANN",
  33. "ANT",
  34. "ANY",
  35. "APE",
  36. "APS",
  37. "APT",
  38. "ARC",
  39. "ARE",
  40. "ARK",
  41. "ARM",
  42. "ART",
  43. "AS",
  44. "ASH",
  45. "ASK",
  46. "AT",
  47. "ATE",
  48. "AUG",
  49. "AUK",
  50. "AVE",
  51. "AWE",
  52. "AWK",
  53. "AWL",
  54. "AWN",
  55. "AX",
  56. "AYE",
  57. "BAD",
  58. "BAG",
  59. "BAH",
  60. "BAM",
  61. "BAN",
  62. "BAR",
  63. "BAT",
  64. "BAY",
  65. "BE",
  66. "BED",
  67. "BEE",
  68. "BEG",
  69. "BEN",
  70. "BET",
  71. "BEY",
  72. "BIB",
  73. "BID",
  74. "BIG",
  75. "BIN",
  76. "BIT",
  77. "BOB",
  78. "BOG",
  79. "BON",
  80. "BOO",
  81. "BOP",
  82. "BOW",
  83. "BOY",
  84. "BUB",
  85. "BUD",
  86. "BUG",
  87. "BUM",
  88. "BUN",
  89. "BUS",
  90. "BUT",
  91. "BUY",
  92. "BY",
  93. "BYE",
  94. "CAB",
  95. "CAL",
  96. "CAM",
  97. "CAN",
  98. "CAP",
  99. "CAR",
  100. "CAT",
  101. "CAW",
  102. "COD",
  103. "COG",
  104. "COL",
  105. "CON",
  106. "COO",
  107. "COP",
  108. "COT",
  109. "COW",
  110. "COY",
  111. "CRY",
  112. "CUB",
  113. "CUE",
  114. "CUP",
  115. "CUR",
  116. "CUT",
  117. "DAB",
  118. "DAD",
  119. "DAM",
  120. "DAN",
  121. "DAR",
  122. "DAY",
  123. "DEE",
  124. "DEL",
  125. "DEN",
  126. "DES",
  127. "DEW",
  128. "DID",
  129. "DIE",
  130. "DIG",
  131. "DIN",
  132. "DIP",
  133. "DO",
  134. "DOE",
  135. "DOG",
  136. "DON",
  137. "DOT",
  138. "DOW",
  139. "DRY",
  140. "DUB",
  141. "DUD",
  142. "DUE",
  143. "DUG",
  144. "DUN",
  145. "EAR",
  146. "EAT",
  147. "ED",
  148. "EEL",
  149. "EGG",
  150. "EGO",
  151. "ELI",
  152. "ELK",
  153. "ELM",
  154. "ELY",
  155. "EM",
  156. "END",
  157. "EST",
  158. "ETC",
  159. "EVA",
  160. "EVE",
  161. "EWE",
  162. "EYE",
  163. "FAD",
  164. "FAN",
  165. "FAR",
  166. "FAT",
  167. "FAY",
  168. "FED",
  169. "FEE",
  170. "FEW",
  171. "FIB",
  172. "FIG",
  173. "FIN",
  174. "FIR",
  175. "FIT",
  176. "FLO",
  177. "FLY",
  178. "FOE",
  179. "FOG",
  180. "FOR",
  181. "FRY",
  182. "FUM",
  183. "FUN",
  184. "FUR",
  185. "GAB",
  186. "GAD",
  187. "GAG",
  188. "GAL",
  189. "GAM",
  190. "GAP",
  191. "GAS",
  192. "GAY",
  193. "GEE",
  194. "GEL",
  195. "GEM",
  196. "GET",
  197. "GIG",
  198. "GIL",
  199. "GIN",
  200. "GO",
  201. "GOT",
  202. "GUM",
  203. "GUN",
  204. "GUS",
  205. "GUT",
  206. "GUY",
  207. "GYM",
  208. "GYP",
  209. "HA",
  210. "HAD",
  211. "HAL",
  212. "HAM",
  213. "HAN",
  214. "HAP",
  215. "HAS",
  216. "HAT",
  217. "HAW",
  218. "HAY",
  219. "HE",
  220. "HEM",
  221. "HEN",
  222. "HER",
  223. "HEW",
  224. "HEY",
  225. "HI",
  226. "HID",
  227. "HIM",
  228. "HIP",
  229. "HIS",
  230. "HIT",
  231. "HO",
  232. "HOB",
  233. "HOC",
  234. "HOE",
  235. "HOG",
  236. "HOP",
  237. "HOT",
  238. "HOW",
  239. "HUB",
  240. "HUE",
  241. "HUG",
  242. "HUH",
  243. "HUM",
  244. "HUT",
  245. "I",
  246. "ICY",
  247. "IDA",
  248. "IF",
  249. "IKE",
  250. "ILL",
  251. "INK",
  252. "INN",
  253. "IO",
  254. "ION",
  255. "IQ",
  256. "IRA",
  257. "IRE",
  258. "IRK",
  259. "IS",
  260. "IT",
  261. "ITS",
  262. "IVY",
  263. "JAB",
  264. "JAG",
  265. "JAM",
  266. "JAN",
  267. "JAR",
  268. "JAW",
  269. "JAY",
  270. "JET",
  271. "JIG",
  272. "JIM",
  273. "JO",
  274. "JOB",
  275. "JOE",
  276. "JOG",
  277. "JOT",
  278. "JOY",
  279. "JUG",
  280. "JUT",
  281. "KAY",
  282. "KEG",
  283. "KEN",
  284. "KEY",
  285. "KID",
  286. "KIM",
  287. "KIN",
  288. "KIT",
  289. "LA",
  290. "LAB",
  291. "LAC",
  292. "LAD",
  293. "LAG",
  294. "LAM",
  295. "LAP",
  296. "LAW",
  297. "LAY",
  298. "LEA",
  299. "LED",
  300. "LEE",
  301. "LEG",
  302. "LEN",
  303. "LEO",
  304. "LET",
  305. "LEW",
  306. "LID",
  307. "LIE",
  308. "LIN",
  309. "LIP",
  310. "LIT",
  311. "LO",
  312. "LOB",
  313. "LOG",
  314. "LOP",
  315. "LOS",
  316. "LOT",
  317. "LOU",
  318. "LOW",
  319. "LOY",
  320. "LUG",
  321. "LYE",
  322. "MA",
  323. "MAC",
  324. "MAD",
  325. "MAE",
  326. "MAN",
  327. "MAO",
  328. "MAP",
  329. "MAT",
  330. "MAW",
  331. "MAY",
  332. "ME",
  333. "MEG",
  334. "MEL",
  335. "MEN",
  336. "MET",
  337. "MEW",
  338. "MID",
  339. "MIN",
  340. "MIT",
  341. "MOB",
  342. "MOD",
  343. "MOE",
  344. "MOO",
  345. "MOP",
  346. "MOS",
  347. "MOT",
  348. "MOW",
  349. "MUD",
  350. "MUG",
  351. "MUM",
  352. "MY",
  353. "NAB",
  354. "NAG",
  355. "NAN",
  356. "NAP",
  357. "NAT",
  358. "NAY",
  359. "NE",
  360. "NED",
  361. "NEE",
  362. "NET",
  363. "NEW",
  364. "NIB",
  365. "NIL",
  366. "NIP",
  367. "NIT",
  368. "NO",
  369. "NOB",
  370. "NOD",
  371. "NON",
  372. "NOR",
  373. "NOT",
  374. "NOV",
  375. "NOW",
  376. "NU",
  377. "NUN",
  378. "NUT",
  379. "O",
  380. "OAF",
  381. "OAK",
  382. "OAR",
  383. "OAT",
  384. "ODD",
  385. "ODE",
  386. "OF",
  387. "OFF",
  388. "OFT",
  389. "OH",
  390. "OIL",
  391. "OK",
  392. "OLD",
  393. "ON",
  394. "ONE",
  395. "OR",
  396. "ORB",
  397. "ORE",
  398. "ORR",
  399. "OS",
  400. "OTT",
  401. "OUR",
  402. "OUT",
  403. "OVA",
  404. "OW",
  405. "OWE",
  406. "OWL",
  407. "OWN",
  408. "OX",
  409. "PA",
  410. "PAD",
  411. "PAL",
  412. "PAM",
  413. "PAN",
  414. "PAP",
  415. "PAR",
  416. "PAT",
  417. "PAW",
  418. "PAY",
  419. "PEA",
  420. "PEG",
  421. "PEN",
  422. "PEP",
  423. "PER",
  424. "PET",
  425. "PEW",
  426. "PHI",
  427. "PI",
  428. "PIE",
  429. "PIN",
  430. "PIT",
  431. "PLY",
  432. "PO",
  433. "POD",
  434. "POE",
  435. "POP",
  436. "POT",
  437. "POW",
  438. "PRO",
  439. "PRY",
  440. "PUB",
  441. "PUG",
  442. "PUN",
  443. "PUP",
  444. "PUT",
  445. "QUO",
  446. "RAG",
  447. "RAM",
  448. "RAN",
  449. "RAP",
  450. "RAT",
  451. "RAW",
  452. "RAY",
  453. "REB",
  454. "RED",
  455. "REP",
  456. "RET",
  457. "RIB",
  458. "RID",
  459. "RIG",
  460. "RIM",
  461. "RIO",
  462. "RIP",
  463. "ROB",
  464. "ROD",
  465. "ROE",
  466. "RON",
  467. "ROT",
  468. "ROW",
  469. "ROY",
  470. "RUB",
  471. "RUE",
  472. "RUG",
  473. "RUM",
  474. "RUN",
  475. "RYE",
  476. "SAC",
  477. "SAD",
  478. "SAG",
  479. "SAL",
  480. "SAM",
  481. "SAN",
  482. "SAP",
  483. "SAT",
  484. "SAW",
  485. "SAY",
  486. "SEA",
  487. "SEC",
  488. "SEE",
  489. "SEN",
  490. "SET",
  491. "SEW",
  492. "SHE",
  493. "SHY",
  494. "SIN",
  495. "SIP",
  496. "SIR",
  497. "SIS",
  498. "SIT",
  499. "SKI",
  500. "SKY",
  501. "SLY",
  502. "SO",
  503. "SOB",
  504. "SOD",
  505. "SON",
  506. "SOP",
  507. "SOW",
  508. "SOY",
  509. "SPA",
  510. "SPY",
  511. "SUB",
  512. "SUD",
  513. "SUE",
  514. "SUM",
  515. "SUN",
  516. "SUP",
  517. "TAB",
  518. "TAD",
  519. "TAG",
  520. "TAN",
  521. "TAP",
  522. "TAR",
  523. "TEA",
  524. "TED",
  525. "TEE",
  526. "TEN",
  527. "THE",
  528. "THY",
  529. "TIC",
  530. "TIE",
  531. "TIM",
  532. "TIN",
  533. "TIP",
  534. "TO",
  535. "TOE",
  536. "TOG",
  537. "TOM",
  538. "TON",
  539. "TOO",
  540. "TOP",
  541. "TOW",
  542. "TOY",
  543. "TRY",
  544. "TUB",
  545. "TUG",
  546. "TUM",
  547. "TUN",
  548. "TWO",
  549. "UN",
  550. "UP",
  551. "US",
  552. "USE",
  553. "VAN",
  554. "VAT",
  555. "VET",
  556. "VIE",
  557. "WAD",
  558. "WAG",
  559. "WAR",
  560. "WAS",
  561. "WAY",
  562. "WE",
  563. "WEB",
  564. "WED",
  565. "WEE",
  566. "WET",
  567. "WHO",
  568. "WHY",
  569. "WIN",
  570. "WIT",
  571. "WOK",
  572. "WON",
  573. "WOO",
  574. "WOW",
  575. "WRY",
  576. "WU",
  577. "YAM",
  578. "YAP",
  579. "YAW",
  580. "YE",
  581. "YEA",
  582. "YES",
  583. "YET",
  584. "YOU",
  585. "ABED",
  586. "ABEL",
  587. "ABET",
  588. "ABLE",
  589. "ABUT",
  590. "ACHE",
  591. "ACID",
  592. "ACME",
  593. "ACRE",
  594. "ACTA",
  595. "ACTS",
  596. "ADAM",
  597. "ADDS",
  598. "ADEN",
  599. "AFAR",
  600. "AFRO",
  601. "AGEE",
  602. "AHEM",
  603. "AHOY",
  604. "AIDA",
  605. "AIDE",
  606. "AIDS",
  607. "AIRY",
  608. "AJAR",
  609. "AKIN",
  610. "ALAN",
  611. "ALEC",
  612. "ALGA",
  613. "ALIA",
  614. "ALLY",
  615. "ALMA",
  616. "ALOE",
  617. "ALSO",
  618. "ALTO",
  619. "ALUM",
  620. "ALVA",
  621. "AMEN",
  622. "AMES",
  623. "AMID",
  624. "AMMO",
  625. "AMOK",
  626. "AMOS",
  627. "AMRA",
  628. "ANDY",
  629. "ANEW",
  630. "ANNA",
  631. "ANNE",
  632. "ANTE",
  633. "ANTI",
  634. "AQUA",
  635. "ARAB",
  636. "ARCH",
  637. "AREA",
  638. "ARGO",
  639. "ARID",
  640. "ARMY",
  641. "ARTS",
  642. "ARTY",
  643. "ASIA",
  644. "ASKS",
  645. "ATOM",
  646. "AUNT",
  647. "AURA",
  648. "AUTO",
  649. "AVER",
  650. "AVID",
  651. "AVIS",
  652. "AVON",
  653. "AVOW",
  654. "AWAY",
  655. "AWRY",
  656. "BABE",
  657. "BABY",
  658. "BACH",
  659. "BACK",
  660. "BADE",
  661. "BAIL",
  662. "BAIT",
  663. "BAKE",
  664. "BALD",
  665. "BALE",
  666. "BALI",
  667. "BALK",
  668. "BALL",
  669. "BALM",
  670. "BAND",
  671. "BANE",
  672. "BANG",
  673. "BANK",
  674. "BARB",
  675. "BARD",
  676. "BARE",
  677. "BARK",
  678. "BARN",
  679. "BARR",
  680. "BASE",
  681. "BASH",
  682. "BASK",
  683. "BASS",
  684. "BATE",
  685. "BATH",
  686. "BAWD",
  687. "BAWL",
  688. "BEAD",
  689. "BEAK",
  690. "BEAM",
  691. "BEAN",
  692. "BEAR",
  693. "BEAT",
  694. "BEAU",
  695. "BECK",
  696. "BEEF",
  697. "BEEN",
  698. "BEER",
  699. "BEET",
  700. "BELA",
  701. "BELL",
  702. "BELT",
  703. "BEND",
  704. "BENT",
  705. "BERG",
  706. "BERN",
  707. "BERT",
  708. "BESS",
  709. "BEST",
  710. "BETA",
  711. "BETH",
  712. "BHOY",
  713. "BIAS",
  714. "BIDE",
  715. "BIEN",
  716. "BILE",
  717. "BILK",
  718. "BILL",
  719. "BIND",
  720. "BING",
  721. "BIRD",
  722. "BITE",
  723. "BITS",
  724. "BLAB",
  725. "BLAT",
  726. "BLED",
  727. "BLEW",
  728. "BLOB",
  729. "BLOC",
  730. "BLOT",
  731. "BLOW",
  732. "BLUE",
  733. "BLUM",
  734. "BLUR",
  735. "BOAR",
  736. "BOAT",
  737. "BOCA",
  738. "BOCK",
  739. "BODE",
  740. "BODY",
  741. "BOGY",
  742. "BOHR",
  743. "BOIL",
  744. "BOLD",
  745. "BOLO",
  746. "BOLT",
  747. "BOMB",
  748. "BONA",
  749. "BOND",
  750. "BONE",
  751. "BONG",
  752. "BONN",
  753. "BONY",
  754. "BOOK",
  755. "BOOM",
  756. "BOON",
  757. "BOOT",
  758. "BORE",
  759. "BORG",
  760. "BORN",
  761. "BOSE",
  762. "BOSS",
  763. "BOTH",
  764. "BOUT",
  765. "BOWL",
  766. "BOYD",
  767. "BRAD",
  768. "BRAE",
  769. "BRAG",
  770. "BRAN",
  771. "BRAY",
  772. "BRED",
  773. "BREW",
  774. "BRIG",
  775. "BRIM",
  776. "BROW",
  777. "BUCK",
  778. "BUDD",
  779. "BUFF",
  780. "BULB",
  781. "BULK",
  782. "BULL",
  783. "BUNK",
  784. "BUNT",
  785. "BUOY",
  786. "BURG",
  787. "BURL",
  788. "BURN",
  789. "BURR",
  790. "BURT",
  791. "BURY",
  792. "BUSH",
  793. "BUSS",
  794. "BUST",
  795. "BUSY",
  796. "BYTE",
  797. "CADY",
  798. "CAFE",
  799. "CAGE",
  800. "CAIN",
  801. "CAKE",
  802. "CALF",
  803. "CALL",
  804. "CALM",
  805. "CAME",
  806. "CANE",
  807. "CANT",
  808. "CARD",
  809. "CARE",
  810. "CARL",
  811. "CARR",
  812. "CART",
  813. "CASE",
  814. "CASH",
  815. "CASK",
  816. "CAST",
  817. "CAVE",
  818. "CEIL",
  819. "CELL",
  820. "CENT",
  821. "CERN",
  822. "CHAD",
  823. "CHAR",
  824. "CHAT",
  825. "CHAW",
  826. "CHEF",
  827. "CHEN",
  828. "CHEW",
  829. "CHIC",
  830. "CHIN",
  831. "CHOU",
  832. "CHOW",
  833. "CHUB",
  834. "CHUG",
  835. "CHUM",
  836. "CITE",
  837. "CITY",
  838. "CLAD",
  839. "CLAM",
  840. "CLAN",
  841. "CLAW",
  842. "CLAY",
  843. "CLOD",
  844. "CLOG",
  845. "CLOT",
  846. "CLUB",
  847. "CLUE",
  848. "COAL",
  849. "COAT",
  850. "COCA",
  851. "COCK",
  852. "COCO",
  853. "CODA",
  854. "CODE",
  855. "CODY",
  856. "COED",
  857. "COIL",
  858. "COIN",
  859. "COKE",
  860. "COLA",
  861. "COLD",
  862. "COLT",
  863. "COMA",
  864. "COMB",
  865. "COME",
  866. "COOK",
  867. "COOL",
  868. "COON",
  869. "COOT",
  870. "CORD",
  871. "CORE",
  872. "CORK",
  873. "CORN",
  874. "COST",
  875. "COVE",
  876. "COWL",
  877. "CRAB",
  878. "CRAG",
  879. "CRAM",
  880. "CRAY",
  881. "CREW",
  882. "CRIB",
  883. "CROW",
  884. "CRUD",
  885. "CUBA",
  886. "CUBE",
  887. "CUFF",
  888. "CULL",
  889. "CULT",
  890. "CUNY",
  891. "CURB",
  892. "CURD",
  893. "CURE",
  894. "CURL",
  895. "CURT",
  896. "CUTS",
  897. "DADE",
  898. "DALE",
  899. "DAME",
  900. "DANA",
  901. "DANE",
  902. "DANG",
  903. "DANK",
  904. "DARE",
  905. "DARK",
  906. "DARN",
  907. "DART",
  908. "DASH",
  909. "DATA",
  910. "DATE",
  911. "DAVE",
  912. "DAVY",
  913. "DAWN",
  914. "DAYS",
  915. "DEAD",
  916. "DEAF",
  917. "DEAL",
  918. "DEAN",
  919. "DEAR",
  920. "DEBT",
  921. "DECK",
  922. "DEED",
  923. "DEEM",
  924. "DEER",
  925. "DEFT",
  926. "DEFY",
  927. "DELL",
  928. "DENT",
  929. "DENY",
  930. "DESK",
  931. "DIAL",
  932. "DICE",
  933. "DIED",
  934. "DIET",
  935. "DIME",
  936. "DINE",
  937. "DING",
  938. "DINT",
  939. "DIRE",
  940. "DIRT",
  941. "DISC",
  942. "DISH",
  943. "DISK",
  944. "DIVE",
  945. "DOCK",
  946. "DOES",
  947. "DOLE",
  948. "DOLL",
  949. "DOLT",
  950. "DOME",
  951. "DONE",
  952. "DOOM",
  953. "DOOR",
  954. "DORA",
  955. "DOSE",
  956. "DOTE",
  957. "DOUG",
  958. "DOUR",
  959. "DOVE",
  960. "DOWN",
  961. "DRAB",
  962. "DRAG",
  963. "DRAM",
  964. "DRAW",
  965. "DREW",
  966. "DRUB",
  967. "DRUG",
  968. "DRUM",
  969. "DUAL",
  970. "DUCK",
  971. "DUCT",
  972. "DUEL",
  973. "DUET",
  974. "DUKE",
  975. "DULL",
  976. "DUMB",
  977. "DUNE",
  978. "DUNK",
  979. "DUSK",
  980. "DUST",
  981. "DUTY",
  982. "EACH",
  983. "EARL",
  984. "EARN",
  985. "EASE",
  986. "EAST",
  987. "EASY",
  988. "EBEN",
  989. "ECHO",
  990. "EDDY",
  991. "EDEN",
  992. "EDGE",
  993. "EDGY",
  994. "EDIT",
  995. "EDNA",
  996. "EGAN",
  997. "ELAN",
  998. "ELBA",
  999. "ELLA",
  1000. "ELSE",
  1001. "EMIL",
  1002. "EMIT",
  1003. "EMMA",
  1004. "ENDS",
  1005. "ERIC",
  1006. "EROS",
  1007. "EVEN",
  1008. "EVER",
  1009. "EVIL",
  1010. "EYED",
  1011. "FACE",
  1012. "FACT",
  1013. "FADE",
  1014. "FAIL",
  1015. "FAIN",
  1016. "FAIR",
  1017. "FAKE",
  1018. "FALL",
  1019. "FAME",
  1020. "FANG",
  1021. "FARM",
  1022. "FAST",
  1023. "FATE",
  1024. "FAWN",
  1025. "FEAR",
  1026. "FEAT",
  1027. "FEED",
  1028. "FEEL",
  1029. "FEET",
  1030. "FELL",
  1031. "FELT",
  1032. "FEND",
  1033. "FERN",
  1034. "FEST",
  1035. "FEUD",
  1036. "FIEF",
  1037. "FIGS",
  1038. "FILE",
  1039. "FILL",
  1040. "FILM",
  1041. "FIND",
  1042. "FINE",
  1043. "FINK",
  1044. "FIRE",
  1045. "FIRM",
  1046. "FISH",
  1047. "FISK",
  1048. "FIST",
  1049. "FITS",
  1050. "FIVE",
  1051. "FLAG",
  1052. "FLAK",
  1053. "FLAM",
  1054. "FLAT",
  1055. "FLAW",
  1056. "FLEA",
  1057. "FLED",
  1058. "FLEW",
  1059. "FLIT",
  1060. "FLOC",
  1061. "FLOG",
  1062. "FLOW",
  1063. "FLUB",
  1064. "FLUE",
  1065. "FOAL",
  1066. "FOAM",
  1067. "FOGY",
  1068. "FOIL",
  1069. "FOLD",
  1070. "FOLK",
  1071. "FOND",
  1072. "FONT",
  1073. "FOOD",
  1074. "FOOL",
  1075. "FOOT",
  1076. "FORD",
  1077. "FORE",
  1078. "FORK",
  1079. "FORM",
  1080. "FORT",
  1081. "FOSS",
  1082. "FOUL",
  1083. "FOUR",
  1084. "FOWL",
  1085. "FRAU",
  1086. "FRAY",
  1087. "FRED",
  1088. "FREE",
  1089. "FRET",
  1090. "FREY",
  1091. "FROG",
  1092. "FROM",
  1093. "FUEL",
  1094. "FULL",
  1095. "FUME",
  1096. "FUND",
  1097. "FUNK",
  1098. "FURY",
  1099. "FUSE",
  1100. "FUSS",
  1101. "GAFF",
  1102. "GAGE",
  1103. "GAIL",
  1104. "GAIN",
  1105. "GAIT",
  1106. "GALA",
  1107. "GALE",
  1108. "GALL",
  1109. "GALT",
  1110. "GAME",
  1111. "GANG",
  1112. "GARB",
  1113. "GARY",
  1114. "GASH",
  1115. "GATE",
  1116. "GAUL",
  1117. "GAUR",
  1118. "GAVE",
  1119. "GAWK",
  1120. "GEAR",
  1121. "GELD",
  1122. "GENE",
  1123. "GENT",
  1124. "GERM",
  1125. "GETS",
  1126. "GIBE",
  1127. "GIFT",
  1128. "GILD",
  1129. "GILL",
  1130. "GILT",
  1131. "GINA",
  1132. "GIRD",
  1133. "GIRL",
  1134. "GIST",
  1135. "GIVE",
  1136. "GLAD",
  1137. "GLEE",
  1138. "GLEN",
  1139. "GLIB",
  1140. "GLOB",
  1141. "GLOM",
  1142. "GLOW",
  1143. "GLUE",
  1144. "GLUM",
  1145. "GLUT",
  1146. "GOAD",
  1147. "GOAL",
  1148. "GOAT",
  1149. "GOER",
  1150. "GOES",
  1151. "GOLD",
  1152. "GOLF",
  1153. "GONE",
  1154. "GONG",
  1155. "GOOD",
  1156. "GOOF",
  1157. "GORE",
  1158. "GORY",
  1159. "GOSH",
  1160. "GOUT",
  1161. "GOWN",
  1162. "GRAB",
  1163. "GRAD",
  1164. "GRAY",
  1165. "GREG",
  1166. "GREW",
  1167. "GREY",
  1168. "GRID",
  1169. "GRIM",
  1170. "GRIN",
  1171. "GRIT",
  1172. "GROW",
  1173. "GRUB",
  1174. "GULF",
  1175. "GULL",
  1176. "GUNK",
  1177. "GURU",
  1178. "GUSH",
  1179. "GUST",
  1180. "GWEN",
  1181. "GWYN",
  1182. "HAAG",
  1183. "HAAS",
  1184. "HACK",
  1185. "HAIL",
  1186. "HAIR",
  1187. "HALE",
  1188. "HALF",
  1189. "HALL",
  1190. "HALO",
  1191. "HALT",
  1192. "HAND",
  1193. "HANG",
  1194. "HANK",
  1195. "HANS",
  1196. "HARD",
  1197. "HARK",
  1198. "HARM",
  1199. "HART",
  1200. "HASH",
  1201. "HAST",
  1202. "HATE",
  1203. "HATH",
  1204. "HAUL",
  1205. "HAVE",
  1206. "HAWK",
  1207. "HAYS",
  1208. "HEAD",
  1209. "HEAL",
  1210. "HEAR",
  1211. "HEAT",
  1212. "HEBE",
  1213. "HECK",
  1214. "HEED",
  1215. "HEEL",
  1216. "HEFT",
  1217. "HELD",
  1218. "HELL",
  1219. "HELM",
  1220. "HERB",
  1221. "HERD",
  1222. "HERE",
  1223. "HERO",
  1224. "HERS",
  1225. "HESS",
  1226. "HEWN",
  1227. "HICK",
  1228. "HIDE",
  1229. "HIGH",
  1230. "HIKE",
  1231. "HILL",
  1232. "HILT",
  1233. "HIND",
  1234. "HINT",
  1235. "HIRE",
  1236. "HISS",
  1237. "HIVE",
  1238. "HOBO",
  1239. "HOCK",
  1240. "HOFF",
  1241. "HOLD",
  1242. "HOLE",
  1243. "HOLM",
  1244. "HOLT",
  1245. "HOME",
  1246. "HONE",
  1247. "HONK",
  1248. "HOOD",
  1249. "HOOF",
  1250. "HOOK",
  1251. "HOOT",
  1252. "HORN",
  1253. "HOSE",
  1254. "HOST",
  1255. "HOUR",
  1256. "HOVE",
  1257. "HOWE",
  1258. "HOWL",
  1259. "HOYT",
  1260. "HUCK",
  1261. "HUED",
  1262. "HUFF",
  1263. "HUGE",
  1264. "HUGH",
  1265. "HUGO",
  1266. "HULK",
  1267. "HULL",
  1268. "HUNK",
  1269. "HUNT",
  1270. "HURD",
  1271. "HURL",
  1272. "HURT",
  1273. "HUSH",
  1274. "HYDE",
  1275. "HYMN",
  1276. "IBIS",
  1277. "ICON",
  1278. "IDEA",
  1279. "IDLE",
  1280. "IFFY",
  1281. "INCA",
  1282. "INCH",
  1283. "INTO",
  1284. "IONS",
  1285. "IOTA",
  1286. "IOWA",
  1287. "IRIS",
  1288. "IRMA",
  1289. "IRON",
  1290. "ISLE",
  1291. "ITCH",
  1292. "ITEM",
  1293. "IVAN",
  1294. "JACK",
  1295. "JADE",
  1296. "JAIL",
  1297. "JAKE",
  1298. "JANE",
  1299. "JAVA",
  1300. "JEAN",
  1301. "JEFF",
  1302. "JERK",
  1303. "JESS",
  1304. "JEST",
  1305. "JIBE",
  1306. "JILL",
  1307. "JILT",
  1308. "JIVE",
  1309. "JOAN",
  1310. "JOBS",
  1311. "JOCK",
  1312. "JOEL",
  1313. "JOEY",
  1314. "JOHN",
  1315. "JOIN",
  1316. "JOKE",
  1317. "JOLT",
  1318. "JOVE",
  1319. "JUDD",
  1320. "JUDE",
  1321. "JUDO",
  1322. "JUDY",
  1323. "JUJU",
  1324. "JUKE",
  1325. "JULY",
  1326. "JUNE",
  1327. "JUNK",
  1328. "JUNO",
  1329. "JURY",
  1330. "JUST",
  1331. "JUTE",
  1332. "KAHN",
  1333. "KALE",
  1334. "KANE",
  1335. "KANT",
  1336. "KARL",
  1337. "KATE",
  1338. "KEEL",
  1339. "KEEN",
  1340. "KENO",
  1341. "KENT",
  1342. "KERN",
  1343. "KERR",
  1344. "KEYS",
  1345. "KICK",
  1346. "KILL",
  1347. "KIND",
  1348. "KING",
  1349. "KIRK",
  1350. "KISS",
  1351. "KITE",
  1352. "KLAN",
  1353. "KNEE",
  1354. "KNEW",
  1355. "KNIT",
  1356. "KNOB",
  1357. "KNOT",
  1358. "KNOW",
  1359. "KOCH",
  1360. "KONG",
  1361. "KUDO",
  1362. "KURD",
  1363. "KURT",
  1364. "KYLE",
  1365. "LACE",
  1366. "LACK",
  1367. "LACY",
  1368. "LADY",
  1369. "LAID",
  1370. "LAIN",
  1371. "LAIR",
  1372. "LAKE",
  1373. "LAMB",
  1374. "LAME",
  1375. "LAND",
  1376. "LANE",
  1377. "LANG",
  1378. "LARD",
  1379. "LARK",
  1380. "LASS",
  1381. "LAST",
  1382. "LATE",
  1383. "LAUD",
  1384. "LAVA",
  1385. "LAWN",
  1386. "LAWS",
  1387. "LAYS",
  1388. "LEAD",
  1389. "LEAF",
  1390. "LEAK",
  1391. "LEAN",
  1392. "LEAR",
  1393. "LEEK",
  1394. "LEER",
  1395. "LEFT",
  1396. "LEND",
  1397. "LENS",
  1398. "LENT",
  1399. "LEON",
  1400. "LESK",
  1401. "LESS",
  1402. "LEST",
  1403. "LETS",
  1404. "LIAR",
  1405. "LICE",
  1406. "LICK",
  1407. "LIED",
  1408. "LIEN",
  1409. "LIES",
  1410. "LIEU",
  1411. "LIFE",
  1412. "LIFT",
  1413. "LIKE",
  1414. "LILA",
  1415. "LILT",
  1416. "LILY",
  1417. "LIMA",
  1418. "LIMB",
  1419. "LIME",
  1420. "LIND",
  1421. "LINE",
  1422. "LINK",
  1423. "LINT",
  1424. "LION",
  1425. "LISA",
  1426. "LIST",
  1427. "LIVE",
  1428. "LOAD",
  1429. "LOAF",
  1430. "LOAM",
  1431. "LOAN",
  1432. "LOCK",
  1433. "LOFT",
  1434. "LOGE",
  1435. "LOIS",
  1436. "LOLA",
  1437. "LONE",
  1438. "LONG",
  1439. "LOOK",
  1440. "LOON",
  1441. "LOOT",
  1442. "LORD",
  1443. "LORE",
  1444. "LOSE",
  1445. "LOSS",
  1446. "LOST",
  1447. "LOUD",
  1448. "LOVE",
  1449. "LOWE",
  1450. "LUCK",
  1451. "LUCY",
  1452. "LUGE",
  1453. "LUKE",
  1454. "LULU",
  1455. "LUND",
  1456. "LUNG",
  1457. "LURA",
  1458. "LURE",
  1459. "LURK",
  1460. "LUSH",
  1461. "LUST",
  1462. "LYLE",
  1463. "LYNN",
  1464. "LYON",
  1465. "LYRA",
  1466. "MACE",
  1467. "MADE",
  1468. "MAGI",
  1469. "MAID",
  1470. "MAIL",
  1471. "MAIN",
  1472. "MAKE",
  1473. "MALE",
  1474. "MALI",
  1475. "MALL",
  1476. "MALT",
  1477. "MANA",
  1478. "MANN",
  1479. "MANY",
  1480. "MARC",
  1481. "MARE",
  1482. "MARK",
  1483. "MARS",
  1484. "MART",
  1485. "MARY",
  1486. "MASH",
  1487. "MASK",
  1488. "MASS",
  1489. "MAST",
  1490. "MATE",
  1491. "MATH",
  1492. "MAUL",
  1493. "MAYO",
  1494. "MEAD",
  1495. "MEAL",
  1496. "MEAN",
  1497. "MEAT",
  1498. "MEEK",
  1499. "MEET",
  1500. "MELD",
  1501. "MELT",
  1502. "MEMO",
  1503. "MEND",
  1504. "MENU",
  1505. "MERT",
  1506. "MESH",
  1507. "MESS",
  1508. "MICE",
  1509. "MIKE",
  1510. "MILD",
  1511. "MILE",
  1512. "MILK",
  1513. "MILL",
  1514. "MILT",
  1515. "MIMI",
  1516. "MIND",
  1517. "MINE",
  1518. "MINI",
  1519. "MINK",
  1520. "MINT",
  1521. "MIRE",
  1522. "MISS",
  1523. "MIST",
  1524. "MITE",
  1525. "MITT",
  1526. "MOAN",
  1527. "MOAT",
  1528. "MOCK",
  1529. "MODE",
  1530. "MOLD",
  1531. "MOLE",
  1532. "MOLL",
  1533. "MOLT",
  1534. "MONA",
  1535. "MONK",
  1536. "MONT",
  1537. "MOOD",
  1538. "MOON",
  1539. "MOOR",
  1540. "MOOT",
  1541. "MORE",
  1542. "MORN",
  1543. "MORT",
  1544. "MOSS",
  1545. "MOST",
  1546. "MOTH",
  1547. "MOVE",
  1548. "MUCH",
  1549. "MUCK",
  1550. "MUDD",
  1551. "MUFF",
  1552. "MULE",
  1553. "MULL",
  1554. "MURK",
  1555. "MUSH",
  1556. "MUST",
  1557. "MUTE",
  1558. "MUTT",
  1559. "MYRA",
  1560. "MYTH",
  1561. "NAGY",
  1562. "NAIL",
  1563. "NAIR",
  1564. "NAME",
  1565. "NARY",
  1566. "NASH",
  1567. "NAVE",
  1568. "NAVY",
  1569. "NEAL",
  1570. "NEAR",
  1571. "NEAT",
  1572. "NECK",
  1573. "NEED",
  1574. "NEIL",
  1575. "NELL",
  1576. "NEON",
  1577. "NERO",
  1578. "NESS",
  1579. "NEST",
  1580. "NEWS",
  1581. "NEWT",
  1582. "NIBS",
  1583. "NICE",
  1584. "NICK",
  1585. "NILE",
  1586. "NINA",
  1587. "NINE",
  1588. "NOAH",
  1589. "NODE",
  1590. "NOEL",
  1591. "NOLL",
  1592. "NONE",
  1593. "NOOK",
  1594. "NOON",
  1595. "NORM",
  1596. "NOSE",
  1597. "NOTE",
  1598. "NOUN",
  1599. "NOVA",
  1600. "NUDE",
  1601. "NULL",
  1602. "NUMB",
  1603. "OATH",
  1604. "OBEY",
  1605. "OBOE",
  1606. "ODIN",
  1607. "OHIO",
  1608. "OILY",
  1609. "OINT",
  1610. "OKAY",
  1611. "OLAF",
  1612. "OLDY",
  1613. "OLGA",
  1614. "OLIN",
  1615. "OMAN",
  1616. "OMEN",
  1617. "OMIT",
  1618. "ONCE",
  1619. "ONES",
  1620. "ONLY",
  1621. "ONTO",
  1622. "ONUS",
  1623. "ORAL",
  1624. "ORGY",
  1625. "OSLO",
  1626. "OTIS",
  1627. "OTTO",
  1628. "OUCH",
  1629. "OUST",
  1630. "OUTS",
  1631. "OVAL",
  1632. "OVEN",
  1633. "OVER",
  1634. "OWLY",
  1635. "OWNS",
  1636. "QUAD",
  1637. "QUIT",
  1638. "QUOD",
  1639. "RACE",
  1640. "RACK",
  1641. "RACY",
  1642. "RAFT",
  1643. "RAGE",
  1644. "RAID",
  1645. "RAIL",
  1646. "RAIN",
  1647. "RAKE",
  1648. "RANK",
  1649. "RANT",
  1650. "RARE",
  1651. "RASH",
  1652. "RATE",
  1653. "RAVE",
  1654. "RAYS",
  1655. "READ",
  1656. "REAL",
  1657. "REAM",
  1658. "REAR",
  1659. "RECK",
  1660. "REED",
  1661. "REEF",
  1662. "REEK",
  1663. "REEL",
  1664. "REID",
  1665. "REIN",
  1666. "RENA",
  1667. "REND",
  1668. "RENT",
  1669. "REST",
  1670. "RICE",
  1671. "RICH",
  1672. "RICK",
  1673. "RIDE",
  1674. "RIFT",
  1675. "RILL",
  1676. "RIME",
  1677. "RING",
  1678. "RINK",
  1679. "RISE",
  1680. "RISK",
  1681. "RITE",
  1682. "ROAD",
  1683. "ROAM",
  1684. "ROAR",
  1685. "ROBE",
  1686. "ROCK",
  1687. "RODE",
  1688. "ROIL",
  1689. "ROLL",
  1690. "ROME",
  1691. "ROOD",
  1692. "ROOF",
  1693. "ROOK",
  1694. "ROOM",
  1695. "ROOT",
  1696. "ROSA",
  1697. "ROSE",
  1698. "ROSS",
  1699. "ROSY",
  1700. "ROTH",
  1701. "ROUT",
  1702. "ROVE",
  1703. "ROWE",
  1704. "ROWS",
  1705. "RUBE",
  1706. "RUBY",
  1707. "RUDE",
  1708. "RUDY",
  1709. "RUIN",
  1710. "RULE",
  1711. "RUNG",
  1712. "RUNS",
  1713. "RUNT",
  1714. "RUSE",
  1715. "RUSH",
  1716. "RUSK",
  1717. "RUSS",
  1718. "RUST",
  1719. "RUTH",
  1720. "SACK",
  1721. "SAFE",
  1722. "SAGE",
  1723. "SAID",
  1724. "SAIL",
  1725. "SALE",
  1726. "SALK",
  1727. "SALT",
  1728. "SAME",
  1729. "SAND",
  1730. "SANE",
  1731. "SANG",
  1732. "SANK",
  1733. "SARA",
  1734. "SAUL",
  1735. "SAVE",
  1736. "SAYS",
  1737. "SCAN",
  1738. "SCAR",
  1739. "SCAT",
  1740. "SCOT",
  1741. "SEAL",
  1742. "SEAM",
  1743. "SEAR",
  1744. "SEAT",
  1745. "SEED",
  1746. "SEEK",
  1747. "SEEM",
  1748. "SEEN",
  1749. "SEES",
  1750. "SELF",
  1751. "SELL",
  1752. "SEND",
  1753. "SENT",
  1754. "SETS",
  1755. "SEWN",
  1756. "SHAG",
  1757. "SHAM",
  1758. "SHAW",
  1759. "SHAY",
  1760. "SHED",
  1761. "SHIM",
  1762. "SHIN",
  1763. "SHOD",
  1764. "SHOE",
  1765. "SHOT",
  1766. "SHOW",
  1767. "SHUN",
  1768. "SHUT",
  1769. "SICK",
  1770. "SIDE",
  1771. "SIFT",
  1772. "SIGH",
  1773. "SIGN",
  1774. "SILK",
  1775. "SILL",
  1776. "SILO",
  1777. "SILT",
  1778. "SINE",
  1779. "SING",
  1780. "SINK",
  1781. "SIRE",
  1782. "SITE",
  1783. "SITS",
  1784. "SITU",
  1785. "SKAT",
  1786. "SKEW",
  1787. "SKID",
  1788. "SKIM",
  1789. "SKIN",
  1790. "SKIT",
  1791. "SLAB",
  1792. "SLAM",
  1793. "SLAT",
  1794. "SLAY",
  1795. "SLED",
  1796. "SLEW",
  1797. "SLID",
  1798. "SLIM",
  1799. "SLIT",
  1800. "SLOB",
  1801. "SLOG",
  1802. "SLOT",
  1803. "SLOW",
  1804. "SLUG",
  1805. "SLUM",
  1806. "SLUR",
  1807. "SMOG",
  1808. "SMUG",
  1809. "SNAG",
  1810. "SNOB",
  1811. "SNOW",
  1812. "SNUB",
  1813. "SNUG",
  1814. "SOAK",
  1815. "SOAR",
  1816. "SOCK",
  1817. "SODA",
  1818. "SOFA",
  1819. "SOFT",
  1820. "SOIL",
  1821. "SOLD",
  1822. "SOME",
  1823. "SONG",
  1824. "SOON",
  1825. "SOOT",
  1826. "SORE",
  1827. "SORT",
  1828. "SOUL",
  1829. "SOUR",
  1830. "SOWN",
  1831. "STAB",
  1832. "STAG",
  1833. "STAN",
  1834. "STAR",
  1835. "STAY",
  1836. "STEM",
  1837. "STEW",
  1838. "STIR",
  1839. "STOW",
  1840. "STUB",
  1841. "STUN",
  1842. "SUCH",
  1843. "SUDS",
  1844. "SUIT",
  1845. "SULK",
  1846. "SUMS",
  1847. "SUNG",
  1848. "SUNK",
  1849. "SURE",
  1850. "SURF",
  1851. "SWAB",
  1852. "SWAG",
  1853. "SWAM",
  1854. "SWAN",
  1855. "SWAT",
  1856. "SWAY",
  1857. "SWIM",
  1858. "SWUM",
  1859. "TACK",
  1860. "TACT",
  1861. "TAIL",
  1862. "TAKE",
  1863. "TALE",
  1864. "TALK",
  1865. "TALL",
  1866. "TANK",
  1867. "TASK",
  1868. "TATE",
  1869. "TAUT",
  1870. "TEAL",
  1871. "TEAM",
  1872. "TEAR",
  1873. "TECH",
  1874. "TEEM",
  1875. "TEEN",
  1876. "TEET",
  1877. "TELL",
  1878. "TEND",
  1879. "TENT",
  1880. "TERM",
  1881. "TERN",
  1882. "TESS",
  1883. "TEST",
  1884. "THAN",
  1885. "THAT",
  1886. "THEE",
  1887. "THEM",
  1888. "THEN",
  1889. "THEY",
  1890. "THIN",
  1891. "THIS",
  1892. "THUD",
  1893. "THUG",
  1894. "TICK",
  1895. "TIDE",
  1896. "TIDY",
  1897. "TIED",
  1898. "TIER",
  1899. "TILE",
  1900. "TILL",
  1901. "TILT",
  1902. "TIME",
  1903. "TINA",
  1904. "TINE",
  1905. "TINT",
  1906. "TINY",
  1907. "TIRE",
  1908. "TOAD",
  1909. "TOGO",
  1910. "TOIL",
  1911. "TOLD",
  1912. "TOLL",
  1913. "TONE",
  1914. "TONG",
  1915. "TONY",
  1916. "TOOK",
  1917. "TOOL",
  1918. "TOOT",
  1919. "TORE",
  1920. "TORN",
  1921. "TOTE",
  1922. "TOUR",
  1923. "TOUT",
  1924. "TOWN",
  1925. "TRAG",
  1926. "TRAM",
  1927. "TRAY",
  1928. "TREE",
  1929. "TREK",
  1930. "TRIG",
  1931. "TRIM",
  1932. "TRIO",
  1933. "TROD",
  1934. "TROT",
  1935. "TROY",
  1936. "TRUE",
  1937. "TUBA",
  1938. "TUBE",
  1939. "TUCK",
  1940. "TUFT",
  1941. "TUNA",
  1942. "TUNE",
  1943. "TUNG",
  1944. "TURF",
  1945. "TURN",
  1946. "TUSK",
  1947. "TWIG",
  1948. "TWIN",
  1949. "TWIT",
  1950. "ULAN",
  1951. "UNIT",
  1952. "URGE",
  1953. "USED",
  1954. "USER",
  1955. "USES",
  1956. "UTAH",
  1957. "VAIL",
  1958. "VAIN",
  1959. "VALE",
  1960. "VARY",
  1961. "VASE",
  1962. "VAST",
  1963. "VEAL",
  1964. "VEDA",
  1965. "VEIL",
  1966. "VEIN",
  1967. "VEND",
  1968. "VENT",
  1969. "VERB",
  1970. "VERY",
  1971. "VETO",
  1972. "VICE",
  1973. "VIEW",
  1974. "VINE",
  1975. "VISE",
  1976. "VOID",
  1977. "VOLT",
  1978. "VOTE",
  1979. "WACK",
  1980. "WADE",
  1981. "WAGE",
  1982. "WAIL",
  1983. "WAIT",
  1984. "WAKE",
  1985. "WALE",
  1986. "WALK",
  1987. "WALL",
  1988. "WALT",
  1989. "WAND",
  1990. "WANE",
  1991. "WANG",
  1992. "WANT",
  1993. "WARD",
  1994. "WARM",
  1995. "WARN",
  1996. "WART",
  1997. "WASH",
  1998. "WAST",
  1999. "WATS",
  2000. "WATT",
  2001. "WAVE",
  2002. "WAVY",
  2003. "WAYS",
  2004. "WEAK",
  2005. "WEAL",
  2006. "WEAN",
  2007. "WEAR",
  2008. "WEED",
  2009. "WEEK",
  2010. "WEIR",
  2011. "WELD",
  2012. "WELL",
  2013. "WELT",
  2014. "WENT",
  2015. "WERE",
  2016. "WERT",
  2017. "WEST",
  2018. "WHAM",
  2019. "WHAT",
  2020. "WHEE",
  2021. "WHEN",
  2022. "WHET",
  2023. "WHOA",
  2024. "WHOM",
  2025. "WICK",
  2026. "WIFE",
  2027. "WILD",
  2028. "WILL",
  2029. "WIND",
  2030. "WINE",
  2031. "WING",
  2032. "WINK",
  2033. "WINO",
  2034. "WIRE",
  2035. "WISE",
  2036. "WISH",
  2037. "WITH",
  2038. "WOLF",
  2039. "WONT",
  2040. "WOOD",
  2041. "WOOL",
  2042. "WORD",
  2043. "WORE",
  2044. "WORK",
  2045. "WORM",
  2046. "WORN",
  2047. "WOVE",
  2048. "WRIT",
  2049. "WYNN",
  2050. "YALE",
  2051. "YANG",
  2052. "YANK",
  2053. "YARD",
  2054. "YARN",
  2055. "YAWL",
  2056. "YAWN",
  2057. "YEAH",
  2058. "YEAR",
  2059. "YELL",
  2060. "YOGA",
  2061. "YOKE"
  2062. };
  2063.  
  2064. /*
  2065.  * Encode 8 bytes in 'c' as a string of English words.
  2066.  * Returns a pointer to a static buffer.
  2067.  */
  2068. char *btoe(char *engout, char *c)
  2069. {
  2070.     char cp[9];    /* add in room for the parity 2 bits*/
  2071.     int p,i ;
  2072.  
  2073.     engout[0] = '\0';
  2074.     memcpy(cp, c,8);
  2075.     /* compute parity */
  2076.     for(p = 0,i = 0; i < 64;i += 2)
  2077.         p += extract(cp,i,2);
  2078.  
  2079.     cp[8] = (char)p << 6;
  2080.     strncat(engout,&Wp[extract(cp, 0,11)][0],4);
  2081.     strcat(engout," ");
  2082.     strncat(engout,&Wp[extract(cp,11,11)][0],4);
  2083.     strcat(engout," ");
  2084.     strncat(engout,&Wp[extract(cp,22,11)][0],4);
  2085.     strcat(engout," ");
  2086.     strncat(engout,&Wp[extract(cp,33,11)][0],4);
  2087.     strcat(engout," ");
  2088.     strncat(engout,&Wp[extract(cp,44,11)][0],4);
  2089.     strcat(engout," ");
  2090.     strncat(engout,&Wp[extract(cp,55,11)][0],4);
  2091.  
  2092.     return(engout);
  2093. }
  2094.  
  2095. /* Dictionary binary search */
  2096. static int wsrch(char *w, int low, int high)
  2097. {
  2098.     int i, j;
  2099.  
  2100.     for(;;){
  2101.         i = (low + high)/2;
  2102.         if((j = strncmp(w, Wp[i], 4)) == 0)
  2103.             return i;    /* Found it */
  2104.         if(high == low+1){
  2105.             /* Avoid effects of integer truncation in /2 */
  2106.             if(strncmp(w, Wp[high], 4) == 0)
  2107.                 return high;
  2108.             else
  2109.                 return -1;
  2110.         }
  2111.         if(low >= high)
  2112.             return -1;    /* I don't *think* this can happen...*/
  2113.         if(j < 0)
  2114.             high = i;    /* Search lower half */
  2115.         else
  2116.             low = i;    /* Search upper half */
  2117.     }
  2118. }
  2119.  
  2120. /* Display 8 bytes as a series of 16-bit hex digits */
  2121. char *put8(char *out, char *s)
  2122. {
  2123.     sprintf(out,"%02X%02X %02X%02X %02X%02X %02X%02X",
  2124.         s[0] & 0xff,s[1] & 0xff,s[2] & 0xff,
  2125.         s[3] & 0xff,s[4] & 0xff,s[5] & 0xff,
  2126.         s[6] & 0xff,s[7] & 0xff);
  2127.     return out;
  2128. }
  2129.  
  2130. static void insert(char *s, int x, int start, int length)
  2131. {
  2132.     unsigned char cl;
  2133.     unsigned char cc;
  2134.     unsigned char cr;
  2135.     unsigned long y;
  2136.     int shift;
  2137.  
  2138. #if 0
  2139.     assert(length <= 11);
  2140.     assert(start >= 0);
  2141.     assert(length >= 0);
  2142.     assert(start +length <= 66);
  2143. #endif
  2144.  
  2145.     shift = ((8  -(( start + length) % 8))%8);
  2146.     y = (long) x << shift;
  2147.     cl = (y >> 16) & 0xff;
  2148.     cc = (y >> 8) & 0xff;
  2149.     cr = y & 0xff;
  2150.     if(shift + length > 16){
  2151.         s[start /8] |= cl;
  2152.         s[start/8 +1] |= cc;
  2153.         s[start/8 +2] |= cr;
  2154.     } else if(shift +length > 8){
  2155.         s[start/8] |= cc;
  2156.         s[start/8 + 1] |= cr;
  2157.     } else {
  2158.         s[start/8] |= cr;
  2159.     }
  2160. }
  2161.  
  2162. static void standard(register char *word)
  2163. {
  2164.     while(*word){
  2165.         if(*word >= 0 && *word < 128)
  2166.             break;
  2167.         if(islower(*word))
  2168.             *word = toupper(*word);
  2169.         if(*word == '1')
  2170.             *word = 'L';
  2171.         if(*word == '0')
  2172.             *word = 'O';
  2173.         if(*word == '5')
  2174.             *word = 'S';
  2175.         word++;
  2176.     }
  2177. }
  2178.  
  2179. /* Extract 'length' bits from the char array 's' starting with bit 'start' */
  2180. static unsigned long extract(char *s, int start, int length)
  2181. {
  2182.     unsigned char cl;
  2183.     unsigned char cc;
  2184.     unsigned char cr;
  2185.     unsigned long x;
  2186.  
  2187. #if 0
  2188.     assert(length <= 11);
  2189.     assert(start >= 0);
  2190.     assert(length >= 0);
  2191.     assert(start +length <= 66);
  2192. #endif
  2193.  
  2194.     cl = s[start/8];
  2195.     cc = s[start/8 +1];
  2196.     cr = s[start/8 +2];
  2197.     x = ((long)(cl<<8 | cc) <<8  | cr) ;
  2198.     x = x >> (24 - (length + (start %8)));
  2199.     x =( x & (0xffff >> (16-length) )   );
  2200.     return(x);
  2201. }
  2202.  
  2203.