:- ensure_loaded(purity).
:- ensure_loaded(phex).

:- multifile(pcompare/4).
:- multifile(ptype/2).

pcompare(pcode, A, B, C) :-
    pcode_hex2(A, Ah),
    pcode_hex2(B, Bh),
    pcompare(Ah,Bh,C).

ptype(0,pcode).
ptype(1,pcode).
ptype(2,pcode).
ptype(3,pcode).
ptype(4,pcode).
ptype(5,pcode).
ptype(6,pcode).
ptype(7,pcode).
ptype(8,pcode).
ptype(9,pcode).
ptype(10,pcode).
ptype(11,pcode).
ptype(12,pcode).
ptype(13,pcode).
ptype(14,pcode).
ptype(15,pcode).
ptype(16,pcode).
ptype(17,pcode).
ptype(18,pcode).
ptype(19,pcode).
ptype(20,pcode).
ptype(21,pcode).
ptype(22,pcode).
ptype(23,pcode).
ptype(24,pcode).
ptype(25,pcode).
ptype(26,pcode).
ptype(27,pcode).
ptype(28,pcode).
ptype(29,pcode).
ptype(30,pcode).
ptype(31,pcode).
ptype(32,pcode).
ptype(33,pcode).
ptype(34,pcode).
ptype(35,pcode).
ptype(36,pcode).
ptype(37,pcode).
ptype(38,pcode).
ptype(39,pcode).
ptype(40,pcode).
ptype(41,pcode).
ptype(42,pcode).
ptype(43,pcode).
ptype(44,pcode).
ptype(45,pcode).
ptype(46,pcode).
ptype(47,pcode).
ptype(48,pcode).
ptype(49,pcode).
ptype(50,pcode).
ptype(51,pcode).
ptype(52,pcode).
ptype(53,pcode).
ptype(54,pcode).
ptype(55,pcode).
ptype(56,pcode).
ptype(57,pcode).
ptype(58,pcode).
ptype(59,pcode).
ptype(60,pcode).
ptype(61,pcode).
ptype(62,pcode).
ptype(63,pcode).
ptype(64,pcode).
ptype(65,pcode).
ptype(66,pcode).
ptype(67,pcode).
ptype(68,pcode).
ptype(69,pcode).
ptype(70,pcode).
ptype(71,pcode).
ptype(72,pcode).
ptype(73,pcode).
ptype(74,pcode).
ptype(75,pcode).
ptype(76,pcode).
ptype(77,pcode).
ptype(78,pcode).
ptype(79,pcode).
ptype(80,pcode).
ptype(81,pcode).
ptype(82,pcode).
ptype(83,pcode).
ptype(84,pcode).
ptype(85,pcode).
ptype(86,pcode).
ptype(87,pcode).
ptype(88,pcode).
ptype(89,pcode).
ptype(90,pcode).
ptype(91,pcode).
ptype(92,pcode).
ptype(93,pcode).
ptype(94,pcode).
ptype(95,pcode).
ptype(96,pcode).
ptype(97,pcode).
ptype(98,pcode).
ptype(99,pcode).
ptype(100,pcode).
ptype(101,pcode).
ptype(102,pcode).
ptype(103,pcode).
ptype(104,pcode).
ptype(105,pcode).
ptype(106,pcode).
ptype(107,pcode).
ptype(108,pcode).
ptype(109,pcode).
ptype(110,pcode).
ptype(111,pcode).
ptype(112,pcode).
ptype(113,pcode).
ptype(114,pcode).
ptype(115,pcode).
ptype(116,pcode).
ptype(117,pcode).
ptype(118,pcode).
ptype(119,pcode).
ptype(120,pcode).
ptype(121,pcode).
ptype(122,pcode).
ptype(123,pcode).
ptype(124,pcode).
ptype(125,pcode).
ptype(126,pcode).
ptype(127,pcode).
ptype(128,pcode).
ptype(129,pcode).
ptype(130,pcode).
ptype(131,pcode).
ptype(132,pcode).
ptype(133,pcode).
ptype(134,pcode).
ptype(135,pcode).
ptype(136,pcode).
ptype(137,pcode).
ptype(138,pcode).
ptype(139,pcode).
ptype(140,pcode).
ptype(141,pcode).
ptype(142,pcode).
ptype(143,pcode).
ptype(144,pcode).
ptype(145,pcode).
ptype(146,pcode).
ptype(147,pcode).
ptype(148,pcode).
ptype(149,pcode).
ptype(150,pcode).
ptype(151,pcode).
ptype(152,pcode).
ptype(153,pcode).
ptype(154,pcode).
ptype(155,pcode).
ptype(156,pcode).
ptype(157,pcode).
ptype(158,pcode).
ptype(159,pcode).
ptype(160,pcode).
ptype(161,pcode).
ptype(162,pcode).
ptype(163,pcode).
ptype(164,pcode).
ptype(165,pcode).
ptype(166,pcode).
ptype(167,pcode).
ptype(168,pcode).
ptype(169,pcode).
ptype(170,pcode).
ptype(171,pcode).
ptype(172,pcode).
ptype(173,pcode).
ptype(174,pcode).
ptype(175,pcode).
ptype(176,pcode).
ptype(177,pcode).
ptype(178,pcode).
ptype(179,pcode).
ptype(180,pcode).
ptype(181,pcode).
ptype(182,pcode).
ptype(183,pcode).
ptype(184,pcode).
ptype(185,pcode).
ptype(186,pcode).
ptype(187,pcode).
ptype(188,pcode).
ptype(189,pcode).
ptype(190,pcode).
ptype(191,pcode).
ptype(192,pcode).
ptype(193,pcode).
ptype(194,pcode).
ptype(195,pcode).
ptype(196,pcode).
ptype(197,pcode).
ptype(198,pcode).
ptype(199,pcode).
ptype(200,pcode).
ptype(201,pcode).
ptype(202,pcode).
ptype(203,pcode).
ptype(204,pcode).
ptype(205,pcode).
ptype(206,pcode).
ptype(207,pcode).
ptype(208,pcode).
ptype(209,pcode).
ptype(210,pcode).
ptype(211,pcode).
ptype(212,pcode).
ptype(213,pcode).
ptype(214,pcode).
ptype(215,pcode).
ptype(216,pcode).
ptype(217,pcode).
ptype(218,pcode).
ptype(219,pcode).
ptype(220,pcode).
ptype(221,pcode).
ptype(222,pcode).
ptype(223,pcode).
ptype(224,pcode).
ptype(225,pcode).
ptype(226,pcode).
ptype(227,pcode).
ptype(228,pcode).
ptype(229,pcode).
ptype(230,pcode).
ptype(231,pcode).
ptype(232,pcode).
ptype(233,pcode).
ptype(234,pcode).
ptype(235,pcode).
ptype(236,pcode).
ptype(237,pcode).
ptype(238,pcode).
ptype(239,pcode).
ptype(240,pcode).
ptype(241,pcode).
ptype(242,pcode).
ptype(243,pcode).
ptype(244,pcode).
ptype(245,pcode).
ptype(246,pcode).
ptype(247,pcode).
ptype(248,pcode).
ptype(249,pcode).
ptype(250,pcode).
ptype(251,pcode).
ptype(252,pcode).
ptype(253,pcode).
ptype(254,pcode).
ptype(255,pcode).

pcode_hex2(0,hex2(0,0)).
pcode_hex2(1,hex2(0,1)).
pcode_hex2(2,hex2(0,2)).
pcode_hex2(3,hex2(0,3)).
pcode_hex2(4,hex2(0,4)).
pcode_hex2(5,hex2(0,5)).
pcode_hex2(6,hex2(0,6)).
pcode_hex2(7,hex2(0,7)).
pcode_hex2(8,hex2(0,8)).
pcode_hex2(9,hex2(0,9)).
pcode_hex2(10,hex2(0,a)).
pcode_hex2(11,hex2(0,b)).
pcode_hex2(12,hex2(0,c)).
pcode_hex2(13,hex2(0,d)).
pcode_hex2(14,hex2(0,e)).
pcode_hex2(15,hex2(0,f)).
pcode_hex2(16,hex2(1,0)).
pcode_hex2(17,hex2(1,1)).
pcode_hex2(18,hex2(1,2)).
pcode_hex2(19,hex2(1,3)).
pcode_hex2(20,hex2(1,4)).
pcode_hex2(21,hex2(1,5)).
pcode_hex2(22,hex2(1,6)).
pcode_hex2(23,hex2(1,7)).
pcode_hex2(24,hex2(1,8)).
pcode_hex2(25,hex2(1,9)).
pcode_hex2(26,hex2(1,a)).
pcode_hex2(27,hex2(1,b)).
pcode_hex2(28,hex2(1,c)).
pcode_hex2(29,hex2(1,d)).
pcode_hex2(30,hex2(1,e)).
pcode_hex2(31,hex2(1,f)).
pcode_hex2(32,hex2(2,0)).
pcode_hex2(33,hex2(2,1)).
pcode_hex2(34,hex2(2,2)).
pcode_hex2(35,hex2(2,3)).
pcode_hex2(36,hex2(2,4)).
pcode_hex2(37,hex2(2,5)).
pcode_hex2(38,hex2(2,6)).
pcode_hex2(39,hex2(2,7)).
pcode_hex2(40,hex2(2,8)).
pcode_hex2(41,hex2(2,9)).
pcode_hex2(42,hex2(2,a)).
pcode_hex2(43,hex2(2,b)).
pcode_hex2(44,hex2(2,c)).
pcode_hex2(45,hex2(2,d)).
pcode_hex2(46,hex2(2,e)).
pcode_hex2(47,hex2(2,f)).
pcode_hex2(48,hex2(3,0)).
pcode_hex2(49,hex2(3,1)).
pcode_hex2(50,hex2(3,2)).
pcode_hex2(51,hex2(3,3)).
pcode_hex2(52,hex2(3,4)).
pcode_hex2(53,hex2(3,5)).
pcode_hex2(54,hex2(3,6)).
pcode_hex2(55,hex2(3,7)).
pcode_hex2(56,hex2(3,8)).
pcode_hex2(57,hex2(3,9)).
pcode_hex2(58,hex2(3,a)).
pcode_hex2(59,hex2(3,b)).
pcode_hex2(60,hex2(3,c)).
pcode_hex2(61,hex2(3,d)).
pcode_hex2(62,hex2(3,e)).
pcode_hex2(63,hex2(3,f)).
pcode_hex2(64,hex2(4,0)).
pcode_hex2(65,hex2(4,1)).
pcode_hex2(66,hex2(4,2)).
pcode_hex2(67,hex2(4,3)).
pcode_hex2(68,hex2(4,4)).
pcode_hex2(69,hex2(4,5)).
pcode_hex2(70,hex2(4,6)).
pcode_hex2(71,hex2(4,7)).
pcode_hex2(72,hex2(4,8)).
pcode_hex2(73,hex2(4,9)).
pcode_hex2(74,hex2(4,a)).
pcode_hex2(75,hex2(4,b)).
pcode_hex2(76,hex2(4,c)).
pcode_hex2(77,hex2(4,d)).
pcode_hex2(78,hex2(4,e)).
pcode_hex2(79,hex2(4,f)).
pcode_hex2(80,hex2(5,0)).
pcode_hex2(81,hex2(5,1)).
pcode_hex2(82,hex2(5,2)).
pcode_hex2(83,hex2(5,3)).
pcode_hex2(84,hex2(5,4)).
pcode_hex2(85,hex2(5,5)).
pcode_hex2(86,hex2(5,6)).
pcode_hex2(87,hex2(5,7)).
pcode_hex2(88,hex2(5,8)).
pcode_hex2(89,hex2(5,9)).
pcode_hex2(90,hex2(5,a)).
pcode_hex2(91,hex2(5,b)).
pcode_hex2(92,hex2(5,c)).
pcode_hex2(93,hex2(5,d)).
pcode_hex2(94,hex2(5,e)).
pcode_hex2(95,hex2(5,f)).
pcode_hex2(96,hex2(6,0)).
pcode_hex2(97,hex2(6,1)).
pcode_hex2(98,hex2(6,2)).
pcode_hex2(99,hex2(6,3)).
pcode_hex2(100,hex2(6,4)).
pcode_hex2(101,hex2(6,5)).
pcode_hex2(102,hex2(6,6)).
pcode_hex2(103,hex2(6,7)).
pcode_hex2(104,hex2(6,8)).
pcode_hex2(105,hex2(6,9)).
pcode_hex2(106,hex2(6,a)).
pcode_hex2(107,hex2(6,b)).
pcode_hex2(108,hex2(6,c)).
pcode_hex2(109,hex2(6,d)).
pcode_hex2(110,hex2(6,e)).
pcode_hex2(111,hex2(6,f)).
pcode_hex2(112,hex2(7,0)).
pcode_hex2(113,hex2(7,1)).
pcode_hex2(114,hex2(7,2)).
pcode_hex2(115,hex2(7,3)).
pcode_hex2(116,hex2(7,4)).
pcode_hex2(117,hex2(7,5)).
pcode_hex2(118,hex2(7,6)).
pcode_hex2(119,hex2(7,7)).
pcode_hex2(120,hex2(7,8)).
pcode_hex2(121,hex2(7,9)).
pcode_hex2(122,hex2(7,a)).
pcode_hex2(123,hex2(7,b)).
pcode_hex2(124,hex2(7,c)).
pcode_hex2(125,hex2(7,d)).
pcode_hex2(126,hex2(7,e)).
pcode_hex2(127,hex2(7,f)).
pcode_hex2(128,hex2(8,0)).
pcode_hex2(129,hex2(8,1)).
pcode_hex2(130,hex2(8,2)).
pcode_hex2(131,hex2(8,3)).
pcode_hex2(132,hex2(8,4)).
pcode_hex2(133,hex2(8,5)).
pcode_hex2(134,hex2(8,6)).
pcode_hex2(135,hex2(8,7)).
pcode_hex2(136,hex2(8,8)).
pcode_hex2(137,hex2(8,9)).
pcode_hex2(138,hex2(8,a)).
pcode_hex2(139,hex2(8,b)).
pcode_hex2(140,hex2(8,c)).
pcode_hex2(141,hex2(8,d)).
pcode_hex2(142,hex2(8,e)).
pcode_hex2(143,hex2(8,f)).
pcode_hex2(144,hex2(9,0)).
pcode_hex2(145,hex2(9,1)).
pcode_hex2(146,hex2(9,2)).
pcode_hex2(147,hex2(9,3)).
pcode_hex2(148,hex2(9,4)).
pcode_hex2(149,hex2(9,5)).
pcode_hex2(150,hex2(9,6)).
pcode_hex2(151,hex2(9,7)).
pcode_hex2(152,hex2(9,8)).
pcode_hex2(153,hex2(9,9)).
pcode_hex2(154,hex2(9,a)).
pcode_hex2(155,hex2(9,b)).
pcode_hex2(156,hex2(9,c)).
pcode_hex2(157,hex2(9,d)).
pcode_hex2(158,hex2(9,e)).
pcode_hex2(159,hex2(9,f)).
pcode_hex2(160,hex2(a,0)).
pcode_hex2(161,hex2(a,1)).
pcode_hex2(162,hex2(a,2)).
pcode_hex2(163,hex2(a,3)).
pcode_hex2(164,hex2(a,4)).
pcode_hex2(165,hex2(a,5)).
pcode_hex2(166,hex2(a,6)).
pcode_hex2(167,hex2(a,7)).
pcode_hex2(168,hex2(a,8)).
pcode_hex2(169,hex2(a,9)).
pcode_hex2(170,hex2(a,a)).
pcode_hex2(171,hex2(a,b)).
pcode_hex2(172,hex2(a,c)).
pcode_hex2(173,hex2(a,d)).
pcode_hex2(174,hex2(a,e)).
pcode_hex2(175,hex2(a,f)).
pcode_hex2(176,hex2(b,0)).
pcode_hex2(177,hex2(b,1)).
pcode_hex2(178,hex2(b,2)).
pcode_hex2(179,hex2(b,3)).
pcode_hex2(180,hex2(b,4)).
pcode_hex2(181,hex2(b,5)).
pcode_hex2(182,hex2(b,6)).
pcode_hex2(183,hex2(b,7)).
pcode_hex2(184,hex2(b,8)).
pcode_hex2(185,hex2(b,9)).
pcode_hex2(186,hex2(b,a)).
pcode_hex2(187,hex2(b,b)).
pcode_hex2(188,hex2(b,c)).
pcode_hex2(189,hex2(b,d)).
pcode_hex2(190,hex2(b,e)).
pcode_hex2(191,hex2(b,f)).
pcode_hex2(192,hex2(c,0)).
pcode_hex2(193,hex2(c,1)).
pcode_hex2(194,hex2(c,2)).
pcode_hex2(195,hex2(c,3)).
pcode_hex2(196,hex2(c,4)).
pcode_hex2(197,hex2(c,5)).
pcode_hex2(198,hex2(c,6)).
pcode_hex2(199,hex2(c,7)).
pcode_hex2(200,hex2(c,8)).
pcode_hex2(201,hex2(c,9)).
pcode_hex2(202,hex2(c,a)).
pcode_hex2(203,hex2(c,b)).
pcode_hex2(204,hex2(c,c)).
pcode_hex2(205,hex2(c,d)).
pcode_hex2(206,hex2(c,e)).
pcode_hex2(207,hex2(c,f)).
pcode_hex2(208,hex2(d,0)).
pcode_hex2(209,hex2(d,1)).
pcode_hex2(210,hex2(d,2)).
pcode_hex2(211,hex2(d,3)).
pcode_hex2(212,hex2(d,4)).
pcode_hex2(213,hex2(d,5)).
pcode_hex2(214,hex2(d,6)).
pcode_hex2(215,hex2(d,7)).
pcode_hex2(216,hex2(d,8)).
pcode_hex2(217,hex2(d,9)).
pcode_hex2(218,hex2(d,a)).
pcode_hex2(219,hex2(d,b)).
pcode_hex2(220,hex2(d,c)).
pcode_hex2(221,hex2(d,d)).
pcode_hex2(222,hex2(d,e)).
pcode_hex2(223,hex2(d,f)).
pcode_hex2(224,hex2(e,0)).
pcode_hex2(225,hex2(e,1)).
pcode_hex2(226,hex2(e,2)).
pcode_hex2(227,hex2(e,3)).
pcode_hex2(228,hex2(e,4)).
pcode_hex2(229,hex2(e,5)).
pcode_hex2(230,hex2(e,6)).
pcode_hex2(231,hex2(e,7)).
pcode_hex2(232,hex2(e,8)).
pcode_hex2(233,hex2(e,9)).
pcode_hex2(234,hex2(e,a)).
pcode_hex2(235,hex2(e,b)).
pcode_hex2(236,hex2(e,c)).
pcode_hex2(237,hex2(e,d)).
pcode_hex2(238,hex2(e,e)).
pcode_hex2(239,hex2(e,f)).
pcode_hex2(240,hex2(f,0)).
pcode_hex2(241,hex2(f,1)).
pcode_hex2(242,hex2(f,2)).
pcode_hex2(243,hex2(f,3)).
pcode_hex2(244,hex2(f,4)).
pcode_hex2(245,hex2(f,5)).
pcode_hex2(246,hex2(f,6)).
pcode_hex2(247,hex2(f,7)).
pcode_hex2(248,hex2(f,8)).
pcode_hex2(249,hex2(f,9)).
pcode_hex2(250,hex2(f,a)).
pcode_hex2(251,hex2(f,b)).
pcode_hex2(252,hex2(f,c)).
pcode_hex2(253,hex2(f,d)).
pcode_hex2(254,hex2(f,e)).
pcode_hex2(255,hex2(f,f)).
