	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	_localtime]
;
; Line 6:	{
;
_localtime:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
;
; Line 7:		struct tm *t = gmtime(time);
;
	PUSH	DWORD [EBP+08H]
	CALL	_gmtime
	POP	ECX
	MOV	ESI,EAX
;
; Line 9:		if (t->tm_hour > 23) {
;
	CMP	DWORD [ESI+08H],BYTE 017H
	JLE	NEAR	L_1
;
; Line 10:			t->tm_hour -= 24;
;
	SUB	DWORD [ESI+08H],BYTE 018H
;
; Line 11:			t->tm_mday++;
;
	INC	DWORD [ESI+0CH]
;
; Line 12:			if (_monthdays[t->tm_mon] < t->tm_mday) {
;
	MOV	EAX,DWORD [ESI+010H]
	MOVSX	EAX,BYTE [EAX+__monthdays+00H]
	CMP	EAX,DWORD [ESI+0CH]
	JGE	SHORT	L_3
;
; Line 13:				t->tm_mon++;
;
	INC	DWORD [ESI+010H]
;
; Line 14:				t->tm_mday = 1;
;
	MOV	DWORD [ESI+0CH],01H
;
; Line 15:				if (t->tm_mon > 12) {
;
	CMP	DWORD [ESI+010H],BYTE 0CH
	JLE	SHORT	L_5
;
; Line 16:					t->tm_mon = 1;
;
	MOV	DWORD [ESI+010H],01H
;
; Line 17:					t->tm_year++;
;
	INC	DWORD [ESI+014H]
;
; Line 18:				}
;
L_5:
;
; Line 19:			}
;
L_3:
;
; Line 20:		}
;
L_1:
;
; Line 21:		return t;
;
	MOV	EAX,ESI
L_7:
	POP	ESI
	POP	EBP
	RET


SECTION _TEXT
[EXTERN	_gmtime]

SECTION _DATA
[EXTERN	__monthdays]
