Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6813 → Rev 6812

/programs/fs/kfar/trunk/zlib/trees.asm
732,7 → 732,6
dec dword[bits]
sub eax,2
jmp @b
align 4
@@:
dec word[eax] ;move one leaf down the tree
add word[eax+2],2 ;move one overflow item as its brother
766,7 → 765,10
movzx eax,word[edi+deflate_state.heap+2*eax]
mov [m],eax ;m = s.heap[--h]
cmp eax,[max_code]
jg .cycle4 ;if (..>..) continue
jle @f ;if (..>..) continue
dec ecx
jmp .cycle4
@@:
mov esi,[m]
imul esi,sizeof.ct_data
add esi,[tree] ;esi = &tree[m]
784,11 → 786,9
@@:
dec ecx
jmp .cycle4
align 4
.cycle4end:
dec dword[bits]
jmp .cycle3
align 4
.end_f:
popad
ret
913,26 → 913,30
mov dword[edi+deflate_state.heap_len],0
mov dword[edi+deflate_state.heap_max],HEAP_SIZE
 
mov edx,[tree]
xor ecx,ecx
cmp ecx,0
jle .cycle0end
xor edx,edx
.cycle0: ;for (..;..<..;..)
cmp ecx,[elems]
jge .cycle0end
cmp word[edx+Freq],0
mov eax,edx
imul eax,sizeof.ct_data
add eax,[tree]
cmp word[eax+Freq],0
je @f ;if (..!=0)
inc dword[edi+deflate_state.heap_len]
mov eax,[edi+deflate_state.heap_len]
mov [max_code],ecx
mov [edi+deflate_state.heap+2*eax],cx
mov byte[edi+deflate_state.depth+ecx],0
mov [max_code],edx
mov [edi+deflate_state.heap+2*eax],dx
mov eax,edx
add eax,edi
add eax,deflate_state.depth
mov byte[eax],0
jmp .end0
align 4
@@: ;else
mov word[edx+Len],0
mov word[eax+Len],0
.end0:
add edx,sizeof.ct_data
inc ecx
jmp .cycle0
inc edx
loop .cycle0
align 4
.cycle0end:
 
1021,10 → 1025,12
 
mov eax,ecx
add eax,edi
mov al,byte[eax+deflate_state.depth]
add eax,deflate_state.depth
mov al,byte[eax]
mov edx,[m]
add edx,edi
mov ah,byte[edx+deflate_state.depth]
add edx,deflate_state.depth
mov ah,byte[edx]
cmp al,ah
jl @f ;if (al>=ah) al=al : al=ah
mov al,ah
1032,7 → 1038,8
inc al
mov edx,[node]
add edx,edi
mov byte[edx+deflate_state.depth],al
add edx,deflate_state.depth
mov byte[edx],al
 
mov eax,[node]
mov edx,[m]
1136,7 → 1143,8
mov eax,[curlen]
imul eax,sizeof.ct_data
add eax,edi
add word[eax+deflate_state.bl_tree+Freq],bx
add eax,deflate_state.bl_tree+Freq
add word[eax],bx
jmp .end4
.end1:
cmp dword[curlen],0
1146,12 → 1154,14
je @f ;if (..!=..)
imul eax,sizeof.ct_data
add eax,edi
inc word[eax+deflate_state.bl_tree+Freq]
add eax,deflate_state.bl_tree+Freq
inc word[eax]
@@:
mov eax,REP_3_6
imul eax,sizeof.ct_data
add eax,edi
inc word[eax+deflate_state.bl_tree+Freq]
add eax,deflate_state.bl_tree+Freq
inc word[eax]
jmp .end4
.end2:
cmp ebx,10
1159,13 → 1169,15
mov eax,REPZ_3_10
imul eax,sizeof.ct_data
add eax,edi
inc word[eax+deflate_state.bl_tree+Freq]
add eax,deflate_state.bl_tree+Freq
inc word[eax]
jmp .end4
.end3: ;else
mov eax,REPZ_11_138
imul eax,sizeof.ct_data
add eax,edi
inc word[eax+deflate_state.bl_tree+Freq]
add eax,deflate_state.bl_tree+Freq
inc word[eax]
.end4:
mov dword[curlen],0
mov eax,[curlen]
1218,13 → 1230,13
mov eax,[tree]
movzx eax,word[eax+Len]
mov [nextlen],eax
xor ecx,ecx
test eax,eax
jnz .cycle0 ;if (..==0)
cmp eax,0
jne @f ;if (..==0)
mov dword[max_count],138
mov dword[min_count],3
@@:
 
align 4
xor ecx,ecx
.cycle0: ;for (..;..<=..;..)
cmp ecx,[max_code]
jg .cycle0end
1245,7 → 1257,6
jne .end0 ;if (..<.. && ..==..)
inc ecx
jmp .cycle0 ;continue
align 4
.end0:
cmp ebx,[min_count]
jge .end1 ;else if (..<..)
1254,7 → 1265,8
add ebx,deflate_state.bl_tree
send_code edi, [curlen], ebx
dec dword[count]
jnz @b ;while (..!=0)
cmp dword[count],0
jne @b ;while (..!=0)
jmp .end4
align 4
.end1:
1366,10 → 1378,10
movzx eax,byte[eax]
imul eax,sizeof.ct_data
add eax,edi
cmp word[eax+deflate_state.bl_tree+Len],0
add eax,deflate_state.bl_tree+Len
cmp word[eax],0
jne .cycle0end ;if (..!=0) break
jmp .cycle0
align 4
.cycle0end:
; Update opt_len to include the bit length tree and counts
mov eax,[max_blindex]
1433,9 → 1445,10
add eax,bl_order
movzx eax,byte[eax]
imul eax,sizeof.ct_data
add eax,edi
movzx eax,word[eax+deflate_state.bl_tree+Len]
stdcall send_bits, edi, eax, 3
mov ebx,edi
add ebx,deflate_state.bl_tree+Len
add ebx,eax
stdcall send_bits, edi, ebx, 3
inc ecx
jmp .cycle0
align 4
1976,7 → 1989,7
dec dword[len]
cmp dword[len],0
jg @b ;while (..>..)
shr eax,1
shl eax,1
ret
endp