def METHOD_NAME(self, module_argv):
    self.logger.start_test('Xen Hypervisor Hypercall Fuzzer')
    command = module_argv[0] if len(module_argv) > 0 else ''
    arg1 = module_argv[1] if len(module_argv) > 1 else ''
    arg2 = module_argv[2] if len(module_argv) > 2 else ''
    xen = XenHypercall()
    xen.promt = 'CHIPSEC'
    xen.debug = False
    if command == 'help':
        self.usage()
    elif command == 'info':
        info = xen.get_hypervisor_info()
        if len(info) > 0:
            xen.hypervisor_present = True
            xen.print_hypervisor_info(info)
            xen.scan_hypercalls(range(256))
            xen.print_hypercall_status()
    elif command == 'fuzzing':
        name2code = {v.lower(): k for k, v in hypercall_names.items()}
        try:
            code = int(arg1, 16)
        except ValueError:
            if arg1.lower() not in name2code:
                self.logger.log_error(f'Unknown hypercall: \'{arg1}\'')
                return ModuleResult.ERROR
            code = name2code[arg1.lower()]
        count = self.get_int(arg2)
        xen.fuzz_hypercall(code, count)
    elif command in ['fuzzing-all', 'fuzzing-all-randomly']:
        count = self.get_int(arg1)
        xen.scan_hypercalls(range(256))
        xen.print_hypercall_status()
        self.logger.log('\nStart fuzzing ...\n')
        excluded = [MEMORY_OP, CONSOLE_IO, GRANT_TABLE_OP, SCHED_OP]
        vectors = sorted([x for x in xen.hypercalls.keys() if x not in excluded])
        if command == 'fuzzing-all':
            for vector in vectors:
                xen.fuzz_hypercall(vector, count)
        else:
            xen.fuzz_hypercalls_randomly(vectors, count)
    else:
        self.logger.log(f'Invalid command: {command}\n')
        self.usage()
    self.logger.log_information('Module completed')
    self.logger.log_warning('System may be in an unknown state, further evaluation may be needed.')
    self.res = ModuleResult.WARNING
    return self.res