#include "md4.h"
#include "des.h"
#include <memory.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

typedef short int16;
typedef int int32;
typedef unsigned short uint16;
typedef unsigned int uint32;
typedef unsigned char uchar;

#define MAX_STRING 255
#define MAX_WORD 128
#define LMPASSWDLEN 14
#define NTPASSWDLEN 128

#define CVAL(buf,pos) (((unsigned char *)(buf))[pos])
#define PVAL(buf,pos) ((unsigned)CVAL(buf,pos))
#define SVAL(buf,pos) (PVAL(buf,pos)|PVAL(buf,(pos)+1)<<8)
/* #define IVAL(buf,pos) (SVAL(buf,pos)|SVAL(buf,(pos)+2)<<16) */
#define SSVALX(buf,pos,val) (CVAL(buf,pos)=(val)&0xFF,CVAL(buf,pos+1)=(val)>>8)
#define SIVALX(buf,pos,val) (SSVALX(buf,pos,val&0xFFFF),SSVALX(buf,pos+2,val>>16))
#define SVALS(buf,pos) ((int16)SVAL(buf,pos))
#define IVALS(buf,pos) ((int32)IVAL(buf,pos))
#define SSVAL(buf,pos,val) SSVALX((buf),(pos),((uint16)(val)))
/* #define SIVAL(buf,pos,val) SIVALX((buf),(pos),((uint32)(val))) */
#define SSVALS(buf,pos,val) SSVALX((buf),(pos),((int16)(val)))
#define SIVALS(buf,pos,val) SIVALX((buf),(pos),((int32)(val)))


#define IVAL(buf,pos) (*(uint32 *)((char *)(buf) + (pos)))  
#define SIVAL(buf,pos,val) IVAL(buf,pos)=((uint32)(val)) 

struct user_struct {
	int  pwdumpval;
	char username[128];
	char lmhash[32];
	char foo[4]; /* placeholder */
	char nthash[32];
	char lmhashb[16];
	char bar[4]; /* placeholder */
	unsigned long nthashb[4];
	char lmpasswd[14];
	char ntpasswd[128];
	char server_chall[8];
	char lmresp_b[24];
	char ntresp_b[24];
	int under7;
	char first_half[7];
	char second_half[7];
	int lmdone;
	int ntdone;
	int already_printed;
	struct user_struct *previous;
	struct user_struct *next;
};

