rem: file << "*(" << _GetPointerType(parameters[0].type) << ")args";
add: if (parameters[0].size < PARAMETER_ALIGNMENT) { file << "(" << parameters[0].type << ")*(" << "FUNCTION_CALL_PARAMETER_ALIGNMENT_TYPE" << "*)args"; } else { file << "*(" << _GetPointerType(parameters[0].type) << ")args"; }
context: 	void _WriteDispatcherFile(const char *filename)	{		// open the dispatcher output file		ofstream file(filename, ofstream::out | ofstream::trunc);		if (!file.is_open())			throw IOException(string("Failed to open `") + filename + "'.");		// output the case statements		for (int i = 0; i < fSyscallCount; i++) {			const gensyscall_syscall_info &syscall = fSyscallInfos[i];			file << "case " << i << ":" << endl;			file << "\t";			if (string(syscall.return_type) != "void")				file << "*call_ret = ";			file << syscall.kernel_name << "(";			int paramCount = syscall.parameter_count;			if (paramCount > 0) {				gensyscall_parameter_info* parameters = syscall.parameters;				file << "*(" << _GetPointerType(parameters[0].type) << ")args";				for (int k = 1; k < paramCount; k++) {					file << ", *(" << _GetPointerType(parameters[k].type)						<< ")((char*)args + " << parameters[k].offset << ")";				}			}			file << ");" << endl;			file << "\tbreak;" << endl;		}	}