/** @file
  OA3_SMM.h -- Header for OA3_SMM

  Source: DEBUG_VS2015\X64\AmiModulePkg\OemActivation\OA3\OA3_SMM\DEBUG
  Build: HR6N0XMLK DEBUG_VS2015 X64

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __OA3_SMM_H__
#define __OA3_SMM_H__

#include "../uefi_headers/Uefi.h"

//
// Function Prototypes
//

///
/// ModuleEntryPoint -- UEFI entry point / initialization function
///
EFI_STATUS
EFIAPI
ModuleEntryPoint(
  EFI_HANDLE       ImageHandle,
  EFI_SYSTEM_TABLE *SystemTable
);

///
/// Oa3SmmAutoGenConstructor -- Auto-generated library/entry context bootstrap.
///
EFI_STATUS
EFIAPI
Oa3SmmAutoGenConstructor(
  EFI_HANDLE       ImageHandle,
  EFI_SYSTEM_TABLE *SystemTable
);

///
/// Oa3SmmInitHook -- pre-initialize check gate in the AutoGen flow.
///
EFI_STATUS
EFIAPI
Oa3SmmInitHook(
  VOID *Context
);

///
/// Oa3SmmInitialize -- module core OA3 SMM initialization routine.
///
EFI_STATUS
EFIAPI
Oa3SmmInitialize(
  VOID
);

///
/// Oa3SmmAutoGenDestructor -- Auto-generated cleanup callback for module context.
///
EFI_STATUS
EFIAPI
Oa3SmmAutoGenDestructor(
  VOID *Context
);

///
/// Oa3SmmUnload -- unload helper for the AutoGen tear-down path.
///
EFI_STATUS
EFIAPI
Oa3SmmUnload(
  VOID  *Context,
  INTN   Phase
);

///
/// Oa3SmmDebugAssert -- unreachable-path assertion helper used by AutoGen.
///
EFI_STATUS
EFIAPI
Oa3SmmDebugAssert(
  CHAR8  *FileName,
  UINTN   LineNumber,
  CHAR8  *Expression
);

#endif /* __OA3_SMM_H__ */
