/*	This file was automatically created by
 *	Reverse Engineering Compiler 1.4a (C) Giampiero Caprino (Nov 22 1998)
 *	Input file: 'hdO.x'
 */

/*	Procedure: 0x00040074 - 0x0004020B
 *	Argument size: 0
 *	Local size: 112
 *	Save regs size: 112
 */

dumpline()
{
	/* unknown */ void  V8;



    r28 = r3;
    r0 = r4;
    r30 = r5;
    r3 = sprintf( & V8, "%08lX:", r0);
    r30 :: 17;
    asm("mfcr	r0");
    asm("rlwinm	r0,r0,5,31,31");
    asm("neg	r0,r0");
    r9 = r30 & r0;
    asm("rlwinm	r0,r0,0,27,27");
    r30 = r9 | ~r0;
    r31 = 0;
    if(0 < r30) {
        r29 = & V8;
        r27 = 262144;
        do {
            asm("rlwinm	r3,r31,1,0,30");
            r3 = sprintf(r29 + r3 + r31 + 9, r27 + 2060, *(r28 + r31));
            r31 = r31 + 1;
        } while(r31 < r30);
    }
    r0 = r31;
    r31 = r31 + 1;
    if(r0 <= 15) {
        r29 = 262144;
        do {
            strcat( & V8, r29 + 2068);
            r0 = r31;
            r31 = r31 + 1;
        } while(r0 <= 15);
    }
    r3 = strlen( & V8);
    r0 = *" |";
    r9 = & V8;
    asm("stwx	r0,r9,r3");
    r31 = 0;
    if(0 < r30) {
        r10 = r9;
        do {
            r11 = r3 + r31;
            r9 = *(r28 + r31);
            r0 = 46;
            if(r9 + -32 <= 94) {
                r0 = r9;
            }
            *(r10 + r11) = r0;
            r31 = r31 + 1;
        } while(r31 < r30);
    }
    if(r31 <= 15) {
        r11 = 32;
        r9 = & V8;
        do {
            *(r9 + r3 + r31) = r11;
            r31 = r31 + 1;
        } while(r31 <= 15);
    }
    *( & V8 + r3 + r31) = *"|";
    return(printf("%s\n", & V8));
}

/*	Procedure: 0x0004020C - 0x000402D3
 *	Argument size: 0
 *	Local size: 112
 *	Save regs size: 112
 */

hexdump()
{
	/* unknown */ void  V8;
	/* unknown */ void  V18;
	/* unknown */ void  V2c;



    r31 = r3;
    if(_xstat(1, r31, & V18) != 0) {
        fopen(r31, "rb");
        asm("mr.	r29,r3");
        != ? L00040258 : ;
    }
    perror(r31);
    r3 = 1;
    return(r3);
}

/*	Procedure: 0x000402D4 - 0x00040347
 *	Argument size: 0
 *	Local size: 32
 *	Save regs size: 32
 */

main()
{



    r29 = r3;
    r28 = r4;
    r30 = 0;
    r31 = 1;
    if(1 < r29) {
        do {
            asm("rlwinm	r0,r31,2,0,29");
            r30 = r30 + hexdump( *(r28 + r0));
            r31 = r31 + 1;
        } while(r31 < r29);
    }
    return(r30);
}

/*	Procedure: 0x00040348 - 0x00040383
 *	Argument size: -16
 *	Local size: 16
 *	Save regs size: 0
 */

_start()
{



    main();
    while(1) {
    }
    goto L00040364;
}

/*	Procedure: 0x00040384 - 0x0004039F
 *	Argument size: -16
 *	Local size: 16
 *	Save regs size: 0
 */

__main()
{



    return(r3);
}

/*	Procedure: 0x000403A0 - 0x00040407
 *	Argument size: -136
 *	Local size: 144
 *	Save regs size: 0
 */

printf(char * format, char * fmt)
{



    V8 = r3;
    Vc = R4;
    V10 = R5;
    V14 = R6;
    V18 = R7;
    V1c = R8;
    V20 = R9;
    V24 = Ra;
    != ? L000403f4 : ;
    asm("stfd	f1,40(r31)");
    asm("stfd	f2,48(r31)");
    asm("stfd	f3,56(r31)");
    asm("stfd	f4,64(r31)");
    asm("stfd	f5,72(r31)");
    asm("stfd	f6,80(r31)");
    asm("stfd	f7,88(r31)");
    asm("stfd	f8,96(r31)");
    asm("stfd	f9,104(r31)");
    V70 = r3;
    return(r3);
}

/*	Procedure: 0x00040408 - 0x0004046F
 *	Argument size: -128
 *	Local size: 144
 *	Save regs size: 0
 */

fprintf(struct _IO_FILE* fp, char * format, FILE* fp, char * fmt)
{



    V70 = r3;
    Vc = r4;
    V10 = R5;
    V14 = R6;
    V18 = R7;
    V1c = R8;
    V20 = R9;
    V24 = Ra;
    != ? L0004045c : ;
    asm("stfd	f1,40(r31)");
    asm("stfd	f2,48(r31)");
    asm("stfd	f3,56(r31)");
    asm("stfd	f4,64(r31)");
    asm("stfd	f5,72(r31)");
    asm("stfd	f6,80(r31)");
    asm("stfd	f7,88(r31)");
    asm("stfd	f8,96(r31)");
    asm("stfd	f9,104(r31)");
    V74 = r4;
    return(r3);
}

/*	Procedure: 0x00040470 - 0x000404D7
 *	Argument size: -128
 *	Local size: 144
 *	Save regs size: 0
 */

sprintf(char * dst, char * format, char * dst, char * fmt)
{



    V70 = r3;
    Vc = r4;
    V10 = R5;
    V14 = R6;
    V18 = R7;
    V1c = R8;
    V20 = R9;
    V24 = Ra;
    != ? L000404c4 : ;
    asm("stfd	f1,40(r31)");
    asm("stfd	f2,48(r31)");
    asm("stfd	f3,56(r31)");
    asm("stfd	f4,64(r31)");
    asm("stfd	f5,72(r31)");
    asm("stfd	f6,80(r31)");
    asm("stfd	f7,88(r31)");
    asm("stfd	f8,96(r31)");
    asm("stfd	f9,104(r31)");
    V74 = r4;
    return(r3);
}

/*	Procedure: 0x000404D8 - 0x00040503
 *	Argument size: 0
 *	Local size: 32
 *	Save regs size: 0
 */

fread(void * b, size_t i, size_t l, FILE* p)
{



    V8 = r3;
    Vc = R4;
    V10 = R5;
    V14 = R6;
    return(V8);
}

/*	Procedure: 0x00040504 - 0x0004052F
 *	Argument size: 0
 *	Local size: 32
 *	Save regs size: 0
 */

fwrite(void * b, size_t i, size_t l, FILE* p)
{



    V8 = r3;
    Vc = R4;
    V10 = R5;
    V14 = R6;
    return(V8);
}

/*	Procedure: 0x00040530 - 0x00040553
 *	Argument size: -16
 *	Local size: 32
 *	Save regs size: 0
 */

fopen(char * n, char * m)
{



    V8 = r3;
    Vc = R4;
    return(V8);
}

/*	Procedure: 0x00040554 - 0x0004057B
 *	Argument size: -24
 *	Local size: 32
 *	Save regs size: 0
 */

fclose(FILE* fp)
{



    V8 = r3;
    r3 = 0;
    return(r3);
}

/*	Procedure: 0x0004057C - 0x0004059B
 *	Argument size: -24
 *	Local size: 32
 *	Save regs size: 0
 */

perror(char * p)
{



    V8 = r3;
    return(V8);
}

/*	Procedure: 0x0004059C - 0x000405C7
 *	Argument size: -24
 *	Local size: 32
 *	Save regs size: 0
 */

exit(int x)
{



    V8 = r3;
    while(1) {
    }
    goto L000405b0;
}

/*	Procedure: 0x000405C8 - 0x000405EB
 *	Argument size: -16
 *	Local size: 32
 *	Save regs size: 0
 */

__overflow(/* unknown */ void * f, int x)
{



    V8 = r3;
    Vc = R4;
    return(V8);
}

/*	Procedure: 0x000405EC - 0x00040617
 *	Argument size: -16
 *	Local size: 32
 *	Save regs size: 0
 */

open(char * name, int mode)
{



    V8 = r3;
    Vc = r4;
    r3 = -1;
    return(r3);
}

/*	Procedure: 0x00040618 - 0x00040647
 *	Argument size: -8
 *	Local size: 32
 *	Save regs size: 0
 */

read(int fd, char * buff, int size)
{



    V8 = r3;
    Vc = r4;
    V10 = r5;
    r3 = 0;
    return(r3);
}

/*	Procedure: 0x00040648 - 0x00040677
 *	Argument size: -8
 *	Local size: 32
 *	Save regs size: 0
 */

write(int fd, char * buff, int size)
{



    V8 = r3;
    Vc = r4;
    V10 = r5;
    r3 = 0;
    return(r3);
}

/*	Procedure: 0x00040678 - 0x00040693
 *	Argument size: -16
 *	Local size: 16
 *	Save regs size: 0
 */

_fxstat()
{



    return(r3);
}

/*	Procedure: 0x00040694 - 0x000406AF
 *	Argument size: -16
 *	Local size: 16
 *	Save regs size: 0
 */

_xstat()
{



    return(r3);
}

/*	Procedure: 0x000406B0 - 0x0004071F
 *	Argument size: -16
 *	Local size: 32
 *	Save regs size: 0
 */

strcpy(char * dst, char * src)
{
	char * d;



    V8 = r3;
    Vc = r4;
    d = V8;
    while(1) {
        r9 = V8;
        r11 = & Vc;
        r10 = *r11;
        r0 = *r10;
        *r9 = r0;
        asm("clrlwi	r0,r0,24");
        *r11 = r10 + 1;
        V8 = r9 + 1;
        if(r0 == 0) {
            break;
        }
    }
    r0 = d;
    r3 = r0;
    return(r3);
}

/*	Procedure: 0x00040720 - 0x0004079B
 *	Argument size: -16
 *	Local size: 32
 *	Save regs size: 0
 */

strcat(char * dst, char * src)
{
	char * d;



    V8 = r3;
    Vc = r4;
    r0 = V8;
    d = r0;
    while(1) {
        r11 = *V8;
        asm("clrlwi	r0,r11,24");
        if(r0 == 0) {
            break;
        }
        r0 = V8;
        V8 = r0 + 1;
    }
    strcpy(V8, Vc);
    r0 = d;
    r3 = r0;
    return(r3);
}

/*	Procedure: 0x0004079C - 0x00040803
 *	Argument size: -24
 *	Local size: 32
 *	Save regs size: 0
 */

strlen(char * src)
{
	int len;



    V8 = r3;
    r0 = 0;
    len = 0;
    while(1) {
        r11 = *V8;
        asm("clrlwi	r0,r11,24");
        if(r0 == 0) {
            break;
        }
        V8 = V8 + 1;
        r0 = len;
        len = r0 + 1;
    }
    r0 = len;
    r3 = r0;
    return(r3);
}

/* address  size  */
/* 0x00000000       0 */ struct _IO_FILE_plus	IO_stdin_;
/* 0x00000000       0 */ struct _IO_FILE_plus	IO_stdout_;
/* 0x00000000       0 */ struct _IO_FILE_plus	IO_stderr_;
/* 0x00000000       0 */ FILE	_iob;
/* 0x00040074     408 */ /* unknown */ void 	dumpline;
/* 0x0004020c     200 */ /* unknown */ void 	hexdump;
/* 0x000402d4     116 */ /* unknown */ void 	main;
/* 0x00040348       0 */ int	_start();
/* 0x00040348       0 */ /* unknown */ void 	/home/cg/usr/gccppc/lib/;
/* 0x00040348       0 */ /* unknown */ void 	lib.c;
/* 0x00040384      28 */ int	__main();
/* 0x000403a0     104 */ int	printf(char *, char *);
/* 0x00040408     104 */ int	fprintf(struct _IO_FILE*, char *, FILE*, char *);
/* 0x00040470     104 */ int	sprintf(char *, char *, char *, char *);
/* 0x000404d8      44 */ size_t	fread(void *, size_t, size_t, FILE*);
/* 0x00040504      44 */ size_t	fwrite(void *, size_t, size_t, FILE*);
/* 0x00040530      36 */ FILE*	fopen(char *, char *);
/* 0x00040554      40 */ int	fclose(FILE*);
/* 0x0004057c      32 */ void 	perror(char *);
/* 0x0004059c      44 */ int	exit(int);
/* 0x000405c8      36 */ int	__overflow(/* unknown */ void *, int);
/* 0x000405ec      44 */ int	open(char *, int);
/* 0x00040618      48 */ int	read(int, char *, int);
/* 0x00040648      48 */ int	write(int, char *, int);
/* 0x00040678      28 */ int	_fxstat();
/* 0x00040694      28 */ int	_xstat();
/* 0x000406b0     112 */ char *	strcpy(char *, char *);
/* 0x00040720     124 */ char *	strcat(char *, char *);
/* 0x0004079c       0 */ int	strlen(char *);
/* 0x00040804       0 */ /* unknown */ void 	;
/* 0x00048828       0 */ /* unknown */ void 	_SDA2_BASE_;
/* 0x00080838       0 */ /* unknown */ void 	_IO_stdout_;
/* 0x0008083c       0 */ /* unknown */ void 	_IO_stderr_;
/* 0x00080840       0 */ /* unknown */ void 	_IO_stdin_;
/* 0x00080844       0 */ /* unknown */ void 	__iob;
/* 0x00088838       0 */ /* unknown */ void 	_SDA_BASE_;
#if 0 /* auxiliary information */
# Current option values:
option: -compactcalls
option: +compactexprs
option: +compactifs
option: +compset
option: -dfoproc
option: -disasmonly
option: -displaylabels
option: +docase
option: +dofor
option: +doifs
option: +doloops
option: +donullgotos
option: +dopackloops
option: +dopackstmt
option: -doremlabs
option: +dosimplify
option: +dosort
option: +dostmts
option: +doswitch
option: +dowhile
option: -dumpaddrs
option: -dumpcall
option: -dumpcomments
option: -dumpdfo
option: -dumpsblocks
option: -dumpsets
option: -dumpsizes
option: -flag16
option: +fullscreen
option: -getpattern
option: -help
option: -hexconst
option: -html
option: +insertlabels
option: -int16
option: +int32
option: -interactive
option: +locals
option: -nohtmltabs
option: -okclone
option: -outprocs
option: -outrefs
option: -overrule
option: +rdonly
option: -showjump
option: -showlabel
option: -showprotosym
option: -showreg
option: -showstring
option: -silent
option: +simplifyexprs
option: -strallregions
option: -traceall
option: -tracesets
option: +types
option: +usesymtab
option: -validatebr
option: -validatereg
option: +validatestr
#endif