•LocalVariables!main:
•push ebp ; establishing stack frame
•mov ebp,esp ;
•sub esp,0xd8 ; creating stack frame for locals
•push ebx ; saving registers that might be used
•push esi ; outside
•push edi ;
•lea edi,[ebp-0xd8] ; getting lowest address of stack frame
•mov ecx,0x36 ; filling stack frame with 0xCC
•mov eax,0xcccccccc ;
•rep stosd ;
•mov dword ptr [ebp-0x8],0x1 ; [a] = 1 ([ebp-0x8])
•mov dword ptr [ebp-0x14],0x1 ; [b] = 1 ([ebp-0x14])
•mov eax,[ebp-0x14] ; eax := [b]
•add eax,[ebp-0x8] ; eax := eax + [a]
•mov [ebp-0x14],eax ; [b] := eax
(b = b + a)
•mov eax,[ebp-0x8] ; eax := [a]
•add eax,0x1 ; eax := eax + 1
•mov [ebp-0x8],eax ; [a] := eax
(++a)
•mov eax,[ebp-0x8] ; eax := [a]
•imul eax,[ebp-0x14] ; eax := eax * [b]
•mov [ebp-0x14],eax ; [b] := eax (b =
a * b)
•xor eax,eax ; eax := 0
(return value)
•pop edi ; restoring registers
•pop esi ;
•pop ebx ;
•mov esp,ebp ; restoring previous stack pointer
•pop ebp ; restoring previous stack frame
•ret ; return 0