	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 15:	{
;
_argset:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0260H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD __argv_arr
;
; Line 18:		char *_cmdline = _oscmd ;
;
	MOV	ESI,DWORD [__oscmd]
;
; Line 19:	  int inquote = 0 ;
;
	MOV	EBX,00H
;
; Line 20:		_argc = 0;
;
	MOV	DWORD [__argc],00H
	JMP	L_1
L_3:
	JMP	L_4
L_6:
	INC	ESI
L_4:
;
; Line 22:			while ((_ctype[ (*_cmdline) ] & (1            ))) _cmdline++;
;
	MOVSX	EAX,BYTE [ESI+00H]
	MOVZX	EAX,BYTE [EAX+__ctype+00H]
	AND	EAX,BYTE 01H
	JNE	SHORT	L_6
L_5:
;
; Line 23:			if (*_cmdline) {
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JE	NEAR	L_7
;
; Line 24:				int i = 0;
;
	MOV	DWORD [EBP+0FFFFFDA0H],00H
	JMP	L_9
L_11:
;
; Line 26:					if (*_cmdline == '"') {
;
	MOVSX	EAX,BYTE [ESI+00H]
	CMP	EAX,BYTE 022H
	JNE	SHORT	L_12
;
; Line 27:						inquote = !inquote ;
;
	TEST	EBX,EBX
	SETE	AL
	MOVZX	EAX,AL
	MOV	EBX,EAX
;
; Line 28:						_cmdline++ ;
;
	INC	ESI
;
; Line 29:						continue ;
;
	JMP	L_9
L_12:
;
; Line 31:					buf[i++] = *_cmdline++;
;
	MOV	EAX,ESI
	INC	ESI
	MOV	ECX,DWORD [EBP+0FFFFFDA0H]
	INC	DWORD [EBP+0FFFFFDA0H]
	MOV	AL,BYTE [EAX+00H]
	MOV	BYTE [EBP+ECX+0FFFFFDA4H],AL
;
; Line 32:				}
;
L_9:
;
; Line 25:				while ((inquote || !(_ctype[ (*_cmdline) ] & (1            ))) && *_cmdline)  {
;
	TEST	EBX,EBX
	JNE	SHORT	L_15
	MOVSX	EAX,BYTE [ESI+00H]
	MOVZX	EAX,BYTE [EAX+__ctype+00H]
	AND	EAX,BYTE 01H
	JNE	SHORT	L_14
L_15:
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	NEAR	L_11
L_14:
L_10:
;
; Line 33:				buf[i++] = 0;
;
	MOV	EAX,DWORD [EBP+0FFFFFDA0H]
	INC	DWORD [EBP+0FFFFFDA0H]
	MOV	BYTE [EBP+EAX+0FFFFFDA4H],00H
;
; Line 34:				bufp[_argc++] = strdup(buf) ;
;
	LEA	EAX,[EBP+0FFFFFDA4H]
	PUSH	EAX
	CALL	_strdup
	POP	ECX
	MOV	ECX,DWORD [__argc]
	INC	DWORD [__argc]
	MOV	DWORD [EBP+ECX*4+0FFFFFE6CH],EAX
;
; Line 35:			}
;
L_7:
;
; Line 36:		}
;
L_1:
;
; Line 21:		while (*_cmdline) {
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	NEAR	L_3
L_2:
;
; Line 37:		_argv_arr = calloc((_argc+1),sizeof(char *));
;
	PUSH	BYTE 04H
	MOV	EAX,DWORD [__argc]
	INC	EAX
	PUSH	EAX
	CALL	_calloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [EDI+00H],EAX
;
; Line 38:		memcpy(_argv_arr,bufp,_argc*sizeof(char *));
;
	MOV	ECX,DWORD [__argc]
	SAL	ECX,02H
	LEA	EAX,[EBP+0FFFFFE6CH]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EAX
	MOV	EDI,DWORD [EDI+00H]
	CLD
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
;
; Line 39:		_passed_name = _argv_arr[0] ;
;
	MOV	EAX,DWORD [EDI+00H]
	MOV	EAX,DWORD [EAX+00H]
	MOV	DWORD [__passed_name],EAX
;
; Line 40:		GetModuleFileNameA(_hinstance,buf,200) ;
;
	PUSH	DWORD 0C8H
	LEA	EAX,[EBP+0FFFFFDA4H]
	PUSH	EAX
	PUSH	DWORD [__hinstance]
	CALL	GetModuleFileNameA
;
; Line 41:		_argv_arr[0] = strdup(buf) ;
;
	LEA	EAX,[EBP+0FFFFFDA4H]
	PUSH	EAX
	CALL	_strdup
	POP	ECX
	MOV	ECX,DWORD [EDI+00H]
	MOV	DWORD [ECX+00H],EAX
;
; Line 42:	}
;
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET

SECTION _DATA
SECTION _BSS
[GLOBAL	__argc]

__argc	RESB	04H
[GLOBAL	__argv_arr]

__argv_arr	RESB	04H
[GLOBAL	__passed_name]

__passed_name	RESB	04H
SECTION cstartup
	DD	_argset,15

SECTION _TEXT
[EXTERN	_calloc]
[EXTERN	_strdup]
[EXTERN	GetModuleFileNameA]

SECTION _DATA
[EXTERN	__hinstance]
[EXTERN	__oscmd]
[EXTERN	__ctype]
