l073a	proc	near
	cmp	si,es:[28h]
	jb	@@1
	jmp	l0751
@@1:	ret
l073a	endp

l0745	proc	near
	cmp	si,es:[28h]
	jae	@@1
	jmp	l0751
@@1:	stc
	ret
l0745	endp

l0751	proc	near
	push	cx si di es
	lea	bx,TypeSwitch
	call	ChooseType
	jnz	@@2
	cmp	d3caa,0
	jne	@@1
	call	word ptr cs:[bx+3]
	jmp	short @@2
@@1:	mov	CurName.Offs,si
	mov	CurName.Segm,es
	mov	CurSymbol.Offs,di
	mov	CurSymbol.Segm,es
	call	word ptr cs:[bx+1]
	jc	@@2
	les	si,CurName
	call	StoreName
@@2:	pop	es di si cx
	ret
l0751	endp

ProcessConst	proc	near
	mov	d3ce8.B0,5
	mov	bx,es:[di+2]
	mov	di,es:[di]
	mov	es,es:[bx]
	mov	CurType.Offs,di
	mov	CurType.Segm,es
	mov	al,es:[di]
	les	si,CurSymbol
	add	si,4
	cmp	al,7
	je	@@5
	cmp	al,9
	jne	@@1
	mov	al,es:[si]
	xor	ah,ah
	inc	ax
	jmp	short @@2
@@1:	cmp	al,10
	jne	@@3
	mov	ax,10
@@2:	mov	d3cdc,ax
	mov	d3cde.Offs,si
	mov	d3cde.Segm,es
	mov	ax,Cnt.DataCount
	mov	d3cd8.W0,ax
	mov	d3cd8.W2,0
	jmp	short @@4
@@3:	mov	d3cdc,0
	mov	ax,es:[si]
	mov	d3cd8.W0,ax
	mov	ax,es:[si+2]
	mov	d3cd8.W2,ax
@@4:	call	l101e
	call	StoreData
	clc
	ret
@@5:	stc
	ret
ProcessConst	endp

ProcessType	proc	near
	mov	d3ce8.B0,6
	mov	bx,es:[di+2]
	mov	di,es:[di]
	mov	es,es:[bx]
	mov	CurType.Offs,di
	mov	CurType.Segm,es
	xor	ax,ax
	mov	d3cd8.W0,ax
	mov	d3cd8.W2,ax
	call	l0b84
	cmp	Phase,100h
	jne	@@1
	call	l082c
@@1:	call	l101e
	clc
	ret
ProcessType	endp

l082c	proc	near
	push	es di
	mov	cx,es:[di+4]
	and	cx,7fffh
	call	StartBuf
	mov	di,d3cb8
	mov	ax,8
	cwd
	dec	cx
	mul	cx
	add	di,ax
	mov	ax,Cnt.NameCount
	mov	es:[di+1],ax
	pop	di es
	mov	cl,es:[di]
	cmp	cl,3
	jne	@@1
	mov	es:[di+1ch],ax
@@1:	ret
l082c	endp

ProcessVar	proc	near
@@1:	mov	al,es:[di].vsFlags
	test	al,vfAlias
	jz	@@2
	mov	bx,es:[di].vsLink.Segm
	mov	di,es:[di].vsLink.Offs
	mov	es,es:[bx]
	jmp	ProcessVar
@@2:	cmp	al,vfConst
	ja	@@4
	mov	bx,es:uhDataMap
	jne	@@3
	mov	bx,es:uhConstMap
@@3:	add	bx,es:[di].vsMap
	cmp	es:[bx].smAddr,-1
	je	@@5
@@4:	call	l0b1d
	les	di,CurSymbol
	mov	bx,es:[di].vsType.Segm
	mov	di,es:[di].vsType.Offs
	mov	es,es:[bx]
	mov	CurType.Offs,di
	mov	CurType.Segm,es
	call	l0b84
	call	l101e
	clc
	ret
@@5:	stc
	ret
ProcessVar	endp

ProcessProc	proc	near
	mov	al,es:[di]
	test	al,2
	jnz	@@3
	mov	bx,es:[di+2]
	add	bx,es:[0ch]
	mov	ah,es:[bx+2]
	test	ah,4
	jz	@@4
	cmp	word ptr es:[bx],0
	je	@@3
	mov	cx,8000h
	test	ah,8
	jnz	@@1
	or	cx,4000h
	or	cx,es:[bx+6]
@@1:	mov	d3cd8.W2,cx
	mov	si,es:[bx+4]
	add	si,es:[14h]
	mov	ax,es:[si]
	mov	cx,Cnt.NameCount
	or	ax,ax
	jz	@@2
	mov	d3cd8.W0,ax
	cmp	ax,cx
	jb	@@5
@@2:	mov	d3cd8.W0,cx
	mov	es:[si],cx
	add	si,1
	call	StoreName
	jmp	short @@5
@@3:	stc
	ret
@@4:	mov	dx,es:[bx+6]
	mov	bx,es:[bx+4]
	add	bx,es:[0eh]
	mov	cx,es:[bx]
	cmp	cx,-1
	je	@@3
	add	cx,dx
	mov	d3cd8.W0,cx
	mov	cx,es:[2ch]
	mov	d3cd8.W2,cx
@@5:	xor	cl,cl
	test	ah,2
	jz	@@6
	add	cl,20h
@@6:	test	al,88h
	jnz	@@7
	or	cl,8
@@7:	add	cl,10h
	test	al,4
	jz	@@8
	add	cl,80h
@@8:	mov	d3ce8.B0,cl
	call	l0a5d
	call	l1057
	clc
	ret
ProcessProc	endp

l0958	dw	2
	dw	130h,l02a1-3
	dw	138h,l02aa-3

l0962	proc	near
	test	d3caa,8101h
	jz	@@2
	mov	d3ce8.B0,0
	lea	si,l0958
	segcs	lodsw
	mov	cx,ax
@@1:	segcs	lodsw
	mov	bx,ax
	add	bx,es:[0ch]
	mov	dx,es:[bx+6]
	mov	bx,es:[bx+4]
	add	bx,es:[0eh]
	mov	ax,es:[bx]
	cmp	ax,-1
	je	@@2
	add	ax,dx
	mov	d3cd8.W0,ax
	mov	ax,es:[2ch]
	mov	d3cd8.W2,ax
	push	cx es
	call	l10ac
	push	cs
	pop	es
	segcs	lodsw
	push	si
	mov	si,ax
	call	StoreName
	pop	si es cx
	loop	@@1
	call	StoreFuncType
@@2:	ret
l0962	endp

l09b8	proc	near
	cmp	d3caa,0
	jne	@@1
	ret
@@1:	push	si bx di es
	mov	si,es:[si].trSymbol
	mov	di,si
	call	SkipName
	mov	CurName.Offs,di
	mov	CurName.Segm,es
	mov	CurSymbol.Offs,si
	mov	CurSymbol.Segm,es
	mov	d3cec,0
	test	es:[si].psFlags,pfMethod
	jz	@@2
	inc	d3cec
@@2:	mov	bx,es:[si].psType.ptResult.Segm
	mov	cx,bx
	mov	di,es:[si].psType.ptResult.Offs
	or	cx,di
	jz	@@6
	mov	es,es:[bx]
	mov	CurType.Offs,di
	mov	CurType.Segm,es
	cmp	Phase,1
	jne	@@5
	cmp	es:[di].tdType,ttString
	jne	@@3
	mov	d3ce8.B0,3
	les	di,CurSymbol
	call	GetProcStackSize
	mov	ax,dx
	jmp	short @@4
@@3:	mov	d3ce8.B0,2
	mov	ax,es:[di].tdSizeOf
	neg	ax
	les	di,CurSymbol
	mov	bx,es:[di].psProcMap
	add	bx,es:uhProcMap
	test	byte ptr es:[bx].pmFlags,2
	jz	@@4
	sub	ax,2
@@4:	mov	d3cd8.W0,ax
	mov	d3cd8.W2,0
@@5:	call	l101e
	les	si,CurName
	call	StoreName
@@6:	pop	es di bx si
	ret
l09b8	endp

l0a5d	proc	near
	test	d3caa,100h
	jnz	@@1
	ret
@@1:	mov	al,es:[di]
	mov	bx,es:[0ch]
	add	bx,es:[di+2]
	mov	ah,es:[bx+2]
	test	al,4
	jz	@@2
	mov	cl,7
	jmp	short @@3
@@2:	mov	cl,1
	test	al,1
	jz	@@3
	mov	cl,5
@@3:	cmp	word ptr es:[di+4],0
	je	@@4
	or	cl,40h
@@4:	test	ah,20h
	jz	@@5
	or	cl,80h
@@5:	mov	ah,cl
	mov	bx,es:[di+12h]
	mov	cx,bx
	mov	di,es:[di+10h]
	or	cx,di
	jz	@@6
	mov	es,es:[bx]
	mov	bx,es:[di+4]
	and	bx,7fffh
	les	di,CurSymbol
	test	al,10h
	jnz	@@7
	mov	al,23h
	mov	dx,4
	call	l1118
	jmp	short @@11
@@6:	les	di,CurSymbol
	test	al,10h
	jz	@@8
	mov	bx,1
@@7:	mov	al,2dh
	and	ah,7
	mov	dx,4
	call	l1118
	les	bx,CurSymbol
	call	l0729
	mov	cx,es:[bx]
	les	di,CurSymbol
	mov	bx,es:[di+8]
	mov	di,es:[di+4]
	mov	ax,es:[di+4]
	and	ax,7fffh
	mov	dx,1000h
	call	StoreType
	jmp	short @@11
@@8:	mov	ax,1ch
	cmp	word ptr es:[di+4],0
	jne	@@9
	inc	ax
	inc	ax
@@9:	test	byte ptr es:[di],1
	jz	@@10
	inc	ax
@@10:	mov	bx,di
	call	l0729
	mov	es:[bx+2],ax
@@11:	ret
l0a5d	endp

l0b1d	proc	near
	test	d3caa,1
	jz	@@2
	push	bx
	lea	bx,l028c
	and	al,0dfh
	segcs	xlat
	mov	d3ce8.B0,al
	lea	bx,l0293
	mov	d3cee,al
	call	ChooseType
	mov	ax,es:[di+1]
	call	word ptr cs:[bx+1]
	pop	bx
	cmp	d3cee,0
	jnz	@@1
	add	ax,es:[bx]
@@1:	mov	d3cd8.W0,ax
	mov	d3cd8.W2,dx
@@2:	ret
l0b1d	endp

l0b54	proc	near
	mov	dx,DataStart
	ret
l0b54	endp

l0b59	proc	near
	xor	dx,dx
	test	byte ptr es:[di],20h
	jz	@@1
	or	d3ce8.B0,8
@@1:	ret
l0b59	endp

l0b67	proc	near
	mov	dx,es:[di+3]
	ret
l0b67	endp

l0b6c	proc	near
	xor	dx,dx
	test	d3cec,1
	jz	@@1
	cmp	ax,6
	je	@@2
@@1:	or	d3ce8.B0,8
	inc	d3ced
@@2:	ret
l0b6c	endp
