;--------------------------------------------------------
; File Created by SDCC : FreeWare ANSI-C Compiler
; Version 2.5.0 #1020 (Mar  4 2006)
; This file generated Sat Mar  4 15:05:46 2006
;--------------------------------------------------------
	.module _mullong
	.optsdcc -mz80
	
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
	.globl __mullong
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
;--------------------------------------------------------
;  ram data
;--------------------------------------------------------
	.area _DATA
;--------------------------------------------------------
; overlayable items in  ram 
;--------------------------------------------------------
	.area _OVERLAY
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
	.area _CODE
	.area _GSINIT
	.area _GSFINAL
	.area _GSINIT
;--------------------------------------------------------
; Home
;--------------------------------------------------------
	.area _HOME
	.area _CODE
;--------------------------------------------------------
; code
;--------------------------------------------------------
	.area _CODE
;_mullong.c:709: _mullong (long a, long b)
;	genLabel
;	genFunction
;	---------------------------------
; Function _mullong
; ---------------------------------
__mullong_start::
__mullong:
	push	ix
	ld	ix,#0
	add	ix,sp
	ld	hl,#-27
	add	hl,sp
	ld	sp,hl
;_mullong.c:713: t.i.hi = bcast(a)->b.b0 * bcast(b)->b.b2;       // A
;	genAddrOf
;	AOP_STK for __mullong_sloc1_1_0
	ld	hl,#0x0017
	add	hl,sp
	ld	-8(ix),l
	ld	-7(ix),h
;	genPlus
;	AOP_STK for __mullong_sloc1_1_0
;	AOP_STK for __mullong_sloc0_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-8(ix)
	add	a,#0x02
	ld	-6(ix),a
	ld	a,-7(ix)
	adc	a,#0x00
	ld	-5(ix),a
;	genAddrOf
	ld	hl,#0x001F
	add	hl,sp
	ld	e,l
	ld	d,h
;	genPointerGet
;	AOP_STK for __mullong_sloc2_1_0
	ld	a,(de)
	ld	-9(ix),a
;	genAddrOf
;	AOP_STK for __mullong_sloc3_1_0
	ld	hl,#0x0023
	add	hl,sp
	ld	-11(ix),l
	ld	-10(ix),h
;	genPlus
;	AOP_STK for __mullong_sloc3_1_0
;	AOP_STK for __mullong_sloc4_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-11(ix)
	add	a,#0x02
	ld	-13(ix),a
	ld	a,-10(ix)
	adc	a,#0x00
	ld	-12(ix),a
;	genPointerGet
;	AOP_STK for __mullong_sloc4_1_0
	ld	l,-13(ix)
	ld	h,-12(ix)
	ld	c,(hl)
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
	ld	a,c
	push	af
	inc	sp
;	genIpush
;	AOP_STK for __mullong_sloc2_1_0
	ld	a,-9(ix)
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	b,h
	ld	c,l
	pop	af
	pop	de
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc0_1_0
;	isBitvar = 0
	ld	l,-6(ix)
	ld	h,-5(ix)
	ld	(hl),c
	inc	hl
	ld	(hl),b
;_mullong.c:714: t.i.lo = bcast(a)->b.b0 * bcast(b)->b.b0;       // A
;	genPointerGet
;	AOP_STK for __mullong_sloc3_1_0
;	AOP_STK for __mullong_sloc5_1_0
	ld	l,-11(ix)
	ld	h,-10(ix)
	ld	a,(hl)
	ld	-14(ix),a
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
;	AOP_STK for __mullong_sloc5_1_0
	ld	a,-14(ix)
	push	af
	inc	sp
;	genIpush
;	AOP_STK for __mullong_sloc2_1_0
	ld	a,-9(ix)
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	c,h
	ld	b,l
	pop	af
	pop	de
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc1_1_0
;	isBitvar = 0
	ld	l,-8(ix)
	ld	h,-7(ix)
	ld	(hl),b
	inc	hl
	ld	(hl),c
;_mullong.c:715: t.b.b3 += bcast(a)->b.b3 *
;	genPlus
;	AOP_STK for __mullong_sloc1_1_0
;	AOP_STK for __mullong_sloc6_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-8(ix)
	add	a,#0x03
	ld	-16(ix),a
	ld	a,-7(ix)
	adc	a,#0x00
	ld	-15(ix),a
;	genPointerGet
;	AOP_STK for __mullong_sloc6_1_0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	b,(hl)
;	genPlus
;	AOP_STK for __mullong_sloc8_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,e
	add	a,#0x03
	ld	-18(ix),a
	ld	a,d
	adc	a,#0x00
	ld	-17(ix),a
;	genPointerGet
;	AOP_STK for __mullong_sloc8_1_0
	ld	l,-18(ix)
	ld	h,-17(ix)
	ld	c,(hl)
;_mullong.c:716: bcast(b)->b.b0;       // G
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 1 deSending: 0
	push	bc
	push	de
;	AOP_STK for __mullong_sloc5_1_0
	ld	a,-14(ix)
	push	af
	inc	sp
;	genIpush
	ld	a,c
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	c,l
	pop	af
	pop	de
	pop	af
;	genPlus
;	Can't optimise plus by inc, falling back to the normal way
	ld	b,a
	add	a,c
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc6_1_0
;	isBitvar = 0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	(hl),a
;_mullong.c:717: t.b.b3 += bcast(a)->b.b2 *
;	genPointerGet
;	AOP_STK for __mullong_sloc6_1_0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	b,(hl)
;	genPlus
;	AOP_STK for __mullong_sloc9_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,e
	add	a,#0x02
	ld	-20(ix),a
	ld	a,d
	adc	a,#0x00
	ld	-19(ix),a
;	genPointerGet
;	AOP_STK for __mullong_sloc9_1_0
;	AOP_STK for __mullong_sloc10_1_0
	ld	l,-20(ix)
	ld	h,-19(ix)
	ld	a,(hl)
	ld	-21(ix),a
;_mullong.c:718: bcast(b)->b.b1;       // F
;	genPlus
;	AOP_STK for __mullong_sloc3_1_0
;	AOP_STK for __mullong_sloc11_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-11(ix)
	add	a,#0x01
	ld	-23(ix),a
	ld	a,-10(ix)
	adc	a,#0x00
	ld	-22(ix),a
;	genPointerGet
;	AOP_STK for __mullong_sloc11_1_0
	ld	l,-23(ix)
	ld	h,-22(ix)
	ld	c,(hl)
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 1 deSending: 0
	push	bc
	push	de
	ld	a,c
	push	af
	inc	sp
;	genIpush
;	AOP_STK for __mullong_sloc10_1_0
	ld	a,-21(ix)
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	c,l
	pop	af
	pop	de
	pop	af
;	genPlus
;	Can't optimise plus by inc, falling back to the normal way
	ld	b,a
	add	a,c
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc6_1_0
;	isBitvar = 0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	(hl),a
;_mullong.c:719: t.i.hi += bcast(a)->b.b2 * bcast(b)->b.b0;      // E <- b lost in .lst
;	genPointerGet
;	AOP_STK for __mullong_sloc0_1_0
;	AOP_STK for __mullong_sloc6_1_0
	ld	l,-6(ix)
	ld	h,-5(ix)
	ld	a,(hl)
	ld	-16(ix),a
	inc	hl
	ld	a,(hl)
	ld	-15(ix),a
;	genPointerGet
;	AOP_STK for __mullong_sloc9_1_0
	ld	l,-20(ix)
	ld	h,-19(ix)
	ld	c,(hl)
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
;	AOP_STK for __mullong_sloc5_1_0
	ld	a,-14(ix)
	push	af
	inc	sp
;	genIpush
	ld	a,c
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	b,h
	ld	c,l
	pop	af
	pop	de
;	genPlus
;	AOP_STK for __mullong_sloc6_1_0
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-16(ix)
	add	a,c
	ld	c,a
	ld	a,-15(ix)
	adc	a,b
	ld	b,a
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc0_1_0
;	isBitvar = 0
	ld	l,-6(ix)
	ld	h,-5(ix)
	ld	(hl),c
	inc	hl
	ld	(hl),b
;_mullong.c:721: t.i.hi += bcast(a)->b.b1 * bcast(b)->b.b1;      // D <- b lost in .lst
;	genPointerGet
;	AOP_STK for __mullong_sloc0_1_0
;	AOP_STK for __mullong_sloc9_1_0
	ld	l,-6(ix)
	ld	h,-5(ix)
	ld	a,(hl)
	ld	-20(ix),a
	inc	hl
	ld	a,(hl)
	ld	-19(ix),a
;	genPlus
;	AOP_STK for __mullong_sloc6_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,e
	add	a,#0x01
	ld	-16(ix),a
	ld	a,d
	adc	a,#0x00
	ld	-15(ix),a
;	genPointerGet
;	AOP_STK for __mullong_sloc6_1_0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	c,(hl)
;	genPointerGet
;	AOP_STK for __mullong_sloc11_1_0
	ld	l,-23(ix)
	ld	h,-22(ix)
	ld	b,(hl)
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
	push	bc
	inc	sp
;	genIpush
	ld	a,c
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	b,h
	ld	c,l
	pop	af
	pop	de
;	genPlus
;	AOP_STK for __mullong_sloc9_1_0
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-20(ix)
	add	a,c
	ld	c,a
	ld	a,-19(ix)
	adc	a,b
	ld	b,a
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc0_1_0
;	isBitvar = 0
	ld	l,-6(ix)
	ld	h,-5(ix)
	ld	(hl),c
	inc	hl
	ld	(hl),b
;_mullong.c:723: bcast(a)->bi.b3 = bcast(a)->b.b1 *
;	genPointerGet
;	AOP_STK for __mullong_sloc6_1_0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	c,(hl)
;_mullong.c:724: bcast(b)->b.b2;
;	genPointerGet
;	AOP_STK for __mullong_sloc4_1_0
	ld	l,-13(ix)
	ld	h,-12(ix)
	ld	b,(hl)
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
	push	bc
	inc	sp
;	genIpush
	ld	a,c
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	c,l
	pop	af
	pop	de
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc8_1_0
;	isBitvar = 0
	ld	l,-18(ix)
	ld	h,-17(ix)
	ld	(hl),c
;_mullong.c:725: bcast(a)->bi.i12 = bcast(a)->b.b1 *
;	genPlus
;	AOP_STK for __mullong_sloc11_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,e
	add	a,#0x01
	ld	-23(ix),a
	ld	a,d
	adc	a,#0x00
	ld	-22(ix),a
;	genPlus
;	genPlusIncr
	ld	c,e
	ld	b,d
	inc	bc
;	genPointerGet
	ld	a,(bc)
	ld	c,a
;_mullong.c:726: bcast(b)->b.b0;              // C
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
;	AOP_STK for __mullong_sloc5_1_0
	ld	a,-14(ix)
	push	af
	inc	sp
;	genIpush
	ld	a,c
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	b,h
	ld	c,l
	pop	af
	pop	de
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc11_1_0
;	isBitvar = 0
	ld	l,-23(ix)
	ld	h,-22(ix)
	ld	(hl),c
	inc	hl
	ld	(hl),b
;_mullong.c:728: bcast(b)->bi.b3 = bcast(a)->b.b0 *
;	genPlus
;	AOP_STK for __mullong_sloc3_1_0
;	AOP_STK for __mullong_sloc11_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-11(ix)
	add	a,#0x03
	ld	-23(ix),a
	ld	a,-10(ix)
	adc	a,#0x00
	ld	-22(ix),a
;_mullong.c:729: bcast(b)->b.b3;
;	genPointerGet
;	AOP_STK for __mullong_sloc11_1_0
	ld	l,-23(ix)
	ld	h,-22(ix)
	ld	c,(hl)
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
	ld	a,c
	push	af
	inc	sp
;	genIpush
;	AOP_STK for __mullong_sloc2_1_0
	ld	a,-9(ix)
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	c,l
	pop	af
	pop	de
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc11_1_0
;	isBitvar = 0
	ld	l,-23(ix)
	ld	h,-22(ix)
	ld	(hl),c
;_mullong.c:730: bcast(b)->bi.i12 = bcast(a)->b.b0 *
;	genPlus
;	AOP_STK for __mullong_sloc3_1_0
;	AOP_STK for __mullong_sloc11_1_0
;	genPlusIncr
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-11(ix)
	add	a,#0x01
	ld	-23(ix),a
	ld	a,-10(ix)
	adc	a,#0x00
	ld	-22(ix),a
;_mullong.c:731: bcast(b)->b.b1;              // B
;	genPlus
;	AOP_STK for __mullong_sloc3_1_0
;	genPlusIncr
	ld	c,-11(ix)
	ld	b,-10(ix)
	inc	bc
;	genPointerGet
	ld	a,(bc)
	ld	c,a
;	genIpush
; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 0 deSending: 0
	push	de
	ld	a,c
	push	af
	inc	sp
;	genIpush
;	AOP_STK for __mullong_sloc2_1_0
	ld	a,-9(ix)
	push	af
	inc	sp
;	genCall
	call	__muluchar_rrx_s
	ld	b,h
	ld	c,l
	pop	af
	pop	de
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc11_1_0
;	isBitvar = 0
	ld	l,-23(ix)
	ld	h,-22(ix)
	ld	(hl),c
	inc	hl
	ld	(hl),b
;_mullong.c:732: bcast(b)->bi.b0 = 0;                            // B
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc3_1_0
;	isBitvar = 0
	ld	l,-11(ix)
	ld	h,-10(ix)
;_mullong.c:733: bcast(a)->bi.b0 = 0;                            // C
;	genAssign (pointer)
;	isBitvar = 0
	ld	(hl),#0x00
	ld	a,(hl)
	ld	(de),a
;_mullong.c:734: t.l += a;
;	genPointerGet
;	AOP_STK for __mullong_sloc1_1_0
;	AOP_STK for __mullong_sloc12_1_0
	ld	l,-8(ix)
	ld	h,-7(ix)
	ld	a,(hl)
	ld	-27(ix),a
	inc	hl
	ld	a,(hl)
	ld	-26(ix),a
	inc	hl
	ld	a,(hl)
	ld	-25(ix),a
	inc	hl
	ld	a,(hl)
	ld	-24(ix),a
;	genAssign
;	AOP_STK for 
	ld	c,4(ix)
	ld	b,5(ix)
	ld	e,6(ix)
	ld	d,7(ix)
;	genPlus
;	AOP_STK for __mullong_sloc12_1_0
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,-27(ix)
	add	a,c
	ld	c,a
	ld	a,-26(ix)
	adc	a,b
	ld	b,a
	ld	a,-25(ix)
	adc	a,e
	ld	e,a
	ld	a,-24(ix)
	adc	a,d
	ld	d,a
;	genAssign (pointer)
;	AOP_STK for __mullong_sloc1_1_0
;	isBitvar = 0
	ld	l,-8(ix)
	ld	h,-7(ix)
	ld	(hl),c
	inc	hl
	ld	(hl),b
	inc	hl
	ld	(hl),e
	inc	hl
	ld	(hl),d
;_mullong.c:736: return t.l + b;
;	genAssign
;	(operands are equal 3)
;	genPlus
;	AOP_STK for 
;	Can't optimise plus by inc, falling back to the normal way
	ld	a,c
	add	a,8(ix)
	ld	c,a
	ld	a,b
	adc	a,9(ix)
	ld	b,a
	ld	a,e
	adc	a,10(ix)
	ld	e,a
	ld	a,d
	adc	a,11(ix)
	ld	d,a
;	genRet
; Dump of IC_LEFT: type AOP_REG size 4
;	 reg = debc
	ld	l,c
	ld	h,b
;	genLabel
00101$:
;	genEndFunction
	ld	sp,ix
	pop	ix
	ret
__mullong_end::
	.area _CODE
