Here is code from x86 programs. It is to highlight the accuracy of the decompiler on x86 code.

On the left column is the decompiled code, and the right column is the original C code.

Struct Members where the struct is a '.' not a '->'

WSAData Var404;
memset(&Var404,0,400);
Var408 = _WSAStartup(257,&Var404);
Var404.wHighVersion = 128;
Var404.wVersion = 256;
WSAData Var816;
_WSAStartup(257,&Var816);
printf("wHighVersion %d",(Var816.wHighVersion & 65535));
printf("iMaxSockets %d",(Var816.iMaxSockets & 65535));
printf("szDescription%s",&Var816.szDescription);
printf("End socks\n");
WSADATA ws3;
memset(&ws3,0,sizeof(WSADATA));
int d2 = WSAStartup(0x101,&ws3);
ws3.wHighVersion = 128;
ws3.wVersion = 256;
WSAData ws;
WSAStartup(257,&ws);
printf("wHighVersion %d",ws.wHighVersion);
printf("iMaxSockets %d",ws.iMaxSockets);
printf("szDescription%s",ws.szDescription);
printf("End socks\n");

Terniary Operator

int Var6684 = (Var6676 == 0) ? 1:2;
long c;
if (b == 0)
	c = 1;
else
	c = 2;

Simple block

if (Var6676 == 0) {
        printf("push 1");
} else {
        printf("push 2");
}//EndIF; 411626
	if (b == 0)
		printf("push 1");
	else
		printf("push 2");

File operations AND -> struct members

FILE *Var6472 = fopen("tempfile","r+b");
if (Var6472 != 0) {
        printf("%d\n",4);
        printf("%d\n",Var6472->_charbuf);
        printf("Depth0 %d\n",Var6472);
        printf("Ptr %d\n",Var6472->_ptr);
        printf("Ptr* %d\n",*Var6472->_ptr);
        Var6472->_bufsiz = 512;
        void *Var6672;
        fread(Var6672,1,1,Var6472);
        fclose(Var6472);
}//EndIF; 4115C9
	FILE *f;
	f = fopen("tempfile","r+b");
	if (f)
	{
		printf("%d\n",sizeof(int));
		printf("%d\n",f->_charbuf);
		printf("Depth0 %d\n",f);
		printf("Ptr %d\n",f->_ptr);
		printf("Ptr* %d\n",*(f->_ptr));
		f->_bufsiz = 512;
		char buffer[200];
		fread(buffer,1,1,f);
		fclose(f);
	}

For loop AND function call (ack)

	for( char Var856 = 0 ; Var856 < 50 ; Var856 += 1 ) {
		printf("%d\n",j_ack(Var856,(Var856 + 1)));
	}//LoopEnd 411218
	long a;
	for (a = 0; a < 50; a++)
	{
	    printf("%d\n", ack(a,a+1));
	}

File . struct

FILE Var888;
Var888._bufsiz = 2048;
fclose(&Var888);
FILE g;
g._bufsiz = 2048;
fclose(&g);

Nasty Or/And block which is unparseable, so turned into goto's

	
if (Var844 > 50)
        goto Label_0;
if (Var844 > 60)
        goto Label_1;
Label_0:;
if (Var844 < 30) {
        if (Var844 > 100) {
                Label_1:;
                printf("&&&");
        }//EndIF; 411171
}//EndIF; 411171
	if (((y5 > 50) && (y5 > 60)) || (y5 < 30) && (y5 > 100))
	{
		printf("&&&");
	}

Now, an Or block (a || b) in C, generates code which is turned into goto's by the relevant code in RevEngE. This sample shows where it turns the goto's back into a || (conditional or) instruction!

	
if (Var844 > 50) || (Var852 > 60) {
        printf("y || %d\n",(Var848 + Var852));
}//EndIF; 41119D
if ((y5 > 50) || (y7 > 60))
{
	printf("y || %d\n",y6+y7);
}

CPU Function REP STOSD is turned into a call with all parameters from registers

	
rep stosd(Var6756,3435973836,6752);
(Call to REP STOSD cleans out the stack, at the start of this assembly file.
Var6756 is the destination, 6752 is the size of the stack, and 3435973836
(the number to put in that destination) is in hex #xCCCCCCCC)