I am currently reversing a windows driver in order to write a Linux compatible driver for a DVB card, but I have come up against a small issue that I can work around, but if it is possible I would like to make it correct.
There is a function that part of which reads the 256 byte PCI config space into a local buffer that has been allocated on the stack. The decompilation shows the output as:
unsigned __int16 configSpaceBuffer[128];
.... SNIP ...
configSpace->vtable->tmRegisterAccess_ConfigSpace__tmIGetReg(
configSpace,
&address,
4,
configSpaceBuffer,
256u,
0)
_this->field_4A = v74;
_this->field_4C = *(unsigned __int16 *)configSpaceBuffer;
_this->field_4E = v75;
_this->field_50 = v77;
_this->field_52 = v76;
Is it possible to fix the detected function variables to show the following instead?
_this->field_4A = configSpaceBuffer[0];
_this->field_4C = configSpaceBuffer[1];
_this->field_4E = configSpaceBuffer[2];
_this->field_50 = configSpaceBuffer[6];
_this->field_52 = configSpaceBuffer[8];