Created
January 28, 2014 23:11
-
-
Save winocm/8678607 to your computer and use it in GitHub Desktop.
Happy birthday @M1sp! <3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdint.h> | |
#include <strings.h> | |
#include <stdlib.h> | |
#define __t uint32_t | |
#define __r return | |
typedef struct _$n{union{struct{__t o:5;__t rt:4;__t ra:4;__t z:4;__t sreg:8;__t _rs$v:7;}____;__t e;}u;} _$n;typedef struct _$i { | |
union{struct{__t o:5;__t z:4;__t _:16;__t __:7;}____;__t e;}u;}_$i;typedef struct _$l {union{struct{__t o:5;__t rt:4;__t ra:4; | |
__t u:1;__t off:14;__t z:4;} ____;__t e;} u;} _$l;typedef struct _b$ {union{struct{__t o:5;__t rt:4;__t i:1;__t imm:16;__t z:4; | |
__t _rs$v:2;}____;__t e;} u;}_b$;typedef struct _$p {union{struct{__t o:5;__t rt:4;__t ra:4;__t i:1;__t imm:8;__t s_v:5;__t z:4; | |
__t s:1;}____;__t e;}u;} _$p;typedef struct _o$ {union{struct{__t o:5;__t x:27;}____;__t e;}u;}_o$;int _o(__t ____){_o$ *x= | |
(_o$*)&____;__r x->u.____.o;}static int _zb(__t ____){_b$ *x=(_b$*)&____;__r x->u.____.z;}static int _zl(__t ____){_$l *x= | |
(_$l*)&____;__r x->u.____.z;}static int _zs(__t ____){_$i *x=(_$i*)&____;__r x->u.____.z;}static int _zn(__t ____){_$p *x= | |
(_$p*)&____;__r x->u.____.z;}static int _zs$(__t ____){_$n *x=(_$n*)&____;__r x->u.____.z;}int _z(__t ____){int op=_o(____), z=0; | |
switch(op){case 0x10:case 0x11:case 0x12:z=_zb(____);break;case 0x16:case 0x17:z=_zl(____);break;case 0x15:case 0x18: | |
z=_zs(____);break;case 0x13:case 0x14:z=_zs$(____);break;default:z=_zn(____);break;}__r z;}struct _${struct {__t r[16]; | |
__t z;__t sr[256];} n;uint8_t *m;};static struct _$ _c;static int _z$(int _){switch(_){case 0x00:__r 0;case 0x01: | |
__r(_c.n.z&0x40000000);case 0x02:__r(!(_c.n.z&0x40000000));case 0x03:__r(_c.n.z&0x20000000);case 0x04: | |
__r(!(_c.n.z&0x20000000));case 0x05:__r(_c.n.z&0x80000000);case 0x06:__r(!(_c.n.z&0x80000000));case 0x07:__r (_c.n.z& | |
0x10000000);case 0x08:__r (!(_c.n.z & 0x10000000));}__r 0;}static inline __t _o$$(__t a,__t b){int s=a+b;if (((a&(1<<31)) | |
==(b&(1<<31))) && ((s&(1<<31)) !=(a&(1<<31))))__r 1;__r 0;}static inline __t _b$$(__t a,__t b){__r(a<b)?1:0;}static inline | |
__t _c$$(__t a,__t b){__r((a+b)<a)?1:0;}static inline __t _ps$(__t a,__t b){__t _rs$=a-b;if(_b$$(a,b))_c.n.z |=0x20000000; | |
else _c.n.z&=~(0x20000000);if(_o$$(a, b))_c.n.z|=0x10000000;else _c.n.z&=~(0x10000000);if(!_rs$)_c.n.z |=0x40000000; | |
else _c.n.z&=~(0x40000000);if((_rs$>>31)==1)_c.n.z|=0x40000000;else _c.n.z&=~(0x40000000);__r _rs$;}static void ee(__t *__$$) | |
{bzero(&_c, sizeof(struct _$));_c.n.z=0x13;_c.m=(uint8_t*)__$$;while(1) {__t ____=__$$[_c.n.r[15]/sizeof(__t)]; | |
int o=_o(____);int z=_z(____);if(_z$(z)) {_c.n.r[15]+=sizeof(__t);continue;}switch(o){case 0x17:{_$l *_D= | |
(_$l*)&____;bcopy(&_c.n.r[_D->u.____.rt], &_c.m[_c.n.r[_D->u.____.ra] + _D->u.____.off], sizeof(__t));if(_D->u.____.u) { | |
_c.n.r[_D->u.____.ra]+=4;}break;}case 0x18:{_$i *_D=(_$i*)&____;__t _$_=0;if(_D->u.____._&0x02||_D->u.____._&0x01) { | |
if(_D->u.____._ & 0x02)_$_|=0x00000040;if(_D->u.____._&0x01)_$_|=0x00000080;_c.n.z|=_$_;}else if(_D->u.____._&0x08||_D->u.____._ | |
& 0x08){if(_D->u.____._ & 0x08)_$_|=~0x00000040;if(_D->u.____._&0x01)_$_ |=~0x00000080;_c.n.z&=_$_;}_c.n.z |=_D->u.____.__; | |
break;}case 0x09: {_$p* _D=(_$p*)&____;int rt=_D->u.____.rt, ra=_D->u.____.ra, _$i=_D->u.____.i;if(_$i) { | |
_c.n.r[rt]|=_D->u.____.imm<<_D->u.____.s_v;}else{_c.n.r[rt] |=_c.n.r[ra];}if(_D->u.____.s){_c.n.z&=~(0x40000000|0x80000000); | |
_c.n.z|=(_c.n.r[rt]==0) ? 0x40000000 : 0;_c.n.z |=((_c.n.r[rt] >> 31) !=0) ? 0x80000000 : 0;}break;}case 0x0A: {_$p* _D=(_$p*)&____; | |
int rt=_D->u.____.rt, ra=_D->u.____.ra, _$i=_D->u.____.i;if(_$i) {_c.n.r[rt]=_D->u.____.imm << _D->u.____.s_v;} else { | |
_c.n.r[rt]=_c.n.r[ra];}if(_D->u.____.s){_c.n.z&=~(0x40000000|0x80000000);_c.n.z |=(_c.n.r[rt]==0) ? 0x40000000 : 0; | |
_c.n.z |=((_c.n.r[rt]>>31)!=0)?0x80000000:0;}break;}case 0x12:{_b$* _D=(_b$*)&____;_c.n.r[15]=_c.n.r[_D->u.____.rt]; | |
break;}case 0x10:{_b$* _D=(_b$*)&____;_c.n.r[15] +=(int16_t)_D->u.____.imm;if(____==0x03fff010) {FILE *fp=fopen("m.dmp", "wb"); | |
fwrite(_c.m,8192,1,fp);fclose(fp);exit(-1);}break;}case 0x07: {_$p* _D=(_$p*)&____;int rt=_D->u.____.rt, ra=_D->u.____.ra, _$i= | |
_D->u.____.i;__t _v;if(_$i)_v=_D->u.____.imm<<_D->u.____.s_v;else _v=_c.n.r[ra]; _ps$(_c.n.r[rt], _v);break;}default:exit(-1); | |
break;}_c.n.r[15] +=sizeof(__t);}__r;}int main(void){__t _L[]={0x26000618,0x0204202a,0x0002206a,0x0013600a,0x021a6009,0x041ce009, | |
0x061c2009,0x02046027,0x20002217,0x08000072,0x04001210,0x03fff010,0x00122089,0x02186089,0x041c2089,0x061c2089,0x001e60a9,0x020820a9, | |
0x0418a0a9,0x061a60a9,0x001ca0c9,0x021d20c9,0x041a20c9,0x061920c9,0x001860e9,0x021e60e9,0x040860e9,0x0602a0e9,0x00002297, | |
0x000022b7,0x000022d7,0x000022f7,0x001de0ea,0x021a60e9,0x041ba0e9,0x061be0e9,0x000022f7,0x03fff010,};__t *m=malloc(8192);if(!m) | |
abort();bzero((void*)m, 8192);bcopy(_L,m,sizeof(_L));ee(m);__r 0;} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
what is this? i know C++ but this is just junk put togetor!