Module: D:\source\tmp\editor\editor.cpp Group: 'DGROUP' CONST,CONST2,_DATA,_BSS Segment: _TEXT PARA USE32 0000121d bytes #include "editor.hpp" #include //--- Block ----------------------------------------------------------------- //The block contains lines separated by '\0'. Block::Block() { 0000 near Block::Block(): 0000 55 push ebp 0001 89 e5 mov ebp,esp 0003 53 push ebx 0004 51 push ecx 0005 52 push edx 0006 56 push esi 0007 57 push edi 0008 81 ec 08 00 00 00 sub esp,00000008H 000e 89 45 e8 mov -18H[ebp],eax bytesUsed=1; 0011 8b 45 e8 mov eax,-18H[ebp] 0014 c7 00 01 00 00 00 mov dword ptr [eax],00000001H lines=1; 001a 8b 45 e8 mov eax,-18H[ebp] 001d c7 40 04 01 00 00 00 mov dword ptr +4H[eax],00000001H c[0]='\0'; 0024 8b 45 e8 mov eax,-18H[ebp] 0027 c6 40 08 00 mov byte ptr +8H[eax],00H } 002b 8b 45 e8 mov eax,-18H[ebp] Comdat: int unsigned near Block::findLineStart( int unsigned ) SEGMENT ANY '_TEXT' 00000057 bytes inline unsigned Block::findLineStart(unsigned line) { 0000 55 push ebp 0001 89 e5 mov ebp,esp 0003 53 push ebx 0004 51 push ecx 0005 56 push esi 0006 57 push edi 0007 81 ec 10 00 00 00 sub esp,00000010H 000d 89 45 e8 mov -18H[ebp],eax 0010 89 55 ec mov -14H[ebp],edx char *p=c; 0013 8b 45 e8 mov eax,-18H[ebp] 0016 83 c0 08 add eax,00000008H 0019 89 45 e4 mov -1cH[ebp],eax while(line) { 001c 83 7d ec 00 L97 cmp dword ptr -14H[ebp],00000000H 0020 74 1b je L98 p = ((char*)memchr(p,'\0',BLOCKSPARE))+1; 0022 bb f8 0f 00 00 mov ebx,00000ff8H 0027 31 d2 xor edx,edx 0029 8b 45 e4 mov eax,-1cH[ebp] 002c e8 00 00 00 00 call memchr_ 0031 40 inc eax 0032 89 45 e4 mov -1cH[ebp],eax line--; 0035 8b 45 ec mov eax,-14H[ebp] 0038 ff 4d ec dec dword ptr -14H[ebp] } 003b eb df jmp L97 return p-c; /* unsigned pos=0; while(line) { if(c[pos]=='\0') line--; pos++; } return pos; */ 003d 8b 45 e8 L98 mov eax,-18H[ebp] 0040 83 c0 08 add eax,00000008H 0043 8b 55 e4 mov edx,-1cH[ebp] 0046 29 c2 sub edx,eax 0048 89 55 e0 mov -20H[ebp],edx } 004b 8b 45 e0 mov eax,-20H[ebp] 004e 8d 65 f0 lea esp,-10H[ebp] 0051 5f pop edi 0052 5e pop esi 0053 59 pop ecx 0054 5b pop ebx 0055 5d pop ebp 0056 c3 ret No disassembly errors ------------------------------------------------------------ 002e 89 45 e4 mov -1cH[ebp],eax 0031 8b 45 e4 mov eax,-1cH[ebp] 0034 8d 65 ec lea esp,-14H[ebp] 0037 5f pop edi 0038 5e pop esi 0039 5a pop edx 003a 59 pop ecx 003b 5b pop ebx 003c 5d pop ebp 003d c3 ret 003e 8b c0 mov eax,eax void Block::splitLine(unsigned line, unsigned col) { 0040 void near Block::splitLine( int unsigned, int unsigned ): 0040 55 push ebp 0041 89 e5 mov ebp,esp 0043 51 push ecx 0044 56 push esi 0045 57 push edi 0046 81 ec 10 00 00 00 sub esp,00000010H 004c 89 45 e8 mov -18H[ebp],eax 004f 89 55 ec mov -14H[ebp],edx 0052 89 5d f0 mov -10H[ebp],ebx unsigned splitpos=findLineStart(line)+col; 0055 8b 55 ec mov edx,-14H[ebp] 0058 8b 45 e8 mov eax,-18H[ebp] 005b e8 00 00 00 00 call int unsigned near Block::findLineStart( int unsigned ) 0060 8b 55 f0 mov edx,-10H[ebp] 0063 01 c2 add edx,eax 0065 89 55 e4 mov -1cH[ebp],edx memmove(c+splitpos,c+splitpos+1,bytesUsed-splitpos); 0068 8b 5d e8 mov ebx,-18H[ebp] 006b 8b 1b mov ebx,[ebx] 006d 2b 5d e4 sub ebx,-1cH[ebp] 0070 8b 45 e8 mov eax,-18H[ebp] 0073 83 c0 08 add eax,00000008H 0076 03 45 e4 add eax,-1cH[ebp] 0079 8d 50 01 lea edx,+1H[eax] 007c 8b 45 e8 mov eax,-18H[ebp] 007f 83 c0 08 add eax,00000008H 0082 03 45 e4 add eax,-1cH[ebp] 0085 e8 00 00 00 00 call memmove_ c[splitpos]='\0'; 008a 8b 45 e8 mov eax,-18H[ebp] 008d 03 45 e4 add eax,-1cH[ebp] 0090 c6 40 08 00 mov byte ptr +8H[eax],00H bytesUsed++; 0094 8b 45 e8 mov eax,-18H[ebp] 0097 ff 00 inc dword ptr [eax] lines++; 0099 8b 45 e8 mov eax,-18H[ebp] 009c ff 40 04 inc dword ptr +4H[eax] } 009f 8d 65 f4 lea esp,-0cH[ebp] 00a2 5f pop edi 00a3 5e pop esi 00a4 59 pop ecx 00a5 5d pop ebp 00a6 c3 ret 00a7 90 nop void Block::joinLine(unsigned line) { 00a8 void near Block::joinLine( int unsigned ): 00a8 55 push ebp 00a9 89 e5 mov ebp,esp 00ab 53 push ebx 00ac 51 push ecx 00ad 56 push esi 00ae 57 push edi 00af 81 ec 0c 00 00 00 sub esp,0000000cH 00b5 89 45 e8 mov -18H[ebp],eax 00b8 89 55 ec mov -14H[ebp],edx unsigned joinpos=findLineStart(line+1); 00bb 8b 55 ec mov edx,-14H[ebp] 00be 42 inc edx 00bf 8b 45 e8 mov eax,-18H[ebp] 00c2 e8 00 00 00 00 call int unsigned near Block::findLineStart( int unsigned ) 00c7 89 45 e4 mov -1cH[ebp],eax memmove(c+joinpos-1,c+joinpos,bytesUsed-joinpos); 00ca 8b 5d e8 mov ebx,-18H[ebp] 00cd 8b 1b mov ebx,[ebx] 00cf 2b 5d e4 sub ebx,-1cH[ebp] 00d2 8b 55 e8 mov edx,-18H[ebp] 00d5 83 c2 08 add edx,00000008H 00d8 03 55 e4 add edx,-1cH[ebp] 00db 8b 45 e8 mov eax,-18H[ebp] 00de 83 c0 08 add eax,00000008H 00e1 03 45 e4 add eax,-1cH[ebp] 00e4 48 dec eax 00e5 e8 00 00 00 00 call memmove_ bytesUsed--; 00ea 8b 45 e8 mov eax,-18H[ebp] 00ed ff 08 dec dword ptr [eax] lines--; 00ef 8b 45 e8 mov eax,-18H[ebp] 00f2 ff 48 04 dec dword ptr +4H[eax] } 00f5 8d 65 f0 lea esp,-10H[ebp] 00f8 5f pop edi 00f9 5e pop esi 00fa 59 pop ecx 00fb 5b pop ebx 00fc 5d pop ebp 00fd c3 ret 00fe 8b c0 mov eax,eax void Block::removeLine(unsigned line) { 0100 void near Block::removeLine( int unsigned ): 0100 55 push ebp 0101 89 e5 mov ebp,esp 0103 53 push ebx 0104 51 push ecx 0105 56 push esi 0106 57 push edi 0107 81 ec 10 00 00 00 sub esp,00000010H 010d 89 45 e8 mov -18H[ebp],eax 0110 89 55 ec mov -14H[ebp],edx unsigned start=findLineStart(line); 0113 8b 55 ec mov edx,-14H[ebp] 0116 8b 45 e8 mov eax,-18H[ebp] 0119 e8 00 00 00 00 call int unsigned near Block::findLineStart( int unsigned ) 011e 89 45 e0 mov -20H[ebp],eax unsigned nextstart=start; 0121 8b 45 e0 mov eax,-20H[ebp] 0124 89 45 e4 mov -1cH[ebp],eax while(c[nextstart]!='\0') nextstart++; 0127 8b 45 e8 L1 mov eax,-18H[ebp] 012a 03 45 e4 add eax,-1cH[ebp] 012d 80 78 08 00 cmp byte ptr +8H[eax],00H 0131 74 08 je L2 0133 8b 45 e4 mov eax,-1cH[ebp] 0136 ff 45 e4 inc dword ptr -1cH[ebp] 0139 eb ec jmp L1 nextstart++; 013b 8b 45 e4 L2 mov eax,-1cH[ebp] 013e ff 45 e4 inc dword ptr -1cH[ebp] memmove(c+nextstart, c+start, bytesUsed-nextstart); 0141 8b 5d e8 mov ebx,-18H[ebp] 0144 8b 1b mov ebx,[ebx] 0146 2b 5d e4 sub ebx,-1cH[ebp] 0149 8b 55 e8 mov edx,-18H[ebp] 014c 83 c2 08 add edx,00000008H 014f 03 55 e0 add edx,-20H[ebp] 0152 8b 45 e8 mov eax,-18H[ebp] 0155 83 c0 08 add eax,00000008H 0158 03 45 e4 add eax,-1cH[ebp] 015b e8 00 00 00 00 call memmove_ bytesUsed -= (nextstart-start); 0160 8b 55 e4 mov edx,-1cH[ebp] 0163 2b 55 e0 sub edx,-20H[ebp] 0166 8b 45 e8 mov eax,-18H[ebp] 0169 29 10 sub [eax],edx lines--; 016b 8b 45 e8 mov eax,-18H[ebp] 016e ff 48 04 dec dword ptr +4H[eax] } 0171 8d 65 f0 lea esp,-10H[ebp] 0174 5f pop edi 0175 5e pop esi 0176 59 pop ecx 0177 5b pop ebx 0178 5d pop ebp 0179 c3 ret 017a 8b c0 mov eax,eax char *Block::queryLinePtr(unsigned line) { 017c char near * near Block::queryLinePtr( int unsigned ): 017c 55 push ebp 017d 89 e5 mov ebp,esp 017f 53 push ebx 0180 51 push ecx 0181 56 push esi 0182 57 push edi 0183 81 ec 10 00 00 00 sub esp,00000010H 0189 89 45 e8 mov -18H[ebp],eax 018c 89 55 ec mov -14H[ebp],edx char *p=c; 018f 8b 45 e8 mov eax,-18H[ebp] 0192 83 c0 08 add eax,00000008H 0195 89 45 e4 mov -1cH[ebp],eax while(line) { 0198 83 7d ec 00 L3 cmp dword ptr -14H[ebp],00000000H 019c 74 1b je L4 p = ((char*)memchr(p,'\0',BLOCKSPARE)) + 1; 019e bb f8 0f 00 00 mov ebx,00000ff8H 01a3 31 d2 xor edx,edx 01a5 8b 45 e4 mov eax,-1cH[ebp] 01a8 e8 00 00 00 00 call memchr_ 01ad 40 inc eax 01ae 89 45 e4 mov -1cH[ebp],eax line--; /* if(*p=='\0') line--; p++; */ 01b1 8b 45 ec mov eax,-14H[ebp] 01b4 ff 4d ec dec dword ptr -14H[ebp] } 01b7 eb df jmp L3 return p; 01b9 8b 45 e4 L4 mov eax,-1cH[ebp] 01bc 89 45 e0 mov -20H[ebp],eax } 01bf 8b 45 e0 mov eax,-20H[ebp] 01c2 8d 65 f0 lea esp,-10H[ebp] 01c5 5f pop edi 01c6 5e pop esi 01c7 59 pop ecx 01c8 5b pop ebx 01c9 5d pop ebp 01ca c3 ret 01cb 90 nop const char *Block::queryLinePtr(unsigned line) const { 01cc char const near * near Block::queryLinePtr( int unsigned ) const: 01cc 55 push ebp 01cd 89 e5 mov ebp,esp 01cf 53 push ebx 01d0 51 push ecx 01d1 56 push esi 01d2 57 push edi 01d3 81 ec 10 00 00 00 sub esp,00000010H 01d9 89 45 e8 mov -18H[ebp],eax 01dc 89 55 ec mov -14H[ebp],edx const char *p=c; 01df 8b 45 e8 mov eax,-18H[ebp] 01e2 83 c0 08 add eax,00000008H 01e5 89 45 e4 mov -1cH[ebp],eax while(line) { 01e8 83 7d ec 00 L5 cmp dword ptr -14H[ebp],00000000H 01ec 74 1b je L6 p = ((const char*)memchr(p,'\0',BLOCKSPARE)) + 1; 01ee bb f8 0f 00 00 mov ebx,00000ff8H 01f3 31 d2 xor edx,edx 01f5 8b 45 e4 mov eax,-1cH[ebp] 01f8 e8 00 00 00 00 call memchr_ 01fd 40 inc eax 01fe 89 45 e4 mov -1cH[ebp],eax line--; /* if(*p=='\0') line--; p++; */ 0201 8b 45 ec mov eax,-14H[ebp] 0204 ff 4d ec dec dword ptr -14H[ebp] } 0207 eb df jmp L5 return p; 0209 8b 45 e4 L6 mov eax,-1cH[ebp] 020c 89 45 e0 mov -20H[ebp],eax } 020f 8b 45 e0 mov eax,-20H[ebp] 0212 8d 65 f0 lea esp,-10H[ebp] 0215 5f pop edi 0216 5e pop esi 0217 59 pop ecx 0218 5b pop ebx 0219 5d pop ebp 021a c3 ret 021b 90 nop unsigned Block::queryLineLength(unsigned line) const { 021c int unsigned near Block::queryLineLength( int unsigned ) const: 021c 55 push ebp 021d 89 e5 mov ebp,esp 021f 53 push ebx 0220 51 push ecx 0221 56 push esi 0222 57 push edi 0223 81 ec 10 00 00 00 sub esp,00000010H 0229 89 45 e8 mov -18H[ebp],eax 022c 89 55 ec mov -14H[ebp],edx const char *p=c; 022f 8b 45 e8 mov eax,-18H[ebp] 0232 83 c0 08 add eax,00000008H 0235 89 45 e4 mov -1cH[ebp],eax while(line) { 0238 83 7d ec 00 L7 cmp dword ptr -14H[ebp],00000000H 023c 74 1b je L8 p = ((const char*)memchr(p,'\0',BLOCKSPARE)) + 1; 023e bb f8 0f 00 00 mov ebx,00000ff8H 0243 31 d2 xor edx,edx 0245 8b 45 e4 mov eax,-1cH[ebp] 0248 e8 00 00 00 00 call memchr_ 024d 40 inc eax 024e 89 45 e4 mov -1cH[ebp],eax line--; /* if(*p=='\0') line--; p++; */ 0251 8b 45 ec mov eax,-14H[ebp] 0254 ff 4d ec dec dword ptr -14H[ebp] } 0257 eb df jmp L7 return strlen(p); 0259 8b 45 e4 L8 mov eax,-1cH[ebp] 025c e8 00 00 00 00 call strlen_ 0261 89 45 e0 mov -20H[ebp],eax } 0264 8b 45 e0 mov eax,-20H[ebp] 0267 8d 65 f0 lea esp,-10H[ebp] 026a 5f pop edi 026b 5e pop esi 026c 59 pop ecx 026d 5b pop ebx 026e 5d pop ebp 026f c3 ret void Block::splitTo(Block *bp) { int l,r; 0270 void near Block::splitTo( Block near * ): 0270 55 push ebp 0271 89 e5 mov ebp,esp 0273 53 push ebx 0274 51 push ecx 0275 56 push esi 0276 57 push edi 0277 81 ec 18 00 00 00 sub esp,00000018H 027d 89 45 e8 mov -18H[ebp],eax 0280 89 55 ec mov -14H[ebp],edx l=r=bytesUsed/2; int splitpos; for(;;) { 0283 8b 45 e8 mov eax,-18H[ebp] 0286 8b 00 mov eax,[eax] 0288 d1 e8 shr eax,1 028a 89 45 dc mov -24H[ebp],eax 028d 8b 45 dc mov eax,-24H[ebp] 0290 89 45 d8 mov -28H[ebp],eax if(c[l]=='\0') { 0293 8b 45 e8 L9 mov eax,-18H[ebp] 0296 03 45 d8 add eax,-28H[ebp] 0299 80 78 08 00 cmp byte ptr +8H[eax],00H 029d 75 09 jne L10 splitpos=l+1; 029f 8b 45 d8 mov eax,-28H[ebp] 02a2 40 inc eax 02a3 89 45 e0 mov -20H[ebp],eax break; } 02a6 eb 23 jmp L12 if(c[r]=='\0') { 02a8 8b 45 e8 L10 mov eax,-18H[ebp] 02ab 03 45 dc add eax,-24H[ebp] 02ae 80 78 08 00 cmp byte ptr +8H[eax],00H 02b2 75 09 jne L11 splitpos=r+1; 02b4 8b 45 dc mov eax,-24H[ebp] 02b7 40 inc eax 02b8 89 45 e0 mov -20H[ebp],eax break; } 02bb eb 0e jmp L12 l--; 02bd 8b 45 d8 L11 mov eax,-28H[ebp] 02c0 ff 4d d8 dec dword ptr -28H[ebp] r++; 02c3 8b 45 dc mov eax,-24H[ebp] 02c6 ff 45 dc inc dword ptr -24H[ebp] } 02c9 eb c8 jmp L9 unsigned splitbytes=bytesUsed-splitpos; 02cb 8b 45 e8 L12 mov eax,-18H[ebp] 02ce 8b 00 mov eax,[eax] 02d0 2b 45 e0 sub eax,-20H[ebp] 02d3 89 45 e4 mov -1cH[ebp],eax memcpy(bp->c, c+splitpos, splitbytes); 02d6 8b 5d e4 mov ebx,-1cH[ebp] 02d9 8b 55 e8 mov edx,-18H[ebp] 02dc 83 c2 08 add edx,00000008H 02df 03 55 e0 add edx,-20H[ebp] 02e2 8b 45 ec mov eax,-14H[ebp] 02e5 83 c0 08 add eax,00000008H 02e8 e8 00 00 00 00 call memcpy_ bp->bytesUsed=splitbytes; 02ed 8b 45 e4 mov eax,-1cH[ebp] 02f0 8b 55 ec mov edx,-14H[ebp] 02f3 89 02 mov [edx],eax bp->recalcLines(); 02f5 8b 45 ec mov eax,-14H[ebp] 02f8 e8 00 00 00 00 call void near Block::recalcLines() bytesUsed=splitpos; 02fd 8b 45 e0 mov eax,-20H[ebp] 0300 8b 55 e8 mov edx,-18H[ebp] 0303 89 02 mov [edx],eax recalcLines(); 0305 8b 45 e8 mov eax,-18H[ebp] 0308 e8 00 00 00 00 call void near Block::recalcLines() } 030d 8d 65 f0 lea esp,-10H[ebp] 0310 5f pop edi 0311 5e pop esi 0312 59 pop ecx 0313 5b pop ebx 0314 5d pop ebp 0315 c3 ret 0316 8b c0 mov eax,eax void Block::recalcLines() { 0318 void near Block::recalcLines(): 0318 55 push ebp 0319 89 e5 mov ebp,esp 031b 53 push ebx 031c 51 push ecx 031d 52 push edx 031e 56 push esi 031f 57 push edi 0320 81 ec 0c 00 00 00 sub esp,0000000cH 0326 89 45 e8 mov -18H[ebp],eax unsigned l=0; 0329 c7 45 e0 00 00 00 00 mov dword ptr -20H[ebp],00000000H for(unsigned p=0; pqueryLineLength(line); if(col>=ll) col=ll-1; } 0604 f7 45 ec 02 00 00 00 test dword ptr -14H[ebp],00000002H Comdat: void near Buffer::fixcolpo( Block near *, int unsigned, int unsigned near & ) SEGMENT ANY '_TEXT' 0000003d bytes inline void Buffer::fixcolpo(Block *bp, unsigned line, unsigned &col) { //limit col to the length of the line plus one 0000 55 push ebp 0001 89 e5 mov ebp,esp 0003 51 push ecx 0004 56 push esi 0005 57 push edi 0006 81 ec 10 00 00 00 sub esp,00000010H 000c 89 45 e8 mov -18H[ebp],eax 000f 89 55 ec mov -14H[ebp],edx 0012 89 5d f0 mov -10H[ebp],ebx int ll=bp->queryLineLength(line); 0015 8b 55 ec mov edx,-14H[ebp] 0018 8b 45 e8 mov eax,-18H[ebp] 001b e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 0020 89 45 e4 mov -1cH[ebp],eax if(col>ll) col=ll; 0023 8b 45 f0 mov eax,-10H[ebp] 0026 8b 00 mov eax,[eax] 0028 3b 45 e4 cmp eax,-1cH[ebp] 002b 76 08 jbe L99 002d 8b 45 e4 mov eax,-1cH[ebp] 0030 8b 55 f0 mov edx,-10H[ebp] 0033 89 02 mov [edx],eax } 0035 8d 65 f4 L99 lea esp,-0cH[ebp] 0038 5f pop edi 0039 5e pop esi 003a 59 pop ecx 003b 5d pop ebp 003c c3 ret No disassembly errors ------------------------------------------------------------ 060b 74 08 je L21 060d 8b 45 e8 mov eax,-18H[ebp] 0610 e8 00 00 00 00 call void near operator delete( void near * ) 0615 8b 45 e8 L21 mov eax,-18H[ebp] 0618 89 45 e4 mov -1cH[ebp],eax 061b 8b 45 e4 mov eax,-1cH[ebp] 061e 8d 65 f0 lea esp,-10H[ebp] 0621 5f pop edi 0622 5e pop esi 0623 59 pop ecx 0624 5b pop ebx 0625 5d pop ebp 0626 c3 ret 0627 90 nop void Buffer::splitLine(unsigned line, unsigned col) { 0628 void near Buffer::splitLine( int unsigned, int unsigned ): 0628 55 push ebp 0629 89 e5 mov ebp,esp 062b 51 push ecx 062c 56 push esi 062d 57 push edi 062e 81 ec 14 00 00 00 sub esp,00000014H 0634 89 45 e8 mov -18H[ebp],eax 0637 89 55 ec mov -14H[ebp],edx 063a 89 5d f0 mov -10H[ebp],ebx if(line==last_line) line=queryLineCount()-1; 063d 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 0641 75 0c jne L22 0643 8b 45 e8 mov eax,-18H[ebp] 0646 e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 064b 48 dec eax 064c 89 45 ec mov -14H[ebp],eax unsigned l=line; 064f 8b 45 ec L22 mov eax,-14H[ebp] 0652 89 45 e0 mov -20H[ebp],eax unsigned b=findBlockWithLine(&l); 0655 8d 55 e0 lea edx,-20H[ebp] 0658 8b 45 e8 mov eax,-18H[ebp] 065b e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0660 89 45 e4 mov -1cH[ebp],eax if(b==NOBLOCK) return; 0663 83 7d e4 ff cmp dword ptr -1cH[ebp],0ffffffffH 0667 74 5d je L24 if(block[b]->available()==0) { //split block 0669 8b 55 e4 mov edx,-1cH[ebp] 066c c1 e2 02 shl edx,02H 066f 8b 45 e8 mov eax,-18H[ebp] 0672 8b 00 mov eax,[eax] 0674 01 d0 add eax,edx 0676 8b 00 mov eax,[eax] 0678 e8 00 00 00 00 call int unsigned near Block::available() const 067d 85 c0 test eax,eax 067f 75 11 jne L23 splitBlock(b,line,l); } //insert the character into the buffer 0681 8d 4d e0 lea ecx,-20H[ebp] 0684 8b 5d ec mov ebx,-14H[ebp] 0687 8d 55 e4 lea edx,-1cH[ebp] 068a 8b 45 e8 mov eax,-18H[ebp] 068d e8 00 00 00 00 call void near Buffer::splitBlock( int unsigned near &, int unsigned, int unsigned near & ) fixcolpo(block[b],l,col); 0692 8d 5d f0 L23 lea ebx,-10H[ebp] 0695 8b 55 e0 mov edx,-20H[ebp] 0698 8b 4d e4 mov ecx,-1cH[ebp] 069b c1 e1 02 shl ecx,02H 069e 8b 45 e8 mov eax,-18H[ebp] 06a1 8b 00 mov eax,[eax] 06a3 01 c8 add eax,ecx 06a5 8b 00 mov eax,[eax] 06a7 e8 00 00 00 00 call void near Buffer::fixcolpo( Block near *, int unsigned, int unsigned near & ) block[b]->splitLine(l,col); 06ac 8b 5d f0 mov ebx,-10H[ebp] 06af 8b 55 e0 mov edx,-20H[ebp] 06b2 8b 4d e4 mov ecx,-1cH[ebp] 06b5 c1 e1 02 shl ecx,02H 06b8 8b 45 e8 mov eax,-18H[ebp] 06bb 8b 00 mov eax,[eax] 06bd 01 c8 add eax,ecx 06bf 8b 00 mov eax,[eax] 06c1 e8 00 00 00 00 call void near Block::splitLine( int unsigned, int unsigned ) } 06c6 8d 65 f4 L24 lea esp,-0cH[ebp] 06c9 5f pop edi 06ca 5e pop esi 06cb 59 pop ecx 06cc 5d pop ebp 06cd c3 ret 06ce 8b c0 mov eax,eax void Buffer::joinLine(unsigned line) { 06d0 void near Buffer::joinLine( int unsigned ): 06d0 55 push ebp 06d1 89 e5 mov ebp,esp 06d3 53 push ebx 06d4 51 push ecx 06d5 56 push esi 06d6 57 push edi 06d7 81 ec 14 00 00 00 sub esp,00000014H 06dd 89 45 e8 mov -18H[ebp],eax 06e0 89 55 ec mov -14H[ebp],edx if(line==last_line) line=queryLineCount()-1; 06e3 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 06e7 75 0c jne L25 06e9 8b 45 e8 mov eax,-18H[ebp] 06ec e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 06f1 48 dec eax 06f2 89 45 ec mov -14H[ebp],eax unsigned l=line; 06f5 8b 45 ec L25 mov eax,-14H[ebp] 06f8 89 45 e0 mov -20H[ebp],eax unsigned b=findBlockWithLine(&l); 06fb 8d 55 e0 lea edx,-20H[ebp] 06fe 8b 45 e8 mov eax,-18H[ebp] 0701 e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0706 89 45 e4 mov -1cH[ebp],eax if(b==NOBLOCK) return; 0709 83 7d e4 ff cmp dword ptr -1cH[ebp],0ffffffffH 070d 0f 84 30 01 00 00 je L30 if(line==block[b]->lines-1) { //joining across blocks //join with first line in next block 0713 8b 55 e4 mov edx,-1cH[ebp] 0716 c1 e2 02 shl edx,02H 0719 8b 45 e8 mov eax,-18H[ebp] 071c 8b 00 mov eax,[eax] 071e 01 d0 add eax,edx 0720 8b 00 mov eax,[eax] 0722 8b 40 04 mov eax,+4H[eax] 0725 48 dec eax 0726 3b 45 ec cmp eax,-14H[ebp] 0729 0f 85 fd 00 00 00 jne L29 if(block[b+1]->queryLineLength(0)>block[b]->available()) { //block does not have enough room for first liine in next block //split necessary 072f 31 d2 xor edx,edx 0731 8b 5d e4 mov ebx,-1cH[ebp] 0734 c1 e3 02 shl ebx,02H 0737 8b 45 e8 mov eax,-18H[ebp] 073a 8b 00 mov eax,[eax] 073c 01 d8 add eax,ebx 073e 8b 40 04 mov eax,+4H[eax] 0741 e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 0746 89 c2 mov edx,eax 0748 8b 5d e4 mov ebx,-1cH[ebp] 074b c1 e3 02 shl ebx,02H 074e 8b 45 e8 mov eax,-18H[ebp] 0751 8b 00 mov eax,[eax] 0753 01 d8 add eax,ebx 0755 8b 00 mov eax,[eax] 0757 e8 00 00 00 00 call int unsigned near Block::available() const 075c 39 c2 cmp edx,eax 075e 76 11 jbe L26 splitBlock(b,line,l); } block[b]->insert(l,block[b]->queryLineLength(l), 0760 8d 4d e0 lea ecx,-20H[ebp] 0763 8b 5d ec mov ebx,-14H[ebp] 0766 8d 55 e4 lea edx,-1cH[ebp] 0769 8b 45 e8 mov eax,-18H[ebp] 076c e8 00 00 00 00 call void near Buffer::splitBlock( int unsigned near &, int unsigned, int unsigned near & ) block[b+1]->queryLinePtr(0),block[b+1]->queryLineLength(0)); //now remove first line of the next block 0771 31 d2 L26 xor edx,edx 0773 8b 4d e4 mov ecx,-1cH[ebp] 0776 c1 e1 02 shl ecx,02H 0779 8b 45 e8 mov eax,-18H[ebp] 077c 8b 00 mov eax,[eax] 077e 01 c8 add eax,ecx 0780 8b 40 04 mov eax,+4H[eax] 0783 e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 0788 50 push eax 0789 31 d2 xor edx,edx 078b 8b 5d e4 mov ebx,-1cH[ebp] 078e c1 e3 02 shl ebx,02H 0791 8b 45 e8 mov eax,-18H[ebp] 0794 8b 00 mov eax,[eax] 0796 01 d8 add eax,ebx 0798 8b 40 04 mov eax,+4H[eax] 079b e8 00 00 00 00 call char near * near Block::queryLinePtr( int unsigned ) 07a0 89 c1 mov ecx,eax 07a2 8b 55 e0 mov edx,-20H[ebp] 07a5 8b 75 e4 mov esi,-1cH[ebp] 07a8 c1 e6 02 shl esi,02H 07ab 8b 45 e8 mov eax,-18H[ebp] 07ae 8b 00 mov eax,[eax] 07b0 01 f0 add eax,esi 07b2 8b 00 mov eax,[eax] 07b4 e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 07b9 8b 55 e0 mov edx,-20H[ebp] 07bc 8b 75 e4 mov esi,-1cH[ebp] 07bf c1 e6 02 shl esi,02H 07c2 8b 5d e8 mov ebx,-18H[ebp] 07c5 8b 1b mov ebx,[ebx] 07c7 01 de add esi,ebx 07c9 8b 36 mov esi,[esi] 07cb 89 c3 mov ebx,eax 07cd 89 f0 mov eax,esi 07cf e8 00 00 00 00 call void near Block::insert( int unsigned, int unsigned, char const near *, int unsigned ) if(block[b+1]->lines==1) { //next block has only that line 07d4 8b 45 e4 mov eax,-1cH[ebp] 07d7 c1 e0 02 shl eax,02H 07da 8b 55 e8 mov edx,-18H[ebp] 07dd 8b 12 mov edx,[edx] 07df 01 d0 add eax,edx 07e1 8b 40 04 mov eax,+4H[eax] 07e4 83 78 04 01 cmp dword ptr +4H[eax],00000001H 07e8 75 29 jne L27 Block *bp=block[b+1]; 07ea 8b 55 e4 mov edx,-1cH[ebp] 07ed c1 e2 02 shl edx,02H 07f0 8b 45 e8 mov eax,-18H[ebp] 07f3 8b 00 mov eax,[eax] 07f5 01 d0 add eax,edx 07f7 8b 40 04 mov eax,+4H[eax] 07fa 89 45 dc mov -24H[ebp],eax removeBlock(b+1); 07fd 8b 55 e4 mov edx,-1cH[ebp] 0800 42 inc edx 0801 8b 45 e8 mov eax,-18H[ebp] 0804 e8 00 00 00 00 call void near Buffer::removeBlock( int unsigned ) delete bp; 0809 8b 45 dc mov eax,-24H[ebp] 080c e8 00 00 00 00 call void near operator delete( void near * ) } else 0811 eb 17 jmp L28 block[b+1]->removeLine(0); 0813 31 d2 L27 xor edx,edx 0815 8b 5d e4 mov ebx,-1cH[ebp] 0818 c1 e3 02 shl ebx,02H 081b 8b 45 e8 mov eax,-18H[ebp] 081e 8b 00 mov eax,[eax] 0820 01 d8 add eax,ebx 0822 8b 40 04 mov eax,+4H[eax] 0825 e8 00 00 00 00 call void near Block::removeLine( int unsigned ) } else { 082a eb 17 L28 jmp L30 block[b]->joinLine(l); } 082c 8b 55 e0 L29 mov edx,-20H[ebp] 082f 8b 5d e4 mov ebx,-1cH[ebp] 0832 c1 e3 02 shl ebx,02H 0835 8b 45 e8 mov eax,-18H[ebp] 0838 8b 00 mov eax,[eax] 083a 01 d8 add eax,ebx 083c 8b 00 mov eax,[eax] 083e e8 00 00 00 00 call void near Block::joinLine( int unsigned ) } 0843 8d 65 f0 L30 lea esp,-10H[ebp] 0846 5f pop edi 0847 5e pop esi 0848 59 pop ecx 0849 5b pop ebx 084a 5d pop ebp 084b c3 ret void Buffer::removeLine(unsigned line) { 084c void near Buffer::removeLine( int unsigned ): 084c 55 push ebp 084d 89 e5 mov ebp,esp 084f 53 push ebx 0850 51 push ecx 0851 56 push esi 0852 57 push edi 0853 81 ec 14 00 00 00 sub esp,00000014H 0859 89 45 e8 mov -18H[ebp],eax 085c 89 55 ec mov -14H[ebp],edx if(line==last_line) line=queryLineCount()-1; 085f 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 0863 75 0c jne L31 0865 8b 45 e8 mov eax,-18H[ebp] 0868 e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 086d 48 dec eax 086e 89 45 ec mov -14H[ebp],eax unsigned l=line; 0871 8b 45 ec L31 mov eax,-14H[ebp] 0874 89 45 e0 mov -20H[ebp],eax unsigned b=findBlockWithLine(&l); 0877 8d 55 e0 lea edx,-20H[ebp] 087a 8b 45 e8 mov eax,-18H[ebp] 087d e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0882 89 45 e4 mov -1cH[ebp],eax if(b==NOBLOCK) return; 0885 83 7d e4 ff cmp dword ptr -1cH[ebp],0ffffffffH 0889 74 53 je L33 if(block[b]->lines==1) { //removing the last line in block removes the block too 088b 8b 55 e4 mov edx,-1cH[ebp] 088e c1 e2 02 shl edx,02H 0891 8b 45 e8 mov eax,-18H[ebp] 0894 8b 00 mov eax,[eax] 0896 01 d0 add eax,edx 0898 8b 00 mov eax,[eax] 089a 83 78 04 01 cmp dword ptr +4H[eax],00000001H 089e 75 27 jne L32 Block *bp=block[b]; 08a0 8b 55 e4 mov edx,-1cH[ebp] 08a3 c1 e2 02 shl edx,02H 08a6 8b 45 e8 mov eax,-18H[ebp] 08a9 8b 00 mov eax,[eax] 08ab 01 d0 add eax,edx 08ad 8b 00 mov eax,[eax] 08af 89 45 dc mov -24H[ebp],eax removeBlock(b); 08b2 8b 55 e4 mov edx,-1cH[ebp] 08b5 8b 45 e8 mov eax,-18H[ebp] 08b8 e8 00 00 00 00 call void near Buffer::removeBlock( int unsigned ) delete bp; 08bd 8b 45 dc mov eax,-24H[ebp] 08c0 e8 00 00 00 00 call void near operator delete( void near * ) } else { 08c5 eb 17 jmp L33 block[b]->removeLine(l); } 08c7 8b 55 e0 L32 mov edx,-20H[ebp] 08ca 8b 5d e4 mov ebx,-1cH[ebp] 08cd c1 e3 02 shl ebx,02H 08d0 8b 45 e8 mov eax,-18H[ebp] 08d3 8b 00 mov eax,[eax] 08d5 01 d8 add eax,ebx 08d7 8b 00 mov eax,[eax] 08d9 e8 00 00 00 00 call void near Block::removeLine( int unsigned ) } 08de 8d 65 f0 L33 lea esp,-10H[ebp] 08e1 5f pop edi 08e2 5e pop esi 08e3 59 pop ecx 08e4 5b pop ebx 08e5 5d pop ebp 08e6 c3 ret 08e7 90 nop void Buffer::appendLine() { 08e8 void near Buffer::appendLine(): 08e8 55 push ebp 08e9 89 e5 mov ebp,esp 08eb 53 push ebx 08ec 51 push ecx 08ed 52 push edx 08ee 56 push esi 08ef 57 push edi 08f0 81 ec 18 00 00 00 sub esp,00000018H 08f6 89 45 e8 mov -18H[ebp],eax if(blocks==0 || block[blocks-1]->available()==0) { 08f9 8b 45 e8 mov eax,-18H[ebp] 08fc 83 78 04 00 cmp dword ptr +4H[eax],00000000H 0900 74 20 je L34 0902 8b 45 e8 mov eax,-18H[ebp] 0905 8b 40 04 mov eax,+4H[eax] 0908 8d 14 85 00 00 00 00 lea edx,+0H[eax*4] 090f 8b 45 e8 mov eax,-18H[ebp] 0912 8b 00 mov eax,[eax] 0914 01 d0 add eax,edx 0916 8b 40 fc mov eax,-4H[eax] 0919 e8 00 00 00 00 call int unsigned near Block::available() const 091e 85 c0 test eax,eax 0920 75 4b jne L37 Block *bp=new Block; 0922 b8 00 10 00 00 L34 mov eax,00001000H 0927 e8 00 00 00 00 call void near * near operator new( int unsigned ) 092c 89 45 e0 mov -20H[ebp],eax 092f 8b 45 e0 mov eax,-20H[ebp] 0932 89 45 dc mov -24H[ebp],eax 0935 83 7d dc 00 cmp dword ptr -24H[ebp],00000000H 0939 74 13 je L35 093b 8b 45 e0 mov eax,-20H[ebp] 093e e8 00 00 00 00 call near Block::Block() 0943 89 45 d8 mov -28H[ebp],eax 0946 8b 45 d8 mov eax,-28H[ebp] 0949 89 45 e4 mov -1cH[ebp],eax 094c eb 06 jmp L36 094e 8b 45 dc L35 mov eax,-24H[ebp] 0951 89 45 e4 mov -1cH[ebp],eax 0954 8b 45 e4 L36 mov eax,-1cH[ebp] 0957 89 45 d4 mov -2cH[ebp],eax insertBlock(bp,blocks); 095a 8b 5d e8 mov ebx,-18H[ebp] 095d 8b 5b 04 mov ebx,+4H[ebx] 0960 8b 55 d4 mov edx,-2cH[ebp] 0963 8b 45 e8 mov eax,-18H[ebp] 0966 e8 00 00 00 00 call void near Buffer::insertBlock( Block near *, int unsigned ) } else { 096b eb 1c jmp L38 block[blocks-1]->appendLine(); } 096d 8b 45 e8 L37 mov eax,-18H[ebp] 0970 8b 40 04 mov eax,+4H[eax] 0973 8d 14 85 00 00 00 00 lea edx,+0H[eax*4] 097a 8b 45 e8 mov eax,-18H[ebp] 097d 8b 00 mov eax,[eax] 097f 01 d0 add eax,edx 0981 8b 40 fc mov eax,-4H[eax] 0984 e8 00 00 00 00 call void near Block::appendLine() } 0989 8d 65 ec L38 lea esp,-14H[ebp] 098c 5f pop edi 098d 5e pop esi 098e 5a pop edx 098f 59 pop ecx 0990 5b pop ebx 0991 5d pop ebp 0992 c3 ret 0993 90 nop void Buffer::insert(unsigned line, unsigned col, char c) { 0994 void near Buffer::insert( int unsigned, int unsigned, char ): 0994 55 push ebp 0995 89 e5 mov ebp,esp 0997 56 push esi 0998 57 push edi 0999 81 ec 18 00 00 00 sub esp,00000018H 099f 89 45 e8 mov -18H[ebp],eax 09a2 89 55 ec mov -14H[ebp],edx 09a5 89 5d f0 mov -10H[ebp],ebx 09a8 88 4d f4 mov -0cH[ebp],cl if(line==last_line) line=queryLineCount()-1; 09ab 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 09af 75 0c jne L39 09b1 8b 45 e8 mov eax,-18H[ebp] 09b4 e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 09b9 48 dec eax 09ba 89 45 ec mov -14H[ebp],eax unsigned l=line; 09bd 8b 45 ec L39 mov eax,-14H[ebp] 09c0 89 45 e4 mov -1cH[ebp],eax unsigned b=findBlockWithLine(&l); 09c3 8d 55 e4 lea edx,-1cH[ebp] 09c6 8b 45 e8 mov eax,-18H[ebp] 09c9 e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 09ce 89 45 e0 mov -20H[ebp],eax if(b==NOBLOCK) return; 09d1 83 7d e0 ff cmp dword ptr -20H[ebp],0ffffffffH 09d5 74 62 je L41 if(block[b]->available()==0) { //split block 09d7 8b 55 e0 mov edx,-20H[ebp] 09da c1 e2 02 shl edx,02H 09dd 8b 45 e8 mov eax,-18H[ebp] 09e0 8b 00 mov eax,[eax] 09e2 01 d0 add eax,edx 09e4 8b 00 mov eax,[eax] 09e6 e8 00 00 00 00 call int unsigned near Block::available() const 09eb 85 c0 test eax,eax 09ed 75 11 jne L40 splitBlock(b,line,l); } //insert the character into the buffer 09ef 8d 4d e4 lea ecx,-1cH[ebp] 09f2 8b 5d ec mov ebx,-14H[ebp] 09f5 8d 55 e0 lea edx,-20H[ebp] 09f8 8b 45 e8 mov eax,-18H[ebp] 09fb e8 00 00 00 00 call void near Buffer::splitBlock( int unsigned near &, int unsigned, int unsigned near & ) fixcolpo(block[b],l,col); 0a00 8d 5d f0 L40 lea ebx,-10H[ebp] 0a03 8b 55 e4 mov edx,-1cH[ebp] 0a06 8b 45 e0 mov eax,-20H[ebp] 0a09 c1 e0 02 shl eax,02H 0a0c 8b 4d e8 mov ecx,-18H[ebp] 0a0f 8b 09 mov ecx,[ecx] 0a11 01 c8 add eax,ecx 0a13 8b 00 mov eax,[eax] 0a15 e8 00 00 00 00 call void near Buffer::fixcolpo( Block near *, int unsigned, int unsigned near & ) block[b]->insert(l,col,c); 0a1a 31 c9 xor ecx,ecx 0a1c 8a 4d f4 mov cl,-0cH[ebp] 0a1f 8b 5d f0 mov ebx,-10H[ebp] 0a22 8b 55 e4 mov edx,-1cH[ebp] 0a25 8b 75 e0 mov esi,-20H[ebp] 0a28 c1 e6 02 shl esi,02H 0a2b 8b 45 e8 mov eax,-18H[ebp] 0a2e 8b 00 mov eax,[eax] 0a30 01 f0 add eax,esi 0a32 8b 00 mov eax,[eax] 0a34 e8 00 00 00 00 call void near Block::insert( int unsigned, int unsigned, char ) } 0a39 8d 65 f8 L41 lea esp,-8H[ebp] 0a3c 5f pop edi 0a3d 5e pop esi 0a3e 5d pop ebp 0a3f c3 ret void Buffer::insert(unsigned line, unsigned col, const char *s, int sl) { 0a40 void near Buffer::insert( int unsigned, int unsigned, char const near *, int ): 0a40 55 push ebp 0a41 89 e5 mov ebp,esp 0a43 56 push esi 0a44 57 push edi 0a45 81 ec 1c 00 00 00 sub esp,0000001cH 0a4b 89 45 e8 mov -18H[ebp],eax 0a4e 89 55 ec mov -14H[ebp],edx 0a51 89 5d f0 mov -10H[ebp],ebx 0a54 89 4d f4 mov -0cH[ebp],ecx if(line==last_line) line=queryLineCount()-1; unsigned stringlength; 0a57 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 0a5b 75 0c jne L42 0a5d 8b 45 e8 mov eax,-18H[ebp] 0a60 e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 0a65 48 dec eax 0a66 89 45 ec mov -14H[ebp],eax if(sl==-1) 0a69 83 7d 08 ff L42 cmp dword ptr +8H[ebp],0ffffffffH 0a6d 75 0d jne L43 stringlength=strlen(s); else 0a6f 8b 45 f4 mov eax,-0cH[ebp] 0a72 e8 00 00 00 00 call strlen_ 0a77 89 45 dc mov -24H[ebp],eax 0a7a eb 06 jmp L44 stringlength=sl; 0a7c 8b 45 08 L43 mov eax,+8H[ebp] 0a7f 89 45 dc mov -24H[ebp],eax unsigned l=line; 0a82 8b 45 ec L44 mov eax,-14H[ebp] 0a85 89 45 e0 mov -20H[ebp],eax unsigned b=findBlockWithLine(&l); 0a88 8d 55 e0 lea edx,-20H[ebp] 0a8b 8b 45 e8 mov eax,-18H[ebp] 0a8e e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0a93 89 45 e4 mov -1cH[ebp],eax if(b==NOBLOCK) return; 0a96 83 7d e4 ff cmp dword ptr -1cH[ebp],0ffffffffH 0a9a 74 65 je L46 if(block[b]->available()insert(l,col,s,stringlength); 0ae0 8b 45 dc mov eax,-24H[ebp] 0ae3 50 push eax 0ae4 8b 4d f4 mov ecx,-0cH[ebp] 0ae7 8b 5d f0 mov ebx,-10H[ebp] 0aea 8b 55 e0 mov edx,-20H[ebp] 0aed 8b 75 e4 mov esi,-1cH[ebp] 0af0 c1 e6 02 shl esi,02H 0af3 8b 45 e8 mov eax,-18H[ebp] 0af6 8b 00 mov eax,[eax] 0af8 01 f0 add eax,esi 0afa 8b 00 mov eax,[eax] 0afc e8 00 00 00 00 call void near Block::insert( int unsigned, int unsigned, char const near *, int unsigned ) } 0b01 8d 65 f8 L46 lea esp,-8H[ebp] 0b04 5f pop edi 0b05 5e pop esi 0b06 5d pop ebp 0b07 c2 04 00 ret 0004H 0b0a 8b c0 mov eax,eax void Buffer::remove(unsigned line, unsigned col, unsigned chars) { 0b0c void near Buffer::remove( int unsigned, int unsigned, int unsigned ): 0b0c 55 push ebp 0b0d 89 e5 mov ebp,esp 0b0f 56 push esi 0b10 57 push edi 0b11 81 ec 18 00 00 00 sub esp,00000018H 0b17 89 45 e8 mov -18H[ebp],eax 0b1a 89 55 ec mov -14H[ebp],edx 0b1d 89 5d f0 mov -10H[ebp],ebx 0b20 89 4d f4 mov -0cH[ebp],ecx if(line==last_line) line=queryLineCount()-1; 0b23 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 0b27 75 0c jne L47 0b29 8b 45 e8 mov eax,-18H[ebp] 0b2c e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 0b31 48 dec eax 0b32 89 45 ec mov -14H[ebp],eax unsigned b=findBlockWithLine(&line); 0b35 8d 55 ec L47 lea edx,-14H[ebp] 0b38 8b 45 e8 mov eax,-18H[ebp] 0b3b e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0b40 89 45 e0 mov -20H[ebp],eax if(b==NOBLOCK) return; 0b43 83 7d e0 ff cmp dword ptr -20H[ebp],0ffffffffH 0b47 74 6c je L49 unsigned ll=block[b]->queryLineLength(line); 0b49 8b 55 ec mov edx,-14H[ebp] 0b4c 8b 5d e0 mov ebx,-20H[ebp] 0b4f c1 e3 02 shl ebx,02H 0b52 8b 45 e8 mov eax,-18H[ebp] 0b55 8b 00 mov eax,[eax] 0b57 01 d8 add eax,ebx 0b59 8b 00 mov eax,[eax] 0b5b e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 0b60 89 45 e4 mov -1cH[ebp],eax if(colll) 0b6b 8b 45 f0 mov eax,-10H[ebp] 0b6e 03 45 f4 add eax,-0cH[ebp] 0b71 3b 45 e4 cmp eax,-1cH[ebp] 0b74 76 22 jbe L48 block[b]->remove(line,col,ll-col); else 0b76 8b 4d e4 mov ecx,-1cH[ebp] 0b79 2b 4d f0 sub ecx,-10H[ebp] 0b7c 8b 5d f0 mov ebx,-10H[ebp] 0b7f 8b 55 ec mov edx,-14H[ebp] 0b82 8b 75 e0 mov esi,-20H[ebp] 0b85 c1 e6 02 shl esi,02H 0b88 8b 45 e8 mov eax,-18H[ebp] 0b8b 8b 00 mov eax,[eax] 0b8d 01 f0 add eax,esi 0b8f 8b 00 mov eax,[eax] 0b91 e8 00 00 00 00 call void near Block::remove( int unsigned, int unsigned, int unsigned ) 0b96 eb 1d jmp L49 block[b]->remove(line,col,chars); } 0b98 8b 4d f4 L48 mov ecx,-0cH[ebp] 0b9b 8b 5d f0 mov ebx,-10H[ebp] 0b9e 8b 55 ec mov edx,-14H[ebp] 0ba1 8b 75 e0 mov esi,-20H[ebp] 0ba4 c1 e6 02 shl esi,02H 0ba7 8b 45 e8 mov eax,-18H[ebp] 0baa 8b 00 mov eax,[eax] 0bac 01 f0 add eax,esi 0bae 8b 00 mov eax,[eax] 0bb0 e8 00 00 00 00 call void near Block::remove( int unsigned, int unsigned, int unsigned ) } 0bb5 8d 65 f8 L49 lea esp,-8H[ebp] 0bb8 5f pop edi 0bb9 5e pop esi 0bba 5d pop ebp 0bbb c3 ret void Buffer::clear() { 0bbc void near Buffer::clear(): 0bbc 55 push ebp 0bbd 89 e5 mov ebp,esp 0bbf 53 push ebx 0bc0 51 push ecx 0bc1 52 push edx 0bc2 56 push esi 0bc3 57 push edi 0bc4 81 ec 08 00 00 00 sub esp,00000008H 0bca 89 45 e8 mov -18H[ebp],eax for(unsigned b=0; blines; 0c6a 8b 55 e4 mov edx,-1cH[ebp] 0c6d c1 e2 02 shl edx,02H 0c70 8b 45 e8 mov eax,-18H[ebp] 0c73 8b 00 mov eax,[eax] 0c75 01 d0 add eax,edx 0c77 8b 00 mov eax,[eax] 0c79 8b 40 04 mov eax,+4H[eax] 0c7c 01 45 e0 add -20H[ebp],eax 0c7f eb d8 jmp L53 return c; 0c81 8b 45 e0 L55 mov eax,-20H[ebp] 0c84 89 45 dc mov -24H[ebp],eax } 0c87 8b 45 dc mov eax,-24H[ebp] 0c8a 8d 65 ec lea esp,-14H[ebp] 0c8d 5f pop edi 0c8e 5e pop esi 0c8f 5a pop edx 0c90 59 pop ecx 0c91 5b pop ebx 0c92 5d pop ebp 0c93 c3 ret char *Buffer::queryLinePtr(unsigned line) { 0c94 char near * near Buffer::queryLinePtr( int unsigned ): 0c94 55 push ebp 0c95 89 e5 mov ebp,esp 0c97 53 push ebx 0c98 51 push ecx 0c99 56 push esi 0c9a 57 push edi 0c9b 81 ec 10 00 00 00 sub esp,00000010H 0ca1 89 45 e8 mov -18H[ebp],eax 0ca4 89 55 ec mov -14H[ebp],edx if(line==last_line) line=queryLineCount()-1; 0ca7 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 0cab 75 0c jne L56 0cad 8b 45 e8 mov eax,-18H[ebp] 0cb0 e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 0cb5 48 dec eax 0cb6 89 45 ec mov -14H[ebp],eax unsigned b=findBlockWithLine(&line); 0cb9 8d 55 ec L56 lea edx,-14H[ebp] 0cbc 8b 45 e8 mov eax,-18H[ebp] 0cbf e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0cc4 89 45 e4 mov -1cH[ebp],eax if(b==NOBLOCK) return 0; 0cc7 83 7d e4 ff cmp dword ptr -1cH[ebp],0ffffffffH 0ccb 75 09 jne L57 0ccd c7 45 e0 00 00 00 00 mov dword ptr -20H[ebp],00000000H 0cd4 eb 1a jmp L58 return block[b]->queryLinePtr(line); 0cd6 8b 55 ec L57 mov edx,-14H[ebp] 0cd9 8b 5d e4 mov ebx,-1cH[ebp] 0cdc c1 e3 02 shl ebx,02H 0cdf 8b 45 e8 mov eax,-18H[ebp] 0ce2 8b 00 mov eax,[eax] 0ce4 01 d8 add eax,ebx 0ce6 8b 00 mov eax,[eax] 0ce8 e8 00 00 00 00 call char near * near Block::queryLinePtr( int unsigned ) 0ced 89 45 e0 mov -20H[ebp],eax } 0cf0 8b 45 e0 L58 mov eax,-20H[ebp] 0cf3 8d 65 f0 lea esp,-10H[ebp] 0cf6 5f pop edi 0cf7 5e pop esi 0cf8 59 pop ecx 0cf9 5b pop ebx 0cfa 5d pop ebp 0cfb c3 ret const char *Buffer::queryLinePtr(unsigned line) const { 0cfc char const near * near Buffer::queryLinePtr( int unsigned ) const: 0cfc 55 push ebp 0cfd 89 e5 mov ebp,esp 0cff 53 push ebx 0d00 51 push ecx 0d01 56 push esi 0d02 57 push edi 0d03 81 ec 10 00 00 00 sub esp,00000010H 0d09 89 45 e8 mov -18H[ebp],eax 0d0c 89 55 ec mov -14H[ebp],edx if(line==last_line) line=queryLineCount()-1; 0d0f 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 0d13 75 0c jne L59 0d15 8b 45 e8 mov eax,-18H[ebp] 0d18 e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 0d1d 48 dec eax 0d1e 89 45 ec mov -14H[ebp],eax unsigned b=findBlockWithLine(&line); 0d21 8d 55 ec L59 lea edx,-14H[ebp] 0d24 8b 45 e8 mov eax,-18H[ebp] 0d27 e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0d2c 89 45 e4 mov -1cH[ebp],eax if(b==NOBLOCK) return 0; 0d2f 83 7d e4 ff cmp dword ptr -1cH[ebp],0ffffffffH 0d33 75 09 jne L60 0d35 c7 45 e0 00 00 00 00 mov dword ptr -20H[ebp],00000000H 0d3c eb 1a jmp L61 return block[b]->queryLinePtr(line); 0d3e 8b 55 ec L60 mov edx,-14H[ebp] 0d41 8b 5d e4 mov ebx,-1cH[ebp] 0d44 c1 e3 02 shl ebx,02H 0d47 8b 45 e8 mov eax,-18H[ebp] 0d4a 8b 00 mov eax,[eax] 0d4c 01 d8 add eax,ebx 0d4e 8b 00 mov eax,[eax] 0d50 e8 00 00 00 00 call char near * near Block::queryLinePtr( int unsigned ) 0d55 89 45 e0 mov -20H[ebp],eax } 0d58 8b 45 e0 L61 mov eax,-20H[ebp] 0d5b 8d 65 f0 lea esp,-10H[ebp] 0d5e 5f pop edi 0d5f 5e pop esi 0d60 59 pop ecx 0d61 5b pop ebx 0d62 5d pop ebp 0d63 c3 ret unsigned Buffer::queryLineLength(unsigned line) const { 0d64 int unsigned near Buffer::queryLineLength( int unsigned ) const: 0d64 55 push ebp 0d65 89 e5 mov ebp,esp 0d67 53 push ebx 0d68 51 push ecx 0d69 56 push esi 0d6a 57 push edi 0d6b 81 ec 10 00 00 00 sub esp,00000010H 0d71 89 45 e8 mov -18H[ebp],eax 0d74 89 55 ec mov -14H[ebp],edx if(line==last_line) line=queryLineCount()-1; 0d77 83 7d ec ff cmp dword ptr -14H[ebp],0ffffffffH 0d7b 75 0c jne L62 0d7d 8b 45 e8 mov eax,-18H[ebp] 0d80 e8 00 00 00 00 call int unsigned near Buffer::queryLineCount() const 0d85 48 dec eax 0d86 89 45 ec mov -14H[ebp],eax unsigned b=findBlockWithLine(&line); 0d89 8d 55 ec L62 lea edx,-14H[ebp] 0d8c 8b 45 e8 mov eax,-18H[ebp] 0d8f e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0d94 89 45 e4 mov -1cH[ebp],eax if(b==NOBLOCK) return 0; 0d97 83 7d e4 ff cmp dword ptr -1cH[ebp],0ffffffffH 0d9b 75 09 jne L63 0d9d c7 45 e0 00 00 00 00 mov dword ptr -20H[ebp],00000000H 0da4 eb 1a jmp L64 return block[b]->queryLineLength(line); 0da6 8b 55 ec L63 mov edx,-14H[ebp] 0da9 8b 5d e4 mov ebx,-1cH[ebp] 0dac c1 e3 02 shl ebx,02H 0daf 8b 45 e8 mov eax,-18H[ebp] 0db2 8b 00 mov eax,[eax] 0db4 01 d8 add eax,ebx 0db6 8b 00 mov eax,[eax] 0db8 e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 0dbd 89 45 e0 mov -20H[ebp],eax } 0dc0 8b 45 e0 L64 mov eax,-20H[ebp] 0dc3 8d 65 f0 lea esp,-10H[ebp] 0dc6 5f pop edi 0dc7 5e pop esi 0dc8 59 pop ecx 0dc9 5b pop ebx 0dca 5d pop ebp 0dcb c3 ret unsigned Buffer::findBlockWithLine(unsigned *line) const { 0dcc int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const: 0dcc 55 push ebp 0dcd 89 e5 mov ebp,esp 0dcf 53 push ebx 0dd0 51 push ecx 0dd1 56 push esi 0dd2 57 push edi 0dd3 81 ec 14 00 00 00 sub esp,00000014H 0dd9 89 45 e8 mov -18H[ebp],eax 0ddc 89 55 ec mov -14H[ebp],edx unsigned l=*line; 0ddf 8b 45 ec mov eax,-14H[ebp] 0de2 8b 00 mov eax,[eax] 0de4 89 45 e0 mov -20H[ebp],eax for(unsigned b=0; blines<=l) { 0e01 8b 55 e4 mov edx,-1cH[ebp] 0e04 c1 e2 02 shl edx,02H 0e07 8b 45 e8 mov eax,-18H[ebp] 0e0a 8b 00 mov eax,[eax] 0e0c 01 d0 add eax,edx 0e0e 8b 00 mov eax,[eax] 0e10 8b 40 04 mov eax,+4H[eax] 0e13 3b 45 e0 cmp eax,-20H[ebp] 0e16 77 17 ja L67 l -= block[b]->lines; 0e18 8b 55 e4 mov edx,-1cH[ebp] 0e1b c1 e2 02 shl edx,02H 0e1e 8b 45 e8 mov eax,-18H[ebp] 0e21 8b 00 mov eax,[eax] 0e23 01 d0 add eax,edx 0e25 8b 00 mov eax,[eax] 0e27 8b 40 04 mov eax,+4H[eax] 0e2a 29 45 e0 sub -20H[ebp],eax } else { 0e2d eb 10 jmp L68 *line=l; 0e2f 8b 45 e0 L67 mov eax,-20H[ebp] 0e32 8b 55 ec mov edx,-14H[ebp] 0e35 89 02 mov [edx],eax return b; } 0e37 8b 45 e4 mov eax,-1cH[ebp] 0e3a 89 45 dc mov -24H[ebp],eax 0e3d eb 09 jmp L70 } 0e3f eb af L68 jmp L65 return NOBLOCK; 0e41 c7 45 dc ff ff ff ff L69 mov dword ptr -24H[ebp],0ffffffffH } 0e48 8b 45 dc L70 mov eax,-24H[ebp] 0e4b 8d 65 f0 lea esp,-10H[ebp] 0e4e 5f pop edi 0e4f 5e pop esi 0e50 59 pop ecx 0e51 5b pop ebx 0e52 5d pop ebp 0e53 c3 ret void Buffer::splitBlock(unsigned &b, unsigned absoluteLine, unsigned &relativeLine) { //split block 0e54 void near Buffer::splitBlock( int unsigned near &, int unsigned, int unsigned near & ): 0e54 55 push ebp 0e55 89 e5 mov ebp,esp 0e57 56 push esi 0e58 57 push edi 0e59 81 ec 24 00 00 00 sub esp,00000024H 0e5f 89 45 e8 mov -18H[ebp],eax 0e62 89 55 ec mov -14H[ebp],edx 0e65 89 5d f0 mov -10H[ebp],ebx 0e68 89 4d f4 mov -0cH[ebp],ecx Block *ab=new Block; 0e6b b8 00 10 00 00 mov eax,00001000H 0e70 e8 00 00 00 00 call void near * near operator new( int unsigned ) 0e75 89 45 e0 mov -20H[ebp],eax 0e78 8b 45 e0 mov eax,-20H[ebp] 0e7b 89 45 dc mov -24H[ebp],eax 0e7e 83 7d dc 00 cmp dword ptr -24H[ebp],00000000H 0e82 74 13 je L71 0e84 8b 45 e0 mov eax,-20H[ebp] 0e87 e8 00 00 00 00 call near Block::Block() 0e8c 89 45 d8 mov -28H[ebp],eax 0e8f 8b 45 d8 mov eax,-28H[ebp] 0e92 89 45 e4 mov -1cH[ebp],eax 0e95 eb 06 jmp L72 0e97 8b 45 dc L71 mov eax,-24H[ebp] 0e9a 89 45 e4 mov -1cH[ebp],eax 0e9d 8b 45 e4 L72 mov eax,-1cH[ebp] 0ea0 89 45 d4 mov -2cH[ebp],eax block[b]->splitTo(ab); 0ea3 8b 55 d4 mov edx,-2cH[ebp] 0ea6 8b 45 ec mov eax,-14H[ebp] 0ea9 8b 18 mov ebx,[eax] 0eab c1 e3 02 shl ebx,02H 0eae 8b 45 e8 mov eax,-18H[ebp] 0eb1 8b 00 mov eax,[eax] 0eb3 01 d8 add eax,ebx 0eb5 8b 00 mov eax,[eax] 0eb7 e8 00 00 00 00 call void near Block::splitTo( Block near * ) insertBlock(ab,b+1); 0ebc 8b 45 ec mov eax,-14H[ebp] 0ebf 8b 18 mov ebx,[eax] 0ec1 43 inc ebx 0ec2 8b 55 d4 mov edx,-2cH[ebp] 0ec5 8b 45 e8 mov eax,-18H[ebp] 0ec8 e8 00 00 00 00 call void near Buffer::insertBlock( Block near *, int unsigned ) relativeLine=absoluteLine; 0ecd 8b 45 f0 mov eax,-10H[ebp] 0ed0 8b 55 f4 mov edx,-0cH[ebp] 0ed3 89 02 mov [edx],eax b=findBlockWithLine(&relativeLine); 0ed5 8b 55 f4 mov edx,-0cH[ebp] 0ed8 8b 45 e8 mov eax,-18H[ebp] 0edb e8 00 00 00 00 call int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 0ee0 8b 55 ec mov edx,-14H[ebp] 0ee3 89 02 mov [edx],eax } 0ee5 8d 65 f8 lea esp,-8H[ebp] 0ee8 5f pop edi 0ee9 5e pop esi 0eea 5d pop ebp 0eeb c3 ret void Buffer::insertBlock(Block *bp, unsigned before) { 0eec void near Buffer::insertBlock( Block near *, int unsigned ): 0eec 55 push ebp 0eed 89 e5 mov ebp,esp 0eef 51 push ecx 0ef0 56 push esi 0ef1 57 push edi 0ef2 81 ec 1c 00 00 00 sub esp,0000001cH 0ef8 89 45 e8 mov -18H[ebp],eax 0efb 89 55 ec mov -14H[ebp],edx 0efe 89 5d f0 mov -10H[ebp],ebx if(blocks==blocksAlloc) { //expand table 0f01 8b 45 e8 mov eax,-18H[ebp] 0f04 8b 50 04 mov edx,+4H[eax] 0f07 8b 45 e8 mov eax,-18H[ebp] 0f0a 3b 50 08 cmp edx,+8H[eax] 0f0d 0f 85 b4 00 00 00 jne L79 unsigned nalloc=blocksAlloc+10; 0f13 8b 45 e8 mov eax,-18H[ebp] 0f16 8b 40 08 mov eax,+8H[eax] 0f19 83 c0 0a add eax,0000000aH 0f1c 89 45 dc mov -24H[ebp],eax Block **newtbl=new Block*[nalloc]; 0f1f 8b 45 dc mov eax,-24H[ebp] 0f22 c1 e0 02 shl eax,02H 0f25 e8 00 00 00 00 call void near * near operator new []( int unsigned ) 0f2a 89 45 e0 mov -20H[ebp],eax for(unsigned b=0; bbefore; b--) 0fc7 8b 45 e8 L79 mov eax,-18H[ebp] 0fca 8b 40 04 mov eax,+4H[eax] 0fcd 89 45 d8 mov -28H[ebp],eax 0fd0 eb 06 jmp L81 0fd2 8b 45 d8 L80 mov eax,-28H[ebp] 0fd5 ff 4d d8 dec dword ptr -28H[ebp] 0fd8 8b 45 d8 L81 mov eax,-28H[ebp] 0fdb 3b 45 f0 cmp eax,-10H[ebp] 0fde 76 22 jbe L82 block[b]=block[b-1]; 0fe0 8b 55 d8 mov edx,-28H[ebp] 0fe3 c1 e2 02 shl edx,02H 0fe6 8b 45 e8 mov eax,-18H[ebp] 0fe9 8b 00 mov eax,[eax] 0feb 8d 1c 10 lea ebx,[eax+edx] 0fee 8b 55 d8 mov edx,-28H[ebp] 0ff1 c1 e2 02 shl edx,02H 0ff4 8b 45 e8 mov eax,-18H[ebp] 0ff7 8b 00 mov eax,[eax] 0ff9 01 c2 add edx,eax 0ffb 8b 43 fc mov eax,-4H[ebx] 0ffe 89 02 mov [edx],eax 1000 eb d0 jmp L80 block[before]=bp; 1002 8b 55 f0 L82 mov edx,-10H[ebp] 1005 c1 e2 02 shl edx,02H 1008 8b 45 e8 mov eax,-18H[ebp] 100b 8b 00 mov eax,[eax] 100d 01 c2 add edx,eax 100f 8b 45 ec mov eax,-14H[ebp] 1012 89 02 mov [edx],eax blocks++; } 1014 8b 45 e8 mov eax,-18H[ebp] 1017 ff 40 04 inc dword ptr +4H[eax] } 101a 8d 65 f4 L83 lea esp,-0cH[ebp] 101d 5f pop edi 101e 5e pop esi 101f 59 pop ecx 1020 5d pop ebp 1021 c3 ret 1022 8b c0 mov eax,eax void Buffer::removeBlock(unsigned at) { 1024 void near Buffer::removeBlock( int unsigned ): 1024 55 push ebp 1025 89 e5 mov ebp,esp 1027 53 push ebx 1028 51 push ecx 1029 56 push esi 102a 57 push edi 102b 81 ec 0c 00 00 00 sub esp,0000000cH 1031 89 45 e8 mov -18H[ebp],eax 1034 89 55 ec mov -14H[ebp],edx for(unsigned b=at; bavailable()>=block[b+1]->bytesUsed) { //join two blocks 10c0 8b 55 e4 mov edx,-1cH[ebp] 10c3 c1 e2 02 shl edx,02H 10c6 8b 45 e8 mov eax,-18H[ebp] 10c9 8b 00 mov eax,[eax] 10cb 01 c2 add edx,eax 10cd 8b 52 04 mov edx,+4H[edx] 10d0 8b 5d e4 mov ebx,-1cH[ebp] 10d3 c1 e3 02 shl ebx,02H 10d6 8b 45 e8 mov eax,-18H[ebp] 10d9 8b 00 mov eax,[eax] 10db 01 d8 add eax,ebx 10dd 8b 00 mov eax,[eax] 10df e8 00 00 00 00 call int unsigned near Block::available() const 10e4 3b 02 cmp eax,[edx] 10e6 0f 82 8e 00 00 00 jb L91 Block *b1=block[b], 10ec 8b 55 e4 mov edx,-1cH[ebp] 10ef c1 e2 02 shl edx,02H 10f2 8b 45 e8 mov eax,-18H[ebp] 10f5 8b 00 mov eax,[eax] 10f7 01 d0 add eax,edx 10f9 8b 00 mov eax,[eax] 10fb 89 45 d8 mov -28H[ebp],eax *b2=block[b+1]; 10fe 8b 55 e4 mov edx,-1cH[ebp] 1101 c1 e2 02 shl edx,02H 1104 8b 45 e8 mov eax,-18H[ebp] 1107 8b 00 mov eax,[eax] 1109 01 d0 add eax,edx 110b 8b 40 04 mov eax,+4H[eax] 110e 89 45 dc mov -24H[ebp],eax for(int l=0; llines; l++) { 1111 c7 45 e0 00 00 00 00 mov dword ptr -20H[ebp],00000000H 1118 eb 06 jmp L89 111a 8b 45 e0 L88 mov eax,-20H[ebp] 111d ff 45 e0 inc dword ptr -20H[ebp] 1120 8b 45 e0 L89 mov eax,-20H[ebp] 1123 8b 55 dc mov edx,-24H[ebp] 1126 3b 42 04 cmp eax,+4H[edx] 1129 73 36 jae L90 b1->appendLine(); b1->insert(b1->lines-1,0, 112b 8b 45 d8 mov eax,-28H[ebp] 112e e8 00 00 00 00 call void near Block::appendLine() b2->queryLinePtr(l),b2->queryLineLength(l) ); 1133 8b 55 e0 mov edx,-20H[ebp] 1136 8b 45 dc mov eax,-24H[ebp] 1139 e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 113e 50 push eax 113f 8b 55 e0 mov edx,-20H[ebp] 1142 8b 45 dc mov eax,-24H[ebp] 1145 e8 00 00 00 00 call char near * near Block::queryLinePtr( int unsigned ) 114a 31 db xor ebx,ebx 114c 8b 55 d8 mov edx,-28H[ebp] 114f 8b 52 04 mov edx,+4H[edx] 1152 4a dec edx 1153 8b 75 d8 mov esi,-28H[ebp] 1156 89 c1 mov ecx,eax 1158 89 f0 mov eax,esi 115a e8 00 00 00 00 call void near Block::insert( int unsigned, int unsigned, char const near *, int unsigned ) } 115f eb b9 jmp L88 removeBlock(b+1); 1161 8b 55 e4 L90 mov edx,-1cH[ebp] 1164 42 inc edx 1165 8b 45 e8 mov eax,-18H[ebp] 1168 e8 00 00 00 00 call void near Buffer::removeBlock( int unsigned ) delete b2; 116d 8b 45 dc mov eax,-24H[ebp] 1170 e8 00 00 00 00 call void near operator delete( void near * ) } else { //move as much as possible from the next block to the current block 1175 e9 94 00 00 00 jmp L94 Block *b1=block[b], 117a 8b 55 e4 L91 mov edx,-1cH[ebp] 117d c1 e2 02 shl edx,02H 1180 8b 45 e8 mov eax,-18H[ebp] 1183 8b 00 mov eax,[eax] 1185 01 d0 add eax,edx 1187 8b 00 mov eax,[eax] 1189 89 45 d0 mov -30H[ebp],eax *b2=block[b+1]; 118c 8b 55 e4 mov edx,-1cH[ebp] 118f c1 e2 02 shl edx,02H 1192 8b 45 e8 mov eax,-18H[ebp] 1195 8b 00 mov eax,[eax] 1197 01 d0 add eax,edx 1199 8b 40 04 mov eax,+4H[eax] 119c 89 45 d4 mov -2cH[ebp],eax while(b1->available()>b2->queryLineLength(0)) { 119f 8b 45 d0 L92 mov eax,-30H[ebp] 11a2 e8 00 00 00 00 call int unsigned near Block::available() const 11a7 89 c3 mov ebx,eax 11a9 31 d2 xor edx,edx 11ab 8b 45 d4 mov eax,-2cH[ebp] 11ae e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 11b3 39 c3 cmp ebx,eax 11b5 76 51 jbe L93 unsigned ll=b2->queryLineLength(0); 11b7 31 d2 xor edx,edx 11b9 8b 45 d4 mov eax,-2cH[ebp] 11bc e8 00 00 00 00 call int unsigned near Block::queryLineLength( int unsigned ) const 11c1 89 45 cc mov -34H[ebp],eax b1->appendLine(); b1->insert(b1->lines-1,0, 11c4 8b 45 d0 mov eax,-30H[ebp] 11c7 e8 00 00 00 00 call void near Block::appendLine() b2->queryLinePtr(0),ll ); 11cc 8b 45 cc mov eax,-34H[ebp] 11cf 50 push eax 11d0 31 d2 xor edx,edx 11d2 8b 45 d4 mov eax,-2cH[ebp] 11d5 e8 00 00 00 00 call char near * near Block::queryLinePtr( int unsigned ) 11da 89 c1 mov ecx,eax 11dc 31 db xor ebx,ebx 11de 8b 55 d0 mov edx,-30H[ebp] 11e1 8b 52 04 mov edx,+4H[edx] 11e4 4a dec edx 11e5 8b 45 d0 mov eax,-30H[ebp] 11e8 e8 00 00 00 00 call void near Block::insert( int unsigned, int unsigned, char const near *, int unsigned ) b2->remove(0,0,ll); 11ed 8b 4d cc mov ecx,-34H[ebp] 11f0 31 db xor ebx,ebx 11f2 31 d2 xor edx,edx 11f4 8b 45 d4 mov eax,-2cH[ebp] 11f7 e8 00 00 00 00 call void near Block::remove( int unsigned, int unsigned, int unsigned ) b2->joinLine(0); 11fc 31 d2 xor edx,edx 11fe 8b 45 d4 mov eax,-2cH[ebp] 1201 e8 00 00 00 00 call void near Block::joinLine( int unsigned ) } 1206 eb 97 jmp L92 b++; 1208 8b 45 e4 L93 mov eax,-1cH[ebp] 120b ff 45 e4 inc dword ptr -1cH[ebp] } } 120e e9 9d fe ff ff L94 jmp L87 } ERROR: EOF encountered in source file 1213 8d 65 ec L95 lea esp,-14H[ebp] 1216 5f pop edi 1217 5e pop esi 1218 5a pop edx 1219 59 pop ecx 121a 5b pop ebx 121b 5d pop ebp 121c c3 ret 1 disassembly error(s) ------------------------------------------------------------ Segment: $$SYMBOLS BYTE USE16 00000e3f bytes 0000 08 32 - .2 0002 00 00 00 00 00 00 DP int unsigned near Block::available() const 0008 14 26 00 00 1b 06 8e 10 - .&...... 0010 e8 61 21 - .a! 0013 00 00 00 00 00 00 DP DGROUP:L96 0019 68 01 66 21 24 00 00 00 - h.f!$... 0021 00 2b 00 00 00 08 00 0e - .+...... 0029 0a 04 00 00 00 25 30 1c - .....%0. 0031 01 30 1c 61 76 61 69 6c - .0.avail 0039 61 62 6c 65 09 11 10 e8 - able.... 0041 13 74 68 69 73 08 32 - .this.2 0048 00 00 00 00 00 00 DP near Block::Block() 004e 14 26 00 00 1b 06 8e 10 - .&...... 0056 e8 61 21 - .a! 0059 00 00 00 00 00 00 DP DGROUP:L96 005f 68 01 66 1d 24 00 00 00 - h.f.$... 0067 00 3e 00 00 00 4e 00 0e - .>...N.. 006f 0a 04 00 00 00 1d 30 1c - ......0. 0077 01 30 1c 42 6c 6f 63 6b - .0.Block 007f 09 11 10 e8 13 74 68 69 - .....thi 0087 73 08 32 - s.2 008a 00 00 00 00 00 00 DP int unsigned near Block::findLineStart( int unsigned ) 0090 14 26 00 00 1b 06 8e 10 - .&...... 0098 e8 61 21 - .a! 009b 00 00 00 00 00 00 DP DGROUP:L96 00a1 68 01 66 27 24 00 00 00 - h.f'$... 00a9 00 57 00 00 00 90 00 0d - .W...... 00b1 09 04 00 00 00 2d 30 1c - .....-0. 00b9 02 30 1c 30 1f 66 69 6e - .0.0.fin 00c1 64 4c 69 6e 65 53 74 61 - dLineSta 00c9 72 74 09 11 10 e8 13 74 - rt.....t 00d1 68 69 73 09 11 10 ec 0d - his..... 00d9 6c 69 6e 65 06 11 10 e4 - line.... 00e1 20 70 08 32 - p.2 00e5 40 00 00 00 00 00 DP void near Block::splitLine( int unsigned, int unsigned ) 00eb 14 26 00 00 1b 06 8e 10 - .&...... 00f3 e8 61 21 - .a! 00f6 00 00 00 00 00 00 DP DGROUP:L96 00fc 68 01 66 24 24 00 00 00 - h.f$$... 0104 00 67 00 00 00 eb 00 0c - .g...... 010c 08 04 00 00 00 1e 00 03 - ........ 0114 30 1c 30 1f 30 1d 73 70 - 0.0.0.sp 011c 6c 69 74 4c 69 6e 65 09 - litLine. 0124 11 10 e8 13 74 68 69 73 - ....this 012c 09 11 10 ec 0d 6c 69 6e - .....lin 0134 65 08 11 10 f0 0d 63 6f - e.....co 013c 6c 0d 11 10 e4 0d 73 70 - l.....sp 0144 6c 69 74 70 6f 73 14 26 - litpos.& 014c 00 00 1b 06 8e 10 e8 61 - .......a 0154 21 - ! 0155 00 00 00 00 00 00 DP DGROUP:L96 015b 68 01 66 21 24 68 00 00 - h.f!$h.. 0163 00 56 00 00 00 4a 01 0d - .V...J.. 016b 09 04 00 00 00 1f 00 02 - ........ 0173 30 1c 30 1f 6a 6f 69 6e - 0.0.join 017b 4c 69 6e 65 09 11 10 e8 - Line.... 0183 13 74 68 69 73 09 11 10 - .this... 018b ec 0d 6c 69 6e 65 0c 11 - ..line.. 0193 10 e4 0d 6a 6f 69 6e 70 - ...joinp 019b 6f 73 14 26 00 00 1b 06 - os.&.... 01a3 8e 10 e8 61 21 - ...a! 01a8 00 00 00 00 00 00 DP DGROUP:L96 01ae 68 01 66 23 24 c0 00 00 - h.f#$... 01b6 00 7a 00 00 00 9d 01 0d - .z...... 01be 09 04 00 00 00 1f 00 02 - ........ 01c6 30 1c 30 1f 72 65 6d 6f - 0.0.remo 01ce 76 65 4c 69 6e 65 09 11 - veLine.. 01d6 10 e8 13 74 68 69 73 09 - ...this. 01de 11 10 ec 0d 6c 69 6e 65 - ....line 01e6 0a 11 10 e0 0d 73 74 61 - .....sta 01ee 72 74 0e 11 10 e4 0d 6e - rt.....n 01f6 65 78 74 73 74 61 72 74 - extstart 01fe 14 26 00 00 1b 06 8e 10 - .&...... 0206 e8 61 21 - .a! 0209 00 00 00 00 00 00 DP DGROUP:L96 020f 68 01 66 26 24 3c 01 00 - h.f&$<.. 0217 00 4f 00 00 00 fe 01 0d - .O...... 021f 09 04 00 00 00 21 30 1c - .....!0. 0227 02 30 1c 30 1f 71 75 65 - .0.0.que 022f 72 79 4c 69 6e 65 50 74 - ryLinePt 0237 72 09 11 10 e8 13 74 68 - r.....th 023f 69 73 09 11 10 ec 0d 6c - is.....l 0247 69 6e 65 06 11 10 e4 20 - ine.... 024f 70 14 26 00 00 1b 06 8e - p.&..... 0257 10 e8 61 21 - ..a! 025b 00 00 00 00 00 00 DP DGROUP:L96 0261 68 01 66 26 24 8c 01 00 - h.f&$... 0269 00 4f 00 00 00 50 02 0d - .O...P.. 0271 09 04 00 00 00 23 30 1c - .....#0. 0279 02 30 1c 30 1f 71 75 65 - .0.0.que 0281 72 79 4c 69 6e 65 50 74 - ryLinePt 0289 72 09 11 10 e8 13 74 68 - r.....th 0291 69 73 09 11 10 ec 0d 6c - is.....l 0299 69 6e 65 06 11 10 e4 22 - ine...." 02a1 70 14 26 00 00 1b 06 8e - p.&..... 02a9 10 e8 61 21 - ..a! 02ad 00 00 00 00 00 00 DP DGROUP:L96 02b3 68 01 66 29 24 dc 01 00 - h.f)$... 02bb 00 54 00 00 00 a2 02 0d - .T...... 02c3 09 04 00 00 00 24 30 1c - .....$0. 02cb 02 30 1c 30 1f 71 75 65 - .0.0.que 02d3 72 79 4c 69 6e 65 4c 65 - ryLineLe 02db 6e 67 74 68 09 11 10 e8 - ngth.... 02e3 13 74 68 69 73 09 11 10 - .this... 02eb ec 0d 6c 69 6e 65 06 11 - ..line.. 02f3 10 e4 22 70 0c 23 5f 02 - .."p.#_. 02fb 00 00 09 00 00 00 03 03 - ........ 0303 0c 23 5f 02 00 00 09 00 - .#_..... 030b 00 00 27 03 0c 23 74 02 - ..'..#t. 0313 00 00 09 00 00 00 1b 03 - ........ 031b 0c 23 74 02 00 00 09 00 - .#t..... 0323 00 00 27 03 0c 23 53 02 - ..'..#S. 032b 00 00 36 00 00 00 33 03 - ..6...3. 0333 0c 23 53 02 00 00 36 00 - .#S...6. 033b 00 00 53 03 14 26 00 00 - ..S..&.. 0343 1b 06 8e 10 e8 61 21 - .....a! 034a 00 00 00 00 00 00 DP DGROUP:L96 0350 68 01 66 20 24 30 02 00 - h.f $0.. 0358 00 a6 00 00 00 3f 03 0d - .....?.. 0360 09 04 00 00 00 28 00 02 - .....(.. 0368 30 1c 30 1f 73 70 6c 69 - 0.0.spli 0370 74 54 6f 09 11 10 e8 13 - tTo..... 0378 74 68 69 73 07 11 10 ec - this.... 0380 35 62 70 06 11 10 d8 0c - 5bp..... 0388 6c 06 11 10 dc 0c 72 0d - l.....r. 0390 11 10 e0 0c 73 70 6c 69 - ....spli 0398 74 70 6f 73 0f 11 10 e4 - tpos.... 03a0 0d 73 70 6c 69 74 62 79 - .splitby 03a8 74 65 73 0c 23 09 03 00 - tes.#... 03b0 00 12 00 00 00 b7 03 0c - ........ 03b8 23 09 03 00 00 12 00 00 - #....... 03c0 00 d7 03 14 26 00 00 1b - ....&... 03c8 06 8e 10 e8 61 21 - ....a! 03ce 00 00 00 00 00 00 DP DGROUP:L96 03d4 68 01 66 22 24 d8 02 00 - h.f"$... 03dc 00 58 00 00 00 c3 03 0e - .X...... 03e4 0a 04 00 00 00 2c 00 01 - .....,.. 03ec 30 1c 72 65 63 61 6c 63 - 0.recalc 03f4 4c 69 6e 65 73 09 11 10 - Lines... 03fc e8 13 74 68 69 73 06 11 - ..this.. 0404 10 e0 0d 6c 06 11 10 e4 - ...l.... 040c 0d 70 14 26 00 00 1b 06 - .p.&.... 0414 8e 10 e8 61 21 - ...a! 0419 00 00 00 00 00 00 DP DGROUP:L96 041f 68 01 66 23 24 30 03 00 - h.f#$0.. 0427 00 62 00 00 00 0e 04 0b - .b...... 042f 07 04 00 00 00 29 00 04 - .....).. 0437 30 1c 30 1f 30 1d 30 1e - 0.0.0.0. 043f 69 6e 73 65 72 74 09 11 - insert.. 0447 10 e8 13 74 68 69 73 09 - ...this. 044f 11 10 ec 0d 6c 69 6e 65 - ....line 0457 08 11 10 f0 0d 63 6f 6c - .....col 045f 0e 11 10 f4 06 63 68 61 - .....cha 0467 72 61 63 74 65 72 0b 11 - racter.. 046f 10 e4 0d 69 6e 73 70 6f - ...inspo 0477 73 14 26 00 00 1b 06 8e - s.&..... 047f 10 e8 61 21 - ..a! 0483 00 00 00 00 00 00 DP DGROUP:L96 0489 68 01 66 23 24 94 03 00 - h.f#$... 0491 00 71 00 00 00 78 04 0b - .q...x.. 0499 09 04 00 00 00 2a 00 04 - .....*.. 04a1 30 1c 30 1f 30 1d 30 1e - 0.0.0.0. 04a9 69 6e 73 65 72 74 09 11 - insert.. 04b1 10 e8 13 74 68 69 73 09 - ...this. 04b9 11 10 ec 0d 6c 69 6e 65 - ....line 04c1 08 11 10 f0 0d 63 6f 6c - .....col 04c9 06 11 10 f4 22 73 11 11 - ...."s.. 04d1 10 08 0d 73 74 72 69 6e - ...strin 04d9 67 6c 65 6e 67 74 68 0b - glength. 04e1 11 10 e4 0d 69 6e 73 70 - ....insp 04e9 6f 73 14 26 00 00 1b 06 - os.&.... 04f1 8e 10 e8 61 21 - ...a! 04f6 00 00 00 00 00 00 DP DGROUP:L96 04fc 68 01 66 21 24 08 04 00 - h.f!$... 0504 00 5a 00 00 00 eb 04 0c - .Z...... 050c 08 04 00 00 00 1e 00 03 - ........ 0514 30 1c 30 1f 30 1d 72 65 - 0.0.0.re 051c 6d 6f 76 65 09 11 10 e8 - move.... 0524 13 74 68 69 73 09 11 10 - .this... 052c ec 0d 6c 69 6e 65 08 11 - ..line.. 0534 10 f0 0d 63 6f 6c 0b 11 - ...col.. 053c 10 e4 0d 64 65 6c 70 6f - ...delpo 0544 73 14 26 00 00 1b 06 8e - s.&..... 054c 10 e8 61 21 - ..a! 0550 00 00 00 00 00 00 DP DGROUP:L96 0556 68 01 66 23 24 64 04 00 - h.f#$d.. 055e 00 5e 00 00 00 45 05 0b - .^...E.. 0566 07 04 00 00 00 2b 00 04 - .....+.. 056e 30 1c 30 1f 30 1d 30 1e - 0.0.0.0. 0576 72 65 6d 6f 76 65 09 11 - remove.. 057e 10 e8 13 74 68 69 73 09 - ...this. 0586 11 10 ec 0d 6c 69 6e 65 - ....line 058e 08 11 10 f0 0d 63 6f 6c - .....col 0596 0a 11 10 f4 0d 63 68 61 - .....cha 059e 72 73 0b 11 10 e4 0d 64 - rs.....d 05a6 65 6c 70 6f 73 14 26 00 - elpos.&. 05ae 00 1b 06 8e 10 e8 61 21 - ......a! 05b6 00 00 00 00 00 00 DP DGROUP:L96 05bc 68 01 66 21 24 c4 04 00 - h.f!$... 05c4 00 34 00 00 00 ab 05 0e - .4...... 05cc 0a 04 00 00 00 2c 00 01 - .....,.. 05d4 30 1c 61 70 70 65 6e 64 - 0.append 05dc 4c 69 6e 65 09 11 10 e8 - Line.... 05e4 13 74 68 69 73 14 26 00 - .this.&. 05ec 00 39 06 8e 10 e8 61 21 - .9....a! 05f4 00 00 00 00 00 00 DP DGROUP:L96 05fa 68 01 66 1e 24 f8 04 00 - h.f.$... 0602 00 55 00 00 00 e9 05 0e - .U...... 060a 0a 04 00 00 00 3b 30 1c - .....;0. 0612 01 30 1c 42 75 66 66 65 - .0.Buffe 061a 72 09 11 10 e8 13 74 68 - r.....th 0622 69 73 0c 23 8a 05 00 00 - is.#.... 062a 3a 00 00 00 4a 06 06 11 - :...J... 0632 10 e0 0d 62 14 26 00 00 - ...b.&.. 063a 39 06 8e 10 e8 61 21 - 9....a! 0641 00 00 00 00 00 00 DP DGROUP:L96 0647 68 01 66 21 24 50 05 00 - h.f!$P.. 064f 00 97 00 00 00 36 06 0d - .....6.. 0657 09 04 00 00 00 3c 30 1c - .....<0. 065f 02 30 1c 30 1f 7e 42 75 - .0.0.~Bu 0667 66 66 65 72 09 11 10 e8 - ffer.... 066f 13 74 68 69 73 0b 11 10 - .this... 0677 ec 0d 2e 63 64 74 6f 72 - ...cdtor 067f 08 32 - .2 0681 00 00 00 00 00 00 DP void near Buffer::fixcolpo( Block near *, int unsigned, int unsigned near & ) 0687 05 26 00 00 39 23 24 00 - .&..9#$. 068f 00 00 00 3d 00 00 00 87 - ...=.... 0697 06 0c 08 04 00 00 00 46 - .......F 069f 00 03 30 1c 30 1f 30 1d - ..0.0.0. 06a7 66 69 78 63 6f 6c 70 6f - fixcolpo 06af 07 11 10 e8 27 62 70 09 - ....'bp. 06b7 11 10 ec 0d 6c 69 6e 65 - ....line 06bf 14 11 8e 10 f0 61 21 - .....a! 06c6 00 00 00 00 00 00 DP DGROUP:L96 06cc 68 01 66 0d 63 6f 6c 07 - h.f.col. 06d4 11 10 e4 0c 6c 6c 08 32 - ....ll.2 06dc 28 06 00 00 00 00 DP void near Buffer::splitLine( int unsigned, int unsigned ) 06e2 14 26 00 00 39 06 8e 10 - .&..9... 06ea e8 61 21 - .a! 06ed 00 00 00 00 00 00 DP DGROUP:L96 06f3 68 01 66 24 24 00 00 00 - h.f$$... 06fb 00 a6 00 00 00 e2 06 0c - ........ 0703 08 04 00 00 00 1e 00 03 - ........ 070b 30 1c 30 1f 30 1d 73 70 - 0.0.0.sp 0713 6c 69 74 4c 69 6e 65 09 - litLine. 071b 11 10 e8 13 74 68 69 73 - ....this 0723 09 11 10 ec 0d 6c 69 6e - .....lin 072b 65 08 11 10 f0 0d 63 6f - e.....co 0733 6c 06 11 10 e0 0d 6c 06 - l.....l. 073b 11 10 e4 0d 62 0c 23 c2 - ....b.#. 0743 01 00 00 27 00 00 00 53 - ...'...S 074b 07 07 11 10 dc 27 62 70 - .....'bp 0753 0c 23 c2 01 00 00 27 00 - .#....'. 075b 00 00 5f 07 0c 23 07 01 - .._..#.. 0763 00 00 fb 00 00 00 6b 07 - ......k. 076b 0c 23 07 01 00 00 fb 00 - .#...... 0773 00 00 8b 07 14 26 00 00 - .....&.. 077b 39 06 8e 10 e8 61 21 - 9....a! 0782 00 00 00 00 00 00 DP DGROUP:L96 0788 68 01 66 21 24 a8 00 00 - h.f!$... 0790 00 7c 01 00 00 77 07 0d - .|...w.. 0798 09 04 00 00 00 1f 00 02 - ........ 07a0 30 1c 30 1f 6a 6f 69 6e - 0.0.join 07a8 4c 69 6e 65 09 11 10 e8 - Line.... 07b0 13 74 68 69 73 09 11 10 - .this... 07b8 ec 0d 6c 69 6e 65 06 11 - ..line.. 07c0 10 e0 0d 6c 06 11 10 e4 - ...l.... 07c8 0d 62 0c 23 78 02 00 00 - .b.#x... 07d0 25 00 00 00 dd 07 07 11 - %....... 07d8 10 dc 27 62 70 0c 23 78 - ..'bp.#x 07e0 02 00 00 25 00 00 00 fd - ...%.... 07e8 07 14 26 00 00 39 06 8e - ..&..9.. 07f0 10 e8 61 21 - ..a! 07f4 00 00 00 00 00 00 DP DGROUP:L96 07fa 68 01 66 23 24 24 02 00 - h.f#$$.. 0802 00 9b 00 00 00 e9 07 0d - ........ 080a 09 04 00 00 00 1f 00 02 - ........ 0812 30 1c 30 1f 72 65 6d 6f - 0.0.remo 081a 76 65 4c 69 6e 65 09 11 - veLine.. 0822 10 e8 13 74 68 69 73 09 - ...this. 082a 11 10 ec 0d 6c 69 6e 65 - ....line 0832 06 11 10 e0 0d 6c 06 11 - .....l.. 083a 10 e4 0d 62 0c 23 fa 02 - ...b.#.. 0842 00 00 49 00 00 00 51 08 - ..I...Q. 084a 07 11 10 d4 27 62 70 0c - ....'bp. 0852 23 fa 02 00 00 49 00 00 - #....I.. 085a 00 71 08 14 26 00 00 39 - .q..&..9 0862 06 8e 10 e8 61 21 - ....a! 0868 00 00 00 00 00 00 DP DGROUP:L96 086e 68 01 66 21 24 c0 02 00 - h.f!$... 0876 00 ab 00 00 00 5d 08 0e - .....].. 087e 0a 04 00 00 00 2c 00 01 - .....,.. 0886 30 1c 61 70 70 65 6e 64 - 0.append 088e 4c 69 6e 65 09 11 10 e8 - Line.... 0896 13 74 68 69 73 14 26 00 - .this.&. 089e 00 39 06 8e 10 e8 61 21 - .9....a! 08a6 00 00 00 00 00 00 DP DGROUP:L96 08ac 68 01 66 23 24 6c 03 00 - h.f#$l.. 08b4 00 ac 00 00 00 9b 08 0b - ........ 08bc 07 04 00 00 00 29 00 04 - .....).. 08c4 30 1c 30 1f 30 1d 30 1e - 0.0.0.0. 08cc 69 6e 73 65 72 74 09 11 - insert.. 08d4 10 e8 13 74 68 69 73 09 - ...this. 08dc 11 10 ec 0d 6c 69 6e 65 - ....line 08e4 08 11 10 f0 0d 63 6f 6c - .....col 08ec 06 11 10 f4 06 63 06 11 - .....c.. 08f4 10 e4 0d 6c 06 11 10 e0 - ...l.... 08fc 0d 62 14 26 00 00 39 06 - .b.&..9. 0904 8e 10 e8 61 21 - ...a! 0909 00 00 00 00 00 00 DP DGROUP:L96 090f 68 01 66 23 24 18 04 00 - h.f#$... 0917 00 ca 00 00 00 fe 08 0b - ........ 091f 09 04 00 00 00 3d 00 04 - .....=.. 0927 30 1c 30 1f 30 1d 30 1e - 0.0.0.0. 092f 69 6e 73 65 72 74 09 11 - insert.. 0937 10 e8 13 74 68 69 73 09 - ...this. 093f 11 10 ec 0d 6c 69 6e 65 - ....line 0947 08 11 10 f0 0d 63 6f 6c - .....col 094f 06 11 10 f4 22 73 07 11 - ...."s.. 0957 10 08 0c 73 6c 11 11 10 - ...sl... 095f dc 0d 73 74 72 69 6e 67 - ..string 0967 6c 65 6e 67 74 68 06 11 - length.. 096f 10 e0 0d 6c 06 11 10 e4 - ...l.... 0977 0d 62 0c 23 43 05 00 00 - .b.#C... 097f 4a 00 00 00 85 09 0c 23 - J......# 0987 43 05 00 00 4a 00 00 00 - C...J... 098f a5 09 14 26 00 00 39 06 - ...&..9. 0997 8e 10 e8 61 21 - ...a! 099c 00 00 00 00 00 00 DP DGROUP:L96 09a2 68 01 66 23 24 e4 04 00 - h.f#$... 09aa 00 b0 00 00 00 91 09 0b - ........ 09b2 07 04 00 00 00 2b 00 04 - .....+.. 09ba 30 1c 30 1f 30 1d 30 1e - 0.0.0.0. 09c2 72 65 6d 6f 76 65 09 11 - remove.. 09ca 10 e8 13 74 68 69 73 09 - ...this. 09d2 11 10 ec 0d 6c 69 6e 65 - ....line 09da 08 11 10 f0 0d 63 6f 6c - .....col 09e2 0a 11 10 f4 0d 63 68 61 - .....cha 09ea 72 73 06 11 10 e0 0d 62 - rs.....b 09f2 07 11 10 e4 0d 6c 6c 14 - .....ll. 09fa 26 00 00 39 06 8e 10 e8 - &..9.... 0a02 61 21 - a! 0a04 00 00 00 00 00 00 DP DGROUP:L96 0a0a 68 01 66 1c 24 94 05 00 - h.f.$... 0a12 00 7c 00 00 00 f9 09 0e - .|...... 0a1a 0a 04 00 00 00 2c 00 01 - .....,.. 0a22 30 1c 63 6c 65 61 72 09 - 0.clear. 0a2a 11 10 e8 13 74 68 69 73 - ....this 0a32 06 11 10 e4 0d 62 14 26 - .....b.& 0a3a 00 00 39 06 8e 10 e8 61 - ..9....a 0a42 21 - ! 0a43 00 00 00 00 00 00 DP DGROUP:L96 0a49 68 01 66 26 24 10 06 00 - h.f&$... 0a51 00 5c 00 00 00 38 0a 0e - .\...8.. 0a59 0a 04 00 00 00 3e 30 1c - .....>0. 0a61 01 30 1c 71 75 65 72 79 - .0.query 0a69 4c 69 6e 65 43 6f 75 6e - LineCoun 0a71 74 09 11 10 e8 13 74 68 - t.....th 0a79 69 73 06 11 10 e0 0d 63 - is.....c 0a81 06 11 10 e4 0d 62 14 26 - .....b.& 0a89 00 00 39 06 8e 10 e8 61 - ..9....a 0a91 21 - ! 0a92 00 00 00 00 00 00 DP DGROUP:L96 0a98 68 01 66 26 24 6c 06 00 - h.f&$l.. 0aa0 00 68 00 00 00 87 0a 0d - .h...... 0aa8 09 04 00 00 00 21 30 1c - .....!0. 0ab0 02 30 1c 30 1f 71 75 65 - .0.0.que 0ab8 72 79 4c 69 6e 65 50 74 - ryLinePt 0ac0 72 09 11 10 e8 13 74 68 - r.....th 0ac8 69 73 09 11 10 ec 0d 6c - is.....l 0ad0 69 6e 65 06 11 10 e4 0d - ine..... 0ad8 62 14 26 00 00 39 06 8e - b.&..9.. 0ae0 10 e8 61 21 - ..a! 0ae4 00 00 00 00 00 00 DP DGROUP:L96 0aea 68 01 66 26 24 d4 06 00 - h.f&$... 0af2 00 68 00 00 00 d9 0a 0d - .h...... 0afa 09 04 00 00 00 23 30 1c - .....#0. 0b02 02 30 1c 30 1f 71 75 65 - .0.0.que 0b0a 72 79 4c 69 6e 65 50 74 - ryLinePt 0b12 72 09 11 10 e8 13 74 68 - r.....th 0b1a 69 73 09 11 10 ec 0d 6c - is.....l 0b22 69 6e 65 06 11 10 e4 0d - ine..... 0b2a 62 14 26 00 00 39 06 8e - b.&..9.. 0b32 10 e8 61 21 - ..a! 0b36 00 00 00 00 00 00 DP DGROUP:L96 0b3c 68 01 66 29 24 3c 07 00 - h.f)$<.. 0b44 00 68 00 00 00 2b 0b 0d - .h...+.. 0b4c 09 04 00 00 00 24 30 1c - .....$0. 0b54 02 30 1c 30 1f 71 75 65 - .0.0.que 0b5c 72 79 4c 69 6e 65 4c 65 - ryLineLe 0b64 6e 67 74 68 09 11 10 e8 - ngth.... 0b6c 13 74 68 69 73 09 11 10 - .this... 0b74 ec 0d 6c 69 6e 65 06 11 - ..line.. 0b7c 10 e4 0d 62 0c 23 d9 07 - ...b.#.. 0b84 00 00 3e 00 00 00 8c 0b - ..>..... 0b8c 0c 23 d9 07 00 00 3e 00 - .#....>. 0b94 00 00 ac 0b 14 26 00 00 - .....&.. 0b9c 39 06 8e 10 e8 61 21 - 9....a! 0ba3 00 00 00 00 00 00 DP DGROUP:L96 0ba9 68 01 66 2b 24 a4 07 00 - h.f+$... 0bb1 00 88 00 00 00 98 0b 0d - ........ 0bb9 09 04 00 00 00 40 30 1c - .....@0. 0bc1 02 30 1c 30 1f 66 69 6e - .0.0.fin 0bc9 64 42 6c 6f 63 6b 57 69 - dBlockWi 0bd1 74 68 4c 69 6e 65 09 11 - thLine.. 0bd9 10 e8 13 74 68 69 73 09 - ...this. 0be1 11 10 ec 3f 6c 69 6e 65 - ...?line 0be9 06 11 10 e0 0d 6c 06 11 - .....l.. 0bf1 10 e4 0d 62 14 26 00 00 - ...b.&.. 0bf9 39 06 8e 10 e8 61 21 - 9....a! 0c00 00 00 00 00 00 00 DP DGROUP:L96 0c06 68 01 66 27 24 2c 08 00 - h.f'$,.. 0c0e 00 98 00 00 00 f5 0b 0b - ........ 0c16 07 04 00 00 00 43 00 04 - .....C.. 0c1e 30 1c 30 1f 30 1d 30 1e - 0.0.0.0. 0c26 73 70 6c 69 74 42 6c 6f - splitBlo 0c2e 63 6b 09 11 10 e8 13 74 - ck.....t 0c36 68 69 73 12 11 8e 10 ec - his..... 0c3e 61 21 - a! 0c40 00 00 00 00 00 00 DP DGROUP:L96 0c46 68 01 66 0d 62 11 11 10 - h.f.b... 0c4e f0 0d 61 62 73 6f 6c 75 - ..absolu 0c56 74 65 4c 69 6e 65 1d 11 - teLine.. 0c5e 8e 10 f4 61 21 - ...a! 0c63 00 00 00 00 00 00 DP DGROUP:L96 0c69 68 01 66 0d 72 65 6c 61 - h.f.rela 0c71 74 69 76 65 4c 69 6e 65 - tiveLine 0c79 07 11 10 d4 27 61 62 0c - ....'ab. 0c81 23 eb 08 00 00 b2 00 00 - #....... 0c89 00 a8 0c 0b 11 10 dc 0d - ........ 0c91 6e 61 6c 6c 6f 63 0b 11 - nalloc.. 0c99 10 e0 36 6e 65 77 74 62 - ..6newtb 0ca1 6c 06 11 10 e4 0d 62 0c - l.....b. 0ca9 23 eb 08 00 00 b2 00 00 - #....... 0cb1 00 e6 0c 0c 23 9f 09 00 - ....#... 0cb9 00 53 00 00 00 c6 0c 06 - .S...... 0cc1 11 10 d8 0d 62 0c 23 9f - ....b.#. 0cc9 09 00 00 53 00 00 00 e6 - ...S.... 0cd1 0c 14 26 00 00 39 06 8e - ..&..9.. 0cd9 10 e8 61 21 - ..a! 0cdd 00 00 00 00 00 00 DP DGROUP:L96 0ce3 68 01 66 26 24 c4 08 00 - h.f&$... 0ceb 00 36 01 00 00 d2 0c 0c - .6...... 0cf3 08 04 00 00 00 44 00 03 - .....D.. 0cfb 30 1c 30 1f 30 1d 69 6e - 0.0.0.in 0d03 73 65 72 74 42 6c 6f 63 - sertBloc 0d0b 6b 09 11 10 e8 13 74 68 - k.....th 0d13 69 73 07 11 10 ec 27 62 - is....'b 0d1b 70 0b 11 10 f0 0d 62 65 - p.....be 0d23 66 6f 72 65 14 26 00 00 - fore.&.. 0d2b 39 06 8e 10 e8 61 21 - 9....a! 0d32 00 00 00 00 00 00 DP DGROUP:L96 0d38 68 01 66 24 24 fc 09 00 - h.f$$... 0d40 00 74 00 00 00 27 0d 0d - .t...'.. 0d48 09 04 00 00 00 1f 00 02 - ........ 0d50 30 1c 30 1f 72 65 6d 6f - 0.0.remo 0d58 76 65 42 6c 6f 63 6b 09 - veBlock. 0d60 11 10 e8 13 74 68 69 73 - ....this 0d68 07 11 10 ec 0d 61 74 06 - .....at. 0d70 11 10 e4 0d 62 0c 23 c4 - ....b.#. 0d78 0a 00 00 89 00 00 00 95 - ........ 0d80 0d 07 11 10 d8 27 62 31 - .....'b1 0d88 07 11 10 dc 27 62 32 06 - ....'b2. 0d90 11 10 e0 0c 6c 0c 23 c4 - ....l.#. 0d98 0a 00 00 89 00 00 00 e6 - ........ 0da0 0d 0c 23 8f 0b 00 00 4f - ..#....O 0da8 00 00 00 b4 0d 07 11 10 - ........ 0db0 cc 0d 6c 6c 0c 23 8f 0b - ..ll.#.. 0db8 00 00 4f 00 00 00 c0 0d - ..O..... 0dc0 0c 23 52 0b 00 00 94 00 - .#R..... 0dc8 00 00 da 0d 07 11 10 d0 - ........ 0dd0 27 62 31 07 11 10 d4 27 - 'b1....' 0dd8 62 32 0c 23 52 0b 00 00 - b2.#R... 0de0 94 00 00 00 e6 0d 0c 23 - .......# 0de8 98 0a 00 00 4e 01 00 00 - ....N... 0df0 f2 0d 0c 23 98 0a 00 00 - ...#.... 0df8 4e 01 00 00 12 0e 14 26 - N......& 0e00 00 00 39 06 8e 10 e8 61 - ..9....a 0e08 21 - ! 0e09 00 00 00 00 00 00 DP DGROUP:L96 0e0f 68 01 66 1e 24 70 0a 00 - h.f.$p.. 0e17 00 85 01 00 00 fe 0d 0e - ........ 0e1f 0a 04 00 00 00 2c 00 01 - .....,.. 0e27 30 1c 63 6f 6d 70 61 63 - 0.compac 0e2f 74 09 11 10 e8 13 74 68 - t.....th 0e37 69 73 06 11 10 e4 0d 62 - is.....b No disassembly errors ------------------------------------------------------------ Segment: $$TYPES BYTE USE16 0000054c bytes 0000 06 13 4c 05 00 00 06 11 - ..L..... 0008 65 6e 75 6d 07 11 75 6e - enum..un 0010 69 6f 6e 08 11 73 74 72 - ion..str 0018 75 63 74 07 11 63 6c 61 - uct..cla 0020 73 73 0c 10 11 5f 5f 73 - ss...__s 0028 65 67 6d 65 6e 74 07 10 - egment.. 0030 10 63 68 61 72 03 10 00 - .char... 0038 03 10 10 03 10 11 03 10 - ........ 0040 01 03 10 11 06 10 03 69 - .......i 0048 6e 74 0f 10 13 75 6e 73 - nt...uns 0050 69 67 6e 65 64 20 69 6e - igned in 0058 74 03 10 03 03 10 13 03 - t....... 0060 10 23 03 10 27 03 10 30 - .#..'..0 0068 03 46 12 04 72 13 00 03 - .F..r... 0070 46 14 08 60 03 00 0c 00 - F..`.... 0078 00 00 0f 67 01 84 22 08 - ...g..". 0080 69 0d 5f 5f 69 6e 64 65 - i.__inde 0088 78 0f 67 01 84 22 04 69 - x.g..".i 0090 0d 5f 5f 64 65 6c 74 61 - .__delta 0098 09 67 01 6b 15 5f 5f 66 - .g.k.__f 00a0 6e 0a 12 00 0d 73 69 7a - n....siz 00a8 65 5f 74 05 50 02 00 13 - e_t.P... 00b0 11 51 ff 6c 61 73 74 5f - .Q.last_ 00b8 63 68 61 72 61 63 74 65 - characte 00c0 72 0c 51 ff 6c 61 73 74 - r.Q.last 00c8 5f 6c 69 6e 65 07 12 00 - _line... 00d0 18 2e 23 30 05 21 f7 0f - ..#0.!.. 00d8 06 0a 12 03 80 33 42 6c - .....3Bl 00e0 6f 63 6b 03 48 1b 04 72 - ock.H..r 00e8 1c 00 06 72 12 02 0d 0d - ...r.... 00f0 05 72 12 01 0d 03 46 06 - .r....F. 00f8 05 72 20 01 0d 03 46 06 - .r ...F. 0100 05 72 22 01 0d 05 72 0d - .r"...r. 0108 01 0d 04 72 0d 00 09 12 - ...r.... 0110 00 1b 42 6c 6f 63 6b 03 - ..Block. 0118 46 26 05 72 12 01 27 07 - F&.r..'. 0120 72 12 03 0d 0d 06 08 72 - r......r 0128 12 04 0d 0d 22 0d 07 72 - ...."..r 0130 12 03 0d 0d 0d 04 72 12 - ......r. 0138 00 05 72 0d 01 0d 03 48 - ..r....H 0140 1b 03 48 1b 05 72 2e 01 - ..H..r.. 0148 2f 08 60 02 00 08 00 00 - /.`..... 0150 00 09 61 04 0d 6c 69 6e - ..a..lin 0158 65 73 0d 61 00 0d 62 79 - es.a..by 0160 74 65 73 55 73 65 64 0f - tesUsed. 0168 12 03 31 42 6c 6f 63 6b - ..1Block 0170 48 65 61 64 65 72 08 60 - Header.` 0178 13 00 00 10 00 00 05 69 - .......i 0180 22 00 31 10 67 02 21 - ".1.g.! 0187 00 00 00 00 00 00 DP near Block::Block( Block const near & ) 018d 30 42 6c 6f 63 6b 18 67 - 0Block.g 0195 02 21 - .! 0197 00 00 00 00 00 00 DP int unsigned near Block::findLineStart( int unsigned ) 019d 2d 66 69 6e 64 4c 69 6e - -findLin 01a5 65 53 74 61 72 74 16 67 - eStart.g 01ad 02 21 - .! 01af 00 00 00 00 00 00 DP void near Block::recalcLines() 01b5 2c 72 65 63 61 6c 63 4c - ,recalcL 01bd 69 6e 65 73 15 67 02 21 - ines.g.! 01c5 00 00 00 00 00 00 DP void near Block::appendLine() 01cb 2c 61 70 70 65 6e 64 4c - ,appendL 01d3 69 6e 65 11 67 02 21 - ine.g.! 01da 00 00 00 00 00 00 DP void near Block::remove( int unsigned, int unsigned, int unsigned ) 01e0 2b 72 65 6d 6f 76 65 11 - +remove. 01e8 67 02 21 - g.! 01eb 00 00 00 00 00 00 DP void near Block::remove( int unsigned, int unsigned ) 01f1 1e 72 65 6d 6f 76 65 11 - .remove. 01f9 67 02 21 - g.! 01fc 00 00 00 00 00 00 DP void near Block::insert( int unsigned, int unsigned, char const near *, int unsigned ) 0202 2a 69 6e 73 65 72 74 11 - *insert. 020a 67 02 21 - g.! 020d 00 00 00 00 00 00 DP void near Block::insert( int unsigned, int unsigned, char ) 0213 29 69 6e 73 65 72 74 12 - )insert. 021b 67 02 21 - g.! 021e 00 00 00 00 00 00 DP void near Block::splitTo( Block near * ) 0224 28 73 70 6c 69 74 54 6f - (splitTo 022c 14 67 02 21 - .g.! 0230 00 00 00 00 00 00 DP int unsigned near Block::available() const 0236 25 61 76 61 69 6c 61 62 - %availab 023e 6c 65 1a 67 02 21 - le.g.! 0244 00 00 00 00 00 00 DP int unsigned near Block::queryLineLength( int unsigned ) const 024a 24 71 75 65 72 79 4c 69 - $queryLi 0252 6e 65 4c 65 6e 67 74 68 - neLength 025a 17 67 02 21 - .g.! 025e 00 00 00 00 00 00 DP char const near * near Block::queryLinePtr( int unsigned ) const 0264 23 71 75 65 72 79 4c 69 - #queryLi 026c 6e 65 50 74 72 17 67 02 - nePtr.g. 0274 21 - ! 0275 00 00 00 00 00 00 DP char near * near Block::queryLinePtr( int unsigned ) 027b 21 71 75 65 72 79 4c 69 - !queryLi 0283 6e 65 50 74 72 15 67 02 - nePtr.g. 028b 21 - ! 028c 00 00 00 00 00 00 DP void near Block::removeLine( int unsigned ) 0292 1f 72 65 6d 6f 76 65 4c - .removeL 029a 69 6e 65 13 67 02 21 - ine.g.! 02a1 00 00 00 00 00 00 DP void near Block::joinLine( int unsigned ) 02a7 1f 6a 6f 69 6e 4c 69 6e - .joinLin 02af 65 14 67 02 21 - e.g.! 02b4 00 00 00 00 00 00 DP void near Block::splitLine( int unsigned, int unsigned ) 02ba 1e 73 70 6c 69 74 4c 69 - .splitLi 02c2 6e 65 10 67 02 21 - ne.g.! 02c8 00 00 00 00 00 00 DP near Block::Block() 02ce 1d 42 6c 6f 63 6b 05 61 - .Block.a 02d6 08 1a 63 09 12 00 1b 42 - ..c....B 02de 6c 6f 63 6b 03 46 34 03 - lock.F4. 02e6 46 27 03 46 2c 03 46 37 - F'.F,.F7 02ee 0b 12 04 80 4a 42 75 66 - ....JBuf 02f6 66 65 72 03 48 39 04 72 - fer.H9.r 02fe 3a 00 04 72 13 00 08 72 - :..r...r 0306 12 04 0d 0d 22 0c 04 72 - ...."..r 030e 0d 00 03 46 0d 05 72 0d - ...F..r. 0316 01 3f 03 48 0d 03 48 0d - .?.H..H. 031e 07 72 12 03 41 0d 42 06 - .r..A.B. 0326 72 12 02 27 0d 03 48 0d - r..'..H. 032e 07 72 12 03 27 0d 45 03 - .r..'.E. 0336 48 39 03 48 39 05 72 47 - H9.H9.rG 033e 01 48 08 60 1a 00 10 00 - .H.`.... 0346 00 00 11 67 02 21 - ...g.! 034c 00 00 00 00 00 00 DP near Buffer::Buffer( Buffer const near & ) 0352 49 42 75 66 66 65 72 13 - IBuffer. 035a 67 08 21 - g.! 035d 00 00 00 00 00 00 DP void near Buffer::fixcolpo( Block near *, int unsigned, int unsigned near & ) 0363 46 66 69 78 63 6f 6c 70 - Ffixcolp 036b 6f 11 67 08 21 - o.g.! 0370 00 00 00 00 00 00 DP void near Buffer::fixcol( Block near *, int unsigned, int unsigned near & ) 0376 46 66 69 78 63 6f 6c 16 - Ffixcol. 037e 67 08 21 - g.! 0381 00 00 00 00 00 00 DP void near Buffer::removeBlock( int unsigned ) 0387 1f 72 65 6d 6f 76 65 42 - .removeB 038f 6c 6f 63 6b 16 67 08 21 - lock.g.! 0397 00 00 00 00 00 00 DP void near Buffer::insertBlock( Block near *, int unsigned ) 039d 44 69 6e 73 65 72 74 42 - DinsertB 03a5 6c 6f 63 6b 15 67 08 21 - lock.g.! 03ad 00 00 00 00 00 00 DP void near Buffer::splitBlock( int unsigned near &, int unsigned, int unsigned near & ) 03b3 43 73 70 6c 69 74 42 6c - CsplitBl 03bb 6f 63 6b 1c 67 08 21 - ock.g.! 03c2 00 00 00 00 00 00 DP int unsigned near Buffer::findBlockWithLine( int unsigned near * ) const 03c8 40 66 69 6e 64 42 6c 6f - @findBlo 03d0 63 6b 57 69 74 68 4c 69 - ckWithLi 03d8 6e 65 12 67 02 21 - ne.g.! 03de 00 00 00 00 00 00 DP void near Buffer::compact() 03e4 2c 63 6f 6d 70 61 63 74 - ,compact 03ec 1a 67 02 21 - .g.! 03f0 00 00 00 00 00 00 DP int unsigned near Buffer::queryLineLength( int unsigned ) const 03f6 24 71 75 65 72 79 4c 69 - $queryLi 03fe 6e 65 4c 65 6e 67 74 68 - neLength 0406 17 67 02 21 - .g.! 040a 00 00 00 00 00 00 DP char const near * near Buffer::queryLinePtr( int unsigned ) const 0410 23 71 75 65 72 79 4c 69 - #queryLi 0418 6e 65 50 74 72 17 67 02 - nePtr.g. 0420 21 - ! 0421 00 00 00 00 00 00 DP char near * near Buffer::queryLinePtr( int unsigned ) 0427 21 71 75 65 72 79 4c 69 - !queryLi 042f 6e 65 50 74 72 19 67 02 - nePtr.g. 0437 21 - ! 0438 00 00 00 00 00 00 DP int unsigned near Buffer::queryLineCount() const 043e 3e 71 75 65 72 79 4c 69 - >queryLi 0446 6e 65 43 6f 75 6e 74 10 - neCount. 044e 67 02 21 - g.! 0451 00 00 00 00 00 00 DP void near Buffer::clear() 0457 2c 63 6c 65 61 72 11 67 - ,clear.g 045f 02 21 - .! 0461 00 00 00 00 00 00 DP void near Buffer::remove( int unsigned, int unsigned, int unsigned ) 0467 2b 72 65 6d 6f 76 65 11 - +remove. 046f 67 02 21 - g.! 0472 00 00 00 00 00 00 DP void near Buffer::insert( int unsigned, int unsigned, char const near *, int ) 0478 3d 69 6e 73 65 72 74 11 - =insert. 0480 67 02 21 - g.! 0483 00 00 00 00 00 00 DP void near Buffer::insert( int unsigned, int unsigned, char ) 0489 29 69 6e 73 65 72 74 15 - )insert. 0491 67 02 21 - g.! 0494 00 00 00 00 00 00 DP void near Buffer::appendLine() 049a 2c 61 70 70 65 6e 64 4c - ,appendL 04a2 69 6e 65 15 67 02 21 - ine.g.! 04a9 00 00 00 00 00 00 DP void near Buffer::removeLine( int unsigned ) 04af 1f 72 65 6d 6f 76 65 4c - .removeL 04b7 69 6e 65 13 67 02 21 - ine.g.! 04be 00 00 00 00 00 00 DP void near Buffer::joinLine( int unsigned ) 04c4 1f 6a 6f 69 6e 4c 69 6e - .joinLin 04cc 65 14 67 02 21 - e.g.! 04d1 00 00 00 00 00 00 DP void near Buffer::splitLine( int unsigned, int unsigned ) 04d7 1e 73 70 6c 69 74 4c 69 - .splitLi 04df 6e 65 1e 67 02 93 22 0c - ne.g..". 04e7 69 61 22 00 69 61 21 - ia".ia! 04ee 00 00 00 00 00 00 DP near Block::Block() 04f4 68 01 66 3c 7e 42 75 66 - h.f<~Buf 04fc 66 65 72 11 67 02 21 - fer.g.! 0503 00 00 00 00 00 00 DP near Buffer::Buffer() 0509 3b 42 75 66 66 65 72 0f - ;Buffer. 0511 67 01 84 22 0c 69 38 5f - g..".i8_ 0519 5f 76 66 70 74 72 13 67 - _vfptr.g 0521 08 84 22 08 69 0d 62 6c - ..".i.bl 0529 6f 63 6b 73 41 6c 6c 6f - ocksAllo 0531 63 0e 67 08 84 22 04 69 - c.g..".i 0539 0d 62 6c 6f 63 6b 73 0a - .blocks. 0541 67 08 6b 36 62 6c 6f 63 - g.k6bloc 0549 6b 02 14 - k.. No disassembly errors ------------------------------------------------------------ Comdat: int unsigned near Block::available() const SEGMENT ANY '_TEXT' 0000002b bytes 0000 55 push ebp 0001 89 e5 mov ebp,esp 0003 53 push ebx 0004 51 push ecx 0005 52 push edx 0006 56 push esi 0007 57 push edi 0008 81 ec 08 00 00 00 sub esp,00000008H 000e 89 45 e8 mov -18H[ebp],eax 0011 b8 f8 0f 00 00 mov eax,00000ff8H 0016 8b 55 e8 mov edx,-18H[ebp] 0019 2b 02 sub eax,[edx] 001b 89 45 e4 mov -1cH[ebp],eax 001e 8b 45 e4 mov eax,-1cH[ebp] 0021 8d 65 ec lea esp,-14H[ebp] 0024 5f pop edi 0025 5e pop esi 0026 5a pop edx 0027 59 pop ecx 0028 5b pop ebx 0029 5d pop ebp 002a c3 ret No disassembly errors ------------------------------------------------------------ Comdat: void (near * const near __vftbl[])() SEGMENT ANY 'DGROUP:CONST2' 00000004 bytes 0000 00 00 00 00 DD near Buffer::~Buffer() No disassembly errors ------------------------------------------------------------ Segment: $$TYPES BYTE USE16 00000050 bytes 0000 01 00 01 00 01 00 15 00 - ........ 0008 01 00 02 00 00 00 20 00 - ...... . 0010 44 3a 5c 73 6f 75 72 63 - D:\sourc 0018 65 5c 74 6d 70 5c 65 64 - e\tmp\ed 0020 69 74 6f 72 5c 65 64 69 - itor\edi 0028 74 6f 72 2e 63 70 70 00 - tor.cpp. 0030 44 3a 5c 73 6f 75 72 63 - D:\sourc 0038 65 5c 74 6d 70 5c 65 64 - e\tmp\ed 0040 69 74 6f 72 5c 65 64 69 - itor\edi 0048 74 6f 72 2e 68 70 70 00 - tor.hpp. No disassembly errors ------------------------------------------------------------ Comdat: char unsigned const near __typesig[] SEGMENT ANY 'DGROUP:CONST2' 00000011 bytes 0000 00 - . 0001 00 00 00 00 DD near Buffer::Buffer() 0005 00 00 00 00 DD near Buffer::Buffer( Buffer const near & ) 0009 00 00 00 00 DD near Buffer::~Buffer() 000d 10 00 00 00 - .... No disassembly errors ------------------------------------------------------------