1 /* 2 * From: http://doar-e.github.io/blog/2013/08/24/regular-expressions-obfuscation-under-the-microscope 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 checkinput(char * p)8unsigned char checkinput(char *p){ 9 unsigned int state = 2414982228; 10 while(*p) 11 { 12 switch(state) 13 { 14 case 1150854703: 15 { 16 if(*p == '@') 17 { 18 state = 2763154882; ++p; 19 } 20 else if(*p == '*') 21 { 22 state = 614359938; ++p; 23 } 24 else if(*p == '=') 25 { 26 state = 2460767789; ++p; 27 } 28 else if(*p == 't') 29 { 30 state = 4029873264; ++p; 31 } 32 else if(*p == '2') 33 { 34 state = 4283929247; ++p; 35 } 36 else if(*p == 'O') 37 { 38 state = 3360254177; ++p; 39 } 40 else return 0; 41 break; 42 } 43 case 1190742721: 44 { 45 if(*p == 'y') 46 { 47 state = 953204336; ++p; 48 } 49 else return 0; 50 break; 51 } 52 case 324474391: 53 { 54 if(*p == 'f') 55 { 56 state = 4120389184; ++p; 57 } 58 else if(*p == '4') 59 { 60 state = 101229758; ++p; 61 } 62 else if(*p == 'J') 63 { 64 state = 1150854703; ++p; 65 } 66 else if(*p == 'L') 67 { 68 state = 2384119878; ++p; 69 } 70 else if(*p == '>') 71 { 72 state = 2349573380; ++p; 73 } 74 else if(*p == 'x') 75 { 76 state = 1057073555; ++p; 77 } 78 else return 0; 79 break; 80 } 81 case 2166033187: 82 { 83 if(*p == 'k') 84 { 85 state = 3786799564; ++p; 86 } 87 else if(*p == 'T') 88 { 89 state = 1390160888; ++p; 90 } 91 else if(*p == 'm') 92 { 93 state = 721752926; ++p; 94 } 95 else if(*p == 'S') 96 { 97 state = 614359938; ++p; 98 } 99 else return 0; 100 break; 101 } 102 case 3268769598: 103 { 104 if(*p >= '0' && *p <= '9') 105 { 106 return 1; 107 } 108 else if(*p == '`') 109 { 110 state = 3608599948; ++p; 111 } 112 else if(*p == '8') 113 { 114 state = 691390384; ++p; 115 } 116 else if(*p == 'a') 117 { 118 state = 2242283503; ++p; 119 } 120 else if(*p == 'M') 121 { 122 state = 3335559999; ++p; 123 } 124 else return 0; 125 break; 126 } 127 case 2414982228: 128 { 129 if(*p == 'H') 130 { 131 state = 2696439585; ++p; 132 } 133 else if(*p == '>') 134 { 135 state = 2349573380; ++p; 136 } 137 else if(*p == 'L') 138 { 139 state = 3335559999; ++p; 140 } 141 else if(*p == 'c') 142 { 143 state = 3786799564; ++p; 144 } 145 else if(*p == 'm') 146 { 147 state = 1057073555; ++p; 148 } 149 else ++p; 150 break; 151 } 152 case 3786799564: 153 { 154 if(*p == 'S') 155 { 156 return 1; 157 } 158 else if(*p == ' ') 159 { 160 state = 3410901078; ++p; 161 } 162 else if(*p == 'B') 163 { 164 state = 2056998787; ++p; 165 } 166 else if(*p == 'Y') 167 { 168 state = 4267076867; ++p; 169 } 170 else if(*p == '5') 171 { 172 state = 1611919523; ++p; 173 } 174 else if(*p == 'i') 175 { 176 state = 2241134315; ++p; 177 } 178 else return 0; 179 break; 180 } 181 case 2971031841: 182 { 183 if(*p == '&') 184 { 185 state = 953204336; ++p; 186 } 187 else if(*p == '.') 188 { 189 state = 1515485535; ++p; 190 } 191 else if(*p == 'v') 192 { 193 state = 4120389184; ++p; 194 } 195 else if(*p == 'R') 196 { 197 state = 3608599948; ++p; 198 } 199 else if(*p == 'n') 200 { 201 state = 4135210710; ++p; 202 } 203 else if(*p == '%') 204 { 205 state = 3410901078; ++p; 206 } 207 else if(*p == 'R') 208 { 209 state = 3942154577; ++p; 210 } 211 else return 0; 212 break; 213 } 214 case 1057073555: 215 { 216 if(*p >= '0' && *p <= '9') 217 { 218 state = 3268769598; ++p; 219 } 220 else if(*p == 's') 221 { 222 state = 324474391; ++p; 223 } 224 else if(*p == 'Y') 225 { 226 state = 101229758; ++p; 227 } 228 else if(*p == '+') 229 { 230 state = 101229758; ++p; 231 } 232 else return 0; 233 break; 234 } 235 case 2934937715: 236 { 237 if(*p == '$') 238 { 239 state = 1782541044; ++p; 240 } 241 else if(*p == 'i') 242 { 243 state = 2242283503; ++p; 244 } 245 else return 0; 246 break; 247 } 248 case 2011019626: 249 { 250 if(*p == '+') 251 { 252 state = 1818848268; ++p; 253 } 254 else if(*p == 'o') 255 { 256 state = 2696439585; ++p; 257 } 258 else if(*p == '~') 259 { 260 state = 1239897561; ++p; 261 } 262 else if(*p == '4') 263 { 264 state = 957033642; ++p; 265 } 266 else if(*p == 'o') 267 { 268 state = 3335559999; ++p; 269 } 270 else return 0; 271 break; 272 } 273 case 3752577241: 274 { 275 if(*p == '%') 276 { 277 state = 3608599948; ++p; 278 } 279 else if(*p == '5') 280 { 281 state = 2384119878; ++p; 282 } 283 else if(*p == 'E') 284 { 285 state = 2241134315; ++p; 286 } 287 else if(*p == 'A') 288 { 289 state = 4267076867; ++p; 290 } 291 else if(*p == 'g') 292 { 293 state = 607666879; ++p; 294 } 295 else if(*p == 'B') 296 { 297 state = 3268769598; ++p; 298 } 299 else if(*p == 'U') 300 { 301 state = 2056998787; ++p; 302 } 303 else if(*p == 'K') 304 { 305 state = 776990946; ++p; 306 } 307 else if(*p == '\\') 308 { 309 state = 155012291; ++p; 310 } 311 else return 0; 312 break; 313 } 314 case 101229758: 315 { 316 if(*p == '-') 317 { 318 state = 1239897561; ++p; 319 } 320 else if(*p == 'j') 321 { 322 state = 1746586473; ++p; 323 } 324 else if(*p == 'P') 325 { 326 state = 2696439585; ++p; 327 } 328 else if(*p == 'S') 329 { 330 state = 607666879; ++p; 331 } 332 else if(*p == '=') 333 { 334 state = 609520033; ++p; 335 } 336 else if(*p == '2') 337 { 338 state = 1782541044; ++p; 339 } 340 else if(*p == '&') 341 { 342 state = 2763154882; ++p; 343 } 344 else return 0; 345 break; 346 } 347 case 3181597626: 348 { 349 if(*p == 'w') 350 { 351 state = 3268769598; ++p; 352 } 353 else if(*p == 'u') 354 { 355 state = 3786799564; ++p; 356 } 357 else if(*p == '/') 358 { 359 state = 3268769598; ++p; 360 } 361 else if(*p == '%') 362 { 363 state = 776990946; ++p; 364 } 365 else if(*p == 'g') 366 { 367 state = 1384595292; ++p; 368 } 369 else if(*p == 'E') 370 { 371 state = 2414982228; ++p; 372 } 373 else if(*p == 'm') 374 { 375 state = 3752577241; ++p; 376 } 377 else if(*p == '~') 378 { 379 state = 1818848268; ++p; 380 } 381 else if(*p == '4') 382 { 383 state = 2242283503; ++p; 384 } 385 else if(*p == 'D') 386 { 387 state = 3268769598; ++p; 388 } 389 else if(*p == 'L') 390 { 391 state = 2756235254; ++p; 392 } 393 else if(*p == 'C') 394 { 395 state = 2696439585; ++p; 396 } 397 else return 0; 398 break; 399 } 400 case 1097742315: 401 { 402 if(*p == '#') 403 { 404 state = 2166033187; ++p; 405 } 406 else if(*p == 'I') 407 { 408 state = 1390160888; ++p; 409 } 410 else if(*p == 'U') 411 { 412 state = 3891264545; ++p; 413 } 414 else return 0; 415 break; 416 } 417 case 2696439585: 418 { 419 if(*p == 'i') 420 { 421 state = 101229758; ++p; 422 } 423 else if(*p == 'Q') 424 { 425 state = 3891264545; ++p; 426 } 427 else if(*p == 'm') 428 { 429 state = 2492710957; ++p; 430 } 431 else if(*p == 'P') 432 { 433 state = 4135210710; ++p; 434 } 435 else if(*p == 'y') 436 { 437 state = 1611919523; ++p; 438 } 439 else if(*p == 'w') 440 { 441 state = 2241134315; ++p; 442 } 443 else return 0; 444 break; 445 } 446 case 4283929247: 447 { 448 if(*p == '`') 449 { 450 state = 1818848268; ++p; 451 } 452 else if(*p == 'h') 453 { 454 state = 953204336; ++p; 455 } 456 else if(*p == '6') 457 { 458 state = 689022328; ++p; 459 } 460 else if(*p == 'x') 461 { 462 state = 1782541044; ++p; 463 } 464 else if(*p == 'z') 465 { 466 state = 3410901078; ++p; 467 } 468 else if(*p == 'y') 469 { 470 state = 3891264545; ++p; 471 } 472 else if(*p == 'F') 473 { 474 state = 3786799564; ++p; 475 } 476 else if(*p == '3') 477 { 478 state = 2696439585; ++p; 479 } 480 else if(*p == '#') 481 { 482 state = 3148306748; ++p; 483 } 484 else return 0; 485 break; 486 } 487 case 2756235254: 488 { 489 if(*p == 'z') 490 { 491 state = 4120389184; ++p; 492 } 493 else if(*p == 'S') 494 { 495 state = 101229758; ++p; 496 } 497 else if(*p == '4') 498 { 499 state = 3942154577; ++p; 500 } 501 else if(*p == 'M') 502 { 503 state = 1390160888; ++p; 504 } 505 else if(*p == 'g') 506 { 507 state = 2166033187; ++p; 508 } 509 else if(*p == 'H') 510 { 511 state = 3335559999; ++p; 512 } 513 else if(*p == ',') 514 { 515 state = 2166033187; ++p; 516 } 517 else if(*p == 'a') 518 { 519 state = 2414982228; ++p; 520 } 521 else return 0; 522 break; 523 } 524 case 614359938: 525 { 526 if(*p == '3') 527 { 528 state = 1746586473; ++p; 529 } 530 else if(*p == '4') 531 { 532 state = 2384119878; ++p; 533 } 534 else if(*p == ':') 535 { 536 state = 957033642; ++p; 537 } 538 else if(*p == 'l') 539 { 540 state = 1746586473; ++p; 541 } 542 else if(*p == 'L') 543 { 544 state = 721752926; ++p; 545 } 546 else return 0; 547 break; 548 } 549 case 155012291: 550 { 551 if(*p == 'W') 552 { 553 state = 607666879; ++p; 554 } 555 else if(*p == '8') 556 { 557 state = 324474391; ++p; 558 } 559 else if(*p == 'X') 560 { 561 state = 2763154882; ++p; 562 } 563 else if(*p == '\\') 564 { 565 state = 324474391; ++p; 566 } 567 else if(*p == '&') 568 { 569 state = 1097742315; ++p; 570 } 571 else if(*p == 'e') 572 { 573 state = 3891264545; ++p; 574 } 575 else if(*p == '\t') 576 { 577 state = 4135210710; ++p; 578 } 579 else return 0; 580 break; 581 } 582 case 1611919523: 583 { 584 if(*p == 'K') 585 { 586 state = 2384119878; ++p; 587 } 588 else if(*p == '.') 589 { 590 state = 607666879; ++p; 591 } 592 else if(*p == 'g') 593 { 594 state = 324474391; ++p; 595 } 596 else if(*p == 'H') 597 { 598 state = 155012291; ++p; 599 } 600 else if(*p == '#') 601 { 602 state = 155012291; ++p; 603 } 604 else if(*p == '^') 605 { 606 state = 957033642; ++p; 607 } 608 else if(*p == '?') 609 { 610 state = 3891264545; ++p; 611 } 612 else return 0; 613 break; 614 } 615 case 689022328: 616 { 617 if(*p == '+') 618 { 619 state = 3268769598; ++p; 620 } 621 else if(*p == 'H') 622 { 623 state = 1057073555; ++p; 624 } 625 else if(*p == '!') 626 { 627 state = 2756235254; ++p; 628 } 629 else if(*p == '9') 630 { 631 state = 295606295; ++p; 632 } 633 else return 0; 634 break; 635 } 636 case 1782541044: 637 { 638 if(*p == 'k') 639 { 640 state = 607666879; ++p; 641 } 642 else if(*p == 'H') 643 { 644 state = 2241134315; ++p; 645 } 646 else if(*p == '|') 647 { 648 state = 1239897561; ++p; 649 } 650 else if(*p == 'F') 651 { 652 state = 2934937715; ++p; 653 } 654 else if(*p == '^') 655 { 656 state = 2242283503; ++p; 657 } 658 else if(*p == '\x0b') 659 { 660 state = 2056998787; ++p; 661 } 662 else if(*p == 'x') 663 { 664 state = 2696439585; ++p; 665 } 666 else return 0; 667 break; 668 } 669 case 3410901078: 670 { 671 if(*p >= '0' && *p <= '9') 672 { 673 state = 1057073555; ++p; 674 } 675 else if(*p == '3') 676 { 677 state = 324474391; ++p; 678 } 679 else if(*p == 't') 680 { 681 state = 3410901078; ++p; 682 } 683 else if(*p == '8') 684 { 685 state = 721752926; ++p; 686 } 687 else if(*p == '#') 688 { 689 state = 609520033; ++p; 690 } 691 else if(*p == 'J') 692 { 693 state = 1150854703; ++p; 694 } 695 else return 0; 696 break; 697 } 698 case 1746586473: 699 { 700 if(*p == 'f') 701 { 702 state = 1097742315; ++p; 703 } 704 else if(*p == 'X') 705 { 706 state = 4267076867; ++p; 707 } 708 else if(*p == '"') 709 { 710 state = 4135210710; ++p; 711 } 712 else return 0; 713 break; 714 } 715 case 609520033: 716 { 717 if(*p == 'O') 718 { 719 state = 1611919523; ++p; 720 } 721 else if(*p == 'd') 722 { 723 state = 3891264545; ++p; 724 } 725 else if(*p == 'm') 726 { 727 state = 3608599948; ++p; 728 } 729 else if(*p == '+') 730 { 731 state = 2166033187; ++p; 732 } 733 else if(*p == ':') 734 { 735 state = 4120389184; ++p; 736 } 737 else if(*p == 'd') 738 { 739 state = 1818848268; ++p; 740 } 741 else return 0; 742 break; 743 } 744 case 2460767789: 745 { 746 if(*p == 'h') 747 { 748 state = 3942154577; ++p; 749 } 750 else if(*p == 'z') 751 { 752 state = 3268769598; ++p; 753 } 754 else if(*p == 'z') 755 { 756 state = 2349573380; ++p; 757 } 758 else if(*p == '(') 759 { 760 state = 691390384; ++p; 761 } 762 else if(*p == '<') 763 { 764 state = 953204336; ++p; 765 } 766 else if(*p == '1') 767 { 768 state = 1818848268; ++p; 769 } 770 else return 0; 771 break; 772 } 773 case 2384119878: 774 { 775 if(*p == ')') 776 { 777 state = 3410901078; ++p; 778 } 779 else if(*p == 'X') 780 { 781 state = 2414982228; ++p; 782 } 783 else if(*p == '*') 784 { 785 state = 1782541044; ++p; 786 } 787 else if(*p == '-') 788 { 789 state = 1746586473; ++p; 790 } 791 else if(*p == '0') 792 { 793 state = 3786799564; ++p; 794 } 795 else return 0; 796 break; 797 } 798 case 776990946: 799 { 800 if(*p == 'i') 801 { 802 state = 607666879; ++p; 803 } 804 else if(*p == 'W') 805 { 806 state = 2349573380; ++p; 807 } 808 else if(*p == 'f') 809 { 810 state = 3148306748; ++p; 811 } 812 else if(*p == 'X') 813 { 814 state = 3942154577; ++p; 815 } 816 else if(*p == 'H') 817 { 818 state = 4267076867; ++p; 819 } 820 else if(*p == 'a') 821 { 822 state = 1331020175; ++p; 823 } 824 else if(*p == ',') 825 { 826 return 1; 827 } 828 else return 0; 829 break; 830 } 831 case 3891264545: 832 { 833 if(*p == '`') 834 { 835 state = 3891264545; ++p; 836 } 837 else if(*p == 'c') 838 { 839 return 1; 840 } 841 else if(*p == ':') 842 { 843 state = 691390384; ++p; 844 } 845 else return 0; 846 break; 847 } 848 case 4029873264: 849 { 850 if(*p == 'H') 851 { 852 state = 2696439585; ++p; 853 } 854 else if(*p == 'S') 855 { 856 return 1; 857 } 858 else if(*p == 'c') 859 { 860 state = 3942154577; ++p; 861 } 862 else if(*p == '@') 863 { 864 state = 1782541044; ++p; 865 } 866 else if(*p == 'J') 867 { 868 state = 1611919523; ++p; 869 } 870 else if(*p == 'W') 871 { 872 state = 3786799564; ++p; 873 } 874 else return 0; 875 break; 876 } 877 case 2056998787: 878 { 879 if(*p == 'T') 880 { 881 state = 324474391; ++p; 882 } 883 else if(*p == 'W') 884 { 885 state = 1150854703; ++p; 886 } 887 else if(*p == 'B') 888 { 889 state = 1190742721; ++p; 890 } 891 else if(*p == '"') 892 { 893 state = 2696439585; ++p; 894 } 895 else if(*p == '8') 896 { 897 state = 1190742721; ++p; 898 } 899 else if(*p == 'p') 900 { 901 state = 2056998787; ++p; 902 } 903 else if(*p == '6') 904 { 905 state = 609520033; ++p; 906 } 907 else if(*p == 'v') 908 { 909 state = 1239897561; ++p; 910 } 911 else if(*p == 'd') 912 { 913 state = 2756235254; ++p; 914 } 915 else return 0; 916 break; 917 } 918 case 2763154882: 919 { 920 if(*p == 'O') 921 { 922 state = 3268769598; ++p; 923 } 924 else if(*p == ')') 925 { 926 state = 689022328; ++p; 927 } 928 else if(*p == '4') 929 { 930 state = 2166033187; ++p; 931 } 932 else if(*p == 'Q') 933 { 934 state = 1150854703; ++p; 935 } 936 else if(*p == 'Y') 937 { 938 state = 3786799564; ++p; 939 } 940 else if(*p == 't') 941 { 942 state = 2934937715; ++p; 943 } 944 else return 0; 945 break; 946 } 947 case 691390384: 948 { 949 if(*p == '_') 950 { 951 state = 1057073555; ++p; 952 } 953 else if(*p == 'C') 954 { 955 state = 3752577241; ++p; 956 } 957 else if(*p == '?') 958 { 959 state = 2241134315; ++p; 960 } 961 else return 0; 962 break; 963 } 964 case 721752926: 965 { 966 if(*p == ';') 967 { 968 state = 4120389184; ++p; 969 } 970 else if(*p == '\x0b') 971 { 972 state = 3752577241; ++p; 973 } 974 else if(*p == 'o') 975 { 976 state = 1150854703; ++p; 977 } 978 else if(*p == ':') 979 { 980 state = 4283929247; ++p; 981 } 982 else if(*p == 'U') 983 { 984 state = 1818848268; ++p; 985 } 986 else if(*p == '0') 987 { 988 state = 1190742721; ++p; 989 } 990 else if(*p == 'Z') 991 { 992 state = 2971031841; ++p; 993 } 994 else if(*p == '"') 995 { 996 state = 2971031841; ++p; 997 } 998 else if(*p == 'G') 999 { 1000 state = 3786799564; ++p; 1001 } 1002 else return 0; 1003 break; 1004 } 1005 case 4120389184: 1006 { 1007 if(*p == 'o') 1008 { 1009 state = 2241134315; ++p; 1010 } 1011 else if(*p == 'i') 1012 { 1013 state = 3335559999; ++p; 1014 } 1015 else if(*p == '\\') 1016 { 1017 state = 3148306748; ++p; 1018 } 1019 else if(*p == 'n') 1020 { 1021 state = 2349573380; ++p; 1022 } 1023 else return 0; 1024 break; 1025 } 1026 case 1114525773: 1027 { 1028 if(*p == '9') 1029 { 1030 state = 2242283503; ++p; 1031 } 1032 else if(*p == '3') 1033 { 1034 state = 1782541044; ++p; 1035 } 1036 else if(*p == 'b') 1037 { 1038 state = 1818848268; ++p; 1039 } 1040 else if(*p == ',') 1041 { 1042 state = 3360254177; ++p; 1043 } 1044 else if(*p == 'v') 1045 { 1046 state = 3523682200; ++p; 1047 } 1048 else if(*p == 'F') 1049 { 1050 state = 2349573380; ++p; 1051 } 1052 else if(*p == ',') 1053 { 1054 state = 3181597626; ++p; 1055 } 1056 else if(*p == '\n') 1057 { 1058 state = 721752926; ++p; 1059 } 1060 else if(*p == '1') 1061 { 1062 state = 2242283503; ++p; 1063 } 1064 else if(*p == 'X') 1065 { 1066 state = 3942154577; ++p; 1067 } 1068 else return 0; 1069 break; 1070 } 1071 case 607666879: 1072 { 1073 if(*p == '2') 1074 { 1075 state = 1818848268; ++p; 1076 } 1077 else if(*p == 'p') 1078 { 1079 state = 2241134315; ++p; 1080 } 1081 else if(*p == 'h') 1082 { 1083 state = 3786799564; ++p; 1084 } 1085 else if(*p == ')') 1086 { 1087 state = 2492710957; ++p; 1088 } 1089 else if(*p == '5') 1090 { 1091 state = 1331020175; ++p; 1092 } 1093 else if(*p == 'h') 1094 { 1095 return 1; 1096 } 1097 else return 0; 1098 break; 1099 } 1100 case 1384595292: 1101 { 1102 if(*p == 'A') 1103 { 1104 state = 957033642; ++p; 1105 } 1106 else if(*p == '|') 1107 { 1108 state = 1384595292; ++p; 1109 } 1110 else if(*p == 'M') 1111 { 1112 state = 1611919523; ++p; 1113 } 1114 else if(*p == '\x0c') 1115 { 1116 state = 2763154882; ++p; 1117 } 1118 else if(*p == ':') 1119 { 1120 state = 2241134315; ++p; 1121 } 1122 else if(*p == 'x') 1123 { 1124 state = 1190742721; ++p; 1125 } 1126 else if(*p == 'E') 1127 { 1128 state = 689022328; ++p; 1129 } 1130 else if(*p == '`') 1131 { 1132 state = 4029873264; ++p; 1133 } 1134 else if(*p == ':') 1135 { 1136 state = 2384119878; ++p; 1137 } 1138 else if(*p == 'r') 1139 { 1140 state = 3268769598; ++p; 1141 } 1142 else if(*p == '9') 1143 { 1144 state = 1746586473; ++p; 1145 } 1146 else return 0; 1147 break; 1148 } 1149 case 3942154577: 1150 { 1151 if(*p == '@') 1152 { 1153 state = 2460767789; ++p; 1154 } 1155 else if(*p == 'h') 1156 { 1157 state = 2763154882; ++p; 1158 } 1159 else if(*p == 'M') 1160 { 1161 state = 2756235254; ++p; 1162 } 1163 else if(*p == 'y') 1164 { 1165 state = 3608599948; ++p; 1166 } 1167 else if(*p == '3') 1168 { 1169 state = 1150854703; ++p; 1170 } 1171 else if(*p == 'P') 1172 { 1173 state = 1390160888; ++p; 1174 } 1175 else return 0; 1176 break; 1177 } 1178 case 3523682200: 1179 { 1180 if(*p == '>') 1181 { 1182 state = 3360254177; ++p; 1183 } 1184 else if(*p == '$') 1185 { 1186 state = 2241134315; ++p; 1187 } 1188 else if(*p == ':') 1189 { 1190 state = 953204336; ++p; 1191 } 1192 else if(*p == '*') 1193 { 1194 state = 2971031841; ++p; 1195 } 1196 else if(*p == '@') 1197 { 1198 state = 324474391; ++p; 1199 } 1200 else if(*p == '[') 1201 { 1202 state = 776990946; ++p; 1203 } 1204 else return 0; 1205 break; 1206 } 1207 case 295606295: 1208 { 1209 if(*p == '_') 1210 { 1211 state = 3523682200; ++p; 1212 } 1213 else if(*p == 's') 1214 { 1215 state = 4283929247; ++p; 1216 } 1217 else return 0; 1218 break; 1219 } 1220 case 1390160888: 1221 { 1222 if(*p == '0') 1223 { 1224 state = 2696439585; ++p; 1225 } 1226 else if(*p == 'T') 1227 { 1228 state = 155012291; ++p; 1229 } 1230 else if(*p == '=') 1231 { 1232 state = 1818848268; ++p; 1233 } 1234 else if(*p == '2') 1235 { 1236 state = 1150854703; ++p; 1237 } 1238 else if(*p == 'n') 1239 { 1240 state = 2056998787; ++p; 1241 } 1242 else if(*p == 'j') 1243 { 1244 state = 1114525773; ++p; 1245 } 1246 else return 0; 1247 break; 1248 } 1249 case 4135210710: 1250 { 1251 if(*p == 'A') 1252 { 1253 state = 721752926; ++p; 1254 } 1255 else if(*p == 'E') 1256 { 1257 state = 2971031841; ++p; 1258 } 1259 else if(*p == 'N') 1260 { 1261 state = 3891264545; ++p; 1262 } 1263 else if(*p == 'N') 1264 { 1265 state = 2971031841; ++p; 1266 } 1267 else if(*p == '@') 1268 { 1269 state = 689022328; ++p; 1270 } 1271 else if(*p == '=') 1272 { 1273 state = 609520033; ++p; 1274 } 1275 else if(*p == 'H') 1276 { 1277 state = 2696439585; ++p; 1278 } 1279 else return 0; 1280 break; 1281 } 1282 case 3360254177: 1283 { 1284 if(*p == 'B') 1285 { 1286 state = 1746586473; ++p; 1287 } 1288 else if(*p == '_') 1289 { 1290 state = 324474391; ++p; 1291 } 1292 else if(*p == '\r') 1293 { 1294 return 1; 1295 } 1296 else return 0; 1297 break; 1298 } 1299 case 953204336: 1300 { 1301 if(*p == 'r') 1302 { 1303 state = 3752577241; ++p; 1304 } 1305 else if(*p == 't') 1306 { 1307 state = 2166033187; ++p; 1308 } 1309 else if(*p == 's') 1310 { 1311 state = 4283929247; ++p; 1312 } 1313 else if(*p == 'z') 1314 { 1315 state = 689022328; ++p; 1316 } 1317 else if(*p == 'r') 1318 { 1319 state = 3148306748; ++p; 1320 } 1321 else if(*p == '5') 1322 { 1323 state = 2011019626; ++p; 1324 } 1325 else return 0; 1326 break; 1327 } 1328 case 957033642: 1329 { 1330 if(*p == '7') 1331 { 1332 state = 614359938; ++p; 1333 } 1334 else if(*p == '\x0b') 1335 { 1336 state = 101229758; ++p; 1337 } 1338 else if(*p == 'w') 1339 { 1340 state = 1331020175; ++p; 1341 } 1342 else if(*p == '%') 1343 { 1344 state = 1150854703; ++p; 1345 } 1346 else if(*p == 'P') 1347 { 1348 state = 101229758; ++p; 1349 } 1350 else if(*p == '9') 1351 { 1352 state = 609520033; ++p; 1353 } 1354 else return 0; 1355 break; 1356 } 1357 case 3148306748: 1358 { 1359 if(*p == 'd') 1360 { 1361 state = 953204336; ++p; 1362 } 1363 else if(*p == 'c') 1364 { 1365 state = 2056998787; ++p; 1366 } 1367 else if(*p == '>') 1368 { 1369 state = 1782541044; ++p; 1370 } 1371 else return 0; 1372 break; 1373 } 1374 case 1239897561: 1375 { 1376 if(*p >= '0' && *p <= '9') 1377 { 1378 state = 3410901078; ++p; 1379 } 1380 else if(*p == '-') 1381 { 1382 state = 101229758; ++p; 1383 } 1384 else if(*p == '-') 1385 { 1386 state = 1331020175; ++p; 1387 } 1388 else if(*p == ' ') 1389 { 1390 state = 957033642; ++p; 1391 } 1392 else if(*p == '2') 1393 { 1394 state = 3942154577; ++p; 1395 } 1396 else if(*p == '8') 1397 { 1398 state = 3148306748; ++p; 1399 } 1400 else if(*p == 'd') 1401 { 1402 state = 609520033; ++p; 1403 } 1404 else return 0; 1405 break; 1406 } 1407 case 2242283503: 1408 { 1409 if(*p == '+') 1410 { 1411 state = 2414982228; ++p; 1412 } 1413 else if(*p == 'e') 1414 { 1415 state = 3268769598; ++p; 1416 } 1417 else if(*p == '#') 1418 { 1419 state = 1818848268; ++p; 1420 } 1421 else if(*p == 'S') 1422 { 1423 state = 2763154882; ++p; 1424 } 1425 else if(*p == '@') 1426 { 1427 state = 1746586473; ++p; 1428 } 1429 else return 0; 1430 break; 1431 } 1432 case 2492710957: 1433 { 1434 if(*p == 'X') 1435 { 1436 state = 3148306748; ++p; 1437 } 1438 else if(*p == 'X') 1439 { 1440 state = 1097742315; ++p; 1441 } 1442 else if(*p == 'O') 1443 { 1444 state = 2011019626; ++p; 1445 } 1446 else return 0; 1447 break; 1448 } 1449 case 3608599948: 1450 { 1451 if(*p == '-') 1452 { 1453 state = 609520033; ++p; 1454 } 1455 else if(*p == 'a') 1456 { 1457 state = 3608599948; ++p; 1458 } 1459 else if(*p == ']') 1460 { 1461 state = 2056998787; ++p; 1462 } 1463 else if(*p == 'I') 1464 { 1465 state = 2384119878; ++p; 1466 } 1467 else return 0; 1468 break; 1469 } 1470 case 3335559999: 1471 { 1472 if(*p == 'V') 1473 { 1474 state = 101229758; ++p; 1475 } 1476 else if(*p == 'e') 1477 { 1478 state = 155012291; ++p; 1479 } 1480 else if(*p == ',') 1481 { 1482 state = 3268769598; ++p; 1483 } 1484 else if(*p == '@') 1485 { 1486 state = 1097742315; ++p; 1487 } 1488 else if(*p == '1') 1489 { 1490 state = 2056998787; ++p; 1491 } 1492 else if(*p == 'P') 1493 { 1494 state = 1384595292; ++p; 1495 } 1496 else if(*p == '-') 1497 { 1498 state = 2934937715; ++p; 1499 } 1500 else if(*p == ')') 1501 { 1502 state = 1190742721; ++p; 1503 } 1504 else if(*p == '?') 1505 { 1506 state = 1239897561; ++p; 1507 } 1508 else return 0; 1509 break; 1510 } 1511 case 1818848268: 1512 { 1513 if(*p == '6') 1514 { 1515 state = 957033642; ++p; 1516 } 1517 else if(*p == 'g') 1518 { 1519 state = 3410901078; ++p; 1520 } 1521 else if(*p == '\x0c') 1522 { 1523 state = 1746586473; ++p; 1524 } 1525 else if(*p == 'f') 1526 { 1527 state = 609520033; ++p; 1528 } 1529 else if(*p == '\n') 1530 { 1531 state = 295606295; ++p; 1532 } 1533 else if(*p == 'r') 1534 { 1535 state = 2384119878; ++p; 1536 } 1537 else return 0; 1538 break; 1539 } 1540 case 2241134315: 1541 { 1542 if(*p == ':') 1543 { 1544 state = 3608599948; ++p; 1545 } 1546 else if(*p == 'S') 1547 { 1548 state = 3148306748; ++p; 1549 } 1550 else if(*p == '[') 1551 { 1552 state = 3335559999; ++p; 1553 } 1554 else if(*p == '\t') 1555 { 1556 state = 953204336; ++p; 1557 } 1558 else if(*p == 'X') 1559 { 1560 state = 3410901078; ++p; 1561 } 1562 else return 0; 1563 break; 1564 } 1565 case 2349573380: 1566 { 1567 if(*p == '0') 1568 { 1569 state = 101229758; ++p; 1570 } 1571 else if(*p == ':') 1572 { 1573 state = 957033642; ++p; 1574 } 1575 else if(*p == 'Z') 1576 { 1577 state = 957033642; ++p; 1578 } 1579 else if(*p == ' ') 1580 { 1581 state = 1239897561; ++p; 1582 } 1583 else if(*p == 'i') 1584 { 1585 state = 1239897561; ++p; 1586 } 1587 else return 0; 1588 break; 1589 } 1590 case 1331020175: 1591 { 1592 if(*p == 'B') 1593 { 1594 state = 2384119878; ++p; 1595 } 1596 else if(*p == '"') 1597 { 1598 state = 2242283503; ++p; 1599 } 1600 else if(*p == '#') 1601 { 1602 state = 3786799564; ++p; 1603 } 1604 else if(*p == '(') 1605 { 1606 state = 1057073555; ++p; 1607 } 1608 else if(*p == 'F') 1609 { 1610 state = 2242283503; ++p; 1611 } 1612 else if(*p == 'n') 1613 { 1614 state = 155012291; ++p; 1615 } 1616 else if(*p == 'j') 1617 { 1618 state = 2460767789; ++p; 1619 } 1620 else if(*p == '^') 1621 { 1622 state = 1611919523; ++p; 1623 } 1624 else if(*p == 'J') 1625 { 1626 state = 1746586473; ++p; 1627 } 1628 else return 0; 1629 break; 1630 } 1631 case 1515485535: 1632 { 1633 if(*p == 'r') 1634 { 1635 state = 1611919523; ++p; 1636 } 1637 else if(*p == '.') 1638 { 1639 state = 1384595292; ++p; 1640 } 1641 else if(*p == 'M') 1642 { 1643 state = 2011019626; ++p; 1644 } 1645 else if(*p == '%') 1646 { 1647 state = 776990946; ++p; 1648 } 1649 else return 0; 1650 break; 1651 } 1652 case 4267076867: 1653 { 1654 if(*p == '\r') 1655 { 1656 state = 2056998787; ++p; 1657 } 1658 else if(*p == ')') 1659 { 1660 state = 1746586473; ++p; 1661 } 1662 else if(*p == 'q') 1663 { 1664 state = 2242283503; ++p; 1665 } 1666 else if(*p == 'p') 1667 { 1668 state = 609520033; ++p; 1669 } 1670 else return 0; 1671 break; 1672 } 1673 } 1674 } 1675 return 0; 1676 } 1677 main(int argc,char * argv[])1678int main(int argc, char *argv[]) 1679 { 1680 if(argc != 2) 1681 { 1682 printf("./fsm <string>\n"); 1683 return 0; 1684 } 1685 1686 if(checkinput(argv[1])) 1687 printf("Good boy.\n"); 1688 else 1689 printf("Bad boy.\n"); 1690 1691 return 1; 1692 } 1693