	SECTION _TEXT CLASS=CODE USE32
	SECTION _DATA CLASS=DATA USE32
	SECTION _BSS  CLASS=BSS USE32
	SECTION _CONST  CLASS=CONST USE32
	SECTION _STRING  CLASS=STRING USE32
	SECTION cstartup CLASS=INITDATA USE32
	SECTION crundown CLASS=EXITDATA USE32
	SECTION cppinit  CLASS=CPPINIT USE32
	SECTION cppexit  CLASS=CPPEXIT USE32
	GROUP DGROUP _DATA _BSS _CONST _STRING

SECTION _TEXT
;
; Line 40:	{
;
_init_profile:
;
; Line 41:		profiling = 1;
;
	MOV	DWORD [_profiling],01H
;
; Line 42:		validate();
;
	CALL	_validate
;
; Line 43:	}
;
	RET
;
; Line 46:	{
;
_comparison:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
;
; Line 47:		PROFILE *x=*((PROFILE **)a),*y=*((PROFILE **)b);
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	EAX,DWORD [EAX+00H]
	MOV	DWORD [EBP+0FFFFFFFCH],EAX
	MOV	EAX,DWORD [EBP+0CH]
	MOV	EDI,DWORD [EAX+00H]
;
; Line 49:		r = x->time;
;
	MOV	EAX,DWORD [EBP+0FFFFFFFCH]
	MOV	ESI,DWORD [EAX+0CH]
;
; Line 50:		s = y->time;
;
	MOV	EBX,DWORD [EDI+0CH]
;
; Line 51:		if (r & 0xf0000000)
;
	MOV	EAX,ESI
	AND	EAX,0F0000000H
	JE	SHORT	L_1
;
; Line 52:			r = 0;
;
	MOV	ESI,00H
L_1:
;
; Line 53:		if (s & 0xf0000000)
;
	MOV	EAX,EBX
	AND	EAX,0F0000000H
	JE	SHORT	L_3
;
; Line 54:			s = 0;
;
	MOV	EBX,00H
L_3:
;
; Line 55:		if (r < s)
;
	CMP	ESI,EBX
	JNC	SHORT	L_5
;
; Line 56:			return 1;
;
	MOV	EAX,01H
	JMP	L_7
L_5:
;
; Line 57:		if (r == s)
;
	CMP	ESI,EBX
	JNE	SHORT	L_8
;
; Line 58:			return 0;
;
	MOV	EAX,00H
	JMP	L_7
L_8:
;
; Line 59:		return -1;
;
	MOV	EAX,0FFFFFFFFH
L_7:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 62:	{
;
_validate:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 010H
	PUSH	ESI
;
; Line 65:		_profile_in("$$$PROFILER");
;
	PUSH	DWORD L_10
	CALL	__profile_in
	POP	ECX
;
; Line 66:		_profile_out("$$$PROFILER");
;
	PUSH	DWORD L_10
	CALL	__profile_out
	POP	ECX
;
; Line 67:		t = HashIt("$$$PROFILER");
;
	PUSH	DWORD L_10
	CALL	_HashIt
	POP	ECX
	MOV	ESI,EAX
;
; Line 68:		fnoverhead = t->time;
;
	MOV	EAX,DWORD [ESI+0CH]
	MOV	DWORD [_fnoverhead],EAX
;
; Line 69:	}
;
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 71:	{
;
_show_profile:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0118H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
;
; Line 74:		int i,pos=0;
;
	MOV	DWORD [EBP+0FFFFFEF0H],00H
;
; Line 76:		unsigned totaltime = 0,totalcount=0;
;
	MOV	DWORD [EBP+0FFFFFFF8H],00H
	MOV	DWORD [EBP+0FFFFFFFCH],00H
;
; Line 77:		profiling = 0;
;
	MOV	DWORD [_profiling],00H
;
; Line 79:		if (profileincomplete) {
;
	CMP	DWORD [_profileincomplete],BYTE 00H
	JE	SHORT	L_18
;
; Line 80:			printf((_pstreams[2]),"Not enough memory to perform profiling");
;
	PUSH	DWORD L_11
	PUSH	DWORD [08H+__pstreams]
	CALL	_printf
	ADD	ESP,BYTE 08H
;
; Line 81:			return;
;
	JMP	L_20
L_18:
;
; Line 83:		p = malloc(profnames * sizeof(PROFILE *));
;
	MOV	EAX,DWORD [_profnames]
	SAL	EAX,02H
	PUSH	EAX
	CALL	_malloc
	POP	ECX
	MOV	ESI,EAX
;
; Line 84:		if (!p) {
;
	TEST	ESI,ESI
	JNE	SHORT	L_21
;
; Line 85:			printf((_pstreams[2]),"Can't allocate profile sort list");
;
	PUSH	DWORD L_12
	PUSH	DWORD [08H+__pstreams]
	CALL	_printf
	ADD	ESP,BYTE 08H
;
; Line 86:			return;
;
	JMP	L_20
L_21:
;
; Line 88:		strcpy(name,_argv_arr[0]);
;
	MOV	EAX,DWORD [__argv_arr]
	LEA	ECX,[EBP+0FFFFFEF4H]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EAX+00H]
	MOV	EDI,ECX
	XCHG	ESI,EDI
	CLD
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	XCHG	ESI,EDI
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
	LEA	ECX,[EBP+0FFFFFEF4H]
;
; Line 89:		s = strrchr(name,'.');
;
	PUSH	BYTE 02EH
	LEA	EAX,[EBP+0FFFFFEF4H]
	PUSH	EAX
	CALL	_strrchr
	ADD	ESP,BYTE 08H
	MOV	DWORD [EBP+0FFFFFFF4H],EAX
;
; Line 90:		if (!s)
;
	CMP	DWORD [EBP+0FFFFFFF4H],BYTE 00H
	JNE	NEAR	L_23
;
; Line 91:			s = name + strlen(name);
;
	LEA	EAX,[EBP+0FFFFFEF4H]
	LEA	ECX,[EBP+0FFFFFEF4H]
	PUSH	EDI
	PUSH	EAX
	MOV	EDI,ECX
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	POP	EAX
	POP	EDI
	ADD	EAX,ECX
	MOV	DWORD [EBP+0FFFFFFF4H],EAX
L_23:
;
; Line 92:		strcpy(s,".prf");
;
	MOV	EAX,DWORD L_13
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EAX
	MOV	EDI,DWORD [EBP+0FFFFFFF4H]
	XCHG	ESI,EDI
	CLD
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	XCHG	ESI,EDI
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
;
; Line 93:		out = fopen(name,"w");
;
	PUSH	DWORD L_14
	LEA	EAX,[EBP+0FFFFFEF4H]
	PUSH	EAX
	CALL	_fopen
	ADD	ESP,BYTE 08H
	MOV	DWORD [EBP+0FFFFFEECH],EAX
;
; Line 94:		if (!out) {
;
	CMP	DWORD [EBP+0FFFFFEECH],BYTE 00H
	JNE	SHORT	L_25
;
; Line 95:			printf((_pstreams[2]),"Can't open profile output file");
;
	PUSH	DWORD L_15
	PUSH	DWORD [08H+__pstreams]
	CALL	_printf
	ADD	ESP,BYTE 08H
;
; Line 96:			return;
;
	JMP	L_20
L_25:
	MOV	EBX,00H
	JMP	L_29
L_27:
;
; Line 99:			PROFILE *q = hashtab[i];
;
	MOV	EAX,DWORD [EBX*4+_hashtab+00H]
	MOV	DWORD [EBP+0FFFFFEE8H],EAX
	JMP	L_31
L_33:
;
; Line 101:				totaltime += q->time;
;
	MOV	EAX,DWORD [EBP+0FFFFFEE8H]
	MOV	EAX,DWORD [EAX+0CH]
	ADD	DWORD [EBP+0FFFFFFF8H],EAX
;
; Line 102:				totalcount +=q->count;
;
	MOV	EAX,DWORD [EBP+0FFFFFEE8H]
	MOV	EAX,DWORD [EAX+014H]
	ADD	DWORD [EBP+0FFFFFFFCH],EAX
;
; Line 103:				p[pos++] = q;
;
	MOV	EAX,DWORD [EBP+0FFFFFEF0H]
	INC	DWORD [EBP+0FFFFFEF0H]
	MOV	ECX,DWORD [EBP+0FFFFFEE8H]
	MOV	DWORD [ESI+EAX*4+00H],ECX
;
; Line 104:				q = q->hashlink;
;
	MOV	EAX,DWORD [EBP+0FFFFFEE8H]
	MOV	EAX,DWORD [EAX+00H]
	MOV	DWORD [EBP+0FFFFFEE8H],EAX
;
; Line 105:			}
;
L_31:
;
; Line 100:			while (q) {
;
	CMP	DWORD [EBP+0FFFFFEE8H],BYTE 00H
	JNE	NEAR	L_33
L_32:
;
; Line 106:		}
;
;
; Line 98:		for (i=0; i < 4091; i++) {
;
L_28:
	INC	EBX
L_29:
	CMP	EBX,0FFBH
	JL	NEAR	L_27
L_30:
;
; Line 107:		qsort(p,profnames,sizeof(PROFILE *),comparison);
;
	PUSH	DWORD _comparison
	PUSH	BYTE 04H
	PUSH	DWORD [_profnames]
	PUSH	ESI
	CALL	_qsort
	ADD	ESP,BYTE 010H
;
; Line 108:		fprintf(out,"Profile info: (time: %10d, calls: %10d)\n\n",totaltime,totalcount);
;
	PUSH	DWORD [EBP+0FFFFFFFCH]
	PUSH	DWORD [EBP+0FFFFFFF8H]
	PUSH	DWORD L_16
	PUSH	DWORD [EBP+0FFFFFEECH]
	CALL	_fprintf
	ADD	ESP,BYTE 010H
	MOV	EBX,00H
	JMP	L_36
L_34:
;
; Line 110:			unsigned v = p[i]->time;
;
	MOV	EAX,DWORD [ESI+EBX*4+00H]
	MOV	EDI,DWORD [EAX+0CH]
;
; Line 112:			fprintf(out,"%32s: %02d%% (time:%10d) (count:%10d) (avg:%10d)\n",p[i]->name,v/(totaltime/100), v,p[i]->count,v/p[i]->count);
;
	MOV	EAX,DWORD [ESI+EBX*4+00H]
	MOV	ECX,EDI
	XCHG	EAX,ECX
	SUB	EDX,EDX
	DIV	DWORD [ECX+014H]
	PUSH	EAX
	MOV	EAX,DWORD [ESI+EBX*4+00H]
	PUSH	DWORD [EAX+014H]
	PUSH	EDI
	MOV	EAX,DWORD [EBP+0FFFFFFF8H]
	SUB	EDX,EDX
	DIV	DWORD [L_38]
	MOV	ECX,EDI
	XCHG	EAX,ECX
	SUB	EDX,EDX
	DIV	ECX
	PUSH	EAX
	MOV	EAX,DWORD [ESI+EBX*4+00H]
	PUSH	DWORD [EAX+08H]
	PUSH	DWORD L_17
	PUSH	DWORD [EBP+0FFFFFEECH]
	CALL	_fprintf
	ADD	ESP,BYTE 01CH
;
; Line 113:		}
;
;
; Line 109:		for (i=0; i < profnames; i++) {
;
L_35:
	INC	EBX
L_36:
	CMP	EBX,DWORD [_profnames]
	JL	NEAR	L_34
L_37:
;
; Line 114:		fclose(out);
;
	PUSH	DWORD [EBP+0FFFFFEECH]
	CALL	_fclose
	POP	ECX
;
; Line 116:	}
;
L_20:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 118:	{
;
_ComputeHash:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
;
; Line 119:	  unsigned int len = strlen(string), rv;
;
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	MOV	ESI,EAX
;
; Line 120:	  char *pe = len + string;
;
	MOV	EDI,ESI
	ADD	EDI,DWORD [EBP+08H]
;
; Line 121:	  unsigned char blank = ' ';
;
	MOV	BYTE [EBP+0FFFFFFFFH],020H
;
; Line 123:	  rv = len | blank;
;
	MOVZX	EAX,BYTE [EBP+0FFFFFFFFH]
	OR	EAX,ESI
	MOV	EBX,EAX
	JMP	L_39
L_41:
;
; Line 125:	    unsigned char cback = (unsigned char)(*--pe) | blank;
;
	DEC	EDI
	MOV	AL,BYTE [EDI+00H]
	OR	AL,BYTE [EBP+0FFFFFFFFH]
	MOV	BYTE [EBP+0FFFFFFFEH],AL
;
; Line 126:	    rv = (((rv << (16 - 2)) | (rv >> 2)) & 0xffff) ^ cback;
;
	MOV	EAX,EBX
	SAL	EAX,0EH
	MOV	ECX,EBX
	SAR	ECX,02H
	OR	EAX,ECX
	MOVZX	EAX,AX
	MOVZX	ECX,BYTE [EBP+0FFFFFFFEH]
	XOR	EAX,ECX
	MOV	EBX,EAX
;
; Line 127:	  }
;
L_39:
;
; Line 124:	  while(len--) {
;
	MOV	EAX,ESI
	DEC	ESI
	TEST	EAX,EAX
	JNE	NEAR	L_41
L_40:
;
; Line 128:	  return(rv % 4091);
;
	MOV	EAX,EBX
	SUB	EDX,EDX
	DIV	DWORD [L_42]
	MOV	EAX,EDX
L_43:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 131:	{
;
_HashIt:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD _hashtab
;
; Line 132:		int h = ComputeHash(str);
;
	PUSH	DWORD [EBP+08H]
	CALL	_ComputeHash
	POP	ECX
	MOV	EBX,EAX
;
; Line 133:		PROFILE *p = hashtab[h];
;
	MOV	ESI,DWORD [EDI+EBX*4+00H]
	JMP	L_44
L_46:
;
; Line 135:			if (!strcmp(p->name,str))
;
	MOV	EAX,DWORD [ESI+08H]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,EAX
	XCHG	ESI,EDI
	CLD
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	REPZ	CMPSB
	MOV	ECX,00H
	JE	SHORT	L_50
	JS	SHORT	L_49
	MOV	ECX,01H
	JMP	L_50
L_49:
	MOV	ECX,0FFFFFFFFH
L_50:
	POP	EDI
	POP	ESI
	TEST	ECX,ECX
	JNE	SHORT	L_47
;
; Line 136:				return p;
;
	MOV	EAX,ESI
	JMP	L_51
L_47:
;
; Line 137:			p = p->hashlink;
;
	MOV	ESI,DWORD [ESI+00H]
;
; Line 138:		}
;
L_44:
;
; Line 134:		while (p) {
;
	TEST	ESI,ESI
	JNE	NEAR	L_46
L_45:
;
; Line 139:		p = malloc(sizeof(PROFILE));
;
	PUSH	BYTE 018H
	CALL	_malloc
	POP	ECX
	MOV	ESI,EAX
;
; Line 140:		if (!p)
;
	TEST	ESI,ESI
	JNE	SHORT	L_52
;
; Line 141:			return p;
;
	MOV	EAX,ESI
	JMP	L_51
L_52:
;
; Line 142:		profnames++;
;
	INC	DWORD [_profnames]
;
; Line 143:		p->name = str;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	DWORD [ESI+08H],EAX
;
; Line 144:		p->time = 0;
;
	MOV	DWORD [ESI+0CH],00H
;
; Line 145:		p->count = 0;
;
	MOV	DWORD [ESI+014H],00H
;
; Line 146:		p->hashlink = hashtab[h];
;
	MOV	EAX,DWORD [EDI+EBX*4+00H]
	MOV	DWORD [ESI+00H],EAX
;
; Line 147:		p->link = 0;
;
	MOV	DWORD [ESI+04H],00H
;
; Line 148:		hashtab[h] = p;
;
	MOV	DWORD [EDI+EBX*4+00H],ESI
;
; Line 149:		return p;
;
	MOV	EAX,ESI
L_51:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	__profile_in]
;
; Line 152:	{
;
__profile_in:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD _proclink
;
; Line 155:		if (!profiling)
;
	CMP	DWORD [_profiling],BYTE 00H
	JE	NEAR	L_56
;
; Line 156:			return;
;
L_54:
;
; Line 157:		if (proclink) {
;
	CMP	DWORD [EDI+00H],BYTE 00H
	JE	NEAR	L_57
;
; Line 158:			t = _elapsed_time() - proclink->starttime;
;
	MOV	EAX,DWORD [EDI+00H]
	PUSH	EAX
	CALL	__elapsed_time
	MOV	ECX,EAX
	POP	EAX
	SUB	ECX,DWORD [EAX+010H]
	MOV	EBX,ECX
;
; Line 159:			if (t < 0) t = - t;
;
	TEST	EBX,EBX
	JGE	SHORT	L_59
	NEG	EBX
L_59:
;
; Line 160:			proclink->time += t - fnoverhead;
;
	MOV	EAX,EBX
	SUB	EAX,DWORD [_fnoverhead]
	MOV	ECX,DWORD [EDI+00H]
	ADD	DWORD [ECX+0CH],EAX
;
; Line 161:		}
;
L_57:
;
; Line 163:		profiling = 0;
;
	MOV	DWORD [_profiling],00H
;
; Line 164:		p = HashIt(name);
;
	PUSH	DWORD [EBP+08H]
	CALL	_HashIt
	POP	ECX
	MOV	ESI,EAX
;
; Line 165:		if (!p) {
;
	TEST	ESI,ESI
	JNE	SHORT	L_61
;
; Line 166:			profileincomplete = 1;
;
	MOV	DWORD [_profileincomplete],01H
;
; Line 167:			return;
;
	JMP	L_56
L_61:
;
; Line 169:		profiling = 1;
;
	MOV	DWORD [_profiling],01H
;
; Line 170:		p->link = proclink;
;
	MOV	EAX,DWORD [EDI+00H]
	MOV	DWORD [ESI+04H],EAX
;
; Line 171:		proclink = p;
;
	MOV	DWORD [EDI+00H],ESI
;
; Line 172:		p->count++;
;
	INC	DWORD [ESI+014H]
;
; Line 173:		p->starttime = _elapsed_time();
;
	CALL	__elapsed_time
	MOV	DWORD [ESI+010H],EAX
;
; Line 175:	}
;
L_56:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	__profile_out]
;
; Line 177:	{
;
__profile_out:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD _proclink
;
; Line 179:		if (!profiling || !proclink)
;
	CMP	DWORD [_profiling],BYTE 00H
	JE	SHORT	L_65
	CMP	DWORD [ESI+00H],BYTE 00H
	JNE	SHORT	L_63
L_65:
;
; Line 180:			return;
;
	JMP	L_66
L_63:
;
; Line 181:		t = _elapsed_time() - proclink->starttime;
;
	MOV	EAX,DWORD [ESI+00H]
	PUSH	EAX
	CALL	__elapsed_time
	MOV	ECX,EAX
	POP	EAX
	SUB	ECX,DWORD [EAX+010H]
	MOV	EBX,ECX
;
; Line 182:		if (t < 0) t = - t;
;
	TEST	EBX,EBX
	JGE	SHORT	L_67
	NEG	EBX
L_67:
;
; Line 183:		proclink->time += t - fnoverhead;
;
	MOV	EAX,EBX
	SUB	EAX,DWORD [_fnoverhead]
	MOV	ECX,DWORD [ESI+00H]
	ADD	DWORD [ECX+0CH],EAX
;
; Line 184:		proclink = proclink->link;
;
	MOV	EAX,DWORD [ESI+00H]
	MOV	EAX,DWORD [EAX+04H]
	MOV	DWORD [ESI+00H],EAX
;
; Line 185:		if (proclink)
;
	CMP	DWORD [ESI+00H],BYTE 00H
	JE	SHORT	L_69
;
; Line 186:			proclink->starttime = _elapsed_time();
;
	CALL	__elapsed_time
	MOV	ECX,DWORD [ESI+00H]
	MOV	DWORD [ECX+010H],EAX
L_69:
;
; Line 187:	}
;
L_66:
	POP	ESI
	POP	EBX
	POP	EBP
	RET

	TIMES $$-$ & 3 NOP
L_42:
	DD	0ffbH
L_38:
	DD	064H

SECTION _STRING
L_17:
	DB	025H,033H,032H,073H,03AH,020H,025H,030H,032H,064H,025H,025H
	DB	020H,028H,074H,069H,06DH,065H,03AH,025H,031H,030H,064H,029H
	DB	020H,028H,063H,06FH,075H,06EH,074H,03AH,025H,031H,030H,064H
	DB	029H,020H,028H,061H,076H,067H,03AH,025H,031H,030H,064H,029H
	DB	0AH,00H
L_16:
	DB	050H,072H,06FH,066H,069H,06CH,065H,020H,069H,06EH,066H,06FH
	DB	03AH,020H,028H,074H,069H,06DH,065H,03AH,020H,025H,031H,030H
	DB	064H,02CH,020H,063H,061H,06CH,06CH,073H,03AH,020H,025H,031H
	DB	030H,064H,029H,0AH,0AH,00H
L_15:
	DB	043H,061H,06EH,027H,074H,020H,06FH,070H,065H,06EH,020H,070H
	DB	072H,06FH,066H,069H,06CH,065H,020H,06FH,075H,074H,070H,075H
	DB	074H,020H,066H,069H,06CH,065H,00H
L_14:
	DB	077H,00H
L_13:
	DB	02EH,070H,072H,066H,00H
L_12:
	DB	043H,061H,06EH,027H,074H,020H,061H,06CH,06CH,06FH,063H,061H
	DB	074H,065H,020H,070H,072H,06FH,066H,069H,06CH,065H,020H,073H
	DB	06FH,072H,074H,020H,06CH,069H,073H,074H,00H
L_11:
	DB	04EH,06FH,074H,020H,065H,06EH,06FH,075H,067H,068H,020H,06DH
	DB	065H,06DH,06FH,072H,079H,020H,074H,06FH,020H,070H,065H,072H
	DB	066H,06FH,072H,06DH,020H,070H,072H,06FH,066H,069H,06CH,069H
	DB	06EH,067H,00H
L_10:
	DB	024H,024H,024H,050H,052H,04FH,046H,049H,04CH,045H,052H,00H
SECTION _DATA

_profiling	DD	00H

_profileincomplete	DD	00H

_profnames	DD	00H
SECTION _BSS

_proclink	RESB	04H

_hashtab	RESB	03FECH

_fnoverhead	RESB	04H
SECTION cstartup
	DD	_init_profile,111
SECTION crundown
	DD	_show_profile,19

SECTION _TEXT
[EXTERN	_fprintf]
[EXTERN	_fopen]
[EXTERN	__elapsed_time]
[EXTERN	_qsort]
[EXTERN	_malloc]
[EXTERN	_fclose]
[EXTERN	_strrchr]
[EXTERN	_printf]

SECTION _DATA
[EXTERN	__argv_arr]
[EXTERN	__pstreams]
