- API files update
- Minor bug fixes

diff --git a/tools/winapi_check/winapi.pm b/tools/winapi_check/winapi.pm
index b7d32fe..6ccea49 100644
--- a/tools/winapi_check/winapi.pm
+++ b/tools/winapi_check/winapi.pm
@@ -237,16 +237,24 @@
 
 	my $ordinal;
 	if(/^(\d+|@)\s+
-	   (pascal|pascal16|stdcall|cdecl|register|interrupt|varargs)
-	   (?:\s+(?:-noimport|-norelay|-i386|-ret64))*\s+(\S+)\s*\(\s*(.*?)\s*\)\s*(\S+)$/x)
+	   (pascal|pascal16|stdcall|cdecl|varargs)\s+
+	   ((?:(?:-noimport|-norelay|-i386|-ret64|-register|-interrupt)\s+)*)(\S+)\s*\(\s*(.*?)\s*\)\s*(\S+)$/x)
 	{
 	    my $calling_convention = $2;
-	    my $external_name = $3;
-	    my $arguments = $4;
-	    my $internal_name = $5;
-	   
+	    my $flags = $3;
+	    my $external_name = $4;
+	    my $arguments = $5;
+	    my $internal_name = $6;
+
 	    $ordinal = $1;
 
+	    $flags =~ s/\s+/ /g;
+
+	    if($flags =~ /(?:-register|-interrupt)/) {
+		if($arguments) { $arguments .= " "; }
+		$arguments .= "ptr";
+	    }
+
 	    if(!$$function_internal_name{$external_name}) {
 		$$function_internal_name{$external_name} = $internal_name;
 	    } else {