Subversion Repositories Kolibri OS

Rev

Rev 920 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 920 Rev 1122
Line 132... Line 132...
132
	lea	eax, [ebp + eax + .p+.Literal*4]
132
	lea	eax, [ebp + eax + .p+.Literal*4]
133
	cmp	ebx, .kNumLitStates
133
	cmp	ebx, .kNumLitStates
134
	jb	.literal
134
	jb	.literal
135
	mov	edx, edi
135
	mov	edx, edi
136
	sub	edx, [ebp+.rep0]
136
	sub	edx, [ebp+.rep0]
-
 
137
	jc	.before_buf
137
	cmp	edx, [ebp+streamInfo.bufPtr]
138
	cmp	edx, [ebp+streamInfo.bufPtr]
138
	jb	.before_buf
139
	jb	.before_buf
139
@@:
140
@@:
140
	mov	dl, [edx]
141
	mov	dl, [edx]
141
	call	.LzmaLiteralDecodeMatch
142
	call	.LzmaLiteralDecodeMatch
Line 175... Line 176...
175
	cmp	bl, 7
176
	cmp	bl, 7
176
	setae	bl
177
	setae	bl
177
	lea	ebx, [9 + ebx + ebx]
178
	lea	ebx, [9 + ebx + ebx]
178
	mov	edx, edi
179
	mov	edx, edi
179
	sub	edx, [ebp+.rep0]
180
	sub	edx, [ebp+.rep0]
-
 
181
	jc	@f
180
	cmp	edx, [ebp+streamInfo.bufPtr]
182
	cmp	edx, [ebp+streamInfo.bufPtr]
181
	jae	@f
183
	jae	.copy_byte
-
 
184
@@:
182
	add	edx, [ebp+streamInfo.bufSize]
185
	add	edx, [ebp+streamInfo.bufSize]
183
	cmp	edx, [ebp+streamInfo.bufPtr]
186
	cmp	edx, [ebp+streamInfo.bufPtr]
184
	jb	return.err
187
	jb	return.err
185
@@:
188
.copy_byte:
186
	mov	al, [edx]
189
	mov	al, [edx]
187
	stosb
190
	stosb
188
	mov	[ebp+.previousByte], al
191
	mov	[ebp+.previousByte], al
189
	jmp	.main_loop
192
	jmp	.main_loop
190
.111:
193
.111:
Line 275... Line 278...
275
        mov     eax, [ebp+.rep0]
278
        mov     eax, [ebp+.rep0]
276
        cmp     eax, [ebp+.dictSize]
279
        cmp     eax, [ebp+.dictSize]
277
        ja      return.err
280
        ja      return.err
278
	mov	esi, edi
281
	mov	esi, edi
279
	sub	esi, eax
282
	sub	esi, eax
-
 
283
	jc	.repmovsb0a
280
        mov     eax, [ebp+streamInfo.bufPtr]
284
        mov     eax, [ebp+streamInfo.bufPtr]
281
        sub     eax, esi
285
        sub     eax, esi
282
        ja      .repmovsb0
286
        ja      .repmovsb0
283
	mov	eax, [ebp+.outEnd]
287
	mov	eax, [ebp+.outEnd]
284
        sub     eax, edi
288
        sub     eax, edi
Line 297... Line 301...
297
	mov	[ebp+.state], ebx
301
	mov	[ebp+.state], ebx
298
        mov     [ebp+.ecx], ecx
302
        mov     [ebp+.ecx], ecx
299
        mov     [ebp+.continue], .restart_repmovsb
303
        mov     [ebp+.continue], .restart_repmovsb
300
        popad
304
        popad
301
        ret
305
        ret
-
 
306
.repmovsb0a:
-
 
307
        mov     eax, [ebp+streamInfo.bufPtr]
-
 
308
        sub     eax, esi
302
.repmovsb0:
309
.repmovsb0:
303
	mov	edx, [ebp+.dictSize]
310
	mov	edx, [ebp+.dictSize]
304
;	cmp	edx, [ebp+streamInfo.bufSize]
311
;	cmp	edx, [ebp+streamInfo.bufSize]
305
;	jnz	return.err
312
;	jnz	return.err
306
        add     esi, edx
313
        add     esi, edx