I've open a DLL in IDA v7. In one subroutine, there is a PathAllocCombine()
function. The pesudocode shows six arguments in it. But the documentations shows there are four arguments i.e. PathAllocCombine(PCWSTR, PCWSTR, unsigned long, PWSTR);
The pseudocode is as follows:
_QWORD *__fastcall sub_180040994(_QWORD *a1, __int64 a2, __int64 a3)
{
_QWORD *v3; // rbx
signed int v4; // ST20_4
unsigned int v5; // eax
void *retaddr; // [rsp+38h] [rbp+0h]
v3 = a1;
v4 = 1;
*a1 = 0i64;
v5 = PathAllocCombine(a2, a3, 1i64, a1, v4, -2i64);
if ( (v5 & 0x80000000) != 0 )
{
sub_18000A7A4(retaddr, 106i64, "unknown.cpp", v5);
JUMPOUT(*(_QWORD *)&byte_1800409F9);
}
return v3;
}
And here is the graph view of that subroutine (conditional jump is removed):
So, is this an internal bug in IDA? Or am I doing anything wrong?