text: /* This program parses a commandline argument.
   *
   * Compile with :
   *   $ gcc -static -Os arguments.c -o arguments
   *
   * Analyze it with:
   *   $ manticore arguments ++++++++++
   *
   *   - Note that the character + will be replaced by a symbolic byte
   *     representing all possible bytes (except \x00)
   *     The length of the argument is important as it wont allow \x00
   *     in the middle of the argument
   * 
   * Expected output:
   *  $ manticore  arguments +++++++++
   *  2017-04-21 17:12:01,241: [4783] MAIN:INFO: Loading program: ['arguments', '+++++++++']
   *  2017-04-21 17:12:01,242: [4783] MAIN:INFO: Workspace: ./mcore_dG3b5O
   *  2017-04-21 17:12:34,130: [4835][3] EXECUTOR:INFO: Generating testcase No. 1 for state No.3 - Program finished correctly
   *  2017-04-21 17:12:48,745: [4840][11] EXECUTOR:INFO: Generating testcase No. 2 for state No.11 - Program finished correctly
   *  2017-04-21 17:13:00,509: [4840][17] EXECUTOR:INFO: Generating testcase No. 3 for state No.17 - Program finished correctly
   *  2017-04-21 17:13:10,748: [4833][21] EXECUTOR:INFO: Generating testcase No. 4 for state No.21 - Program finished correctly
   *  2017-04-21 17:13:20,580: [4833][29] EXECUTOR:INFO: Generating testcase No. 5 for state No.29 - Program finished correctly
   *  2017-04-21 17:13:28,560: [4834][33] EXECUTOR:INFO: Generating testcase No. 6 for state No.33 - Program finished correctly
   *  2017-04-21 17:13:38,583: [4838][41] EXECUTOR:INFO: Generating testcase No. 7 for state No.41 - Program finished correctly
   *  2017-04-21 17:13:47,878: [4840][47] EXECUTOR:INFO: Generating testcase No. 8 for state No.47 - Program finished correctly
   *  2017-04-21 17:13:52,500: [4835][53] EXECUTOR:INFO: Generating testcase No. 9 for state No.53 - Program finished correctly
   *  2017-04-21 17:13:52,988: [4840][51] EXECUTOR:INFO: Generating testcase No. 10 for state No.51 - Program finished correctly
   *
   *  Look at ./mcore_dG3b5O for results, you will find something like this:
   *  command.sh                  #The original command line
   *  test_00000001.messages      #A txt file with cpu and memory state 
   *  test_00000001.smt           #The smtlib description of the path constraint leading here
   *  test_00000001.stderr        #stderr output of the program
   *  test_00000001.stdin         #stdin an example stdin input 
   *  test_00000001.stdout        #stdout output of the program
   *  test_00000001.syscalls      #The trace of IO syscalls
   *  test_00000001.trace         #The list of visited instructions
   *  test_00000001.txt           #A solution to all symbolic variables used. (Includes ARGV/ENVP)
   * 
   * $ cat t*txt |grep ARGV
   * ARGV1_1: '\x01\x01\x01\x01\x01\x01\x01\x01\x01'
   * ARGV1_1: '-\x01\x01\x01\x01\x01\x01\x01\x01'
   * ARGV1_1: '--\x01\x01\x01\x01\x01\x01\x01'
   * ARGV1_1: '--d\x01\x01\x01\x01\x01\x01'
   * ARGV1_1: '--do\x01\x01\x01\x01\x01'
   * ARGV1_1: '--dos\x01\x01\x01\x01'
   * ARGV1_1: '--dost\x01\x01\x01'
   * ARGV1_1: '--dostu\x01\x01'
   * ARGV1_1: '--dostuff'
   * ARGV1_1: '--dostuf\x01'
   *
  */
  
  #include <stdio.h>
  #include <string.h>
  
  
  int main(int argc, char* argv[], char* envp[]){
      int i;
      
      printf("Got %d arguments.\n", argc);
      if(argc > 1){
          if (!strcmp(argv[1], "--dostuff")){
              printf ("Do stuff!\n");
  	    return 1;
  	    }
      }
          
  printf ("Don't do anything!\n");
  return 0;
  }
  
  
  