00401020 push ebp00401021 mov ebp,esp00401023 sub esp,44h00401026 push ebx00401027 push esi00401028 push edi00401029 lea edi,[ebp-44h]0040102C mov ecx,11h00401031 mov eax,0CCCCCCCCh00401036 rep stos dword ptr [edi]// 初始化10: int x=10;00401038 mov dword ptr [ebp-4],0Ah//局部變數ebp-4賦值0xA(10)11: static int y=x;0040103F xor eax,eax00401041 mov al,[`variant'::`2'::$S1 (00427c58)]// 全域變數初始化標誌放入al(8位一個位元組)00401046 and eax,1// 取全域變數初始化標誌的最後一個位元組00401049 test eax,eax// 比較0040104B jne variant+45h (00401065)// 已經初始化,則跳過初始化過程0040104D mov cl,byte ptr [`variant'::`2'::$S1 (00427c58)]00401053 or cl,100401056 mov byte ptr [`variant'::`2'::$S1 (00427c58)],cl// 沒有初始化,則將初始化標誌置位0040105C mov edx,dword ptr [ebp-4]0040105F mov dword ptr [__cfltcvt_tab+0AB4h (00427c54)],edx// 初始化標誌置位後,將局部變數的值賦值給全域變數12: static int z=g_x;00401065 xor eax,eax00401067 mov al,[`variant'::`2'::$S1 (00427c58)]// 全域變數初始化標誌放入al(8位,一個位元組)0040106C and eax,2// 取全域變數初始化標誌的第二個位元組,即第二個全域變數的初始化標誌0040106F test eax,eax// 判斷00401071 jne variant+6Eh (0040108e)// 已經被初始化,則直接跳出00401073 mov cl,byte ptr [`variant'::`2'::$S1 (00427c58)]00401079 or cl,20040107C mov byte ptr [`variant'::`2'::$S1 (00427c58)],cl// 否則將初始化標誌置位00401082 mov edx,dword ptr [g_x (00424a30)]// 全域變數放edx00401088 mov dword ptr [__cfltcvt_tab+0AB0h (00427c50)],edx// 全域變數放到全域靜態變數中13: }0040108E pop edi0040108F pop esi00401090 pop ebx00401091 mov esp,ebp00401093 pop ebp00401094 ret