#if 0
	shc Version 4.0.3, Generic Shell Script Compiler
	GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>

	shc -r -f installer -o installer 
#endif

static  char data [] = 
#define      msg1_z	65
#define      msg1	((&data[7]))
	"\210\024\202\176\031\203\232\031\211\302\067\343\274\360\143\251"
	"\104\042\250\135\222\123\144\273\070\021\014\076\116\161\222\061"
	"\333\341\352\177\173\261\276\133\357\143\014\215\127\254\250\246"
	"\136\032\046\115\205\352\226\007\017\031\143\044\216\065\301\007"
	"\142\266\066\234\357\344\076\005\000\340\164\242\332\313\074\167"
	"\064\243\116\172\167"
#define      xecc_z	15
#define      xecc	((&data[87]))
	"\317\252\033\341\113\360\300\345\001\366\114\067\051\327\125\256"
	"\305\050\150\310"
#define      shll_z	10
#define      shll	((&data[107]))
	"\304\354\071\240\202\050\363\333\257\061\124\171\021"
#define      inlo_z	3
#define      inlo	((&data[118]))
	"\333\255\361"
#define      tst2_z	19
#define      tst2	((&data[121]))
	"\307\174\147\232\110\025\140\330\200\043\221\156\217\244\201\105"
	"\073\133\152\122\247"
#define      lsto_z	1
#define      lsto	((&data[142]))
	"\063"
#define      opts_z	1
#define      opts	((&data[143]))
	"\340"
#define      date_z	1
#define      date	((&data[144]))
	"\321"
#define      tst1_z	22
#define      tst1	((&data[147]))
	"\100\011\312\174\073\246\264\231\002\134\322\216\022\225\261\051"
	"\324\067\167\143\104\257\045\261\036\251\322\132\201"
#define      chk1_z	22
#define      chk1	((&data[174]))
	"\023\261\330\371\142\216\234\015\046\065\040\257\161\074\145\337"
	"\035\202\350\046\347\315\164\142"
#define      msg2_z	19
#define      msg2	((&data[198]))
	"\045\377\371\241\353\276\207\303\031\235\012\172\172\151\344\155"
	"\265\172\357\167"
#define      rlax_z	1
#define      rlax	((&data[218]))
	"\337"
#define      text_z	5350
#define      text	((&data[1137]))
	"\230\001\212\256\315\210\040\054\176\141\066\235\013\011\367\214"
	"\153\026\372\337\170\155\350\271\344\150\113\003\067\373\006\317"
	"\374\220\176\311\031\237\366\230\000\055\065\013\066\055\230\241"
	"\103\222\201\274\377\151\165\344\321\301\350\011\274\357\331\271"
	"\200\127\203\232\366\171\062\367\246\150\002\335\225\233\177\331"
	"\055\000\225\055\151\013\022\073\314\372\105\211\352\036\102\152"
	"\166\306\004\155\077\067\144\346\237\147\303\065\002\103\016\060"
	"\103\244\136\254\257\160\350\174\153\055\005\125\113\110\277\302"
	"\016\304\057\116\374\223\064\233\373\370\321\376\073\337\057\177"
	"\203\215\053\062\376\024\257\151\101\264\276\215\375\176\117\014"
	"\103\177\132\077\022\217\333\016\210\254\014\304\213\073\103\017"
	"\311\156\102\307\203\361\061\305\245\360\122\243\157\242\257\262"
	"\041\011\362\064\231\315\103\041\171\117\345\005\213\050\024\125"
	"\227\126\035\032\110\116\337\355\077\062\221\256\325\100\140\366"
	"\112\123\053\343\040\156\005\232\276\352\240\112\022\264\240\251"
	"\013\275\304\123\014\244\101\113\326\323\371\253\023\132\242\136"
	"\255\316\102\316\074\107\150\373\061\010\106\104\275\346\356\311"
	"\243\262\035\260\126\137\373\055\062\364\331\105\117\173\244\375"
	"\111\346\313\206\055\064\202\137\074\310\243\372\257\221\304\123"
	"\104\341\003\233\100\376\310\162\363\241\270\103\035\135\100\147"
	"\103\013\356\161\077\160\321\174\071\165\167\350\007\073\073\113"
	"\035\076\347\135\075\257\320\060\121\211\163\157\346\263\326\052"
	"\277\304\234\376\065\156\173\156\343\362\126\352\055\222\066\113"
	"\320\036\250\016\316\171\077\037\002\262\216\351\146\145\024\046"
	"\052\261\045\137\037\240\315\003\223\044\356\301\266\045\014\207"
	"\103\264\225\021\056\325\061\061\210\300\033\357\045\057\025\117"
	"\341\072\257\000\333\174\004\156\241\362\057\127\027\073\337\132"
	"\360\165\154\037\112\235\120\322\135\153\301\203\233\327\323\174"
	"\021\202\175\354\376\201\133\240\164\212\367\213\306\327\346\266"
	"\115\122\326\227\360\046\152\116\222\054\321\055\003\244\252\024"
	"\047\050\001\046\252\134\306\036\347\276\251\255\225\220\144\342"
	"\343\072\172\323\141\344\041\363\020\363\041\023\230\313\050\277"
	"\364\051\345\236\206\253\274\155\151\146\033\377\366\177\342\331"
	"\272\134\255\033\101\317\017\122\303\060\146\133\374\216\033\360"
	"\270\000\216\077\254\112\254\026\261\310\026\247\110\370\201\002"
	"\125\057\036\226\376\055\351\301\136\117\035\132\336\070\112\226"
	"\071\331\326\345\044\202\373\325\113\021\174\223\012\376\226\137"
	"\055\265\366\054\342\340\356\100\057\013\233\016\104\346\244\175"
	"\277\173\143\343\376\137\270\111\160\065\334\173\064\163\333\141"
	"\050\321\216\013\261\174\114\341\210\347\357\315\315\224\113\214"
	"\017\256\160\015\015\051\127\176\137\063\371\223\247\324\365\317"
	"\246\203\332\130\000\046\072\211\015\051\127\333\276\242\150\316"
	"\120\331\334\135\002\063\333\141\147\324\365\016\251\352\335\117"
	"\156\270\250\157\336\342\370\354\014\117\307\312\361\060\231\102"
	"\011\165\237\014\250\173\155\017\120\143\035\371\115\373\111\274"
	"\263\361\053\221\324\043\176\340\163\106\253\145\166\104\247\200"
	"\271\107\214\141\302\372\161\022\135\216\014\253\212\125\147\075"
	"\107\222\317\033\266\115\374\052\223\247\217\012\354\067\212\245"
	"\176\026\007\100\020\170\123\155\007\137\030\221\264\200\316\374"
	"\022\235\030\311\353\024\363\177\274\202\211\250\271\023\115\070"
	"\052\125\170\072\316\313\250\325\052\301\147\337\101\066\333\124"
	"\324\364\035\277\010\020\076\305\222\307\155\114\333\273\204\005"
	"\020\375\100\337\311\350\264\364\251\034\324\353\122\260\077\046"
	"\244\134\346\255\154\044\162\377\354\337\113\310\233\320\316\254"
	"\316\016\213\230\366\100\215\240\134\141\213\256\021\312\325\266"
	"\047\273\143\223\340\325\222\315\265\336\226\121\257\144\375\176"
	"\162\211\027\151\311\244\012\046\006\226\324\030\141\252\316\210"
	"\146\062\033\106\010\256\064\207\067\111\107\211\377\130\275\234"
	"\172\162\266\003\306\207\067\302\110\221\157\371\315\326\372\302"
	"\102\370\126\365\055\054\202\055\174\225\267\262\002\147\020\036"
	"\304\301\126\327\022\133\001\111\260\235\066\152\216\364\332\315"
	"\013\306\072\104\342\243\374\222\122\205\205\244\337\015\167\142"
	"\321\167\270\126\012\161\077\053\047\136\135\341\300\242\307\310"
	"\155\055\070\251\246\236\072\010\122\357\205\223\250\266\121\236"
	"\133\030\055\367\013\107\321\265\274\071\354\354\016\151\360\056"
	"\075\301\174\106\354\240\014\121\170\126\217\125\274\353\242\064"
	"\120\215\162\266\216\307\111\333\257\323\176\212\242\332\143\113"
	"\213\242\306\132\070\356\061\274\210\144\371\007\332\326\313\112"
	"\042\332\230\123\347\355\250\316\240\011\046\125\027\133\272\017"
	"\243\035\327\266\106\041\312\251\266\140\202\046\161\030\370\377"
	"\341\371\156\251\116\362\064\250\207\100\377\007\265\370\331\143"
	"\250\364\043\025\014\123\317\036\030\163\211\224\353\013\230\214"
	"\042\005\211\367\345\273\220\077\114\157\222\010\350\041\237\205"
	"\376\272\336\210\312\111\353\350\036\313\062\103\013\235\331\131"
	"\363\277\163\124\170\267\233\276\264\152\102\164\237\211\304\141"
	"\060\313\204\164\201\006\051\272\230\224\025\304\024\147\212\076"
	"\153\071\045\226\167\160\120\171\332\201\241\244\044\114\154\314"
	"\002\134\014\323\220\217\325\366\340\312\031\224\047\041\252\167"
	"\044\145\245\143\111\370\106\142\125\111\040\112\333\327\370\106"
	"\213\340\245\332\036\316\107\045\107\054\214\105\040\006\244\371"
	"\342\230\231\353\363\172\211\213\122\244\170\047\016\247\244\137"
	"\012\215\252\270\311\010\146\171\262\157\211\201\357\031\311\322"
	"\053\132\102\053\040\341\310\043\033\306\113\223\302\275\010\320"
	"\335\153\362\217\333\165\162\307\244\320\234\364\043\360\061\356"
	"\107\107\022\151\255\146\111\061\113\306\345\100\011\021\100\027"
	"\142\141\064\371\255\224\375\207\165\335\036\377\305\322\014\365"
	"\076\135\227\055\000\170\330\023\272\204\127\174\050\072\210\362"
	"\217\162\243\323\200\173\255\272\204\276\251\044\056\265\035\027"
	"\325\150\205\327\043\212\352\153\022\125\323\273\146\267\232\235"
	"\363\260\217\241\125\355\301\367\263\242\070\145\202\314\012\030"
	"\307\064\346\226\054\135\171\227\366\231\151\321\072\151\370\000"
	"\377\360\276\043\154\174\211\321\105\031\306\021\075\014\134\237"
	"\142\232\346\064\324\101\166\070\327\332\234\040\257\037\262\101"
	"\222\171\053\064\070\353\163\225\134\374\056\346\233\341\263\333"
	"\310\132\130\274\220\127\213\215\332\232\101\241\307\145\235\201"
	"\365\010\315\147\340\271\252\323\106\024\322\102\024\324\127\160"
	"\036\045\240\375\363\230\341\001\155\066\127\155\245\155\235\256"
	"\100\006\313\044\023\020\047\000\213\022\120\020\343\020\006\325"
	"\056\325\134\221\352\051\023\214\266\177\044\211\227\334\010\211"
	"\000\007\140\237\250\034\126\325\166\031\113\151\357\003\051\216"
	"\235\220\307\277\110\055\110\117\234\132\041\361\152\155\072\145"
	"\030\276\170\050\204\215\363\073\125\037\371\356\011\317\174\135"
	"\170\003\066\301\140\231\345\271\150\171\062\374\032\202\043\012"
	"\205\153\063\235\121\353\352\176\177\217\252\263\270\247\260\253"
	"\305\270\063\115\117\245\132\246\010\304\326\033\352\265\267\161"
	"\231\031\354\175\140\354\234\177\317\223\366\106\215\153\172\240"
	"\112\060\026\261\326\353\001\265\112\112\063\357\013\202\321\214"
	"\146\134\376\235\115\130\145\113\110\245\173\205\107\363\336\157"
	"\113\074\305\064\074\104\066\133\154\175\013\234\163\235\305\144"
	"\123\351\235\360\237\376\231\153\217\020\135\314\114\174\361\141"
	"\163\322\004\250\024\045\325\276\135\205\360\364\310\354\305\251"
	"\157\317\350\010\321\220\200\352\122\213\167\340\161\266\273\151"
	"\022\204\325\372\324\225\317\007\126\003\121\200\312\042\147\225"
	"\130\050\043\154\335\215\301\254\202\156\027\350\106\323\317\034"
	"\205\231\141\242\221\152\144\360\201\217\247\357\261\311\074\024"
	"\271\033\223\157\272\252\122\042\055\326\326\346\073\223\117\177"
	"\246\101\167\153\335\054\124\245\045\322\033\264\350\030\055\333"
	"\350\175\123\171\366\074\327\252\135\035\116\137\200\055\125\307"
	"\327\373\364\062\266\305\100\154\044\320\162\353\340\057\024\022"
	"\164\245\242\247\002\061\120\302\177\233\203\164\065\201\025\234"
	"\027\273\175\111\157\120\116\210\022\274\370\372\000\140\234\253"
	"\165\371\347\366\170\200\034\257\135\310\131\157\115\016\026\153"
	"\254\257\236\344\255\013\030\146\026\306\166\341\110\337\003\352"
	"\155\351\040\043\376\155\264\071\302\151\005\106\116\360\304\341"
	"\300\254\104\375\363\204\223\125\221\114\134\350\133\236\361\241"
	"\226\021\105\250\226\011\312\122\043\365\077\106\352\246\162\310"
	"\064\356\334\162\071\323\225\012\062\073\062\364\126\265\177\356"
	"\272\034\036\104\214\041\220\236\220\255\305\037\303\061\207\327"
	"\303\126\356\014\023\135\077\252\256\126\302\264\220\210\221\252"
	"\015\203\020\350\333\140\366\330\202\030\301\224\014\225\141\173"
	"\307\342\375\240\076\040\314\345\335\252\074\065\342\347\043\135"
	"\324\373\347\261\372\321\240\346\060\363\007\374\156\111\005\074"
	"\120\331\321\100\031\045\143\212\250\276\072\330\105\007\107\242"
	"\136\120\362\166\326\226\323\254\144\271\251\024\152\250\064\034"
	"\057\335\225\164\104\024\255\051\244\261\116\006\070\032\214\102"
	"\052\047\320\026\235\223\262\146\150\000\351\151\377\375\007\144"
	"\217\253\310\150\171\010\353\254\146\326\025\270\301\324\352\306"
	"\323\324\064\354\037\010\143\071\234\142\044\001\262\121\133\347"
	"\002\041\265\375\056\137\025\147\067\273\011\364\060\361\071\270"
	"\206\252\355\025\040\247\037\270\302\107\015\172\226\332\214\256"
	"\226\034\331\214\162\256\057\216\032\334\131\362\232\273\351\270"
	"\350\226\106\206\367\355\342\303\202\034\264\071\216\133\240\165"
	"\272\253\251\111\210\066\205\270\222\100\236\343\006\146\303\215"
	"\236\341\365\176\054\244\333\145\015\172\151\371\203\165\205\311"
	"\065\000\215\313\147\120\111\162\005\144\376\270\022\333\100\032"
	"\134\007\345\221\211\034\337\304\032\336\103\326\256\246\342\353"
	"\361\215\346\364\113\055\146\030\050\372\064\030\172\274\321\130"
	"\234\342\031\277\277\217\067\362\274\024\102\030\061\161\074\265"
	"\051\314\374\032\213\113\114\054\307\224\250\132\220\337\234\124"
	"\330\126\040\271\305\143\206\175\320\244\362\276\271\263\143\257"
	"\124\344\265\057\010\021\100\325\216\251\346\207\131\316\122\212"
	"\166\154\173\124\143\221\163\374\272\245\336\256\174\121\203\311"
	"\040\257\301\115\133\361\027\046\364\275\155\011\137\055\222\274"
	"\141\067\152\230\140\022\150\372\332\002\006\216\370\036\140\275"
	"\056\356\072\136\025\361\311\343\022\234\033\363\315\170\237\146"
	"\225\167\324\355\266\124\230\256\266\245\067\210\201\334\036\300"
	"\263\102\035\307\273\017\214\247\337\166\027\174\323\174\023\172"
	"\064\102\207\107\123\370\271\217\231\212\052\330\337\236\150\004"
	"\103\302\301\360\317\337\337\115\002\340\114\154\121\124\240\141"
	"\163\354\304\225\253\274\024\117\145\273\255\030\124\123\302\344"
	"\372\055\127\220\074\251\127\071\071\171\152\051\050\136\330\244"
	"\271\052\214\057\176\076\110\213\350\376\114\137\211\263\103\341"
	"\016\013\170\066\033\051\347\171\354\146\026\061\040\253\201\221"
	"\214\172\144\305\264\277\166\127\304\102\116\377\333\304\213\313"
	"\055\034\157\220\200\220\374\136\341\023\163\316\207\265\101\174"
	"\317\061\172\236\237\155\260\144\306\257\151\210\307\135\302\312"
	"\253\144\020\142\323\331\135\040\105\265\042\127\171\144\130\211"
	"\332\253\205\170\062\252\126\267\103\167\075\040\326\366\323\272"
	"\272\245\103\011\142\232\241\075\216\346\210\367\017\350\217\131"
	"\272\106\216\306\034\250\124\221\306\002\001\055\175\355\314\255"
	"\375\211\236\376\254\112\207\052\270\137\142\145\072\034\330\153"
	"\076\076\367\223\315\230\041\163\003\003\260\237\170\035\166\116"
	"\256\004\172\246\162\241\302\157\356\311\254\004\342\335\326\327"
	"\330\367\355\241\224\122\012\305\105\041\064\113\077\363\274\122"
	"\210\316\057\262\054\076\041\361\062\314\023\021\127\053\032\224"
	"\326\266\356\321\366\120\351\264\314\351\016\165\063\041\276\121"
	"\141\131\136\177\211\312\350\240\336\060\102\126\143\047\242\174"
	"\231\336\176\066\152\235\162\225\206\325\124\327\320\247\120\245"
	"\330\157\030\042\351\363\272\111\012\204\331\102\332\222\221\237"
	"\074\177\365\147\054\124\216\154\040\114\100\346\241\371\255\114"
	"\232\313\053\305\142\327\015\154\262\131\263\375\070\335\322\204"
	"\227\244\174\056\342\327\124\363\323\310\210\236\115\042\044\154"
	"\052\130\123\347\213\240\123\015\325\271\025\325\055\174\131\243"
	"\300\240\126\152\171\035\003\351\257\113\267\234\234\306\250\163"
	"\122\210\051\354\317\226\370\013\167\301\307\300\103\141\215\163"
	"\313\345\153\011\001\065\054\230\141\333\165\171\320\271\271\232"
	"\277\272\116\037\376\044\351\336\030\343\022\300\312\305\332\131"
	"\040\172\163\134\341\237\234\001\004\103\001\125\325\342\121\344"
	"\357\232\056\077\173\027\351\300\237\066\033\021\257\161\172\307"
	"\311\313\074\020\054\077\006\275\273\105\061\030\025\257\232\321"
	"\361\040\253\150\173\166\160\013\105\006\365\146\121\041\133\342"
	"\352\252\362\046\314\140\132\161\144\050\157\014\031\225\352\314"
	"\066\267\277\204\222\100\012\151\100\256\343\316\364\210\325\203"
	"\003\074\162\375\154\325\000\216\311\065\144\230\130\263\117\235"
	"\261\062\305\171\213\057\276\343\222\175\106\157\216\106\100\044"
	"\132\262\103\300\170\120\114\251\205\275\032\365\114\330\043\334"
	"\245\232\241\273\056\352\025\026\270\232\275\115\072\074\060\212"
	"\067\153\203\140\264\255\306\077\073\240\277\321\011\056\267\175"
	"\251\204\167\215\216\303\061\021\120\163\247\301\320\345\246\064"
	"\364\365\313\252\161\301\034\023\100\142\267\354\175\056\375\356"
	"\303\236\046\353\321\153\210\153\103\306\050\163\372\113\364\305"
	"\144\173\020\230\255\133\371\353\313\207\121\240\101\374\236\377"
	"\216\377\257\074\343\371\343\277\041\006\040\034\302\316\010\307"
	"\105\255\130\105\240\033\255\250\247\052\067\121\371\255\331\244"
	"\362\077\156\270\241\203\360\067\146\210\310\115\214\370\255\227"
	"\225\107\230\267\303\245\265\363\033\170\337\176\221\326\041\340"
	"\126\030\157\356\242\016\215\051\374\312\214\043\254\363\165\022"
	"\040\044\151\206\343\340\274\250\223\016\124\160\071\307\077\212"
	"\006\232\142\340\204\244\065\362\060\227\006\230\324\252\306\244"
	"\366\220\352\034\245\254\332\212\064\114\005\242\234\246\074\017"
	"\173\313\230\216\106\206\112\002\014\274\147\030\017\324\143\244"
	"\136\067\231\342\267\201\076\327\245\053\337\033\223\151\136\331"
	"\025\137\045\050\265\176\107\005\224\254\257\004\063\063\016\221"
	"\245\367\167\012\103\103\044\141\365\015\105\320\376\340\057\345"
	"\064\373\307\215\065\123\272\007\244\126\133\276\275\224\042\160"
	"\103\103\200\156\312\211\354\016\336\357\322\177\112\017\343\044"
	"\041\047\061\370\332\307\076\330\116\025\371\077\140\067\075\335"
	"\206\120\002\057\365\214\310\162\355\165\050\157\147\120\137\256"
	"\064\327\164\123\147\133\337\343\116\111\216\356\054\207\015\263"
	"\260\125\276\353\067\265\026\111\217\103\143\036\316\025\003\312"
	"\240\315\056\232\315\135\321\307\232\030\103\312\145\207\356\332"
	"\267\053\102\373\156\043\077\237\023\223\365\126\015\252\113\102"
	"\051\275\031\325\067\366\222\076\120\070\205\374\362\262\067\235"
	"\043\265\364\302\137\150\054\227\053\375\145\100\120\255\150\356"
	"\152\031\322\115\104\105\243\050\024\103\256\077\067\007\266\002"
	"\333\026\172\044\201\337\211\325\102\267\315\205\172\336\062\166"
	"\223\271\156\201\261\216\211\323\120\102\127\157\257\356\101\232"
	"\055\332\022\252\243\151\051\237\052\003\314\134\003\377\103\062"
	"\364\144\371\030\171\167\231\373\305\225\315\126\013\334\206\032"
	"\211\235\303\034\210\221\376\232\013\324\217\367\144\066\322\207"
	"\171\027\022\175\261\157\340\131\153\124\042\231\206\207\365\116"
	"\016\021\321\146\365\147\115\145\025\025\110\305\373\310\367\061"
	"\151\214\263\360\224\053\116\161\022\206\064\050\211\372\306\024"
	"\036\063\367\155\235\226\147\126\003\050\347\376\110\327\226\235"
	"\316\277\077\040\264\201\354\063\053\360\260\032\337\027\120\256"
	"\022\336\004\146\106\227\160\250\057\262\122\122\173\215\052\067"
	"\107\252\165\210\361\272\360\234\234\355\160\212\306\267\271\171"
	"\021\020\334\112\132\064\334\055\055\365\255\022\056\166\337\000"
	"\324\021\370\073\026\017\055\241\160\077\053\131\034\366\015\116"
	"\204\117\223\202\166\143\170\054\247\145\074\116\374\233\334\366"
	"\270\206\067\267\357\265\045\317\264\354\364\042\331\232\002\111"
	"\103\202\330\316\004\352\373\126\234\340\320\265\024\062\115\372"
	"\003\337\136\170\252\052\167\377\272\071\141\166\154\355\223\034"
	"\306\014\106\330\325\310\014\216\342\103\252\377\251\020\011\273"
	"\355\153\067\116\106\233\347\002\117\235\076\167\317\246\037\322"
	"\047\274\336\211\327\156\261\131\065\057\356\256\034\365\232\103"
	"\217\256\256\013\227\135\303\076\013\220\122\220\105\040\316\000"
	"\177\213\145\040\310\217\240\106\221\216\070\123\304\267\046\277"
	"\025\235\174\204\266\146\062\004\236\256\171\367\255\074\215\376"
	"\315\362\346\361\141\131\344\051\322\111\030\043\214\261\376\032"
	"\144\116\354\014\356\323\363\333\307\106\143\265\102\303\114\252"
	"\052\255\274\031\055\235\062\027\044\265\164\065\050\071\327\171"
	"\063\321\347\246\133\204\054\057\270\225\075\252\375\053\102\263"
	"\106\161\361\264\222\300\357\341\200\300\340\216\110\304\357\137"
	"\316\101\312\116\361\025\324\364\260\152\112\101\323\017\125\240"
	"\141\143\025\020\220\017\221\050\206\355\172\270\172\036\111\125"
	"\376\101\166\272\177\126\161\157\065\017\160\370\126\241\054\220"
	"\254\246\360\027\206\325\235\032\137\207\214\353\162\135\055\045"
	"\200\276\154\167\115\264\056\106\136\120\075\312\172\004\123\304"
	"\377\050\070\212\202\363\111\262\027\301\064\212\150\057\130\162"
	"\052\151\110\272\233\316\064\236\232\126\173\254\120\101\324\333"
	"\325\351\356\230\071\157\360\073\155\062\202\066\024\146\343\251"
	"\327\376\354\214\103\300\157\116\131\105\137\305\056\050\152\161"
	"\000\071\124\204\277\051\163\151\210\206\315\046\021\247\061\207"
	"\111\376\152\321\151\060\370\030\162\317\367\216\255\351\330\124"
	"\312\202\177\343\025\147\167\322\176\067\147\123\205\060\114\020"
	"\367\204\134\020\146\043\136\127\304\075\306\172\172\027\052\351"
	"\312\123\145\065\262\152\230\042\170\314\250\336\267\111\222\363"
	"\276\101\372\214\134\120\153\113\130\320\077\366\243\025\037\303"
	"\366\223\245\125\233\117\126\007\235\351\341\017\134\060\211\163"
	"\277\235\153\023\030\000\016\354\120\205\136\164\100\064\271\222"
	"\043\264\323\256\123\172\152\166\050\211\375\235\066\133\056\002"
	"\061\055\010\154\233\365\063\075\124\123\222\367\031\326\030\071"
	"\062\121\356\272\324\034\057\044\366\161\073\207\163\157\017\201"
	"\166\002\262\323\065\165\171\004\333\164\112\316\270\002\164\246"
	"\372\112\171\143\361\326\112\110\013\351\123\067\353\202\156\056"
	"\056\132\235\260\256\363\253\047\147\245\110\356\371\275\274\367"
	"\342\003\213\016\135\004\073\173\106\121\071\356\057\143\372\176"
	"\245\025\350\351\304\233\033\364\141\253\244\041\145\153\313\136"
	"\356\111\340\274\261\344\365\263\155\240\106\210\240\147\014\136"
	"\321\241\231\016\202\252\171\351\301\145\336\265\162\263\051\221"
	"\246\027\230\314\340\314\135\164\153\036\374\020\137\260\353\313"
	"\262\277\274\151\007\225\063\037\267\367\361\200\355\326\270\117"
	"\214\311\213\336\304\211\175\271\226\121\061\063\040\316\033\335"
	"\155\204\254\204\317\165\151\066\213\223\022\206\246\014\072\155"
	"\213\302\377\302\374\171\171\034\242\215\235\273\362\032\015\144"
	"\353\053\032\126\271\332\242\043\042\205\017\056\336\263\361\225"
	"\262\014\372\353\015\370\023\166\130\121\160\306\151\043\072\207"
	"\306\301\142\200\246\332\046\000\365\260\011\371\166\250\234\135"
	"\202\026\025\235\316\115\012\114\154\076\000\226\062\361\071\114"
	"\112\025\372\372\051\030\370\256\275\107\260\062\255\034\045\064"
	"\212\006\254\175\362\152\303\352\146\031\010\035\315\251\176\372"
	"\261\247\100\117\127\246\043\377\325\040\147\172\303\371\075\266"
	"\345\054\172\057\200\026\364\224\167\047\110\066\113\332\070\376"
	"\343\040\265\377\243\130\256\063\340\250\265\143\353\000\140\203"
	"\330\156\121\371\153\002\261\242\167\153\173\372\006\357\064\205"
	"\356\150\134\121\163\310\203\320\350\250\207\234\140\101\076\040"
	"\146\071\335\223\230\330\326\161\370\100\116\262\241\137\231\377"
	"\055\330\312\366\253\033\224\064\347\241\336\117\323\046\115\255"
	"\351\004\313\130\177\041\072\157\164\366\374\024\172\053\310\066"
	"\276\172\116\361\167\050\135\071\157\320\321\245\213\016\150\317"
	"\104\002\117\171\200\166\067\311\127\242\354\075\351\336\250\321"
	"\300\141\206\174\270\147\204\067\314\315\104\310\135\054\207\113"
	"\316\225\021\156\043\307\021\113\112\067\107\353\304\056\046\316"
	"\040\351\146\033\305\356\055\234\047\172\262\202\030\333\317\141"
	"\324\313\174\246\074\122\033\036\373\054\032\122\047\066\251\330"
	"\041\172\302\120\234\102\115\223\075\117\242\102\233\166\114\157"
	"\230\242\245\131\353\150\254\055\233\254\356\003\155\341\163\370"
	"\036\076\221\231\001\164\200\367\353\170\272\012\300\304\104\362"
	"\141\275\141\335\244\357\004\027\265\322\144\016\066\110\110\004"
	"\355\102\067\106\321\070\363\003\170\271\114\014\065\040\140\101"
	"\214\335\170\034\061\344\011\304\377\336\071\050\133\036\245\302"
	"\345\331\225\171\126\326\346\231\072\246\146\326\007\052\173\034"
	"\023\000\164\252\054\126\054\252\245\030\142\113\355\176\363\133"
	"\034\153\015\135\105\021\366\376\044\043\250\055\156\320\300\213"
	"\353\206\144\055\163\276\304\310\240\310\360\146\010\011\360\035"
	"\333\133\107\317\113\042\326\010\007\057\354\262\261\357\233\275"
	"\073\047\317\030\257\263\050\143\112\305\163\075\137\070\307\377"
	"\127\153\010\010\151\043\306\132\017\330\166\246\352\222\362\374"
	"\330\273\357\321\067\066\227\037\077\157\350\300\144\224\041\013"
	"\002\021\257\160\264\116\125\005\262\173\060\053\124\140\276\113"
	"\262\301\306\061\342\171\277\100\226\172\055\344\031\013\363\250"
	"\107\244\037\157\240\331\076\105\246\206\175\366\103\002\347\026"
	"\317\331\024\332\345\227\062\375\122\207\276\305\131\343\356\064"
	"\043\357\045\154\313\203\121\165\035\010\070\233\201\347\220\300"
	"\050\123\365\012\073\055\044\246\057\232\234\243\217\157\354\101"
	"\004\142\226\235\126\253\247\103\156\224\051\271\163\354\362\347"
	"\133\117\015\013\011\377\357\001\345\062\112\051\314\355\176\221"
	"\144\071\327\276\013\276\347\206\006\263\371\113\230\261\160\040"
	"\106\113\311\076\323\105\274\223\232\171\256\230\305\213\361\005"
	"\135\337\171\224\256\005\147\244\141\236\324\332\335\020\342\071"
	"\002\313\271\006\250\124\117\164\015\340\101\202\235\340\216\026"
	"\034\354\344\357\117\073\306\023\002\301\367\051\160\037\306\341"
	"\164\203\142\171\144\144\167\201\143\325\265\044\024\252\130\204"
	"\157\130\101\172\111\352\054\274\243\256\153\241\256\156\063\310"
	"\157\031\074\116\172\117\112\257\227\221\245\340\004\041\111\020"
	"\355\125\014\132\272\014\061\227\125\174\355\012\241\162\101\232"
	"\073\103\321\305\315\251\123\342\153\116\272\102\176\374\105\125"
	"\064\013\342\305\072\124\317\267\054\302\351\041\341\150\345\216"
	"\172\357\000\114\021\054\202\013\240\007\273\223\344\140\004\333"
	"\131\053\342\356\014\117\252\065\360\225\146\046\256\126\207\070"
	"\210\040\235\374\042\311\116\214\271\123\331\214\174\250\042\353"
	"\115\122\061\075\121\255\237\022\147\023\140\155\266\250\234\015"
	"\203\217\102\200\056\072\234\271\035\155\332\061\222\042\147\160"
	"\273\162\325\214\134\273\300\254\241\332\167\047\104\116\300\066"
	"\266\021\371\340\016\203\017\155\342\170\243\111\267\072\365\371"
	"\205\261\211\355\216\340\077\020\121\011\277\102\076\305\051\354"
	"\367\313\130\232\232\270\026\307\165\376\302\343\000\141\160\317"
	"\101\331\370\225\041\170\245\340\150\271\002\213\374\047\222\346"
	"\032\173\322\166\242\114\010\277\243\335\016\263\050\255\161\056"
	"\166\067\057\025\235\233\207\215\252\325\100\361\104\234\105\207"
	"\167\176\230\300\153\365\365\307\040\343\107\314\201\114\236\022"
	"\237\203\376\351\156\227\117\136\200\255\117\266\357\271\346\377"
	"\064\333\350\265\111\231\014\024\043\247\170\331\117\065\352\306"
	"\163\031\124\076\332\205\145\067\030\246\366\156\350\361\343\213"
	"\157\375\330\126\207\175\230\240\350\311\172\130\331\100\222\132"
	"\064\074\264\072\235\312\301\037\147\004\146\177\236\050\271\274"
	"\024\252\362\010\016\014\112\226\034\031\370\333\376\015\033\013"
	"\302\037\044\215\062\163\171\331\137\066\055\241\361\356\173\032"
	"\204\332\331\207\170\055\224\066\066\173\067\025\112\337\037\121"
	"\035\125\310\362\051\066\376\250\353\321\041\341\361\320\121\336"
	"\337\166\200\375\020\217\210\023\132\276\010\232\333\247\255\136"
	"\221\346\366\217\314\201\350\134\303\365\102\256\162\253\111\013"
	"\360\140\247\377\216\243\266\316\231\120\276\333\353\246\071\010"
	"\207\230\161\237\017\214\114\026\332\236\243\250\170\377\214\126"
	"\007\116\115\037\325\057\216\175\077\011\336\010\301\160\314\350"
	"\005\054\275\106\117\106\203\153\167\010\102\072\124\116\357\332"
	"\271\233\371\225\240\046\222\070\267\200\234\101\253\307\260\054"
	"\061\243\261\205\145\130\107\132\345\355\343\151\346\377\033\313"
	"\020\364\301\164\101\106\257\172\163\131\156\134\251\232\074\065"
	"\317\066\045\000\220\177\212\055\364\372\063\110\214\160\276\275"
	"\260\056\020\200\222\151\250\066\173\261\346\101\252\200\063\050"
	"\201\326\010\057\234\021\005\016\235\215\364\347\151\133\225\164"
	"\063\043\027\161\377\040\213\150\005\235\220\134\326\320\237\367"
	"\116\132\127\254\033\223\104\150\241\247\011\037\303\153\377\052"
	"\176\312\245\061\376\056\152\063\076\121\010\177\145\153\310\222"
	"\374\326\244\170\246\146\011\034\376\376\315\140\062\065\132\167"
	"\370\056\267\340\051\357\222\350\332\232\274\052\156\301\143\047"
	"\211\222\115\246\125\165\377\060\167\243\345\131\001\314\063\261"
	"\142\035\101\207\161\251\041\361\146\377\344\041\333\064\313\367"
	"\173\332\102\111\045\065\105\262\242\341\362\034\005\123\341\331"
	"\206\277\004\351\277\170\002\354\115\062\317\350\260\062\207\273"
	"\115\224\273\200\276\047\302\311\136\157\235\333\007\076\357\063"
	"\102\322\336\250\006\314\311\134\051\174\110\221\215\373\337\074"
	"\376\043\222\106\147\311\265\132\153\354\257\236\213\161\341\014"
	"\355\213\100\053\052\116\133\161\143\351\272\235\021\167\332\025"
	"\057\160\055\273\067\162\201\266\311\043\004\010\037\274\322\322"
	"\127\231\142\122\026\322\106\213\062\072\375\151\166\061\026\346"
	"\012\351\300\240\354\356\366\332\364\123\130\032\112\157\310\306"
	"\037\245\353\222\124\174\331\101\262\267\300\170\131\341\175\306"
	"\006\352\160\207\057\363\256\027\173\000\112\322\261\276\360\374"
	"\230\346\367\134\377\353\343\344\166\301\113\273\024\276\215\252"
	"\017\075\017\015\273\201\226\323\353\140\167"
#define      chk2_z	19
#define      chk2	((&data[6504]))
	"\213\133\126\013\031\103\223\345\060\323\135\130\262\334\271\377"
	"\337\106\242\057\023\225\355"
#define      pswd_z	256
#define      pswd	((&data[6550]))
	"\153\226\221\262\236\100\307\134\315\161\153\013\200\171\307\002"
	"\017\232\356\157\022\343\365\217\157\133\255\134\336\041\154\317"
	"\155\372\041\245\211\131\016\135\202\324\042\004\310\052\340\227"
	"\220\040\040\212\267\266\333\137\022\211\273\361\253\047\300\030"
	"\042\342\275\253\074\314\010\277\241\053\303\151\125\244\001\345"
	"\305\041\160\175\330\114\334\352\325\227\333\200\277\234\231\342"
	"\177\127\215\273\044\226\172\305\302\076\056\030\343\060\376\250"
	"\121\156\045\052\273\002\024\220\232\360\021\132\215\252\074\014"
	"\002\312\310\046\141\102\353\043\201\032\073\144\112\071\015\234"
	"\250\063\306\143\065\332\364\320\313\006\052\130\261\146\145\263"
	"\060\055\331\221\160\305\265\362\340\360\126\052\052\143\307\323"
	"\227\215\067\314\150\053\234\063\061\307\214\342\055\362\226\136"
	"\037\157\360\220\065\245\202\025\226\331\100\300\075\007\224\324"
	"\224\313\241\375\366\076\061\050\005\275\013\062\257\241\221\317"
	"\021\201\137\106\046\342\134\274\273\234\175\370\243\021\314\070"
	"\335\155\066\323\253\147\374\260\045\007\343\325\251\164\245\272"
	"\365\004\001\034\347\135\331\242\371\127\232\235\150\146\326\105"
	"\324\014\031\177\164\026\060\231\036\120\045\134\126\211\322\302"
	"\037\143\164\276\244\073\033\162\255\206\175\056\377\105\061\017"
	"\337\037\177\361\003\164"/* End of data[] */;
#define      hide_z	4096
#define SETUID 0	/* Define as 1 to call setuid(0) at start of script */
#define DEBUGEXEC	0	/* Define as 1 to debug execvp calls */
#define TRACEABLE	1	/* Define as 1 to enable ptrace the executable */
#define HARDENING	0	/* Define as 1 to disable ptrace/dump the executable */
#define BUSYBOXON	0	/* Define as 1 to enable work with busybox */

#if HARDENING
static const char * shc_x[] = {
"/*",
" * Copyright 2019 - Intika <intika@librefox.org>",
" * Replace ******** with secret read from fd 21",
" * Also change arguments location of sub commands (sh script commands)",
" * gcc -Wall -fpic -shared -o shc_secret.so shc_secret.c -ldl",
" */",
"",
"#define _GNU_SOURCE /* needed to get RTLD_NEXT defined in dlfcn.h */",
"#define PLACEHOLDER \"********\"",
"#include <dlfcn.h>",
"#include <stdlib.h>",
"#include <string.h>",
"#include <unistd.h>",
"#include <stdio.h>",
"#include <signal.h>",
"",
"static char secret[128000]; //max size",
"typedef int (*pfi)(int, char **, char **);",
"static pfi real_main;",
"",
"// copy argv to new location",
"char **copyargs(int argc, char** argv){",
"    char **newargv = malloc((argc+1)*sizeof(*argv));",
"    char *from,*to;",
"    int i,len;",
"",
"    for(i = 0; i<argc; i++){",
"        from = argv[i];",
"        len = strlen(from)+1;",
"        to = malloc(len);",
"        memcpy(to,from,len);",
"        // zap old argv space",
"        memset(from,'\\0',len);",
"        newargv[i] = to;",
"        argv[i] = 0;",
"    }",
"    newargv[argc] = 0;",
"    return newargv;",
"}",
"",
"static int mymain(int argc, char** argv, char** env) {",
"    //fprintf(stderr, \"Inject main argc = %d\\n\", argc);",
"    return real_main(argc, copyargs(argc,argv), env);",
"}",
"",
"int __libc_start_main(int (*main) (int, char**, char**),",
"                      int argc,",
"                      char **argv,",
"                      void (*init) (void),",
"                      void (*fini)(void),",
"                      void (*rtld_fini)(void),",
"                      void (*stack_end)){",
"    static int (*real___libc_start_main)() = NULL;",
"    int n;",
"",
"    if (!real___libc_start_main) {",
"        real___libc_start_main = dlsym(RTLD_NEXT, \"__libc_start_main\");",
"        if (!real___libc_start_main) abort();",
"    }",
"",
"    n = read(21, secret, sizeof(secret));",
"    if (n > 0) {",
"      int i;",
"",
"    if (secret[n - 1] == '\\n') secret[--n] = '\\0';",
"    for (i = 1; i < argc; i++)",
"        if (strcmp(argv[i], PLACEHOLDER) == 0)",
"          argv[i] = secret;",
"    }",
"",
"    real_main = main;",
"",
"    return real___libc_start_main(mymain, argc, argv, init, fini, rtld_fini, stack_end);",
"}",
"",
0};
#endif /* HARDENING */

/* rtc.c */

#include <sys/stat.h>
#include <sys/types.h>

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

/* 'Alleged RC4' */

static unsigned char stte[256], indx, jndx, kndx;

/*
 * Reset arc4 stte. 
 */
void stte_0(void)
{
	indx = jndx = kndx = 0;
	do {
		stte[indx] = indx;
	} while (++indx);
}

/*
 * Set key. Can be used more than once. 
 */
void key(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		do {
			tmp = stte[indx];
			kndx += tmp;
			kndx += ptr[(int)indx % len];
			stte[indx] = stte[kndx];
			stte[kndx] = tmp;
		} while (++indx);
		ptr += 256;
		len -= 256;
	}
}

/*
 * Crypt data. 
 */
void arc4(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		indx++;
		tmp = stte[indx];
		jndx += tmp;
		stte[indx] = stte[jndx];
		stte[jndx] = tmp;
		tmp += stte[indx];
		*ptr ^= stte[tmp];
		ptr++;
		len--;
	}
}

/* End of ARC4 */

#if HARDENING

#include <sys/ptrace.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/prctl.h>
#define PR_SET_PTRACER 0x59616d61

/* Seccomp Sandboxing Init */
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/prctl.h>
#include <sys/syscall.h>
#include <sys/socket.h>

#include <linux/filter.h>
#include <linux/seccomp.h>
#include <linux/audit.h>

#define ArchField offsetof(struct seccomp_data, arch)

#define Allow(syscall) \
    BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, SYS_##syscall, 0, 1), \
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)

struct sock_filter filter[] = {
    /* validate arch */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, ArchField),
    BPF_JUMP( BPF_JMP+BPF_JEQ+BPF_K, AUDIT_ARCH_X86_64, 1, 0),
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),

    /* load syscall */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, offsetof(struct seccomp_data, nr)),

    /* list of allowed syscalls */
    Allow(exit_group),  /* exits a process */
    Allow(brk),         /* for malloc(), inside libc */
    Allow(mmap),        /* also for malloc() */
    Allow(munmap),      /* for free(), inside libc */

    /* and if we don't match above, die */
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
};
struct sock_fprog filterprog = {
    .len = sizeof(filter)/sizeof(filter[0]),
    .filter = filter
};

/* Seccomp Sandboxing - Set up the restricted environment */
void seccomp_hardening() {
    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
        perror("Could not start seccomp:");
        exit(1);
    }
    if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &filterprog) == -1) {
        perror("Could not start seccomp:");
        exit(1);
    }
} 
/* End Seccomp Sandboxing Init */

void shc_x_file() {
    FILE *fp;
    int line = 0;

    if ((fp = fopen("/tmp/shc_x.c", "w")) == NULL ) {exit(1); exit(1);}
    for (line = 0; shc_x[line]; line++)	fprintf(fp, "%s\n", shc_x[line]);
    fflush(fp);fclose(fp);
}

int make() {
	char * cc, * cflags, * ldflags;
    char cmd[4096];

	cc = getenv("CC");
	if (!cc) cc = "cc";

	sprintf(cmd, "%s %s -o %s %s", cc, "-Wall -fpic -shared", "/tmp/shc_x.so", "/tmp/shc_x.c -ldl");
	if (system(cmd)) {remove("/tmp/shc_x.c"); return -1;}
	remove("/tmp/shc_x.c"); return 0;
}

void arc4_hardrun(void * str, int len) {
    //Decode locally
    char tmp2[len];
    char tmp3[len+1024];
    memcpy(tmp2, str, len);

	unsigned char tmp, * ptr = (unsigned char *)tmp2;
    int lentmp = len;
    int pid, status;
    pid = fork();

    shc_x_file();
    if (make()) {exit(1);}

    setenv("LD_PRELOAD","/tmp/shc_x.so",1);

    if(pid==0) {

        //Start tracing to protect from dump & trace
        if (ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) {
            kill(getpid(), SIGKILL);
            _exit(1);
        }

        //Decode Bash
        while (len > 0) {
            indx++;
            tmp = stte[indx];
            jndx += tmp;
            stte[indx] = stte[jndx];
            stte[jndx] = tmp;
            tmp += stte[indx];
            *ptr ^= stte[tmp];
            ptr++;
            len--;
        }

        //Do the magic
        sprintf(tmp3, "%s %s", "'********' 21<<<", tmp2);

        //Exec bash script //fork execl with 'sh -c'
        system(tmp2);

        //Empty script variable
        memcpy(tmp2, str, lentmp);

        //Clean temp
        remove("/tmp/shc_x.so");

        //Sinal to detach ptrace
        ptrace(PTRACE_DETACH, 0, 0, 0);
        exit(0);
    }
    else {wait(&status);}

    /* Seccomp Sandboxing - Start */
    seccomp_hardening();

    exit(0);
}
#endif /* HARDENING */

/*
 * Key with file invariants. 
 */
int key_with_file(char * file)
{
	struct stat statf[1];
	struct stat control[1];

	if (stat(file, statf) < 0)
		return -1;

	/* Turn on stable fields */
	memset(control, 0, sizeof(control));
	control->st_ino = statf->st_ino;
	control->st_dev = statf->st_dev;
	control->st_rdev = statf->st_rdev;
	control->st_uid = statf->st_uid;
	control->st_gid = statf->st_gid;
	control->st_size = statf->st_size;
	control->st_mtime = statf->st_mtime;
	control->st_ctime = statf->st_ctime;
	key(control, sizeof(control));
	return 0;
}

#if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv)
{
	int i;
	fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
	fprintf(stderr, "argc=%d\n", argc);
	if (!argv) {
		fprintf(stderr, "argv=<null>\n");
	} else { 
		for (i = 0; i <= argc ; i++)
			fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
	}
}
#endif /* DEBUGEXEC */

void rmarg(char ** argv, char * arg)
{
	for (; argv && *argv && *argv != arg; argv++);
	for (; argv && *argv; argv++)
		*argv = argv[1];
}

void chkenv_end(void);

int chkenv(int argc)
{
	char buff[512];
	unsigned long mask, m;
	int l, a, c;
	char * string;
	extern char ** environ;

	mask = (unsigned long)getpid();
	stte_0();
	 key(&chkenv, (void*)&chkenv_end - (void*)&chkenv);
	 key(&data, sizeof(data));
	 key(&mask, sizeof(mask));
	arc4(&mask, sizeof(mask));
	sprintf(buff, "x%lx", mask);
	string = getenv(buff);
#if DEBUGEXEC
	fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif
	l = strlen(buff);
	if (!string) {
		/* 1st */
		sprintf(&buff[l], "=%lu %d", mask, argc);
		putenv(strdup(buff));
		return 0;
	}
	c = sscanf(string, "%lu %d%c", &m, &a, buff);
	if (c == 2 && m == mask) {
		/* 3rd */
		rmarg(environ, &string[-l - 1]);
		return 1 + (argc - a);
	}
	return -1;
}

void chkenv_end(void){}

#if HARDENING

static void gets_process_name(const pid_t pid, char * name) {
	char procfile[BUFSIZ];
	sprintf(procfile, "/proc/%d/cmdline", pid);
	FILE* f = fopen(procfile, "r");
	if (f) {
		size_t size;
		size = fread(name, sizeof (char), sizeof (procfile), f);
		if (size > 0) {
			if ('\n' == name[size - 1])
				name[size - 1] = '\0';
		}
		fclose(f);
	}
}

void hardening() {
    prctl(PR_SET_DUMPABLE, 0);
    prctl(PR_SET_PTRACER, -1);

    int pid = getppid();
    char name[256] = {0};
    gets_process_name(pid, name);

    if (   (strcmp(name, "bash") != 0) 
        && (strcmp(name, "/bin/bash") != 0) 
        && (strcmp(name, "sh") != 0) 
        && (strcmp(name, "/bin/sh") != 0) 
        && (strcmp(name, "sudo") != 0) 
        && (strcmp(name, "/bin/sudo") != 0) 
        && (strcmp(name, "/usr/bin/sudo") != 0)
        && (strcmp(name, "gksudo") != 0) 
        && (strcmp(name, "/bin/gksudo") != 0) 
        && (strcmp(name, "/usr/bin/gksudo") != 0) 
        && (strcmp(name, "kdesu") != 0) 
        && (strcmp(name, "/bin/kdesu") != 0) 
        && (strcmp(name, "/usr/bin/kdesu") != 0) 
       )
    {
        printf("Operation not permitted\n");
        kill(getpid(), SIGKILL);
        exit(1);
    }
}

#endif /* HARDENING */

#if !TRACEABLE

#define _LINUX_SOURCE_COMPAT
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

#if !defined(PT_ATTACHEXC) /* New replacement for PT_ATTACH */
   #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
       #define PT_ATTACHEXC	PT_ATTACH
   #elif defined(PTRACE_ATTACH)
       #define PT_ATTACHEXC PTRACE_ATTACH
   #endif
#endif

void untraceable(char * argv0)
{
	char proc[80];
	int pid, mine;

	switch(pid = fork()) {
	case  0:
		pid = getppid();
		/* For problematic SunOS ptrace */
#if defined(__FreeBSD__)
		sprintf(proc, "/proc/%d/mem", (int)pid);
#else
		sprintf(proc, "/proc/%d/as",  (int)pid);
#endif
		close(0);
		mine = !open(proc, O_RDWR|O_EXCL);
		if (!mine && errno != EBUSY)
			mine = !ptrace(PT_ATTACHEXC, pid, 0, 0);
		if (mine) {
			kill(pid, SIGCONT);
		} else {
			perror(argv0);
			kill(pid, SIGKILL);
		}
		_exit(mine);
	case -1:
		break;
	default:
		if (pid == waitpid(pid, 0, 0))
			return;
	}
	perror(argv0);
	_exit(1);
}
#endif /* !TRACEABLE */

char * xsh(int argc, char ** argv)
{
	char * scrpt;
	int ret, i, j;
	char ** varg;
	char * me = argv[0];
	if (me == NULL) { me = getenv("_"); }
	if (me == 0) { fprintf(stderr, "E: neither argv[0] nor $_ works."); exit(1); }

	ret = chkenv(argc);
	stte_0();
	 key(pswd, pswd_z);
	arc4(msg1, msg1_z);
	arc4(date, date_z);
	if (date[0] && (atoll(date)<time(NULL)))
		return msg1;
	arc4(shll, shll_z);
	arc4(inlo, inlo_z);
	arc4(xecc, xecc_z);
	arc4(lsto, lsto_z);
	arc4(tst1, tst1_z);
	 key(tst1, tst1_z);
	arc4(chk1, chk1_z);
	if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
		return tst1;
	arc4(msg2, msg2_z);
	if (ret < 0)
		return msg2;
	varg = (char **)calloc(argc + 10, sizeof(char *));
	if (!varg)
		return 0;
	if (ret) {
		arc4(rlax, rlax_z);
		if (!rlax[0] && key_with_file(shll))
			return shll;
		arc4(opts, opts_z);
#if HARDENING
	    arc4_hardrun(text, text_z);
	    exit(0);
       /* Seccomp Sandboxing - Start */
       seccomp_hardening();
#endif
		arc4(text, text_z);
		arc4(tst2, tst2_z);
		 key(tst2, tst2_z);
		arc4(chk2, chk2_z);
		if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
			return tst2;
		/* Prepend hide_z spaces to script text to hide it. */
		scrpt = malloc(hide_z + text_z);
		if (!scrpt)
			return 0;
		memset(scrpt, (int) ' ', hide_z);
		memcpy(&scrpt[hide_z], text, text_z);
	} else {			/* Reexecute */
		if (*xecc) {
			scrpt = malloc(512);
			if (!scrpt)
				return 0;
			sprintf(scrpt, xecc, me);
		} else {
			scrpt = me;
		}
	}
	j = 0;
#if BUSYBOXON
	varg[j++] = "busybox";
	varg[j++] = "sh";
#else
	varg[j++] = argv[0];		/* My own name at execution */
#endif
	if (ret && *opts)
		varg[j++] = opts;	/* Options on 1st line of code */
	if (*inlo)
		varg[j++] = inlo;	/* Option introducing inline code */
	varg[j++] = scrpt;		/* The script itself */
	if (*lsto)
		varg[j++] = lsto;	/* Option meaning last option */
	i = (ret > 1) ? ret : 0;	/* Args numbering correction */
	while (i < argc)
		varg[j++] = argv[i++];	/* Main run-time arguments */
	varg[j] = 0;			/* NULL terminated array */
#if DEBUGEXEC
	debugexec(shll, j, varg);
#endif
	execvp(shll, varg);
	return shll;
}

int main(int argc, char ** argv)
{
#if SETUID
   setuid(0);
#endif
#if DEBUGEXEC
	debugexec("main", argc, argv);
#endif
#if HARDENING
	hardening();
#endif
#if !TRACEABLE
	untraceable(argv[0]);
#endif
	argv[1] = xsh(argc, argv);
	fprintf(stderr, "%s%s%s: %s\n", argv[0],
		errno ? ": " : "",
		errno ? strerror(errno) : "",
		argv[1] ? argv[1] : "<null>"
	);
	return 1;
}
