code: def CFUNCTYPE(restype, *argtypes):
      
      try:
          return _c_functype_cache[(restype, argtypes)]
      except KeyError:
          class CFunctionType(_CFuncPtr):
              _argtypes_ = argtypes
              _restype_ = restype
              _flags_ = _FUNCFLAG_CDECL
          _c_functype_cache[(restype, argtypes)] = CFunctionType
          return CFunctionType
docs: CFUNCTYPE(restype, *argtypes) -> function prototype.
  
      restype: the result type
      argtypes: a sequence specifying the argument types
  
      The function prototype can be called in three ways to create a
      callable object:
  
      prototype(integer address) -> foreign function
      prototype(callable) -> create and return a C callable function from callable
      prototype(integer index, method name[, paramflags]) -> foreign function calling a COM method
      prototype((ordinal number, dll object)[, paramflags]) -> foreign function exported by ordinal
      prototype((function name, dll object)[, paramflags]) -> foreign function exported by name