	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
[GLOBAL	__ll_gettime]
;
; Line 13:	{
;
__ll_gettime:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 010H
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	LEA	EDI,[EBP+0FFFFFFF0H]
;
; Line 15:		GetLocalTime(&timex) ;
;
	PUSH	EDI
	CALL	GetLocalTime
;
; Line 17:	  tm2->tm_sec = timex.wSecond;
;
	MOVZX	EAX,WORD [EDI+0CH]
	MOV	DWORD [ESI+00H],EAX
;
; Line 18:	  tm2->tm_min = timex.wMinute;
;
	MOVZX	EAX,WORD [EDI+0AH]
	MOV	DWORD [ESI+04H],EAX
;
; Line 19:	  tm2->tm_hour = timex.wHour;
;
	MOVZX	EAX,WORD [EDI+08H]
	MOV	DWORD [ESI+08H],EAX
;
; Line 21:	  tm2->tm_mday = timex.wDay;
;
	MOVZX	EAX,WORD [EDI+06H]
	MOV	DWORD [ESI+0CH],EAX
;
; Line 22:	  tm2->tm_mon = timex.wMonth-1;
;
	MOVZX	EAX,WORD [EDI+02H]
	DEC	EAX
	MOV	DWORD [ESI+010H],EAX
;
; Line 23:	  tm2->tm_year = timex.wYear-1900;
;
	MOVZX	EAX,WORD [EDI+00H]
	SUB	EAX,076CH
	MOV	DWORD [ESI+014H],EAX
;
; Line 24:		return tm2;
;
	MOV	EAX,ESI
L_1:
	POP	EDI
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__ll_ticks]
;
; Line 27:	{
;
__ll_ticks:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 010H
;
; Line 29:		GetLocalTime(&timex);
;
	LEA	EAX,[EBP+0FFFFFFF0H]
	PUSH	EAX
	CALL	GetLocalTime
;
; Line 30:		return timex.wMilliseconds ;
;
	MOVZX	EAX,WORD [EBP+0FFFFFFFEH]
L_2:
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__ll_getenv]
;
; Line 33:	{
;
__ll_getenv:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
;
; Line 34:		int count = 0 ;
;
	MOV	EBX,00H
;
; Line 36:		char *env = _osenv ;
;
	MOV	ESI,DWORD [__osenv]
;
; Line 37:		if (buf) {
;
	TEST	EDI,EDI
	JE	NEAR	L_3
	JMP	L_5
L_7:
	JMP	L_8
L_10:
	INC	ESI
L_8:
;
; Line 39:				while (*env) env++ ;
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	SHORT	L_10
L_9:
;
; Line 40:				if (*++env == 0)
;
	INC	ESI
	MOVSX	EAX,BYTE [ESI+00H]
	TEST	EAX,EAX
	JNE	SHORT	L_11
;
; Line 41:					return 0;
;
	MOV	EAX,00H
	JMP	L_13
L_11:
;
; Line 42:			}
;
L_5:
;
; Line 38:			while (id--) {
;
	MOV	EAX,DWORD [EBP+0CH]
	DEC	DWORD [EBP+0CH]
	TEST	EAX,EAX
	JNE	NEAR	L_7
L_6:
;
; Line 43:			strcpy(buf,env) ;
;
	PUSH	ESI
	PUSH	EDI
	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 44:			return (int)env ;
;
	MOV	EAX,ESI
	JMP	L_13
L_3:
;
; Line 46:			if (!*env)
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	SHORT	L_14
;
; Line 47:				return 0 ;
;
	MOV	EAX,00H
	JMP	L_13
L_14:
;
; Line 48:			do {
;
L_16:
;
; Line 49:				count++ ;
;
	INC	EBX
	JMP	L_18
L_20:
	INC	ESI
L_18:
;
; Line 50:				while (*env) env++ ;
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	SHORT	L_20
L_19:
;
; Line 51:				env++ ;
;
	INC	ESI
;
; Line 52:			} while (*env) ;
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	SHORT	L_16
L_17:
;
; Line 53:			return count ;
;
	MOV	EAX,EBX
L_4:
;
; Line 55:	}	
;
L_13:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET

SECTION _DATA
SECTION _BSS
[GLOBAL	_errno]

_errno	RESB	04H
[GLOBAL	__dos_errno]

__dos_errno	RESB	04H

SECTION _TEXT
[EXTERN	GetLocalTime]

SECTION _DATA
[EXTERN	__osenv]
