	TITLE	e_inc.cpp
	.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
_DATA	SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA	ENDS
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
_BSS	SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS	ENDS
_TLS	SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS	ENDS
CRT$XCA	SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCA	ENDS
CRT$XCU	SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCU	ENDS
CRT$XCL	SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCL	ENDS
CRT$XCC	SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCC	ENDS
CRT$XCZ	SEGMENT DWORD USE32 PUBLIC 'DATA'
CRT$XCZ	ENDS
;	COMDAT ??8@YAHABU_GUID@@0@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _sqrtf
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXFLOAT16@@QAE@XZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXVECTOR3@@QAE@XZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXMATRIX@@QAE@XZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXQUATERNION@@QAE@XZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXVECTOR2@@QAE@MM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXVECTOR4@@QAE@MMMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXMATRIX@@QAE@PBM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXMATRIX@@QAE@ABU_D3DMATRIX@@@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXMATRIX@@QAE@PBUD3DXFLOAT16@@@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXMATRIX@@QAE@MMMMMMMMMMMMMMMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??DD3DXMATRIX@@QBE?AU0@ABU0@@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXQUATERNION@@QAE@MMMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXPLANE@@QAE@MMMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0D3DXCOLOR@@QAE@MMMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?D3DXMatrixIdentity@@YAPAUD3DXMATRIX@@PAU1@@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??0c_v@@QAE@XZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?v3@c_v@@QAEXMMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?v4@c_v@@QAEXMMMM@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_Gc_err@@UAEPAXI@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_Gc_conf@@UAEPAXI@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_Gc_init@@UAEPAXI@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_Gc_app@@UAEPAXI@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_Gc_d3d@@UAEPAXI@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_Gc_inp@@UAEPAXI@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?m4_normalize@c_v@@QAEXXZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?m4_length@c_v@@QAEMXZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?m_set@c_v@@QAEXABU1@@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?m_identity@c_v@@QAEXXZ
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ??_7c_d3d@@6B@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_7c_conf@@6B@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_7c_init@@6B@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_7c_inp@@6B@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_7c_err@@6B@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_7c_app@@6B@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
FLAT	GROUP _DATA, CONST, _BSS, CRT$XCA, CRT$XCU, CRT$XCL, CRT$XCC, CRT$XCZ
	ASSUME	CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC	?e_conf@@3PAUc_conf@@A				; e_conf
PUBLIC	?e_err@@3PAUc_err@@A				; e_err
PUBLIC	?e_app@@3PAUc_app@@A				; e_app
PUBLIC	?e_init@@3PAUc_init@@A				; e_init
PUBLIC	?e_render@@3PAUc_render@@A			; e_render
PUBLIC	?e_d3d@@3PAUc_d3d@@A				; e_d3d
PUBLIC	?e_x@@3PAUc_x@@A				; e_x
PUBLIC	?e_fx@@3PAUc_fx@@A				; e_fx
PUBLIC	?e_inp@@3PAUc_inp@@A				; e_inp
PUBLIC	?e_v@@3PAUc_v@@A				; e_v
_BSS	SEGMENT
?e_conf@@3PAUc_conf@@A DD 01H DUP (?)			; e_conf
?e_err@@3PAUc_err@@A DD 01H DUP (?)			; e_err
?e_app@@3PAUc_app@@A DD 01H DUP (?)			; e_app
?e_init@@3PAUc_init@@A DD 01H DUP (?)			; e_init
?e_render@@3PAUc_render@@A DD 01H DUP (?)		; e_render
?e_d3d@@3PAUc_d3d@@A DD 01H DUP (?)			; e_d3d
?e_x@@3PAUc_x@@A DD 01H DUP (?)				; e_x
?e_fx@@3PAUc_fx@@A DD 01H DUP (?)			; e_fx
?e_inp@@3PAUc_inp@@A DD 01H DUP (?)			; e_inp
?e_v@@3PAUc_v@@A DD 01H DUP (?)				; e_v
_BSS	ENDS
CRT$XCU	SEGMENT
_$S3	DD	FLAT:_$E2
_$S6	DD	FLAT:_$E5
_$S9	DD	FLAT:_$E8
_$S12	DD	FLAT:_$E11
_$S15	DD	FLAT:_$E14
_$S18	DD	FLAT:_$E17
_$S21	DD	FLAT:_$E20
_$S24	DD	FLAT:_$E23
_$S27	DD	FLAT:_$E26
_$S30	DD	FLAT:_$E29
CRT$XCU	ENDS
_TEXT	SEGMENT
_$E2	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E1
	pop	ebp
	ret	0
_$E2	ENDP
_TEXT	ENDS
EXTRN	_malloc:NEAR
_TEXT	SEGMENT
_$E1	PROC NEAR

; 36   :    c_conf   *e_conf    = (c_conf*)    malloc (sizeof(c_conf));

	push	ebp
	mov	ebp, esp
	push	2052					; 00000804H
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_conf@@3PAUc_conf@@A, eax	; e_conf
	pop	ebp
	ret	0
_$E1	ENDP
_$E5	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E4
	pop	ebp
	ret	0
_$E5	ENDP
_$E4	PROC NEAR

; 37   :    c_err    *e_err     = (c_err*)     malloc (sizeof(c_err));

	push	ebp
	mov	ebp, esp
	push	1032					; 00000408H
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_err@@3PAUc_err@@A, eax	; e_err
	pop	ebp
	ret	0
_$E4	ENDP
_$E8	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E7
	pop	ebp
	ret	0
_$E8	ENDP
_$E7	PROC NEAR

; 38   :    c_app    *e_app     = (c_app*)     malloc (sizeof(c_app));

	push	ebp
	mov	ebp, esp
	push	1092					; 00000444H
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_app@@3PAUc_app@@A, eax	; e_app
	pop	ebp
	ret	0
_$E7	ENDP
_$E11	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E10
	pop	ebp
	ret	0
_$E11	ENDP
_$E10	PROC NEAR

; 39   :    c_init   *e_init    = (c_init*)    malloc (sizeof(c_init));

	push	ebp
	mov	ebp, esp
	push	4
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_init@@3PAUc_init@@A, eax	; e_init
	pop	ebp
	ret	0
_$E10	ENDP
_$E14	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E13
	pop	ebp
	ret	0
_$E14	ENDP
_$E13	PROC NEAR

; 40   :    c_render *e_render  = (c_render*)  malloc (sizeof(c_render));

	push	ebp
	mov	ebp, esp
	push	4
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_render@@3PAUc_render@@A, eax ; e_render
	pop	ebp
	ret	0
_$E13	ENDP
_$E17	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E16
	pop	ebp
	ret	0
_$E17	ENDP
_$E16	PROC NEAR

; 41   :    c_d3d    *e_d3d     = (c_d3d*)     malloc (sizeof(c_d3d));

	push	ebp
	mov	ebp, esp
	push	268					; 0000010cH
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_d3d@@3PAUc_d3d@@A, eax	; e_d3d
	pop	ebp
	ret	0
_$E16	ENDP
_$E20	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E19
	pop	ebp
	ret	0
_$E20	ENDP
_$E19	PROC NEAR

; 42   :    c_x      *e_x       = (c_x*)       malloc (sizeof(c_x));

	push	ebp
	mov	ebp, esp
	push	4
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_x@@3PAUc_x@@A, eax		; e_x
	pop	ebp
	ret	0
_$E19	ENDP
_$E23	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E22
	pop	ebp
	ret	0
_$E23	ENDP
_$E22	PROC NEAR

; 43   :    c_fx     *e_fx      = (c_fx*)      malloc (sizeof(c_fx));

	push	ebp
	mov	ebp, esp
	push	4
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_fx@@3PAUc_fx@@A, eax	; e_fx
	pop	ebp
	ret	0
_$E22	ENDP
_$E26	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E25
	pop	ebp
	ret	0
_$E26	ENDP
_$E25	PROC NEAR

; 44   :    c_inp    *e_inp     = (c_inp*)     malloc (sizeof(c_inp));

	push	ebp
	mov	ebp, esp
	push	24					; 00000018H
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_inp@@3PAUc_inp@@A, eax	; e_inp
	pop	ebp
	ret	0
_$E25	ENDP
_$E29	PROC NEAR
	push	ebp
	mov	ebp, esp
	call	_$E28
	pop	ebp
	ret	0
_$E29	ENDP
_$E28	PROC NEAR

; 45   :    c_v      *e_v       = (c_v*)       malloc (sizeof(c_v));

	push	ebp
	mov	ebp, esp
	push	180					; 000000b4H
	call	_malloc
	add	esp, 4
	mov	DWORD PTR ?e_v@@3PAUc_v@@A, eax		; e_v
	pop	ebp
	ret	0
_$E28	ENDP
_TEXT	ENDS
PUBLIC	??0c_err@@QAE@XZ				; c_err::c_err
PUBLIC	??_7c_err@@6B@					; c_err::`vftable'
PUBLIC	??_Gc_err@@UAEPAXI@Z				; c_err::`scalar deleting destructor'
PUBLIC	??_Ec_err@@UAEPAXI@Z				; c_err::`vector deleting destructor'
;	COMDAT ??_7c_err@@6B@
; File src/l_err.cpp
CONST	SEGMENT
??_7c_err@@6B@ DD FLAT:??_Ec_err@@UAEPAXI@Z		; c_err::`vftable'
CONST	ENDS
_TEXT	SEGMENT
_this$ = -4
??0c_err@@QAE@XZ PROC NEAR				; c_err::c_err

; 16   : c_err::c_err ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_err@@6B@ ; c_err::`vftable'

; 17   : 
; 18   :    l_index = 0;

	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+1028], 0

; 19   : 
; 20   :    return;
; 21   : }

	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0c_err@@QAE@XZ ENDP					; c_err::c_err
_TEXT	ENDS
PUBLIC	??1c_err@@UAE@XZ				; c_err::~c_err
EXTRN	??3@YAXPAX@Z:NEAR				; operator delete
;	COMDAT ??_Gc_err@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8
_this$ = -4
??_Gc_err@@UAEPAXI@Z PROC NEAR				; c_err::`scalar deleting destructor', COMDAT
	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	ecx, DWORD PTR _this$[ebp]
	call	??1c_err@@UAE@XZ			; c_err::~c_err
	mov	eax, DWORD PTR ___flags$[ebp]
	and	eax, 1
	test	eax, eax
	je	SHORT $L55104
	mov	ecx, DWORD PTR _this$[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$L55104:
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	4
??_Gc_err@@UAEPAXI@Z ENDP				; c_err::`scalar deleting destructor'
_TEXT	ENDS
_TEXT	SEGMENT
$T55657 = -4
$T55658 = -8
_this$ = -12
??1c_err@@UAE@XZ PROC NEAR				; c_err::~c_err

; 27   : c_err::~c_err ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 16					; 00000010H
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_err@@6B@ ; c_err::`vftable'

; 28   : 
; 29   :    delete [] e_err;

	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	mov	DWORD PTR $T55658[ebp], ecx
	mov	edx, DWORD PTR $T55658[ebp]
	mov	DWORD PTR $T55657[ebp], edx
	cmp	DWORD PTR $T55657[ebp], 0
	je	SHORT $L55659
	push	3
	mov	eax, DWORD PTR $T55657[ebp]
	mov	edx, DWORD PTR [eax]
	mov	ecx, DWORD PTR $T55657[ebp]
	call	DWORD PTR [edx]
	mov	DWORD PTR -16+[ebp], eax
	jmp	SHORT $L55660
$L55659:
	mov	DWORD PTR -16+[ebp], 0
$L55660:

; 30   : 
; 31   :    return;
; 32   : }

	mov	esp, ebp
	pop	ebp
	ret	0
??1c_err@@UAE@XZ ENDP					; c_err::~c_err
_TEXT	ENDS
PUBLIC	?m_set@c_err@@QAEHPBDPAU1@@Z			; c_err::m_set
EXTRN	_printf:NEAR
EXTRN	_sprintf:NEAR
_DATA	SEGMENT
$SG55117 DB	'%s', 0aH, 00H
$SG55118 DB	'%s', 0aH, 00H
_DATA	ENDS
_TEXT	SEGMENT
_l_err$ = 8
_l_e$ = 12
_this$ = -4
?m_set@c_err@@QAEHPBDPAU1@@Z PROC NEAR			; c_err::m_set

; 39   :                    c_err      *l_e ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 40   : 
; 41   :    l_e->l_buffer[l_index][0] = (char*) malloc (sizeof(l_e->l_buffer[l_index][0]));

	push	4
	call	_malloc
	add	esp, 4
	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR [ecx+1028]
	mov	ecx, DWORD PTR _l_e$[ebp]
	mov	DWORD PTR [ecx+edx*4+4], eax

; 42   : 
; 43   :    sprintf (l_e->l_buffer[l_index][0], "%s\n", l_err);

	mov	edx, DWORD PTR _l_err$[ebp]
	push	edx
	push	OFFSET FLAT:$SG55117
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR [eax+1028]
	mov	edx, DWORD PTR _l_e$[ebp]
	mov	eax, DWORD PTR [edx+ecx*4+4]
	push	eax
	call	_sprintf
	add	esp, 12					; 0000000cH

; 44   :    printf  ("%s\n", l_e->l_buffer[l_index][0]);

	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR [ecx+1028]
	mov	eax, DWORD PTR _l_e$[ebp]
	mov	ecx, DWORD PTR [eax+edx*4+4]
	push	ecx
	push	OFFSET FLAT:$SG55118
	call	_printf
	add	esp, 8

; 45   :    l_e->l_index++;

	mov	edx, DWORD PTR _l_e$[ebp]
	mov	eax, DWORD PTR [edx+1028]
	add	eax, 1
	mov	ecx, DWORD PTR _l_e$[ebp]
	mov	DWORD PTR [ecx+1028], eax

; 46   : 
; 47   :    return 1;

	mov	eax, 1

; 48   : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_set@c_err@@QAEHPBDPAU1@@Z ENDP			; c_err::m_set
_TEXT	ENDS
PUBLIC	??0c_conf@@QAE@XZ				; c_conf::c_conf
PUBLIC	??_7c_conf@@6B@					; c_conf::`vftable'
PUBLIC	??_Gc_conf@@UAEPAXI@Z				; c_conf::`scalar deleting destructor'
PUBLIC	??_Ec_conf@@UAEPAXI@Z				; c_conf::`vector deleting destructor'
;	COMDAT ??_7c_conf@@6B@
; File src/l_conf.cpp
CONST	SEGMENT
??_7c_conf@@6B@ DD FLAT:??_Ec_conf@@UAEPAXI@Z		; c_conf::`vftable'
CONST	ENDS
_TEXT	SEGMENT
_this$ = -4
??0c_conf@@QAE@XZ PROC NEAR				; c_conf::c_conf

; 16   : c_conf::c_conf ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_conf@@6B@ ; c_conf::`vftable'

; 17   : 
; 18   :    return;
; 19   : }

	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0c_conf@@QAE@XZ ENDP					; c_conf::c_conf
_TEXT	ENDS
PUBLIC	??1c_conf@@UAE@XZ				; c_conf::~c_conf
;	COMDAT ??_Gc_conf@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8
_this$ = -4
??_Gc_conf@@UAEPAXI@Z PROC NEAR				; c_conf::`scalar deleting destructor', COMDAT
	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	ecx, DWORD PTR _this$[ebp]
	call	??1c_conf@@UAE@XZ			; c_conf::~c_conf
	mov	eax, DWORD PTR ___flags$[ebp]
	and	eax, 1
	test	eax, eax
	je	SHORT $L55127
	mov	ecx, DWORD PTR _this$[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$L55127:
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	4
??_Gc_conf@@UAEPAXI@Z ENDP				; c_conf::`scalar deleting destructor'
_TEXT	ENDS
_TEXT	SEGMENT
$T55665 = -4
$T55666 = -8
_this$ = -12
??1c_conf@@UAE@XZ PROC NEAR				; c_conf::~c_conf

; 25   : c_conf::~c_conf ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 16					; 00000010H
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_conf@@6B@ ; c_conf::`vftable'

; 26   : 
; 27   :    delete [] e_conf;

	mov	ecx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	mov	DWORD PTR $T55666[ebp], ecx
	mov	edx, DWORD PTR $T55666[ebp]
	mov	DWORD PTR $T55665[ebp], edx
	cmp	DWORD PTR $T55665[ebp], 0
	je	SHORT $L55667
	push	3
	mov	eax, DWORD PTR $T55665[ebp]
	mov	edx, DWORD PTR [eax]
	mov	ecx, DWORD PTR $T55665[ebp]
	call	DWORD PTR [edx]
	mov	DWORD PTR -16+[ebp], eax
	jmp	SHORT $L55668
$L55667:
	mov	DWORD PTR -16+[ebp], 0
$L55668:

; 28   : 
; 29   :    return;
; 30   : }

	mov	esp, ebp
	pop	ebp
	ret	0
??1c_conf@@UAE@XZ ENDP					; c_conf::~c_conf
_TEXT	ENDS
PUBLIC	?m_find@c_conf@@QAEPADPADPAU1@@Z		; c_conf::m_find
EXTRN	_strcmp:NEAR
EXTRN	_strlen:NEAR
EXTRN	___len:NEAR
EXTRN	_mid:NEAR
_TEXT	SEGMENT
_l_key$ = 8
_l_c$ = 12
_this$ = -8
_i$ = -4
?m_find@c_conf@@QAEPADPADPAU1@@Z PROC NEAR		; c_conf::m_find

; 37   :                        c_conf *l_c ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 8
	mov	DWORD PTR _this$[ebp], ecx

; 38   : 
; 39   :    for (int i=0; i <__len(l_c->l_items); i++) {

	mov	DWORD PTR _i$[ebp], 0
	jmp	SHORT $L55140
$L55141:
	mov	eax, DWORD PTR _i$[ebp]
	add	eax, 1
	mov	DWORD PTR _i$[ebp], eax
$L55140:
	mov	ecx, DWORD PTR _l_c$[ebp]
	add	ecx, 4
	push	ecx
	call	___len
	add	esp, 4
	cmp	DWORD PTR _i$[ebp], eax
	jge	SHORT $L55142

; 40   :       if (strcmp(l_c->l_items[i], l_key) == 0) {

	mov	edx, DWORD PTR _l_key$[ebp]
	push	edx
	mov	eax, DWORD PTR _i$[ebp]
	mov	ecx, DWORD PTR _l_c$[ebp]
	mov	edx, DWORD PTR [ecx+eax*4+4]
	push	edx
	call	_strcmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $L55143

; 41   :          return mid (l_c->l_list[i], strlen(l_key)+1, strlen(l_c->l_list[i]));

	mov	eax, DWORD PTR _i$[ebp]
	mov	ecx, DWORD PTR _l_c$[ebp]
	mov	edx, DWORD PTR [ecx+eax*4+1028]
	push	edx
	call	_strlen
	add	esp, 4
	push	eax
	mov	eax, DWORD PTR _l_key$[ebp]
	push	eax
	call	_strlen
	add	esp, 4
	add	eax, 1
	push	eax
	mov	ecx, DWORD PTR _i$[ebp]
	mov	edx, DWORD PTR _l_c$[ebp]
	mov	eax, DWORD PTR [edx+ecx*4+1028]
	push	eax
	call	_mid
	add	esp, 12					; 0000000cH
	jmp	SHORT $L55138
$L55143:

; 43   :    }

	jmp	SHORT $L55141
$L55142:

; 44   :    return null;

	xor	eax, eax
$L55138:

; 45   : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_find@c_conf@@QAEPADPADPAU1@@Z ENDP			; c_conf::m_find
_TEXT	ENDS
PUBLIC	?m_read@c_conf@@QAEHPBDPAU1@@Z			; c_conf::m_read
EXTRN	_exit:NEAR
EXTRN	_fclose:NEAR
EXTRN	_fopen:NEAR
EXTRN	_fscanf:NEAR
_DATA	SEGMENT
$SG55150 DB	'r', 00H
	ORG $+2
$SG55155 DB	'[error : (m_read)] [statement : (l_file_not_found_error)'
	DB	']', 00H
	ORG $+2
$SG55160 DB	'%s', 00H
	ORG $+1
$SG55163 DB	'%s', 00H
_DATA	ENDS
_TEXT	SEGMENT
_f$ = 8
_l_c$ = 12
_this$ = -276
_l_file$ = -4
_s$ = -264
_c$ = -8
_r$55159 = -272
?m_read@c_conf@@QAEHPBDPAU1@@Z PROC NEAR		; c_conf::m_read

; 52   :                      c_conf     *l_c ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 276				; 00000114H
	mov	DWORD PTR _this$[ebp], ecx

; 53   : 
; 54   :    FILE *l_file   = fopen (f, "r");

	push	OFFSET FLAT:$SG55150
	mov	eax, DWORD PTR _f$[ebp]
	push	eax
	call	_fopen
	add	esp, 8
	mov	DWORD PTR _l_file$[ebp], eax

; 55   : 
; 56   :    char s [255];
; 57   :    char *h;
; 58   :    int  c = 0;

	mov	DWORD PTR _c$[ebp], 0

; 59   : 
; 60   :    if ( l_file == NULL ) {

	cmp	DWORD PTR _l_file$[ebp], 0
	jne	SHORT $L55154

; 61   :       e_err->m_set ("[error : (m_read)] [statement : (l_file_not_found_error)]", e_err);

	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	push	ecx
	push	OFFSET FLAT:$SG55155
	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	call	?m_set@c_err@@QAEHPBDPAU1@@Z		; c_err::m_set

; 62   :       // TODO : print error return on exit?
; 63   :       exit (0);

	push	0
	call	_exit
$L55154:

; 66   : 	
; 67   :    while (1) {

	mov	edx, 1
	test	edx, edx
	je	SHORT $L55158

; 68   :       int r = fscanf (l_file, "%s", &s);

	lea	eax, DWORD PTR _s$[ebp]
	push	eax
	push	OFFSET FLAT:$SG55160
	mov	ecx, DWORD PTR _l_file$[ebp]
	push	ecx
	call	_fscanf
	add	esp, 12					; 0000000cH
	mov	DWORD PTR _r$55159[ebp], eax

; 69   :       if (r == EOF) break;

	cmp	DWORD PTR _r$55159[ebp], -1
	jne	SHORT $L55161
	jmp	SHORT $L55158
$L55161:

; 70   : 
; 71   :       l_c->l_list[c] = (char*) malloc (sizeof(s));

	push	255					; 000000ffH
	call	_malloc
	add	esp, 4
	mov	edx, DWORD PTR _c$[ebp]
	mov	ecx, DWORD PTR _l_c$[ebp]
	mov	DWORD PTR [ecx+edx*4+1028], eax

; 72   :       sprintf ( l_c->l_list[c], "%s", s );

	lea	edx, DWORD PTR _s$[ebp]
	push	edx
	push	OFFSET FLAT:$SG55163
	mov	eax, DWORD PTR _c$[ebp]
	mov	ecx, DWORD PTR _l_c$[ebp]
	mov	edx, DWORD PTR [ecx+eax*4+1028]
	push	edx
	call	_sprintf
	add	esp, 12					; 0000000cH

; 73   :       c++;

	mov	eax, DWORD PTR _c$[ebp]
	add	eax, 1
	mov	DWORD PTR _c$[ebp], eax

; 74   :    }

	jmp	SHORT $L55154
$L55158:

; 75   : 
; 76   :    fclose(l_file);

	mov	ecx, DWORD PTR _l_file$[ebp]
	push	ecx
	call	_fclose
	add	esp, 4

; 77   : 
; 78   :    return 0;

	xor	eax, eax
$L55148:

; 79   : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_read@c_conf@@QAEHPBDPAU1@@Z ENDP			; c_conf::m_read
_TEXT	ENDS
PUBLIC	?m_init@c_conf@@QAEHPAU1@@Z			; c_conf::m_init
_DATA	SEGMENT
	ORG $+1
$SG55168 DB	'name', 00H
	ORG $+3
$SG55169 DB	'width', 00H
	ORG $+2
$SG55170 DB	'height', 00H
	ORG $+1
$SG55171 DB	'bpp', 00H
$SG55172 DB	'full', 00H
	ORG $+3
$SG55173 DB	'cfg\e.cfg', 00H
_DATA	ENDS
_TEXT	SEGMENT
_l_c$ = 8
_this$ = -4
?m_init@c_conf@@QAEHPAU1@@Z PROC NEAR			; c_conf::m_init

; 85   : int c_conf::m_init ( c_conf *l_c ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 86   : 
; 87   :    l_c->l_items [0] = "name";

	mov	eax, DWORD PTR _l_c$[ebp]
	mov	DWORD PTR [eax+4], OFFSET FLAT:$SG55168

; 88   :    l_c->l_items [1] = "width";

	mov	ecx, DWORD PTR _l_c$[ebp]
	mov	DWORD PTR [ecx+8], OFFSET FLAT:$SG55169

; 89   :    l_c->l_items [2] = "height";

	mov	edx, DWORD PTR _l_c$[ebp]
	mov	DWORD PTR [edx+12], OFFSET FLAT:$SG55170

; 90   :    l_c->l_items [3] = "bpp";

	mov	eax, DWORD PTR _l_c$[ebp]
	mov	DWORD PTR [eax+16], OFFSET FLAT:$SG55171

; 91   :    l_c->l_items [4] = "full";

	mov	ecx, DWORD PTR _l_c$[ebp]
	mov	DWORD PTR [ecx+20], OFFSET FLAT:$SG55172

; 92   :    l_c->l_items [5] = '\0';

	mov	edx, DWORD PTR _l_c$[ebp]
	mov	DWORD PTR [edx+24], 0

; 93   : 
; 94   :    m_read ("cfg\\e.cfg", e_conf);

	mov	eax, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	push	eax
	push	OFFSET FLAT:$SG55173
	mov	ecx, DWORD PTR _this$[ebp]
	call	?m_read@c_conf@@QAEHPBDPAU1@@Z		; c_conf::m_read

; 95   : 
; 96   :    return 1;

	mov	eax, 1

; 97   : }

	mov	esp, ebp
	pop	ebp
	ret	4
?m_init@c_conf@@QAEHPAU1@@Z ENDP			; c_conf::m_init
_TEXT	ENDS
PUBLIC	??0c_init@@QAE@XZ				; c_init::c_init
PUBLIC	??_7c_init@@6B@					; c_init::`vftable'
PUBLIC	??_Gc_init@@UAEPAXI@Z				; c_init::`scalar deleting destructor'
PUBLIC	??_Ec_init@@UAEPAXI@Z				; c_init::`vector deleting destructor'
;	COMDAT ??_7c_init@@6B@
; File src/l_init.cpp
CONST	SEGMENT
??_7c_init@@6B@ DD FLAT:??_Ec_init@@UAEPAXI@Z		; c_init::`vftable'
CONST	ENDS
_TEXT	SEGMENT
_this$ = -4
??0c_init@@QAE@XZ PROC NEAR				; c_init::c_init

; 16   : c_init::c_init ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_init@@6B@ ; c_init::`vftable'

; 17   :    return;
; 18   : }

	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0c_init@@QAE@XZ ENDP					; c_init::c_init
_TEXT	ENDS
PUBLIC	??1c_init@@UAE@XZ				; c_init::~c_init
;	COMDAT ??_Gc_init@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8
_this$ = -4
??_Gc_init@@UAEPAXI@Z PROC NEAR				; c_init::`scalar deleting destructor', COMDAT
	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	ecx, DWORD PTR _this$[ebp]
	call	??1c_init@@UAE@XZ			; c_init::~c_init
	mov	eax, DWORD PTR ___flags$[ebp]
	and	eax, 1
	test	eax, eax
	je	SHORT $L55182
	mov	ecx, DWORD PTR _this$[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$L55182:
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	4
??_Gc_init@@UAEPAXI@Z ENDP				; c_init::`scalar deleting destructor'
_TEXT	ENDS
_TEXT	SEGMENT
_this$ = -4
??1c_init@@UAE@XZ PROC NEAR				; c_init::~c_init

; 24   : c_init::~c_init ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_init@@6B@ ; c_init::`vftable'

; 25   :    return;
; 26   : }

	mov	esp, ebp
	pop	ebp
	ret	0
??1c_init@@UAE@XZ ENDP					; c_init::~c_init
_TEXT	ENDS
PUBLIC	?m_pixelformat@c_app@@QAEHPAUHDC__@@H@Z		; c_app::m_pixelformat
PUBLIC	?m_win_init@c_init@@QAEHXZ			; c_init::m_win_init
EXTRN	__imp__GetDC@4:NEAR
EXTRN	__imp__GetClientRect@8:NEAR
EXTRN	__imp__ShowCursor@4:NEAR
_DATA	SEGMENT
	ORG $+2
$SG55192 DB	'[error : (m_gl_init)] [statement : (l_pixel_format_failu'
	DB	're)]', 00H
_DATA	ENDS
_TEXT	SEGMENT
_this$ = -4
?m_win_init@c_init@@QAEHXZ PROC NEAR			; c_init::m_win_init

; 32   : int c_init::m_win_init ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 33   : 
; 34   :    GetClientRect         (e_app->l_hwnd, &e_app->l_rect);

	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	add	eax, 20					; 00000014H
	push	eax
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+12]
	push	edx
	call	DWORD PTR __imp__GetClientRect@8

; 35   :    e_app->l_hdc  = GetDC (e_app->l_hwnd);

	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	ecx, DWORD PTR [eax+12]
	push	ecx
	call	DWORD PTR __imp__GetDC@4
	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	DWORD PTR [edx+8], eax

; 36   : 
; 37   :    if (!e_app->m_pixelformat (e_app->l_hdc, e_app->l_bpp)) {

	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	ecx, DWORD PTR [eax+60]
	push	ecx
	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	eax, DWORD PTR [edx+8]
	push	eax
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_pixelformat@c_app@@QAEHPAUHDC__@@H@Z	; c_app::m_pixelformat
	test	eax, eax
	jne	SHORT $L55191

; 38   :       e_err->m_set ("[error : (m_gl_init)] [statement : (l_pixel_format_failure)]", e_err);

	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	push	ecx
	push	OFFSET FLAT:$SG55192
	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	call	?m_set@c_err@@QAEHPBDPAU1@@Z		; c_err::m_set

; 39   :       exit (-1);

	push	-1
	call	_exit
$L55191:

; 41   : 
; 42   :    ShowCursor            (1);

	push	1
	call	DWORD PTR __imp__ShowCursor@4

; 43   : 
; 44   :    return 1;

	mov	eax, 1
$L55190:

; 45   : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_win_init@c_init@@QAEHXZ ENDP				; c_init::m_win_init
_TEXT	ENDS
PUBLIC	?m_dx_init@c_init@@QAEHXZ			; c_init::m_dx_init
PUBLIC	?m_load_x_file@c_x@@QAEXPBDK@Z			; c_x::m_load_x_file
EXTRN	_Direct3DCreate9@4:NEAR
EXTRN	_D3DXMatrixPerspectiveFovLH@20:NEAR
EXTRN	_D3DXCreateTextureFromFileA@12:NEAR
EXTRN	__fltused:NEAR
EXTRN	_memset:NEAR
_DATA	SEGMENT
	ORG $+3
$SG55202 DB	'gfx/img/dx_aniso0.tga', 00H
	ORG $+2
$SG55203 DB	'gfx/x/teapot.x', 00H
_DATA	ENDS
_TEXT	SEGMENT
_this$ = -76
_l_dm$ = -72
_l_pp$ = -56
?m_dx_init@c_init@@QAEHXZ PROC NEAR			; c_init::m_dx_init

; 51   : int c_init::m_dx_init ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 76					; 0000004cH
	mov	DWORD PTR _this$[ebp], ecx

; 52   : 
; 53   :    e_d3d->l_d3d = Direct3DCreate9 ( D3D_SDK_VERSION );

	push	31					; 0000001fH
	call	_Direct3DCreate9@4
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+4], eax

; 54   : 
; 55   :    D3DDISPLAYMODE        l_dm;
; 56   :    D3DPRESENT_PARAMETERS l_pp;
; 57   : 
; 58   :    e_d3d->l_d3d->GetAdapterDisplayMode ( D3DADAPTER_DEFAULT, &l_dm );

	lea	edx, DWORD PTR _l_dm$[ebp]
	push	edx
	push	0
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+4]
	mov	edx, DWORD PTR [eax]
	push	ecx
	call	DWORD PTR [edx+32]

; 59   : 
; 60   :    ZeroMemory ( &l_pp, sizeof(l_pp) );

	push	56					; 00000038H
	push	0
	lea	eax, DWORD PTR _l_pp$[ebp]
	push	eax
	call	_memset
	add	esp, 12					; 0000000cH

; 61   : 
; 62   :    l_pp.Windowed               = TRUE;

	mov	DWORD PTR _l_pp$[ebp+32], 1

; 63   :    l_pp.SwapEffect             = D3DSWAPEFFECT_DISCARD;

	mov	DWORD PTR _l_pp$[ebp+24], 1

; 64   :    l_pp.BackBufferFormat       = l_dm.Format;

	mov	ecx, DWORD PTR _l_dm$[ebp+12]
	mov	DWORD PTR _l_pp$[ebp+8], ecx

; 65   :    l_pp.EnableAutoDepthStencil = TRUE;

	mov	DWORD PTR _l_pp$[ebp+36], 1

; 66   :    l_pp.AutoDepthStencilFormat = D3DFMT_D16;

	mov	DWORD PTR _l_pp$[ebp+40], 80		; 00000050H

; 67   :    l_pp.PresentationInterval   = D3DPRESENT_INTERVAL_IMMEDIATE;

	mov	DWORD PTR _l_pp$[ebp+52], -2147483648	; 80000000H

; 68   : 
; 69   :    e_d3d->l_d3d->CreateDevice( D3DADAPTER_DEFAULT,
; 70   :                                D3DDEVTYPE_HAL,
; 71   :                                e_app->l_hwnd,
; 72   :                                D3DCREATE_SOFTWARE_VERTEXPROCESSING,
; 73   :                                &l_pp,
; 74   :                                &e_d3d->l_d3d_device );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	edx, 8
	push	edx
	lea	eax, DWORD PTR _l_pp$[ebp]
	push	eax
	push	32					; 00000020H
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+12]
	push	edx
	push	1
	push	0
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+4]
	mov	edx, DWORD PTR [eax]
	push	ecx
	call	DWORD PTR [edx+64]

; 75   :     
; 76   :    D3DXMatrixPerspectiveFovLH        ( &e_d3d->l_mat_proj, D3DXToRadian( 45.0f ), (float)e_app->l_width / (float)e_app->l_height, 0.1f, 100.0f );

	push	1120403456				; 42c80000H
	push	1036831949				; 3dcccccdH
	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	fild	DWORD PTR [eax+52]
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	fidiv	DWORD PTR [ecx+56]
	push	ecx
	fstp	DWORD PTR [esp]
	push	1061752795				; 3f490fdbH
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	edx, 196				; 000000c4H
	push	edx
	call	_D3DXMatrixPerspectiveFovLH@20

; 77   :    e_d3d->l_d3d_device->SetTransform ( D3DTS_PROJECTION, &e_d3d->l_mat_proj );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	eax, 196				; 000000c4H
	push	eax
	push	3
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+176]

; 78   : 
; 79   :    // render/states
; 80   : 
; 81   :    e_d3d->l_d3d_device->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );

	push	1
	push	7
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+228]

; 82   :    e_d3d->l_d3d_device->SetRenderState( D3DRS_LIGHTING, FALSE );

	push	0
	push	137					; 00000089H
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+228]

; 83   : 
; 84   :    // anisotropic/texture
; 85   : 
; 86   :    D3DXCreateTextureFromFile( e_d3d->l_d3d_device, "gfx/img/dx_aniso0.tga", &e_d3d->l_aniso_lookup );

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 12					; 0000000cH
	push	ecx
	push	OFFSET FLAT:$SG55202
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	push	eax
	call	_D3DXCreateTextureFromFileA@12

; 87   : 
; 88   :    e_d3d->l_d3d_device->SetSamplerState( 0, D3DSAMP_ADDRESSU,  D3DTADDRESS_MIRROR );

	push	2
	push	1
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+276]

; 89   :    e_d3d->l_d3d_device->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );

	push	2
	push	6
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+276]

; 90   :    e_d3d->l_d3d_device->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

	push	2
	push	5
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+276]

; 91   :    e_d3d->l_d3d_device->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );

	push	2
	push	7
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+276]

; 92   : 
; 93   :    // modulate/etc
; 94   : 
; 95   :    e_d3d->l_d3d_device->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE4X ); // Modulate 4 times for brightness...

	push	6
	push	1
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+268]

; 96   :    e_d3d->l_d3d_device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );     // the texture for this stage with...

	push	2
	push	2
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+268]

; 97   :    e_d3d->l_d3d_device->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_TEXTURE | D3DTA_ALPHAREPLICATE ); // the same texture, and don't forget the alpha

	push	34					; 00000022H
	push	3
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+268]

; 98   :     
; 99   :    // fvf
; 100  : 
; 101  :    e_x->m_load_x_file ( "gfx/x/teapot.x", c_v::FVF_FLAGS );

	push	18					; 00000012H
	push	OFFSET FLAT:$SG55203
	mov	ecx, DWORD PTR ?e_x@@3PAUc_x@@A		; e_x
	call	?m_load_x_file@c_x@@QAEXPBDK@Z		; c_x::m_load_x_file

; 102  : 
; 103  :    return 1;

	mov	eax, 1

; 104  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_dx_init@c_init@@QAEHXZ ENDP				; c_init::m_dx_init
_TEXT	ENDS
PUBLIC	?m_sr_init@c_init@@QAEHXZ			; c_init::m_sr_init
_TEXT	SEGMENT
_this$ = -4
?m_sr_init@c_init@@QAEHXZ PROC NEAR			; c_init::m_sr_init

; 110  : int c_init::m_sr_init ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 111  : 
; 112  :    return 1;

	mov	eax, 1

; 113  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_sr_init@c_init@@QAEHXZ ENDP				; c_init::m_sr_init
_TEXT	ENDS
PUBLIC	?m_gl_init@c_init@@QAEHXZ			; c_init::m_gl_init
_TEXT	SEGMENT
_this$ = -4
?m_gl_init@c_init@@QAEHXZ PROC NEAR			; c_init::m_gl_init

; 119  : int c_init::m_gl_init ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 120  : 
; 121  :    return 1;

	mov	eax, 1

; 122  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_gl_init@c_init@@QAEHXZ ENDP				; c_init::m_gl_init
_TEXT	ENDS
PUBLIC	?m_init@c_init@@QAEHXZ				; c_init::m_init
PUBLIC	?m_d3d_init@c_d3d@@QAEHXZ			; c_d3d::m_d3d_init
PUBLIC	?m_init_fx@c_fx@@QAEHXZ				; c_fx::m_init_fx
_TEXT	SEGMENT
_this$ = -4
?m_init@c_init@@QAEHXZ PROC NEAR			; c_init::m_init

; 128  : int c_init::m_init ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 129  : 
; 130  :    e_init->m_win_init ();

	mov	ecx, DWORD PTR ?e_init@@3PAUc_init@@A	; e_init
	call	?m_win_init@c_init@@QAEHXZ		; c_init::m_win_init

; 131  : 
; 132  :    #if   defined(__DX__)
; 133  :       e_init->m_dx_init  ();

	mov	ecx, DWORD PTR ?e_init@@3PAUc_init@@A	; e_init
	call	?m_dx_init@c_init@@QAEHXZ		; c_init::m_dx_init

; 134  :       e_d3d->m_d3d_init  ();

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	call	?m_d3d_init@c_d3d@@QAEHXZ		; c_d3d::m_d3d_init

; 135  :       e_fx->m_init_fx    ();

	mov	ecx, DWORD PTR ?e_fx@@3PAUc_fx@@A	; e_fx
	call	?m_init_fx@c_fx@@QAEHXZ			; c_fx::m_init_fx

; 136  :    #elif defined(__GL__)
; 137  :       e_init->m_gl_init  ();
; 138  :    #elif defined(__SR__)
; 139  :       e_init->m_sr_init  ();
; 140  :    #endif
; 141  : 
; 142  :    return 1;

	mov	eax, 1

; 143  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_init@c_init@@QAEHXZ ENDP				; c_init::m_init
_TEXT	ENDS
PUBLIC	?m_render@c_render@@QAEXXZ			; c_render::m_render
PUBLIC	?m_set_fx@c_fx@@QAEHXZ				; c_fx::m_set_fx
EXTRN	__imp__cgD3D9BindProgram:NEAR
_TEXT	SEGMENT
_this$ = -8
_i$ = -4
?m_render@c_render@@QAEXXZ PROC NEAR			; c_render::m_render

; 5    : void c_render::m_render ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 8
	mov	DWORD PTR _this$[ebp], ecx

; 6    : 
; 7    :    e_d3d->l_d3d_device->Clear                ( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
; 8    :                                                D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 1.0f, 0 );

	push	0
	push	1065353216				; 3f800000H
	push	-16777216				; ff000000H
	push	3
	push	0
	push	0
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	edx, DWORD PTR [eax]
	push	ecx
	call	DWORD PTR [edx+172]

; 9    : 
; 10   :    e_d3d->l_d3d_device->BeginScene           ();

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	edx, DWORD PTR [eax]
	push	ecx
	call	DWORD PTR [edx+164]

; 11   : 
; 12   :    e_d3d->l_d3d_device->SetTexture           ( 0, e_d3d->l_aniso_lookup );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+12]
	push	ecx
	push	0
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+260]

; 13   :    e_d3d->l_d3d_device->SetIndices           ( e_d3d->l_index_buffer );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+20]
	push	eax
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+416]

; 14   :    e_d3d->l_d3d_device->SetStreamSource      ( 0, e_d3d->l_vertex_buffer, 0, sizeof( e_v->v_6 ) );

	push	24					; 00000018H
	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+16]
	push	edx
	push	0
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	edx, DWORD PTR [eax]
	push	ecx
	call	DWORD PTR [edx+400]

; 15   : 
; 16   :    e_fx->m_set_fx();

	mov	ecx, DWORD PTR ?e_fx@@3PAUc_fx@@A	; e_fx
	call	?m_set_fx@c_fx@@QAEHXZ			; c_fx::m_set_fx

; 17   : 
; 18   :    e_d3d->l_d3d_device->SetVertexDeclaration ( e_d3d->l_vertex_declare );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+32]
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+348]

; 19   :    cgD3D9BindProgram                         ( e_d3d->l_cg_program );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+44]
	push	eax
	call	DWORD PTR __imp__cgD3D9BindProgram
	add	esp, 4

; 20   : 
; 21   :    // render
; 22   : 
; 23   :    for( unsigned long i = 0; i < e_d3d->l_num_sections; i++ ) {

	mov	DWORD PTR _i$[ebp], 0
	jmp	SHORT $L55227
$L55228:
	mov	ecx, DWORD PTR _i$[ebp]
	add	ecx, 1
	mov	DWORD PTR _i$[ebp], ecx
$L55227:
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR _i$[ebp]
	cmp	eax, DWORD PTR [edx+28]
	jae	SHORT $L55229

; 24   :       e_d3d->l_d3d_device->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0,
; 25   :       e_d3d->l_attributes[i].VertexStart,
; 26   :       e_d3d->l_attributes[i].VertexCount,
; 27   :       e_d3d->l_attributes[i].FaceStart * 3,
; 28   :       e_d3d->l_attributes[i].FaceCount );

	mov	ecx, DWORD PTR _i$[ebp]
	imul	ecx, 20					; 00000014H
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+24]
	mov	ecx, DWORD PTR [eax+ecx+8]
	push	ecx
	mov	edx, DWORD PTR _i$[ebp]
	imul	edx, 20					; 00000014H
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+24]
	mov	edx, DWORD PTR [ecx+edx+4]
	imul	edx, 3
	push	edx
	mov	eax, DWORD PTR _i$[ebp]
	imul	eax, 20					; 00000014H
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+24]
	mov	eax, DWORD PTR [edx+eax+16]
	push	eax
	mov	ecx, DWORD PTR _i$[ebp]
	imul	ecx, 20					; 00000014H
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+24]
	mov	ecx, DWORD PTR [eax+ecx+12]
	push	ecx
	push	0
	push	4
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+328]

; 29   :    }

	jmp	$L55228
$L55229:

; 30   : 
; 31   :    e_d3d->l_d3d_device->EndScene ();

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+168]

; 32   :    e_d3d->l_d3d_device->Present  ( NULL, NULL, NULL, NULL );

	push	0
	push	0
	push	0
	push	0
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+68]

; 33   : 
; 34   : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_render@c_render@@QAEXXZ ENDP				; c_render::m_render
_TEXT	ENDS
PUBLIC	??0c_app@@QAE@XZ				; c_app::c_app
PUBLIC	??_7c_app@@6B@					; c_app::`vftable'
PUBLIC	??_Gc_app@@UAEPAXI@Z				; c_app::`scalar deleting destructor'
PUBLIC	??_Ec_app@@UAEPAXI@Z				; c_app::`vector deleting destructor'
;	COMDAT ??_7c_app@@6B@
; File src/l_app.cpp
CONST	SEGMENT
??_7c_app@@6B@ DD FLAT:??_Ec_app@@UAEPAXI@Z		; c_app::`vftable'
CONST	ENDS
_TEXT	SEGMENT
_this$ = -4
??0c_app@@QAE@XZ PROC NEAR				; c_app::c_app

; 16   : c_app::c_app ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_app@@6B@ ; c_app::`vftable'

; 17   : 
; 18   :    return;
; 19   : }

	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0c_app@@QAE@XZ ENDP					; c_app::c_app
_TEXT	ENDS
PUBLIC	??1c_app@@UAE@XZ				; c_app::~c_app
;	COMDAT ??_Gc_app@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8
_this$ = -4
??_Gc_app@@UAEPAXI@Z PROC NEAR				; c_app::`scalar deleting destructor', COMDAT
	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	ecx, DWORD PTR _this$[ebp]
	call	??1c_app@@UAE@XZ			; c_app::~c_app
	mov	eax, DWORD PTR ___flags$[ebp]
	and	eax, 1
	test	eax, eax
	je	SHORT $L55238
	mov	ecx, DWORD PTR _this$[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$L55238:
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	4
??_Gc_app@@UAEPAXI@Z ENDP				; c_app::`scalar deleting destructor'
_TEXT	ENDS
_TEXT	SEGMENT
$T55685 = -4
$T55686 = -8
$T55689 = -12
_this$ = -16
??1c_app@@UAE@XZ PROC NEAR				; c_app::~c_app

; 25   : c_app::~c_app ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 20					; 00000014H
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_app@@6B@ ; c_app::`vftable'

; 26   : 
; 27   :    delete [] e_app;

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	DWORD PTR $T55686[ebp], ecx
	mov	edx, DWORD PTR $T55686[ebp]
	mov	DWORD PTR $T55685[ebp], edx
	cmp	DWORD PTR $T55685[ebp], 0
	je	SHORT $L55687
	push	3
	mov	eax, DWORD PTR $T55685[ebp]
	mov	edx, DWORD PTR [eax]
	mov	ecx, DWORD PTR $T55685[ebp]
	call	DWORD PTR [edx]
	mov	DWORD PTR -20+[ebp], eax
	jmp	SHORT $L55688
$L55687:
	mov	DWORD PTR -20+[ebp], 0
$L55688:

; 28   :    delete [] l_name;

	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR [eax+48]
	mov	DWORD PTR $T55689[ebp], ecx
	mov	edx, DWORD PTR $T55689[ebp]
	push	edx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4

; 29   : 
; 30   :    return;
; 31   : }

	mov	esp, ebp
	pop	ebp
	ret	0
??1c_app@@UAE@XZ ENDP					; c_app::~c_app
_TEXT	ENDS
PUBLIC	?m_init@c_app@@QAEHPAUHINSTANCE__@@@Z		; c_app::m_init
PUBLIC	?m_gui@c_app@@QAEPAUHWND__@@HHKHPAUHINSTANCE__@@@Z ; c_app::m_gui
PUBLIC	?m_rect@c_app@@QAEXXZ				; c_app::m_rect
EXTRN	_cint:NEAR
_DATA	SEGMENT
	ORG $+1
$SG55252 DB	'name', 00H
	ORG $+3
$SG55253 DB	'%s', 00H
	ORG $+1
$SG55254 DB	'width', 00H
	ORG $+2
$SG55255 DB	'height', 00H
	ORG $+1
$SG55256 DB	'bpp', 00H
$SG55257 DB	'full', 00H
	ORG $+3
$SG55259 DB	'[error : (m_init)] [statement : (l_handle_creation_failu'
	DB	're)],', 00H
_DATA	ENDS
_TEXT	SEGMENT
_l_hinst$ = 8
_this$ = -4
?m_init@c_app@@QAEHPAUHINSTANCE__@@@Z PROC NEAR		; c_app::m_init

; 37   : int c_app::m_init ( h_i l_hinst ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 38   : 
; 39   :    e_conf->m_init (e_conf);

	mov	eax, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	push	eax
	mov	ecx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	call	?m_init@c_conf@@QAEHPAU1@@Z		; c_conf::m_init

; 40   : 
; 41   :    l_name = (char*) malloc (sizeof(char));

	push	1
	call	_malloc
	add	esp, 4
	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+48], eax

; 42   : 
; 43   :    sprintf (l_name,  "%s",   e_conf->m_find ("name",   e_conf));

	mov	edx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	push	edx
	push	OFFSET FLAT:$SG55252
	mov	ecx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	call	?m_find@c_conf@@QAEPADPADPAU1@@Z	; c_conf::m_find
	push	eax
	push	OFFSET FLAT:$SG55253
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR [eax+48]
	push	ecx
	call	_sprintf
	add	esp, 12					; 0000000cH

; 44   :             l_width  = cint (e_conf->m_find ("width",  e_conf));

	mov	edx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	push	edx
	push	OFFSET FLAT:$SG55254
	mov	ecx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	call	?m_find@c_conf@@QAEPADPADPAU1@@Z	; c_conf::m_find
	push	eax
	call	_cint
	add	esp, 4
	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+52], eax

; 45   :             l_height = cint (e_conf->m_find ("height", e_conf));

	mov	edx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	push	edx
	push	OFFSET FLAT:$SG55255
	mov	ecx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	call	?m_find@c_conf@@QAEPADPADPAU1@@Z	; c_conf::m_find
	push	eax
	call	_cint
	add	esp, 4
	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+56], eax

; 46   :             l_bpp    = cint (e_conf->m_find ("bpp",    e_conf));

	mov	edx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	push	edx
	push	OFFSET FLAT:$SG55256
	mov	ecx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	call	?m_find@c_conf@@QAEPADPADPAU1@@Z	; c_conf::m_find
	push	eax
	call	_cint
	add	esp, 4
	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+60], eax

; 47   :             l_full   = cint (e_conf->m_find ("full",   e_conf));

	mov	edx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	push	edx
	push	OFFSET FLAT:$SG55257
	mov	ecx, DWORD PTR ?e_conf@@3PAUc_conf@@A	; e_conf
	call	?m_find@c_conf@@QAEPADPADPAU1@@Z	; c_conf::m_find
	push	eax
	call	_cint
	add	esp, 4
	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+64], eax

; 48   : 
; 49   :    e_app->l_hwnd = e_app->m_gui (e_app->l_width, e_app->l_height, 0, e_app->l_full, l_hinst);

	mov	edx, DWORD PTR _l_hinst$[ebp]
	push	edx
	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	ecx, DWORD PTR [eax+64]
	push	ecx
	push	0
	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	eax, DWORD PTR [edx+56]
	push	eax
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+52]
	push	edx
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_gui@c_app@@QAEPAUHWND__@@HHKHPAUHINSTANCE__@@@Z ; c_app::m_gui
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	DWORD PTR [ecx+12], eax

; 50   :    e_app->m_rect ();

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_rect@c_app@@QAEXXZ			; c_app::m_rect

; 51   : 
; 52   :    if (e_app->l_hwnd == NULL) { 

	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	cmp	DWORD PTR [edx+12], 0
	jne	SHORT $L55258

; 53   :       e_err->m_set ("[error : (m_init)] [statement : (l_handle_creation_failure)],", e_err);

	mov	eax, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	push	eax
	push	OFFSET FLAT:$SG55259
	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	call	?m_set@c_err@@QAEHPBDPAU1@@Z		; c_err::m_set

; 54   :       exit (-1);

	push	-1
	call	_exit
$L55258:

; 56   : 
; 57   :    e_init->m_init ( );

	mov	ecx, DWORD PTR ?e_init@@3PAUc_init@@A	; e_init
	call	?m_init@c_init@@QAEHXZ			; c_init::m_init

; 58   : 
; 59   :    return 1;

	mov	eax, 1
$L55249:

; 60   : }

	mov	esp, ebp
	pop	ebp
	ret	4
?m_init@c_app@@QAEHPAUHINSTANCE__@@@Z ENDP		; c_app::m_init
_TEXT	ENDS
PUBLIC	?m_resize@c_app@@QAEXHH@Z			; c_app::m_resize
PUBLIC	?m_proc@c_app@@SGJPAUHWND__@@IIJ@Z		; c_app::m_proc
PUBLIC	?m_mouse_movement@c_inp@@QAEXII@Z		; c_inp::m_mouse_movement
EXTRN	__imp__DefWindowProcA@16:NEAR
EXTRN	__imp__PostQuitMessage@4:NEAR
_TEXT	SEGMENT
_l_hwnd$ = 8
_l_msg$ = 12
_l_wparam$ = 16
_l_lparam$ = 20
_l_ret$ = -68
?m_proc@c_app@@SGJPAUHWND__@@IIJ@Z PROC NEAR		; c_app::m_proc

; 69   :                                  p_l l_lparam ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 76					; 0000004cH

; 70   :    long         l_ret = 0;

	mov	DWORD PTR _l_ret$[ebp], 0

; 71   :    p_s          l_ps;
; 72   :    h_c          l_hdc;
; 73   : 
; 74   :    switch (l_msg) {

	mov	eax, DWORD PTR _l_msg$[ebp]
	mov	DWORD PTR -76+[ebp], eax
	cmp	DWORD PTR -76+[ebp], 273		; 00000111H
	ja	SHORT $L55692
	cmp	DWORD PTR -76+[ebp], 273		; 00000111H
	je	SHORT $L55273
	cmp	DWORD PTR -76+[ebp], 5
	je	SHORT $L55274
	cmp	DWORD PTR -76+[ebp], 16			; 00000010H
	je	$L55280
	cmp	DWORD PTR -76+[ebp], 256		; 00000100H
	je	$L55279
	jmp	$L55281
$L55692:
	mov	ecx, DWORD PTR -76+[ebp]
	sub	ecx, 512				; 00000200H
	mov	DWORD PTR -76+[ebp], ecx
	cmp	DWORD PTR -76+[ebp], 8
	ja	SHORT $L55281
	mov	eax, DWORD PTR -76+[ebp]
	xor	edx, edx
	mov	dl, BYTE PTR $L55693[eax]
	jmp	DWORD PTR $L55694[edx*4]
$L55273:

; 75   :       case WM_COMMAND :
; 76   :       case WM_LBUTTONDOWN :
; 77   :       case WM_RBUTTONDOWN :
; 78   :       case WM_MBUTTONDOWN :
; 79   :       case WM_LBUTTONUP :
; 80   :       case WM_RBUTTONUP :
; 81   :       case WM_MBUTTONUP :
; 82   :       case WM_MOUSEMOVE :
; 83   :          e_inp->m_mouse_movement (l_lparam, l_msg);

	mov	ecx, DWORD PTR _l_msg$[ebp]
	push	ecx
	mov	edx, DWORD PTR _l_lparam$[ebp]
	push	edx
	mov	ecx, DWORD PTR ?e_inp@@3PAUc_inp@@A	; e_inp
	call	?m_mouse_movement@c_inp@@QAEXII@Z	; c_inp::m_mouse_movement

; 84   :          break;

	jmp	SHORT $L55270
$L55274:

; 85   :       case WM_SIZE :
; 86   :          if (!e_app->l_full) {

	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	cmp	DWORD PTR [eax+64], 0
	jne	SHORT $L55275

; 87   :             e_app->m_resize (LOWORD (l_lparam), HIWORD (l_lparam));

	mov	ecx, DWORD PTR _l_lparam$[ebp]
	shr	ecx, 16					; 00000010H
	and	ecx, 65535				; 0000ffffH
	and	ecx, 65535				; 0000ffffH
	push	ecx
	mov	edx, DWORD PTR _l_lparam$[ebp]
	and	edx, 65535				; 0000ffffH
	push	edx
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_resize@c_app@@QAEXHH@Z		; c_app::m_resize

; 88   :             GetClientRect   (l_hwnd, &e_app->l_rect);

	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	add	eax, 20					; 00000014H
	push	eax
	mov	ecx, DWORD PTR _l_hwnd$[ebp]
	push	ecx
	call	DWORD PTR __imp__GetClientRect@8
$L55275:

; 90   :          break;

	jmp	SHORT $L55270
$L55279:

; 91   :       case WM_KEYDOWN :
; 92   :          break;

	jmp	SHORT $L55270
$L55280:

; 93   :       case WM_CLOSE :
; 94   :          PostQuitMessage(false);

	push	0
	call	DWORD PTR __imp__PostQuitMessage@4

; 95   :          break;

	jmp	SHORT $L55270
$L55281:

; 96   : 
; 97   :       default :
; 98   :          l_ret = DefWindowProc (l_hwnd, l_msg, l_wparam, l_lparam);

	mov	edx, DWORD PTR _l_lparam$[ebp]
	push	edx
	mov	eax, DWORD PTR _l_wparam$[ebp]
	push	eax
	mov	ecx, DWORD PTR _l_msg$[ebp]
	push	ecx
	mov	edx, DWORD PTR _l_hwnd$[ebp]
	push	edx
	call	DWORD PTR __imp__DefWindowProcA@16
	mov	DWORD PTR _l_ret$[ebp], eax
$L55270:

; 101  :    return l_ret;  

	mov	eax, DWORD PTR _l_ret$[ebp]

; 102  : }

	mov	esp, ebp
	pop	ebp
	ret	16					; 00000010H
$L55694:
	DD	$L55273
	DD	$L55281
$L55693:
	DB	0
	DB	0
	DB	0
	DB	1
	DB	0
	DB	0
	DB	1
	DB	0
	DB	0
?m_proc@c_app@@SGJPAUHWND__@@IIJ@Z ENDP			; c_app::m_proc
_TEXT	ENDS
EXTRN	__imp__ChoosePixelFormat@8:NEAR
EXTRN	__imp__SetPixelFormat@12:NEAR
_TEXT	SEGMENT
_l_hdc$ = 8
_l_depth$ = 12
_this$ = -48
_l_pfd$ = -40
_l_pixelformat$ = -44
?m_pixelformat@c_app@@QAEHPAUHDC__@@H@Z PROC NEAR	; c_app::m_pixelformat

; 109  :                            int l_depth ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 48					; 00000030H
	mov	DWORD PTR _this$[ebp], ecx

; 110  : 
; 111  :    PIXELFORMATDESCRIPTOR l_pfd;
; 112  :    int                   l_pixelformat;
; 113  : 
; 114  :    l_pfd.nSize        = sizeof(PIXELFORMATDESCRIPTOR);

	mov	WORD PTR _l_pfd$[ebp], 40		; 00000028H

; 115  :    l_pfd.nVersion     = 1;

	mov	WORD PTR _l_pfd$[ebp+2], 1

; 116  :    l_pfd.dwFlags      = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;

	mov	DWORD PTR _l_pfd$[ebp+4], 37		; 00000025H

; 117  :    l_pfd.dwLayerMask  = PFD_MAIN_PLANE;

	mov	DWORD PTR _l_pfd$[ebp+28], 0

; 118  :    l_pfd.iPixelType   = PFD_TYPE_RGBA;

	mov	BYTE PTR _l_pfd$[ebp+8], 0

; 119  :    l_pfd.cColorBits   = l_depth;

	mov	al, BYTE PTR _l_depth$[ebp]
	mov	BYTE PTR _l_pfd$[ebp+9], al

; 120  :    l_pfd.cDepthBits   = l_depth;

	mov	cl, BYTE PTR _l_depth$[ebp]
	mov	BYTE PTR _l_pfd$[ebp+23], cl

; 121  :    l_pfd.cAccumBits   = 0;

	mov	BYTE PTR _l_pfd$[ebp+18], 0

; 122  :    l_pfd.cStencilBits = 0;

	mov	BYTE PTR _l_pfd$[ebp+24], 0

; 123  : 
; 124  :    if((l_pixelformat = ChoosePixelFormat (l_hdc, &l_pfd)) == FALSE) {

	lea	edx, DWORD PTR _l_pfd$[ebp]
	push	edx
	mov	eax, DWORD PTR _l_hdc$[ebp]
	push	eax
	call	DWORD PTR __imp__ChoosePixelFormat@8
	mov	DWORD PTR _l_pixelformat$[ebp], eax
	cmp	DWORD PTR _l_pixelformat$[ebp], 0
	jne	SHORT $L55290

; 125  :       return false;

	xor	eax, eax
	jmp	SHORT $L55286
$L55290:

; 127  :  
; 128  :    if(SetPixelFormat (l_hdc, l_pixelformat, &l_pfd) == FALSE) {

	lea	ecx, DWORD PTR _l_pfd$[ebp]
	push	ecx
	mov	edx, DWORD PTR _l_pixelformat$[ebp]
	push	edx
	mov	eax, DWORD PTR _l_hdc$[ebp]
	push	eax
	call	DWORD PTR __imp__SetPixelFormat@12
	test	eax, eax
	jne	SHORT $L55291

; 129  :       return false;

	xor	eax, eax
	jmp	SHORT $L55286
$L55291:

; 131  :    return true;

	mov	eax, 1
$L55286:

; 132  : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_pixelformat@c_app@@QAEHPAUHDC__@@H@Z ENDP		; c_app::m_pixelformat
_TEXT	ENDS
PUBLIC	?m_fullscreen@c_app@@QAEHHH@Z			; c_app::m_fullscreen
EXTRN	__imp__ChangeDisplaySettingsA@8:NEAR
EXTRN	__imp__EnumDisplaySettingsA@12:NEAR
_TEXT	SEGMENT
_l_dm_settings$ = -152
_r$ = -4
_l_x$ = 8
_l_y$ = 12
_this$ = -156
?m_fullscreen@c_app@@QAEHHH@Z PROC NEAR			; c_app::m_fullscreen

; 138  : int c_app::m_fullscreen ( int l_x, int l_y ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 156				; 0000009cH
	mov	DWORD PTR _this$[ebp], ecx

; 139  : 
; 140  :    DEVMODE l_dm_settings;
; 141  :    memset (&l_dm_settings, 0, sizeof(l_dm_settings)); 

	push	148					; 00000094H
	push	0
	lea	eax, DWORD PTR _l_dm_settings$[ebp]
	push	eax
	call	_memset
	add	esp, 12					; 0000000cH

; 142  : 
; 143  :    if(!EnumDisplaySettings (NULL, ENUM_CURRENT_SETTINGS, &l_dm_settings)) {

	lea	ecx, DWORD PTR _l_dm_settings$[ebp]
	push	ecx
	push	-1
	push	0
	call	DWORD PTR __imp__EnumDisplaySettingsA@12
	test	eax, eax
	jne	SHORT $L55299

; 144  :       return -1;

	or	eax, -1
	jmp	SHORT $L55296
$L55299:

; 146  : 
; 147  :    l_dm_settings.dmPelsWidth  = l_x;

	mov	edx, DWORD PTR _l_x$[ebp]
	mov	DWORD PTR _l_dm_settings$[ebp+108], edx

; 148  :    l_dm_settings.dmPelsHeight = l_y;

	mov	eax, DWORD PTR _l_y$[ebp]
	mov	DWORD PTR _l_dm_settings$[ebp+112], eax

; 149  :    l_dm_settings.dmFields     = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;

	mov	DWORD PTR _l_dm_settings$[ebp+40], 1835008 ; 001c0000H

; 150  : 
; 151  :    int r = ChangeDisplaySettings(&l_dm_settings, CDS_FULLSCREEN);

	push	4
	lea	ecx, DWORD PTR _l_dm_settings$[ebp]
	push	ecx
	call	DWORD PTR __imp__ChangeDisplaySettingsA@8
	mov	DWORD PTR _r$[ebp], eax

; 152  : 
; 153  :    if(r != DISP_CHANGE_SUCCESSFUL) {

	cmp	DWORD PTR _r$[ebp], 0
	je	SHORT $L55301

; 154  :       return -1;

	or	eax, -1
	jmp	SHORT $L55296
$L55301:

; 156  :    return 1;

	mov	eax, 1
$L55296:

; 157  : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_fullscreen@c_app@@QAEHHH@Z ENDP			; c_app::m_fullscreen
_this$ = -20
_l_rect$ = -16
?m_rect@c_app@@QAEXXZ PROC NEAR				; c_app::m_rect

; 163  : void c_app::m_rect ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 20					; 00000014H
	mov	DWORD PTR _this$[ebp], ecx

; 164  : 
; 165  :    w_r	    l_rect;	
; 166  : 
; 167  :    GetClientRect (e_app->l_hwnd, &l_rect);

	lea	eax, DWORD PTR _l_rect$[ebp]
	push	eax
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+12]
	push	edx
	call	DWORD PTR __imp__GetClientRect@8

; 168  :    e_app->l_width  = l_rect.right  - l_rect.left;

	mov	eax, DWORD PTR _l_rect$[ebp+8]
	sub	eax, DWORD PTR _l_rect$[ebp]
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	DWORD PTR [ecx+52], eax

; 169  :    e_app->l_height = l_rect.bottom - l_rect.top;

	mov	edx, DWORD PTR _l_rect$[ebp+12]
	sub	edx, DWORD PTR _l_rect$[ebp+4]
	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	DWORD PTR [eax+56], edx

; 170  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_rect@c_app@@QAEXXZ ENDP				; c_app::m_rect
_this$ = -4
?m_resize@c_app@@QAEXHH@Z PROC NEAR			; c_app::m_resize

; 176  : void c_app::m_resize ( int l_x, int l_y ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 177  : 
; 178  : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_resize@c_app@@QAEXHH@Z ENDP				; c_app::m_resize
_TEXT	ENDS
PUBLIC	?m_loop@c_app@@QAEIXZ				; c_app::m_loop
EXTRN	__imp__TranslateMessage@4:NEAR
EXTRN	__imp__DispatchMessageA@4:NEAR
EXTRN	__imp__PeekMessageA@20:NEAR
_TEXT	SEGMENT
_this$ = -32
_l_msg$ = -28
?m_loop@c_app@@QAEIXZ PROC NEAR				; c_app::m_loop

; 184  : p_w c_app::m_loop ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 32					; 00000020H
	mov	DWORD PTR _this$[ebp], ecx
$L55318:

; 185  : 
; 186  :    w_m l_msg;
; 187  : 
; 188  :    while(true) {

	mov	eax, 1
	test	eax, eax
	je	SHORT $L55319

; 189  :       if (PeekMessage(&l_msg, NULL, 0, 0, PM_REMOVE)) {

	push	1
	push	0
	push	0
	push	0
	lea	ecx, DWORD PTR _l_msg$[ebp]
	push	ecx
	call	DWORD PTR __imp__PeekMessageA@20
	test	eax, eax
	je	SHORT $L55320

; 190  :          if (l_msg.message == WM_QUIT) break;

	cmp	DWORD PTR _l_msg$[ebp+4], 18		; 00000012H
	jne	SHORT $L55321
	jmp	SHORT $L55319
$L55321:

; 191  :          TranslateMessage (&l_msg);

	lea	edx, DWORD PTR _l_msg$[ebp]
	push	edx
	call	DWORD PTR __imp__TranslateMessage@4

; 192  :          DispatchMessage  (&l_msg);

	lea	eax, DWORD PTR _l_msg$[ebp]
	push	eax
	call	DWORD PTR __imp__DispatchMessageA@4

; 193  :       }else{

	jmp	SHORT $L55322
$L55320:

; 194  :          e_render->m_render();

	mov	ecx, DWORD PTR ?e_render@@3PAUc_render@@A ; e_render
	call	?m_render@c_render@@QAEXXZ		; c_render::m_render
$L55322:

; 196  :    }

	jmp	SHORT $L55318
$L55319:

; 197  :    
; 198  :    return l_msg.wParam;

	mov	eax, DWORD PTR _l_msg$[ebp+8]

; 199  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_loop@c_app@@QAEIXZ ENDP				; c_app::m_loop
_TEXT	ENDS
PUBLIC	?m_exit@c_app@@QAEHXZ				; c_app::m_exit
EXTRN	__imp__cgD3D9SetDevice:NEAR
EXTRN	__imp__ReleaseDC@8:NEAR
EXTRN	__imp__UnregisterClassA@8:NEAR
EXTRN	__imp__cgDestroyContext:NEAR
EXTRN	__imp__cgDestroyProgram:NEAR
_TEXT	SEGMENT
_this$ = -8
$T55701 = -4
?m_exit@c_app@@QAEHXZ PROC NEAR				; c_app::m_exit

; 205  : int c_app::m_exit ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 8
	mov	DWORD PTR _this$[ebp], ecx

; 206  : 
; 207  :    if (e_app->l_hdc) {

	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	cmp	DWORD PTR [eax+8], 0
	je	SHORT $L55327

; 208  :       ReleaseDC             (e_app->l_hwnd, e_app->l_hdc);

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+8]
	push	edx
	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	ecx, DWORD PTR [eax+12]
	push	ecx
	call	DWORD PTR __imp__ReleaseDC@8
$L55327:

; 210  :    if (e_app->l_full) {

	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	cmp	DWORD PTR [edx+64], 0
	je	SHORT $L55328

; 211  :       ChangeDisplaySettings (NULL, 0);

	push	0
	push	0
	call	DWORD PTR __imp__ChangeDisplaySettingsA@8

; 212  :       ShowCursor            (TRUE);

	push	1
	call	DWORD PTR __imp__ShowCursor@4
$L55328:

; 214  : 
; 215  :    cgD3D9SetDevice     ( NULL );

	push	0
	call	DWORD PTR __imp__cgD3D9SetDevice
	add	esp, 4

; 216  :    cgDestroyProgram    ( e_d3d->l_cg_program );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+44]
	push	ecx
	call	DWORD PTR __imp__cgDestroyProgram
	add	esp, 4

; 217  :    cgDestroyContext    ( e_d3d->l_cg_context );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+40]
	push	eax
	call	DWORD PTR __imp__cgDestroyContext
	add	esp, 4

; 218  : 	
; 219  :    m_safe_release      ( e_d3d->l_aniso_lookup );

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [ecx+12], 0
	je	SHORT $L55329
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+12]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+12]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+8]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [edx+12], 0
$L55329:

; 220  :    m_safe_release      ( e_d3d->l_vertex_buffer );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [eax+16], 0
	je	SHORT $L55330
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+16]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+16]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+16], 0
$L55330:

; 221  :    m_safe_release      ( e_d3d->l_index_buffer );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [edx+20], 0
	je	SHORT $L55331
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+20]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+20]
	mov	edx, DWORD PTR [eax]
	push	ecx
	call	DWORD PTR [edx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [eax+20], 0
$L55331:

; 222  :    m_safe_delete_array ( e_d3d->l_attributes );

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [ecx+24], 0
	je	SHORT $L55332
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+24]
	mov	DWORD PTR $T55701[ebp], eax
	mov	ecx, DWORD PTR $T55701[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [edx+24], 0
$L55332:

; 223  :    m_safe_release      ( e_d3d->l_d3d_device );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [eax+8], 0
	je	SHORT $L55334
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+8], 0
$L55334:

; 224  :    m_safe_release      ( e_d3d->l_d3d );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [edx+4], 0
	je	SHORT $L55335
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+4]
	mov	edx, DWORD PTR [eax]
	push	ecx
	call	DWORD PTR [edx+8]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [eax+4], 0
$L55335:

; 225  : 
; 226  :    UnregisterClass (e_app->l_name, e_app->l_hinst);

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+4]
	push	edx
	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	ecx, DWORD PTR [eax+48]
	push	ecx
	call	DWORD PTR __imp__UnregisterClassA@8

; 227  : 
; 228  :    return true;

	mov	eax, 1

; 229  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_exit@c_app@@QAEHXZ ENDP				; c_app::m_exit
_TEXT	ENDS
EXTRN	__imp__SetFocus@4:NEAR
EXTRN	__imp__LoadCursorA@8:NEAR
EXTRN	__imp__LoadIconA@8:NEAR
EXTRN	__imp__UpdateWindow@4:NEAR
EXTRN	__imp__RegisterClassA@4:NEAR
EXTRN	__imp__CreateWindowExA@48:NEAR
EXTRN	__imp__ShowWindow@8:NEAR
EXTRN	__imp__AdjustWindowRect@12:NEAR
_DATA	SEGMENT
	ORG $+2
$SG55359 DB	'[error : (m_gui)] [statement : (l_window_creation_failur'
	DB	'e)]', 00H
_DATA	ENDS
_TEXT	SEGMENT
_l_x$ = 8
_l_y$ = 12
_l_style$ = 16
_l_full$ = 20
_l_hinst$ = 24
_this$ = -64
_l_wnd$ = -60
_l_wnd_class$ = -40
_l_window$ = -56
?m_gui@c_app@@QAEPAUHWND__@@HHKHPAUHINSTANCE__@@@Z PROC NEAR ; c_app::m_gui

; 239  :                    h_i       l_hinst ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 64					; 00000040H
	mov	DWORD PTR _this$[ebp], ecx

; 240  : 
; 241  :    h_w l_wnd;
; 242  :    w_c l_wnd_class;
; 243  : 
; 244  :    memset (&l_wnd_class, 0, sizeof(WNDCLASS));

	push	40					; 00000028H
	push	0
	lea	eax, DWORD PTR _l_wnd_class$[ebp]
	push	eax
	call	_memset
	add	esp, 12					; 0000000cH

; 245  : 
; 246  :    l_wnd_class.style         = CS_HREDRAW | CS_VREDRAW;

	mov	DWORD PTR _l_wnd_class$[ebp], 3

; 247  :    l_wnd_class.lpfnWndProc   = e_app->m_proc;

	mov	DWORD PTR _l_wnd_class$[ebp+4], OFFSET FLAT:?m_proc@c_app@@SGJPAUHWND__@@IIJ@Z ; c_app::m_proc

; 248  :    l_wnd_class.hInstance     = l_hinst;

	mov	ecx, DWORD PTR _l_hinst$[ebp]
	mov	DWORD PTR _l_wnd_class$[ebp+16], ecx

; 249  :    l_wnd_class.hIcon         = LoadIcon  (NULL, IDI_APPLICATION);

	push	32512					; 00007f00H
	push	0
	call	DWORD PTR __imp__LoadIconA@8
	mov	DWORD PTR _l_wnd_class$[ebp+20], eax

; 250  :    l_wnd_class.hCursor       = LoadCursor(NULL, IDC_ARROW);

	push	32512					; 00007f00H
	push	0
	call	DWORD PTR __imp__LoadCursorA@8
	mov	DWORD PTR _l_wnd_class$[ebp+24], eax

; 251  :    l_wnd_class.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);

	mov	DWORD PTR _l_wnd_class$[ebp+28], 6

; 252  :    l_wnd_class.lpszMenuName  = e_app->l_name;

	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	eax, DWORD PTR [edx+48]
	mov	DWORD PTR _l_wnd_class$[ebp+32], eax

; 253  :    l_wnd_class.lpszClassName = e_app->l_name;

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+48]
	mov	DWORD PTR _l_wnd_class$[ebp+36], edx

; 254  : 
; 255  :    RegisterClass (&l_wnd_class);

	lea	eax, DWORD PTR _l_wnd_class$[ebp]
	push	eax
	call	DWORD PTR __imp__RegisterClassA@4

; 256  : 
; 257  :    if(l_full && !l_style) {

	cmp	DWORD PTR _l_full$[ebp], 0
	je	SHORT $L55354
	cmp	DWORD PTR _l_style$[ebp], 0
	jne	SHORT $L55354

; 258  :       l_style = WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;

	mov	DWORD PTR _l_style$[ebp], -2046820352	; 86000000H

; 259  :       m_fullscreen (e_app->l_width, e_app->l_height);

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+56]
	push	edx
	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	ecx, DWORD PTR [eax+52]
	push	ecx
	mov	ecx, DWORD PTR _this$[ebp]
	call	?m_fullscreen@c_app@@QAEHHH@Z		; c_app::m_fullscreen

; 260  :    }else

	jmp	SHORT $L55356
$L55354:

; 261  :    if(!l_style) {

	cmp	DWORD PTR _l_style$[ebp], 0
	jne	SHORT $L55356

; 262  : //    l_style =  WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZE;
; 263  :       l_style =  WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;

	mov	DWORD PTR _l_style$[ebp], 114229248	; 06cf0000H
$L55356:

; 265  : 
; 266  :    e_app->l_hinst = l_hinst;

	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	eax, DWORD PTR _l_hinst$[ebp]
	mov	DWORD PTR [edx+4], eax

; 267  : 
; 268  :    w_r l_window;
; 269  :    l_window.left   = 0;

	mov	DWORD PTR _l_window$[ebp], 0

; 270  :    l_window.right  = l_x;

	mov	ecx, DWORD PTR _l_x$[ebp]
	mov	DWORD PTR _l_window$[ebp+8], ecx

; 271  :    l_window.top    = 0;

	mov	DWORD PTR _l_window$[ebp+4], 0

; 272  :    l_window.bottom = l_y;

	mov	edx, DWORD PTR _l_y$[ebp]
	mov	DWORD PTR _l_window$[ebp+12], edx

; 273  : 
; 274  :    AdjustWindowRect (&l_window, l_style, false);

	push	0
	mov	eax, DWORD PTR _l_style$[ebp]
	push	eax
	lea	ecx, DWORD PTR _l_window$[ebp]
	push	ecx
	call	DWORD PTR __imp__AdjustWindowRect@12

; 275  : 
; 276  :    l_wnd = CreateWindow (e_app->l_name,
; 277  :                          e_app->l_name,
; 278  :                          l_style,
; 279  :                          0, 0,  
; 280  :                          l_window.right  - l_window.left,
; 281  :                          l_window.bottom - l_window.top,
; 282  :                          NULL,
; 283  :                          NULL,
; 284  :                          l_hinst,
; 285  :                          NULL);

	push	0
	mov	edx, DWORD PTR _l_hinst$[ebp]
	push	edx
	push	0
	push	0
	mov	eax, DWORD PTR _l_window$[ebp+12]
	sub	eax, DWORD PTR _l_window$[ebp+4]
	push	eax
	mov	ecx, DWORD PTR _l_window$[ebp+8]
	sub	ecx, DWORD PTR _l_window$[ebp]
	push	ecx
	push	0
	push	0
	mov	edx, DWORD PTR _l_style$[ebp]
	push	edx
	mov	eax, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	ecx, DWORD PTR [eax+48]
	push	ecx
	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	eax, DWORD PTR [edx+48]
	push	eax
	push	0
	call	DWORD PTR __imp__CreateWindowExA@48
	mov	DWORD PTR _l_wnd$[ebp], eax

; 286  :    if(!l_wnd) {

	cmp	DWORD PTR _l_wnd$[ebp], 0
	jne	SHORT $L55358

; 287  :       e_err->m_set ("[error : (m_gui)] [statement : (l_window_creation_failure)]", e_err);

	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	push	ecx
	push	OFFSET FLAT:$SG55359
	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	call	?m_set@c_err@@QAEHPBDPAU1@@Z		; c_err::m_set

; 288  :       exit (-1);

	push	-1
	call	_exit
$L55358:

; 291  : 
; 292  :    ShowWindow   (l_wnd, SW_SHOWNORMAL); // SW_SHOWNORMAL, SW_MAXIMIZE

	push	1
	mov	edx, DWORD PTR _l_wnd$[ebp]
	push	edx
	call	DWORD PTR __imp__ShowWindow@8

; 293  :    UpdateWindow (l_wnd);

	mov	eax, DWORD PTR _l_wnd$[ebp]
	push	eax
	call	DWORD PTR __imp__UpdateWindow@4

; 294  :    SetFocus     (l_wnd);

	mov	ecx, DWORD PTR _l_wnd$[ebp]
	push	ecx
	call	DWORD PTR __imp__SetFocus@4

; 295  : 
; 296  :    return        l_wnd;

	mov	eax, DWORD PTR _l_wnd$[ebp]
$L55343:

; 297  : }

	mov	esp, ebp
	pop	ebp
	ret	20					; 00000014H
?m_gui@c_app@@QAEPAUHWND__@@HHKHPAUHINSTANCE__@@@Z ENDP	; c_app::m_gui
_TEXT	ENDS
PUBLIC	??0D3DXMATRIX@@QAE@XZ				; D3DXMATRIX::D3DXMATRIX
PUBLIC	??0c_d3d@@QAE@XZ				; c_d3d::c_d3d
PUBLIC	??_7c_d3d@@6B@					; c_d3d::`vftable'
PUBLIC	??_Gc_d3d@@UAEPAXI@Z				; c_d3d::`scalar deleting destructor'
PUBLIC	??_Ec_d3d@@UAEPAXI@Z				; c_d3d::`vector deleting destructor'
;	COMDAT ??_7c_d3d@@6B@
; File src/l_d3d.cpp
CONST	SEGMENT
??_7c_d3d@@6B@ DD FLAT:??_Ec_d3d@@UAEPAXI@Z		; c_d3d::`vftable'
CONST	ENDS
_TEXT	SEGMENT
_this$ = -4
??0c_d3d@@QAE@XZ PROC NEAR				; c_d3d::c_d3d

; 5    : c_d3d::c_d3d () {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 68					; 00000044H
	call	??0D3DXMATRIX@@QAE@XZ			; D3DXMATRIX::D3DXMATRIX
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 132				; 00000084H
	call	??0D3DXMATRIX@@QAE@XZ			; D3DXMATRIX::D3DXMATRIX
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 196				; 000000c4H
	call	??0D3DXMATRIX@@QAE@XZ			; D3DXMATRIX::D3DXMATRIX
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_d3d@@6B@ ; c_d3d::`vftable'

; 6    : 
; 7    : }

	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0c_d3d@@QAE@XZ ENDP					; c_d3d::c_d3d
_TEXT	ENDS
;	COMDAT ??0D3DXMATRIX@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4
??0D3DXMATRIX@@QAE@XZ PROC NEAR				; D3DXMATRIX::D3DXMATRIX, COMDAT

; 313  :     D3DXMATRIX() {};

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0D3DXMATRIX@@QAE@XZ ENDP				; D3DXMATRIX::D3DXMATRIX
_TEXT	ENDS
PUBLIC	??1c_d3d@@UAE@XZ				; c_d3d::~c_d3d
;	COMDAT ??_Gc_d3d@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8
_this$ = -4
??_Gc_d3d@@UAEPAXI@Z PROC NEAR				; c_d3d::`scalar deleting destructor', COMDAT
	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	ecx, DWORD PTR _this$[ebp]
	call	??1c_d3d@@UAE@XZ			; c_d3d::~c_d3d
	mov	eax, DWORD PTR ___flags$[ebp]
	and	eax, 1
	test	eax, eax
	je	SHORT $L55367
	mov	ecx, DWORD PTR _this$[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$L55367:
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	4
??_Gc_d3d@@UAEPAXI@Z ENDP				; c_d3d::`scalar deleting destructor'
_TEXT	ENDS
_TEXT	SEGMENT
_this$ = -4
??1c_d3d@@UAE@XZ PROC NEAR				; c_d3d::~c_d3d

; 13   : c_d3d::~c_d3d () {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_d3d@@6B@ ; c_d3d::`vftable'

; 14   : }

	mov	esp, ebp
	pop	ebp
	ret	0
??1c_d3d@@UAE@XZ ENDP					; c_d3d::~c_d3d
_this$ = -4
?m_d3d_init@c_d3d@@QAEHXZ PROC NEAR			; c_d3d::m_d3d_init

; 20   : int c_d3d::m_d3d_init ( void ) {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx

; 21   : 
; 22   :    l_spin_x              = 0.0f;

	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax+260], 0

; 23   :    l_spin_y              = 0.0f;

	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+264], 0

; 24   : 
; 25   :    return 1;

	mov	eax, 1

; 26   : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_d3d_init@c_d3d@@QAEHXZ ENDP				; c_d3d::m_d3d_init
_TEXT	ENDS
EXTRN	??2@YAPAXI@Z:NEAR				; operator new
EXTRN	_D3DXLoadMeshFromXA@32:NEAR
_TEXT	SEGMENT
_l_file$ = 8
_l_fvf$ = 12
_this$ = -24
_l_mesh_raw$ = -4
_l_mesh_opt$ = -8
_l_mesh_fvf$ = -12
$T55709 = -16
$T55710 = -20
?m_load_x_file@c_x@@QAEXPBDK@Z PROC NEAR		; c_x::m_load_x_file

; 5    : void c_x::m_load_x_file ( const char* l_file, const DWORD l_fvf ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 24					; 00000018H
	mov	DWORD PTR _this$[ebp], ecx

; 6    : 
; 7    :    ID3DXMesh *l_mesh_raw = NULL; // raw/mesh

	mov	DWORD PTR _l_mesh_raw$[ebp], 0

; 8    :    ID3DXMesh *l_mesh_opt = NULL; // opt/mesh

	mov	DWORD PTR _l_mesh_opt$[ebp], 0

; 9    :    ID3DXMesh *l_mesh_fvf = NULL; // mesh/conv FVF

	mov	DWORD PTR _l_mesh_fvf$[ebp], 0

; 10   : 		
; 11   :    D3DXLoadMeshFromX ( const_cast<char*>(l_file),
; 12   :                        D3DXMESH_SYSTEMMEM, 
; 13   :                        e_d3d->l_d3d_device, 
; 14   :                        NULL,
; 15   :                        NULL,
; 16   :                        NULL, 
; 17   :                        &e_d3d->l_num_sections, 
; 18   :                        &l_mesh_raw );

	lea	eax, DWORD PTR _l_mesh_raw$[ebp]
	push	eax
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 28					; 0000001cH
	push	ecx
	push	0
	push	0
	push	0
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	push	eax
	push	272					; 00000110H
	mov	ecx, DWORD PTR _l_file$[ebp]
	push	ecx
	call	_D3DXLoadMeshFromXA@32

; 19   : 
; 20   :    l_mesh_raw->Optimize          ( D3DXMESHOPT_ATTRSORT, NULL, NULL, NULL, NULL, &l_mesh_opt );

	lea	edx, DWORD PTR _l_mesh_opt$[ebp]
	push	edx
	push	0
	push	0
	push	0
	push	0
	push	33554432				; 02000000H
	mov	eax, DWORD PTR _l_mesh_raw$[ebp]
	mov	ecx, DWORD PTR [eax]
	mov	edx, DWORD PTR _l_mesh_raw$[ebp]
	push	edx
	call	DWORD PTR [ecx+104]

; 21   :    l_mesh_opt->GetAttributeTable ( NULL, &e_d3d->l_num_sections );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	eax, 28					; 0000001cH
	push	eax
	push	0
	mov	ecx, DWORD PTR _l_mesh_opt$[ebp]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR _l_mesh_opt$[ebp]
	push	eax
	call	DWORD PTR [edx+76]

; 22   : 
; 23   :    m_safe_delete_array           ( e_d3d->l_attributes );

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [ecx+24], 0
	je	SHORT $L55385
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+24]
	mov	DWORD PTR $T55709[ebp], eax
	mov	ecx, DWORD PTR $T55709[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [edx+24], 0
$L55385:

; 24   : 
; 25   :    e_d3d->l_attributes = new D3DXATTRIBUTERANGE[e_d3d->l_num_sections];

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+28]
	imul	ecx, 20					; 00000014H
	push	ecx
	call	??2@YAPAXI@Z				; operator new
	add	esp, 4
	mov	DWORD PTR $T55710[ebp], eax
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR $T55710[ebp]
	mov	DWORD PTR [edx+24], eax

; 26   : 	
; 27   :    l_mesh_opt->GetAttributeTable ( e_d3d->l_attributes, &e_d3d->l_num_sections );

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 28					; 0000001cH
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+24]
	push	eax
	mov	ecx, DWORD PTR _l_mesh_opt$[ebp]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR _l_mesh_opt$[ebp]
	push	eax
	call	DWORD PTR [edx+76]

; 28   : 
; 29   :    m_safe_release                ( e_d3d->l_vertex_buffer );

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [ecx+16], 0
	je	SHORT $L55389
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+16]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+16]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+8]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [edx+16], 0
$L55389:

; 30   :    m_safe_release                ( e_d3d->l_index_buffer );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	cmp	DWORD PTR [eax+20], 0
	je	SHORT $L55390
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+20]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+20]
	mov	eax, DWORD PTR [ecx]
	push	edx
	call	DWORD PTR [eax+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+20], 0
$L55390:

; 31   : 
; 32   :    // custom format
; 33   :    l_mesh_opt->CloneMeshFVF( D3DXMESH_WRITEONLY, l_fvf, e_d3d->l_d3d_device, &l_mesh_fvf );

	lea	edx, DWORD PTR _l_mesh_fvf$[ebp]
	push	edx
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+8]
	push	ecx
	mov	edx, DWORD PTR _l_fvf$[ebp]
	push	edx
	push	1088					; 00000440H
	mov	eax, DWORD PTR _l_mesh_opt$[ebp]
	mov	ecx, DWORD PTR [eax]
	mov	edx, DWORD PTR _l_mesh_opt$[ebp]
	push	edx
	call	DWORD PTR [ecx+44]

; 34   : 	
; 35   :    l_mesh_fvf->GetVertexBuffer   ( &e_d3d->l_vertex_buffer );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	eax, 16					; 00000010H
	push	eax
	mov	ecx, DWORD PTR _l_mesh_fvf$[ebp]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR _l_mesh_fvf$[ebp]
	push	eax
	call	DWORD PTR [edx+52]

; 36   :    l_mesh_fvf->GetIndexBuffer    ( &e_d3d->l_index_buffer );

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 20					; 00000014H
	push	ecx
	mov	edx, DWORD PTR _l_mesh_fvf$[ebp]
	mov	eax, DWORD PTR [edx]
	mov	ecx, DWORD PTR _l_mesh_fvf$[ebp]
	push	ecx
	call	DWORD PTR [eax+56]

; 37   : 
; 38   :    m_safe_release                ( l_mesh_raw );

	cmp	DWORD PTR _l_mesh_raw$[ebp], 0
	je	SHORT $L55391
	mov	edx, DWORD PTR _l_mesh_raw$[ebp]
	mov	eax, DWORD PTR [edx]
	mov	ecx, DWORD PTR _l_mesh_raw$[ebp]
	push	ecx
	call	DWORD PTR [eax+8]
	mov	DWORD PTR _l_mesh_raw$[ebp], 0
$L55391:

; 39   :    m_safe_release                ( l_mesh_opt );

	cmp	DWORD PTR _l_mesh_opt$[ebp], 0
	je	SHORT $L55392
	mov	edx, DWORD PTR _l_mesh_opt$[ebp]
	mov	eax, DWORD PTR [edx]
	mov	ecx, DWORD PTR _l_mesh_opt$[ebp]
	push	ecx
	call	DWORD PTR [eax+8]
	mov	DWORD PTR _l_mesh_opt$[ebp], 0
$L55392:

; 40   :    m_safe_release                ( l_mesh_fvf );

	cmp	DWORD PTR _l_mesh_fvf$[ebp], 0
	je	SHORT $L55393
	mov	edx, DWORD PTR _l_mesh_fvf$[ebp]
	mov	eax, DWORD PTR [edx]
	mov	ecx, DWORD PTR _l_mesh_fvf$[ebp]
	push	ecx
	call	DWORD PTR [eax+8]
	mov	DWORD PTR _l_mesh_fvf$[ebp], 0
$L55393:

; 41   : 
; 42   : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_load_x_file@c_x@@QAEXPBDK@Z ENDP			; c_x::m_load_x_file
_TEXT	ENDS
PUBLIC	?D3DXMatrixIdentity@@YAPAUD3DXMATRIX@@PAU1@@Z	; D3DXMatrixIdentity
PUBLIC	??0c_v@@QAE@XZ					; c_v::c_v
PUBLIC	?v3@c_v@@QAEXMMM@Z				; c_v::v3
PUBLIC	?v4@c_v@@QAEXMMMM@Z				; c_v::v4
PUBLIC	?m4_normalize@c_v@@QAEXXZ			; c_v::m4_normalize
PUBLIC	__real@4@3ff98efa350000000000
PUBLIC	??DD3DXMATRIX@@QBE?AU0@ABU0@@Z			; D3DXMATRIX::operator*
EXTRN	_D3DXMatrixTranspose@8:NEAR
EXTRN	_D3DXMatrixInverse@12:NEAR
EXTRN	_D3DXMatrixTranslation@16:NEAR
EXTRN	_D3DXMatrixRotationYawPitchRoll@16:NEAR
EXTRN	__imp__cgD3D9SetUniform:NEAR
EXTRN	__imp__cgD3D9SetUniformMatrix:NEAR
;	COMDAT __real@4@3ff98efa350000000000
; File src/l_fx.cpp
CONST	SEGMENT
__real@4@3ff98efa350000000000 DD 03c8efa35r	; 0.0174533
CONST	ENDS
_TEXT	SEGMENT
_this$ = -760
_l_trans$ = -192
_l_rotate$ = -128
_l_w_view_proj$ = -436
_l_w_view_inv$ = -500
_l_world$ = -64
_m2$ = -372
$T55712 = -564
$T55713 = -628
$T55714 = -692
$T55715 = -756
?m_set_fx@c_fx@@QAEHXZ PROC NEAR			; c_fx::m_set_fx

; 5    : int c_fx::m_set_fx ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 760				; 000002f8H
	push	esi
	push	edi
	mov	DWORD PTR _this$[ebp], ecx

; 6    : 
; 7    :    // build matrix
; 8    : 
; 9    :    D3DXMATRIX l_trans;

	lea	ecx, DWORD PTR _l_trans$[ebp]
	call	??0D3DXMATRIX@@QAE@XZ			; D3DXMATRIX::D3DXMATRIX

; 10   :    D3DXMATRIX l_rotate;

	lea	ecx, DWORD PTR _l_rotate$[ebp]
	call	??0D3DXMATRIX@@QAE@XZ			; D3DXMATRIX::D3DXMATRIX

; 11   : 
; 12   :    D3DXMatrixTranslation          ( &l_trans, 0.0f, 0.0f, 5.0f );

	push	1084227584				; 40a00000H
	push	0
	push	0
	lea	eax, DWORD PTR _l_trans$[ebp]
	push	eax
	call	_D3DXMatrixTranslation@16

; 13   :    D3DXMatrixRotationYawPitchRoll ( &l_rotate,
; 14   : 		                    D3DXToRadian(e_d3d->l_spin_x),
; 15   : 		                    D3DXToRadian(e_d3d->l_spin_y),
; 16   : 		                    0.0f );

	push	0
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	fld	DWORD PTR [ecx+264]
	fmul	DWORD PTR __real@4@3ff98efa350000000000
	push	ecx
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	fld	DWORD PTR [edx+260]
	fmul	DWORD PTR __real@4@3ff98efa350000000000
	push	ecx
	fstp	DWORD PTR [esp]
	lea	eax, DWORD PTR _l_rotate$[ebp]
	push	eax
	call	_D3DXMatrixRotationYawPitchRoll@16

; 17   : 
; 18   :    e_d3d->l_mat_world = l_rotate * l_trans;

	lea	ecx, DWORD PTR _l_trans$[ebp]
	push	ecx
	lea	edx, DWORD PTR $T55712[ebp]
	push	edx
	lea	ecx, DWORD PTR _l_rotate$[ebp]
	call	??DD3DXMATRIX@@QBE?AU0@ABU0@@Z		; D3DXMATRIX::operator*
	mov	esi, eax
	mov	edi, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	edi, 68					; 00000044H
	mov	ecx, 16					; 00000010H
	rep movsd

; 19   : 
; 20   :    D3DXMatrixIdentity( &e_d3d->l_mat_view ); //!view/matrix

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	eax, 132				; 00000084H
	push	eax
	call	?D3DXMatrixIdentity@@YAPAUD3DXMATRIX@@PAU1@@Z ; D3DXMatrixIdentity
	add	esp, 4

; 21   : 
; 22   :    // matrix : verts : world-space->clip-space
; 23   :    D3DXMATRIX l_w_view_proj = e_d3d->l_mat_world * e_d3d->l_mat_view * e_d3d->l_mat_proj;

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 196				; 000000c4H
	push	ecx
	lea	edx, DWORD PTR $T55714[ebp]
	push	edx
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	eax, 132				; 00000084H
	push	eax
	lea	ecx, DWORD PTR $T55713[ebp]
	push	ecx
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 68					; 00000044H
	call	??DD3DXMATRIX@@QBE?AU0@ABU0@@Z		; D3DXMATRIX::operator*
	mov	ecx, eax
	call	??DD3DXMATRIX@@QBE?AU0@ABU0@@Z		; D3DXMATRIX::operator*
	mov	esi, eax
	mov	ecx, 16					; 00000010H
	lea	edi, DWORD PTR _l_w_view_proj$[ebp]
	rep movsd

; 24   :    D3DXMatrixTranspose        ( &l_w_view_proj, &l_w_view_proj );

	lea	edx, DWORD PTR _l_w_view_proj$[ebp]
	push	edx
	lea	eax, DWORD PTR _l_w_view_proj$[ebp]
	push	eax
	call	_D3DXMatrixTranspose@8

; 25   : 
; 26   :    // matrix : normals : model-space->view-space
; 27   :    D3DXMATRIX l_w_view_inv = e_d3d->l_mat_world * e_d3d->l_mat_view;

	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 132				; 00000084H
	push	ecx
	lea	edx, DWORD PTR $T55715[ebp]
	push	edx
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	ecx, 68					; 00000044H
	call	??DD3DXMATRIX@@QBE?AU0@ABU0@@Z		; D3DXMATRIX::operator*
	mov	esi, eax
	mov	ecx, 16					; 00000010H
	lea	edi, DWORD PTR _l_w_view_inv$[ebp]
	rep movsd

; 28   :    D3DXMatrixInverse          ( &l_w_view_inv, NULL, &l_w_view_inv );

	lea	eax, DWORD PTR _l_w_view_inv$[ebp]
	push	eax
	push	0
	lea	ecx, DWORD PTR _l_w_view_inv$[ebp]
	push	ecx
	call	_D3DXMatrixInverse@12

; 29   : 
; 30   : /**
; 31   : ex : dx9/ref/D3DXMatrixPerspectiveFovLH
; 32   :    w       0       0               0
; 33   :    0       h       0               0
; 34   :    0       0       zf/(zf-zn)      1
; 35   :    0       0       -zn*zf/(zf-zn)  0
; 36   :    where:
; 37   :    h is the view space height. It is calculated from 
; 38   :    h = cot(fovY/2);
; 39   :    w is the view space width. It is calculated from
; 40   :    w = h / Aspect.
; 41   : **/
; 42   : 
; 43   : // c_v j l_w_view_inv = e_d3d->l_mat_world * e_d3d->l_mat_view;
; 44   :     
; 45   :    D3DXMATRIX l_world = e_d3d->l_mat_world;

	mov	esi, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	esi, 68					; 00000044H
	mov	ecx, 16					; 00000010H
	lea	edi, DWORD PTR _l_world$[ebp]
	rep movsd

; 46   :    D3DXMatrixTranspose        ( &l_world, &l_world );

	lea	edx, DWORD PTR _l_world$[ebp]
	push	edx
	lea	eax, DWORD PTR _l_world$[ebp]
	push	eax
	call	_D3DXMatrixTranspose@8

; 47   : /**
; 48   :    c_v a;
; 49   :    c_v b  = e_d3d->l_mat_world;
; 50   :    a.m_identity  ();
; 51   :    a.m_transpose (b);
; 52   : **/
; 53   : 
; 54   :    c_v m2;

	lea	ecx, DWORD PTR _m2$[ebp]
	call	??0c_v@@QAE@XZ				; c_v::c_v

; 55   :    m2.v4           ( 1.0f, 0.0f, -1.0f, 0.0f );

	push	0
	push	-1082130432				; bf800000H
	push	0
	push	1065353216				; 3f800000H
	lea	ecx, DWORD PTR _m2$[ebp]
	call	?v4@c_v@@QAEXMMMM@Z			; c_v::v4

; 56   :    m2.m4_normalize ();

	lea	ecx, DWORD PTR _m2$[ebp]
	call	?m4_normalize@c_v@@QAEXXZ		; c_v::m4_normalize

; 57   :    m2.v3           ( 0.0f, 0.0f, 0.0f );

	push	0
	push	0
	push	0
	lea	ecx, DWORD PTR _m2$[ebp]
	call	?v3@c_v@@QAEXMMM@Z			; c_v::v3

; 58   : 
; 59   :    cgD3D9SetUniformMatrix ( e_d3d->l_cgparam_wvproj, &l_w_view_proj );

	lea	ecx, DWORD PTR _l_w_view_proj$[ebp]
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+48]
	push	eax
	call	DWORD PTR __imp__cgD3D9SetUniformMatrix
	add	esp, 8

; 60   :    cgD3D9SetUniformMatrix ( e_d3d->l_cgparam_wvinv, &l_w_view_inv );

	lea	ecx, DWORD PTR _l_w_view_inv$[ebp]
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+52]
	push	eax
	call	DWORD PTR __imp__cgD3D9SetUniformMatrix
	add	esp, 8

; 61   :    cgD3D9SetUniformMatrix ( e_d3d->l_cgparam_w, &l_world );

	lea	ecx, DWORD PTR _l_world$[ebp]
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+56]
	push	eax
	call	DWORD PTR __imp__cgD3D9SetUniformMatrix
	add	esp, 8

; 62   :    cgD3D9SetUniform       ( e_d3d->l_cgparam_l_vect, &m2.v_4 );

	lea	ecx, DWORD PTR _m2$[ebp+12]
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+60]
	push	eax
	call	DWORD PTR __imp__cgD3D9SetUniform
	add	esp, 8

; 63   :    cgD3D9SetUniform       ( e_d3d->l_cgparam_e_vect, &m2.v_3 );

	lea	ecx, DWORD PTR _m2$[ebp]
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+64]
	push	eax
	call	DWORD PTR __imp__cgD3D9SetUniform
	add	esp, 8

; 64   : 
; 65   :    return 1;

	mov	eax, 1

; 66   : }

	pop	edi
	pop	esi
	mov	esp, ebp
	pop	ebp
	ret	0
?m_set_fx@c_fx@@QAEHXZ ENDP				; c_fx::m_set_fx
_TEXT	ENDS
EXTRN	_D3DXMatrixMultiply@12:NEAR
;	COMDAT ??DD3DXMATRIX@@QBE?AU0@ABU0@@Z
_TEXT	SEGMENT
_mat$ = 12
___$ReturnUdt$ = 8
_this$ = -68
_matT$ = -64
??DD3DXMATRIX@@QBE?AU0@ABU0@@Z PROC NEAR		; D3DXMATRIX::operator*, COMDAT

; 863  : {

	push	ebp
	mov	ebp, esp
	sub	esp, 68					; 00000044H
	push	esi
	push	edi
	mov	DWORD PTR _this$[ebp], ecx

; 864  :     D3DXMATRIX matT;

	lea	ecx, DWORD PTR _matT$[ebp]
	call	??0D3DXMATRIX@@QAE@XZ			; D3DXMATRIX::D3DXMATRIX

; 865  :     D3DXMatrixMultiply(&matT, this, &mat);

	mov	eax, DWORD PTR _mat$[ebp]
	push	eax
	mov	ecx, DWORD PTR _this$[ebp]
	push	ecx
	lea	edx, DWORD PTR _matT$[ebp]
	push	edx
	call	_D3DXMatrixMultiply@12

; 866  :     return matT;

	mov	ecx, 16					; 00000010H
	lea	esi, DWORD PTR _matT$[ebp]
	mov	edi, DWORD PTR ___$ReturnUdt$[ebp]
	rep movsd
	mov	eax, DWORD PTR ___$ReturnUdt$[ebp]

; 867  : }

	pop	edi
	pop	esi
	mov	esp, ebp
	pop	ebp
	ret	8
??DD3DXMATRIX@@QBE?AU0@ABU0@@Z ENDP			; D3DXMATRIX::operator*
_TEXT	ENDS
;	COMDAT ?D3DXMatrixIdentity@@YAPAUD3DXMATRIX@@PAU1@@Z
_TEXT	SEGMENT
_pOut$ = 8
?D3DXMatrixIdentity@@YAPAUD3DXMATRIX@@PAU1@@Z PROC NEAR	; D3DXMatrixIdentity, COMDAT

; 1918 : {

	push	ebp
	mov	ebp, esp

; 1919 : #ifdef D3DX_DEBUG
; 1920 :     if(!pOut)
; 1921 :         return NULL;
; 1922 : #endif
; 1923 : 
; 1924 :     pOut->m[0][1] = pOut->m[0][2] = pOut->m[0][3] =
; 1925 :     pOut->m[1][0] = pOut->m[1][2] = pOut->m[1][3] =
; 1926 :     pOut->m[2][0] = pOut->m[2][1] = pOut->m[2][3] =
; 1927 :     pOut->m[3][0] = pOut->m[3][1] = pOut->m[3][2] = 0.0f;

	mov	eax, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [eax+56], 0
	mov	ecx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [ecx+52], 0
	mov	edx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [edx+48], 0
	mov	eax, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [eax+44], 0
	mov	ecx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [ecx+36], 0
	mov	edx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [edx+32], 0
	mov	eax, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [eax+28], 0
	mov	ecx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [ecx+24], 0
	mov	edx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [edx+16], 0
	mov	eax, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [eax+12], 0
	mov	ecx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [ecx+8], 0
	mov	edx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [edx+4], 0

; 1928 : 
; 1929 :     pOut->m[0][0] = pOut->m[1][1] = pOut->m[2][2] = pOut->m[3][3] = 1.0f;

	mov	eax, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [eax+60], 1065353216		; 3f800000H
	mov	ecx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [ecx+40], 1065353216		; 3f800000H
	mov	edx, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [edx+20], 1065353216		; 3f800000H
	mov	eax, DWORD PTR _pOut$[ebp]
	mov	DWORD PTR [eax], 1065353216		; 3f800000H

; 1930 :     return pOut;

	mov	eax, DWORD PTR _pOut$[ebp]

; 1931 : }

	pop	ebp
	ret	0
?D3DXMatrixIdentity@@YAPAUD3DXMATRIX@@PAU1@@Z ENDP	; D3DXMatrixIdentity
_TEXT	ENDS
;	COMDAT ??0c_v@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4
??0c_v@@QAE@XZ PROC NEAR				; c_v::c_v, COMDAT

; 24   :       c_v  () {};

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0c_v@@QAE@XZ ENDP					; c_v::c_v
_TEXT	ENDS
;	COMDAT ?v3@c_v@@QAEXMMM@Z
_TEXT	SEGMENT
_x$ = 8
_y$ = 12
_z$ = 16
_this$ = -4
?v3@c_v@@QAEXMMM@Z PROC NEAR				; c_v::v3, COMDAT

; 26   :       void         v3 ( float x, float y, float z )          { v_3[0] = x; v_3[1] = y; v_3[2] = z; }

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR _x$[ebp]
	mov	DWORD PTR [eax], ecx
	mov	edx, DWORD PTR _this$[ebp]
	mov	eax, DWORD PTR _y$[ebp]
	mov	DWORD PTR [edx+4], eax
	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR _z$[ebp]
	mov	DWORD PTR [ecx+8], edx
	mov	esp, ebp
	pop	ebp
	ret	12					; 0000000cH
?v3@c_v@@QAEXMMM@Z ENDP					; c_v::v3
_TEXT	ENDS
;	COMDAT ?v4@c_v@@QAEXMMMM@Z
_TEXT	SEGMENT
_x$ = 8
_y$ = 12
_z$ = 16
_u$ = 20
_this$ = -4
?v4@c_v@@QAEXMMMM@Z PROC NEAR				; c_v::v4, COMDAT

; 27   :       void         v4 ( float x, float y, float z, float u ) { v_4[0] = x; v_4[1] = y; v_4[2] = z; v_4[3] = u; }

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR _x$[ebp]
	mov	DWORD PTR [eax+12], ecx
	mov	edx, DWORD PTR _this$[ebp]
	mov	eax, DWORD PTR _y$[ebp]
	mov	DWORD PTR [edx+16], eax
	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR _z$[ebp]
	mov	DWORD PTR [ecx+20], edx
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR _u$[ebp]
	mov	DWORD PTR [eax+24], ecx
	mov	esp, ebp
	pop	ebp
	ret	16					; 00000010H
?v4@c_v@@QAEXMMMM@Z ENDP				; c_v::v4
_TEXT	ENDS
EXTRN	__imp__cgGetNamedParameter:NEAR
EXTRN	__imp__cgGetParameterType:NEAR
EXTRN	__imp__cgD3D9TypeToSize:NEAR
EXTRN	__imp__cgD3D9ValidateVertexDeclaration:NEAR
EXTRN	__imp__cgD3D9LoadProgram:NEAR
EXTRN	__imp__cgD3D9GetLatestVertexProfile:NEAR
EXTRN	__imp__cgD3D9GetOptimalOptions:NEAR
EXTRN	__assert:NEAR
EXTRN	__imp__cgCreateContext:NEAR
EXTRN	__imp__cgCreateProgramFromFile:NEAR
_DATA	SEGMENT
$SG55418 DB	'main', 00H
	ORG $+3
$SG55419 DB	'fx/fx_cg_anisotropic.cg', 00H
$SG55424 DB	'src/l_fx.cpp', 00H
	ORG $+3
$SG55425 DB	'cgD3D9ValidateVertexDeclaration( e_d3d->l_cg_program, de'
	DB	'claration )', 00H
$SG55426 DB	'worldViewProj', 00H
	ORG $+2
$SG55427 DB	'worldViewInv', 00H
	ORG $+3
$SG55428 DB	'world', 00H
	ORG $+2
$SG55429 DB	'lightVector', 00H
$SG55430 DB	'eyePosition', 00H
$SG55432 DB	'src/l_fx.cpp', 00H
	ORG $+3
$SG55433 DB	'cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_wvp'
	DB	'roj)) == 16', 00H
$SG55435 DB	'src/l_fx.cpp', 00H
	ORG $+3
$SG55436 DB	'cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_wvi'
	DB	'nv)) == 9', 00H
	ORG $+2
$SG55438 DB	'src/l_fx.cpp', 00H
	ORG $+3
$SG55439 DB	'cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_w))'
	DB	' == 12', 00H
	ORG $+1
$SG55441 DB	'src/l_fx.cpp', 00H
	ORG $+3
$SG55442 DB	'cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_l_v'
	DB	'ect)) == 3', 00H
	ORG $+1
$SG55444 DB	'src/l_fx.cpp', 00H
	ORG $+3
$SG55445 DB	'cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_e_v'
	DB	'ect)) == 3', 00H
_DATA	ENDS
_TEXT	SEGMENT
_this$ = -40
_l_vertex_profile$ = -4
_l_vertex_options$ = -12
_declaration$ = -36
?m_init_fx@c_fx@@QAEHXZ PROC NEAR			; c_fx::m_init_fx

; 72   : int c_fx::m_init_fx ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 40					; 00000028H
	mov	DWORD PTR _this$[ebp], ecx

; 73   : 
; 74   :    e_d3d->l_cg_context = cgCreateContext(); // context()

	call	DWORD PTR __imp__cgCreateContext
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+40], eax

; 75   :    cgD3D9SetDevice( e_d3d->l_d3d_device );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	push	eax
	call	DWORD PTR __imp__cgD3D9SetDevice
	add	esp, 4

; 76   : 
; 77   :    CGprofile l_vertex_profile = cgD3D9GetLatestVertexProfile(); // vertex profile

	call	DWORD PTR __imp__cgD3D9GetLatestVertexProfile
	mov	DWORD PTR _l_vertex_profile$[ebp], eax

; 78   : 
; 79   :    // optimal options for(profiles)
; 80   : 
; 81   :    const char** l_vertex_options[] = 
; 82   :    {
; 83   :       cgD3D9GetOptimalOptions(l_vertex_profile), 0 

	mov	ecx, DWORD PTR _l_vertex_profile$[ebp]
	push	ecx
	call	DWORD PTR __imp__cgD3D9GetOptimalOptions
	add	esp, 4
	mov	DWORD PTR _l_vertex_options$[ebp], eax

; 84   :    };

	mov	DWORD PTR _l_vertex_options$[ebp+4], 0

; 85   : 
; 86   :    // create()
; 87   : 
; 88   :    e_d3d->l_cg_program = cgCreateProgramFromFile( e_d3d->l_cg_context,
; 89   :                                                  CG_SOURCE,
; 90   : 		                                 "fx/fx_cg_anisotropic.cg",
; 91   : 	                                         l_vertex_profile,
; 92   :                                                  "main",
; 93   :                                                  (const char**)l_vertex_options );

	lea	edx, DWORD PTR _l_vertex_options$[ebp]
	push	edx
	push	OFFSET FLAT:$SG55418
	mov	eax, DWORD PTR _l_vertex_profile$[ebp]
	push	eax
	push	OFFSET FLAT:$SG55419
	push	4112					; 00001010H
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+40]
	push	edx
	call	DWORD PTR __imp__cgCreateProgramFromFile
	add	esp, 24					; 00000018H
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+44], eax

; 94   : 
; 95   :    // bindings.
; 96   : 
; 97   :    const D3DVERTEXELEMENT9 declaration[] = 
; 98   :    {
; 99   :       { 0, 0 * sizeof(float),D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION, 0 },

	mov	WORD PTR _declaration$[ebp], 0
	mov	WORD PTR _declaration$[ebp+2], 0
	mov	BYTE PTR _declaration$[ebp+4], 2
	mov	BYTE PTR _declaration$[ebp+5], 0
	mov	BYTE PTR _declaration$[ebp+6], 0
	mov	BYTE PTR _declaration$[ebp+7], 0

; 100  :       { 0, 3 * sizeof(float),D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_NORMAL,   0 },

	mov	WORD PTR _declaration$[ebp+8], 0
	mov	WORD PTR _declaration$[ebp+10], 12	; 0000000cH
	mov	BYTE PTR _declaration$[ebp+12], 2
	mov	BYTE PTR _declaration$[ebp+13], 0
	mov	BYTE PTR _declaration$[ebp+14], 3
	mov	BYTE PTR _declaration$[ebp+15], 0

; 101  :       D3DDECL_END()

	mov	WORD PTR _declaration$[ebp+16], 255	; 000000ffH
	mov	WORD PTR _declaration$[ebp+18], 0
	mov	BYTE PTR _declaration$[ebp+20], 17	; 00000011H
	mov	BYTE PTR _declaration$[ebp+21], 0
	mov	BYTE PTR _declaration$[ebp+22], 0
	mov	BYTE PTR _declaration$[ebp+23], 0

; 102  :    };
; 103  : 
; 104  :    // compatibility.
; 105  : 
; 106  :    assert(cgD3D9ValidateVertexDeclaration( e_d3d->l_cg_program, declaration ));

	lea	edx, DWORD PTR _declaration$[ebp]
	push	edx
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	ecx, DWORD PTR [eax+44]
	push	ecx
	call	DWORD PTR __imp__cgD3D9ValidateVertexDeclaration
	add	esp, 8
	test	eax, eax
	jne	SHORT $L55724
	push	106					; 0000006aH
	push	OFFSET FLAT:$SG55424
	push	OFFSET FLAT:$SG55425
	call	__assert
	add	esp, 12					; 0000000cH
$L55724:

; 107  : 
; 108  :    e_d3d->l_d3d_device->CreateVertexDeclaration( declaration, &e_d3d->l_vertex_declare );

	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	add	eax, 32					; 00000020H
	push	eax
	lea	ecx, DWORD PTR _declaration$[ebp]
	push	ecx
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+8]
	mov	ecx, DWORD PTR [edx]
	push	eax
	call	DWORD PTR [ecx+344]

; 109  : 	
; 110  :    // load
; 111  : 
; 112  :    cgD3D9LoadProgram( e_d3d->l_cg_program, TRUE, 0 );

	push	0
	push	1
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+44]
	push	eax
	call	DWORD PTR __imp__cgD3D9LoadProgram
	add	esp, 12					; 0000000cH

; 113  : 
; 114  :    // bind/parms
; 115  : 
; 116  :    e_d3d->l_cgparam_wvproj  = cgGetNamedParameter( e_d3d->l_cg_program, "worldViewProj" );

	push	OFFSET FLAT:$SG55426
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	edx, DWORD PTR [ecx+44]
	push	edx
	call	DWORD PTR __imp__cgGetNamedParameter
	add	esp, 8
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+48], eax

; 117  :    e_d3d->l_cgparam_wvinv   = cgGetNamedParameter( e_d3d->l_cg_program, "worldViewInv" );

	push	OFFSET FLAT:$SG55427
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+44]
	push	eax
	call	DWORD PTR __imp__cgGetNamedParameter
	add	esp, 8
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+52], eax

; 118  :    e_d3d->l_cgparam_w       = cgGetNamedParameter( e_d3d->l_cg_program, "world" );

	push	OFFSET FLAT:$SG55428
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+44]
	push	eax
	call	DWORD PTR __imp__cgGetNamedParameter
	add	esp, 8
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+56], eax

; 119  :    e_d3d->l_cgparam_l_vect  = cgGetNamedParameter( e_d3d->l_cg_program, "lightVector" );

	push	OFFSET FLAT:$SG55429
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+44]
	push	eax
	call	DWORD PTR __imp__cgGetNamedParameter
	add	esp, 8
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+60], eax

; 120  :    e_d3d->l_cgparam_e_vect  = cgGetNamedParameter( e_d3d->l_cg_program, "eyePosition" );

	push	OFFSET FLAT:$SG55430
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+44]
	push	eax
	call	DWORD PTR __imp__cgGetNamedParameter
	add	esp, 8
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	DWORD PTR [ecx+64], eax

; 121  : 
; 122  :    // check/size
; 123  : 
; 124  :    assert(cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_wvproj)) == 16 );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+48]
	push	eax
	call	DWORD PTR __imp__cgGetParameterType
	add	esp, 4
	push	eax
	call	DWORD PTR __imp__cgD3D9TypeToSize
	add	esp, 4
	cmp	eax, 16					; 00000010H
	je	SHORT $L55725
	push	124					; 0000007cH
	push	OFFSET FLAT:$SG55432
	push	OFFSET FLAT:$SG55433
	call	__assert
	add	esp, 12					; 0000000cH
$L55725:

; 125  :    assert(cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_wvinv))  == 9 );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+52]
	push	eax
	call	DWORD PTR __imp__cgGetParameterType
	add	esp, 4
	push	eax
	call	DWORD PTR __imp__cgD3D9TypeToSize
	add	esp, 4
	cmp	eax, 9
	je	SHORT $L55726
	push	125					; 0000007dH
	push	OFFSET FLAT:$SG55435
	push	OFFSET FLAT:$SG55436
	call	__assert
	add	esp, 12					; 0000000cH
$L55726:

; 126  :    assert(cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_w))      == 12 );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+56]
	push	eax
	call	DWORD PTR __imp__cgGetParameterType
	add	esp, 4
	push	eax
	call	DWORD PTR __imp__cgD3D9TypeToSize
	add	esp, 4
	cmp	eax, 12					; 0000000cH
	je	SHORT $L55727
	push	126					; 0000007eH
	push	OFFSET FLAT:$SG55438
	push	OFFSET FLAT:$SG55439
	call	__assert
	add	esp, 12					; 0000000cH
$L55727:

; 127  :    assert(cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_l_vect)) == 3 );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+60]
	push	eax
	call	DWORD PTR __imp__cgGetParameterType
	add	esp, 4
	push	eax
	call	DWORD PTR __imp__cgD3D9TypeToSize
	add	esp, 4
	cmp	eax, 3
	je	SHORT $L55728
	push	127					; 0000007fH
	push	OFFSET FLAT:$SG55441
	push	OFFSET FLAT:$SG55442
	call	__assert
	add	esp, 12					; 0000000cH
$L55728:

; 128  :    assert(cgD3D9TypeToSize(cgGetParameterType(e_d3d->l_cgparam_e_vect)) == 3 );

	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	mov	eax, DWORD PTR [edx+64]
	push	eax
	call	DWORD PTR __imp__cgGetParameterType
	add	esp, 4
	push	eax
	call	DWORD PTR __imp__cgD3D9TypeToSize
	add	esp, 4
	cmp	eax, 3
	je	SHORT $L55729
	push	128					; 00000080H
	push	OFFSET FLAT:$SG55444
	push	OFFSET FLAT:$SG55445
	call	__assert
	add	esp, 12					; 0000000cH
$L55729:

; 129  : 
; 130  :    return 1;

	mov	eax, 1

; 131  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m_init_fx@c_fx@@QAEHXZ ENDP				; c_fx::m_init_fx
_TEXT	ENDS
PUBLIC	??0c_inp@@QAE@XZ				; c_inp::c_inp
PUBLIC	??_7c_inp@@6B@					; c_inp::`vftable'
PUBLIC	??_Gc_inp@@UAEPAXI@Z				; c_inp::`scalar deleting destructor'
PUBLIC	??_Ec_inp@@UAEPAXI@Z				; c_inp::`vector deleting destructor'
;	COMDAT ??_7c_inp@@6B@
; File src/l_inp.cpp
CONST	SEGMENT
??_7c_inp@@6B@ DD FLAT:??_Ec_inp@@UAEPAXI@Z		; c_inp::`vftable'
CONST	ENDS
_TEXT	SEGMENT
_this$ = -4
??0c_inp@@QAE@XZ PROC NEAR				; c_inp::c_inp

; 5    : c_inp::c_inp () {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_inp@@6B@ ; c_inp::`vftable'

; 6    : 
; 7    : }

	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	0
??0c_inp@@QAE@XZ ENDP					; c_inp::c_inp
_TEXT	ENDS
PUBLIC	??1c_inp@@UAE@XZ				; c_inp::~c_inp
;	COMDAT ??_Gc_inp@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8
_this$ = -4
??_Gc_inp@@UAEPAXI@Z PROC NEAR				; c_inp::`scalar deleting destructor', COMDAT
	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	ecx, DWORD PTR _this$[ebp]
	call	??1c_inp@@UAE@XZ			; c_inp::~c_inp
	mov	eax, DWORD PTR ___flags$[ebp]
	and	eax, 1
	test	eax, eax
	je	SHORT $L55453
	mov	ecx, DWORD PTR _this$[ebp]
	push	ecx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$L55453:
	mov	eax, DWORD PTR _this$[ebp]
	mov	esp, ebp
	pop	ebp
	ret	4
??_Gc_inp@@UAEPAXI@Z ENDP				; c_inp::`scalar deleting destructor'
_TEXT	ENDS
_TEXT	SEGMENT
_this$ = -4
??1c_inp@@UAE@XZ PROC NEAR				; c_inp::~c_inp

; 13   : c_inp::~c_inp () {

	push	ebp
	mov	ebp, esp
	push	ecx
	mov	DWORD PTR _this$[ebp], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax], OFFSET FLAT:??_7c_inp@@6B@ ; c_inp::`vftable'

; 14   : 
; 15   : }

	mov	esp, ebp
	pop	ebp
	ret	0
??1c_inp@@UAE@XZ ENDP					; c_inp::~c_inp
_w_param$ = 8
_l_msg$ = 12
_this$ = -4
?m_mouse_movement@c_inp@@QAEXII@Z PROC NEAR		; c_inp::m_mouse_movement

; 21   : void c_inp::m_mouse_movement ( p_w w_param, u_i l_msg ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 16					; 00000010H
	mov	DWORD PTR _this$[ebp], ecx

; 22   : 
; 23   :    switch (l_msg) {

	mov	eax, DWORD PTR _l_msg$[ebp]
	mov	DWORD PTR -8+[ebp], eax
	cmp	DWORD PTR -8+[ebp], 512			; 00000200H
	je	SHORT $L55471
	cmp	DWORD PTR -8+[ebp], 513			; 00000201H
	je	SHORT $L55466
	cmp	DWORD PTR -8+[ebp], 514			; 00000202H
	je	SHORT $L55470
	jmp	$L55463
$L55466:

; 26   : 
; 27   :          l_last_mouse.x = l_current_mouse.x = LOWORD(w_param);

	mov	ecx, DWORD PTR _w_param$[ebp]
	and	ecx, 65535				; 0000ffffH
	mov	edx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [edx+12], ecx
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR [ecx+12]
	mov	DWORD PTR [eax+4], edx

; 28   :          l_last_mouse.y = l_current_mouse.y = HIWORD(w_param);

	mov	eax, DWORD PTR _w_param$[ebp]
	shr	eax, 16					; 00000010H
	and	eax, 65535				; 0000ffffH
	and	eax, 65535				; 0000ffffH
	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+16], eax
	mov	edx, DWORD PTR _this$[ebp]
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR [eax+16]
	mov	DWORD PTR [edx+8], ecx

; 29   :          l_mouse_active = true;

	mov	edx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [edx+20], 1

; 30   : 
; 31   :          break;

	jmp	$L55463
$L55470:

; 34   : 
; 35   :          l_mouse_active = false;

	mov	eax, DWORD PTR _this$[ebp]
	mov	DWORD PTR [eax+20], 0

; 36   :          break;

	jmp	$L55463
$L55471:

; 39   : 
; 40   :          l_current_mouse.x = LOWORD(w_param);

	mov	ecx, DWORD PTR _w_param$[ebp]
	and	ecx, 65535				; 0000ffffH
	mov	edx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [edx+12], ecx

; 41   :          l_current_mouse.y = HIWORD(w_param);

	mov	eax, DWORD PTR _w_param$[ebp]
	shr	eax, 16					; 00000010H
	and	eax, 65535				; 0000ffffH
	and	eax, 65535				; 0000ffffH
	mov	ecx, DWORD PTR _this$[ebp]
	mov	DWORD PTR [ecx+16], eax

; 42   : 
; 43   : 	 if( l_mouse_active ) {

	mov	edx, DWORD PTR _this$[ebp]
	cmp	DWORD PTR [edx+20], 0
	je	SHORT $L55475

; 44   : 	    e_d3d->l_spin_x -= (l_current_mouse.x - l_last_mouse.x);

	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR [eax+12]
	sub	edx, DWORD PTR [ecx+4]
	mov	DWORD PTR -12+[ebp], edx
	fild	DWORD PTR -12+[ebp]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	fsubr	DWORD PTR [eax+260]
	mov	ecx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	fstp	DWORD PTR [ecx+260]

; 45   : 	    e_d3d->l_spin_y -= (l_current_mouse.y - l_last_mouse.y);

	mov	edx, DWORD PTR _this$[ebp]
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR [edx+16]
	sub	ecx, DWORD PTR [eax+8]
	mov	DWORD PTR -16+[ebp], ecx
	fild	DWORD PTR -16+[ebp]
	mov	edx, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	fsubr	DWORD PTR [edx+264]
	mov	eax, DWORD PTR ?e_d3d@@3PAUc_d3d@@A	; e_d3d
	fstp	DWORD PTR [eax+264]
$L55475:

; 47   : 			
; 48   : 	 l_last_mouse.x = l_current_mouse.x; 

	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR _this$[ebp]
	mov	eax, DWORD PTR [edx+12]
	mov	DWORD PTR [ecx+4], eax

; 49   :          l_last_mouse.y = l_current_mouse.y;

	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR _this$[ebp]
	mov	eax, DWORD PTR [edx+16]
	mov	DWORD PTR [ecx+8], eax
$L55463:

; 53   : 
; 54   : }

	mov	esp, ebp
	pop	ebp
	ret	8
?m_mouse_movement@c_inp@@QAEXII@Z ENDP			; c_inp::m_mouse_movement
_TEXT	ENDS
PUBLIC	?m4_length@c_v@@QAEMXZ				; c_v::m4_length
PUBLIC	__real@4@00000000000000000000
PUBLIC	__real@4@3fff8000000000000000
;	COMDAT __real@4@00000000000000000000
; File src/l_v.cpp
CONST	SEGMENT
__real@4@00000000000000000000 DD 000000000r	; 0
CONST	ENDS
;	COMDAT __real@4@3fff8000000000000000
CONST	SEGMENT
__real@4@3fff8000000000000000 DD 03f800000r	; 1
CONST	ENDS
;	COMDAT ?m4_normalize@c_v@@QAEXXZ
_TEXT	SEGMENT
_this$ = -12
_length$ = -4
_len$ = -8
?m4_normalize@c_v@@QAEXXZ PROC NEAR			; c_v::m4_normalize, COMDAT

; 12   : inline void c_v::m4_normalize ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 12					; 0000000cH
	mov	DWORD PTR _this$[ebp], ecx

; 13   : 
; 14   :    float length, len = 0;

	mov	DWORD PTR _len$[ebp], 0

; 15   :    length = m4_length();

	mov	ecx, DWORD PTR _this$[ebp]
	call	?m4_length@c_v@@QAEMXZ			; c_v::m4_length
	fstp	DWORD PTR _length$[ebp]

; 16   : 
; 17   :    if (length == 0) return;

	fld	DWORD PTR _length$[ebp]
	fcomp	DWORD PTR __real@4@00000000000000000000
	fnstsw	ax
	test	ah, 64					; 00000040H
	je	SHORT $L55487
	jmp	SHORT $L55484
$L55487:

; 18   : 
; 19   :    len = 1.0f / length;

	fld	DWORD PTR __real@4@3fff8000000000000000
	fdiv	DWORD PTR _length$[ebp]
	fstp	DWORD PTR _len$[ebp]

; 20   : 
; 21   :    v_4[0] *= len;

	mov	eax, DWORD PTR _this$[ebp]
	fld	DWORD PTR _len$[ebp]
	fmul	DWORD PTR [eax+12]
	mov	ecx, DWORD PTR _this$[ebp]
	fstp	DWORD PTR [ecx+12]

; 22   :    v_4[1] *= len;

	mov	edx, DWORD PTR _this$[ebp]
	fld	DWORD PTR _len$[ebp]
	fmul	DWORD PTR [edx+16]
	mov	eax, DWORD PTR _this$[ebp]
	fstp	DWORD PTR [eax+16]

; 23   :    v_4[2] *= len;

	mov	ecx, DWORD PTR _this$[ebp]
	fld	DWORD PTR _len$[ebp]
	fmul	DWORD PTR [ecx+20]
	mov	edx, DWORD PTR _this$[ebp]
	fstp	DWORD PTR [edx+20]

; 24   :    v_4[3] *= len;

	mov	eax, DWORD PTR _this$[ebp]
	fld	DWORD PTR _len$[ebp]
	fmul	DWORD PTR [eax+24]
	mov	ecx, DWORD PTR _this$[ebp]
	fstp	DWORD PTR [ecx+24]
$L55484:

; 25   : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m4_normalize@c_v@@QAEXXZ ENDP				; c_v::m4_normalize
_TEXT	ENDS
EXTRN	_sqrt:NEAR
;	COMDAT ?m4_length@c_v@@QAEMXZ
_TEXT	SEGMENT
_this$ = -12
_length$ = -8
?m4_length@c_v@@QAEMXZ PROC NEAR			; c_v::m4_length, COMDAT

; 38   : inline float c_v::m4_length ( void ) {

	push	ebp
	mov	ebp, esp
	sub	esp, 16					; 00000010H
	mov	DWORD PTR _this$[ebp], ecx

; 39   :    double length = (v_4[0] * v_4[0]) + (v_4[1] * v_4[1]) + (v_4[2] * v_4[2]) + (v_4[3] * v_4[3]);

	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR _this$[ebp]
	fld	DWORD PTR [eax+12]
	fmul	DWORD PTR [ecx+12]
	mov	edx, DWORD PTR _this$[ebp]
	mov	eax, DWORD PTR _this$[ebp]
	fld	DWORD PTR [edx+16]
	fmul	DWORD PTR [eax+16]
	faddp	ST(1), ST(0)
	mov	ecx, DWORD PTR _this$[ebp]
	mov	edx, DWORD PTR _this$[ebp]
	fld	DWORD PTR [ecx+20]
	fmul	DWORD PTR [edx+20]
	faddp	ST(1), ST(0)
	mov	eax, DWORD PTR _this$[ebp]
	mov	ecx, DWORD PTR _this$[ebp]
	fld	DWORD PTR [eax+24]
	fmul	DWORD PTR [ecx+24]
	faddp	ST(1), ST(0)
	fstp	QWORD PTR _length$[ebp]

; 40   :    return (float) sqrt(length);

	mov	edx, DWORD PTR _length$[ebp+4]
	push	edx
	mov	eax, DWORD PTR _length$[ebp]
	push	eax
	call	_sqrt
	add	esp, 8
	fst	DWORD PTR -16+[ebp]

; 41   : }

	mov	esp, ebp
	pop	ebp
	ret	0
?m4_length@c_v@@QAEMXZ ENDP				; c_v::m4_length
_TEXT	ENDS
PUBLIC	_WinMain@16
_DATA	SEGMENT
	ORG $+1
$SG55557 DB	'[error : (winmain)] [statement : (l_main_initialization_'
	DB	'failure)]', 00H
_DATA	ENDS
_TEXT	SEGMENT
_hInstance$ = 8
_WinMain@16 PROC NEAR

; 19   :                      int       ishow ) {

	push	ebp
	mov	ebp, esp

; 20   : 
; 21   :    if (!e_app->m_init (hInstance)) { 

	mov	eax, DWORD PTR _hInstance$[ebp]
	push	eax
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_init@c_app@@QAEHPAUHINSTANCE__@@@Z	; c_app::m_init
	test	eax, eax
	jne	SHORT $L55556

; 22   :       e_err->m_set ("[error : (winmain)] [statement : (l_main_initialization_failure)]", e_err);

	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	push	ecx
	push	OFFSET FLAT:$SG55557
	mov	ecx, DWORD PTR ?e_err@@3PAUc_err@@A	; e_err
	call	?m_set@c_err@@QAEHPBDPAU1@@Z		; c_err::m_set

; 23   :       exit         (-1);

	push	-1
	call	_exit
$L55556:

; 25   :    e_app->m_resize (e_app->l_width, e_app->l_height);

	mov	edx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	eax, DWORD PTR [edx+56]
	push	eax
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	mov	edx, DWORD PTR [ecx+52]
	push	edx
	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_resize@c_app@@QAEXHH@Z		; c_app::m_resize

; 26   : 
; 27   :    e_app->m_loop   ();

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_loop@c_app@@QAEIXZ			; c_app::m_loop

; 28   :    e_app->m_exit   ();

	mov	ecx, DWORD PTR ?e_app@@3PAUc_app@@A	; e_app
	call	?m_exit@c_app@@QAEHXZ			; c_app::m_exit

; 29   : 
; 30   :    return 1;

	mov	eax, 1
$L55555:

; 31   : }

	pop	ebp
	ret	16					; 00000010H
_WinMain@16 ENDP
_TEXT	ENDS
END
