------------------------------------------------------------
                        [BUG/PRB.] VFP 9.0 FIX - FIX THE IMPORT COMMAND
                                  July 2025
                 ------------------------------------------------------------
                                     CCB



1. BUG:

     In vfp9 (and vfp6, vfp7, vfp8), if we use the IMPORT command to import data from Microsoft Excel 5.0 and 97 (XLS), sometimes VFP will crash.


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Fun7ae10e :: ; proc near
             pushd 02E0h                                                     ;0x007ae10e :        68e0020000
             pushd offset Data92b6c0                                                  ;0x007ae113 :        68c0b69200
             call Fun42c14f                                                  ;0x007ae118 :        e832e0c7ff
             mov eax ,  dword ptr [ Data937090 ]                             ;0x007ae11d :        a190709300
             mov  dword ptr [ ebp - 28 ] , eax                               ;0x007ae122 :        8945e4
             mov  esi , dword ptr [ ebp + 8 ]                                ;0x007ae125 :        8b7508
             xor ebx , ebx                                                   ;0x007ae128 :        33db
             mov  dword ptr [ ebp + 0FFFFFDA0h ] , ebx                       ;0x007ae12a :        899da0fdffff
             mov  dword ptr [ ebp + 0FFFFFDACh ] , ebx                       ;0x007ae130 :        899dacfdffff
             mov  dword ptr [ ebp + 0FFFFFDB4h ] , ebx                       ;0x007ae136 :        899db4fdffff
             mov  dword ptr [ ebp + 0FFFFFDB8h ] , ebx                       ;0x007ae13c :        899db8fdffff
             pushd 0105h                                                     ;0x007ae142 :        6805010000
             lea ecx ,  dword ptr [ esi + 93 ]                               ;0x007ae147 :        8d4e5d
             lea edi ,  dword ptr [ ebp + 0FFFFFDD8h ]                       ;0x007ae14a :        8dbdd8fdffff
             call Fun4a742a                                                  ;0x007ae150 :        e8d592cfff
             call Fun53d093                                                  ;0x007ae155 :        e839efd8ff
             push eax                                                        ;0x007ae15a :        50
             push ebx                                                        ;0x007ae15b :        53
             pushd 0FFFFFFFFh                                                ;0x007ae15c :        6aff
             mov eax , edi                                                   ;0x007ae15e :        8bc7
             push eax                                                        ;0x007ae160 :        50
             lea ebx ,  dword ptr [ ebp + 0FFFFFDA4h ]                       ;0x007ae161 :        8d9da4fdffff
             call Fun4d9aab                                                  ;0x007ae167 :        e83fb9d2ff
             test eax , eax                                                  ;0x007ae16c :        85c0
             je Label7ae17c                                                  ;0x007ae16e :        740c
             mov edi , eax                                                   ;0x007ae170 :        8bf8
             mov ecx , 01AAh                                                 ;0x007ae172 :        b9aa010000
             call Fun791bc8                                                  ;0x007ae177 :        e84c3afeff

     Label7ae17c ::
             add esi , 0162h                                                 ;0x007ae17c :        81c662010000
             push esi                                                        ;0x007ae182 :        56
             xor ebx , ebx                                                   ;0x007ae183 :        33db
             push ebx                                                        ;0x007ae185 :        53
             push ebx                                                        ;0x007ae186 :        53
             pushd 010h                                                      ;0x007ae187 :        6a10
             push ebx                                                        ;0x007ae189 :        53
             push  dword ptr [ ebp + 0FFFFFDA4h ]                            ;0x007ae18a :        ffb5a4fdffff
             call  StgOpenStorage                              ;0x007ae190 :        ff15c07b9100
             mov edi , eax                                                   ;0x007ae196 :        8bf8
             lea esi ,  dword ptr [ ebp + 0FFFFFDA4h ]                       ;0x007ae198 :        8db5a4fdffff
             call Fun4d6e5f                                                  ;0x007ae19e :        e8bc8cd2ff
             cmp edi , ebx                                                   ;0x007ae1a3 :        3bfb
             je Label7ae1b1                                                  ;0x007ae1a5 :        740a
             mov ecx , 01AAh                                                 ;0x007ae1a7 :        b9aa010000
             call Fun791bc8                                                  ;0x007ae1ac :        e8173afeff

     Label7ae1b1 ::
             lea edx ,  dword ptr [ ebp + 0FFFFFD90h ]                       ;0x007ae1b1 :        8d9590fdffff
             lea eax ,  dword ptr [ ebp + 0FFFFFD10h ]                       ;0x007ae1b7 :        8d8510fdffff
             call Fun42c27f                                                  ;0x007ae1bd :        e8bde0c7ff
             push  dword ptr [ ebp - 4 ]                                     ;0x007ae1c2 :        ff75fc
             pushd offset Label9163e7                                                  ;0x007ae1c5 :        68e7639100
             pushd 02h                                                       ;0x007ae1ca :        6a02
             push eax                                                        ;0x007ae1cc :        50
             call Fun42c2be                                                  ;0x007ae1cd :        e8ece0c7ff
             add esp , 010h                                                  ;0x007ae1d2 :        83c410
             mov  dword ptr [ ebp - 24 ] , esp                               ;0x007ae1d5 :        8965e8
             mov  dword ptr [ ebp + 0FFFFFDA8h ] , eax                       ;0x007ae1d8 :        8985a8fdffff
             cmp eax , ebx                                                   ;0x007ae1de :        3bc3
             jne Label7ae7ba                                                 ;0x007ae1e0 :        0f85d4050000
             pushd 0107Dh                                                    ;0x007ae1e6 :        687d100000
             mov edi , 080h                                                  ;0x007ae1eb :        bf80000000
             mov eax , edi                                                   ;0x007ae1f0 :        8bc7
             call Fun42bf2a                                                  ;0x007ae1f2 :        e833ddc7ff
             mov  esi , dword ptr [ ebp + 8 ]                                ;0x007ae1f7 :        8b7508
             mov  dword ptr [ esi + 73 ] , eax                               ;0x007ae1fa :        894649
             push edi                                                        ;0x007ae1fd :        57
             mov edx , offset Data926390                                              ;0x007ae1fe :        ba90639200
             mov  ecx , dword ptr [eax]                                      ;0x007ae203 :        8b08
             call Fun42c19b                                                  ;0x007ae205 :        e891dfc7ff
             mov  byte ptr [ esi + 69 ] , 020h                               ;0x007ae20a :        c6464520
             mov  dword ptr [ esi + 81 ] , ebx                               ;0x007ae20e :        895e51
             xor eax , eax                                                   ;0x007ae211 :        33c0
             mov  cl , byte ptr [ esi + 14 ]                                 ;0x007ae213 :        8a4e0e
             cmp cl , 0C7h                                                   ;0x007ae216 :        80f9c7
             je Label7ae225                                                  ;0x007ae219 :        740a
             cmp cl , 0BBh                                                   ;0x007ae21b :        80f9bb
             je Label7ae225                                                  ;0x007ae21e :        7405
             cmp cl , 0BAh                                                   ;0x007ae220 :        80f9ba
             jne Label7ae241                                                 ;0x007ae223 :        751c

     Label7ae225 ::
             mov  eax , dword ptr [ esi + 0162h ]                            ;0x007ae225 :        8b8662010000
             mov  ecx , dword ptr [eax]                                      ;0x007ae22b :        8b08
             lea edx ,  dword ptr [ esi + 0166h ]                            ;0x007ae22d :        8d9666010000
             push edx                                                        ;0x007ae233 :        52
             push ebx                                                        ;0x007ae234 :        53
             pushd 010h                                                      ;0x007ae235 :        6a10
             push ebx                                                        ;0x007ae237 :        53
             pushd offset Data92986c                                                  ;0x007ae238 :        686c989200
             push eax                                                        ;0x007ae23d :        50
             call  dword ptr [ ecx + 16 ]                                    ;0x007ae23e :        ff5110

     Label7ae241 ::
             cmp eax , ebx                                                   ;0x007ae241 :        3bc3
             je Label7ae271                                                  ;0x007ae243 :        742c
             mov  eax , dword ptr [ esi + 0162h ]                            ;0x007ae245 :        8b8662010000
             mov  ecx , dword ptr [eax]                                      ;0x007ae24b :        8b08
             lea edx ,  dword ptr [ esi + 0166h ]                            ;0x007ae24d :        8d9666010000
             push edx                                                        ;0x007ae253 :        52
             push ebx                                                        ;0x007ae254 :        53
             pushd 010h                                                      ;0x007ae255 :        6a10
             push ebx                                                        ;0x007ae257 :        53
             pushd offset Data928d54                                                  ;0x007ae258 :        68548d9200
             push eax                                                        ;0x007ae25d :        50
             call  dword ptr [ ecx + 16 ]                                    ;0x007ae25e :        ff5110
             cmp eax , ebx                                                   ;0x007ae261 :        3bc3
             je Label7ae271                                                  ;0x007ae263 :        740c
             mov edi , eax                                                   ;0x007ae265 :        8bf8
             mov ecx , 01AAh                                                 ;0x007ae267 :        b9aa010000
             call Fun791bc8                                                  ;0x007ae26c :        e85739feff

     Label7ae271 ::
             pushd 08h                                                       ;0x007ae271 :        6a08
             pop ebx                                                         ;0x007ae273 :        5b
             mov  dword ptr [ Data946c30 ] , ebx                             ;0x007ae274 :        891d306c9400
             pushd 04h                                                       ;0x007ae27a :        6a04
             lea eax ,  dword ptr [ ebp + 0FFFFFD80h ]                       ;0x007ae27c :        8d8580fdffff
             push eax                                                        ;0x007ae282 :        50
             push  dword ptr [ esi + 61 ]                                    ;0x007ae283 :        ff763d
             mov eax , esi                                                   ;0x007ae286 :        8bc6
             call Fun7ae818                                                  ;0x007ae288 :        e88b050000
             mov edi , 0295h                                                 ;0x007ae28d :        bf95020000
             test eax , eax                                                  ;0x007ae292 :        85c0
             jne Label7ae29d                                                 ;0x007ae294 :        7507
             mov ecx , edi                                                   ;0x007ae296 :        8bcf
             call Fun544742                                                  ;0x007ae298 :        e8a564d9ff

     Label7ae29d ::
             cmp  word ptr [ ebp + 0FFFFFD80h ] , 0809h                      ;0x007ae29d :        6681bd80fdffff0908
             je Label7ae2af                                                  ;0x007ae2a6 :        7407
             mov ecx , edi                                                   ;0x007ae2a8 :        8bcf
             call Fun544742                                                  ;0x007ae2aa :        e89364d9ff

     Label7ae2af ::
             push ebx                                                        ;0x007ae2af :        53
             lea eax ,  dword ptr [ ebp + 0FFFFFD78h ]                       ;0x007ae2b0 :        8d8578fdffff
             push eax                                                        ;0x007ae2b6 :        50
             push  dword ptr [ esi + 61 ]                                    ;0x007ae2b7 :        ff763d
             mov eax , esi                                                   ;0x007ae2ba :        8bc6
             call Fun7ae818                                                  ;0x007ae2bc :        e857050000
             test eax , eax                                                  ;0x007ae2c1 :        85c0
             jne Label7ae2cc                                                 ;0x007ae2c3 :        7507
             mov ecx , edi                                                   ;0x007ae2c5 :        8bcf
             call Fun544742                                                  ;0x007ae2c7 :        e87664d9ff

     Label7ae2cc ::
             cmp  word ptr [ ebp + 0FFFFFD7Ah ] , 05h                        ;0x007ae2cc :        6683bd7afdffff05
             je Label7ae2dd                                                  ;0x007ae2d4 :        7407
             mov ecx , edi                                                   ;0x007ae2d6 :        8bcf
             call Fun544742                                                  ;0x007ae2d8 :        e86564d9ff

     Label7ae2dd ::


     ;
     ;                 -------------------------------------------------
     ;                        VFP 9.0 FIX - FIX THE IMPORT COMMAND
     ;                                  July 2025
     ;                 -------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, if we use the IMPORT command to import data from Microsoft Excel 5.0 and 97 (XLS), sometimes VFP will crash.
     ;
     ; 2025/7/9, by ccb
     ;

             cmp dword ptr vfpa_sys9189_data,00h
             je Label7ae2de
             cmp word ptr [ ebp + 0FFFFFD82h ] , 0010h
             jne Label7ae2de
             pushd 08h
             push  dword ptr [ esi + 65 ]
             push  dword ptr [ esi + 61 ]
             mov eax , esi
             call Fun7ae818


     Label7ae2de ::
             mov  ax , word ptr [ ebp + 0FFFFFD78h ]                         ;0x007ae2dd :        668b8578fdffff
             mov  word ptr [esi] , ax                                        ;0x007ae2e4 :        668906
             and  dword ptr [ ebp + 0FFFFFDC8h ] , 00h                       ;0x007ae2e7 :        83a5c8fdffff00
             mov  ebx , dword ptr [ ebp + 0FFFFFDCCh ]                       ;0x007ae2ee :        8b9dccfdffff

     Label7ae2f4 ::
             pushd 04h                                                       ;0x007ae2f4 :        6a04
             push  dword ptr [ esi + 65 ]                                    ;0x007ae2f6 :        ff7641
             push  dword ptr [ esi + 61 ]                                    ;0x007ae2f9 :        ff763d
             mov eax , esi                                                   ;0x007ae2fc :        8bc6
             call Fun7ae818                                                  ;0x007ae2fe :        e815050000


     ;
     ;                 -------------------------------------------------
     ;                        VFP 9.0 FIX - FIX THE IMPORT COMMAND
     ;                                  July 2025
     ;                 -------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, if we use the IMPORT command to import data from Microsoft Excel 5.0 and 97 (XLS), sometimes VFP will crash.
     ;
     ; 2025/7/9, by ccb
     ;

             cmp dword ptr vfpa_sys9189_data,00h
             je Label7ae303
             mov ecx , dword ptr [ esi + 65 ]
             cmp dword ptr [ecx] , 000180C1h
             je Label7ae302
             cmp dword ptr [ecx] , 000180C9h
             je Label7ae302
             cmp dword ptr [ecx] , 0001C0C1h
             je Label7ae302
             cmp dword ptr [ecx] , 0001C0C9h
             je Label7ae302
             jmp Label7ae303
     Label7ae302 ::
             mov dword ptr [ecx] , 00000000h


     Label7ae303 ::
             test eax , eax                                                  ;0x007ae303 :        85c0
             jne Label7ae311                                                 ;0x007ae305 :        750a
             mov ecx , 0295h                                                 ;0x007ae307 :        b995020000
             call Fun544742                                                  ;0x007ae30c :        e83164d9ff

     Label7ae311 ::
             mov  eax , dword ptr [ esi + 65 ]                               ;0x007ae311 :        8b4641
             xor ecx , ecx                                                   ;0x007ae314 :        33c9
             mov  cl , byte ptr [eax]                                        ;0x007ae316 :        8a08
             and ecx , 0FFh                                                  ;0x007ae318 :        81e1ff000000
             mov edi , ecx                                                   ;0x007ae31e :        8bf9
             mov  dword ptr [ ebp + 0FFFFFD88h ] , edi                       ;0x007ae320 :        89bd88fdffff
             xor ecx , ecx                                                   ;0x007ae326 :        33c9
             mov  cx , word ptr [ eax + 2 ]                                  ;0x007ae328 :        668b4802
             mov  dword ptr [ ebp + 0FFFFFD8Ch ] , ecx                       ;0x007ae32c :        898d8cfdffff
             cmp di , 0Ah                                                    ;0x007ae332 :        6683ff0a
             jne Label7ae37c                                                 ;0x007ae336 :        7544
             cmp  dword ptr [ ebp + 0FFFFFDC8h ] , 00h                       ;0x007ae338 :        83bdc8fdffff00
             jne Label7ae365                                                 ;0x007ae33f :        7524
             mov  edi , dword ptr [ ebp + 12 ]                               ;0x007ae341 :        8b7d0c
             add edi , 0216h                                                 ;0x007ae344 :        81c716020000
             cmp  byte ptr [edi] , 00h                                       ;0x007ae34a :        803f00
             jne Label7ae359                                                 ;0x007ae34d :        750a
             mov ecx , 0306h                                                 ;0x007ae34f :        b906030000
             call Fun544742                                                  ;0x007ae354 :        e8e963d9ff

     Label7ae359 ::
             pushd 0307h                                                     ;0x007ae359 :        6807030000
             mov eax , edi                                                   ;0x007ae35e :        8bc7
             call Fun73f199                                                  ;0x007ae360 :        e8340ef9ff

     Label7ae365 ::
             mov  edx , dword ptr [ esi + 016Ah ]                            ;0x007ae365 :        8b966a010000
             mov  ecx , dword ptr [ esi + 61 ]                               ;0x007ae36b :        8b4e3d
             mov eax , esi                                                   ;0x007ae36e :        8bc6
             call Fun7ae851                                                  ;0x007ae370 :        e8dc040000
             xor ebx , ebx                                                   ;0x007ae375 :        33db
             jmp Label7ae7bd                                                 ;0x007ae377 :        e941040000

     Label7ae37c ::
             test cx , cx                                                    ;0x007ae37c :        6685c9
             je Label7ae39e                                                  ;0x007ae37f :        741d


     ;
     ;                 -------------------------------------------------
     ;                        VFP 9.0 FIX - FIX THE IMPORT COMMAND
     ;                                  July 2025
     ;                 -------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, if we use the IMPORT command to import data from Microsoft Excel 5.0 and 97 (XLS), sometimes VFP will crash.
     ;
     ; 2025/7/9, by ccb
     ;

             cmp dword ptr vfpa_sys9189_data,00h
             je Label7ae381
             movzx ecx , cx
             cmp ecx , 2710h
             jbe Label7ae384
             mov ecx , 2710h
             jmp Label7ae384


     Label7ae381 ::
             movsx ecx , cx                                                  ;0x007ae381 :        0fbfc9

     Label7ae384 ::
             push ecx                                                        ;0x007ae384 :        51
             push eax                                                        ;0x007ae385 :        50
             push  dword ptr [ esi + 61 ]                                    ;0x007ae386 :        ff763d
             mov eax , esi                                                   ;0x007ae389 :        8bc6
             call Fun7ae818                                                  ;0x007ae38b :        e888040000
             test eax , eax                                                  ;0x007ae390 :        85c0
             jne Label7ae39e                                                 ;0x007ae392 :        750a
             mov ecx , 0295h                                                 ;0x007ae394 :        b995020000
             call Fun544742                                                  ;0x007ae399 :        e8a463d9ff

     Label7ae39e ::
             cmp di , 0FCh                                                   ;0x007ae39e :        6681fffc00
             je Label7ae47f                                                  ;0x007ae3a3 :        0f84d6000000
             cmp di , 03Ch                                                   ;0x007ae3a9 :        6683ff3c
             jne Label7ae3bc                                                 ;0x007ae3ad :        750d
             cmp  dword ptr [ ebp + 0FFFFFDACh ] , 00h                       ;0x007ae3af :        83bdacfdffff00
             jne Label7ae47f                                                 ;0x007ae3b6 :        0f85c3000000

     Label7ae3bc ::
             and  dword ptr [ ebp + 0FFFFFDACh ] , 00h                       ;0x007ae3bc :        83a5acfdffff00

     Label7ae3c3 ::
             mov  eax , dword ptr [ ebp + 0FFFFFD88h ]                       ;0x007ae3c3 :        8b8588fdffff
             cmp ax , 085h                                                   ;0x007ae3c9 :        663d8500
             jne Label7ae7ab                                                 ;0x007ae3cd :        0f85d8030000
             cmp  dword ptr [ ebp + 0FFFFFDC8h ] , 00h                       ;0x007ae3d3 :        83bdc8fdffff00
             jne Label7ae2f4                                                 ;0x007ae3da :        0f8514ffffff
             mov  edi , dword ptr [ esi + 65 ]                               ;0x007ae3e0 :        8b7e41
             cmp  word ptr [esi] , 0600h                                     ;0x007ae3e3 :        66813e0006
             jne Label7ae769                                                 ;0x007ae3e8 :        0f857b030000
             cmp  byte ptr [ edi + 7 ] , 00h                                 ;0x007ae3ee :        807f0700
             je Label7ae764                                                  ;0x007ae3f2 :        0f846c030000
             lea ecx ,  dword ptr [ edi + 8 ]                                ;0x007ae3f8 :        8d4f08
             xor eax , eax                                                   ;0x007ae3fb :        33c0
             push eax                                                        ;0x007ae3fd :        50
             push eax                                                        ;0x007ae3fe :        50
             push eax                                                        ;0x007ae3ff :        50
             lea edx ,  dword ptr [ ebp + 0FFFFFEE0h ]                       ;0x007ae400 :        8d95e0feffff
             push edx                                                        ;0x007ae406 :        52
             movzx edx ,byte ptr [ edi + 6 ]                                 ;0x007ae407 :        0fb65706
             push edx                                                        ;0x007ae40b :        52
             push ecx                                                        ;0x007ae40c :        51
             push eax                                                        ;0x007ae40d :        50
             push eax                                                        ;0x007ae40e :        50
             call  WideCharToMultiByte                         ;0x007ae40f :        ff1598719100
             mov  dword ptr [ ebp + 0FFFFFDC0h ] , eax                       ;0x007ae415 :        8985c0fdffff
             test eax , eax                                                  ;0x007ae41b :        85c0
             je Label7ae454                                                  ;0x007ae41d :        7435
             mov eax , 0FEh                                                  ;0x007ae41f :        b8fe000000
             cmp  dword ptr [ ebp + 0FFFFFDC0h ] , eax                       ;0x007ae424 :        3985c0fdffff
             jl Label7ae432                                                  ;0x007ae42a :        7c06
             mov  dword ptr [ ebp + 0FFFFFDC0h ] , eax                       ;0x007ae42c :        8985c0fdffff

     Label7ae432 ::
             xor ecx , ecx                                                   ;0x007ae432 :        33c9
             push ecx                                                        ;0x007ae434 :        51
             push ecx                                                        ;0x007ae435 :        51
             push  dword ptr [ ebp + 0FFFFFDC0h ]                            ;0x007ae436 :        ffb5c0fdffff
             lea eax ,  dword ptr [ ebp + 0FFFFFEE0h ]                       ;0x007ae43c :        8d85e0feffff
             push eax                                                        ;0x007ae442 :        50
             movzx eax ,byte ptr [ edi + 6 ]                                 ;0x007ae443 :        0fb64706
             push eax                                                        ;0x007ae447 :        50
             lea eax ,  dword ptr [ edi + 8 ]                                ;0x007ae448 :        8d4708
             push eax                                                        ;0x007ae44b :        50
             push ecx                                                        ;0x007ae44c :        51
             push ecx                                                        ;0x007ae44d :        51
             call  WideCharToMultiByte                         ;0x007ae44e :        ff1598719100

     Label7ae454 ::
             mov  eax , dword ptr [ ebp + 0FFFFFDC0h ]                       ;0x007ae454 :        8b85c0fdffff
             mov  byte ptr [ ebp + eax + 0FFFFFEE0h ] , 00h                  ;0x007ae45a :        c68405e0feffff00
             mov  eax , dword ptr [ ebp + 12 ]                               ;0x007ae462 :        8b450c
             add eax , 0216h                                                 ;0x007ae465 :        0516020000
             cmp  byte ptr [eax] , 00h                                       ;0x007ae46a :        803800
             je Label7ae794                                                  ;0x007ae46d :        0f8421030000
             push eax                                                        ;0x007ae473 :        50
             lea eax ,  dword ptr [ ebp + 0FFFFFEE0h ]                       ;0x007ae474 :        8d85e0feffff
             jmp Label7ae783                                                 ;0x007ae47a :        e904030000

     Label7ae47f ::
             mov  dword ptr [ ebp + 0FFFFFDACh ] , 01h                       ;0x007ae47f :        c785acfdffff01000000
             cmp di , 0FCh                                                   ;0x007ae489 :        6681fffc00
             jne Label7ae4bf                                                 ;0x007ae48e :        752f
             mov  edi , dword ptr [ esi + 65 ]                               ;0x007ae490 :        8b7e41
             mov  eax , dword ptr [ edi + 4 ]                                ;0x007ae493 :        8b4704
             mov  dword ptr [ esi + 57 ] , eax                               ;0x007ae496 :        894639
             pushd 0107Dh                                                    ;0x007ae499 :        687d100000
             mov  eax , dword ptr [ edi + 4 ]                                ;0x007ae49e :        8b4704
             shl eax , 02h                                                   ;0x007ae4a1 :        c1e002
             call Fun42bf2a                                                  ;0x007ae4a4 :        e881dac7ff
             mov  dword ptr [ esi + 81 ] , eax                               ;0x007ae4a9 :        894651
             mov  eax , dword ptr [eax]                                      ;0x007ae4ac :        8b00
             mov  dword ptr [ ebp + 0FFFFFD84h ] , eax                       ;0x007ae4ae :        898584fdffff
             add edi , 08h                                                   ;0x007ae4b4 :        83c708
             mov  dword ptr [ ebp + 0FFFFFDD4h ] , edi                       ;0x007ae4b7 :        89bdd4fdffff
             jmp Label7ae4c8                                                 ;0x007ae4bd :        eb09

     Label7ae4bf ::
             mov  eax , dword ptr [ esi + 65 ]                               ;0x007ae4bf :        8b4641
             mov  dword ptr [ ebp + 0FFFFFDD4h ] , eax                       ;0x007ae4c2 :        8985d4fdffff

     Label7ae4c8 ::
             movsx eax ,word ptr [ ebp + 0FFFFFD8Ch ]                        ;0x007ae4c8 :        0fbf858cfdffff
             add  eax , dword ptr [ esi + 65 ]                               ;0x007ae4cf :        034641
             mov  dword ptr [ ebp + 0FFFFFD98h ] , eax                       ;0x007ae4d2 :        898598fdffff
             mov  edi , dword ptr [ ebp + 0FFFFFDA0h ]                       ;0x007ae4d8 :        8bbda0fdffff
             test edi , edi                                                  ;0x007ae4de :        85ff
             jle Label7ae516                                                 ;0x007ae4e0 :        7e34
             inc  dword ptr [ ebp + 0FFFFFDD4h ]                             ;0x007ae4e2 :        ff85d4fdffff
             push edi                                                        ;0x007ae4e8 :        57
             mov ecx , ebx                                                   ;0x007ae4e9 :        8bcb
             sub ecx , edi                                                   ;0x007ae4eb :        2bcf
             add  ecx , dword ptr [ ebp + 0FFFFFD9Ch ]                       ;0x007ae4ed :        038d9cfdffff
             mov  edx , dword ptr [ ebp + 0FFFFFDD4h ]                       ;0x007ae4f3 :        8b95d4fdffff
             call Fun42c19b                                                  ;0x007ae4f9 :        e89ddcc7ff
             mov  eax , dword ptr [ ebp + 0FFFFFD9Ch ]                       ;0x007ae4fe :        8b859cfdffff
             mov  byte ptr [ eax + ebx ] , 00h                               ;0x007ae504 :        c6041800
             mov  eax , dword ptr [ ebp + 0FFFFFDBCh ]                       ;0x007ae508 :        8b85bcfdffff
             add eax , edi                                                   ;0x007ae50e :        03c7
             add  dword ptr [ ebp + 0FFFFFDD4h ] , eax                       ;0x007ae510 :        0185d4fdffff

     Label7ae516 ::
             mov  eax , dword ptr [ ebp + 0FFFFFDB8h ]                       ;0x007ae516 :        8b85b8fdffff
             test eax , eax                                                  ;0x007ae51c :        85c0
             jle Label7ae537                                                 ;0x007ae51e :        7e17
             mov  ecx , dword ptr [ ebp + 0FFFFFDD4h ]                       ;0x007ae520 :        8b8dd4fdffff
             lea eax ,  dword ptr [ eax + ecx + 1 ]                          ;0x007ae526 :        8d440801
             mov  dword ptr [ ebp + 0FFFFFDD4h ] , eax                       ;0x007ae52a :        8985d4fdffff
             and  dword ptr [ ebp + 0FFFFFDB8h ] , 00h                       ;0x007ae530 :        83a5b8fdffff00

     Label7ae537 ::
             mov  eax , dword ptr [ ebp + 0FFFFFDB4h ]                       ;0x007ae537 :        8b85b4fdffff
             cmp  eax , dword ptr [ esi + 57 ]                               ;0x007ae53d :        3b4639
             jnb Label7ae3c3                                                 ;0x007ae540 :        0f837dfeffff
             mov eax ,  dword ptr [ Data937220 ]                             ;0x007ae546 :        a120729300
             mov  dword ptr [ ebp + 0FFFFFD74h ] , eax                       ;0x007ae54b :        898574fdffff
             xor edi , edi                                                   ;0x007ae551 :        33ff
             mov  dword ptr [ ebp - 4 ] , edi                                ;0x007ae553 :        897dfc
             xor eax , eax                                                   ;0x007ae556 :        33c0
             mov  dword ptr [ ebp + 0FFFFFDC4h ] , eax                       ;0x007ae558 :        8985c4fdffff
             mov  ecx , dword ptr [ ebp + 0FFFFFDD4h ]                       ;0x007ae55e :        8b8dd4fdffff
             movzx ebx ,word ptr [ecx]                                       ;0x007ae564 :        0fb719
             mov  dword ptr [ ebp + 0FFFFFDCCh ] , ebx                       ;0x007ae567 :        899dccfdffff
             cmp ebx , 0FEh                                                  ;0x007ae56d :        81fbfe000000
             jbe Label7ae58e                                                 ;0x007ae573 :        7619
             lea edi ,  dword ptr [ ebx + 0FFFFFF02h ]                       ;0x007ae575 :        8dbb02ffffff
             mov  dword ptr [ ebp + 0FFFFFDBCh ] , edi                       ;0x007ae57b :        89bdbcfdffff
             mov ebx , 0FEh                                                  ;0x007ae581 :        bbfe000000
             mov  dword ptr [ ebp + 0FFFFFDCCh ] , ebx                       ;0x007ae586 :        899dccfdffff
             jmp Label7ae594                                                 ;0x007ae58c :        eb06

     Label7ae58e ::
             mov  dword ptr [ ebp + 0FFFFFDBCh ] , edi                       ;0x007ae58e :        89bdbcfdffff

     Label7ae594 ::
             add   dword ptr [ ebp + 0FFFFFDD4h ] , 02h                      ;0x007ae594 :        8385d4fdffff02
             mov  ecx , dword ptr [ ebp + 0FFFFFDD4h ]                       ;0x007ae59b :        8b8dd4fdffff
             mov  cl , byte ptr [ecx]                                        ;0x007ae5a1 :        8a09
             mov  byte ptr [ ebp + 0FFFFFDD3h ] , cl                         ;0x007ae5a3 :        888dd3fdffff
             inc  dword ptr [ ebp + 0FFFFFDD4h ]                             ;0x007ae5a9 :        ff85d4fdffff
             test  byte ptr cl , 01h                                         ;0x007ae5af :        f6c101
             je Label7ae5c5                                                  ;0x007ae5b2 :        7411
             add ebx , ebx                                                   ;0x007ae5b4 :        03db
             mov  dword ptr [ ebp + 0FFFFFDCCh ] , ebx                       ;0x007ae5b6 :        899dccfdffff
             lea edx ,  dword ptr [ edi + edi ]                              ;0x007ae5bc :        8d143f
             mov  dword ptr [ ebp + 0FFFFFDBCh ] , edx                       ;0x007ae5bf :        8995bcfdffff

     Label7ae5c5 ::
             test  byte ptr cl , 08h                                         ;0x007ae5c5 :        f6c108
             je Label7ae5e3                                                  ;0x007ae5c8 :        7419
             mov  eax , dword ptr [ ebp + 0FFFFFDD4h ]                       ;0x007ae5ca :        8b85d4fdffff
             movzx eax ,word ptr [eax]                                       ;0x007ae5d0 :        0fb700
             shl eax , 02h                                                   ;0x007ae5d3 :        c1e002
             mov  dword ptr [ ebp + 0FFFFFDC4h ] , eax                       ;0x007ae5d6 :        8985c4fdffff
             add   dword ptr [ ebp + 0FFFFFDD4h ] , 02h                      ;0x007ae5dc :        8385d4fdffff02

     Label7ae5e3 ::
             test  byte ptr cl , 04h                                         ;0x007ae5e3 :        f6c104
             je Label7ae5fd                                                  ;0x007ae5e6 :        7415
             mov  ecx , dword ptr [ ebp + 0FFFFFDD4h ]                       ;0x007ae5e8 :        8b8dd4fdffff
             add  eax , dword ptr [ecx]                                      ;0x007ae5ee :        0301
             mov  dword ptr [ ebp + 0FFFFFDC4h ] , eax                       ;0x007ae5f0 :        8985c4fdffff
             add   dword ptr [ ebp + 0FFFFFDD4h ] , 04h                      ;0x007ae5f6 :        8385d4fdffff04

     Label7ae5fd ::
             or  dword ptr [ ebp - 4 ] , 0FFFFFFFFh                          ;0x007ae5fd :        834dfcff
             jmp Label7ae614                                                 ;0x007ae601 :        eb11


4. APPLIES TO:

     VFP 6.0.8167.0
     VFP 6.0.8961.0 (SP5)

     VFP 7.0.0.9262
     VFP 7.0.0.9465 (SP1)

     VFP 8.0.0.2521
     VFP 8.0.0.3117 (SP1)

     VFP 9.0.0.2412
     VFP 9.0.0.3504 (SP1)
     VFP 9.0.0.4611 (SP2)
     VFP 9.0.0.5015 (SP2)
     VFP 9.0.0.5411 (SP2)
     VFP 9.0.0.5721 (SP2)
     VFP 9.0.0.5815 (SP2)
     VFP 9.0.0.6303 (SP2)
     VFP 9.0.0.6602 (SP2)
     VFP 9.0.0.7423 (SP2)

     The bug has been fixed in VFP Advanced.


5. REFERENCE WEBSITES:

     1, baiyujia.com:
     http://www.baiyujia.com
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix384.asp


6. OTHER:

     For reference only, there is no guarantees.

     Any questions or suggestions, please send me an email at ccb2000@163.com.