⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trees.cod

📁 microsoft visual c++ 2005、windows mobile 5 远程控制PC.通过阅读项目源码能让你熟悉Active Sync RAPI
💻 COD
📖 第 1 页 / 共 5 页
字号:
  0008b	83 c0 02	 add	 eax, 2
  0008e	83 f8 20	 cmp	 eax, 32			; 00000020H
  00091	0f 94 c1	 sete	 cl
  00094	89 4a 2c	 mov	 DWORD PTR [edx+44], ecx

; 1139 : }

  00097	c3		 ret	 0
$LN20@set_data_t:

; 1137 :                 break;
; 1138 :     s->strm->data_type = (n == 32) ? Z_TEXT : Z_BINARY;

  00098	8b 12		 mov	 edx, DWORD PTR [edx]
  0009a	33 c9		 xor	 ecx, ecx
  0009c	83 c0 03	 add	 eax, 3
  0009f	83 f8 20	 cmp	 eax, 32			; 00000020H
  000a2	0f 94 c1	 sete	 cl
  000a5	89 4a 2c	 mov	 DWORD PTR [edx+44], ecx

; 1139 : }

  000a8	c3		 ret	 0
$LN21@set_data_t:

; 1137 :                 break;
; 1138 :     s->strm->data_type = (n == 32) ? Z_TEXT : Z_BINARY;

  000a9	8b 12		 mov	 edx, DWORD PTR [edx]
  000ab	33 c9		 xor	 ecx, ecx
  000ad	83 c0 04	 add	 eax, 4
  000b0	83 f8 20	 cmp	 eax, 32			; 00000020H
  000b3	0f 94 c1	 sete	 cl
  000b6	89 4a 2c	 mov	 DWORD PTR [edx+44], ecx

; 1139 : }

  000b9	c3		 ret	 0
$LN22@set_data_t:

; 1136 :             if (s->dyn_ltree[n].Freq != 0)

  000ba	83 c0 05	 add	 eax, 5
$LN15@set_data_t:

; 1137 :                 break;
; 1138 :     s->strm->data_type = (n == 32) ? Z_TEXT : Z_BINARY;

  000bd	8b 12		 mov	 edx, DWORD PTR [edx]
  000bf	33 c9		 xor	 ecx, ecx
  000c1	83 f8 20	 cmp	 eax, 32			; 00000020H
  000c4	0f 94 c1	 sete	 cl
  000c7	89 4a 2c	 mov	 DWORD PTR [edx+44], ecx

; 1139 : }

  000ca	c3		 ret	 0
_set_data_type ENDP
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT _compress_block
_TEXT	SEGMENT
tv870 = -12						; size = 4
_len$79014 = -12					; size = 4
tv869 = -8						; size = 4
_len$79039 = -8						; size = 4
_code$ = -8						; size = 4
_lx$ = -4						; size = 4
tv868 = 8						; size = 4
_ltree$ = 8						; size = 4
_dtree$ = 12						; size = 4
_compress_block PROC					; COMDAT
; _s$ = eax

; 1076 : {

  00000	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00003	53		 push	 ebx
  00004	8b 5c 24 14	 mov	 ebx, DWORD PTR _ltree$[esp+12]
  00008	55		 push	 ebp

; 1077 :     unsigned dist;      /* distance of matched string */
; 1078 :     int lc;             /* match length or unmatched char (if dist == 0) */
; 1079 :     unsigned lx = 0;    /* running index in l_buf */

  00009	33 c9		 xor	 ecx, ecx

; 1080 :     unsigned code;      /* the code to send */
; 1081 :     int extra;          /* number of extra bits to send */
; 1082 : 
; 1083 :     if (s->last_lit != 0) do {

  0000b	39 88 a0 16 00
	00		 cmp	 DWORD PTR [eax+5792], ecx
  00011	56		 push	 esi
  00012	57		 push	 edi
  00013	0f 84 39 03 00
	00		 je	 $LN17@compress_b
  00019	8d a4 24 00 00
	00 00		 npad	 7
$LL19@compress_b:

; 1084 :         dist = s->d_buf[lx];

  00020	8b 90 a4 16 00
	00		 mov	 edx, DWORD PTR [eax+5796]
  00026	0f b7 2c 4a	 movzx	 ebp, WORD PTR [edx+ecx*2]

; 1085 :         lc = s->l_buf[lx++];

  0002a	8b 90 98 16 00
	00		 mov	 edx, DWORD PTR [eax+5784]
  00030	0f b6 34 11	 movzx	 esi, BYTE PTR [ecx+edx]
  00034	83 c1 01	 add	 ecx, 1

; 1086 :         if (dist == 0) {

  00037	85 ed		 test	 ebp, ebp
  00039	89 4c 24 18	 mov	 DWORD PTR _lx$[esp+28], ecx

; 1087 :             send_code(s, lc, ltree); /* send a literal byte */

  0003d	8b 88 bc 16 00
	00		 mov	 ecx, DWORD PTR [eax+5820]
  00043	0f 85 81 00 00
	00		 jne	 $LN16@compress_b
  00049	0f b7 7c b3 02	 movzx	 edi, WORD PTR [ebx+esi*4+2]
  0004e	ba 10 00 00 00	 mov	 edx, 16			; 00000010H
  00053	2b d7		 sub	 edx, edi
  00055	3b ca		 cmp	 ecx, edx
  00057	7e 5c		 jle	 SHORT $LN15@compress_b
  00059	0f b7 34 b3	 movzx	 esi, WORD PTR [ebx+esi*4]
  0005d	8b d6		 mov	 edx, esi
  0005f	d3 e2		 shl	 edx, cl
  00061	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00064	89 5c 24 10	 mov	 DWORD PTR tv870[esp+28], ebx
  00068	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  0006f	0f b6 98 b8 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5816]
  00076	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  00079	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  0007c	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  00080	0f b6 98 b9 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5817]
  00087	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  0008a	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  0008d	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  00090	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  00096	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  0009a	8b 5c 24 10	 mov	 ebx, DWORD PTR tv870[esp+28]
  0009e	b1 10		 mov	 cl, 16			; 00000010H
  000a0	2a ca		 sub	 cl, dl
  000a2	66 d3 ee	 shr	 si, cl
  000a5	8d 4c 3a f0	 lea	 ecx, DWORD PTR [edx+edi-16]
  000a9	66 89 b0 b8 16
	00 00		 mov	 WORD PTR [eax+5816], si
  000b0	e9 87 02 00 00	 jmp	 $LN29@compress_b
$LN15@compress_b:
  000b5	66 8b 14 b3	 mov	 dx, WORD PTR [ebx+esi*4]
  000b9	66 d3 e2	 shl	 dx, cl
  000bc	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  000c3	03 cf		 add	 ecx, edi

; 1088 :             Tracecv(isgraph(lc), (stderr," '%c' ", lc));
; 1089 :         } else {

  000c5	e9 72 02 00 00	 jmp	 $LN29@compress_b
$LN16@compress_b:

; 1090 :             /* Here, lc is the match length - MIN_MATCH */
; 1091 :             code = _length_code[lc];

  000ca	0f b6 96 00 00
	00 00		 movzx	 edx, BYTE PTR __length_code[esi]

; 1092 :             send_code(s, code+LITERALS+1, ltree); /* send the length code */

  000d1	0f b7 bc 93 06
	04 00 00	 movzx	 edi, WORD PTR [ebx+edx*4+1030]
  000d9	bb 10 00 00 00	 mov	 ebx, 16			; 00000010H
  000de	2b df		 sub	 ebx, edi
  000e0	3b cb		 cmp	 ecx, ebx
  000e2	89 7c 24 10	 mov	 DWORD PTR _len$79014[esp+28], edi
  000e6	8b 7c 24 20	 mov	 edi, DWORD PTR _ltree$[esp+24]
  000ea	89 54 24 14	 mov	 DWORD PTR _code$[esp+28], edx
  000ee	7e 63		 jle	 SHORT $LN12@compress_b
  000f0	0f b7 bc 97 04
	04 00 00	 movzx	 edi, WORD PTR [edi+edx*4+1028]
  000f8	8b d7		 mov	 edx, edi
  000fa	d3 e2		 shl	 edx, cl
  000fc	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  000ff	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  00106	0f b6 98 b8 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5816]
  0010d	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  00110	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  00113	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  00117	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  0011a	0f b6 98 b9 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5817]
  00121	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  00124	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  00127	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  0012d	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  00131	b1 10		 mov	 cl, 16			; 00000010H
  00133	2a ca		 sub	 cl, dl
  00135	66 d3 ef	 shr	 di, cl
  00138	8b 4c 24 10	 mov	 ecx, DWORD PTR _len$79014[esp+28]
  0013c	8d 54 0a f0	 lea	 edx, DWORD PTR [edx+ecx-16]
  00140	89 90 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], edx
  00146	8b 54 24 14	 mov	 edx, DWORD PTR _code$[esp+28]
  0014a	66 89 b8 b8 16
	00 00		 mov	 WORD PTR [eax+5816], di
  00151	eb 1e		 jmp	 SHORT $LN30@compress_b
$LN12@compress_b:
  00153	66 8b bc 97 04
	04 00 00	 mov	 di, WORD PTR [edi+edx*4+1028]
  0015b	66 d3 e7	 shl	 di, cl
  0015e	66 09 b8 b8 16
	00 00		 or	 WORD PTR [eax+5816], di
  00165	8b 7c 24 10	 mov	 edi, DWORD PTR _len$79014[esp+28]
  00169	03 cf		 add	 ecx, edi
  0016b	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx
$LN30@compress_b:

; 1093 :             extra = extra_lbits[code];

  00171	8b 3c 95 00 00
	00 00		 mov	 edi, DWORD PTR _extra_lbits[edx*4]

; 1094 :             if (extra != 0) {

  00178	85 ff		 test	 edi, edi
  0017a	8b 5c 24 20	 mov	 ebx, DWORD PTR _ltree$[esp+24]
  0017e	74 7a		 je	 SHORT $LN8@compress_b

; 1095 :                 lc -= base_length[code];

  00180	2b 34 95 00 00
	00 00		 sub	 esi, DWORD PTR _base_length[edx*4]

; 1096 :                 send_bits(s, lc, extra);       /* send the extra length bits */

  00187	8b 88 bc 16 00
	00		 mov	 ecx, DWORD PTR [eax+5820]
  0018d	ba 10 00 00 00	 mov	 edx, 16			; 00000010H
  00192	2b d7		 sub	 edx, edi
  00194	3b ca		 cmp	 ecx, edx
  00196	7e 51		 jle	 SHORT $LN9@compress_b
  00198	8b d6		 mov	 edx, esi
  0019a	d3 e2		 shl	 edx, cl
  0019c	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  0019f	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  001a6	0f b6 98 b8 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5816]
  001ad	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  001b0	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  001b3	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  001b7	0f b6 98 b9 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5817]
  001be	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  001c1	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  001c4	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  001c7	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  001cd	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  001d1	8b 5c 24 20	 mov	 ebx, DWORD PTR _ltree$[esp+24]
  001d5	b1 10		 mov	 cl, 16			; 00000010H
  001d7	2a ca		 sub	 cl, dl
  001d9	66 d3 ee	 shr	 si, cl
  001dc	8d 4c 3a f0	 lea	 ecx, DWORD PTR [edx+edi-16]
  001e0	66 89 b0 b8 16
	00 00		 mov	 WORD PTR [eax+5816], si
  001e7	eb 0b		 jmp	 SHORT $LN31@compress_b
$LN9@compress_b:
  001e9	d3 e6		 shl	 esi, cl
  001eb	66 09 b0 b8 16
	00 00		 or	 WORD PTR [eax+5816], si
  001f2	03 cf		 add	 ecx, edi
$LN31@compress_b:
  001f4	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx
$LN8@compress_b:

; 1097 :             }
; 1098 :             dist--; /* dist is now the match distance - 1 */

  001fa	83 ed 01	 sub	 ebp, 1

; 1099 :             code = d_code(dist);

  001fd	81 fd 00 01 00
	00		 cmp	 ebp, 256		; 00000100H
  00203	73 09		 jae	 SHORT $LN23@compress_b
  00205	0f b6 bd 00 00
	00 00		 movzx	 edi, BYTE PTR __dist_code[ebp]
  0020c	eb 0c		 jmp	 SHORT $LN24@compress_b
$LN23@compress_b:
  0020e	8b d5		 mov	 edx, ebp
  00210	c1 ea 07	 shr	 edx, 7
  00213	0f b6 ba 00 01
	00 00		 movzx	 edi, BYTE PTR __dist_code[edx+256]
$LN24@compress_b:

; 1100 :             Assert (code < D_CODES, "bad d_code");
; 1101 : 
; 1102 :             send_code(s, code, dtree);       /* send the distance code */

  0021a	8b 4c 24 24	 mov	 ecx, DWORD PTR _dtree$[esp+24]
  0021e	0f b7 54 b9 02	 movzx	 edx, WORD PTR [ecx+edi*4+2]
  00223	8b 88 bc 16 00
	00		 mov	 ecx, DWORD PTR [eax+5820]
  00229	be 10 00 00 00	 mov	 esi, 16			; 00000010H
  0022e	2b f2		 sub	 esi, edx
  00230	3b ce		 cmp	 ecx, esi
  00232	89 54 24 14	 mov	 DWORD PTR _len$79039[esp+28], edx
  00236	7e 63		 jle	 SHORT $LN7@compress_b
  00238	8b 54 24 24	 mov	 edx, DWORD PTR _dtree$[esp+24]
  0023c	0f b7 34 ba	 movzx	 esi, WORD PTR [edx+edi*4]
  00240	8b d6		 mov	 edx, esi
  00242	d3 e2		 shl	 edx, cl
  00244	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00247	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  0024e	0f b6 98 b8 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5816]
  00255	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  00258	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  0025b	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  0025f	0f b6 98 b9 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5817]
  00266	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  00269	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  0026c	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  0026f	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  00275	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  00279	8b 5c 24 20	 mov	 ebx, DWORD PTR _ltree$[esp+24]
  0027d	b1 10		 mov	 cl, 16			; 00000010H
  0027f	2a ca		 sub	 cl, dl
  00281	66 d3 ee	 shr	 si, cl
  00284	8b 4c 24 14	 mov	 ecx, DWORD PTR _len$79039[esp+28]
  00288	8d 54 0a f0	 lea	 edx, DWORD PTR [edx+ecx-16]
  0028c	89 90 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], edx
  00292	66 89 b0 b8 16
	00 00		 mov	 WORD PTR [eax+5816], si
  00299	eb 1a		 jmp	 SHORT $LN6@compress_b
$LN7@compress_b:
  0029b	8b 74 24 24	 mov	 esi, DWORD PTR _dtree$[esp+24]
  0029f	66 8b 34 be	 mov	 si, WORD PTR [esi+edi*4]
  002a3	66 d3 e6	 shl	 si, cl
  002a6	66 09 b0 b8 16
	00 00		 or	 WORD PTR [eax+5816], si
  002ad	03 ca		 add	 ecx, edx
  002af	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx
$LN6@compress_b:

; 1103 :             extra = extra_dbits[code];

  002b5	8b 34 bd 00 00
	00 00		 mov	 esi, DWORD PTR _extra_dbits[edi*4]

; 1104 :             if (extra != 0) {

  002bc	85 f6		 test	 esi, esi
  002be	0f 84 7e 00 00
	00		 je	 $LN18@compress_b

; 1105 :                 dist -= base_dist[code];
; 1106 :                 send_bits(s, dist, extra);   /* send the extra distance bits */

  002c4	8b 88 bc 16 00
	00		 mov	 ecx, DWORD PTR [eax+5820]
  002ca	2b 2c bd 00 00
	00 00		 sub	 ebp, DWORD PTR _base_dist[edi*4]
  002d1	ba 10 00 00 00	 mov	 edx, 16			; 00000010H
  002d6	2b d6		 sub	 edx, esi
  002d8	3b ca		 cmp	 ecx, edx
  002da	7e 55		 jle	 SHORT $LN4@compress_b
  002dc	8b d5		 mov	 edx, ebp
  002de	d3 e2		 shl	 edx, cl
  002e0	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  002e3	89 5c 24 14	 mov	 DWORD PTR tv869[esp+28], ebx
  002e7	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  002ee	0f b6 98 b8 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5816]
  002f5	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  002f8	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  002fb	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  002ff	0f b6 98 b9 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5817]
  00306	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  00309	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  0030c	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  0030f	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  00315	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  00319	8b 5c 24 14	 mov	 ebx, DWORD PTR tv869[esp+28]
  0031d	b1 10		 mov	 cl, 16			; 00000010H
  0031f	2a ca		 sub	 cl, dl
  00321	66 d3 ed	 shr	 bp, cl
  00324	8d 4c 32 f0	 lea	 ecx, DWORD PTR [edx+esi-16]
  00328	66 89 a8 b8 16
	00 00		 mov	 WORD PTR [eax+5816], bp
  0032f	eb 0b		 jmp	 SHORT $LN29@compress_b
$LN4@compress_b:
  00331	d3 e5		 shl	 ebp, cl
  00333	66 09 a8 b8 16
	00 00		 or	 WORD PTR [eax+5816], bp
  0033a	03 ce		 add	 ecx, esi
$LN29@compress_b:
  0033c	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx
$LN18@compress_b:

; 1107 :             }
; 1108 :         } /* literal or match pair ? */
; 1109 : 
; 1110 :         /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
; 1111 :         Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
; 1112 :                "pendingBuf overflow");
; 1113 : 
; 1114 :     } while (lx < s->last_lit);

  00342	8b 4c 24 18	 mov	 ecx, DWORD PTR _lx$[esp+28]
  00346	3b 88 a0 16 00
	00		 cmp	 ecx, DWORD PTR [eax+5792]
  0034c	0f 82 ce fc ff
	ff		 jb	 $LL19@compress_b
$LN17@compress_b:

; 1115 : 
; 1116 :     send_code(s, END_BLOCK, ltree);

  00352	0f b7 bb 02 04
	00 00		 movzx	 edi, WORD PTR [ebx+1026]
  00359	8b 88 bc 16 00
	00		 mov	 ecx, DWORD PTR [eax+5820]
  0035f	ba 10 00 00 00	 mov	 edx, 16			; 00000010H
  00364	2b d7		 sub	 edx, edi
  00366	3b ca		 cmp	 ecx, edx
  00368	7e 73		 jle	 SHORT $LN2@compress_b
  0036a	0f b7 b3 00 04
	00 00		 movzx	 esi, WORD PTR [ebx+1024]
  00371	8b d6		 mov	 edx, esi
  00373	d3 e2		 shl	 edx, cl
  00375	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00378	89 5c 24 20	 mov	 DWORD PTR tv868[esp+24], ebx
  0037c	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  00383	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  00386	8a 98 b8 16 00
	00		 mov	 bl, BYTE PTR [eax+5816]
  0038c	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  0038f	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  00393	8b 68 14	 mov	 ebp, DWORD PTR [eax+20]
  00396	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00399	8a 90 b9 16 00
	00		 mov	 dl, BYTE PTR [eax+5817]
  0039f	8b 5c 24 20	 mov	 ebx, DWORD PTR tv868[esp+24]
  003a3	88 14 29	 mov	 BYTE PTR [ecx+ebp], dl
  003a6	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  003ac	83 40 14 01	 add	 DWORD PTR [eax+20], 1
  003b0	b1 10		 mov	 cl, 16			; 00000010H
  003b2	2a ca		 sub	 cl, dl
  003b4	66 d3 ee	 shr	 si, cl
  003b7	8d 4c 3a f0	 lea	 ecx, DWORD PTR [edx+edi-16]
  003bb	5f		 pop	 edi
  003bc	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx
  003c2	66 89 b0 b8 16
	00 00		 mov	 WORD PTR [eax+5816], si

; 1117 :     s->last_eob_len = ltree[END_BLOCK].Len;

  003c9	0f b7 93 02 04
	00 00		 movzx	 edx, WORD PTR [ebx+1026]
  003d0	5e		 pop	 esi
  003d1	5d		 pop	 ebp
  003d2	89 90 b4 16 00
	00		 mov	 DWORD PTR [eax+5812], edx
  003d8	5b		 pop	 ebx

; 1118 : }

  003d9	83 c4 0c	 add	 esp, 12			; 0000000cH
  003dc	c3		 ret	 0
$LN2@compress_b:

; 1115 : 
; 1116 :     send_code(s, END_BLOCK, ltree);

  003dd	66 8b 93 00 04
	00 00		 mov	 dx, WORD PTR [ebx+1024]
  003e4	66 d3 e2	 shl	 dx, cl
  003e7	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  003ee	03 cf		 add	 ecx, edi
  003f0	5f		 pop	 edi
  003f1	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx

; 1117 :     s->last_eob_len = ltree[END_BLOCK].Len;

  003f7	0f b7 8b 02 04
	00 00		 movzx	 ecx, WORD PTR [ebx+1026]
  003fe	5e		 pop	 esi
  003ff	5d		 pop	 ebp
  00400	89 88 b4 16 00
	00		 mov	 DWORD PTR [eax+5812], ecx
  00406	5b		 pop	 ebx

; 1118 : }

  00407	83 c4 0c	 add	 esp, 12			; 0000000cH
  0040a	c3		 ret	 0
_compress_block ENDP
_TEXT	ENDS
PUBLIC	__tr_align
; Function compile flags: /Ogtpy
;	COMDAT __tr_align
_TEXT	SEGMENT
__tr_align PROC						; COMDAT
; _s$ = eax

; 895  :     send_bits(s, STATIC_TREES<<1, 3);

  00000	8b 88 bc 16 00
	00		 mov	 ecx, DWORD PTR [eax+5820]
  00006	ba 02 00 00 00	 mov	 edx, 2
  0000b	d3 e2		 shl	 edx, cl
  0000d	53		 push	 ebx
  0000e	56		 push	 esi
  0000f	57		 push	 edi
  00010	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  00017	83 f9 0d	 cmp	 ecx, 13			; 0000000dH
  0001a	be 01 00 00 00	 mov	 esi, 1
  0001f	7e 4a		 jle	 SHORT $LN9@tr_align
  00021	0f b6 98 b8 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5816]
  00028	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  0002b	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  0002e	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  00031	01 70 14	 add	 DWORD PTR [eax+20], esi
  00034	0f b6 98 b9 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5817]
  0003b	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  0003e	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  00041	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  00044	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  0004a	01 70 14	 add	 DWORD PTR [eax+20], esi
  0004d	b1 10		 mov	 cl, 16			; 00000010H
  0004f	2a ca		 sub	 cl, dl
  00051	bf 02 00 00 00	 mov	 edi, 2
  00056	66 d3 ef	 shr	 di, cl
  00059	83 c2 f3	 add	 edx, -13		; fffffff3H
  0005c	89 90 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], edx
  00062	66 89 b8 b8 16
	00 00		 mov	 WORD PTR [eax+5816], di
  00069	eb 09		 jmp	 SHORT $LN8@tr_align
$LN9@tr_align:
  0006b	83 c1 03	 add	 ecx, 3
  0006e	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx
$LN8@tr_align:

; 896  :     send_code(s, END_BLOCK, static_ltree);

  00074	8b 88 bc 16 00
	00		 mov	 ecx, DWORD PTR [eax+5820]
  0007a	33 d2		 xor	 edx, edx
  0007c	d3 e2		 shl	 edx, cl
  0007e	66 09 90 b8 16
	00 00		 or	 WORD PTR [eax+5816], dx
  00085	83 f9 09	 cmp	 ecx, 9
  00088	7e 47		 jle	 SHORT $LN7@tr_align
  0008a	0f b6 98 b8 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5816]
  00091	8b 50 14	 mov	 edx, DWORD PTR [eax+20]
  00094	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00097	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  0009a	01 70 14	 add	 DWORD PTR [eax+20], esi
  0009d	0f b6 98 b9 16
	00 00		 movzx	 ebx, BYTE PTR [eax+5817]
  000a4	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  000a7	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  000aa	88 1c 11	 mov	 BYTE PTR [ecx+edx], bl
  000ad	8b 90 bc 16 00
	00		 mov	 edx, DWORD PTR [eax+5820]
  000b3	01 70 14	 add	 DWORD PTR [eax+20], esi
  000b6	b1 10		 mov	 cl, 16			; 00000010H
  000b8	2a ca		 sub	 cl, dl
  000ba	33 ff		 xor	 edi, edi
  000bc	66 d3 ef	 shr	 di, cl
  000bf	83 c2 f7	 add	 edx, -9			; fffffff7H
  000c2	89 90 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], edx
  000c8	66 89 b8 b8 16
	00 00		 mov	 WORD PTR [eax+5816], di
  000cf	eb 09		 jmp	 SHORT $LN6@tr_align
$LN7@tr_align:
  000d1	83 c1 07	 add	 ecx, 7
  000d4	89 88 bc 16 00
	00		 mov	 DWORD PTR [eax+5820], ecx
$LN6@tr_align:

; 897  : #ifdef DEBUG
; 898  :     s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
; 899  : #endif
; 900  :     bi_flush(s);

  000da	e8 00 00 00 00	 call	 _bi_flush

; 901  :     /* Of the 10 bits for the empty block, we have already sent
; 902  :      * (10 - bi_valid) bits. The lookahead for the last real code (before
; 903  :      * the EOB of the previous block) was thus at least one plus the length
; 904  :      * of the EOB plus what we have just sent of the empty static block.
; 905  :      */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -