---------------------------------------------------------------
                      [ENHANCED] VFP 9.0 FIX - DIR OR DISPLAY FILES COMMAND
                                 January 2024
                 ---------------------------------------------------------------
                                     CCB



1. BUG:

     In vfp9 (and vfp6, vfp7, vfp8), the DIR or DISPLAY FILES command can only display the file size < 2 GB,
     now the DIR or DISPLAY FILES command can display the file size > 2 GB.

     There is no the bug for the DIR or DISPLAY FILES command displaying the total number of bytes remaining on the disk.


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Fun710e4f :: ; proc near
             push ebp                                                        ;0x00710e4f :        55
             lea ebp ,  dword ptr [ esp + 0FFFFFB30h ]                       ;0x00710e50 :        8dac2430fbffff


     ;
     ;                 ----------------------------------------------------
     ;                      VFP 9.0 FIX - DIR OR DISPLAY FILES COMMAND
     ;                                November 2019
     ;                 ----------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, the DIR or DISPLAY FILES command can only display the file size < 2 GB,
     ; now the DIR or DISPLAY FILES command can display the file size > 2 GB.
     ;
     ; 2019/11/23, by ccb
     ;

     ;         sub esp , 056Ch                                                 ;0x00710e57 :        81ec6c050000

             sub esp , 057Ch                                                 ;0x00710e57 :        81ec6c050000
             xor eax , eax
             mov  dword ptr [ ebp - 0ACh ][00h] , eax ;; [ ebp + 80 ], total filesize.
             mov  dword ptr [ ebp - 0ACh ][04h] , eax
             mov  dword ptr [ ebp - 0ACh ][08h] , eax ;; filesize.
             mov  dword ptr [ ebp - 0ACh ][0Ch] , eax


             mov eax ,  dword ptr [ Data937090 ]                             ;0x00710e5d :        a190709300
             and  dword ptr [ ebp + 124 ] , 00h                              ;0x00710e62 :        83657c00
             push ebx                                                        ;0x00710e66 :        53
             push esi                                                        ;0x00710e67 :        56
             mov  dword ptr [ ebp + 04CCh ] , eax                            ;0x00710e68 :        8985cc040000
             push edi                                                        ;0x00710e6e :        57
             xor eax , eax                                                   ;0x00710e6f :        33c0
             mov ecx , 090h                                                  ;0x00710e71 :        b990000000
             lea edi ,  dword ptr [ ebp + 080h ]                             ;0x00710e76 :        8dbd80000000
             rep stosd                                                       ;0x00710e7c :        f3ab
             mov eax ,  dword ptr [ Data9393ac ]                             ;0x00710e7e :        a1ac939300
             cmp  byte ptr [eax] , 018h                                      ;0x00710e83 :        803818
             jne Label710e8e                                                 ;0x00710e86 :        7506
             inc  dword ptr [ Data9393ac ]                                   ;0x00710e88 :        ff05ac939300

     Label710e8e ::
             mov  edx , dword ptr [ ebp + 04DCh ]                            ;0x00710e8e :        8b95dc040000
             pushd 04h                                                       ;0x00710e94 :        6a04
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x00710e96 :        8d8dc8030000
             call Fun42c19b                                                  ;0x00710e9c :        e8fab2d1ff
             mov eax ,  dword ptr [ Data9393ac ]                             ;0x00710ea1 :        a1ac939300
             cmp  byte ptr [eax] , 0FCh                                      ;0x00710ea6 :        8038fc
             je Label710ed7                                                  ;0x00710ea9 :        742c
             lea esi ,  dword ptr [ ebp - 72 ]                               ;0x00710eab :        8d75b8
             call Fun42107e                                                  ;0x00710eae :        e8cb01d1ff
             cmp al , 02h                                                    ;0x00710eb3 :        3c02
             je Label710ed7                                                  ;0x00710eb5 :        7420
             cmp al , 0Ch                                                    ;0x00710eb7 :        3c0c
             je Label710ed7                                                  ;0x00710eb9 :        741c
             pushd offset Data91fb38                                                  ;0x00710ebb :        6838fb9100
             mov ebx , 0100h                                                 ;0x00710ec0 :        bb00010000
             lea edi ,  dword ptr [ ebp + 03C8h ]                            ;0x00710ec5 :        8dbdc8030000
             call Fun42e055                                                  ;0x00710ecb :        e885d1d1ff
             xor edi , edi                                                   ;0x00710ed0 :        33ff
             jmp Label710fb7                                                 ;0x00710ed2 :        e9e0000000

     Label710ed7 ::
             mov ebx , 0100h                                                 ;0x00710ed7 :        bb00010000
             mov edx , ebx                                                   ;0x00710edc :        8bd3
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x00710ede :        8d8dc8030000
             call Fun41b81c                                                  ;0x00710ee4 :        e833a9d0ff
             mov edi , eax                                                   ;0x00710ee9 :        8bf8
             mov eax ,  dword ptr [ Data9393ac ]                             ;0x00710eeb :        a1ac939300
             cmp  byte ptr [eax] , 0FCh                                      ;0x00710ef0 :        8038fc
             jne Label710f39                                                 ;0x00710ef3 :        7544
             pushd 00h                                                       ;0x00710ef5 :        6a00
             call Fun420bce                                                  ;0x00710ef7 :        e8d2fcd0ff
             mov esi , eax                                                   ;0x00710efc :        8bf0
             cmp  byte ptr [esi] , 048h                                      ;0x00710efe :        803e48
             je Label710f0d                                                  ;0x00710f01 :        740a
             mov ecx , 0F0h                                                  ;0x00710f03 :        b9f0000000
             call Fun544742                                                  ;0x00710f08 :        e83538e3ff

     Label710f0d ::
             mov eax , ebx                                                   ;0x00710f0d :        8bc3
             sub eax , edi                                                   ;0x00710f0f :        2bc7
             cmp  dword ptr [ esi + 8 ] , eax                                ;0x00710f11 :        394608
             jb Label710f20                                                  ;0x00710f14 :        720a
             mov ecx , 0387h                                                 ;0x00710f16 :        b987030000
             call Fun544742                                                  ;0x00710f1b :        e82238e3ff

     Label710f20 ::
             mov  eax , dword ptr [ esi + 32 ]                               ;0x00710f20 :        8b4620
             push  dword ptr [ esi + 8 ]                                     ;0x00710f23 :        ff7608
             mov  edx , dword ptr [eax]                                      ;0x00710f26 :        8b10
             lea ecx ,  dword ptr [ ebp + edi + 03C8h ]                      ;0x00710f28 :        8d8c3dc8030000
             call Fun42c19b                                                  ;0x00710f2f :        e867b2d1ff
             mov  eax , dword ptr [ esi + 8 ]                                ;0x00710f34 :        8b4608
             jmp Label710f51                                                 ;0x00710f37 :        eb18

     Label710f39 ::
             movzx eax ,word ptr [ ebp - 70 ]                                ;0x00710f39 :        0fb745ba
             mov  edx , dword ptr [ ebp - 36 ]                               ;0x00710f3d :        8b55dc
             push eax                                                        ;0x00710f40 :        50
             lea ecx ,  dword ptr [ ebp + edi + 03C8h ]                      ;0x00710f41 :        8d8c3dc8030000
             call Fun42c19b                                                  ;0x00710f48 :        e84eb2d1ff
             movzx eax ,word ptr [ ebp - 70 ]                                ;0x00710f4d :        0fb745ba

     Label710f51 ::
             add eax , edi                                                   ;0x00710f51 :        03c7
             mov  byte ptr [ ebp + eax + 03C8h ] , 00h                       ;0x00710f53 :        c68405c803000000
             lea eax ,  dword ptr [ ebp + 03C8h ]                            ;0x00710f5b :        8d85c8030000
             pushd 05Ch                                                      ;0x00710f61 :        6a5c
             push eax                                                        ;0x00710f63 :        50
             call  dword ptr [ Data9370d0 ]                                  ;0x00710f64 :        ff15d0709300
             mov esi , eax                                                   ;0x00710f6a :        8bf0
             xor edi , edi                                                   ;0x00710f6c :        33ff
             cmp esi , edi                                                   ;0x00710f6e :        3bf7
             pop ecx                                                         ;0x00710f70 :        59
             pop ecx                                                         ;0x00710f71 :        59
             jne Label710f7b                                                 ;0x00710f72 :        7507
             lea esi ,  dword ptr [ ebp + 03C8h ]                            ;0x00710f74 :        8db5c8030000
             dec esi                                                         ;0x00710f7a :        4e

     Label710f7b ::
             cmp  byte ptr [ esi + 1 ] , 02Eh                                ;0x00710f7b :        807e012e
             jne Label710fb7                                                 ;0x00710f7f :        7536
             mov edx , ebx                                                   ;0x00710f81 :        8bd3
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x00710f83 :        8d8dc8030000
             call Fun41b81c                                                  ;0x00710f89 :        e88ea8d0ff
             inc eax                                                         ;0x00710f8e :        40
             cmp eax , ebx                                                   ;0x00710f8f :        3bc3
             jnb Label710fb7                                                 ;0x00710f91 :        7324
             mov edx , ebx                                                   ;0x00710f93 :        8bd3
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x00710f95 :        8d8dc8030000
             call Fun41b81c                                                  ;0x00710f9b :        e87ca8d0ff
             lea eax ,  dword ptr [ ebp + eax + 03C8h ]                      ;0x00710fa0 :        8d8405c8030000
             jmp Label710faf                                                 ;0x00710fa7 :        eb06

     Label710fa9 ::
             mov  cl , byte ptr [eax]                                        ;0x00710fa9 :        8a08
             mov  byte ptr [ eax + 1 ] , cl                                  ;0x00710fab :        884801
             dec eax                                                         ;0x00710fae :        48

     Label710faf ::
             cmp eax , esi                                                   ;0x00710faf :        3bc6
             ja Label710fa9                                                  ;0x00710fb1 :        77f6
             mov  byte ptr [ eax + 1 ] , 02Ah                                ;0x00710fb3 :        c640012a

     Label710fb7 ::
             mov edx , ebx                                                   ;0x00710fb7 :        8bd3
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x00710fb9 :        8d8dc8030000
             call Fun41b81c                                                  ;0x00710fbf :        e858a8d0ff
             push eax                                                        ;0x00710fc4 :        50
             lea eax ,  dword ptr [ ebp + 120 ]                              ;0x00710fc5 :        8d4578
             push eax                                                        ;0x00710fc8 :        50
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x00710fc9 :        8d8dc8030000
             call Fun434a5b                                                  ;0x00710fcf :        e8873ad2ff
             xor esi , esi                                                   ;0x00710fd4 :        33f6
             inc esi                                                         ;0x00710fd6 :        46
             push esi                                                        ;0x00710fd7 :        56
             lea ecx ,  dword ptr [ ebp + 120 ]                              ;0x00710fd8 :        8d4d78
             call Fun4b57a9                                                  ;0x00710fdb :        e8c947daff
             test eax , eax                                                  ;0x00710fe0 :        85c0
             je Label71100d                                                  ;0x00710fe2 :        7429
             pushd offset Data920a98                                                  ;0x00710fe4 :        68980a9200
             lea eax ,  dword ptr [ ebp + 120 ]                              ;0x00710fe9 :        8d4578
             push eax                                                        ;0x00710fec :        50
             lea eax ,  dword ptr [ ebp + 02C0h ]                            ;0x00710fed :        8d85c0020000
             push eax                                                        ;0x00710ff3 :        50
             call Fun42c5c5                                                  ;0x00710ff4 :        e8ccb5d1ff
             pushd offset Data919ea0                                                  ;0x00710ff9 :        68a09e9100
             lea eax ,  dword ptr [ ebp + 02C0h ]                            ;0x00710ffe :        8d85c0020000
             push eax                                                        ;0x00711004 :        50
             push eax                                                        ;0x00711005 :        50
             call Fun42d3ac                                                  ;0x00711006 :        e8a1c3d1ff
             jmp Label711079                                                 ;0x0071100b :        eb6c

     Label71100d ::
             mov edx , ebx                                                   ;0x0071100d :        8bd3
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x0071100f :        8d8dc8030000
             call Fun41b81c                                                  ;0x00711015 :        e802a8d0ff
             cmp eax , 02h                                                   ;0x0071101a :        83f802
             jl Label711036                                                  ;0x0071101d :        7c17
             cmp  byte ptr [ ebp + eax + 03C7h ] , 02Eh                      ;0x0071101f :        80bc05c70300002e
             jne Label711036                                                 ;0x00711027 :        750d
             cmp  byte ptr [ ebp + eax + 03C6h ] , 02Ah                      ;0x00711029 :        80bc05c60300002a
             mov  dword ptr [ ebp + 124 ] , esi                              ;0x00711031 :        89757c
             je Label711039                                                  ;0x00711034 :        7403

     Label711036 ::
             mov  dword ptr [ ebp + 124 ] , edi                              ;0x00711036 :        897d7c

     Label711039 ::
             push edi                                                        ;0x00711039 :        57
             push edi                                                        ;0x0071103a :        57
             pushd offset Data919ea0                                                  ;0x0071103b :        68a09e9100
             push eax                                                        ;0x00711040 :        50
             lea edx ,  dword ptr [ ebp + 03C8h ]                            ;0x00711041 :        8d95c8030000
             lea ecx ,  dword ptr [ ebp + 02C0h ]                            ;0x00711047 :        8d8dc0020000
             call Fun42cc34                                                  ;0x0071104d :        e8e2bbd1ff
             lea eax ,  dword ptr [ ebp + 02C0h ]                            ;0x00711052 :        8d85c0020000
             push eax                                                        ;0x00711058 :        50
             lea eax ,  dword ptr [ ebp + 120 ]                              ;0x00711059 :        8d4578
             push eax                                                        ;0x0071105c :        50
             call Fun434bcf                                                  ;0x0071105d :        e86d3bd2ff
             push esi                                                        ;0x00711062 :        56
             lea ecx ,  dword ptr [ ebp + 120 ]                              ;0x00711063 :        8d4d78
             call Fun4b57a9                                                  ;0x00711066 :        e83e47daff
             test eax , eax                                                  ;0x0071106b :        85c0
             jne Label711079                                                 ;0x0071106d :        750a
             mov ecx , 0127h                                                 ;0x0071106f :        b927010000
             call Fun544742                                                  ;0x00711074 :        e8c936e3ff

     Label711079 ::
             push edi                                                        ;0x00711079 :        57
             push ebx                                                        ;0x0071107a :        53
             lea edx ,  dword ptr [ ebp + 03C8h ]                            ;0x0071107b :        8d95c8030000
             lea ecx ,  dword ptr [ ebp + 02C0h ]                            ;0x00711081 :        8d8dc0020000
             call Fun43d389                                                  ;0x00711087 :        e8fdc2d2ff
             cmp  dword ptr [ ebp + 124 ] , edi                              ;0x0071108c :        397d7c
             je Label7110a1                                                  ;0x0071108f :        7410
             pushd offset Data91ec18                                                  ;0x00711091 :        6818ec9100
             lea edi ,  dword ptr [ ebp + 03C8h ]                            ;0x00711096 :        8dbdc8030000
             call Fun42e055                                                  ;0x0071109c :        e8b4cfd1ff

     Label7110a1 ::
             mov esi , 0105h                                                 ;0x007110a1 :        be05010000
             lea ecx ,  dword ptr [ ebp + 03C8h ]                            ;0x007110a6 :        8d8dc8030000
             mov edx , esi                                                   ;0x007110ac :        8bd6
             lea eax ,  dword ptr [ ebp + 080h ]                             ;0x007110ae :        8d8580000000
             call Fun42c33e                                                  ;0x007110b4 :        e885b2d1ff
             xor eax , eax                                                   ;0x007110b9 :        33c0
             pushd 01Eh                                                      ;0x007110bb :        6a1e
             pop ecx                                                         ;0x007110bd :        59
             lea edi ,  dword ptr [ ebp - 16 ]                               ;0x007110be :        8d7df0
             rep stosd                                                       ;0x007110c1 :        f3ab
             mov  edi , dword ptr [ Data937fb4 ]                             ;0x007110c3 :        8b3db47f9300
             lea eax ,  dword ptr [ ebp + 080h ]                             ;0x007110c9 :        8d8580000000
             mov  dword ptr [ ebp + 64 ] , eax                               ;0x007110cf :        894540
             mov  ax , word ptr [ ebp + 04D8h ]                              ;0x007110d2 :        668b85d8040000
             mov  word ptr [ ebp + 102 ] , ax                                ;0x007110d9 :        66894566
             lea eax ,  dword ptr [ ebp + 120 ]                              ;0x007110dd :        8d4578
             mov  dword ptr [ ebp + 76 ] , eax                               ;0x007110e0 :        89454c
             mov eax , edi                                                   ;0x007110e3 :        8bc7
             mov  dword ptr [ ebp - 16 ] , offset Label7109a9                          ;0x007110e5 :        c745f0a9097100
             mov  dword ptr [ ebp + 8 ] , 0240h                              ;0x007110ec :        c7450840020000
             mov  dword ptr [ ebp + 12 ] , 03E8h                             ;0x007110f3 :        c7450ce8030000
             mov  dword ptr [ ebp + 0 ] , 0128h                              ;0x007110fa :        c7450028010000
             mov  dword ptr [ ebp + 4 ] , esi                                ;0x00711101 :        897504
             call Fun42f5d1                                                  ;0x00711104 :        e8c8e4d1ff
             mov  eax , dword ptr [eax]                                      ;0x00711109 :        8b00
             mov  ax , word ptr [ eax + 0162h ]                              ;0x0071110b :        668b8062010000
             movsx ecx , ax                                                  ;0x00711112 :        0fbfc8
             mov  word ptr [ ebp + 100 ] , ax                                ;0x00711115 :        66894564
             mov  edi , dword ptr [edi]                                      ;0x00711119 :        8b3f
             mov eax , ecx                                                   ;0x0071111b :        8bc1
             cdq                                                             ;0x0071111d :        99
             sub eax , edx                                                   ;0x0071111e :        2bc2
             sar eax , 1                                                     ;0x00711120 :        d1f8
             add  eax , dword ptr [ edi + 094h ]                             ;0x00711122 :        038794000000
             mov  edi , SetErrorMode                           ;0x00711128 :        8b3d04719100
             cdq                                                             ;0x0071112e :        99
             idiv ecx                                                        ;0x0071112f :        f7f9
             pushd 08001h                                                    ;0x00711131 :        6801800000
             mov  word ptr [ ebp + 100 ] , ax                                ;0x00711136 :        66894564
             call edi                                                        ;0x0071113a :        ffd7
             mov esi , eax                                                   ;0x0071113c :        8bf0
             xor ebx , ebx                                                   ;0x0071113e :        33db
             push ebx                                                        ;0x00711140 :        53
             lea eax ,  dword ptr [ ebp + 080h ]                             ;0x00711141 :        8d8580000000
             push eax                                                        ;0x00711147 :        50
             call Fun42c953                                                  ;0x00711148 :        e806b8d1ff
             push esi                                                        ;0x0071114d :        56
             mov  dword ptr [ ebp + 68 ] , eax                               ;0x0071114e :        894544
             call edi                                                        ;0x00711151 :        ffd7
             pushd 02h                                                       ;0x00711153 :        6a02
             pop eax                                                         ;0x00711155 :        58
             cmp  dword ptr [ ebp + 68 ] , eax                               ;0x00711156 :        394544
             je Label711331                                                  ;0x00711159 :        0f84d2010000
             lea edx ,  dword ptr [ ebp + 112 ]                              ;0x0071115f :        8d5570
             lea eax ,  dword ptr [ ebp + 0FFFFFF68h ]                       ;0x00711162 :        8d8568ffffff
             call Fun42c27f                                                  ;0x00711168 :        e812b1d1ff
             push ebx                                                        ;0x0071116d :        53
             push eax                                                        ;0x0071116e :        50
             call Fun42c2be                                                  ;0x0071116f :        e84ab1d1ff
             cmp eax , ebx                                                   ;0x00711174 :        3bc3
             pop ecx                                                         ;0x00711176 :        59
             pop ecx                                                         ;0x00711177 :        59
             mov  dword ptr [ ebp + 124 ] , eax                              ;0x00711178 :        89457c
             jne Label711320                                                 ;0x0071117b :        0f859f010000
             call Fun90d7b3                                                  ;0x00711181 :        e82dc61f00
             push ebx                                                        ;0x00711186 :        53
             pushd 01h                                                       ;0x00711187 :        6a01
             lea eax ,  dword ptr [ ebp + 108 ]                              ;0x00711189 :        8d456c
             call Fun90d6c4                                                  ;0x0071118c :        e833c51f00
             mov edi , offset Data919ea0                                              ;0x00711191 :        bfa09e9100
             lea esi ,  dword ptr [ ebp + 02C0h ]                            ;0x00711196 :        8db5c0020000
             call Fun41eb95                                                  ;0x0071119c :        e8f4d9d0ff
             test eax , eax                                                  ;0x007111a1 :        85c0
             je Label71123d                                                  ;0x007111a3 :        0f8494000000
             push ebx                                                        ;0x007111a9 :        53
             call Fun762d37                                                  ;0x007111aa :        e8881b0500
             xor esi , esi                                                   ;0x007111af :        33f6
             inc esi                                                         ;0x007111b1 :        46
             push esi                                                        ;0x007111b2 :        56
             call Fun54054d                                                  ;0x007111b3 :        e895f3e2ff
             movsx eax ,word ptr [ Data945730 ]                              ;0x007111b8 :        0fbf0530579400
             push eax                                                        ;0x007111bf :        50
             push ebx                                                        ;0x007111c0 :        53
             mov ecx , 0804h                                                 ;0x007111c1 :        b904080000
             call Fun42c583                                                  ;0x007111c6 :        e8b8b3d1ff
             push eax                                                        ;0x007111cb :        50
             call Fun710911                                                  ;0x007111cc :        e840f7ffff
             movsx eax ,word ptr [ Data945730 ]                              ;0x007111d1 :        0fbf0530579400
             pushd 09h                                                       ;0x007111d8 :        6a09
             push eax                                                        ;0x007111da :        50
             mov ecx , 0877h                                                 ;0x007111db :        b977080000
             call Fun42c583                                                  ;0x007111e0 :        e89eb3d1ff
             push eax                                                        ;0x007111e5 :        50
             call Fun71095c                                                  ;0x007111e6 :        e871f7ffff
             movsx eax ,word ptr [ Data945730 ]                              ;0x007111eb :        0fbf0530579400
             pushd 0Bh                                                       ;0x007111f2 :        6a0b
             add eax , 0Bh                                                   ;0x007111f4 :        83c00b
             push eax                                                        ;0x007111f7 :        50
             mov ecx , 0878h                                                 ;0x007111f8 :        b978080000
             call Fun42c583                                                  ;0x007111fd :        e881b3d1ff
             push eax                                                        ;0x00711202 :        50
             call Fun71095c                                                  ;0x00711203 :        e854f7ffff


     ;
     ;                 ----------------------------------------------------
     ;                      VFP 9.0 FIX - DIR OR DISPLAY FILES COMMAND
     ;                                November 2019
     ;                 ----------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, the DIR or DISPLAY FILES command can only display the file size < 2 GB,
     ; now the DIR or DISPLAY FILES command can display the file size > 2 GB.
     ;
     ; 2019/11/23, by ccb
     ;

     ;         movsx eax ,word ptr [ Data945730 ]                              ;0x00711208 :        0fbf0530579400
     ;         pushd 0Ch                                                       ;0x0071120f :        6a0c
     ;         add eax , 016h                                                  ;0x00711211 :        83c016
     ;         push eax                                                        ;0x00711214 :        50
     ;         mov ecx , 0879h                                                 ;0x00711215 :        b979080000
     ;         call Fun42c583                                                  ;0x0071121a :        e864b3d1ff
     ;         push eax                                                        ;0x0071121f :        50
     ;         call Fun71095c                                                  ;0x00711220 :        e837f7ffff

             movsx eax ,word ptr [ Data945730 ]                              ;0x00711208 :        0fbf0530579400
             pushd 010h                                                       ;0x0071120f :        6a0c
             add eax , 016h                                                  ;0x00711211 :        83c016
             push eax                                                        ;0x00711214 :        50
             mov ecx , 0879h                                                 ;0x00711215 :        b979080000
             call Fun42c583                                                  ;0x0071121a :        e864b3d1ff
             push eax                                                        ;0x0071121f :        50
             call Fun71095c                                                  ;0x00711220 :        e837f7ffff


             push  dword ptr [ ebp + 04D8h ]                                 ;0x00711225 :        ffb5d8040000
             lea eax ,  dword ptr [ ebp + 108 ]                              ;0x0071122b :        8d456c
             push esi                                                        ;0x0071122e :        56
             mov  dword ptr [ ebp - 12 ] , offset Label710b3c                          ;0x0071122f :        c745f43c0b7100
             call Fun90d6c4                                                  ;0x00711236 :        e889c41f00
             jmp Label7112a5                                                 ;0x0071123b :        eb68

     Label71123d ::
             mov  esi , dword ptr [ Data937fb4 ]                             ;0x0071123d :        8b35b47f9300
             lea eax ,  dword ptr [ ebp - 32 ]                               ;0x00711243 :        8d45e0
             mov edx , esi                                                   ;0x00711246 :        8bd6
             call Fun42e782                                                  ;0x00711248 :        e835d5d1ff
             mov eax , esi                                                   ;0x0071124d :        8bc6
             call Fun42f5d1                                                  ;0x0071124f :        e87de3d1ff
             mov  eax , dword ptr [eax]                                      ;0x00711254 :        8b00
             movzx eax ,word ptr [ eax + 0160h ]                             ;0x00711256 :        0fb78060010000
             mov  dword ptr [ ebp + 116 ] , eax                              ;0x0071125d :        894574
             fild dword ptr [ ebp + 116 ]                                    ;0x00711260 :        db4574
             fmul qword ptr [ Data945728 ]                                   ;0x00711263 :        dc0d28579400
             fmul qword ptr [ Data92b6a8 ]                                   ;0x00711269 :        dc0da8b69200
             call Fun4337e6                                                  ;0x0071126f :        e87225d2ff
             mov  dword ptr [ ebp + 88 ] , eax                               ;0x00711274 :        894558
             mov  eax , dword ptr [ ebp - 24 ]                               ;0x00711277 :        8b45e8
             sub  eax , dword ptr [ ebp - 32 ]                               ;0x0071127a :        2b45e0
             mov  dword ptr [ ebp + 116 ] , eax                              ;0x0071127d :        894574
             fild dword ptr [ ebp + 116 ]                                    ;0x00711280 :        db4574
             fidiv dword ptr [ ebp + 88 ]                                    ;0x00711283 :        da7558
             call Fun4337e6                                                  ;0x00711286 :        e85b25d2ff
             xor ecx , ecx                                                   ;0x0071128b :        33c9
             inc ecx                                                         ;0x0071128d :        41
             cmp eax , ecx                                                   ;0x0071128e :        3bc1
             mov  dword ptr [ ebp + 92 ] , eax                               ;0x00711290 :        89455c
             jg Label711298                                                  ;0x00711293 :        7f03
             mov  dword ptr [ ebp + 92 ] , ecx                               ;0x00711295 :        894d5c

     Label711298 ::
             xor esi , esi                                                   ;0x00711298 :        33f6
             mov  dword ptr [ ebp + 96 ] , ebx                               ;0x0071129a :        895d60
             mov  dword ptr [ ebp - 12 ] , offset Label7109d6                          ;0x0071129d :        c745f4d6097100
             inc esi                                                         ;0x007112a4 :        46

     Label7112a5 ::


     ;
     ;                 ----------------------------------------------------
     ;                      VFP 9.0 FIX - DIR OR DISPLAY FILES COMMAND
     ;                                November 2019
     ;                 ----------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, the DIR or DISPLAY FILES command can only display the file size < 2 GB,
     ; now the DIR or DISPLAY FILES command can display the file size > 2 GB.
     ;
     ; 2019/11/23, by ccb
     ;

     ;         mov dword ptr vfpa_dir_isdir,01h


             lea ecx ,  dword ptr [ ebp - 16 ]                               ;0x007112a5 :        8d4df0
             call Fun41ea8e                                                  ;0x007112a8 :        e8e1d7d0ff


     ;
     ;                 ----------------------------------------------------
     ;                      VFP 9.0 FIX - DIR OR DISPLAY FILES COMMAND
     ;                                November 2019
     ;                 ----------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, the DIR or DISPLAY FILES command can only display the file size < 2 GB,
     ; now the DIR or DISPLAY FILES command can display the file size > 2 GB.
     ;
     ; 2019/11/23, by ccb
     ;

     Label7112ac ::
     ;         mov dword ptr vfpa_dir_isdir,00h


     Label7112ad ::
             cmp  dword ptr [ ebp + 84 ] , ebx                               ;0x007112ad :        395d54
             jne Label7112c9                                                 ;0x007112b0 :        7517
             push esi                                                        ;0x007112b2 :        56
             call Fun54054d                                                  ;0x007112b3 :        e895f2e2ff
             mov ecx , 0808h                                                 ;0x007112b8 :        b908080000
             call Fun42c583                                                  ;0x007112bd :        e8c1b2d1ff
             push eax                                                        ;0x007112c2 :        50
             call Fun539df5                                                  ;0x007112c3 :        e82d8be2ff
             pop ecx                                                         ;0x007112c8 :        59

     Label7112c9 ::
             cmp  dword ptr [ ebp + 72 ] , ebx                               ;0x007112c9 :        395d48
             jne Label711320                                                 ;0x007112cc :        7552
             push esi                                                        ;0x007112ce :        56
             call Fun54054d                                                  ;0x007112cf :        e879f2e2ff
             push esi                                                        ;0x007112d4 :        56
             call Fun54054d                                                  ;0x007112d5 :        e873f2e2ff


     ;
     ;                 ----------------------------------------------------
     ;                      VFP 9.0 FIX - DIR OR DISPLAY FILES COMMAND
     ;                                November 2019
     ;                 ----------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, the DIR or DISPLAY FILES command can only display the file size < 2 GB,
     ; now the DIR or DISPLAY FILES command can display the file size > 2 GB.
     ;
     ; 2019/11/23, by ccb
     ;

     ; [ ebp - 0ACh ][00h]: total filesize.

     ;         push  dword ptr [ ebp + 84 ]                                    ;0x007112da :        ff7554
     ;         mov ecx , 0809h                                                 ;0x007112dd :        b909080000
     ;         push  dword ptr [ ebp + 80 ]                                    ;0x007112e2 :        ff7550
     ;         call Fun42c583                                                  ;0x007112e5 :        e899b2d1ff
     ;         push eax                                                        ;0x007112ea :        50
     ;         call Fun539df5                                                  ;0x007112eb :        e8058be2ff
     ;         add esp , 0Ch                                                   ;0x007112f0 :        83c40c

             push  dword ptr [ ebp + 84 ]                                    ;0x007112da :        ff7554
             push ecx
             push ecx
             fild qword ptr [ ebp - 0ACh ][00h]
             fstp qword ptr [ esp ]
             mov ecx , 0809h                                                 ;0x007112dd :        b909080000
             call Fun42c583                                                  ;0x007112e5 :        e899b2d1ff

     ;     %9ld byte%{,s} in %d file%{,s}.
     ; --> %.0f byte%{,s} in %d file%{,s}.

     Label7112ea_start0 ::
             cmp byte ptr [eax][0],"%"
             jne Label7112ea_start1
             ; cmp byte ptr [eax][1],"9"
             ; jne Label7112ea_start1
             cmp byte ptr [eax][2],"l"
             jne Label7112ea_start1
             cmp byte ptr [eax][3],"d"
             jne Label7112ea_start1
             mov byte ptr [eax][0],"%"
             mov byte ptr [eax][1],"."
             mov byte ptr [eax][2],"0"
             mov byte ptr [eax][3],"f"
             jmp Label7112ea

     Label7112ea_start1 ::
             cmp byte ptr [eax][1][0],"%"
             jne Label7112ea_start2
             ; cmp byte ptr [eax][1][1],"9"
             ; jne Label7112ea_start2
             cmp byte ptr [eax][1][2],"l"
             jne Label7112ea_start2
             cmp byte ptr [eax][1][3],"d"
             jne Label7112ea_start2
             mov byte ptr [eax][1][0],"%"
             mov byte ptr [eax][1][1],"."
             mov byte ptr [eax][1][2],"0"
             mov byte ptr [eax][1][3],"f"
             jmp Label7112ea

     Label7112ea_start2 ::
             cmp byte ptr [eax][2][0],"%"
             jne Label7112ea_start3
             ; cmp byte ptr [eax][2][1],"9"
             ; jne Label7112ea_start3
             cmp byte ptr [eax][2][2],"l"
             jne Label7112ea_start3
             cmp byte ptr [eax][2][3],"d"
             jne Label7112ea_start3
             mov byte ptr [eax][2][0],"%"
             mov byte ptr [eax][2][1],"."
             mov byte ptr [eax][2][2],"0"
             mov byte ptr [eax][2][3],"f"
             jmp Label7112ea

     Label7112ea_start3 ::
             cmp byte ptr [eax][3][0],"%"
             jne Label7112ea_start4
             ; cmp byte ptr [eax][3][1],"9"
             ; jne Label7112ea_start4
             cmp byte ptr [eax][3][2],"l"
             jne Label7112ea_start4
             cmp byte ptr [eax][3][3],"d"
             jne Label7112ea_start4
             mov byte ptr [eax][3][0],"%"
             mov byte ptr [eax][3][1],"."
             mov byte ptr [eax][3][2],"0"
             mov byte ptr [eax][3][3],"f"
             jmp Label7112ea

     Label7112ea_start4 ::
             cmp byte ptr [eax][4][0],"%"
             jne Label7112ea_start5
             ; cmp byte ptr [eax][4][1],"9"
             ; jne Label7112ea_start5
             cmp byte ptr [eax][4][2],"l"
             jne Label7112ea_start5
             cmp byte ptr [eax][4][3],"d"
             jne Label7112ea_start5
             mov byte ptr [eax][4][0],"%"
             mov byte ptr [eax][4][1],"."
             mov byte ptr [eax][4][2],"0"
             mov byte ptr [eax][4][3],"f"
             jmp Label7112ea

     Label7112ea_start5 ::
             cmp byte ptr [eax][5][0],"%"
             jne Label7112ea_start6
             ; cmp byte ptr [eax][5][1],"9"
             ; jne Label7112ea_start6
             cmp byte ptr [eax][5][2],"l"
             jne Label7112ea_start6
             cmp byte ptr [eax][5][3],"d"
             jne Label7112ea_start6
             mov byte ptr [eax][5][0],"%"
             mov byte ptr [eax][5][1],"."
             mov byte ptr [eax][5][2],"0"
             mov byte ptr [eax][5][3],"f"
             jmp Label7112ea

     Label7112ea_start6 ::
             cmp byte ptr [eax][6][0],"%"
             jne Label7112ea_start7
             ; cmp byte ptr [eax][6][1],"9"
             ; jne Label7112ea_start7
             cmp byte ptr [eax][6][2],"l"
             jne Label7112ea_start7
             cmp byte ptr [eax][6][3],"d"
             jne Label7112ea_start7
             mov byte ptr [eax][6][0],"%"
             mov byte ptr [eax][6][1],"."
             mov byte ptr [eax][6][2],"0"
             mov byte ptr [eax][6][3],"f"
             jmp Label7112ea

     Label7112ea_start7 ::
             cmp byte ptr [eax][7][0],"%"
             jne Label7112ea_start8
             ; cmp byte ptr [eax][7][1],"9"
             ; jne Label7112ea_start8
             cmp byte ptr [eax][7][2],"l"
             jne Label7112ea_start8
             cmp byte ptr [eax][7][3],"d"
             jne Label7112ea_start8
             mov byte ptr [eax][7][0],"%"
             mov byte ptr [eax][7][1],"."
             mov byte ptr [eax][7][2],"0"
             mov byte ptr [eax][7][3],"f"
             jmp Label7112ea

     Label7112ea_start8 ::
             pop ecx
             pop ecx
             push  dword ptr [ ebp - 0ACh ][00h]                                    ;0x007112e2 :        ff7550
             mov ecx , 0809h                                                 ;0x007112dd :        b909080000
             call Fun42c583                                                  ;0x007112e5 :        e899b2d1ff
             push eax                                                        ;0x007112ea :        50
             call Fun539df5                                                  ;0x007112eb :        e8058be2ff
             add esp , 0Ch                                                   ;0x007112f0 :        83c40c
             jmp Label7112f3

     Label7112ea ::
             push eax                                                        ;0x007112ea :        50
             call Fun539df5                                                  ;0x007112eb :        e8058be2ff
             add esp , 010h                                                   ;0x007112f0 :        83c40c


     Label7112f3 ::
             push esi                                                        ;0x007112f3 :        56
             call Fun54054d                                                  ;0x007112f4 :        e854f2e2ff
             push ebx                                                        ;0x007112f9 :        53
             lea ecx ,  dword ptr [ ebp + 120 ]                              ;0x007112fa :        8d4d78
             call Fun75f07a                                                  ;0x007112fd :        e878dd0400
             push ecx                                                        ;0x00711302 :        51
             push ecx                                                        ;0x00711303 :        51
             mov ecx , 080Ah                                                 ;0x00711304 :        b90a080000
             fstp qword ptr [ esp ]                                          ;0x00711309 :        dd1c24
             call Fun42c583                                                  ;0x0071130c :        e872b2d1ff
             push eax                                                        ;0x00711311 :        50
             call Fun539df5                                                  ;0x00711312 :        e8de8ae2ff
             add esp , 0Ch                                                   ;0x00711317 :        83c40c
             push esi                                                        ;0x0071131a :        56
             call Fun54054d                                                  ;0x0071131b :        e82df2e2ff

     Label711320 ::
             lea eax ,  dword ptr [ ebp + 112 ]                              ;0x00711320 :        8d4570
             push eax                                                        ;0x00711323 :        50
             lea eax ,  dword ptr [ ebp + 0FFFFFF68h ]                       ;0x00711324 :        8d8568ffffff
             call Fun42d200                                                  ;0x0071132a :        e8d1bed1ff
             jmp Label711334                                                 ;0x0071132f :        eb03

     Label711331 ::
             mov  dword ptr [ ebp + 124 ] , eax                              ;0x00711331 :        89457c

     Label711334 ::
             lea esi ,  dword ptr [ ebp + 080h ]                             ;0x00711334 :        8db580000000
             call Fun43e393                                                  ;0x0071133a :        e854d0d2ff
             mov  ecx , dword ptr [ ebp + 124 ]                              ;0x0071133f :        8b4d7c
             cmp ecx , ebx                                                   ;0x00711342 :        3bcb
             je Label71134b                                                  ;0x00711344 :        7405
             call Fun544742                                                  ;0x00711346 :        e8f733e3ff

     Label71134b ::
             mov  ecx , dword ptr [ ebp + 04CCh ]                            ;0x0071134b :        8b8dcc040000
             call Fun42bf1d                                                  ;0x00711351 :        e8c7abd1ff
             pop edi                                                         ;0x00711356 :        5f
             pop esi                                                         ;0x00711357 :        5e
             pop ebx                                                         ;0x00711358 :        5b
             add ebp , 04D0h                                                 ;0x00711359 :        81c5d0040000
             leave                                                           ;0x0071135f :        c9
             ret 08h                                                         ;0x00711360 :        c20800


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_vfp9fix198.asp


6. OTHER:

     For reference only, there is no guarantees.

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