#ifndef __AWGLOBAL32_H__
#define __AWGLOBAL32_H__ 1

#include <windows.h>
#include "rsa.h"

#define BSAFE_PTR	 far *
#define UWORD		 WORD
#define ULONG		 DWORD

#define RSAM ((DWORD)'R'+((DWORD)'S'<<8)+((DWORD)'A'<<16)+((DWORD)'M'<<24))

void B_ADD_32(LPDWORD, LPDWORD, LPDWORD, DWORD);
void B_SUB_32(LPDWORD, LPDWORD, LPDWORD, DWORD);
void B_INC_32(LPDWORD, DWORD);
void B_DEC_32(LPDWORD, DWORD);
void B_CONST_32(LPDWORD, DWORD, DWORD);
void B_2EXP_32(LPDWORD, DWORD, DWORD);
DWORD B_ACC_32(LPDWORD, DWORD, LPDWORD, DWORD);
DWORD B_LENW_32(LPDWORD, DWORD);
DWORD B_LEN_32(LPDWORD, DWORD);
void B_PSQ_32(LPDWORD, LPDWORD, DWORD);
void B_PMPYL_32(LPDWORD, LPDWORD, LPDWORD, DWORD);
int  B_CMP_32(LPDWORD, LPDWORD, DWORD);
void B_QRX_32(LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, DWORD, DWORD);
void B_PMPY_32(LPDWORD, LPDWORD, LPDWORD, DWORD);
void MOD_SQX_32(LPDWORD, LPDWORD, LPDWORD, DWORD, DWORD);
void MOD_MPYX_32(LPDWORD, LPDWORD, LPDWORD, LPDWORD, DWORD, DWORD);
void B_PDIV_32(LPDWORD, LPDWORD, LPDWORD, LPDWORD, DWORD, DWORD);
void B_PEGCD_32(LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, DWORD);
void MOD_EXP_32(LPDWORD, LPDWORD, LPDWORD, LPDWORD, DWORD);
void B_UNEXP_32(LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
void BSAFE_ENC_DEC_PUBLIC_PRIVATE_32(LPBSAFE_KEY, LPBYTE, LPBYTE, WORD);

LPVOID IFGlobalAlloc32(WORD, DWORD);
void IFGlobalFree32(LPVOID); 
   
typedef struct {
    DWORD FEE[MAXMODWORDS]; /* encryption exponent */
    DWORD FPP[MAXPRMWORDS]; /* first prime */
    DWORD FQQ[MAXPRMWORDS]; /* second prime */
    DWORD FNN[MAXMODWORDS]; /* modulus n = p * q */
} FRAME_32, FAR *LPFRAME_32;

#endif
