	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 9:	{
;
_xceptionhandle:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
;
; Line 11:		int signum = -1,rv = 0;
;
	MOV	EBX,0FFFFFFFFH
	MOV	ESI,00H
;
; Line 12:		switch(er->ExceptionCode) {
;
	MOV	EAX,DWORD [EDI+00H]
	CMP	EAX,DWORD 0C000008FH
	JE	NEAR	L_11
	JA	NEAR	L_21
	CMP	EAX,DWORD 0C0000025H
	JE	NEAR	L_18
	JA	NEAR	L_22
	CMP	EAX,DWORD 080000004H
	JE	NEAR	L_8
	JA	SHORT	L_23
	CMP	EAX,DWORD 080000003H
	JE	NEAR	L_7
	JA	NEAR	L_1
	CMP	EAX,DWORD 080000002H
	JE	NEAR	L_4
	JMP	L_1
L_23:
	CMP	EAX,DWORD 0C0000005H
	JE	NEAR	L_3
	JMP	L_1
L_22:
	CMP	EAX,DWORD 0C000008DH
	JE	NEAR	L_9
	JA	SHORT	L_24
	CMP	EAX,DWORD 0C000008CH
	JE	NEAR	L_5
	JA	NEAR	L_1
	CMP	EAX,DWORD 0C0000026H
	JE	NEAR	L_19
	JMP	L_1
L_24:
	CMP	EAX,DWORD 0C000008EH
	JE	NEAR	L_10
	JMP	L_1
L_21:
	CMP	EAX,DWORD 0C0000094H
	JE	NEAR	L_16
	JA	NEAR	L_25
	CMP	EAX,DWORD 0C0000092H
	JE	NEAR	L_14
	JA	SHORT	L_26
	CMP	EAX,DWORD 0C0000091H
	JE	NEAR	L_13
	JA	NEAR	L_1
	CMP	EAX,DWORD 0C0000090H
	JE	NEAR	L_12
	JMP	L_1
L_26:
	CMP	EAX,DWORD 0C0000093H
	JE	NEAR	L_15
	JMP	L_1
L_25:
	CMP	EAX,DWORD 0C0000096H
	JE	NEAR	L_6
	JA	SHORT	L_27
	CMP	EAX,DWORD 0C0000095H
	JE	NEAR	L_17
	JMP	L_1
L_27:
	CMP	EAX,DWORD 0C00000FDH
	JE	SHORT	L_20
	JMP	L_1
L_3:
L_4:
L_5:
;
; Line 16:				signum = 11               ;
;
	MOV	EBX,0BH
;
; Line 17:				break ;
;
	JMP	L_2
L_6:
;
; Line 19:				signum = 4               ;
;
	MOV	EBX,04H
;
; Line 20:				break ;
;
	JMP	L_2
L_7:
L_8:
;
; Line 23:				return (0) ;
;
	MOV	EAX,00H
	JMP	L_28
L_9:
L_10:
L_11:
L_12:
L_13:
L_14:
L_15:
;
; Line 31:				signum = 8                ;
;
	MOV	EBX,08H
;
; Line 32:				break ;
;
L_16:
;
; Line 34:				break ;
;
L_17:
;
; Line 36:				break ;
;
L_18:
L_19:
;
; Line 39:				break ;
;
L_20:
;
; Line 41:				break ;
;
L_1:
L_2:
;
; Line 43:		if (signum != -1)
;
	CMP	EBX,BYTE 0FFFFFFFFH
	JE	SHORT	L_29
;
; Line 44:			rv = !raise(signum);
;
	PUSH	EBX
	CALL	_raise
	POP	ECX
	TEST	EAX,EAX
	SETE	AL
	MOVZX	EAX,AL
	MOV	ESI,EAX
L_29:
;
; Line 46:		if (!rv) {
;
	TEST	ESI,ESI
	JNE	SHORT	L_31
;
; Line 48:			xx.ExceptionRecord = er ;
;
	MOV	DWORD [EBP+0FFFFFFF8H],EDI
;
; Line 49:			xx.ContextRecord = context ;
;
	MOV	EAX,DWORD [EBP+010H]
	MOV	DWORD [EBP+0FFFFFFFCH],EAX
;
; Line 50:			return UnhandledExceptionFilter(&xx) ;
;
	LEA	EAX,[EBP+0FFFFFFF8H]
	PUSH	EAX
	CALL	UnhandledExceptionFilter
	JMP	L_28
L_31:
;
; Line 52:			return (0) ;
;
	MOV	EAX,00H
L_32:
;
; Line 53:	}
;
L_28:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET	010H
;
; Line 55:	{
;
ControlCHandler:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 56:		raise(21               ) ;
;
	PUSH	BYTE 015H
	CALL	_raise
	POP	ECX
;
; Line 57:			exit(0xff);
;
	PUSH	DWORD 0FFH
	CALL	_exit
	POP	ECX
;
; Line 58:		return 1 ;
;
	MOV	EAX,01H
L_33:
	POP	EBP
	RET	04H
[GLOBAL	__xceptinit]
;
; Line 61:	{
;
__xceptinit:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 62:		_xceptblkptr = block ;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	DWORD [__xceptblkptr],EAX
;
; Line 63:		asm mov eax,[block]
;
	MOV	EAX,DWORD [EBP+08H]
;
; Line 64:	  asm mov [eax+4],offset _xceptionhandle
;
	MOV	DWORD [EAX+04H],DWORD _xceptionhandle
;
; Line 65:		asm mov	ecx,fs:[0]
;
	MOV	ECX,DWORD [FS:00H]
;
; Line 66:		asm mov [eax],ecx
;
	MOV	DWORD [EAX],ECX
;
; Line 67:		asm mov fs:[0],eax
;
	MOV	DWORD [FS:00H],EAX
;
; Line 68:		SetConsoleCtrlHandler(ControlCHandler,1);
;
	PUSH	BYTE 01H
	PUSH	DWORD ControlCHandler
	CALL	SetConsoleCtrlHandler
;
; Line 69:	}
;
	POP	EBP
	RET	04H
[GLOBAL	__xceptrundown]
;
; Line 71:	{
;
__xceptrundown:
;
; Line 72:		asm mov eax,[_xceptblkptr]
;
	MOV	EAX,DWORD [__xceptblkptr]
;
; Line 73:		asm cmp eax,fs:[0]
;
	CMP	EAX,DWORD [FS:00H]
;
; Line 74:	  asm jnz nounset
;
	JNZ	NEAR	L_34
;
; Line 75:		asm mov eax,[eax]
;
	MOV	EAX,DWORD [EAX]
;
; Line 76:		asm mov fs:[0],eax
;
	MOV	DWORD [FS:00H],EAX
L_34:
;
; Line 78:		SetConsoleCtrlHandler(ControlCHandler,0);
;
	PUSH	BYTE 00H
	PUSH	DWORD ControlCHandler
	CALL	SetConsoleCtrlHandler
;
; Line 79:		return ;
;
L_35:
	RET

SECTION _DATA
SECTION _BSS

__xceptblkptr	RESB	04H

SECTION _TEXT
[EXTERN	_raise]
[EXTERN	_exit]
[EXTERN	UnhandledExceptionFilter]
[EXTERN	SetConsoleCtrlHandler]
