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

SECTION _TEXT
[GLOBAL	_RadioButtonProc]
;
; Line 7:	int RadioButtonProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
;
_RadioButtonProc:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 014H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+08H]
	MOV	ESI,DWORD [EBP+010H]
	LEA	EDI,[EBP-014H]
L_3:
;
; Line 8:	{
;
;
; Line 10:	DBOX *db = GetParent(wnd)->extension;
;
	MOV	EAX,DWORD [EBX+03CH]
	MOV	EAX,DWORD [EAX+06CH]
	MOV	DWORD [EBP-08H],EAX
;
; Line 11:	CTLWINDOW *ct = GetControl(wnd);
;
	MOV	EAX,DWORD [EBX+0108H]
	MOV	DWORD [EBP-04H],EAX
;
; Line 12:	if (ct != NULL)    {
;
	CMP	DWORD [EBP-04H],BYTE 00H
	JE	NEAR	L_4
;
; Line 13:	switch (msg)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 0CH
	JE	SHORT	L_9
	JA	SHORT	L_13
	CMP	EAX,BYTE 09H
	JE	SHORT	L_10
	JA	NEAR	L_7
	CMP	EAX,BYTE 08H
	JE	SHORT	L_8
	JMP	NEAR	L_7
L_13:
	CMP	EAX,BYTE 024H
	JE	NEAR	L_12
	JA	NEAR	L_7
	CMP	EAX,BYTE 015H
	JE	NEAR	L_11
	JMP	NEAR	L_7
L_8:
;
; Line 15:	if (!(int)p1)
;
	TEST	ESI,ESI
	JNE	SHORT	L_14
;
; Line 16:	SendMessage(NULL, HIDE_CURSOR, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 01AH
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_14:
;
; Line 17:	case MOVE:
;
L_9:
;
; Line 18:	rtn = BaseWndProc(RADIOBUTTON,wnd,msg,p1,p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	EBX
	MOV	EAX,DWORD [_classdefs+0A8H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	DWORD [EBP-0CH],EAX
;
; Line 19:	SetFocusCursor(wnd);
;
	PUSH	EBX
	CALL	_SetFocusCursor
	POP	ECX
;
; Line 20:	return rtn;
;
	MOV	EAX,DWORD [EBP-0CH]
	JMP	SHORT	L_2
L_10:
;
; Line 22:	char rb[] = "( )";
;
	MOV	EAX,DWORD [L_1]
	MOV	DWORD [SS:EDI+00H],EAX
;
; Line 23:	if (ct->setting)
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	DWORD [EAX+028H],BYTE 00H
	JE	SHORT	L_16
;
; Line 24:	rb[1] = 7;
;
	MOV	BYTE [SS:EDI+01H],07H
L_16:
;
; Line 25:	SendMessage(wnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 26:	SendMessage(wnd, ADDTEXT, (PARAM) rb, 0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 030H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 27:	SetFocusCursor(wnd);
;
	PUSH	EBX
	CALL	_SetFocusCursor
	POP	ECX
;
; Line 28:	break;
;
	JMP	SHORT	L_6
L_11:
;
; Line 31:	if ((int)p1 != ' ')
;
	CMP	ESI,BYTE 020H
	JNE	SHORT	L_6
;
; Line 32:	break;
;
L_18:
;
; Line 33:	case LEFT_BUTTON:
;
L_12:
;
; Line 34:	SetRadioButton(db, ct);
;
	PUSH	DWORD [EBP-04H]
	PUSH	DWORD [EBP-08H]
	CALL	_SetRadioButton
	ADD	ESP,BYTE 08H
;
; Line 35:	break;
;
	JMP	SHORT	L_6
L_7:
;
; Line 37:	break;
;
	JMP	SHORT	L_6
L_6:
L_4:
;
; Line 40:	return BaseWndProc(RADIOBUTTON, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	EBX
	MOV	EAX,DWORD [_classdefs+0A8H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
L_2:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_SetRadioButton]
;
; Line 45:	void SetRadioButton(DBOX *db, CTLWINDOW *ct)
;
_SetRadioButton:
	PUSH	EBP
	MOV	EBP,ESP
L_21:
;
; Line 46:	{
;
;
; Line 47:	Setting = FALSE;
;
	MOV	DWORD [_Setting],00H
;
; Line 48:	PushRadioButton(db, ct->command);
;
	MOV	EAX,DWORD [EBP+0CH]
	MOVSX	EAX,WORD [EAX+01CH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_PushRadioButton
	ADD	ESP,BYTE 08H
;
; Line 49:	Setting = TRUE;
;
	MOV	DWORD [_Setting],01H
;
; Line 50:	}
;
L_20:
	POP	EBP
	RET
[GLOBAL	_PushRadioButton]
;
; Line 52:	void PushRadioButton(DBOX *db, enum commands cmd)
;
_PushRadioButton:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
L_23:
;
; Line 53:	{
;
;
; Line 54:	CTLWINDOW *ctt = db->ctl;
;
	MOV	EAX,DWORD [EBP+08H]
	ADD	EAX,BYTE 018H
	MOV	DWORD [EBP-04H],EAX
;
; Line 55:	CTLWINDOW *ct = FindCommand(db, cmd, RADIOBUTTON);
;
	PUSH	BYTE 0EH
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	ESI,EAX
;
; Line 58:	if (ct == NULL)
;
	TEST	ESI,ESI
	JE	NEAR	L_22
;
; Line 59:	return;
;
L_24:
	MOV	EBX,00H
	JMP	SHORT	L_28
L_26:
;
; Line 67:	rct[i] = NULL;
;
	MOV	DWORD [EBX*4+_rct+00H],00H
;
; Line 66:	for (i = 0; i < MAXRADIOS; i++)
;
L_27:
	INC	EBX
L_28:
	CMP	EBX,BYTE 014H
	JL	SHORT	L_26
L_29:
	JMP	SHORT	L_30
L_32:
;
; Line 69:	if (ctt->Class == RADIOBUTTON)
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	DWORD [EAX+014H],BYTE 0EH
	JNE	SHORT	L_33
;
; Line 70:	if (ct->dwnd.x == ctt->dwnd.x)
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	ECX,DWORD [ESI+04H]
	CMP	ECX,DWORD [EAX+04H]
	JNE	SHORT	L_35
;
; Line 71:	rct[ctt->dwnd.y] = ctt;
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	EAX,DWORD [EAX+08H]
	MOV	ECX,DWORD [EBP-04H]
	MOV	DWORD [EAX*4+_rct+00H],ECX
L_35:
L_33:
;
; Line 72:	ctt++;
;
	ADD	DWORD [EBP-04H],BYTE 030H
L_30:
;
; Line 68:	while (ctt->Class)    {
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	DWORD [EAX+014H],BYTE 00H
	JNE	SHORT	L_32
L_31:
;
; Line 76:	i = ct->dwnd.y;
;
	MOV	EBX,DWORD [ESI+08H]
	JMP	SHORT	L_37
L_39:
;
; Line 78:	--i;
;
	DEC	EBX
L_37:
;
; Line 77:	while (i >= 0 && rct[i] != NULL)
;
	TEST	EBX,EBX
	JL	SHORT	L_40
	CMP	DWORD [EBX*4+_rct+00H],BYTE 00H
	JNE	SHORT	L_39
L_40:
L_38:
	JMP	SHORT	L_41
L_43:
;
; Line 81:	rct[i--] = NULL;
;
	MOV	EAX,EBX
	DEC	EBX
	MOV	DWORD [EAX*4+_rct+00H],00H
L_41:
;
; Line 80:	while (i >= 0)
;
	TEST	EBX,EBX
	JGE	SHORT	L_43
L_42:
;
; Line 84:	i = ct->dwnd.y;
;
	MOV	EBX,DWORD [ESI+08H]
	JMP	SHORT	L_44
L_46:
;
; Line 86:	i++;
;
	INC	EBX
L_44:
;
; Line 85:	while (i < MAXRADIOS && rct[i] != NULL)
;
	CMP	EBX,BYTE 014H
	JGE	SHORT	L_47
	CMP	DWORD [EBX*4+_rct+00H],BYTE 00H
	JNE	SHORT	L_46
L_47:
L_45:
	JMP	SHORT	L_48
L_50:
;
; Line 89:	rct[i++] = NULL;
;
	MOV	EAX,EBX
	INC	EBX
	MOV	DWORD [EAX*4+_rct+00H],00H
L_48:
;
; Line 88:	while (i < MAXRADIOS)
;
	CMP	EBX,BYTE 014H
	JL	SHORT	L_50
L_49:
	MOV	EBX,00H
	JMP	SHORT	L_53
L_51:
;
; Line 92:	if (rct[i] != NULL)    {
;
	CMP	DWORD [EBX*4+_rct+00H],BYTE 00H
	JE	SHORT	L_55
;
; Line 93:	int wason = rct[i]->setting;
;
	MOV	EAX,DWORD [EBX*4+_rct+00H]
	MOV	EDI,DWORD [EAX+028H]
;
; Line 94:	rct[i]->setting = OFF;
;
	MOV	EAX,DWORD [EBX*4+_rct+00H]
	MOV	DWORD [EAX+028H],00H
;
; Line 95:	if (Setting)
;
	CMP	DWORD [_Setting],BYTE 00H
	JE	SHORT	L_57
;
; Line 96:	rct[i]->isetting = OFF;
;
	MOV	EAX,DWORD [EBX*4+_rct+00H]
	MOV	DWORD [EAX+024H],00H
L_57:
;
; Line 97:	if (wason)
;
	TEST	EDI,EDI
	JE	SHORT	L_59
;
; Line 98:	SendMessage(rct[i]->wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	MOV	EAX,DWORD [EBX*4+_rct+00H]
	PUSH	DWORD [EAX+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_59:
L_55:
;
; Line 91:	for (i = 0; i < MAXRADIOS; i++)    {
;
L_52:
	INC	EBX
L_53:
	CMP	EBX,BYTE 014H
	JL	SHORT	L_51
L_54:
;
; Line 102:	ct->setting = ON;
;
	MOV	DWORD [ESI+028H],01H
;
; Line 103:	if (Setting)
;
	CMP	DWORD [_Setting],BYTE 00H
	JE	SHORT	L_61
;
; Line 104:	ct->isetting = ON;
;
	MOV	DWORD [ESI+024H],01H
L_61:
;
; Line 105:	SendMessage(ct->wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 106:	}
;
L_22:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_RadioButtonSetting]
;
; Line 108:	BOOL RadioButtonSetting(DBOX *db, enum commands cmd)
;
_RadioButtonSetting:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_64:
;
; Line 109:	{
;
;
; Line 110:	CTLWINDOW *ct = FindCommand(db, cmd, RADIOBUTTON);
;
	PUSH	BYTE 0EH
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	ESI,EAX
;
; Line 111:	return ct ? (ct->wnd ? (ct->setting==ON) : (ct->isetting==ON)) : FALSE;
;
	TEST	ESI,ESI
	JE	SHORT	L_65
	CMP	DWORD [ESI+02CH],BYTE 00H
	JE	SHORT	L_67
	CMP	DWORD [ESI+028H],BYTE 01H
	SETE	AL
	MOVZX	EAX,AL
	JMP	SHORT	L_68
L_67:
	CMP	DWORD [ESI+024H],BYTE 01H
	SETE	AL
	MOVZX	EAX,AL
L_68:
	JMP	SHORT	L_66
L_65:
	MOV	EAX,00H
L_66:
L_63:
	POP	ESI
	POP	EBP
	RET
SECTION _DATA

L_1	DB	028H,020H,029H,00H

_Setting	DD	01H
SECTION _BSS

_rct	RESB	050H
SECTION _CONST

SECTION _TEXT
[EXTERN	_FindCommand]
[EXTERN	_classdefs]
[EXTERN	_SetFocusCursor]
[EXTERN	_SendMessage]
