mov ecx, 13
push esi ;Pushes ESI Value which is FFFFFFFF because it hasnt been used.
xor esi, esi ;XOR ESI, ESI : Zeros ESI
label1:
mov edx, 13000
add edx, ecx
mov temp, edx
push ecx
push esi ;Pushes ESIs value which is ZERO
invoke CreateWindowEx, NULL, ADDR ChildClassName, NULL,\
WS_CHILDWINDOW + WS_VISIBLE,\
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,\
hwnd, [temp], hInstance, NULL
pop esi ;POPs ESI, noting ESI value has not been changed from above func, ESI = 0
mov [ChildIDsArray+esi], eax
add esi, 4 ; Adds 4 to ESI.. ?? why, this is in your LOOP and is poped 2 lines down
pop ecx
loop label1
pop esi ; ESI is POPed thus leaving us with an ESI value of FFFFFFFF... restores esi to unused state.