My guess is that the function signature should be something like:
int __usercall Call_HTTP@<eax>(int x, int y, void* http_object@<edi>);
__usercall means the calling convention for the function is not a standard one (like stdcall, cdecl, etc.) as the function passes two arguments on stack and one in edi.
@<eax> : function returns a value in eax register.
int x and
int y are passed on the stack.
void* http_object@<edi> : http_object is a void* passed through the edi register.
You can change the type of the
http_object by adding a proper structure for this object to the known IDA structures and pass the real type instead of
For more information on function signature, see the IDA help on Set function/item type.
The right signature should be:
int __userpurge Call_HTTP@<eax>(int x, int y, void* http_object@<edi>);
As stated by @itsbriany:
__userpurge calling conventions, the callee cleans up the stack.
__usercall conventions, the caller cleans up the stack.