首页
社区
课程
招聘
[原创]齿轮参数计算 2.1破解分析
发表于: 2005-8-12 20:10 11394

[原创]齿轮参数计算 2.1破解分析

2005-8-12 20:10
11394

【破文标题】:齿轮参数计算 2.1破解分析

【破文作者】:KuNgBiM[DFCG]

【作者邮箱】:gb_1227@163.com

【软件名称】:齿轮参数计算 2.1

【软件大小】:4761 KB

【软件类别】:国产软件/共享版/辅助设计

【整理时间】:2005-8-10

【开 发 商】:http://speed-long.com/

【下载地址】:http://www.onlinedown.net/soft/32336.htm

【软件简介】:机械工程师的得力助手,中、小企业及个体私营业主值得依靠的技术力量,软件主要功能如下:
1、外啮合圆柱齿轮设计计算,几何计算,强度校核及测绘;
2、内啮合圆柱齿轮设计计算,几何计算,强度校核;
3、国家标准尺寸公差与配合查阅与选用;
4、渐开线反函数的计算;
5、齿厚上下偏差的确定;
6、减速器传动比的分配;
7、标准螺旋齿轮传动设计(汽车变速器里程表齿轮计算)。

【保护方式】:注册码 + 功能限制

【编译语言】:Microsoft Visual Basic 5.0 / 6.0

【调试环境】:WinXP、PEiD、IDA

【破解日期】:2005-08-11

【破解目的】:研究算法分析

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

―――――――――――――――――――――――――――――――――
【破解过程】:

侦测:用PEiD查壳,无壳,Microsoft Visual Basic 5.0 / 6.0 编译。

我这几天在学用IDA调试程序,所以以下是IDA反编译出的代码:(BTW:IDA太强大了,我也要学习学习!)

.text:00555ED0                     push    ebp
.text:00555ED1                     mov     ebp, esp
.text:00555ED3                     sub     esp, 8          ; 整数相减
.text:00555ED6                     push    offset loc_406316
.text:00555EDB                     mov     eax, large fs:0
.text:00555EE1                     push    eax
.text:00555EE2                     mov     large fs:0, esp
.text:00555EE9                     sub     esp, 58h        ; 整数相减
.text:00555EEC                     push    ebx
.text:00555EED                     push    esi
.text:00555EEE                     push    edi
.text:00555EEF                     mov     [ebp-8], esp
.text:00555EF2                     mov     dword ptr [ebp-4], offset dword_4053A8
.text:00555EF9                     mov     eax, dword_5815D0
.text:00555EFE                     xor     esi, esi        ; 异或清零
.text:00555F00                     cmp     eax, esi        ; 比较二个运算单元
.text:00555F02                     mov     [ebp-14h], esi
.text:00555F05                     mov     [ebp-18h], esi
.text:00555F08                     mov     [ebp-1Ch], esi
.text:00555F0B                     mov     [ebp-20h], esi
.text:00555F0E                     mov     [ebp-30h], esi
.text:00555F11                     mov     [ebp-40h], esi
.text:00555F14                     jnz     short loc_555F26 ; 不等于0时则跳 (ZF=0)
.text:00555F14     
.text:00555F16                     push    offset dword_5815D0
.text:00555F1B                     push    offset dword_434B30
.text:00555F20                     call    ds:__vbaNew2    ; Indirect Call Near Procedure
.text:00555F20     
.text:00555F26     
.text:00555F26     loc_555F26:                             ; CODE XREF: .text:00555F14j
.text:00555F26                     mov     edi, dword_5815D0
.text:00555F2C                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:00555F2F                     push    ecx
.text:00555F30                     push    edi
.text:00555F31                     mov     eax, [edi]
.text:00555F33                     call    dword ptr [eax+14h] ; Indirect Call Near Procedure
.text:00555F33     
.text:00555F36                     cmp     eax, esi        ; 比较二个运算单元
.text:00555F38                     fnclex                  ; 清除异常 (no wait)
.text:00555F3A                     jge     short loc_555F4B ; 大于或等于则跳 (SF=OF)
.text:00555F3A     
.text:00555F3C                     push    14h
.text:00555F3E                     push    offset dword_434B20
.text:00555F43                     push    edi
.text:00555F44                     push    eax
.text:00555F45                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00555F45     
.text:00555F4B     
.text:00555F4B     loc_555F4B:                             ; CODE XREF: .text:00555F3Aj
.text:00555F4B                     mov     eax, [ebp-20h]
.text:00555F4E                     lea     ecx, [ebp-18h]  ; 载入有效位址
.text:00555F51                     push    ecx
.text:00555F52                     push    eax
.text:00555F53                     mov     edx, [eax]
.text:00555F55                     mov     edi, eax
.text:00555F57                     call    dword ptr [edx+50h] ; Indirect Call Near Procedure
.text:00555F57     
.text:00555F5A                     cmp     eax, esi        ; 比较二个运算单元
.text:00555F5C                     fnclex                  ; 清除异常 (no wait)
.text:00555F5E                     jge     short loc_555F6F ; 大于或等于则跳 (SF=OF)
.text:00555F5E     
.text:00555F60                     push    50h
.text:00555F62                     push    offset dword_434BF0
.text:00555F67                     push    edi
.text:00555F68                     push    eax
.text:00555F69                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00555F69     
.text:00555F6F     
.text:00555F6F     loc_555F6F:                             ; CODE XREF: .text:00555F5Ej
.text:00555F6F                     mov     edx, [ebp-18h]
.text:00555F72                     push    edx
.text:00555F73                     push    offset aGear21_ljg ; "\\gear21.ljg"    ★注册验证文件★(保存注册码的keyfile)
.text:00555F78                     call    ds:__vbaStrCat  ; Indirect Call Near Procedure
.text:00555F78     
.text:00555F7E                     mov     edi, ds:__vbaStrMove
.text:00555F84                     mov     edx, eax
.text:00555F86                     lea     ecx, [ebp-1Ch]  ; 载入有效位址
.text:00555F89                     call    edi ; __vbaStrMove ; Indirect Call Near Procedure
.text:00555F89     
.text:00555F8B                     mov     ebx, ds:__vbaFileOpen
.text:00555F91                     push    eax
.text:00555F92                     push    1
.text:00555F94                     push    0FFFFFFFFh
.text:00555F96                     push    2
.text:00555F98                     call    ebx ; __vbaFileOpen ; Indirect Call Near Procedure
.text:00555F98     
.text:00555F9A                     lea     eax, [ebp-1Ch]  ; 载入有效位址
.text:00555F9D                     lea     ecx, [ebp-18h]  ; 载入有效位址
.text:00555FA0                     push    eax
.text:00555FA1                     push    ecx
.text:00555FA2                     push    2
.text:00555FA4                     call    ds:__vbaFreeStrList ; Indirect Call Near Procedure
.text:00555FA4     
.text:00555FAA                     add     esp, 0Ch        ; 加法运算
.text:00555FAD                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:00555FB0                     call    ds:__vbaFreeObj ; Indirect Call Near Procedure
.text:00555FB0     
.text:00555FB6                     mov     edx, [ebp+8]
.text:00555FB9                     mov     eax, [edx+3Ch]
.text:00555FBC                     push    eax
.text:00555FBD                     push    1
.text:00555FBF                     push    offset dword_438A04
.text:00555FC4                     call    ds:__vbaPrintFile ; Indirect Call Near Procedure
.text:00555FC4     
.text:00555FCA                     add     esp, 0Ch        ; 加法运算
.text:00555FCD                     push    1
.text:00555FCF                     call    ds:__vbaFileClose ; Indirect Call Near Procedure
.text:00555FCF     
.text:00555FD5                     cmp     dword_5815D0, esi ; 比较二个运算单元
.text:00555FDB                     jnz     short loc_555FED ; 不等于0时则跳 (ZF=0)
.text:00555FDB     
.text:00555FDD                     push    offset dword_5815D0
.text:00555FE2                     push    offset dword_434B30
.text:00555FE7                     call    ds:__vbaNew2    ; Indirect Call Near Procedure
.text:00555FE7     
.text:00555FED     
.text:00555FED     loc_555FED:                             ; CODE XREF: .text:00555FDBj
.text:00555FED                     mov     esi, dword_5815D0
.text:00555FF3                     lea     edx, [ebp-20h]  ; 载入有效位址
.text:00555FF6                     push    edx
.text:00555FF7                     push    esi
.text:00555FF8                     mov     ecx, [esi]
.text:00555FFA                     call    dword ptr [ecx+14h] ; Indirect Call Near Procedure
.text:00555FFA     
.text:00555FFD                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:00555FFF                     fnclex                  ; 清除异常 (no wait)
.text:00556001                     jge     short loc_556012 ; 大于或等于则跳 (SF=OF)
.text:00556001     
.text:00556003                     push    14h
.text:00556005                     push    offset dword_434B20
.text:0055600A                     push    esi
.text:0055600B                     push    eax
.text:0055600C                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:0055600C     
.text:00556012     
.text:00556012     loc_556012:                             ; CODE XREF: .text:00556001j
.text:00556012                     mov     eax, [ebp-20h]
.text:00556015                     lea     edx, [ebp-18h]  ; 载入有效位址
.text:00556018                     push    edx
.text:00556019                     push    eax
.text:0055601A                     mov     ecx, [eax]
.text:0055601C                     mov     esi, eax
.text:0055601E                     call    dword ptr [ecx+50h] ; Indirect Call Near Procedure
.text:0055601E     
.text:00556021                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:00556023                     fnclex                  ; 清除异常 (no wait)
.text:00556025                     jge     short loc_556036 ; 大于或等于则跳 (SF=OF)
.text:00556025     
.text:00556027                     push    50h
.text:00556029                     push    offset dword_434BF0
.text:0055602E                     push    esi
.text:0055602F                     push    eax
.text:00556030                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00556030     
.text:00556036     
.text:00556036     loc_556036:                             ; CODE XREF: .text:00556025j
.text:00556036                     mov     eax, [ebp-18h]
.text:00556039                     push    eax
.text:0055603A                     push    offset aGear21_flg ; "\\gear21.flg"    ★注册项目特征文件★(保存所注册功能的特征文件)
.text:0055603F                     call    ds:__vbaStrCat  ; Indirect Call Near Procedure
.text:0055603F     
.text:00556045                     mov     edx, eax
.text:00556047                     lea     ecx, [ebp-1Ch]  ; 载入有效位址
.text:0055604A                     call    edi ; __vbaStrMove ; Indirect Call Near Procedure
.text:0055604A     
.text:0055604C                     push    eax
.text:0055604D                     push    1
.text:0055604F                     push    0FFFFFFFFh
.text:00556051                     push    2
.text:00556053                     call    ebx ; __vbaFileOpen ; Indirect Call Near Procedure
.text:00556053     
.text:00556055                     lea     ecx, [ebp-1Ch]  ; 载入有效位址
.text:00556058                     lea     edx, [ebp-18h]  ; 载入有效位址
.text:0055605B                     push    ecx
.text:0055605C                     push    edx
.text:0055605D                     push    2
.text:0055605F                     call    ds:__vbaFreeStrList ; Indirect Call Near Procedure
.text:0055605F     
.text:00556065                     add     esp, 0Ch        ; 加法运算
.text:00556068                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:0055606B                     call    ds:__vbaFreeObj ; Indirect Call Near Procedure
.text:0055606B     
.text:00556071                     mov     eax, [ebp+8]
.text:00556074                     mov     cx, [eax+44h]
.text:00556078                     push    ecx
.text:00556079                     push    1
.text:0055607B                     push    offset dword_43B1B0
.text:00556080                     call    ds:__vbaPrintFile ; Indirect Call Near Procedure
.text:00556080     
.text:00556086                     add     esp, 0Ch        ; 加法运算
.text:00556089                     push    1
.text:0055608B                     call    ds:__vbaFileClose ; Indirect Call Near Procedure
.text:0055608B     
.text:00556091                     push    0
.text:00556093                     lea     edx, [ebp-30h]  ; 载入有效位址
.text:00556096                     push    offset aScripting_file ; "Scripting.FileSystemObject"
.text:0055609B                     push    edx
.text:0055609C                     call    ds:rtcCreateObject2 ; Indirect Call Near Procedure
.text:0055609C     
.text:005560A2                     lea     eax, [ebp-30h]  ; 载入有效位址
.text:005560A5                     push    eax
.text:005560A6                     call    ds:__vbaObjVar  ; Indirect Call Near Procedure
.text:005560A6     
.text:005560AC                     lea     ecx, [ebp-14h]  ; 载入有效位址
.text:005560AF                     push    eax
.text:005560B0                     push    ecx
.text:005560B1                     call    ds:__vbaObjSetAddref ; Indirect Call Near Procedure
.text:005560B1     
.text:005560B7                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:005560BA                     call    ds:__vbaFreeVar ; Indirect Call Near Procedure
.text:005560BA     
.text:005560C0                     mov     eax, dword_5815D0
.text:005560C5                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005560C7                     jnz     short loc_5560D9 ; 不等于0时则跳 (ZF=0)
.text:005560C7     
.text:005560C9                     push    offset dword_5815D0
.text:005560CE                     push    offset dword_434B30
.text:005560D3                     call    ds:__vbaNew2    ; Indirect Call Near Procedure
.text:005560D3     
.text:005560D9     
.text:005560D9     loc_5560D9:                             ; CODE XREF: .text:005560C7j
.text:005560D9                     mov     esi, dword_5815D0
.text:005560DF                     lea     eax, [ebp-20h]  ; 载入有效位址
.text:005560E2                     push    eax
.text:005560E3                     push    esi
.text:005560E4                     mov     edx, [esi]
.text:005560E6                     call    dword ptr [edx+14h] ; Indirect Call Near Procedure
.text:005560E6     
.text:005560E9                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005560EB                     fnclex                  ; 清除异常 (no wait)
.text:005560ED                     jge     short loc_5560FE ; 大于或等于则跳 (SF=OF)
.text:005560ED     
.text:005560EF                     push    14h
.text:005560F1                     push    offset dword_434B20
.text:005560F6                     push    esi
.text:005560F7                     push    eax
.text:005560F8                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005560F8     
.text:005560FE     
.text:005560FE     loc_5560FE:                             ; CODE XREF: .text:005560EDj
.text:005560FE                     mov     eax, [ebp-20h]
.text:00556101                     lea     edx, [ebp-18h]  ; 载入有效位址
.text:00556104                     push    edx
.text:00556105                     push    eax
.text:00556106                     mov     ecx, [eax]
.text:00556108                     mov     esi, eax
.text:0055610A                     call    dword ptr [ecx+50h] ; Indirect Call Near Procedure
.text:0055610A     
.text:0055610D                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:0055610F                     fnclex                  ; 清除异常 (no wait)
.text:00556111                     jge     short loc_556122 ; 大于或等于则跳 (SF=OF)
.text:00556111     
.text:00556113                     push    50h
.text:00556115                     push    offset dword_434BF0
.text:0055611A                     push    esi
.text:0055611B                     push    eax
.text:0055611C                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:0055611C     
.text:00556122     
.text:00556122     loc_556122:                             ; CODE XREF: .text:00556111j
.text:00556122                     mov     eax, [ebp-18h]
.text:00556125                     mov     ebx, ds:__vbaStrCat
.text:0055612B                     push    eax
.text:0055612C                     push    offset aGear21_dll ; "\\gear21.dll"    ★功能限制特征文件★
.text:00556131                     call    ebx ; __vbaStrCat ; Indirect Call Near Procedure
.text:00556131     
.text:00556133                     sub     esp, 10h        ; 整数相减
.text:00556136                     mov     ecx, 8
.text:0055613B                     mov     edx, esp
.text:0055613D                     mov     [ebp-30h], ecx
.text:00556140                     mov     [ebp-28h], eax
.text:00556143                     push    1
.text:00556145                     mov     [edx], ecx
.text:00556147                     mov     ecx, [ebp-2Ch]
.text:0055614A                     push    offset aFileexists ; "fileexists"
.text:0055614F                     mov     [edx+4], ecx
.text:00556152                     mov     ecx, [ebp-14h]
.text:00556155                     push    ecx
.text:00556156                     mov     [edx+8], eax
.text:00556159                     mov     eax, [ebp-24h]
.text:0055615C                     mov     [edx+0Ch], eax
.text:0055615F                     lea     edx, [ebp-40h]  ; 载入有效位址
.text:00556162                     push    edx
.text:00556163                     call    ds:__vbaLateMemCallLd ; Indirect Call Near Procedure
.text:00556163     
.text:00556169                     add     esp, 20h        ; 加法运算
.text:0055616C                     push    eax
.text:0055616D                     call    ds:__vbaBoolVarNull ; Indirect Call Near Procedure
.text:0055616D     
.text:00556173                     mov     edi, ds:__vbaFreeStr
.text:00556179                     lea     ecx, [ebp-18h]  ; 载入有效位址
.text:0055617C                     mov     esi, eax
.text:0055617E                     call    edi ; __vbaFreeStr ; Indirect Call Near Procedure
.text:0055617E     
.text:00556180                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:00556183                     call    ds:__vbaFreeObj ; Indirect Call Near Procedure
.text:00556183     
.text:00556189                     lea     eax, [ebp-40h]  ; 载入有效位址
.text:0055618C                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:0055618F                     push    eax
.text:00556190                     push    ecx
.text:00556191                     push    2
.text:00556193                     call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:00556193     
.text:00556199                     add     esp, 0Ch        ; 加法运算
.text:0055619C                     test    si, si          ; 两操作数作与运算,逻辑比较
.text:0055619F                     jz      loc_55623D      ; 等于0则跳 (ZF=1)
.text:0055619F     
.text:005561A5                     mov     eax, dword_5815D0
.text:005561AA                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005561AC                     jnz     short loc_5561BE ; 不等于0时则跳 (ZF=0)
.text:005561AC     
.text:005561AE                     push    offset dword_5815D0
.text:005561B3                     push    offset dword_434B30
.text:005561B8                     call    ds:__vbaNew2    ; Indirect Call Near Procedure
.text:005561B8     
.text:005561BE     
.text:005561BE     loc_5561BE:                             ; CODE XREF: .text:005561ACj
.text:005561BE                     mov     esi, dword_5815D0
.text:005561C4                     lea     eax, [ebp-20h]  ; 载入有效位址
.text:005561C7                     push    eax
.text:005561C8                     push    esi
.text:005561C9                     mov     edx, [esi]
.text:005561CB                     call    dword ptr [edx+14h] ; Indirect Call Near Procedure
.text:005561CB     
.text:005561CE                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005561D0                     fnclex                  ; 清除异常 (no wait)
.text:005561D2                     jge     short loc_5561E3 ; 大于或等于则跳 (SF=OF)
.text:005561D2     
.text:005561D4                     push    14h
.text:005561D6                     push    offset dword_434B20
.text:005561DB                     push    esi
.text:005561DC                     push    eax
.text:005561DD                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005561DD     
.text:005561E3     
.text:005561E3     loc_5561E3:                             ; CODE XREF: .text:005561D2j
.text:005561E3                     mov     eax, [ebp-20h]
.text:005561E6                     lea     edx, [ebp-18h]  ; 载入有效位址
.text:005561E9                     push    edx
.text:005561EA                     push    eax
.text:005561EB                     mov     ecx, [eax]
.text:005561ED                     mov     esi, eax
.text:005561EF                     call    dword ptr [ecx+50h] ; Indirect Call Near Procedure
.text:005561EF     
.text:005561F2                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005561F4                     fnclex                  ; 清除异常 (no wait)
.text:005561F6                     jge     short loc_556207 ; 大于或等于则跳 (SF=OF)
.text:005561F6     
.text:005561F8                     push    50h
.text:005561FA                     push    offset dword_434BF0
.text:005561FF                     push    esi
.text:00556200                     push    eax
.text:00556201                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00556201     
.text:00556207     
.text:00556207     loc_556207:                             ; CODE XREF: .text:005561F6j
.text:00556207                     mov     eax, [ebp-18h]
.text:0055620A                     push    eax
.text:0055620B                     push    offset aGear21_dll ; "\\gear21.dll"    ★功能限制特征文件★
.text:00556210                     call    ebx ; __vbaStrCat ; Indirect Call Near Procedure
.text:00556210     
.text:00556212                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:00556215                     mov     [ebp-28h], eax
.text:00556218                     push    ecx
.text:00556219                     mov     dword ptr [ebp-30h], 8
.text:00556220                     call    ds:rtcKillFiles ; Indirect Call Near Procedure
.text:00556220     
.text:00556226                     lea     ecx, [ebp-18h]  ; 载入有效位址
.text:00556229                     call    edi ; __vbaFreeStr ; Indirect Call Near Procedure
.text:00556229     
.text:0055622B                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:0055622E                     call    ds:__vbaFreeObj ; Indirect Call Near Procedure
.text:0055622E     
.text:00556234                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:00556237                     call    ds:__vbaFreeVar ; Indirect Call Near Procedure
.text:00556237     
.text:0055623D     
.text:0055623D     loc_55623D:                             ; CODE XREF: .text:0055619Fj
.text:0055623D                     lea     edx, [ebp-14h]  ; 载入有效位址
.text:00556240                     push    0
.text:00556242                     push    edx
.text:00556243                     call    ds:__vbaObjSetAddref ; Indirect Call Near Procedure
.text:00556243     
.text:00556249                     push    offset loc_55628A
.text:0055624E                     jmp     short loc_556280 ; 跳
.text:0055624E     
.text:00556250     ; ---------------------------------------------------------------------------
.text:00556250                     lea     eax, [ebp-1Ch]  ; 载入有效位址
.text:00556253                     lea     ecx, [ebp-18h]  ; 载入有效位址
.text:00556256                     push    eax
.text:00556257                     push    ecx
.text:00556258                     push    2
.text:0055625A                     call    ds:__vbaFreeStrList ; Indirect Call Near Procedure
.text:0055625A     
.text:00556260                     add     esp, 0Ch        ; 加法运算
.text:00556263                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:00556266                     call    ds:__vbaFreeObj ; Indirect Call Near Procedure
.text:00556266     
.text:0055626C                     lea     edx, [ebp-40h]  ; 载入有效位址
.text:0055626F                     lea     eax, [ebp-30h]  ; 载入有效位址
.text:00556272                     push    edx
.text:00556273                     push    eax
.text:00556274                     push    2
.text:00556276                     call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:00556276     
.text:0055627C                     add     esp, 0Ch        ; 加法运算
.text:0055627F                     retn                    ; 返回程序
.text:0055627F     
.text:00556280     ; ---------------------------------------------------------------------------
.text:00556280     
.text:00556280     loc_556280:                             ; CODE XREF: .text:0055624Ej
.text:00556280                     lea     ecx, [ebp-14h]  ; 载入有效位址
.text:00556283                     call    ds:__vbaFreeObj ; Indirect Call Near Procedure
.text:00556283     
.text:00556289                     retn                    ; 返回程序
.text:00556289     
.text:0055628A     ; ---------------------------------------------------------------------------
.text:0055628A     
.text:0055628A     loc_55628A:                             ; DATA XREF: .text:00556249o
.text:0055628A                     mov     ecx, [ebp-10h]
.text:0055628D                     pop     edi
.text:0055628E                     pop     esi
.text:0055628F                     xor     eax, eax        ; 异或清零
.text:00556291                     mov     large fs:0, ecx
.text:00556298                     pop     ebx
.text:00556299                     mov     esp, ebp
.text:0055629B                     pop     ebp
.text:0055629C                     retn    4               ; 返回程序
.text:0055629C     
.text:0055629C     ; ---------------------------------------------------------------------------
.text:0055629F                     align 4
.text:005562A0                     push    ebp
.text:005562A1                     mov     ebp, esp
.text:005562A3                     sub     esp, 0Ch        ; 整数相减
.text:005562A6                     push    offset loc_406316
.text:005562AB                     mov     eax, large fs:0
.text:005562B1                     push    eax
.text:005562B2                     mov     large fs:0, esp
.text:005562B9                     sub     esp, 11Ch       ; 整数相减
.text:005562BF                     push    ebx
.text:005562C0                     push    esi
.text:005562C1                     push    edi
.text:005562C2                     mov     [ebp-0Ch], esp
.text:005562C5                     mov     dword ptr [ebp-8], offset dword_4053B8
.text:005562CC                     mov     esi, [ebp+8]
.text:005562CF                     mov     eax, esi
.text:005562D1                     and     eax, 1          ; 与运算
.text:005562D4                     mov     [ebp-4], eax
.text:005562D7                     and     esi, 0FFFFFFFEh ; 与运算
.text:005562DA                     push    esi
.text:005562DB                     mov     [ebp+8], esi
.text:005562DE                     mov     ecx, [esi]
.text:005562E0                     call    dword ptr [ecx+4] ; Indirect Call Near Procedure
.text:005562E0     
.text:005562E3                     mov     edx, [esi]
.text:005562E5                     xor     edi, edi        ; 异或清零
.text:005562E7                     push    esi
.text:005562E8                     mov     [ebp-1Ch], edi
.text:005562EB                     mov     [ebp-18h], edi
.text:005562EE                     mov     [ebp-20h], edi
.text:005562F1                     mov     [ebp-24h], edi
.text:005562F4                     mov     [ebp-28h], edi
.text:005562F7                     mov     [ebp-2Ch], edi
.text:005562FA                     mov     [ebp-30h], edi
.text:005562FD                     mov     [ebp-34h], edi
.text:00556300                     mov     [ebp-38h], edi
.text:00556303                     mov     [ebp-48h], edi
.text:00556306                     mov     [ebp-58h], edi
.text:00556309                     mov     [ebp-68h], edi
.text:0055630C                     mov     [ebp-78h], edi
.text:0055630F                     mov     [ebp-88h], edi
.text:00556315                     mov     [ebp-98h], edi
.text:0055631B                     mov     [ebp-0A8h], edi
.text:00556321                     mov     [ebp-0B8h], edi
.text:00556327                     mov     [ebp-0C8h], edi
.text:0055632D                     mov     [ebp-0D8h], edi
.text:00556333                     mov     [ebp-0FCh], edi
.text:00556339                     mov     [ebp-100h], edi
.text:0055633F                     call    dword ptr [edx+304h] ; Indirect Call Near Procedure
.text:0055633F     
.text:00556345                     mov     ebx, ds:__vbaObjSet
.text:0055634B                     push    eax
.text:0055634C                     lea     eax, [ebp-30h]  ; 载入有效位址
.text:0055634F                     push    eax
.text:00556350                     call    ebx ; __vbaObjSet ; Indirect Call Near Procedure
.text:00556350     
.text:00556352                     mov     ecx, [eax]
.text:00556354                     lea     edx, [ebp-0FCh] ; 载入有效位址
.text:0055635A                     push    edx
.text:0055635B                     push    eax
.text:0055635C                     mov     [ebp-104h], eax
.text:00556362                     call    dword ptr [ecx+0E0h] ; Indirect Call Near Procedure
.text:00556362     
.text:00556368                     cmp     eax, edi        ; 比较二个运算单元
.text:0055636A                     fnclex                  ; 清除异常 (no wait)
.text:0055636C                     jge     short loc_556386 ; 大于或等于则跳 (SF=OF)
.text:0055636C     
.text:0055636E                     mov     ecx, [ebp-104h]
.text:00556374                     push    0E0h
.text:00556379                     push    offset dword_437A44
.text:0055637E                     push    ecx
.text:0055637F                     push    eax
.text:00556380                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00556380     
.text:00556386     
.text:00556386     loc_556386:                             ; CODE XREF: .text:0055636Cj
.text:00556386                     mov     edx, [esi]
.text:00556388                     push    esi
.text:00556389                     call    dword ptr [edx+300h] ; Indirect Call Near Procedure
.text:00556389     
.text:0055638F                     push    eax
.text:00556390                     lea     eax, [ebp-34h]  ; 载入有效位址
.text:00556393                     push    eax
.text:00556394                     call    ebx ; __vbaObjSet ; Indirect Call Near Procedure
.text:00556394     
.text:00556396                     mov     ecx, [eax]
.text:00556398                     lea     edx, [ebp-100h] ; 载入有效位址
.text:0055639E                     push    edx
.text:0055639F                     push    eax
.text:005563A0                     mov     [ebp-10Ch], eax
.text:005563A6                     call    dword ptr [ecx+0E0h] ; Indirect Call Near Procedure
.text:005563A6     
.text:005563AC                     cmp     eax, edi        ; 比较二个运算单元
.text:005563AE                     fnclex                  ; 清除异常 (no wait)
.text:005563B0                     jge     short loc_5563CA ; 大于或等于则跳 (SF=OF)
.text:005563B0     
.text:005563B2                     mov     ecx, [ebp-10Ch]
.text:005563B8                     push    0E0h
.text:005563BD                     push    offset dword_437A44
.text:005563C2                     push    ecx
.text:005563C3                     push    eax
.text:005563C4                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005563C4     
.text:005563CA     
.text:005563CA     loc_5563CA:                             ; CODE XREF: .text:005563B0j
.text:005563CA                     mov     eax, 1
.text:005563CF                     xor     edx, edx        ; 异或清零
.text:005563D1                     cmp     [ebp-100h], ax  ; 比较二个运算单元
.text:005563D8                     setnz   dl              ; 计数器置1 (ZF=0)
.text:005563DB                     neg     edx             ; 寄存器反向互补
.text:005563DD                     xor     ecx, ecx        ; 异或清零
.text:005563DF                     cmp     [ebp-0FCh], ax  ; 比较二个运算单元
.text:005563E6                     lea     eax, [ebp-30h]  ; 载入有效位址
.text:005563E9                     setnz   cl              ; 计数器置1 (ZF=0)
.text:005563EC                     neg     ecx             ; 寄存器反向互补
.text:005563EE                     and     edx, ecx        ; 与运算
.text:005563F0                     mov     [ebp-114h], edx
.text:005563F6                     lea     edx, [ebp-34h]  ; 载入有效位址
.text:005563F9                     push    edx
.text:005563FA                     push    eax
.text:005563FB                     push    2
.text:005563FD                     call    ds:__vbaFreeObjList ; Indirect Call Near Procedure
.text:005563FD     
.text:00556403                     add     esp, 0Ch        ; 加法运算
.text:00556406                     cmp     [ebp-114h], di  ; 比较二个运算单元
.text:0055640D                     jz      loc_5564A8      ; 等于0则跳 (ZF=1)
.text:0055640D     
.text:00556413                     call    ds:rtcBeep      ; Indirect Call Near Procedure
.text:00556413     
.text:00556419                     mov     esi, ds:__vbaVarDup
.text:0055641F                     mov     ecx, 80020004h
.text:00556424                     mov     [ebp-70h], ecx
.text:00556427                     mov     eax, 0Ah
.text:0055642C                     mov     [ebp-60h], ecx
.text:0055642F                     mov     ebx, 8
.text:00556434                     lea     edx, [ebp-0D8h] ; 载入有效位址
.text:0055643A                     lea     ecx, [ebp-58h]  ; 载入有效位址
.text:0055643D                     mov     [ebp-78h], eax
.text:00556440                     mov     [ebp-68h], eax
.text:00556443                     mov     dword ptr [ebp-0D0h], offset dword_43BCD4
.text:0055644D                     mov     [ebp-0D8h], ebx
.text:00556453                     call    esi ; __vbaVarDup ; Indirect Call Near Procedure
.text:00556453     
.text:00556455                     lea     edx, [ebp-0C8h] ; 载入有效位址
.text:0055645B                     lea     ecx, [ebp-48h]  ; 载入有效位址
.text:0055645E                     mov     dword ptr [ebp-0C0h], offset dword_43BCB8
.text:00556468                     mov     [ebp-0C8h], ebx
.text:0055646E                     call    esi ; __vbaVarDup ; Indirect Call Near Procedure
.text:0055646E     
.text:00556470                     lea     ecx, [ebp-78h]  ; 载入有效位址
.text:00556473                     lea     edx, [ebp-68h]  ; 载入有效位址
.text:00556476                     push    ecx
.text:00556477                     lea     eax, [ebp-58h]  ; 载入有效位址
.text:0055647A                     push    edx
.text:0055647B                     push    eax
.text:0055647C                     lea     ecx, [ebp-48h]  ; 载入有效位址
.text:0055647F                     push    30h
.text:00556481                     push    ecx
.text:00556482                     call    ds:rtcMsgBox    ; Indirect Call Near Procedure
.text:00556482     
.text:00556488                     lea     edx, [ebp-78h]  ; 载入有效位址
.text:0055648B                     lea     eax, [ebp-68h]  ; 载入有效位址
.text:0055648E                     push    edx
.text:0055648F                     lea     ecx, [ebp-58h]  ; 载入有效位址
.text:00556492                     push    eax
.text:00556493                     lea     edx, [ebp-48h]  ; 载入有效位址
.text:00556496                     push    ecx
.text:00556497                     push    edx
.text:00556498                     push    4
.text:0055649A                     call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:0055649A     
.text:005564A0                     add     esp, 14h        ; 加法运算
.text:005564A3                     jmp     loc_556E87      ; 跳
.text:005564A3     
.text:005564A8     ; ---------------------------------------------------------------------------
.text:005564A8     
.text:005564A8     loc_5564A8:                             ; CODE XREF: .text:0055640Dj
.text:005564A8                     mov     eax, [esi]
.text:005564AA                     push    esi
.text:005564AB                     call    dword ptr [eax+330h] ; Indirect Call Near Procedure
.text:005564AB     
.text:005564B1                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:005564B4                     push    eax
.text:005564B5                     push    ecx
.text:005564B6                     call    ebx             ; Indirect Call Near Procedure
.text:005564B6     
.text:005564B8                     mov     edx, [eax]
.text:005564BA                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:005564BD                     push    ecx
.text:005564BE                     push    eax
.text:005564BF                     mov     [ebp-104h], eax
.text:005564C5                     call    dword ptr [edx+50h] ; Indirect Call Near Procedure
.text:005564C5     
.text:005564C8                     cmp     eax, edi        ; 比较二个运算单元
.text:005564CA                     fnclex                  ; 清除异常 (no wait)
.text:005564CC                     jge     short loc_5564E3 ; 大于或等于则跳 (SF=OF)
.text:005564CC     
.text:005564CE                     mov     edx, [ebp-104h]
.text:005564D4                     push    50h
.text:005564D6                     push    offset dword_436A50
.text:005564DB                     push    edx
.text:005564DC                     push    eax
.text:005564DD                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005564DD     
.text:005564E3     
.text:005564E3     loc_5564E3:                             ; CODE XREF: .text:005564CCj
.text:005564E3                     mov     eax, [esi]
.text:005564E5                     push    esi
.text:005564E6                     call    dword ptr [eax+330h] ; Indirect Call Near Procedure
.text:005564E6     
.text:005564EC                     lea     ecx, [ebp-34h]  ; 载入有效位址
.text:005564EF                     push    eax
.text:005564F0                     push    ecx
.text:005564F1                     call    ebx             ; Indirect Call Near Procedure
.text:005564F1     
.text:005564F3                     mov     edx, [eax]
.text:005564F5                     lea     ecx, [ebp-24h]  ; 载入有效位址
.text:005564F8                     push    ecx
.text:005564F9                     push    eax
.text:005564FA                     mov     [ebp-10Ch], eax
.text:00556500                     call    dword ptr [edx+50h] ; Indirect Call Near Procedure
.text:00556500     
.text:00556503                     cmp     eax, edi        ; 比较二个运算单元
.text:00556505                     fnclex                  ; 清除异常 (no wait)
.text:00556507                     jge     short loc_55651E ; 大于或等于则跳 (SF=OF)
.text:00556507     
.text:00556509                     mov     edx, [ebp-10Ch]
.text:0055650F                     push    50h
.text:00556511                     push    offset dword_436A50
.text:00556516                     push    edx
.text:00556517                     push    eax
.text:00556518                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00556518     
.text:0055651E     
.text:0055651E     loc_55651E:                             ; CODE XREF: .text:00556507j
.text:0055651E                     mov     eax, [ebp-24h]
.text:00556521                     push    eax
.text:00556522                     push    offset dword_434914
.text:00556527                     call    ds:__vbaStrCmp  ; Indirect Call Near Procedure
.text:00556527     
.text:0055652D                     mov     ecx, [ebp-20h]
.text:00556530                     mov     edi, eax
.text:00556532                     neg     edi             ; 寄存器反向互补
.text:00556534                     sbb     edi, edi        ; 带借位减法
.text:00556536                     push    ecx
.text:00556537                     inc     edi             ; 计数器自加1
.text:00556538                     push    offset dword_436AF4
.text:0055653D                     neg     edi             ; 寄存器反向互补
.text:0055653F                     call    ds:__vbaStrCmp  ; Indirect Call Near Procedure
.text:0055653F     
.text:00556545                     neg     eax             ; 寄存器反向互补
.text:00556547                     sbb     eax, eax        ; 带借位减法
.text:00556549                     lea     edx, [ebp-24h]  ; 载入有效位址
.text:0055654C                     inc     eax             ; 计数器自加1
.text:0055654D                     push    edx
.text:0055654E                     neg     eax             ; 寄存器反向互补
.text:00556550                     or      edi, eax        ; 或运算
.text:00556552                     lea     eax, [ebp-20h]  ; 载入有效位址
.text:00556555                     push    eax
.text:00556556                     push    2
.text:00556558                     call    ds:__vbaFreeStrList ; Indirect Call Near Procedure
.text:00556558     
.text:0055655E                     lea     ecx, [ebp-34h]  ; 载入有效位址
.text:00556561                     lea     edx, [ebp-30h]  ; 载入有效位址
.text:00556564                     push    ecx
.text:00556565                     push    edx
.text:00556566                     push    2
.text:00556568                     call    ds:__vbaFreeObjList ; Indirect Call Near Procedure
.text:00556568     
.text:0055656E                     add     esp, 18h        ; 加法运算
.text:00556571                     test    di, di          ; 两操作数作与运算,逻辑比较
.text:00556574                     jz      loc_556615      ; 等于0则跳 (ZF=1)
.text:00556574     
.text:0055657A                     mov     esi, ds:__vbaVarDup
.text:00556580                     mov     ecx, 80020004h
.text:00556585                     mov     [ebp-70h], ecx
.text:00556588                     mov     eax, 0Ah
.text:0055658D                     mov     [ebp-60h], ecx
.text:00556590                     mov     edi, 8
.text:00556595                     lea     edx, [ebp-0D8h] ; 载入有效位址
.text:0055659B                     lea     ecx, [ebp-58h]  ; 载入有效位址
.text:0055659E                     mov     [ebp-78h], eax
.text:005565A1                     mov     [ebp-68h], eax
.text:005565A4                     mov     dword ptr [ebp-0D0h], offset dword_43B714
.text:005565AE                     mov     [ebp-0D8h], edi
.text:005565B4                     call    esi ; __vbaVarDup ; Indirect Call Near Procedure
.text:005565B4     
.text:005565B6                     lea     edx, [ebp-0C8h] ; 载入有效位址
.text:005565BC                     lea     ecx, [ebp-48h]  ; 载入有效位址
.text:005565BF                     mov     dword ptr [ebp-0C0h], offset dword_43BCE0
.text:005565C9                     mov     [ebp-0C8h], edi
.text:005565CF                     call    esi ; __vbaVarDup ; Indirect Call Near Procedure
.text:005565CF     
.text:005565D1                     lea     eax, [ebp-78h]  ; 载入有效位址
.text:005565D4                     lea     ecx, [ebp-68h]  ; 载入有效位址
.text:005565D7                     push    eax
.text:005565D8                     lea     edx, [ebp-58h]  ; 载入有效位址
.text:005565DB                     push    ecx
.text:005565DC                     push    edx
.text:005565DD                     lea     eax, [ebp-48h]  ; 载入有效位址
.text:005565E0                     push    0
.text:005565E2                     push    eax
.text:005565E3                     call    ds:rtcMsgBox    ; Indirect Call Near Procedure
.text:005565E3     
.text:005565E9                     lea     ecx, [ebp-78h]  ; 载入有效位址
.text:005565EC                     lea     edx, [ebp-68h]  ; 载入有效位址
.text:005565EF                     push    ecx
.text:005565F0                     lea     eax, [ebp-58h]  ; 载入有效位址
.text:005565F3                     push    edx
.text:005565F4                     lea     ecx, [ebp-48h]  ; 载入有效位址
.text:005565F7                     push    eax
.text:005565F8                     push    ecx
.text:005565F9                     push    4
.text:005565FB                     call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:005565FB     
.text:00556601                     add     esp, 14h        ; 加法运算
.text:00556604                     call    ds:rtcBeep      ; Indirect Call Near Procedure
.text:00556604     
.text:0055660A                     call    ds:__vbaEnd     ; Indirect Call Near Procedure
.text:0055660A     
.text:00556610                     jmp     loc_556E85      ; 跳
.text:00556610     
.text:00556615     ; ---------------------------------------------------------------------------
.text:00556615     
.text:00556615     loc_556615:                             ; CODE XREF: .text:00556574j
.text:00556615                     mov     edx, [esi]
.text:00556617                     push    esi
.text:00556618                     call    dword ptr [edx+320h] ; Indirect Call Near Procedure
.text:00556618     
.text:0055661E                     push    eax
.text:0055661F                     lea     eax, [ebp-30h]  ; 载入有效位址
.text:00556622                     push    eax
.text:00556623                     call    ebx             ; Indirect Call Near Procedure
.text:00556623     
.text:00556625                     mov     edi, eax
.text:00556627                     lea     edx, [ebp-20h]  ; 载入有效位址
.text:0055662A                     push    edx
.text:0055662B                     push    edi
.text:0055662C                     mov     ecx, [edi]
.text:0055662E                     call    dword ptr [ecx+0A0h] ; Indirect Call Near Procedure
.text:0055662E     
.text:00556634                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:00556636                     fnclex                  ; 清除异常 (no wait)
.text:00556638                     jge     short loc_55664C ; 大于或等于则跳 (SF=OF)
.text:00556638     
.text:0055663A                     push    0A0h
.text:0055663F                     push    offset dword_438F3C
.text:00556644                     push    edi
.text:00556645                     push    eax
.text:00556646                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00556646     
.text:0055664C     
.text:0055664C     loc_55664C:                             ; CODE XREF: .text:00556638j
.text:0055664C                     mov     eax, [ebp-20h]
.text:0055664F                     lea     ecx, [ebp-58h]  ; 载入有效位址
.text:00556652                     mov     [ebp-40h], eax
.text:00556655                     lea     eax, [ebp-48h]  ; 载入有效位址
.text:00556658                     push    eax
.text:00556659                     push    ecx
.text:0055665A                     mov     dword ptr [ebp-20h], 0
.text:00556661                     mov     dword ptr [ebp-48h], 8
.text:00556668                     call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:00556668     
.text:0055666E                     mov     edx, [esi]
.text:00556670                     push    esi
.text:00556671                     call    dword ptr [edx+31Ch] ; Indirect Call Near Procedure
.text:00556671     
.text:00556677                     push    eax
.text:00556678                     lea     eax, [ebp-34h]  ; 载入有效位址
.text:0055667B                     push    eax
.text:0055667C                     call    ebx             ; Indirect Call Near Procedure
.text:0055667C     
.text:0055667E                     mov     edi, eax
.text:00556680                     lea     edx, [ebp-24h]  ; 载入有效位址
.text:00556683                     push    edx
.text:00556684                     push    edi
.text:00556685                     mov     ecx, [edi]
.text:00556687                     call    dword ptr [ecx+0A0h] ; Indirect Call Near Procedure
.text:00556687     
.text:0055668D                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:0055668F                     fnclex                  ; 清除异常 (no wait)
.text:00556691                     jge     short loc_5566A5 ; 大于或等于则跳 (SF=OF)
.text:00556691     
.text:00556693                     push    0A0h
.text:00556698                     push    offset dword_438F3C
.text:0055669D                     push    edi
.text:0055669E                     push    eax
.text:0055669F                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:0055669F     
.text:005566A5     
.text:005566A5     loc_5566A5:                             ; CODE XREF: .text:00556691j
.text:005566A5                     mov     eax, [ebp-24h]
.text:005566A8                     lea     ecx, [ebp-78h]  ; 载入有效位址
.text:005566AB                     mov     [ebp-60h], eax
.text:005566AE                     lea     eax, [ebp-68h]  ; 载入有效位址
.text:005566B1                     push    eax
.text:005566B2                     push    ecx
.text:005566B3                     mov     dword ptr [ebp-24h], 0
.text:005566BA                     mov     dword ptr [ebp-68h], 8
.text:005566C1                     call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:005566C1     
.text:005566C7                     mov     edx, [esi]
.text:005566C9                     push    esi
.text:005566CA                     call    dword ptr [edx+318h] ; Indirect Call Near Procedure
.text:005566CA     
.text:005566D0                     push    eax
.text:005566D1                     lea     eax, [ebp-38h]  ; 载入有效位址
.text:005566D4                     push    eax
.text:005566D5                     call    ebx             ; Indirect Call Near Procedure
.text:005566D5     
.text:005566D7                     mov     edi, eax
.text:005566D9                     lea     edx, [ebp-28h]  ; 载入有效位址
.text:005566DC                     push    edx
.text:005566DD                     push    edi
.text:005566DE                     mov     ecx, [edi]
.text:005566E0                     call    dword ptr [ecx+0A0h] ; Indirect Call Near Procedure
.text:005566E0     
.text:005566E6                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005566E8                     fnclex                  ; 清除异常 (no wait)
.text:005566EA                     jge     short loc_5566FE ; 大于或等于则跳 (SF=OF)
.text:005566EA     
.text:005566EC                     push    0A0h
.text:005566F1                     push    offset dword_438F3C
.text:005566F6                     push    edi
.text:005566F7                     push    eax
.text:005566F8                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005566F8     
.text:005566FE     
.text:005566FE     loc_5566FE:                             ; CODE XREF: .text:005566EAj
.text:005566FE                     mov     eax, [ebp-28h]
.text:00556701                     lea     ecx, [ebp-0A8h] ; 载入有效位址
.text:00556707                     mov     [ebp-90h], eax
.text:0055670D                     lea     eax, [ebp-98h]  ; 载入有效位址
.text:00556713                     push    eax
.text:00556714                     push    ecx
.text:00556715                     mov     dword ptr [ebp-28h], 0
.text:0055671C                     mov     dword ptr [ebp-98h], 8
.text:00556726                     call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:00556726     
.text:0055672C                     mov     edi, ds:__vbaVarCat
.text:00556732                     lea     edx, [ebp-58h]  ; 载入有效位址
.text:00556735                     lea     eax, [ebp-78h]  ; 载入有效位址
.text:00556738                     push    edx
.text:00556739                     lea     ecx, [ebp-88h]  ; 载入有效位址
.text:0055673F                     push    eax
.text:00556740                     push    ecx
.text:00556741                     call    edi ; __vbaVarCat ; Indirect Call Near Procedure
.text:00556741     
.text:00556743                     push    eax
.text:00556744                     lea     edx, [ebp-0A8h] ; 载入有效位址
.text:0055674A                     lea     eax, [ebp-0B8h] ; 载入有效位址
.text:00556750                     push    edx
.text:00556751                     push    eax
.text:00556752                     call    edi ; __vbaVarCat ; Indirect Call Near Procedure
.text:00556752     
.text:00556754                     push    eax
.text:00556755                     call    ds:__vbaStrVarMove ; Indirect Call Near Procedure
.text:00556755     
.text:0055675B                     mov     edx, eax
.text:0055675D                     lea     ecx, [ebp-2Ch]  ; 载入有效位址
.text:00556760                     call    ds:__vbaStrMove ; Indirect Call Near Procedure
.text:00556760     
.text:00556766                     mov     edx, eax
.text:00556768                     lea     ecx, [esi+3Ch]  ; 载入有效位址
.text:0055676B                     call    ds:__vbaStrCopy ; Indirect Call Near Procedure
.text:0055676B     
.text:00556771                     lea     ecx, [ebp-2Ch]  ; 载入有效位址
.text:00556774                     call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:00556774     
.text:0055677A                     lea     ecx, [ebp-38h]  ; 载入有效位址
.text:0055677D                     lea     edx, [ebp-34h]  ; 载入有效位址
.text:00556780                     push    ecx
.text:00556781                     lea     eax, [ebp-30h]  ; 载入有效位址
.text:00556784                     push    edx
.text:00556785                     push    eax
.text:00556786                     push    3
.text:00556788                     call    ds:__vbaFreeObjList ; Indirect Call Near Procedure
.text:00556788     
.text:0055678E                     lea     ecx, [ebp-0B8h] ; 载入有效位址
.text:00556794                     lea     edx, [ebp-0A8h] ; 载入有效位址
.text:0055679A                     push    ecx
.text:0055679B                     lea     eax, [ebp-88h]  ; 载入有效位址
.text:005567A1                     push    edx
.text:005567A2                     lea     ecx, [ebp-98h]  ; 载入有效位址
.text:005567A8                     push    eax
.text:005567A9                     lea     edx, [ebp-78h]  ; 载入有效位址
.text:005567AC                     push    ecx
.text:005567AD                     lea     eax, [ebp-58h]  ; 载入有效位址
.text:005567B0                     push    edx
.text:005567B1                     lea     ecx, [ebp-68h]  ; 载入有效位址
.text:005567B4                     push    eax
.text:005567B5                     lea     edx, [ebp-48h]  ; 载入有效位址
.text:005567B8                     push    ecx
.text:005567B9                     push    edx
.text:005567BA                     push    8
.text:005567BC                     call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:005567BC     
.text:005567C2                     mov     eax, [esi]
.text:005567C4                     add     esp, 34h        ; 加法运算
.text:005567C7                     push    esi
.text:005567C8                     call    dword ptr [eax+304h] ; Indirect Call Near Procedure
.text:005567C8     
.text:005567CE                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:005567D1                     push    eax
.text:005567D2                     push    ecx
.text:005567D3                     call    ebx             ; Indirect Call Near Procedure
.text:005567D3     
.text:005567D5                     mov     edi, eax
.text:005567D7                     lea     eax, [ebp-0FCh] ; 载入有效位址
.text:005567DD                     push    eax
.text:005567DE                     push    edi
.text:005567DF                     mov     edx, [edi]
.text:005567E1                     call    dword ptr [edx+0E0h] ; Indirect Call Near Procedure
.text:005567E1     
.text:005567E7                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005567E9                     fnclex                  ; 清除异常 (no wait)
.text:005567EB                     jge     short loc_5567FF ; 大于或等于则跳 (SF=OF)
.text:005567EB     
.text:005567ED                     push    0E0h
.text:005567F2                     push    offset dword_437A44
.text:005567F7                     push    edi
.text:005567F8                     push    eax
.text:005567F9                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005567F9     
.text:005567FF     
.text:005567FF     loc_5567FF:                             ; CODE XREF: .text:005567EBj
.text:005567FF                     mov     ecx, [esi]
.text:00556801                     push    esi
.text:00556802                     call    dword ptr [ecx+300h] ; Indirect Call Near Procedure
.text:00556802     
.text:00556808                     lea     edx, [ebp-34h]  ; 载入有效位址
.text:0055680B                     push    eax
.text:0055680C                     push    edx
.text:0055680D                     call    ebx             ; Indirect Call Near Procedure
.text:0055680D     
.text:0055680F                     mov     edi, eax
.text:00556811                     lea     ecx, [ebp-100h] ; 载入有效位址
.text:00556817                     push    ecx
.text:00556818                     push    edi
.text:00556819                     mov     eax, [edi]
.text:0055681B                     call    dword ptr [eax+0E0h] ; Indirect Call Near Procedure
.text:0055681B     
.text:00556821                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:00556823                     fnclex                  ; 清除异常 (no wait)
.text:00556825                     jge     short loc_556839 ; 大于或等于则跳 (SF=OF)
.text:00556825     
.text:00556827                     push    0E0h
.text:0055682C                     push    offset dword_437A44
.text:00556831                     push    edi
.text:00556832                     push    eax
.text:00556833                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00556833     
.text:00556839     
.text:00556839     loc_556839:                             ; CODE XREF: .text:00556825j
.text:00556839                     mov     edi, 1
.text:0055683E                     xor     edx, edx        ; 异或清零
.text:00556840                     cmp     [ebp-100h], di  ; 比较二个运算单元
.text:00556847                     lea     ecx, [ebp-34h]  ; 载入有效位址
.text:0055684A                     push    ecx
.text:0055684B                     setz    dl              ; 计数器置0 (ZF=1)
.text:0055684E                     neg     edx             ; 寄存器反向互补
.text:00556850                     xor     eax, eax        ; 异或清零
.text:00556852                     cmp     [ebp-0FCh], di  ; 比较二个运算单元
.text:00556859                     setz    al              ; 计数器置0 (ZF=1)
.text:0055685C                     neg     eax             ; 寄存器反向互补
.text:0055685E                     and     edx, eax        ; 与运算
.text:00556860                     mov     edi, edx
.text:00556862                     lea     edx, [ebp-30h]  ; 载入有效位址
.text:00556865                     push    edx
.text:00556866                     push    2
.text:00556868                     call    ds:__vbaFreeObjList ; Indirect Call Near Procedure
.text:00556868     
.text:0055686E                     add     esp, 0Ch        ; 加法运算
.text:00556871                     test    di, di          ; 两操作数作与运算,逻辑比较
.text:00556874                     jz      short loc_55688F ; 等于0则跳 (ZF=1)
.text:00556874     
.text:00556876                     mov     word ptr [esi+44h], 3
.text:0055687C                     mov     dword ptr [ebp-1Ch], 40000000h
.text:00556883                     mov     dword ptr [ebp-18h], 417FCA03h
.text:0055688A                     jmp     loc_556A16      ; 跳
.text:0055688A     
.text:0055688F     ; ---------------------------------------------------------------------------
.text:0055688F     
.text:0055688F     loc_55688F:                             ; CODE XREF: .text:00556874j
.text:0055688F                     mov     eax, [esi]
.text:00556891                     push    esi
.text:00556892                     call    dword ptr [eax+304h] ; Indirect Call Near Procedure
.text:00556892     
.text:00556898                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:0055689B                     push    eax
.text:0055689C                     push    ecx
.text:0055689D                     call    ebx             ; Indirect Call Near Procedure
.text:0055689D     
.text:0055689F                     mov     edi, eax
.text:005568A1                     lea     eax, [ebp-0FCh] ; 载入有效位址
.text:005568A7                     push    eax
.text:005568A8                     push    edi
.text:005568A9                     mov     edx, [edi]
.text:005568AB                     call    dword ptr [edx+0E0h] ; Indirect Call Near Procedure
.text:005568AB     
.text:005568B1                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005568B3                     fnclex                  ; 清除异常 (no wait)
.text:005568B5                     jge     short loc_5568C9 ; 大于或等于则跳 (SF=OF)
.text:005568B5     
.text:005568B7                     push    0E0h
.text:005568BC                     push    offset dword_437A44
.text:005568C1                     push    edi
.text:005568C2                     push    eax
.text:005568C3                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005568C3     
.text:005568C9     
.text:005568C9     loc_5568C9:                             ; CODE XREF: .text:005568B5j
.text:005568C9                     mov     ecx, [esi]
.text:005568CB                     push    esi
.text:005568CC                     call    dword ptr [ecx+300h] ; Indirect Call Near Procedure
.text:005568CC     
.text:005568D2                     lea     edx, [ebp-34h]  ; 载入有效位址
.text:005568D5                     push    eax
.text:005568D6                     push    edx
.text:005568D7                     call    ebx             ; Indirect Call Near Procedure
.text:005568D7     
.text:005568D9                     mov     edi, eax
.text:005568DB                     lea     ecx, [ebp-100h] ; 载入有效位址
.text:005568E1                     push    ecx
.text:005568E2                     push    edi
.text:005568E3                     mov     eax, [edi]
.text:005568E5                     call    dword ptr [eax+0E0h] ; Indirect Call Near Procedure
.text:005568E5     
.text:005568EB                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005568ED                     fnclex                  ; 清除异常 (no wait)
.text:005568EF                     jge     short loc_556903 ; 大于或等于则跳 (SF=OF)
.text:005568EF     
.text:005568F1                     push    0E0h
.text:005568F6                     push    offset dword_437A44
.text:005568FB                     push    edi
.text:005568FC                     push    eax
.text:005568FD                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005568FD     
.text:00556903     
.text:00556903     loc_556903:                             ; CODE XREF: .text:005568EFj
.text:00556903                     xor     edx, edx        ; 异或清零
.text:00556905                     lea     ecx, [ebp-34h]  ; 载入有效位址
.text:00556908                     cmp     [ebp-100h], dx  ; 比较二个运算单元
.text:0055690F                     push    ecx
.text:00556910                     setz    dl              ; 计数器置0 (ZF=1)
.text:00556913                     neg     edx             ; 寄存器反向互补
.text:00556915                     xor     eax, eax        ; 异或清零
.text:00556917                     cmp     word ptr [ebp-0FCh], 1 ; 比较二个运算单元
.text:0055691F                     setz    al              ; 计数器置0 (ZF=1)
.text:00556922                     neg     eax             ; 寄存器反向互补
.text:00556924                     and     edx, eax        ; 与运算
.text:00556926                     mov     edi, edx
.text:00556928                     lea     edx, [ebp-30h]  ; 载入有效位址
.text:0055692B                     push    edx
.text:0055692C                     push    2
.text:0055692E                     call    ds:__vbaFreeObjList ; Indirect Call Near Procedure
.text:0055692E     
.text:00556934                     add     esp, 0Ch        ; 加法运算
.text:00556937                     test    di, di          ; 两操作数作与运算,逻辑比较
.text:0055693A                     jz      short loc_556955 ; 等于0则跳 (ZF=1)
.text:0055693A     
.text:0055693C                     mov     word ptr [esi+44h], 1
.text:00556942                     mov     dword ptr [ebp-1Ch], 80000000h
.text:00556949                     mov     dword ptr [ebp-18h], 41653157h
.text:00556950                     jmp     loc_556A16      ; 跳
.text:00556950     
.text:00556955     ; ---------------------------------------------------------------------------
.text:00556955     
.text:00556955     loc_556955:                             ; CODE XREF: .text:0055693Aj
.text:00556955                     mov     eax, [esi]
.text:00556957                     push    esi
.text:00556958                     call    dword ptr [eax+304h] ; Indirect Call Near Procedure
.text:00556958     
.text:0055695E                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:00556961                     push    eax
.text:00556962                     push    ecx
.text:00556963                     call    ebx             ; Indirect Call Near Procedure
.text:00556963     
.text:00556965                     mov     edi, eax
.text:00556967                     lea     eax, [ebp-0FCh] ; 载入有效位址
.text:0055696D                     push    eax
.text:0055696E                     push    edi
.text:0055696F                     mov     edx, [edi]
.text:00556971                     call    dword ptr [edx+0E0h] ; Indirect Call Near Procedure
.text:00556971     
.text:00556977                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:00556979                     fnclex                  ; 清除异常 (no wait)
.text:0055697B                     jge     short loc_55698F ; 大于或等于则跳 (SF=OF)
.text:0055697B     
.text:0055697D                     push    0E0h
.text:00556982                     push    offset dword_437A44
.text:00556987                     push    edi
.text:00556988                     push    eax
.text:00556989                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:00556989     
.text:0055698F     
.text:0055698F     loc_55698F:                             ; CODE XREF: .text:0055697Bj
.text:0055698F                     mov     ecx, [esi]
.text:00556991                     push    esi
.text:00556992                     call    dword ptr [ecx+300h] ; Indirect Call Near Procedure
.text:00556992     
.text:00556998                     lea     edx, [ebp-34h]  ; 载入有效位址
.text:0055699B                     push    eax
.text:0055699C                     push    edx
.text:0055699D                     call    ebx             ; Indirect Call Near Procedure
.text:0055699D     
.text:0055699F                     mov     ebx, eax
.text:005569A1                     lea     ecx, [ebp-100h] ; 载入有效位址
.text:005569A7                     push    ecx
.text:005569A8                     push    ebx
.text:005569A9                     mov     eax, [ebx]
.text:005569AB                     call    dword ptr [eax+0E0h] ; Indirect Call Near Procedure
.text:005569AB     
.text:005569B1                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:005569B3                     fnclex                  ; 清除异常 (no wait)
.text:005569B5                     jge     short loc_5569C9 ; 大于或等于则跳 (SF=OF)
.text:005569B5     
.text:005569B7                     push    0E0h
.text:005569BC                     push    offset dword_437A44
.text:005569C1                     push    ebx
.text:005569C2                     push    eax
.text:005569C3                     call    ds:__vbaHresultCheckObj ; Indirect Call Near Procedure
.text:005569C3     
.text:005569C9     
.text:005569C9     loc_5569C9:                             ; CODE XREF: .text:005569B5j
.text:005569C9                     xor     edx, edx        ; 异或清零
.text:005569CB                     cmp     word ptr [ebp-100h], 1 ; 比较二个运算单元
.text:005569D3                     lea     ecx, [ebp-34h]  ; 载入有效位址
.text:005569D6                     setz    dl              ; 计数器置0 (ZF=1)
.text:005569D9                     xor     eax, eax        ; 异或清零
.text:005569DB                     push    ecx
.text:005569DC                     neg     edx             ; 寄存器反向互补
.text:005569DE                     cmp     [ebp-0FCh], ax  ; 比较二个运算单元
.text:005569E5                     setz    al              ; 计数器置0 (ZF=1)
.text:005569E8                     neg     eax             ; 寄存器反向互补
.text:005569EA                     and     edx, eax        ; 与运算
.text:005569EC                     mov     edi, edx
.text:005569EE                     lea     edx, [ebp-30h]  ; 载入有效位址
.text:005569F1                     push    edx
.text:005569F2                     push    2
.text:005569F4                     call    ds:__vbaFreeObjList ; Indirect Call Near Procedure
.text:005569F4     
.text:005569FA                     add     esp, 0Ch        ; 加法运算
.text:005569FD                     test    di, di          ; 两操作数作与运算,逻辑比较
.text:00556A00                     jz      short loc_556A16 ; 等于0则跳 (ZF=1)
.text:00556A00     
.text:00556A02                     mov     word ptr [esi+44h], 2
.text:00556A08                     mov     dword ptr [ebp-1Ch], 80000000h
.text:00556A0F                     mov     dword ptr [ebp-18h], 41753157h
.text:00556A16     
.text:00556A16     loc_556A16:                             ; CODE XREF: .text:0055688Aj
.text:00556A16                                             ; .text:00556950j ...
.text:00556A16                     mov     edx, offset aC  ; "c:\\"    ★取C盘ID作为机器码运算特征码★
.text:00556A1B                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:00556A1E                     call    ds:__vbaStrCopy ; Indirect Call Near Procedure
.text:00556A1E     
.text:00556A24                     lea     eax, [ebp-20h]  ; 载入有效位址
.text:00556A27                     push    eax
.text:00556A28                     call    sub_488540      ; ★机器码计算CALL★有兴趣的朋友可以跟进看看!
.text:00556A28     
.text:00556A2D                     fabs                    ; 取绝对值
.text:00556A2F                     fadd    ds:dbl_401410   ; 准备加法运算
.text:00556A35                     lea     ecx, [ebp-48h]  ; 载入有效位址
.text:00556A38                     lea     edx, [ebp-58h]  ; 载入有效位址
.text:00556A3B                     push    ecx
.text:00556A3C                     push    edx
.text:00556A3D                     fadd    qword ptr [ebp-1Ch] ; 准备加法运算
.text:00556A40                     mov     dword ptr [ebp-48h], 5
.text:00556A47                     fstp    qword ptr [ebp-40h] ; 准备储存和出栈
.text:00556A4A                     fnstsw  ax              ; 储存写入状态 (no wait)
.text:00556A4C                     test    al, 0Dh         ; 两操作数作与运算,逻辑比较
.text:00556A4E                     jnz     loc_556F16      ; 不等于0时则跳 (ZF=0)
.text:00556A4E     
.text:00556A54                     call    ds:rtcVarStrFromVar ; Indirect Call Near Procedure
.text:00556A54     
.text:00556A5A                     lea     eax, [ebp-58h]  ; 载入有效位址
.text:00556A5D                     lea     ecx, [ebp-68h]  ; 载入有效位址
.text:00556A60                     push    eax
.text:00556A61                     push    ecx
.text:00556A62                     call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:00556A62     
.text:00556A68                     lea     edx, [ebp-68h]  ; 载入有效位址
.text:00556A6B                     mov     dword ptr [ebp-0FCh], 0
.text:00556A75                     push    edx
.text:00556A76                     call    ds:__vbaStrVarMove ; Indirect Call Near Procedure
.text:00556A76     
.text:00556A7C                     mov     ebx, ds:__vbaStrMove
.text:00556A82                     mov     edx, eax
.text:00556A84                     lea     ecx, [ebp-24h]  ; 载入有效位址
.text:00556A87                     call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00556A87     
.text:00556A89                     lea     eax, [ebp-0FCh] ; 载入有效位址
.text:00556A8F                     lea     ecx, [ebp-24h]  ; 载入有效位址
.text:00556A92                     push    eax
.text:00556A93                     push    ecx
.text:00556A94                     lea     edi, [esi+40h]  ; 载入有效位址
.text:00556A97                     call    sub_488E70      ; ★注册码计算CALL★跟进!
.text:00556A97     
.text:00556A9C                     mov     edx, eax        ; ★真码出现★(此处可以做内存注册机)
.text:00556A9E                     lea     ecx, [ebp-28h]  ; 载入有效位址
.text:00556AA1                     call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00556AA1     
.text:00556AA3                     mov     edx, eax
.text:00556AA5                     mov     ecx, edi
.text:00556AA7                     call    ds:__vbaStrCopy ; Indirect Call Near Procedure
.text:00556AA7     
.text:00556AAD                     lea     edx, [ebp-28h]  ; 载入有效位址
.text:00556AB0                     lea     eax, [ebp-24h]  ; 载入有效位址
.text:00556AB3                     push    edx
.text:00556AB4                     lea     ecx, [ebp-20h]  ; 载入有效位址
.text:00556AB7                     push    eax
.text:00556AB8                     push    ecx
.text:00556AB9                     push    3
.text:00556ABB                     call    ds:__vbaFreeStrList ; Indirect Call Near Procedure
.text:00556ABB     
.text:00556AC1                     mov     ebx, ds:__vbaFreeVarList
.text:00556AC7                     lea     edx, [ebp-68h]  ; 载入有效位址
.text:00556ACA                     lea     eax, [ebp-58h]  ; 载入有效位址
.text:00556ACD                     push    edx
.text:00556ACE                     lea     ecx, [ebp-48h]  ; 载入有效位址
.text:00556AD1                     push    eax
.text:00556AD2                     push    ecx
.text:00556AD3                     push    3
.text:00556AD5                     call    ebx ; __vbaFreeVarList ; Indirect Call Near Procedure
.text:00556AD5     
.text:00556AD7                     mov     edx, [esi+3Ch]
.text:00556ADA                     mov     eax, [edi]
.text:00556ADC                     add     esp, 20h        ; 加法运算
.text:00556ADF                     push    edx
.text:00556AE0                     push    eax
.text:00556AE1                     call    ds:__vbaStrCmp  ; Indirect Call Near Procedure
.text:00556AE1     
.text:00556AE7                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:00556AE9                     jnz     loc_556D99      ; 不等于0时则跳 (ZF=0)
.text:00556AE9     
.text:00556AEF                     movsx   eax, word ptr [esi+44h] ; 先符号扩展,再传送
.text:00556AF3                     dec     eax             ; 运算前自减1
.text:00556AF4                     jz      loc_556CAF      ; 等于0则跳 (ZF=1)
.text:00556AF4     
.text:00556AFA                     dec     eax             ; 运算前自减1
.text:00556AFB                     jz      loc_556BDA      ; 等于0则跳 (ZF=1)
.text:00556AFB     
.text:00556B01                     dec     eax             ; 运算前自减1
.text:00556B02                     jnz     loc_556E85      ; 不等于0时则跳 (ZF=0)
.text:00556B02     
.text:00556B08                     or      eax, 0FFFFFFFFh ; 或运算
.text:00556B0B                     push    esi
.text:00556B0C                     mov     word_58006E, ax
.text:00556B12                     mov     word_58006C, ax
.text:00556B18                     mov     word_580070, ax
.text:00556B1E                     mov     ecx, [esi]
.text:00556B20                     call    dword ptr [ecx+6F8h] ; Indirect Call Near Procedure
.text:00556B20     
.text:00556B26                     mov     edi, ds:__vbaVarDup
.text:00556B2C                     mov     ecx, 80020004h
.text:00556B31                     mov     [ebp-70h], ecx
.text:00556B34                     mov     eax, 0Ah
.text:00556B39                     mov     [ebp-60h], ecx
.text:00556B3C                     lea     edx, [ebp-0D8h] ; 载入有效位址
.text:00556B42                     lea     ecx, [ebp-58h]  ; 载入有效位址
.text:00556B45                     mov     [ebp-78h], eax
.text:00556B48                     mov     [ebp-68h], eax
.text:00556B4B                     mov     dword ptr [ebp-0D0h], offset dword_43B714
.text:00556B55                     mov     dword ptr [ebp-0D8h], 8
.text:00556B5F                     call    edi ; __vbaVarDup ; Indirect Call Near Procedure
.text:00556B5F     
.text:00556B61                     lea     edx, [ebp-0C8h] ; 载入有效位址
.text:00556B67                     lea     ecx, [ebp-48h]  ; 载入有效位址
.text:00556B6A                     mov     dword ptr [ebp-0C0h], offset dword_43BD48
.text:00556B74                     mov     dword ptr [ebp-0C8h], 8
.text:00556B7E                     call    edi ; __vbaVarDup ; Indirect Call Near Procedure
.text:00556B7E     
.text:00556B80                     lea     edx, [ebp-78h]  ; 载入有效位址
.text:00556B83                     lea     eax, [ebp-68h]  ; 载入有效位址
.text:00556B86                     push    edx
.text:00556B87                     lea     ecx, [ebp-58h]  ; 载入有效位址
.text:00556B8A                     push    eax
.text:00556B8B                     push    ecx
.text:00556B8C                     lea     edx, [ebp-48h]  ; 载入有效位址
.text:00556B8F                     push    30h
.text:00556B91                     push    edx
.text:00556B92                     call    ds:rtcMsgBox    ; Indirect Call Near Procedure
.text:00556B92     
.text:00556B98                     lea     eax, [ebp-78h]  ; 载入有效位址
.text:00556B9B                     lea     ecx, [ebp-68h]  ; 载入有效位址
.text:00556B9E                     push    eax
.text:00556B9F                     lea     edx, [ebp-58h]  ; 载入有效位址
.text:00556BA2                     push    ecx
.text:00556BA3                     lea     eax, [ebp-48h]  ; 载入有效位址
.text:00556BA6                     push    edx
.text:00556BA7                     push    eax
.text:00556BA8                     push    4
.text:00556BAA                     call    ebx ; __vbaFreeVarList ; Indirect Call Near Procedure
.text:00556BAA     
.text:00556BAC                     mov     eax, dword_5815D0
.text:00556BB1                     add     esp, 14h        ; 加法运算
.text:00556BB4                     test    eax, eax        ; 两操作数作与运算,逻辑比较
.text:00556BB6                     jnz     short loc_556BC8 ; 不等于0时则跳 (ZF=0)
.text:00556BB6     
.text:00556BB8                     push    offset dword_5815D0
.text:00556BBD                     push    offset dword_434B30
.text:00556BC2                     call    ds:__vbaNew2    ; Indirect Call Near Procedure
.text:00556BC2     
.text:00556BC8     
.text:00556BC8     loc_556BC8:                             ; CODE XREF: .text:00556BB6j
.text:00556BC8                     mov     edi, dword_5815D0
.text:00556BCE                     lea     ecx, [ebp-30h]  ; 载入有效位址
.text:00556BD1                     push    esi
.text:00556BD2                     push    ecx
.text:00556BD3                     mov     ebx, [edi]
.text:00556BD5                     jmp     loc_556D7F      ; 跳
.text:00556BD5     
.text:00556BDA     ; ---------------------------------------------------------------------------

●●●●●●● 跟进:.text:00556A97        call    sub_488E70 算法CALL:●●●●●●●

.text:00488E70     
.text:00488E70     ; *************** S U B R O U T I N E ***************************************
.text:00488E70     
.text:00488E70     ; Attributes: bp-based frame
.text:00488E70     
.text:00488E70     sub_488E70      proc near               ; CODE XREF: .text:00484172p
.text:00488E70                                             ; .text:00556A97p ...
.text:00488E70     
.text:00488E70     var_1DC         = qword ptr -1DCh
.text:00488E70     var_180         = qword ptr -180h
.text:00488E70     var_178         = qword ptr -178h
.text:00488E70     var_170         = qword ptr -170h
.text:00488E70     var_138         = dword ptr -138h
.text:00488E70     var_130         = dword ptr -130h
.text:00488E70     var_12C         = dword ptr -12Ch
.text:00488E70     var_124         = dword ptr -124h
.text:00488E70     var_120         = dword ptr -120h
.text:00488E70     var_11C         = dword ptr -11Ch
.text:00488E70     var_118         = dword ptr -118h
.text:00488E70     var_114         = dword ptr -114h
.text:00488E70     var_110         = dword ptr -110h
.text:00488E70     var_10C         = dword ptr -10Ch
.text:00488E70     var_108         = dword ptr -108h
.text:00488E70     var_100         = dword ptr -100h
.text:00488E70     var_FC          = dword ptr -0FCh
.text:00488E70     var_F8          = dword ptr -0F8h
.text:00488E70     var_F0          = dword ptr -0F0h
.text:00488E70     var_EC          = dword ptr -0ECh
.text:00488E70     var_E8          = dword ptr -0E8h
.text:00488E70     var_E0          = dword ptr -0E0h
.text:00488E70     var_DC          = dword ptr -0DCh
.text:00488E70     var_D8          = dword ptr -0D8h
.text:00488E70     var_D0          = dword ptr -0D0h
.text:00488E70     var_CC          = dword ptr -0CCh
.text:00488E70     var_C8          = dword ptr -0C8h
.text:00488E70     var_C4          = dword ptr -0C4h
.text:00488E70     var_C0          = dword ptr -0C0h
.text:00488E70     var_BC          = dword ptr -0BCh
.text:00488E70     var_B8          = dword ptr -0B8h
.text:00488E70     var_B4          = dword ptr -0B4h
.text:00488E70     var_B0          = dword ptr -0B0h
.text:00488E70     var_AC          = dword ptr -0ACh
.text:00488E70     var_A0          = dword ptr -0A0h
.text:00488E70     var_9C          = dword ptr -9Ch
.text:00488E70     var_94          = dword ptr -94h
.text:00488E70     var_90          = byte ptr -90h
.text:00488E70     var_8C          = dword ptr -8Ch
.text:00488E70     var_84          = dword ptr -84h
.text:00488E70     var_7C          = dword ptr -7Ch
.text:00488E70     var_74          = qword ptr -74h
.text:00488E70     var_6C          = dword ptr -6Ch
.text:00488E70     var_68          = dword ptr -68h
.text:00488E70     var_5C          = dword ptr -5Ch
.text:00488E70     var_58          = byte ptr -58h
.text:00488E70     var_54          = qword ptr -54h
.text:00488E70     var_4C          = dword ptr -4Ch
.text:00488E70     var_3C          = dword ptr -3Ch
.text:00488E70     var_38          = dword ptr -38h
.text:00488E70     var_34          = dword ptr -34h
.text:00488E70     var_30          = dword ptr -30h
.text:00488E70     var_2C          = dword ptr -2Ch
.text:00488E70     var_28          = dword ptr -28h
.text:00488E70     var_24          = dword ptr -24h
.text:00488E70     var_20          = dword ptr -20h
.text:00488E70     var_1C          = dword ptr -1Ch
.text:00488E70     var_18          = dword ptr -18h
.text:00488E70     var_14          = dword ptr -14h
.text:00488E70     var_C           = dword ptr -0Ch
.text:00488E70     var_8           = dword ptr -8
.text:00488E70     var_4           = dword ptr -4
.text:00488E70     arg_0           = dword ptr  8
.text:00488E70     arg_4           = dword ptr  0Ch
.text:00488E70     
.text:00488E70 000                 push    ebp
.text:00488E71 004                 mov     ebp, esp
.text:00488E73 004                 sub     esp, 0Ch        ; Integer Subtraction
.text:00488E76 010                 push    offset loc_406316
.text:00488E7B 014                 mov     eax, large fs:0
.text:00488E81 014                 push    eax
.text:00488E82 018                 mov     large fs:0, esp
.text:00488E89 018                 sub     esp, 16Ch       ; Integer Subtraction
.text:00488E8F 184                 push    ebx
.text:00488E90 188                 push    esi
.text:00488E91 18C                 push    edi
.text:00488E92 190                 mov     [ebp+var_C], esp
.text:00488E95 190                 mov     [ebp+var_8], offset dword_4017C8
.text:00488E9C 190                 mov     esi, ds:__vbaAryConstruct2
.text:00488EA2 190                 xor     eax, eax        ; Logical Exclusive OR
.text:00488EA4 190                 mov     [ebp+var_1C], eax
.text:00488EA7 190                 mov     [ebp+var_20], eax
.text:00488EAA 190                 mov     [ebp+var_B4], eax
.text:00488EB0 190                 mov     [ebp+var_B8], eax
.text:00488EB6 190                 mov     [ebp+var_BC], eax
.text:00488EBC 190                 mov     [ebp+var_C0], eax
.text:00488EC2 190                 mov     [ebp+var_D0], eax
.text:00488EC8 190                 mov     [ebp+var_E0], eax
.text:00488ECE 190                 mov     [ebp+var_F0], eax
.text:00488ED4 190                 mov     [ebp+var_100], eax
.text:00488EDA 190                 mov     [ebp+var_110], eax
.text:00488EE0 190                 mov     [ebp+var_114], eax
.text:00488EE6 190                 mov     [ebp+var_118], eax
.text:00488EEC 190                 mov     [ebp+var_11C], eax
.text:00488EF2 190                 mov     [ebp+var_120], eax
.text:00488EF8 190                 mov     [ebp+var_124], eax
.text:00488EFE 190                 push    3
.text:00488F00 194                 lea     eax, [ebp+var_3C] ; Load Effective Address
.text:00488F03 194                 push    offset dword_436C04
.text:00488F08 198                 push    eax
.text:00488F09 19C                 call    esi ; __vbaAryConstruct2 ; Indirect Call Near Procedure
.text:00488F09     
.text:00488F0B 000                 push    3
.text:00488F0D 004                 lea     ecx, [ebp+var_58] ; Load Effective Address
.text:00488F10 004                 push    offset dword_436C20
.text:00488F15 008                 push    ecx
.text:00488F16 00C                 call    esi ; __vbaAryConstruct2 ; Indirect Call Near Procedure
.text:00488F16     
.text:00488F18 -190                push    8
.text:00488F1A -18C                lea     edx, [ebp+var_74] ; Load Effective Address
.text:00488F1D -18C                push    offset dword_436C3C
.text:00488F22 -188                push    edx
.text:00488F23 -184                call    esi ; __vbaAryConstruct2 ; Indirect Call Near Procedure
.text:00488F23     
.text:00488F25 -320                push    3
.text:00488F27 -31C                lea     eax, [ebp+var_90] ; Load Effective Address
.text:00488F2D -31C                push    offset dword_436AFC
.text:00488F32 -318                push    eax
.text:00488F33 -314                call    esi ; __vbaAryConstruct2 ; Indirect Call Near Procedure
.text:00488F33     
.text:00488F35 -4B0                push    8
.text:00488F37 -4AC                lea     ecx, [ebp+var_AC] ; Load Effective Address
.text:00488F3D -4AC                push    offset dword_436B18
.text:00488F42 -4A8                push    ecx
.text:00488F43 -4A4                call    esi ; __vbaAryConstruct2 ; Indirect Call Near Procedure
.text:00488F43     
.text:00488F45 -640                mov     esi, [ebp+arg_0]
.text:00488F48 -640                mov     edx, [esi]
.text:00488F4A -640                push    edx
.text:00488F4B -63C                call    ds:__vbaLenBstr ; Indirect Call Near Procedure
.text:00488F4B     
.text:00488F51 -63C                cmp     eax, 0Ah        ; Compare Two Operands
.text:00488F54 -63C                jl      short loc_488FAA ; Jump if Less (SF!=OF)
.text:00488F54     
.text:00488F56 -63C                lea     eax, [ebp+var_100] ; Load Effective Address
.text:00488F5C -63C                push    0Ah
.text:00488F5E -638                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00488F64 -638                push    eax
.text:00488F65 -634                push    ecx
.text:00488F66 -630                mov     [ebp+var_F8], esi
.text:00488F6C -630                mov     [ebp+var_100], 4008h
.text:00488F76 -630                call    ds:rtcLeftCharVar ; Indirect Call Near Procedure
.text:00488F76     
.text:00488F7C -630                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:00488F82 -630                push    edx
.text:00488F83 -62C                call    ds:__vbaStrVarMove ; Indirect Call Near Procedure
.text:00488F83     
.text:00488F89 -62C                mov     ebx, ds:__vbaStrMove
.text:00488F8F -62C                mov     edx, eax
.text:00488F91 -62C                lea     ecx, [ebp+var_B8] ; Load Effective Address
.text:00488F97 -62C                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00488F97     
.text:00488F99 -62C                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00488F9F -62C                call    ds:__vbaFreeVar ; Indirect Call Near Procedure
.text:00488F9F     
.text:00488FA5 -62C                jmp     loc_48902D      ; Jump
.text:00488FA5     
.text:00488FAA     ; ---------------------------------------------------------------------------
.text:00488FAA     
.text:00488FAA     loc_488FAA:                             ; CODE XREF: sub_488E70+E4j
.text:00488FAA -63C                dec     eax             ; Decrement by 1
.text:00488FAB -63C                cmp     eax, 8          ; switch 9 cases
.text:00488FAE -63C                ja      short loc_489027 ; default
.text:00488FAE     
.text:00488FB0 -63C                jmp     ds:off_489BFC[eax*4] ; switch jump
.text:00488FB0     
.text:00488FB7     
.text:00488FB7     loc_488FB7:                             ; DATA XREF: sub_488E70+D8Co
.text:00488FB7 -63C                mov     eax, [esi]      ; case 0x0
.text:00488FB9 -63C                push    eax
.text:00488FBA -638                push    offset a123456789 ; "123456789"
.text:00488FBF -634                jmp     short loc_48900F ; Jump
.text:00488FBF     
.text:00488FC1     ; ---------------------------------------------------------------------------
.text:00488FC1     
.text:00488FC1     loc_488FC1:                             ; CODE XREF: sub_488E70+140j
.text:00488FC1                                             ; DATA XREF: sub_488E70+D8Co
.text:00488FC1 -63C                mov     ecx, [esi]      ; case 0x1
.text:00488FC3 -63C                push    ecx
.text:00488FC4 -638                push    offset a23456789 ; "23456789"
.text:00488FC9 -634                jmp     short loc_48900F ; Jump
.text:00488FC9     
.text:00488FCB     ; ---------------------------------------------------------------------------
.text:00488FCB     
.text:00488FCB     loc_488FCB:                             ; CODE XREF: sub_488E70+140j
.text:00488FCB                                             ; DATA XREF: sub_488E70+D8Co
.text:00488FCB -63C                mov     edx, [esi]      ; case 0x2
.text:00488FCD -63C                push    edx
.text:00488FCE -638                push    offset a3456789 ; "3456789"
.text:00488FD3 -634                jmp     short loc_48900F ; Jump
.text:00488FD3     
.text:00488FD5     ; ---------------------------------------------------------------------------
.text:00488FD5     
.text:00488FD5     loc_488FD5:                             ; CODE XREF: sub_488E70+140j
.text:00488FD5                                             ; DATA XREF: sub_488E70+D8Co
.text:00488FD5 -63C                mov     eax, [esi]      ; case 0x3
.text:00488FD7 -63C                push    eax
.text:00488FD8 -638                push    offset a456789  ; "456789"
.text:00488FDD -634                jmp     short loc_48900F ; Jump
.text:00488FDD     
.text:00488FDF     ; ---------------------------------------------------------------------------
.text:00488FDF     
.text:00488FDF     loc_488FDF:                             ; CODE XREF: sub_488E70+140j
.text:00488FDF                                             ; DATA XREF: sub_488E70+D8Co
.text:00488FDF -63C                mov     ecx, [esi]      ; case 0x4
.text:00488FE1 -63C                push    ecx
.text:00488FE2 -638                push    offset a56789   ; "56789"
.text:00488FE7 -634                jmp     short loc_48900F ; Jump
.text:00488FE7     
.text:00488FE9     ; ---------------------------------------------------------------------------
.text:00488FE9     
.text:00488FE9     loc_488FE9:                             ; CODE XREF: sub_488E70+140j
.text:00488FE9                                             ; DATA XREF: sub_488E70+D8Co
.text:00488FE9 -63C                mov     edx, [esi]      ; case 0x5
.text:00488FEB -63C                push    edx
.text:00488FEC -638                push    offset a6789    ; "6789"
.text:00488FF1 -634                jmp     short loc_48900F ; Jump
.text:00488FF1     
.text:00488FF3     ; ---------------------------------------------------------------------------
.text:00488FF3     
.text:00488FF3     loc_488FF3:                             ; CODE XREF: sub_488E70+140j
.text:00488FF3                                             ; DATA XREF: sub_488E70+D8Co
.text:00488FF3 -63C                mov     eax, [esi]      ; case 0x6
.text:00488FF5 -63C                push    eax
.text:00488FF6 -638                push    offset a789     ; "789"
.text:00488FFB -634                jmp     short loc_48900F ; Jump
.text:00488FFB     
.text:00488FFD     ; ---------------------------------------------------------------------------
.text:00488FFD     
.text:00488FFD     loc_488FFD:                             ; CODE XREF: sub_488E70+140j
.text:00488FFD                                             ; DATA XREF: sub_488E70+D8Co
.text:00488FFD -63C                mov     ecx, [esi]      ; case 0x7
.text:00488FFF -63C                push    ecx
.text:00489000 -638                push    offset a89      ; "89"
.text:00489005 -634                jmp     short loc_48900F ; Jump
.text:00489005     
.text:00489007     ; ---------------------------------------------------------------------------
.text:00489007     
.text:00489007     loc_489007:                             ; CODE XREF: sub_488E70+140j
.text:00489007                                             ; DATA XREF: sub_488E70+D8Co
.text:00489007 -63C                mov     edx, [esi]      ; case 0x8
.text:00489009 -63C                push    edx
.text:0048900A -638                push    offset dword_436BFC
.text:0048900F     
.text:0048900F     loc_48900F:                             ; CODE XREF: sub_488E70+14Fj
.text:0048900F                                             ; sub_488E70+159j ...
.text:0048900F -634                call    ds:__vbaStrCat  ; Indirect Call Near Procedure
.text:0048900F     
.text:00489015 -638                mov     ebx, ds:__vbaStrMove
.text:0048901B -638                mov     edx, eax
.text:0048901D -638                lea     ecx, [ebp+var_B8] ; Load Effective Address
.text:00489023 -638                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00489023     
.text:00489025 -638                jmp     short loc_48902D ; Jump
.text:00489025     
.text:00489027     ; ---------------------------------------------------------------------------
.text:00489027     
.text:00489027     loc_489027:                             ; CODE XREF: sub_488E70+13Ej
.text:00489027 -63C                mov     ebx, ds:__vbaStrMove ; default
.text:0048902D     
.text:0048902D     loc_48902D:                             ; CODE XREF: sub_488E70+135j
.text:0048902D                                             ; sub_488E70+1B5j
.text:0048902D -63C                mov     esi, 1
.text:00489032     
.text:00489032     loc_489032:                             ; CODE XREF: sub_488E70+3BFj
.text:00489032 -63C                mov     eax, 0Ah
.text:00489037 -63C                cmp     esi, eax        ; Compare Two Operands
.text:00489039 -63C                jg      loc_489234      ; Jump if Greater (ZF=0 & SF=OF)
.text:00489039     
.text:0048903F -63C                lea     eax, [ebp+var_B8] ; Load Effective Address
.text:00489045 -63C                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:0048904B -63C                mov     [ebp+var_F8], eax
.text:00489051 -63C                push    ecx
.text:00489052 -638                lea     edx, [ebp+var_100] ; Load Effective Address
.text:00489058 -638                push    esi
.text:00489059 -634                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:0048905F -634                push    edx
.text:00489060 -630                push    eax
.text:00489061 -62C                mov     [ebp+var_C8], 1
.text:0048906B -62C                mov     [ebp+var_D0], 2
.text:00489075 -62C                mov     [ebp+var_100], 4008h
.text:0048907F -62C                call    ds:rtcMidCharVar ; Indirect Call Near Procedure
.text:0048907F     
.text:00489085 -62C                lea     ecx, [ebp+var_E0] ; Load Effective Address
.text:0048908B -62C                push    ecx
.text:0048908C -628                call    ds:rtcIsNumeric ; Indirect Call Near Procedure
.text:0048908C     
.text:00489092 -628                mov     di, ax
.text:00489095 -628                lea     edx, [ebp+var_E0] ; Load Effective Address
.text:0048909B -628                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:004890A1 -628                push    edx
.text:004890A2 -624                push    eax
.text:004890A3 -620                push    2
.text:004890A5 -61C                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:004890A5     
.text:004890AB -628                add     esp, 0Ch        ; Add
.text:004890AE -634                test    di, di          ; Logical Compare
.text:004890B1 -634                jz      loc_489201      ; Jump if Zero (ZF=1)
.text:004890B1     
.text:004890B7 -634                lea     ecx, [ebp+var_B8] ; Load Effective Address
.text:004890BD -634                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:004890C3 -634                mov     [ebp+var_F8], ecx
.text:004890C9 -634                push    edx
.text:004890CA -630                lea     eax, [ebp+var_100] ; Load Effective Address
.text:004890D0 -630                push    esi
.text:004890D1 -62C                lea     ecx, [ebp+var_E0] ; Load Effective Address
.text:004890D7 -62C                push    eax
.text:004890D8 -628                push    ecx
.text:004890D9 -624                mov     [ebp+var_C8], 1
.text:004890E3 -624                mov     [ebp+var_D0], 2
.text:004890ED -624                mov     [ebp+var_100], 4008h
.text:004890F7 -624                call    ds:rtcMidCharVar ; Indirect Call Near Procedure
.text:004890F7     
.text:004890FD -624                lea     edx, [ebp+var_E0] ; Load Effective Address
.text:00489103 -624                lea     eax, [ebp+var_C0] ; Load Effective Address
.text:00489109 -624                push    edx
.text:0048910A -620                push    eax
.text:0048910B -61C                call    ds:__vbaStrVarVal ; Indirect Call Near Procedure
.text:0048910B     
.text:00489111 -61C                push    eax
.text:00489112 -618                call    ds:rtcR8ValFromBstr ; Indirect Call Near Procedure
.text:00489112     
.text:00489118 -618                call    ds:__vbaFpI2    ; Indirect Call Near Procedure
.text:00489118     
.text:0048911E -618                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:00489124 -618                mov     [ebp+var_BC], eax
.text:0048912A -618                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:0048912A     
.text:00489130 -618                lea     ecx, [ebp+var_E0] ; Load Effective Address
.text:00489136 -618                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:0048913C -618                push    ecx
.text:0048913D -614                push    edx
.text:0048913E -610                push    2
.text:00489140 -60C                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:00489140     
.text:00489146 -618                mov     eax, [ebp+arg_4]
.text:00489149 -618                mov     ecx, [ebp+var_BC]
.text:0048914F -618                add     esp, 0Ch        ; Add
.text:00489152 -624                mov     ax, [eax]
.text:00489155 -624                cmp     cx, ax          ; Compare Two Operands
.text:00489158 -624                jl      short loc_489169 ; Jump if Less (SF!=OF)
.text:00489158     
.text:0048915A -624                sub     cx, ax          ; Integer Subtraction
.text:0048915D -624                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048915D     
.text:00489163 -624                mov     [ebp+var_BC], ecx
.text:00489169     
.text:00489169     loc_489169:                             ; CODE XREF: sub_488E70+2E8j
.text:00489169 -624                lea     edx, [ebp+var_100] ; Load Effective Address
.text:0048916F -624                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:00489175 -624                lea     ecx, [ebp+var_BC] ; Load Effective Address
.text:0048917B -624                push    edx
.text:0048917C -620                push    eax
.text:0048917D -61C                mov     [ebp+var_F8], ecx
.text:00489183 -61C                mov     [ebp+var_100], 4002h
.text:0048918D -61C                call    ds:rtcVarStrFromVar ; Indirect Call Near Procedure
.text:0048918D     
.text:00489193 -61C                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00489199 -61C                lea     edx, [ebp+var_E0] ; Load Effective Address
.text:0048919F -61C                push    ecx
.text:004891A0 -618                push    edx
.text:004891A1 -614                call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:004891A1     
.text:004891A7 -614                lea     edi, [esi-1]    ; Load Effective Address
.text:004891AA -614                cmp     edi, 0Ah        ; Compare Two Operands
.text:004891AD -614                jb      short loc_4891B5 ; Jump if Below (CF=1)
.text:004891AD     
.text:004891AF -614                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004891AF     
.text:004891B5     
.text:004891B5     loc_4891B5:                             ; CODE XREF: sub_488E70+33Dj
.text:004891B5 -614                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:004891BB -614                push    eax
.text:004891BC -610                call    ds:__vbaStrVarMove ; Indirect Call Near Procedure
.text:004891BC     
.text:004891C2 -610                mov     edx, eax
.text:004891C4 -610                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:004891CA -610                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:004891CA     
.text:004891CC -610                mov     ecx, [ebp+var_68]
.text:004891CF -610                mov     edx, eax
.text:004891D1 -610                lea     ecx, [ecx+edi*4] ; Load Effective Address
.text:004891D4 -610                call    ds:__vbaStrCopy ; Indirect Call Near Procedure
.text:004891D4     
.text:004891DA -610                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:004891E0 -610                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:004891E0     
.text:004891E6 -610                lea     edx, [ebp+var_E0] ; Load Effective Address
.text:004891EC -610                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:004891F2 -610                push    edx
.text:004891F3 -60C                push    eax
.text:004891F4 -608                push    2
.text:004891F6 -604                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:004891F6     
.text:004891FC -610                add     esp, 0Ch        ; Add
.text:004891FF -61C                jmp     short loc_489220 ; Jump
.text:004891FF     
.text:00489201     ; ---------------------------------------------------------------------------
.text:00489201     
.text:00489201     loc_489201:                             ; CODE XREF: sub_488E70+241j
.text:00489201 -634                lea     edi, [esi-1]    ; Load Effective Address
.text:00489204 -634                cmp     edi, 0Ah        ; Compare Two Operands
.text:00489207 -634                jb      short loc_48920F ; Jump if Below (CF=1)
.text:00489207     
.text:00489209 -634                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489209     
.text:0048920F     
.text:0048920F     loc_48920F:                             ; CODE XREF: sub_488E70+397j
.text:0048920F -634                mov     ecx, [ebp+var_68]
.text:00489212 -634                mov     edx, offset dword_436AF4
.text:00489217 -634                lea     ecx, [ecx+edi*4] ; Load Effective Address
.text:0048921A -634                call    ds:__vbaStrCopy ; Indirect Call Near Procedure
.text:0048921A     
.text:00489220     
.text:00489220     loc_489220:                             ; CODE XREF: sub_488E70+38Fj
.text:00489220 -634                mov     eax, 1
.text:00489225 -634                add     eax, esi        ; Add
.text:00489227 -634                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489227     
.text:0048922D -634                mov     esi, eax
.text:0048922F -634                jmp     loc_489032      ; Jump
.text:0048922F     
.text:00489234     ; ---------------------------------------------------------------------------
.text:00489234     
.text:00489234     loc_489234:                             ; CODE XREF: sub_488E70+1C9j
.text:00489234 -63C                mov     esi, 1
.text:00489239 -63C                mov     [ebp+var_18], esi
.text:0048923C     
.text:0048923C     loc_48923C:                             ; CODE XREF: sub_488E70+78Dj
.text:0048923C -63C                mov     eax, 9
.text:00489241 -63C                cmp     esi, eax        ; Compare Two Operands
.text:00489243 -63C                jg      loc_489602      ; Jump if Greater (ZF=0 & SF=OF)
.text:00489243     
.text:00489249 -63C                dec     esi             ; Decrement by 1
.text:0048924A -63C                cmp     esi, 0Ah        ; Compare Two Operands
.text:0048924D -63C                jb      short loc_489255 ; Jump if Below (CF=1)
.text:0048924D     
.text:0048924F -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048924F     
.text:00489255     
.text:00489255     loc_489255:                             ; CODE XREF: sub_488E70+3DDj
.text:00489255 -63C                mov     edi, [ebp+var_18]
.text:00489258 -63C                add     edi, 1          ; Add
.text:0048925B -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048925B     
.text:00489261 -63C                dec     edi             ; Decrement by 1
.text:00489262 -63C                cmp     edi, 0Ah        ; Compare Two Operands
.text:00489265 -63C                jb      short loc_48926D ; Jump if Below (CF=1)
.text:00489265     
.text:00489267 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489267     
.text:0048926D     
.text:0048926D     loc_48926D:                             ; CODE XREF: sub_488E70+3F5j
.text:0048926D -63C                mov     edx, [ebp+var_68]
.text:00489270 -63C                mov     eax, [edx+esi*4]
.text:00489273 -63C                push    eax
.text:00489274 -638                call    ds:__vbaR8Str   ; Indirect Call Near Procedure
.text:00489274     
.text:0048927A -638                fmul    ds:dbl_4017C0   ; Multiply Real
.text:00489280 -638                mov     ecx, [ebp+var_68]
.text:00489283 -638                mov     edx, [ecx+edi*4]
.text:00489286 -638                fnstsw  ax              ; Store Status Word (no wait)
.text:00489288 -638                test    al, 0Dh         ; Logical Compare
.text:0048928A -638                jnz     loc_489C20      ; Jump if Not Zero (ZF=0)
.text:0048928A     
.text:00489290 -638                fstp    [ebp+var_170]   ; Store Real and Pop
.text:00489296 -638                push    edx
.text:00489297 -634                call    ds:__vbaR8Str   ; Indirect Call Near Procedure
.text:00489297     
.text:0048929D -634                fadd    [ebp+var_170]   ; Add Real
.text:004892A3 -634                sub     esp, 8          ; Integer Subtraction
.text:004892A6 -62C                fnstsw  ax              ; Store Status Word (no wait)
.text:004892A8 -62C                test    al, 0Dh         ; Logical Compare
.text:004892AA -62C                jnz     loc_489C20      ; Jump if Not Zero (ZF=0)
.text:004892AA     
.text:004892B0 -62C                fstp    qword ptr [esp+0] ; Store Real and Pop
.text:004892B3 -62C                call    ds:__vbaStrR8   ; Indirect Call Near Procedure
.text:004892B3     
.text:004892B9 -62C                mov     edx, eax
.text:004892BB -62C                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:004892C1 -62C                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:004892C1     
.text:004892C3 -62C                push    eax
.text:004892C4 -628                call    ds:rtcR8ValFromBstr ; Indirect Call Near Procedure
.text:004892C4     
.text:004892CA -628                call    ds:__vbaFpI4    ; Indirect Call Near Procedure
.text:004892CA     
.text:004892D0 -628                mov     edi, eax
.text:004892D2 -628                and     edi, 80000001h  ; Logical AND
.text:004892D8 -628                jns     short loc_4892DF ; Jump if Not Sign (SF=0)
.text:004892D8     
.text:004892DA -628                dec     edi             ; Decrement by 1
.text:004892DB -628                or      edi, 0FFFFFFFEh ; Logical Inclusive OR
.text:004892DE -628                inc     edi             ; Increment by 1
.text:004892DF     
.text:004892DF     loc_4892DF:                             ; CODE XREF: sub_488E70+468j
.text:004892DF -628                neg     edi             ; Two's Complement Negation
.text:004892E1 -628                sbb     edi, edi        ; Integer Subtraction with Borrow
.text:004892E3 -628                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:004892E9 -628                inc     edi             ; Increment by 1
.text:004892EA -628                neg     edi             ; Two's Complement Negation
.text:004892EC -628                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:004892EC     
.text:004892F2 -628                test    di, di          ; Logical Compare
.text:004892F5 -628                jz      short loc_48935D ; Jump if Zero (ZF=1)
.text:004892F5     
.text:004892F7 -628                cmp     esi, 0Ah        ; Compare Two Operands
.text:004892FA -628                jb      short loc_489302 ; Jump if Below (CF=1)
.text:004892FA     
.text:004892FC -628                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004892FC     
.text:00489302     
.text:00489302     loc_489302:                             ; CODE XREF: sub_488E70+48Aj
.text:00489302 -628                mov     edi, [ebp+var_18]
.text:00489305 -628                add     edi, 1          ; Add
.text:00489308 -628                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489308     
.text:0048930E -628                dec     edi             ; Decrement by 1
.text:0048930F -628                cmp     edi, 0Ah        ; Compare Two Operands
.text:00489312 -628                jb      short loc_48931A ; Jump if Below (CF=1)
.text:00489312     
.text:00489314 -628                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489314     
.text:0048931A     
.text:0048931A     loc_48931A:                             ; CODE XREF: sub_488E70+4A2j
.text:0048931A -628                cmp     esi, 9          ; Compare Two Operands
.text:0048931D -628                jb      short loc_489325 ; Jump if Below (CF=1)
.text:0048931D     
.text:0048931F -628                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048931F     
.text:00489325     
.text:00489325     loc_489325:                             ; CODE XREF: sub_488E70+4ADj
.text:00489325 -628                mov     eax, [ebp+var_68]
.text:00489328 -628                mov     ecx, [eax+esi*4]
.text:0048932B -628                push    ecx
.text:0048932C -624                call    ds:__vbaR8Str   ; Indirect Call Near Procedure
.text:0048932C     
.text:00489332 -624                fmul    ds:dbl_4017C0   ; Multiply Real
.text:00489338 -624                mov     edx, [ebp+var_68]
.text:0048933B -624                fnstsw  ax              ; Store Status Word (no wait)
.text:0048933D -624                test    al, 0Dh         ; Logical Compare
.text:0048933F -624                jnz     loc_489C20      ; Jump if Not Zero (ZF=0)
.text:0048933F     
.text:00489345 -624                mov     eax, [edx+edi*4]
.text:00489348 -624                fstp    [ebp+var_178]   ; Store Real and Pop
.text:0048934E -624                push    eax
.text:0048934F -620                call    ds:__vbaR8Str   ; Indirect Call Near Procedure
.text:0048934F     
.text:00489355 -620                fadd    [ebp+var_178]   ; Add Real
.text:0048935B -620                jmp     short loc_4893C7 ; Jump
.text:0048935B     
.text:0048935D     ; ---------------------------------------------------------------------------
.text:0048935D     
.text:0048935D     loc_48935D:                             ; CODE XREF: sub_488E70+485j
.text:0048935D -628                cmp     esi, 0Ah        ; Compare Two Operands
.text:00489360 -628                jb      short loc_489368 ; Jump if Below (CF=1)
.text:00489360     
.text:00489362 -628                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489362     
.text:00489368     
.text:00489368     loc_489368:                             ; CODE XREF: sub_488E70+4F0j
.text:00489368 -628                mov     edi, [ebp+var_18]
.text:0048936B -628                add     edi, 1          ; Add
.text:0048936E -628                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048936E     
.text:00489374 -628                dec     edi             ; Decrement by 1
.text:00489375 -628                cmp     edi, 0Ah        ; Compare Two Operands
.text:00489378 -628                jb      short loc_489380 ; Jump if Below (CF=1)
.text:00489378     
.text:0048937A -628                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048937A     
.text:00489380     
.text:00489380     loc_489380:                             ; CODE XREF: sub_488E70+508j
.text:00489380 -628                cmp     esi, 9          ; Compare Two Operands
.text:00489383 -628                jb      short loc_48938B ; Jump if Below (CF=1)
.text:00489383     
.text:00489385 -628                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489385     
.text:0048938B     
.text:0048938B     loc_48938B:                             ; CODE XREF: sub_488E70+513j
.text:0048938B -628                mov     edx, [ebp+var_68]
.text:0048938E -628                mov     eax, [edx+esi*4]
.text:00489391 -628                push    eax
.text:00489392 -624                call    ds:__vbaR8Str   ; Indirect Call Near Procedure
.text:00489392     
.text:00489398 -624                fmul    ds:dbl_4017C0   ; Multiply Real
.text:0048939E -624                mov     ecx, [ebp+var_68]
.text:004893A1 -624                mov     edx, [ecx+edi*4]
.text:004893A4 -624                fnstsw  ax              ; Store Status Word (no wait)
.text:004893A6 -624                test    al, 0Dh         ; Logical Compare
.text:004893A8 -624                jnz     loc_489C20      ; Jump if Not Zero (ZF=0)
.text:004893A8     
.text:004893AE -624                fstp    [ebp+var_180]   ; Store Real and Pop
.text:004893B4 -624                push    edx
.text:004893B5 -620                call    ds:__vbaR8Str   ; Indirect Call Near Procedure
.text:004893B5     
.text:004893BB -620                fadd    [ebp+var_180]   ; Add Real
.text:004893C1 -620                fsub    ds:dbl_4017B8   ; Subtract Real
.text:004893C7     
.text:004893C7     loc_4893C7:                             ; CODE XREF: sub_488E70+4EBj
.text:004893C7 -620                cmp     dword_580000, 0 ; Compare Two Operands
.text:004893CE -620                jnz     short loc_4893D8 ; Jump if Not Zero (ZF=0)
.text:004893CE     
.text:004893D0 -620                fdiv    ds:dbl_4017B0   ; Divide Real
.text:004893D6 -620                jmp     short loc_4893E9 ; Jump
.text:004893D6     
.text:004893D8     ; ---------------------------------------------------------------------------
.text:004893D8     
.text:004893D8     loc_4893D8:                             ; CODE XREF: sub_488E70+55Ej
.text:004893D8 -620                push    dword ptr ds:dbl_4017B0+4
.text:004893DE -61C                push    dword ptr ds:dbl_4017B0
.text:004893E4 -618                call    _adj_fdiv_m64   ; Call Procedure
.text:004893E4     
.text:004893E9     
.text:004893E9     loc_4893E9:                             ; CODE XREF: sub_488E70+566j
.text:004893E9 -618                fnstsw  ax              ; Store Status Word (no wait)
.text:004893EB -618                test    al, 0Dh         ; Logical Compare
.text:004893ED -618                jnz     loc_489C20      ; Jump if Not Zero (ZF=0)
.text:004893ED     
.text:004893F3 -618                call    ds:__vbaFpI4    ; Indirect Call Near Procedure
.text:004893F3     
.text:004893F9 -618                mov     ecx, [ebp+var_30]
.text:004893FC -618                mov     edi, ds:__vbaGenerateBoundsError
.text:00489402 -618                cmp     esi, 9          ; Compare Two Operands
.text:00489405 -618                mov     [ecx+esi*4], eax
.text:00489408 -618                jb      short loc_48940C ; Jump if Below (CF=1)
.text:00489408     
.text:0048940A -618                call    edi ; __vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048940A     
.text:0048940C     
.text:0048940C     loc_48940C:                             ; CODE XREF: sub_488E70+598j
.text:0048940C -618                mov     edx, [ebp+var_30]
.text:0048940F -618                cmp     dword ptr [edx+esi*4], 0Ah ; Compare Two Operands
.text:00489413 -618                jl      short loc_489494 ; Jump if Less (SF!=OF)
.text:00489413     
.text:00489415 -618                cmp     esi, 9          ; Compare Two Operands
.text:00489418 -618                jb      short loc_48941C ; Jump if Below (CF=1)
.text:00489418     
.text:0048941A -618                call    edi ; __vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048941A     
.text:0048941C     
.text:0048941C     loc_48941C:                             ; CODE XREF: sub_488E70+5A8j
.text:0048941C -618                mov     eax, [ebp+var_30]
.text:0048941F -618                lea     edx, [ebp+var_100] ; Load Effective Address
.text:00489425 -618                push    edx
.text:00489426 -614                mov     [ebp+var_100], 4003h
.text:00489430 -614                lea     ecx, [eax+esi*4] ; Load Effective Address
.text:00489433 -614                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:00489439 -614                push    eax
.text:0048943A -610                mov     [ebp+var_F8], ecx
.text:00489440 -610                call    ds:rtcVarStrFromVar ; Indirect Call Near Procedure
.text:00489440     
.text:00489446 -610                cmp     esi, 9          ; Compare Two Operands
.text:00489449 -610                jb      short loc_48944D ; Jump if Below (CF=1)
.text:00489449     
.text:0048944B -610                call    edi ; __vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048944B     
.text:0048944D     
.text:0048944D     loc_48944D:                             ; CODE XREF: sub_488E70+5D9j
.text:0048944D -610                mov     edi, ds:__vbaStrVarMove
.text:00489453 -610                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00489459 -610                push    ecx
.text:0048945A -60C                call    edi ; __vbaStrVarMove ; Indirect Call Near Procedure
.text:0048945A     
.text:0048945C -60C                mov     edx, eax
.text:0048945E -60C                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:00489464 -60C                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00489464     
.text:00489466 -60C                mov     edx, eax
.text:00489468 -60C                mov     eax, [ebp+var_A0]
.text:0048946E -60C                lea     ecx, [eax+esi*4] ; Load Effective Address
.text:00489471 -60C                call    ds:__vbaStrCopy ; Indirect Call Near Procedure
.text:00489471     
.text:00489477 -60C                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:0048947D -60C                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:0048947D     
.text:00489483 -60C                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00489489 -60C                call    ds:__vbaFreeVar ; Indirect Call Near Procedure
.text:00489489     
.text:0048948F -60C                jmp     loc_48955F      ; Jump
.text:0048948F     
.text:00489494     ; ---------------------------------------------------------------------------
.text:00489494     
.text:00489494     loc_489494:                             ; CODE XREF: sub_488E70+5A3j
.text:00489494 -618                cmp     esi, 9          ; Compare Two Operands
.text:00489497 -618                mov     [ebp+var_108], offset dword_436AF4
.text:004894A1 -618                mov     [ebp+var_110], 8
.text:004894AB -618                jb      short loc_4894AF ; Jump if Below (CF=1)
.text:004894AB     
.text:004894AD -618                call    edi ; __vbaStrVarMove ; Indirect Call Near Procedure
.text:004894AD     
.text:004894AF     
.text:004894AF     loc_4894AF:                             ; CODE XREF: sub_488E70+63Bj
.text:004894AF -618                mov     ecx, [ebp+var_30]
.text:004894B2 -618                lea     eax, [ebp+var_100] ; Load Effective Address
.text:004894B8 -618                push    eax
.text:004894B9 -614                mov     [ebp+var_100], 4003h
.text:004894C3 -614                lea     edx, [ecx+esi*4] ; Load Effective Address
.text:004894C6 -614                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:004894CC -614                push    ecx
.text:004894CD -610                mov     [ebp+var_F8], edx
.text:004894D3 -610                call    ds:rtcVarStrFromVar ; Indirect Call Near Procedure
.text:004894D3     
.text:004894D9 -610                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:004894DF -610                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:004894E5 -610                push    edx
.text:004894E6 -60C                push    eax
.text:004894E7 -608                call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:004894E7     
.text:004894ED -608                cmp     esi, 9          ; Compare Two Operands
.text:004894F0 -608                jb      short loc_4894F4 ; Jump if Below (CF=1)
.text:004894F0     
.text:004894F2 -608                call    edi ; __vbaStrVarMove ; Indirect Call Near Procedure
.text:004894F2     
.text:004894F4     
.text:004894F4     loc_4894F4:                             ; CODE XREF: sub_488E70+680j
.text:004894F4 -608                lea     ecx, [ebp+var_110] ; Load Effective Address
.text:004894FA -608                lea     edx, [ebp+var_E0] ; Load Effective Address
.text:00489500 -608                push    ecx
.text:00489501 -604                lea     eax, [ebp+var_F0] ; Load Effective Address
.text:00489507 -604                push    edx
.text:00489508 -600                push    eax
.text:00489509 -5FC                call    ds:__vbaVarCat  ; Indirect Call Near Procedure
.text:00489509     
.text:0048950F -5FC                mov     edi, ds:__vbaStrVarMove
.text:00489515 -5FC                push    eax
.text:00489516 -5F8                call    edi ; __vbaStrVarMove ; Indirect Call Near Procedure
.text:00489516     
.text:00489518 -5F8                mov     edx, eax
.text:0048951A -5F8                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:00489520 -5F8                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00489520     
.text:00489522 -5F8                mov     ecx, [ebp+var_A0]
.text:00489528 -5F8                mov     edx, eax
.text:0048952A -5F8                lea     ecx, [ecx+esi*4] ; Load Effective Address
.text:0048952D -5F8                call    ds:__vbaStrCopy ; Indirect Call Near Procedure
.text:0048952D     
.text:00489533 -5F8                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:00489539 -5F8                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:00489539     
.text:0048953F -5F8                lea     edx, [ebp+var_F0] ; Load Effective Address
.text:00489545 -5F8                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:0048954B -5F8                push    edx
.text:0048954C -5F4                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00489552 -5F4                push    eax
.text:00489553 -5F0                push    ecx
.text:00489554 -5EC                push    3
.text:00489556 -5E8                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:00489556     
.text:0048955C -5F4                add     esp, 10h        ; Add
.text:0048955F     
.text:0048955F     loc_48955F:                             ; CODE XREF: sub_488E70+61Fj
.text:0048955F -604                mov     edx, [ebp+var_1C]
.text:00489562 -604                cmp     esi, 9          ; Compare Two Operands
.text:00489565 -604                mov     [ebp+var_108], edx
.text:0048956B -604                mov     [ebp+var_110], 8
.text:00489575 -604                jb      short loc_48957D ; Jump if Below (CF=1)
.text:00489575     
.text:00489577 -604                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489577     
.text:0048957D     
.text:0048957D     loc_48957D:                             ; CODE XREF: sub_488E70+705j
.text:0048957D -604                mov     eax, [ebp+var_A0]
.text:00489583 -604                lea     edx, [ebp+var_100] ; Load Effective Address
.text:00489589 -604                push    edx
.text:0048958A -600                mov     [ebp+var_100], 4008h
.text:00489594 -600                lea     ecx, [eax+esi*4] ; Load Effective Address
.text:00489597 -600                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:0048959D -600                push    eax
.text:0048959E -5FC                mov     [ebp+var_F8], ecx
.text:004895A4 -5FC                call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:004895A4     
.text:004895AA -5FC                lea     ecx, [ebp+var_110] ; Load Effective Address
.text:004895B0 -5FC                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:004895B6 -5FC                push    ecx
.text:004895B7 -5F8                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:004895BD -5F8                push    edx
.text:004895BE -5F4                push    eax
.text:004895BF -5F0                call    ds:__vbaVarCat  ; Indirect Call Near Procedure
.text:004895BF     
.text:004895C5 -5F0                push    eax
.text:004895C6 -5EC                call    edi ; __vbaStrVarMove ; Indirect Call Near Procedure
.text:004895C6     
.text:004895C8 -5EC                mov     edx, eax
.text:004895CA -5EC                lea     ecx, [ebp+var_1C] ; Load Effective Address
.text:004895CD -5EC                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:004895CD     
.text:004895CF -5EC                lea     ecx, [ebp+var_E0] ; Load Effective Address
.text:004895D5 -5EC                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:004895DB -5EC                push    ecx
.text:004895DC -5E8                push    edx
.text:004895DD -5E4                push    2
.text:004895DF -5E0                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:004895DF     
.text:004895E5 -5EC                mov     ecx, [ebp+var_18]
.text:004895E8 -5EC                mov     eax, 1
.text:004895ED -5EC                add     esp, 0Ch        ; Add
.text:004895F0 -5F8                add     eax, ecx        ; Add
.text:004895F2 -5F8                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004895F2     
.text:004895F8 -5F8                mov     [ebp+var_18], eax
.text:004895FB -5F8                mov     esi, eax
.text:004895FD -5F8                jmp     loc_48923C      ; Jump
.text:004895FD     
.text:00489602     ; ---------------------------------------------------------------------------
.text:00489602     
.text:00489602     loc_489602:                             ; CODE XREF: sub_488E70+3D3j
.text:00489602 -63C                mov     esi, 1
.text:00489607     
.text:00489607     loc_489607:                             ; CODE XREF: sub_488E70+850j
.text:00489607 -63C                mov     eax, 12h
.text:0048960C -63C                cmp     esi, eax        ; Compare Two Operands
.text:0048960E -63C                jg      loc_4896C5      ; Jump if Greater (ZF=0 & SF=OF)
.text:0048960E     
.text:00489614 -63C                lea     eax, [ebp+var_1C] ; Load Effective Address
.text:00489617 -63C                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:0048961D -63C                mov     [ebp+var_F8], eax
.text:00489623 -63C                push    ecx
.text:00489624 -638                lea     edx, [ebp+var_100] ; Load Effective Address
.text:0048962A -638                push    esi
.text:0048962B -634                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:00489631 -634                push    edx
.text:00489632 -630                push    eax
.text:00489633 -62C                mov     [ebp+var_C8], 1
.text:0048963D -62C                mov     [ebp+var_D0], 2
.text:00489647 -62C                mov     [ebp+var_100], 4008h
.text:00489651 -62C                call    ds:rtcMidCharVar ; Indirect Call Near Procedure
.text:00489651     
.text:00489657 -62C                lea     edi, [esi-1]    ; Load Effective Address
.text:0048965A -62C                cmp     edi, 12h        ; Compare Two Operands
.text:0048965D -62C                jb      short loc_489665 ; Jump if Below (CF=1)
.text:0048965D     
.text:0048965F -62C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048965F     
.text:00489665     
.text:00489665     loc_489665:                             ; CODE XREF: sub_488E70+7EDj
.text:00489665 -62C                lea     ecx, [ebp+var_E0] ; Load Effective Address
.text:0048966B -62C                lea     edx, [ebp+var_C0] ; Load Effective Address
.text:00489671 -62C                push    ecx
.text:00489672 -628                push    edx
.text:00489673 -624                call    ds:__vbaStrVarVal ; Indirect Call Near Procedure
.text:00489673     
.text:00489679 -624                push    eax
.text:0048967A -620                call    ds:rtcR8ValFromBstr ; Indirect Call Near Procedure
.text:0048967A     
.text:00489680 -620                call    ds:__vbaFpI4    ; Indirect Call Near Procedure
.text:00489680     
.text:00489686 -620                mov     ecx, [ebp+var_4C]
.text:00489689 -620                mov     [ecx+edi*4], eax
.text:0048968C -620                lea     ecx, [ebp+var_C0] ; Load Effective Address
.text:00489692 -620                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:00489692     
.text:00489698 -620                lea     edx, [ebp+var_E0] ; Load Effective Address
.text:0048969E -620                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:004896A4 -620                push    edx
.text:004896A5 -61C                push    eax
.text:004896A6 -618                push    2
.text:004896A8 -614                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:004896A8     
.text:004896AE -620                mov     eax, 1
.text:004896B3 -620                add     esp, 0Ch        ; Add
.text:004896B6 -62C                add     eax, esi        ; Add
.text:004896B8 -62C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004896B8     
.text:004896BE -62C                mov     esi, eax
.text:004896C0 -62C                jmp     loc_489607      ; Jump
.text:004896C0     
.text:004896C5     ; ---------------------------------------------------------------------------
.text:004896C5     
.text:004896C5     loc_4896C5:                             ; CODE XREF: sub_488E70+79Ej
.text:004896C5 -63C                mov     edi, 1
.text:004896CA     
.text:004896CA     loc_4896CA:                             ; CODE XREF: sub_488E70+BE5j
.text:004896CA -63C                mov     eax, 10h
.text:004896CF -63C                cmp     edi, eax        ; Compare Two Operands
.text:004896D1 -63C                jg      loc_489A5A      ; Jump if Greater (ZF=0 & SF=OF)
.text:004896D1     
.text:004896D7 -63C                lea     esi, [edi-1]    ; Load Effective Address
.text:004896DA -63C                cmp     esi, 12h        ; Compare Two Operands
.text:004896DD -63C                jb      short loc_4896E5 ; Jump if Below (CF=1)
.text:004896DD     
.text:004896DF -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004896DF     
.text:004896E5     
.text:004896E5     loc_4896E5:                             ; CODE XREF: sub_488E70+86Dj
.text:004896E5 -63C                mov     eax, edi
.text:004896E7 -63C                add     eax, 1          ; Add
.text:004896EA -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004896EA     
.text:004896F0 -63C                dec     eax             ; Decrement by 1
.text:004896F1 -63C                cmp     eax, 12h        ; Compare Two Operands
.text:004896F4 -63C                mov     [ebp+var_12C], eax
.text:004896FA -63C                jb      short loc_489702 ; Jump if Below (CF=1)
.text:004896FA     
.text:004896FC -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004896FC     
.text:00489702     
.text:00489702     loc_489702:                             ; CODE XREF: sub_488E70+88Aj
.text:00489702 -63C                mov     eax, edi
.text:00489704 -63C                add     eax, 2          ; Add
.text:00489707 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489707     
.text:0048970D -63C                dec     eax             ; Decrement by 1
.text:0048970E -63C                cmp     eax, 12h        ; Compare Two Operands
.text:00489711 -63C                mov     [ebp+var_130], eax
.text:00489717 -63C                jb      short loc_48971F ; Jump if Below (CF=1)
.text:00489717     
.text:00489719 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489719     
.text:0048971F     
.text:0048971F     loc_48971F:                             ; CODE XREF: sub_488E70+8A7j
.text:0048971F -63C                cmp     esi, 12h        ; Compare Two Operands
.text:00489722 -63C                jb      short loc_48972A ; Jump if Below (CF=1)
.text:00489722     
.text:00489724 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489724     
.text:0048972A     
.text:0048972A     loc_48972A:                             ; CODE XREF: sub_488E70+8B2j
.text:0048972A -63C                mov     eax, edi
.text:0048972C -63C                add     eax, 1          ; Add
.text:0048972F -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048972F     
.text:00489735 -63C                dec     eax             ; Decrement by 1
.text:00489736 -63C                cmp     eax, 12h        ; Compare Two Operands
.text:00489739 -63C                mov     [ebp+var_138], eax
.text:0048973F -63C                jb      short loc_489747 ; Jump if Below (CF=1)
.text:0048973F     
.text:00489741 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489741     
.text:00489747     
.text:00489747     loc_489747:                             ; CODE XREF: sub_488E70+8CFj
.text:00489747 -63C                mov     ebx, edi
.text:00489749 -63C                add     ebx, 2          ; Add
.text:0048974C -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048974C     
.text:00489752 -63C                dec     ebx             ; Decrement by 1
.text:00489753 -63C                cmp     ebx, 12h        ; Compare Two Operands
.text:00489756 -63C                jb      short loc_48975E ; Jump if Below (CF=1)
.text:00489756     
.text:00489758 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489758     
.text:0048975E     
.text:0048975E     loc_48975E:                             ; CODE XREF: sub_488E70+8E6j
.text:0048975E -63C                mov     eax, [ebp+var_4C]
.text:00489761 -63C                mov     ecx, [ebp+var_138]
.text:00489767 -63C                mov     edx, [eax+ecx*4]
.text:0048976A -63C                mov     ecx, [eax+esi*4]
.text:0048976D -63C                add     edx, ecx        ; Add
.text:0048976F -63C                mov     ecx, [eax+ebx*4]
.text:00489772 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489772     
.text:00489778 -63C                add     edx, ecx        ; Add
.text:0048977A -63C                mov     ebx, [eax+esi*4]
.text:0048977D -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048977D     
.text:00489783 -63C                xor     ecx, ecx        ; Logical Exclusive OR
.text:00489785 -63C                cmp     edx, 14h        ; Compare Two Operands
.text:00489788 -63C                mov     edx, [ebp+var_12C]
.text:0048978E -63C                setnl   cl              ; Set Byte if Not Less or Equal (ZF=0 & SF=OF)
.text:00489791 -63C                mov     edx, [eax+edx*4]
.text:00489794 -63C                add     edx, ebx        ; Add
.text:00489796 -63C                mov     ebx, [ebp+var_130]
.text:0048979C -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048979C     
.text:004897A2 -63C                add     edx, [eax+ebx*4] ; Add
.text:004897A5 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004897A5     
.text:004897AB -63C                xor     ebx, ebx        ; Logical Exclusive OR
.text:004897AD -63C                cmp     edx, 0Ah        ; Compare Two Operands
.text:004897B0 -63C                setl    bl              ; Set Byte if Less (SF!=OF)
.text:004897B3 -63C                or      ecx, ebx        ; Logical Inclusive OR
.text:004897B5 -63C                jnz     short loc_489834 ; Jump if Not Zero (ZF=0)
.text:004897B5     
.text:004897B7 -63C                cmp     esi, 12h        ; Compare Two Operands
.text:004897BA -63C                jb      short loc_4897C5 ; Jump if Below (CF=1)
.text:004897BA     
.text:004897BC -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004897BC     
.text:004897C2 -63C                mov     eax, [ebp+var_4C]
.text:004897C5     
.text:004897C5     loc_4897C5:                             ; CODE XREF: sub_488E70+94Aj
.text:004897C5 -63C                mov     ecx, edi
.text:004897C7 -63C                add     ecx, 1          ; Add
.text:004897CA -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004897CA     
.text:004897D0 -63C                dec     ecx             ; Decrement by 1
.text:004897D1 -63C                cmp     ecx, 12h        ; Compare Two Operands
.text:004897D4 -63C                mov     [ebp+var_130], ecx
.text:004897DA -63C                jb      short loc_4897E5 ; Jump if Below (CF=1)
.text:004897DA     
.text:004897DC -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004897DC     
.text:004897E2 -63C                mov     eax, [ebp+var_4C]
.text:004897E5     
.text:004897E5     loc_4897E5:                             ; CODE XREF: sub_488E70+96Aj
.text:004897E5 -63C                mov     ebx, edi
.text:004897E7 -63C                add     ebx, 2          ; Add
.text:004897EA -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004897EA     
.text:004897F0 -63C                dec     ebx             ; Decrement by 1
.text:004897F1 -63C                cmp     ebx, 12h        ; Compare Two Operands
.text:004897F4 -63C                jb      short loc_4897FF ; Jump if Below (CF=1)
.text:004897F4     
.text:004897F6 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004897F6     
.text:004897FC -63C                mov     eax, [ebp+var_4C]
.text:004897FF     
.text:004897FF     loc_4897FF:                             ; CODE XREF: sub_488E70+984j
.text:004897FF -63C                cmp     esi, 10h        ; Compare Two Operands
.text:00489802 -63C                jb      short loc_48980D ; Jump if Below (CF=1)
.text:00489802     
.text:00489804 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489804     
.text:0048980A -63C                mov     eax, [ebp+var_4C]
.text:0048980D     
.text:0048980D     loc_48980D:                             ; CODE XREF: sub_488E70+992j
.text:0048980D -63C                mov     ecx, [ebp+var_130]
.text:00489813 -63C                mov     edx, [eax+ecx*4]
.text:00489816 -63C                mov     ecx, [eax+esi*4]
.text:00489819 -63C                add     edx, ecx        ; Add
.text:0048981B -63C                mov     ecx, [eax+ebx*4]
.text:0048981E -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048981E     
.text:00489824 -63C                add     edx, ecx        ; Add
.text:00489826 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489826     
.text:0048982C -63C                sub     edx, 0Ah        ; Integer Subtraction
.text:0048982F -63C                jmp     loc_489989      ; Jump
.text:0048982F     
.text:00489834     ; ---------------------------------------------------------------------------
.text:00489834     
.text:00489834     loc_489834:                             ; CODE XREF: sub_488E70+945j
.text:00489834 -63C                cmp     esi, 12h        ; Compare Two Operands
.text:00489837 -63C                jb      short loc_489842 ; Jump if Below (CF=1)
.text:00489837     
.text:00489839 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489839     
.text:0048983F -63C                mov     eax, [ebp+var_4C]
.text:00489842     
.text:00489842     loc_489842:                             ; CODE XREF: sub_488E70+9C7j
.text:00489842 -63C                mov     ecx, edi
.text:00489844 -63C                add     ecx, 1          ; Add
.text:00489847 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489847     
.text:0048984D -63C                dec     ecx             ; Decrement by 1
.text:0048984E -63C                cmp     ecx, 12h        ; Compare Two Operands
.text:00489851 -63C                mov     [ebp+var_12C], ecx
.text:00489857 -63C                jb      short loc_489862 ; Jump if Below (CF=1)
.text:00489857     
.text:00489859 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489859     
.text:0048985F -63C                mov     eax, [ebp+var_4C]
.text:00489862     
.text:00489862     loc_489862:                             ; CODE XREF: sub_488E70+9E7j
.text:00489862 -63C                mov     ebx, edi
.text:00489864 -63C                add     ebx, 2          ; Add
.text:00489867 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489867     
.text:0048986D -63C                dec     ebx             ; Decrement by 1
.text:0048986E -63C                cmp     ebx, 12h        ; Compare Two Operands
.text:00489871 -63C                jb      short loc_48987C ; Jump if Below (CF=1)
.text:00489871     
.text:00489873 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489873     
.text:00489879 -63C                mov     eax, [ebp+var_4C]
.text:0048987C     
.text:0048987C     loc_48987C:                             ; CODE XREF: sub_488E70+A01j
.text:0048987C -63C                mov     ecx, [ebp+var_12C]
.text:00489882 -63C                mov     edx, [eax+ecx*4]
.text:00489885 -63C                mov     ecx, [eax+esi*4]
.text:00489888 -63C                add     edx, ecx        ; Add
.text:0048988A -63C                mov     ecx, [eax+ebx*4]
.text:0048988D -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048988D     
.text:00489893 -63C                add     edx, ecx        ; Add
.text:00489895 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489895     
.text:0048989B -63C                cmp     edx, 14h        ; Compare Two Operands
.text:0048989E -63C                jl      short loc_48991A ; Jump if Less (SF!=OF)
.text:0048989E     
.text:004898A0 -63C                cmp     esi, 12h        ; Compare Two Operands
.text:004898A3 -63C                jb      short loc_4898AE ; Jump if Below (CF=1)
.text:004898A3     
.text:004898A5 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004898A5     
.text:004898AB -63C                mov     eax, [ebp+var_4C]
.text:004898AE     
.text:004898AE     loc_4898AE:                             ; CODE XREF: sub_488E70+A33j
.text:004898AE -63C                mov     ecx, edi
.text:004898B0 -63C                add     ecx, 1          ; Add
.text:004898B3 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004898B3     
.text:004898B9 -63C                dec     ecx             ; Decrement by 1
.text:004898BA -63C                cmp     ecx, 12h        ; Compare Two Operands
.text:004898BD -63C                mov     [ebp+var_130], ecx
.text:004898C3 -63C                jb      short loc_4898CE ; Jump if Below (CF=1)
.text:004898C3     
.text:004898C5 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004898C5     
.text:004898CB -63C                mov     eax, [ebp+var_4C]
.text:004898CE     
.text:004898CE     loc_4898CE:                             ; CODE XREF: sub_488E70+A53j
.text:004898CE -63C                mov     ebx, edi
.text:004898D0 -63C                add     ebx, 2          ; Add
.text:004898D3 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:004898D3     
.text:004898D9 -63C                dec     ebx             ; Decrement by 1
.text:004898DA -63C                cmp     ebx, 12h        ; Compare Two Operands
.text:004898DD -63C                jb      short loc_4898E8 ; Jump if Below (CF=1)
.text:004898DD     
.text:004898DF -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004898DF     
.text:004898E5 -63C                mov     eax, [ebp+var_4C]
.text:004898E8     
.text:004898E8     loc_4898E8:                             ; CODE XREF: sub_488E70+A6Dj
.text:004898E8 -63C                cmp     esi, 10h        ; Compare Two Operands
.text:004898EB -63C                jb      short loc_4898F6 ; Jump if Below (CF=1)
.text:004898EB     
.text:004898ED -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004898ED     
.text:004898F3 -63C                mov     eax, [ebp+var_4C]
.text:004898F6     
.text:004898F6     loc_4898F6:                             ; CODE XREF: sub_488E70+A7Bj
.text:004898F6 -63C                mov     ecx, [ebp+var_130]
.text:004898FC -63C                mov     edx, [eax+ecx*4]
.text:004898FF -63C                mov     ecx, [eax+esi*4]
.text:00489902 -63C                add     edx, ecx        ; Add
.text:00489904 -63C                mov     ecx, [eax+ebx*4]
.text:00489907 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489907     
.text:0048990D -63C                add     edx, ecx        ; Add
.text:0048990F -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048990F     
.text:00489915 -63C                sub     edx, 14h        ; Integer Subtraction
.text:00489918 -63C                jmp     short loc_489989 ; Jump
.text:00489918     
.text:0048991A     ; ---------------------------------------------------------------------------
.text:0048991A     
.text:0048991A     loc_48991A:                             ; CODE XREF: sub_488E70+A2Ej
.text:0048991A -63C                cmp     esi, 12h        ; Compare Two Operands
.text:0048991D -63C                jb      short loc_489928 ; Jump if Below (CF=1)
.text:0048991D     
.text:0048991F -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048991F     
.text:00489925 -63C                mov     eax, [ebp+var_4C]
.text:00489928     
.text:00489928     loc_489928:                             ; CODE XREF: sub_488E70+AADj
.text:00489928 -63C                mov     ecx, edi
.text:0048992A -63C                add     ecx, 1          ; Add
.text:0048992D -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048992D     
.text:00489933 -63C                dec     ecx             ; Decrement by 1
.text:00489934 -63C                cmp     ecx, 12h        ; Compare Two Operands
.text:00489937 -63C                mov     [ebp+var_130], ecx
.text:0048993D -63C                jb      short loc_489948 ; Jump if Below (CF=1)
.text:0048993D     
.text:0048993F -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:0048993F     
.text:00489945 -63C                mov     eax, [ebp+var_4C]
.text:00489948     
.text:00489948     loc_489948:                             ; CODE XREF: sub_488E70+ACDj
.text:00489948 -63C                mov     ebx, edi
.text:0048994A -63C                add     ebx, 2          ; Add
.text:0048994D -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048994D     
.text:00489953 -63C                dec     ebx             ; Decrement by 1
.text:00489954 -63C                cmp     ebx, 12h        ; Compare Two Operands
.text:00489957 -63C                jb      short loc_489962 ; Jump if Below (CF=1)
.text:00489957     
.text:00489959 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489959     
.text:0048995F -63C                mov     eax, [ebp+var_4C]
.text:00489962     
.text:00489962     loc_489962:                             ; CODE XREF: sub_488E70+AE7j
.text:00489962 -63C                cmp     esi, 10h        ; Compare Two Operands
.text:00489965 -63C                jb      short loc_489970 ; Jump if Below (CF=1)
.text:00489965     
.text:00489967 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:00489967     
.text:0048996D -63C                mov     eax, [ebp+var_4C]
.text:00489970     
.text:00489970     loc_489970:                             ; CODE XREF: sub_488E70+AF5j
.text:00489970 -63C                mov     ecx, [ebp+var_130]
.text:00489976 -63C                mov     edx, [eax+ecx*4]
.text:00489979 -63C                mov     ecx, [eax+esi*4]
.text:0048997C -63C                add     edx, ecx        ; Add
.text:0048997E -63C                mov     ecx, [eax+ebx*4]
.text:00489981 -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489981     
.text:00489987 -63C                add     edx, ecx        ; Add
.text:00489989     
.text:00489989     loc_489989:                             ; CODE XREF: sub_488E70+9BFj
.text:00489989                                             ; sub_488E70+AA8j
.text:00489989 -63C                mov     eax, [ebp+var_84]
.text:0048998F -63C                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:0048998F     
.text:00489995 -63C                mov     [eax+esi*4], edx
.text:00489998 -63C                mov     ecx, [ebp+var_20]
.text:0048999B -63C                cmp     esi, 10h        ; Compare Two Operands
.text:0048999E -63C                mov     [ebp+var_108], ecx
.text:004899A4 -63C                mov     [ebp+var_110], 8
.text:004899AE -63C                jb      short loc_4899B6 ; Jump if Below (CF=1)
.text:004899AE     
.text:004899B0 -63C                call    ds:__vbaGenerateBoundsError ; Indirect Call Near Procedure
.text:004899B0     
.text:004899B6     
.text:004899B6     loc_4899B6:                             ; CODE XREF: sub_488E70+B3Ej
.text:004899B6 -63C                mov     edx, [ebp+var_84]
.text:004899BC -63C                lea     ecx, [ebp+var_100] ; Load Effective Address
.text:004899C2 -63C                push    ecx
.text:004899C3 -638                mov     [ebp+var_100], 4003h
.text:004899CD -638                lea     eax, [edx+esi*4] ; Load Effective Address
.text:004899D0 -638                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:004899D6 -638                push    edx
.text:004899D7 -634                mov     [ebp+var_F8], eax
.text:004899DD -634                call    ds:rtcVarStrFromVar ; Indirect Call Near Procedure
.text:004899DD     
.text:004899E3 -634                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:004899E9 -634                lea     ecx, [ebp+var_E0] ; Load Effective Address
.text:004899EF -634                push    eax
.text:004899F0 -630                push    ecx
.text:004899F1 -62C                call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:004899F1     
.text:004899F7 -62C                lea     edx, [ebp+var_110] ; Load Effective Address
.text:004899FD -62C                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:00489A03 -62C                push    edx
.text:00489A04 -628                lea     ecx, [ebp+var_F0] ; Load Effective Address
.text:00489A0A -628                push    eax
.text:00489A0B -624                push    ecx
.text:00489A0C -620                call    ds:__vbaVarCat  ; Indirect Call Near Procedure
.text:00489A0C     
.text:00489A12 -620                push    eax
.text:00489A13 -61C                call    ds:__vbaStrVarMove ; Indirect Call Near Procedure
.text:00489A13     
.text:00489A19 -61C                mov     ebx, ds:__vbaStrMove
.text:00489A1F -61C                mov     edx, eax
.text:00489A21 -61C                lea     ecx, [ebp+var_20] ; Load Effective Address
.text:00489A24 -61C                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00489A24     
.text:00489A26 -61C                lea     edx, [ebp+var_F0] ; Load Effective Address
.text:00489A2C -61C                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:00489A32 -61C                push    edx
.text:00489A33 -618                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00489A39 -618                push    eax
.text:00489A3A -614                push    ecx
.text:00489A3B -610                push    3
.text:00489A3D -60C                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:00489A3D     
.text:00489A43 -618                mov     eax, 1
.text:00489A48 -618                add     esp, 10h        ; Add
.text:00489A4B -628                add     eax, edi        ; Add
.text:00489A4D -628                jo      loc_489C25      ; Jump if Overflow (OF=1)
.text:00489A4D     
.text:00489A53 -628                mov     edi, eax
.text:00489A55 -628                jmp     loc_4896CA      ; Jump
.text:00489A55     
.text:00489A5A     ; ---------------------------------------------------------------------------
.text:00489A5A     
.text:00489A5A     loc_489A5A:                             ; CODE XREF: sub_488E70+861j
.text:00489A5A -63C                lea     edx, [ebp+var_20] ; Load Effective Address
.text:00489A5D -63C                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:00489A63 -63C                mov     [ebp+var_F8], edx
.text:00489A69 -63C                push    eax
.text:00489A6A -638                lea     ecx, [ebp+var_100] ; Load Effective Address
.text:00489A70 -638                push    1
.text:00489A72 -634                lea     edx, [ebp+var_E0] ; Load Effective Address
.text:00489A78 -634                mov     edi, 4008h
.text:00489A7D -634                push    ecx
.text:00489A7E -630                push    edx
.text:00489A7F -62C                mov     [ebp+var_C8], 0Fh
.text:00489A89 -62C                mov     [ebp+var_D0], 2
.text:00489A93 -62C                mov     [ebp+var_100], edi
.text:00489A99 -62C                call    ds:rtcMidCharVar ; Indirect Call Near Procedure
.text:00489A99     
.text:00489A9F -62C                mov     esi, ds:__vbaStrVarMove
.text:00489AA5 -62C                lea     eax, [ebp+var_E0] ; Load Effective Address
.text:00489AAB -62C                push    eax
.text:00489AAC -628                call    esi ; __vbaStrVarMove ; Indirect Call Near Procedure
.text:00489AAC     
.text:00489AAE -628                mov     edx, eax
.text:00489AB0 -628                lea     ecx, [ebp+var_20] ; Load Effective Address
.text:00489AB3 -628                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00489AB3     
.text:00489AB5 -628                lea     ecx, [ebp+var_E0] ; Load Effective Address
.text:00489ABB -628                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:00489AC1 -628                push    ecx
.text:00489AC2 -624                push    edx
.text:00489AC3 -620                push    2
.text:00489AC5 -61C                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:00489AC5     
.text:00489ACB -628                add     esp, 0Ch        ; Add
.text:00489ACE -634                lea     ecx, [ebp+var_100] ; Load Effective Address
.text:00489AD4 -634                lea     edx, [ebp+var_D0] ; Load Effective Address
.text:00489ADA -634                lea     eax, [ebp+var_20] ; Load Effective Address
.text:00489ADD -634                push    ecx
.text:00489ADE -630                push    edx
.text:00489ADF -62C                mov     [ebp+var_F8], eax
.text:00489AE5 -62C                mov     [ebp+var_100], edi
.text:00489AEB -62C                call    ds:rtcTrimVar   ; Indirect Call Near Procedure
.text:00489AEB     
.text:00489AF1 -62C                lea     eax, [ebp+var_D0] ; Load Effective Address
.text:00489AF7 -62C                push    eax
.text:00489AF8 -628                call    esi ; __vbaStrVarMove ; Indirect Call Near Procedure
.text:00489AF8     
.text:00489AFA -628                mov     edx, eax
.text:00489AFC -628                lea     ecx, [ebp+var_B4] ; Load Effective Address
.text:00489B02 -628                call    ebx ; __vbaStrMove ; Indirect Call Near Procedure
.text:00489B02     
.text:00489B04 -628                lea     ecx, [ebp+var_D0] ; Load Effective Address
.text:00489B0A -628                call    ds:__vbaFreeVar ; Indirect Call Near Procedure
.text:00489B0A     
.text:00489B10 -628                wait                    ; Wait until BUSY# Pin is Inactive (HIGH)
.text:00489B11 -628                push    offset loc_489BE0
.text:00489B16 -624                jmp     short loc_489B57 ; Jump
.text:00489B16     
.text:00489B18     ; ---------------------------------------------------------------------------
.text:00489B18 -624                test    byte ptr [ebp-4], 4 ; Logical Compare
.text:00489B1C -624                jz      short loc_489B2A ; Jump if Zero (ZF=1)
.text:00489B1C     
.text:00489B1E -624                lea     ecx, [ebp-0B4h] ; Load Effective Address
.text:00489B24 -624                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:00489B24     
.text:00489B2A     
.text:00489B2A     loc_489B2A:                             ; CODE XREF: sub_488E70+CACj
.text:00489B2A -624                lea     ecx, [ebp-0C0h] ; Load Effective Address
.text:00489B30 -624                call    ds:__vbaFreeStr ; Indirect Call Near Procedure
.text:00489B30     
.text:00489B36 -624                lea     ecx, [ebp-0F0h] ; Load Effective Address
.text:00489B3C -624                lea     edx, [ebp-0E0h] ; Load Effective Address
.text:00489B42 -624                push    ecx
.text:00489B43 -624                lea     eax, [ebp-0D0h] ; Load Effective Address
.text:00489B49 -624                push    edx
.text:00489B4A -624                push    eax
.text:00489B4B -624                push    3
.text:00489B4D -624                call    ds:__vbaFreeVarList ; Indirect Call Near Procedure
.text:00489B4D     
.text:00489B53 -630                add     esp, 10h        ; Add
.text:00489B56 -640                retn                    ; Return Near from Procedure
.text:00489B56     
.text:00489B57     ; ---------------------------------------------------------------------------
.text:00489B57     
.text:00489B57     loc_489B57:                             ; CODE XREF: sub_488E70+CA6j
.text:00489B57 -624                mov     edi, ds:__vbaFreeStr
.text:00489B5D -624                lea     ecx, [ebp+var_1C] ; Load Effective Address
.text:00489B60 -624                call    edi ; __vbaFreeStr ; Indirect Call Near Procedure
.text:00489B60     
.text:00489B62 -624                lea     ecx, [ebp+var_20] ; Load Effective Address
.text:00489B65 -624                call    edi ; __vbaFreeStr ; Indirect Call Near Procedure
.text:00489B65     
.text:00489B67 -624                mov     esi, ds:__vbaAryDestruct
.text:00489B6D -624                lea     edx, [ebp+var_114] ; Load Effective Address
.text:00489B73 -624                lea     ecx, [ebp+var_3C] ; Load Effective Address
.text:00489B76 -624                push    edx
.text:00489B77 -620                push    0
.text:00489B79 -61C                mov     [ebp+var_114], ecx
.text:00489B7F -61C                call    esi ; __vbaAryDestruct ; Indirect Call Near Procedure
.text:00489B7F     
.text:00489B81 -61C                lea     ecx, [ebp+var_118] ; Load Effective Address
.text:00489B87 -61C                lea     eax, [ebp+var_58] ; Load Effective Address
.text:00489B8A -61C                push    ecx
.text:00489B8B -618                push    0
.text:00489B8D -614                mov     [ebp+var_118], eax
.text:00489B93 -614                call    esi ; __vbaAryDestruct ; Indirect Call Near Procedure
.text:00489B93     
.text:00489B95 -614                lea     eax, [ebp+var_11C] ; Load Effective Address
.text:00489B9B -614                lea     edx, [ebp+var_74] ; Load Effective Address
.text:00489B9E -614                push    eax
.text:00489B9F -610                push    0
.text:00489BA1 -60C                mov     [ebp+var_11C], edx
.text:00489BA7 -60C                call    esi ; __vbaAryDestruct ; Indirect Call Near Procedure
.text:00489BA7     
.text:00489BA9 -60C                lea     edx, [ebp+var_120] ; Load Effective Address
.text:00489BAF -60C                lea     ecx, [ebp+var_90] ; Load Effective Address
.text:00489BB5 -60C                push    edx
.text:00489BB6 -608                push    0
.text:00489BB8 -604                mov     [ebp+var_120], ecx
.text:00489BBE -604                call    esi ; __vbaAryDestruct ; Indirect Call Near Procedure
.text:00489BBE     
.text:00489BC0 -604                lea     ecx, [ebp+var_124] ; Load Effective Address
.text:00489BC6 -604                lea     eax, [ebp+var_AC] ; Load Effective Address
.text:00489BCC -604                push    ecx
.text:00489BCD -600                push    0
.text:00489BCF -5FC                mov     [ebp+var_124], eax
.text:00489BD5 -5FC                call    esi ; __vbaAryDestruct ; Indirect Call Near Procedure
.text:00489BD5     
.text:00489BD7 -5FC                lea     ecx, [ebp+var_B8] ; Load Effective Address
.text:00489BDD -5FC                call    edi ; __vbaFreeStr ; Indirect Call Near Procedure
.text:00489BDD     
.text:00489BDF -5FC                retn                    ; Return Near from Procedure
.text:00489BDF     
.text:00489BE0     ; ---------------------------------------------------------------------------
.text:00489BE0     
.text:00489BE0     loc_489BE0:                             ; DATA XREF: sub_488E70+CA1o
.text:00489BE0 -5FC                mov     ecx, [ebp-14h]
.text:00489BE3 -5FC                mov     eax, [ebp-0B4h]
.text:00489BE9 -5FC                pop     edi
.text:00489BEA -5FC                pop     esi
.text:00489BEB -5FC                mov     large fs:0, ecx
.text:00489BF2 -5FC                pop     ebx
.text:00489BF3 -5FC                mov     esp, ebp
.text:00489BF5 -5FC                pop     ebp
.text:00489BF6 -5FC                retn    8               ; Return Near from Procedure
.text:00489BF6     
.text:00489BF6     ; ---------------------------------------------------------------------------
.text:00489BF9 -5FC                align 4
.text:00489BFC -5FC off_489BFC     dd offset loc_488FB7    ; DATA XREF: sub_488E70+140r
.text:00489BFC                     dd offset loc_488FC1    ; jump table for switch statement
.text:00489BFC                     dd offset loc_488FCB
.text:00489BFC                     dd offset loc_488FD5
.text:00489BFC                     dd offset loc_488FDF
.text:00489BFC                     dd offset loc_488FE9
.text:00489BFC                     dd offset loc_488FF3
.text:00489BFC                     dd offset loc_488FFD
.text:00489BFC                     dd offset loc_489007

-------------------------------------------------------------------------------------------------------------------------
【算法总结】

          / 11111100(单项注册功能1)     \     / 运算码1 \    转换     / 单项注册功能1对应注册码
申请码 + {- 22222200(单项注册功能2)     -} = {- 运算码2 -} --------> {- 单项注册功能2对应注册码
          \ 33333300(完整注册功能[1+2]) /     \ 运算码3 /             \ 完整注册功能[1+2]对应注册码

例:(本机信息)

              / 11111100 \     / 1962924897 \    转换     / 315256941958022
1951813797 + {- 22222200 -} = {- 1974035997 -} --------> {- 315829212908527
              \ 33333300 /     \ 1985147097 /             \ 327589729281898
============================================================================================
KeyGen我就不写了。。。免得作者找偶麻烦!给个内存注册机:

【内存注册机】

中断地址:556ADC
中断次数:1
第一字节:83
指令长度:3

内存方式 ---> EAX ---> 宽字符串

..........................................................

注意:

注册机截出的注册码比如为:1234567890ABCDE
那么软件里应填写的格式为:12345-67890-ABCDE
============================================================================================
【注册信息】

申请码:1951813797

单项功能1注册码:31525-69419-58022
单项功能2注册码:31582-92129-08527
完整功能注册码: 32758-97292-81898

--------------------------------------------------------------------------------------------

版权所有(C)2005 KuNgBiM[DFCG]         Copyright (C) 2005 KuNgBiM[DFCG]

--------------------------------------------------------------------------------------------
          Cracked By KuNgBiM[DFCG]

                2005-08-11

                15:10:18 PM


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 383
活跃值: (41)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
2
你的破文看起来很吓人,太长了
2005-8-12 21:28
0
雪    币: 214
活跃值: (86)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
呵呵,偶还不用IDA呢~改天也玩玩~~

不过这次的文章好像没有什么东西啊,多是IDA自己的注解?
2005-8-12 21:43
0
雪    币: 267
活跃值: (44)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
4
支持,学习中
2005-8-12 22:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习支持!
2005-8-12 22:45
0
雪    币: 1266
活跃值: (622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
机器智能化了。软件智能化了。就胜下我们这些菜鸟用它剁菜了
,看的头大。汇编刚入门还好能懂点。
2005-8-13 02:35
0
雪    币: 217
活跃值: (91)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
前几天想破没有搞定,想不到KuNgBiM真牛!
2005-8-13 07:48
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
8
学习学习,IDA我也不会用的说
2005-8-13 08:33
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这扁文章有点偏离以往KuNgBiM文章的风格,学习中................
2005-8-13 09:37
0
雪    币: 151
活跃值: (66)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
是啊,风格变了。哈哈。他的破文都很耐看型,这次哈哈.60分!
2005-8-13 09:53
0
雪    币: 328
活跃值: (925)
能力值: ( LV9,RANK:1010 )
在线值:
发帖
回帖
粉丝
11
顶一个!!
2005-8-13 15:31
0
游客
登录 | 注册 方可回帖
返回
//