	format	MS COFF
	extrn	___bb_blitz_blitz
	extrn	___bb_nuttershoot_sprite
	extrn	_bbFloatToInt
	extrn	_bbGCFree
	extrn	_bbNullObject
	extrn	_bbObjectClass
	extrn	_bbObjectCompare
	extrn	_bbObjectCtor
	extrn	_bbObjectDowncast
	extrn	_bbObjectDtor
	extrn	_bbObjectFree
	extrn	_bbObjectNew
	extrn	_bbObjectRegisterType
	extrn	_bbObjectReserved
	extrn	_bbObjectSendMessage
	extrn	_bbObjectToString
	extrn	_bb_TSprite
	extrn	_brl_graphics_GraphicsHeight
	extrn	_brl_graphics_GraphicsWidth
	extrn	_brl_linkedlist_CreateList
	public	___bb_nuttershoot_players
	public	__bb_TActor_AddBullet
	public	__bb_TActor_Centre
	public	__bb_TActor_Delete
	public	__bb_TActor_InitActor
	public	__bb_TActor_New
	public	__bb_TActor_Update
	public	__bb_TEnemy_Create
	public	__bb_TEnemy_Delete
	public	__bb_TEnemy_New
	public	__bb_TPlayer_Create
	public	__bb_TPlayer_Delete
	public	__bb_TPlayer_New
	public	__bb_TPlayer_NewGame
	public	__bb_TPlayer_ResetPosition
	public	_bb_TActor
	public	_bb_TEnemy
	public	_bb_TPlayer
	section	"code" code
___bb_nuttershoot_players:
	push	ebp
	mov	ebp,esp
	cmp	dword [_119],0
	je	_120
	mov	eax,0
	mov	esp,ebp
	pop	ebp
	ret
_120:
	mov	dword [_119],1
	call	___bb_blitz_blitz
	call	___bb_nuttershoot_sprite
	push	_bb_TActor
	call	_bbObjectRegisterType
	add	esp,4
	push	_bb_TPlayer
	call	_bbObjectRegisterType
	add	esp,4
	push	_bb_TEnemy
	call	_bbObjectRegisterType
	add	esp,4
	mov	eax,0
	jmp	_53
_53:
	mov	esp,ebp
	pop	ebp
	ret
__bb_TActor_New:
	push	ebp
	mov	ebp,esp
	push	ebx
	mov	ebx,dword [ebp+8]
	push	ebx
	call	_bbObjectCtor
	add	esp,4
	mov	dword [ebx],_bb_TActor
	mov	eax,_bbNullObject
	inc	dword [eax+4]
	mov	dword [ebx+8],eax
	mov	eax,_bbNullObject
	inc	dword [eax+4]
	mov	dword [ebx+12],eax
	mov	eax,_bbNullObject
	inc	dword [eax+4]
	mov	dword [ebx+16],eax
	mov	dword [ebx+20],0
	mov	dword [ebx+24],0
	fldz
	fstp	dword [ebx+28]
	mov	eax,0
	jmp	_56
_56:
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TActor_Delete:
	push	ebp
	mov	ebp,esp
	push	ebx
	mov	ebx,dword [ebp+8]
_59:
	mov	eax,dword [ebx+16]
	dec	dword [eax+4]
	jnz	_126
	push	eax
	call	_bbGCFree
	add	esp,4
_126:
	mov	eax,dword [ebx+12]
	dec	dword [eax+4]
	jnz	_128
	push	eax
	call	_bbGCFree
	add	esp,4
_128:
	mov	eax,dword [ebx+8]
	dec	dword [eax+4]
	jnz	_130
	push	eax
	call	_bbGCFree
	add	esp,4
_130:
	mov	dword [ebx],_bbObjectClass
	push	ebx
	call	_bbObjectDtor
	add	esp,4
	mov	eax,0
	jmp	_124
_124:
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TActor_InitActor:
	push	ebp
	mov	ebp,esp
	push	ebx
	push	esi
	push	edi
	mov	ebx,dword [ebp+8]
	mov	esi,dword [ebp+12]
	mov	ecx,dword [ebp+28]
	mov	edx,dword [ebp+32]
	mov	eax,dword [ebp+36]
	mov	edi,dword [ebp+40]
	push	edi
	push	eax
	push	edx
	push	ecx
	push	esi
	call	dword [_bb_TSprite+48]
	add	esp,20
	inc	dword [eax+4]
	mov	esi,eax
	mov	eax,dword [ebx+8]
	dec	dword [eax+4]
	jnz	_134
	push	eax
	call	_bbGCFree
	add	esp,4
_134:
	mov	dword [ebx+8],esi
	mov	esi,dword [ebp+16]
	inc	dword [esi+4]
	mov	eax,dword [ebx+16]
	dec	dword [eax+4]
	jnz	_138
	push	eax
	call	_bbGCFree
	add	esp,4
_138:
	mov	dword [ebx+16],esi
	call	_brl_linkedlist_CreateList
	inc	dword [eax+4]
	mov	esi,eax
	mov	eax,dword [ebx+12]
	dec	dword [eax+4]
	jnz	_142
	push	eax
	call	_bbGCFree
	add	esp,4
_142:
	mov	dword [ebx+12],esi
	mov	eax,dword [ebp+20]
	mov	dword [ebx+20],eax
	mov	eax,dword [ebp+20]
	mov	dword [ebx+24],eax
	fld	dword [ebp+24]
	fstp	dword [ebx+28]
	mov	eax,dword [ebx+8]
	fldz
	fstp	dword [eax+8]
	mov	eax,dword [ebx+8]
	fldz
	fstp	dword [eax+12]
	mov	eax,dword [ebx+8]
	mov	eax,dword [eax+16]
	fldz
	fstp	qword [eax+8]
	mov	eax,dword [ebx+8]
	mov	eax,dword [eax+16]
	fldz
	fstp	qword [eax+16]
	mov	eax,0
	jmp	_70
_70:
	pop	edi
	pop	esi
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TActor_Centre:
	push	ebp
	mov	ebp,esp
	sub	esp,4
	push	ebx
	push	esi
	mov	esi,dword [ebp+8]
	mov	ebx,dword [esi+8]
	call	_brl_graphics_GraphicsWidth
	cdq
	and	edx,1
	add	eax,edx
	sar	eax,1
	mov	dword [ebp+-4],eax
	fild	dword [ebp+-4]
	fstp	dword [ebx+8]
	mov	ebx,dword [esi+8]
	call	_brl_graphics_GraphicsHeight
	cdq
	and	edx,1
	add	eax,edx
	sar	eax,1
	mov	dword [ebp+-4],eax
	fild	dword [ebp+-4]
	fstp	dword [ebx+12]
	mov	eax,dword [esi+8]
	mov	eax,dword [eax+16]
	fldz
	fstp	qword [eax+8]
	mov	eax,dword [esi+8]
	mov	eax,dword [eax+16]
	fldz
	fstp	qword [eax+16]
	mov	eax,0
	jmp	_73
_73:
	pop	esi
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TActor_Update:
	push	ebp
	mov	ebp,esp
	push	ebx
	push	esi
	mov	ebx,dword [ebp+8]
	mov	eax,dword [ebx+8]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+60]
	add	esp,4
	mov	esi,dword [ebx+12]
	push	esi
	mov	eax,dword [esi]
	call	dword [eax+140]
	add	esp,4
	mov	ebx,eax
	jmp	_18
_20:
	push	_bb_TSprite
	push	ebx
	mov	eax,dword [ebx]
	call	dword [eax+52]
	add	esp,4
	push	eax
	call	_bbObjectDowncast
	add	esp,8
	cmp	eax,_bbNullObject
	je	_18
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+60]
	add	esp,4
_18:
	push	ebx
	mov	eax,dword [ebx]
	call	dword [eax+48]
	add	esp,4
	cmp	eax,0
	jne	_20
_19:
	mov	eax,0
	jmp	_76
_76:
	pop	esi
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TActor_AddBullet:
	push	ebp
	mov	ebp,esp
	sub	esp,8
	push	ebx
	push	esi
	push	edi
	mov	esi,dword [ebp+8]
	mov	eax,dword [ebp+12]
	mov	ebx,dword [ebp+16]
	mov	dword [ebp+-8],eax
	fild	dword [ebp+-8]
	mov	eax,dword [esi+8]
	fsub	dword [eax+8]
	sub	esp,8
	fstp	qword [esp]
	call	_bbFloatToInt
	add	esp,8
	mov	dword [ebp-4],eax
	mov	dword [ebp+-8],ebx
	fild	dword [ebp+-8]
	mov	eax,dword [esi+8]
	fsub	dword [eax+12]
	sub	esp,8
	fstp	qword [esp]
	call	_bbFloatToInt
	add	esp,8
	mov	edi,eax
	mov	eax,dword [ebp-4]
	cmp	eax,0
	sete	al
	movzx	eax,al
	cmp	eax,0
	je	_153
	cmp	edi,0
	sete	al
	movzx	eax,al
_153:
	cmp	eax,0
	je	_155
	mov	eax,0
	jmp	_81
_155:
	cmp	dword [esi+20],0
	jne	_156
	mov	eax,dword [esi+24]
	mov	dword [esi+20],eax
	mov	eax,dword [esi+12]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+112]
	add	esp,4
	cmp	eax,50
	jle	_158
	mov	eax,dword [esi+12]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+80]
	add	esp,4
_158:
	push	0
	push	0
	push	0
	push	2
	push	dword [esi+16]
	call	dword [_bb_TSprite+48]
	add	esp,20
	mov	ebx,eax
	mov	eax,dword [esi+8]
	fld	dword [eax+8]
	fstp	dword [ebx+8]
	mov	eax,dword [esi+8]
	fld	dword [eax+12]
	fstp	dword [ebx+12]
	mov	edx,dword [ebx+16]
	mov	eax,dword [ebp-4]
	mov	dword [ebp+-8],eax
	fild	dword [ebp+-8]
	fstp	qword [edx+8]
	mov	eax,dword [ebx+16]
	mov	dword [ebp+-8],edi
	fild	dword [ebp+-8]
	fstp	qword [eax+16]
	mov	eax,dword [ebx+16]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+64]
	add	esp,4
	mov	eax,dword [ebx+16]
	fld	dword [esi+28]
	sub	esp,8
	fstp	qword [esp]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+80]
	add	esp,12
	mov	eax,dword [esi+12]
	push	ebx
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+68]
	add	esp,8
	jmp	_164
_156:
	sub	dword [esi+20],1
_164:
	mov	eax,0
	jmp	_81
_81:
	pop	edi
	pop	esi
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TPlayer_New:
	push	ebp
	mov	ebp,esp
	push	ebx
	mov	ebx,dword [ebp+8]
	push	ebx
	call	__bb_TActor_New
	add	esp,4
	mov	dword [ebx],_bb_TPlayer
	mov	dword [ebx+32],0
	mov	eax,0
	jmp	_84
_84:
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TPlayer_Delete:
	push	ebp
	mov	ebp,esp
	mov	eax,dword [ebp+8]
_87:
	mov	dword [eax],_bb_TActor
	push	eax
	call	__bb_TActor_Delete
	add	esp,4
	mov	eax,0
	jmp	_165
_165:
	mov	esp,ebp
	pop	ebp
	ret
__bb_TPlayer_Create:
	push	ebp
	mov	ebp,esp
	push	ebx
	push	esi
	push	edi
	mov	esi,dword [ebp+12]
	mov	edi,dword [ebp+16]
	push	_bb_TPlayer
	call	_bbObjectNew
	add	esp,4
	mov	ebx,eax
	mov	eax,ebx
	push	dword [ebp+28]
	push	dword [ebp+24]
	push	dword [ebp+20]
	push	edi
	push	1082130432
	push	10
	push	esi
	push	dword [ebp+8]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+48]
	add	esp,36
	mov	dword [ebx+32],3
	mov	eax,ebx
	jmp	_95
_95:
	pop	edi
	pop	esi
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TPlayer_NewGame:
	push	ebp
	mov	ebp,esp
	push	ebx
	mov	ebx,dword [ebp+8]
	push	ebx
	mov	eax,dword [ebx]
	call	dword [eax+52]
	add	esp,4
	mov	dword [ebx+32],3
	mov	eax,dword [ebx+12]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+52]
	add	esp,4
	mov	eax,dword [ebx+24]
	mov	dword [ebx+20],eax
	mov	eax,0
	jmp	_98
_98:
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TPlayer_ResetPosition:
	push	ebp
	mov	ebp,esp
	sub	esp,4
	push	ebx
	push	esi
	mov	esi,dword [ebp+8]
	mov	ebx,dword [esi+8]
	call	_brl_graphics_GraphicsWidth
	cdq
	and	edx,1
	add	eax,edx
	sar	eax,1
	mov	dword [ebp+-4],eax
	fild	dword [ebp+-4]
	fstp	dword [ebx+8]
	mov	ebx,dword [esi+8]
	call	_brl_graphics_GraphicsHeight
	cdq
	and	edx,1
	add	eax,edx
	sar	eax,1
	mov	dword [ebp+-4],eax
	fild	dword [ebp+-4]
	fstp	dword [ebx+12]
	mov	eax,dword [esi+8]
	mov	eax,dword [eax+16]
	fldz
	fstp	qword [eax+8]
	mov	eax,dword [esi+8]
	mov	eax,dword [eax+16]
	fldz
	fstp	qword [eax+16]
	mov	eax,0
	jmp	_101
_101:
	pop	esi
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TEnemy_New:
	push	ebp
	mov	ebp,esp
	push	ebx
	mov	ebx,dword [ebp+8]
	push	ebx
	call	__bb_TActor_New
	add	esp,4
	mov	dword [ebx],_bb_TEnemy
	mov	eax,0
	jmp	_104
_104:
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
__bb_TEnemy_Delete:
	push	ebp
	mov	ebp,esp
	mov	eax,dword [ebp+8]
_107:
	mov	dword [eax],_bb_TActor
	push	eax
	call	__bb_TActor_Delete
	add	esp,4
	mov	eax,0
	jmp	_170
_170:
	mov	esp,ebp
	pop	ebp
	ret
__bb_TEnemy_Create:
	push	ebp
	mov	ebp,esp
	push	ebx
	push	esi
	push	edi
	mov	esi,dword [ebp+12]
	mov	edi,dword [ebp+16]
	push	_bb_TEnemy
	call	_bbObjectNew
	add	esp,4
	mov	ebx,eax
	mov	eax,ebx
	push	dword [ebp+36]
	push	dword [ebp+32]
	push	dword [ebp+28]
	push	dword [ebp+24]
	push	dword [ebp+20]
	push	edi
	push	esi
	push	dword [ebp+8]
	push	eax
	mov	eax,dword [eax]
	call	dword [eax+48]
	add	esp,36
	mov	eax,ebx
	jmp	_117
_117:
	pop	edi
	pop	esi
	pop	ebx
	mov	esp,ebp
	pop	ebp
	ret
	section	"data" data writeable align 8
	align	4
_119:
	dd	0
_22:
	db	"TActor",0
_23:
	db	"sprite",0
_24:
	db	":TSprite",0
_25:
	db	"m_bullets",0
_26:
	db	":brl.linkedlist.TList",0
_27:
	db	"m_bullet",0
_28:
	db	":brl.max2d.TImage",0
_29:
	db	"m_bullet_del",0
_30:
	db	"i",0
_31:
	db	"m_init_del",0
_32:
	db	"m_bullet_speed",0
_33:
	db	"f",0
_34:
	db	"New",0
_35:
	db	"()i",0
_36:
	db	"Delete",0
_37:
	db	"InitActor",0
_38:
	db	"(:brl.max2d.TImage,:brl.max2d.TImage,i,f,i,i,i,i)i",0
_39:
	db	"Centre",0
_40:
	db	"Update",0
_41:
	db	"AddBullet",0
_42:
	db	"(i,i)i",0
	align	4
_21:
	dd	2
	dd	_22
	dd	3
	dd	_23
	dd	_24
	dd	8
	dd	3
	dd	_25
	dd	_26
	dd	12
	dd	3
	dd	_27
	dd	_28
	dd	16
	dd	3
	dd	_29
	dd	_30
	dd	20
	dd	3
	dd	_31
	dd	_30
	dd	24
	dd	3
	dd	_32
	dd	_33
	dd	28
	dd	6
	dd	_34
	dd	_35
	dd	16
	dd	6
	dd	_36
	dd	_35
	dd	20
	dd	6
	dd	_37
	dd	_38
	dd	48
	dd	6
	dd	_39
	dd	_35
	dd	52
	dd	6
	dd	_40
	dd	_35
	dd	56
	dd	6
	dd	_41
	dd	_42
	dd	60
	dd	0
	align	4
_bb_TActor:
	dd	_bbObjectClass
	dd	_bbObjectFree
	dd	_21
	dd	32
	dd	__bb_TActor_New
	dd	__bb_TActor_Delete
	dd	_bbObjectToString
	dd	_bbObjectCompare
	dd	_bbObjectSendMessage
	dd	_bbObjectReserved
	dd	_bbObjectReserved
	dd	_bbObjectReserved
	dd	__bb_TActor_InitActor
	dd	__bb_TActor_Centre
	dd	__bb_TActor_Update
	dd	__bb_TActor_AddBullet
_44:
	db	"TPlayer",0
_45:
	db	"lives",0
_46:
	db	"Create",0
_47:
	db	"(:brl.max2d.TImage,:brl.max2d.TImage,i,i,i,i):TPlayer",0
_48:
	db	"NewGame",0
_49:
	db	"ResetPosition",0
	align	4
_43:
	dd	2
	dd	_44
	dd	3
	dd	_45
	dd	_30
	dd	32
	dd	6
	dd	_34
	dd	_35
	dd	16
	dd	6
	dd	_36
	dd	_35
	dd	20
	dd	7
	dd	_46
	dd	_47
	dd	64
	dd	6
	dd	_48
	dd	_35
	dd	68
	dd	6
	dd	_49
	dd	_35
	dd	72
	dd	0
	align	4
_bb_TPlayer:
	dd	_bb_TActor
	dd	_bbObjectFree
	dd	_43
	dd	36
	dd	__bb_TPlayer_New
	dd	__bb_TPlayer_Delete
	dd	_bbObjectToString
	dd	_bbObjectCompare
	dd	_bbObjectSendMessage
	dd	_bbObjectReserved
	dd	_bbObjectReserved
	dd	_bbObjectReserved
	dd	__bb_TActor_InitActor
	dd	__bb_TActor_Centre
	dd	__bb_TActor_Update
	dd	__bb_TActor_AddBullet
	dd	__bb_TPlayer_Create
	dd	__bb_TPlayer_NewGame
	dd	__bb_TPlayer_ResetPosition
_51:
	db	"TEnemy",0
_52:
	db	"(:brl.max2d.TImage,:brl.max2d.TImage,i,f,i,i,i,i):TEnemy",0
	align	4
_50:
	dd	2
	dd	_51
	dd	6
	dd	_34
	dd	_35
	dd	16
	dd	6
	dd	_36
	dd	_35
	dd	20
	dd	7
	dd	_46
	dd	_52
	dd	64
	dd	0
	align	4
_bb_TEnemy:
	dd	_bb_TActor
	dd	_bbObjectFree
	dd	_50
	dd	32
	dd	__bb_TEnemy_New
	dd	__bb_TEnemy_Delete
	dd	_bbObjectToString
	dd	_bbObjectCompare
	dd	_bbObjectSendMessage
	dd	_bbObjectReserved
	dd	_bbObjectReserved
	dd	_bbObjectReserved
	dd	__bb_TActor_InitActor
	dd	__bb_TActor_Centre
	dd	__bb_TActor_Update
	dd	__bb_TActor_AddBullet
	dd	__bb_TEnemy_Create
