;--------------------------------------------------------
; File Created by SDCC : FreeWare ANSI-C Compiler
; Version 2.5.1 #1058 (Jul 15 2005)
; This file generated Fri Jul 15 02:53:47 2005
;--------------------------------------------------------
	.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__1_0
	ld	hl,#0x0017
	add	hl,sp
	ld	-8(ix),l
	ld	-7(ix),h
;	genPlus
;	AOP_STK for __mullong__1_0
;	AOP_STK for __mullong__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__1_0
	ld	a,(de)
	ld	-9(ix),a
;	genAddrOf
;	AOP_STK for __mullong__1_0
	ld	hl,#0x0023
	add	hl,sp
	ld	-11(ix),l
	ld	-10(ix),h
;	genPlus
;	AOP_STK for __mullong__1_0
;	AOP_STK for __mullong__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__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__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__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__1_0
;	AOP_STK for __mullong__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__1_0
	ld	a,-14(ix)
	push	af
	inc	sp
;	genIpush
;	AOP_STK for __mullong__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__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__1_0
;	AOP_STK for __mullong__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__1_0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	b,(hl)
;	genPlus
;	AOP_STK for __mullong__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__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__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__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__1_0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	b,(hl)
;	genPlus
;	AOP_STK for __mullong__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__1_0
;	AOP_STK for __mullong__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__1_0
;	AOP_STK for __mullong__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__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__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__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__1_0
;	AOP_STK for __mullong__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__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__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__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__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__1_0
;	AOP_STK for __mullong__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__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__1_0
	ld	l,-16(ix)
	ld	h,-15(ix)
	ld	c,(hl)
;	genPointerGet
;	AOP_STK for __mullong__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__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__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__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__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__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__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__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__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__1_0
;	AOP_STK for __mullong__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__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__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__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__1_0
;	AOP_STK for __mullong__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__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__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__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__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__1_0
;	AOP_STK for __mullong__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__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__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
