text: /* 
     Unix SMB/CIFS implementation.
     SMB torture tester - scanning functions
     Copyright (C) Andrew Tridgell 2001
     
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 3 of the License, or
     (at your option) any later version.
     
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
     
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  
  #include "includes.h"
  
  extern bool torture_showall;
  
  enum deny_result {A_0=0, A_X=1, A_R=2, A_W=3, A_RW=5};
  
  
  static const char *denystr(int denymode)
  {
  	struct {
  		int v;
  		const char *name; 
  	} deny_modes[] = {
  		{DENY_DOS, "DENY_DOS"},
  		{DENY_ALL, "DENY_ALL"},
  		{DENY_WRITE, "DENY_WRITE"},
  		{DENY_READ, "DENY_READ"},
  		{DENY_NONE, "DENY_NONE"},
  		{DENY_FCB, "DENY_FCB"},
  		{-1, NULL}};
  	int i;
  	for (i=0;deny_modes[i].name;i++) {
  		if (deny_modes[i].v == denymode) return deny_modes[i].name;
  	}
  	return "DENY_XXX";
  }
  
  static const char *openstr(int mode)
  {
  	struct {
  		int v;
  		const char *name; 
  	} open_modes[] = {
  		{O_RDWR, "O_RDWR"},
  		{O_RDONLY, "O_RDONLY"},
  		{O_WRONLY, "O_WRONLY"},
  		{-1, NULL}};
  	int i;
  	for (i=0;open_modes[i].name;i++) {
  		if (open_modes[i].v == mode) return open_modes[i].name;
  	}
  	return "O_XXX";
  }
  
  static const char *resultstr(enum deny_result res)
  {
  	struct {
  		enum deny_result res;
  		const char *name; 
  	} results[] = {
  		{A_X, "X"},
  		{A_0, "-"},
  		{A_R, "R"},
  		{A_W, "W"},
  		{A_RW,"RW"}};
  	int i;
  	for (i=0;ARRAY_SIZE(results);i++) {
  		if (results[i].res == res) return results[i].name;
  	}
  	return "*";
  }
  
  static struct {
  	int isexe;
  	int mode1, deny1;
  	int mode2, deny2;
  	enum deny_result result;
  } denytable2[] = {
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_RW},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_W},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_RW},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_R},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_W},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_RW},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_R},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_W},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_R},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_R},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_W},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_W},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_W},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_RW},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_W},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_RW},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_R},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_W},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_RW},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_R},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_W},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_R},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_R},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_R},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_W},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_W},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_RW},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_R},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_W},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_RW},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_R},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_W},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_0}
  };
  
  
  static struct {
  	int isexe;
  	int mode1, deny1;
  	int mode2, deny2;
  	enum deny_result result;
  } denytable1[] = {
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_RW},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_W},
  {1,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_RW},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_R},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_W},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_RW},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_R},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_W},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_R},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_R},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_W},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {1,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_W},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_W},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_RW},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_W},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {1,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_RW},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_R},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_W},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_RW},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_R},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_W},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {1, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {1, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_RW},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_R},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_W},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {1,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_RW},
  {1,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_RW},
  {1,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_RW},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_RW},
  {1, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_RW},
  {1, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_RW},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_RW},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_R},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_W},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {1, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_RW},
  {1, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_RW},
  {1, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_RW},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_RW},
  {0,   O_RDWR,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_RW},
  {0,   O_RDWR,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_RW},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_R},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_DOS,     A_RW},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_DOS,     A_W},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_DOS,      O_RDWR,   DENY_FCB,     A_RW},
  {0, O_WRONLY,   DENY_DOS,    O_RDONLY,   DENY_FCB,     A_RW},
  {0, O_WRONLY,   DENY_DOS,    O_WRONLY,   DENY_FCB,     A_RW},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_ALL,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,   DENY_ALL,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_R},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_READ,     A_R},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY, DENY_WRITE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY, DENY_WRITE,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {0,   O_RDWR,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_W},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_RDONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_READ,     A_W},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_WRONLY,  DENY_READ,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_READ,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {0,   O_RDWR,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_RW},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_R},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_W},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_RDONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_RDONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_DOS,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_READ,     A_RW},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_READ,     A_R},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_READ,     A_W},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,  DENY_NONE,     A_RW},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,  DENY_NONE,     A_R},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,  DENY_NONE,     A_W},
  {0, O_WRONLY,  DENY_NONE,      O_RDWR,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_RDONLY,   DENY_FCB,     A_0},
  {0, O_WRONLY,  DENY_NONE,    O_WRONLY,   DENY_FCB,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_RW},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_R},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_W},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {0,   O_RDWR,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_RW},
  {0,   O_RDWR,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_RW},
  {0,   O_RDWR,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_RW},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_RW},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_W},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_RDONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_RW},
  {0, O_RDONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_RW},
  {0, O_RDONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_RW},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_DOS,     A_RW},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_DOS,     A_R},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_DOS,     A_W},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_ALL,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY, DENY_WRITE,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_READ,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,  DENY_NONE,     A_0},
  {0, O_WRONLY,   DENY_FCB,      O_RDWR,   DENY_FCB,     A_RW},
  {0, O_WRONLY,   DENY_FCB,    O_RDONLY,   DENY_FCB,     A_RW},
  {0, O_WRONLY,   DENY_FCB,    O_WRONLY,   DENY_FCB,     A_RW}
  };
  
  
  static void progress_bar(unsigned i, unsigned total)
  {
  	if (i % 10 != 0) return;
  	printf("%5d/%5d\r", i, total);
  	fflush(stdout);
  }
  
  /*
    this produces a matrix of deny mode behaviour for 1 connection
   */
  bool torture_denytest1(int dummy)
  {
  	struct cli_state *cli1;
  	uint16_t fnum1, fnum2;
  	int i;
  	bool correct = True;
  	NTSTATUS ret1, ret2;
  	const char *fnames[2] = {"\\denytest1.dat", "\\denytest1.exe"};
  
  	if (!torture_open_connection(&cli1, 0)) {
  		return False;
  	}
  
  	printf("starting denytest1\n");
  
  	for (i=0;i<2;i++) {
  		cli_unlink(cli1, fnames[i], aSYSTEM | aHIDDEN);
  		cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE, &fnum1);
  		cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
  		cli_close(cli1, fnum1);
  	}
  
  	printf("testing %ld entries\n", (unsigned long)ARRAY_SIZE(denytable1));
  
  	for (i=0; i<ARRAY_SIZE(denytable1); i++) {
  		enum deny_result res;
  		const char *fname = fnames[denytable1[i].isexe];
  
  		progress_bar(i, ARRAY_SIZE(denytable1));
  
  		ret1 = cli_open(cli1, fname, 
  				 denytable1[i].mode1,
  				 denytable1[i].deny1, &fnum1);
  		ret2 = cli_open(cli1, fname, 
  				 denytable1[i].mode2,
  				 denytable1[i].deny2, &fnum2);
  
  		if (!NT_STATUS_IS_OK(ret1)) {
  			res = A_X;
  		} else if (!NT_STATUS_IS_OK(ret2)) {
  			res = A_0;
  		} else {
  			char x = 1;
  			res = A_0;
  			if (cli_read(cli1, fnum2, (char *)&x, 0, 1) == 1) {
  				res += A_R;
  			}
  			if (cli_write(cli1, fnum2, 0, (char *)&x, 0, 1) == 1) {
  				res += A_W;
  			}
  		}
  
  		if (res != denytable1[i].result) {
  			correct = False;
  		}
  
  		if (torture_showall || res != denytable1[i].result) {
  			printf("%s %8s %10s    %8s %10s    %s (correct=%s)\n",
  			       fname,
  			       denystr(denytable1[i].deny1),
  			       openstr(denytable1[i].mode1),
  			       denystr(denytable1[i].deny2),
  			       openstr(denytable1[i].mode2),
  			       resultstr(res),
  			       resultstr(denytable1[i].result));
  		}
  
  		if (NT_STATUS_IS_OK(ret1)) {
  			cli_close(cli1, fnum1);
  		}
  		if (NT_STATUS_IS_OK(ret2)) {
  			cli_close(cli1, fnum2);
  		}
  	}
  
  	for (i=0;i<2;i++) {
  		cli_unlink(cli1, fnames[i], aSYSTEM | aHIDDEN);
  	}
  		
  	if (!torture_close_connection(cli1)) {
  		correct = False;
  	}
  	
  	printf("finshed denytest1\n");
  	return correct;
  }
  
  
  /*
    this produces a matrix of deny mode behaviour with 2 connections
   */
  bool torture_denytest2(int dummy)
  {
  	static struct cli_state *cli1, *cli2;
  	uint16_t fnum1, fnum2;
  	int i;
  	bool correct = True;
  	NTSTATUS ret1, ret2;
  	const char *fnames[2] = {"\\denytest2.dat", "\\denytest2.exe"};
  
  	if (!torture_open_connection(&cli1, 0) || !torture_open_connection(&cli2, 1)) {
  		return False;
  	}
  
  	printf("starting denytest2\n");
  
  	for (i=0;i<2;i++) {
  		cli_unlink(cli1, fnames[i], aSYSTEM | aHIDDEN);
  		cli_open(cli1, fnames[i], O_RDWR|O_CREAT, DENY_NONE, &fnum1);
  		cli_write(cli1, fnum1, 0, fnames[i], 0, strlen(fnames[i]));
  		cli_close(cli1, fnum1);
  	}
  
  	for (i=0; i<ARRAY_SIZE(denytable2); i++) {
  		enum deny_result res;
  		const char *fname = fnames[denytable2[i].isexe];
  
  		progress_bar(i, ARRAY_SIZE(denytable2));
  
  		ret1 = cli_open(cli1, fname, 
  				 denytable2[i].mode1,
  				 denytable2[i].deny1, &fnum1);
  		ret2 = cli_open(cli2, fname, 
  				 denytable2[i].mode2,
  				 denytable2[i].deny2, &fnum2);
  
  		if (!NT_STATUS_IS_OK(ret1)) {
  			res = A_X;
  		} else if (!NT_STATUS_IS_OK(ret2)) {
  			res = A_0;
  		} else {
  			char x = 1;
  			res = A_0;
  			if (cli_read(cli2, fnum2, (char *)&x, 0, 1) == 1) {
  				res += A_R;
  			}
  			if (cli_write(cli2, fnum2, 0, (char *)&x, 0, 1) == 1) {
  				res += A_W;
  			}
  		}
  
  		if (res != denytable2[i].result) {
  			correct = False;
  		}
  
  		if (torture_showall || res != denytable2[i].result) {
  			printf("%s %8s %10s    %8s %10s    %s (correct=%s)\n",
  			       fname,
  			       denystr(denytable2[i].deny1),
  			       openstr(denytable2[i].mode1),
  			       denystr(denytable2[i].deny2),
  			       openstr(denytable2[i].mode2),
  			       resultstr(res),
  			       resultstr(denytable2[i].result));
  		}
  
  		if (NT_STATUS_IS_OK(ret1)) {
  			cli_close(cli1, fnum1);
  		}
  		if (NT_STATUS_IS_OK(ret2)) {
  			cli_close(cli2, fnum2);
  		}
  	}
  		
  	for (i=0;i<2;i++) {
  		cli_unlink(cli1, fnames[i], aSYSTEM | aHIDDEN);
  	}
  
  	if (!torture_close_connection(cli1)) {
  		correct = False;
  	}
  	if (!torture_close_connection(cli2)) {
  		correct = False;
  	}
  	
  	printf("finshed denytest2\n");
  	return correct;
  }
  
  