Testing Poasm Version 8.00.0, the procedure testproc below will end without the ret statement :
.386
.model flat,stdcall
option casemap:none
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
MessageBox EQU <MessageBoxA>
ExitProcess PROTO :DWORD
testproc PROTO :DWORD,:DWORD
MB_OK EQU 0
.data
capt db 'Hello',0
message db 'This is a test',0
.code
start:
invoke testproc,ADDR message,ADDR capt
invoke ExitProcess,0
OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
testproc PROC _msg:DWORD,_title:DWORD
invoke MessageBox,0,DWORD PTR [esp+12],\
DWORD PTR [esp+12],MB_OK
ret 2*4
testproc ENDP
OPTION PROLOGUE:PrologueDef
OPTION EPILOGUE:EpilogueDef
END start
Analyzing the COFF object module with objconv :
_testproc@8 LABEL NEAR
push 0
push dword ptr [esp+0CH]
push dword ptr [esp+0CH]
push 0
; Note: Function does not end with ret or jmp
call _MessageBoxA@16
_start ENDP