•Arrays!main:
•push ebp
•mov ebp,esp
•and esp,0xfffffff8 ;
aligning a pointer down to 8-byte boundary
•sub esp,0x194 ; allocating stack for 2 arrays
•push edi
•mov ecx,0x31 ; zeroing 49 integers
•xor eax,eax
•lea edi,[esp+0xc]
•mov dword ptr [esp+0x8],0x0 ; zeroing 1 more
(pipelining)
•rep stosd
•nop
•mov ecx,0x2 ; optimizations, compiler figured out results
•mov eax,0x4
•mov [Arrays!g_array (004072c0)],ecx
•mov [Arrays!g_array+0x28 (004072e8)],eax
•nop
•mov [esp+0x30],eax ; array[10] = 4
•lea eax,[esp+0xd0] ; eax := arrayNI
•mov [esp+0x8],ecx ; array[0] = 2
•push eax
•lea ecx,[esp+0xc] ; array
•push ecx
•push 0x4072c0 ; g_array
•call Arrays!useArrays (00401070)
•add esp,0xc ; adjusting stack after function call
•xor eax,eax
•pop edi
•mov esp,ebp ; no need to adjust esp, will use ebp value
•pop ebp
•ret
•