	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 10:	{
;
__scanf:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,020CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	LEA	EBX,[EBP+0FFFFFFFCH]
	MOV	EDI,DWORD __ctype
;
; Line 11:		int i = 0,j=0;
;
	MOV	DWORD [EBP+0FFFFFDF4H],00H
	MOV	DWORD [EBP+0FFFFFDF8H],00H
;
; Line 12:		char p[512],*buffer = p ;
;
	LEA	EAX,[EBP+0FFFFFDFCH]
	MOV	DWORD [EBX+00H],EAX
;
; Line 13:		buffer[0] = 0 ;
;
	MOV	EAX,DWORD [EBX+00H]
	MOV	BYTE [EAX+00H],00H
	JMP	L_1
L_3:
;
; Line 15:			if (!*buffer) {
;
	MOV	EAX,DWORD [EBX+00H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JNE	SHORT	L_4
;
; Line 16:				fgets(p,512,(_pstreams[0]));
;
	PUSH	DWORD [__pstreams]
	PUSH	DWORD 0200H
	LEA	EAX,[EBP+0FFFFFDFCH]
	PUSH	EAX
	CALL	_fgets
	ADD	ESP,BYTE 0CH
;
; Line 17:				buffer = p;
;
	LEA	EAX,[EBP+0FFFFFDFCH]
	MOV	DWORD [EBX+00H],EAX
;
; Line 18:			}
;
L_4:
	JMP	L_6
L_8:
;
; Line 20:				if ((_ctype[ (*format) ] & (1            ))) {
;
	MOVSX	EAX,BYTE [ESI+00H]
	MOVZX	EAX,BYTE [EDI+EAX+00H]
	AND	EAX,BYTE 01H
	JE	NEAR	L_9
;
; Line 21:					if (!(_ctype[ (*buffer) ] & (1            )))
;
	MOV	EAX,DWORD [EBX+00H]
	MOVSX	EAX,BYTE [EAX+00H]
	MOVZX	EAX,BYTE [EDI+EAX+00H]
	AND	EAX,BYTE 01H
	JNE	SHORT	L_11
;
; Line 22:						return i;
;
	MOV	EAX,DWORD [EBP+0FFFFFDF4H]
	JMP	L_13
L_11:
;
; Line 23:					while ((_ctype[ (*++buffer) ] & (1            )) && *buffer);
;
L_14:
	INC	DWORD [EBX+00H]
	MOV	EAX,DWORD [EBX+00H]
	MOVSX	EAX,BYTE [EAX+00H]
	MOVZX	EAX,BYTE [EDI+EAX+00H]
	AND	EAX,BYTE 01H
	JE	SHORT	L_15
	MOV	EAX,DWORD [EBX+00H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JNE	NEAR	L_14
L_15:
;
; Line 24:					while ((_ctype[ (*++format) ] & (1            )) && *format);
;
L_16:
	INC	ESI
	MOVSX	EAX,BYTE [ESI+00H]
	MOVZX	EAX,BYTE [EDI+EAX+00H]
	AND	EAX,BYTE 01H
	JE	SHORT	L_17
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	SHORT	L_16
L_17:
;
; Line 25:				}
;
	JMP	L_10
L_9:
;
; Line 27:					if (*format++ != *buffer++)
;
	MOV	EAX,DWORD [EBX+00H]
	INC	DWORD [EBX+00H]
	MOV	ECX,ESI
	INC	ESI
	MOV	CL,BYTE [ECX+00H]
	CMP	CL,BYTE [EAX+00H]
	JE	SHORT	L_18
;
; Line 28:						return i;
;
	MOV	EAX,DWORD [EBP+0FFFFFDF4H]
	JMP	L_13
L_18:
;
; Line 29:				}
;
L_10:
;
; Line 30:			}
;
L_6:
;
; Line 19:			while (*format != '%' && *format && *buffer) {
;
	MOVSX	EAX,BYTE [ESI+00H]
	CMP	EAX,BYTE 025H
	JE	SHORT	L_20
	CMP	BYTE [ESI+00H],BYTE 00H
	JE	SHORT	L_20
	MOV	EAX,DWORD [EBX+00H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JNE	NEAR	L_8
L_20:
L_7:
;
; Line 31:			if (*format && *buffer) {
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JE	NEAR	L_21
	MOV	EAX,DWORD [EBX+00H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JE	NEAR	L_21
;
; Line 32:				format++;
;
	INC	ESI
;
; Line 33:				format = __strtoone(&buffer,format,((char **)arglist)[i],&i,&j);
;
	LEA	EAX,[EBP+0FFFFFDF8H]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFDF4H]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+0CH]
	MOV	ECX,DWORD [EBP+0FFFFFDF4H]
	PUSH	DWORD [EAX+ECX*4+00H]
	PUSH	ESI
	PUSH	EBX
	CALL	___strtoone
	ADD	ESP,BYTE 014H
	MOV	ESI,EAX
;
; Line 34:			}
;
L_21:
;
; Line 35:		}
;
L_1:
;
; Line 14:		while (format && *format) {
;
	TEST	ESI,ESI
	JE	SHORT	L_23
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	NEAR	L_3
L_23:
L_2:
;
; Line 36:		return(i);
;
	MOV	EAX,DWORD [EBP+0FFFFFDF4H]
L_13:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_scanf]
;
; Line 39:	{
;
_scanf:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 40:		return _scanf(format,((char *)&format+sizeof(char *)));
;
	LEA	EAX,[EBP+08H]
	ADD	EAX,BYTE 04H
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	__scanf
	ADD	ESP,BYTE 08H
L_24:
	POP	EBP
	RET


SECTION _TEXT
[EXTERN	___strtoone]
[EXTERN	_fgets]

SECTION _DATA
[EXTERN	__pstreams]
[EXTERN	__ctype]
