Why following codes works vary?
IncorrectWindowBorder:
    
 start:
    push  ebp
    mov   ebp, esp
    sub   esp, 0x0A
    push  dword 0x00000000
    push  sz_caption
    push  sz_msg
    push  dword 0x00000000
    call  [user32.MessageBoxA]
    
    push  0x00000000 ; return winmain result
    call  [kernel32.ExitProcess]
    
 
CorrectWindowBorder
    
 start:
    push  ebp
    mov   ebp, esp
    ;sub   esp, 0x0A why esp substraction (for local vars) changes msgBox?
    push  dword 0x00000000
    push  sz_caption
    push  sz_msg
    push  dword 0x00000000
    call  [user32.MessageBoxA]
    
    push  0x00000000 ; return winmain result
    call  [kernel32.ExitProcess]