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

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __MTFTP4DXE_H__
#define __MTFTP4DXE_H__

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

EFI_STATUS EFIAPI ModuleEntryPoint(VOID);
EFI_STATUS EFIAPI Mtftp4Unload(__int64 ImageHandle);
EFI_STATUS EFIAPI Mtftp4LibConstructor(__int64 ImageHandle, EFI_SYSTEM_TABLE *SystemTable);
EFI_STATUS EFIAPI Mtftp4DriverEntryPoint(__int64 ImageHandle, EFI_SYSTEM_TABLE *SystemTable);
EFI_STATUS EFIAPI Mtftp4UdpIoConfigure(__int64 UdpIo, __int64 Configure);
EFI_STATUS EFIAPI Mtftp4CreateService(__int64 This, __int64 ImageHandle, _QWORD *Service);
EFI_STATUS EFIAPI Mtftp4ServiceBindingCreateChild(__int64 This, __int64 ChildHandle);
EFI_STATUS EFIAPI Mtftp4DestroyChildCallback(_QWORD *Child, _QWORD *Context);
EFI_STATUS EFIAPI Mtftp4ServiceBindingDestroyChild(__int64 This, __int64 ChildHandle, __int64 Arg3, __int64 Arg4);
EFI_STATUS EFIAPI Mtftp4DriverBindingStart(__int64 This, __int64 *RemainingDevicePath);
EFI_STATUS EFIAPI Mtftp4DriverBindingStop(__int64 This, __int64 ControllerHandle);
EFI_STATUS EFIAPI Mtftp4GetBestLanguage(__int64 (__fastcall **Languages)(), _BYTE *Language, _QWORD *BestLanguage);
EFI_STATUS EFIAPI Mtftp4ConfigNotification(__int64 (__fastcall **Notify)());
EFI_STATUS EFIAPI Mtftp4OpenProtocol(__int64 (__fastcall **OpenProtocol)(), __int64 Handle, __int64 Protocol, _BYTE *Context);
EFI_STATUS EFIAPI Mtftp4Cleanup(__int64 Instance, __int64 Status);
EFI_STATUS EFIAPI Mtftp4PacketCallback(__int64 Instance, __int64 Event, unsigned __int16 Count, _WORD *Packet);
EFI_STATUS EFIAPI Mtftp4CheckAddress(__int64 LocalAddress, __int64 RemoteAddress);
EFI_STATUS EFIAPI Mtftp4ResolveAddress(__int64 Instance, __int64 SourceAddress, __int64 DestinationAddress);
EFI_STATUS EFIAPI Mtftp4SendUdpPacket(__int64 Instance, __int64 Packet);
EFI_STATUS EFIAPI Mtftp4Start(__int64 Instance, __int64 Request, __int16 Mode);
EFI_STATUS EFIAPI Mtftp4GetInfo(__int64 Instance, __int64 Info);
EFI_STATUS EFIAPI Mtftp4Input(__int64 Instance, _BYTE *Packet);
EFI_STATUS EFIAPI Mtftp4ParseOptionOack(__int64 Instance, __int64 Length, _WORD *Dst, _DWORD *Options, __int64 *Context);
EFI_STATUS EFIAPI Mtftp4ReadFile(__int64 Instance, __int64 Token, __int64 Packet, _BYTE *Buffer);
EFI_STATUS EFIAPI Mtftp4AllocateBlockRangeEntry(unsigned __int16 Start, unsigned __int16 End);
EFI_STATUS EFIAPI Mtftp4BlockRangeInsert(char ***Ranges, unsigned __int16 Block, char Flag, _QWORD *Entry);
EFI_STATUS EFIAPI Mtftp4BuildPacket(__int64 Instance);
EFI_STATUS EFIAPI Mtftp4SendError(__int64 Instance, __int16 ErrorCode, char *Message);
EFI_STATUS EFIAPI Mtftp4TransmitPacket(__int64 Instance, __int64 Packet);
EFI_STATUS EFIAPI Mtftp4ResendPacket(__int64 Instance);
EFI_STATUS EFIAPI Mtftp4CheckTimeout(__int64 Instance, __int64 Event);
EFI_STATUS EFIAPI Mtftp4ParseOptionPairs(_WORD *Dst, unsigned int Length, _DWORD *Options, __int64 Context);
EFI_STATUS EFIAPI Mtftp4ParseOack(_WORD *Dst, __int64 Length, _DWORD *Options, __int64 *Context);
EFI_STATUS EFIAPI Mtftp4ParseMulticastOption(_BYTE *Option, char *Buffer);
EFI_STATUS EFIAPI Mtftp4ParseOptions(__int64 Options, unsigned int Count, char IsRrq, char *Buffer);
EFI_STATUS EFIAPI Mtftp4ProcessDataPacket(__int64 Instance, char *Data, int Length);
EFI_STATUS EFIAPI Mtftp4SetupMulticastReceive(__int64 Instance, __int64 Context);

EFI_STATUS EFIAPI Mtftp4ConfigStringLookup(_BYTE *String, _BYTE *Table, char *Value, _QWORD *Result, char MatchCase);
EFI_STATUS EFIAPI NetDestroyChildrenInList(_QWORD *List, _QWORD *Context);
EFI_STATUS EFIAPI DxeGetInfo(__int64 a1, __int64 a2, __int64 a3, __int64 a4);
EFI_STATUS EFIAPI DxeGetInfo_0(__int64 a1, __int64 a2, __int64 a3, __int64 a4);
char *EFIAPI DxeConfig_11(int a1, int a2);
char *EFIAPI DxeConfig_12(unsigned int n4);
__int64 EFIAPI DxeConfig_8(__int64 a1);
__int64 EFIAPI DxeConfig_13(_DWORD *a1, unsigned int a2, _DWORD *a3);
_DWORD *EFIAPI DxeConfig_6(__int64 a1, __int64 dst, unsigned int a3, unsigned int a4);
__int64 EFIAPI DxeConfig_1(unsigned int *p_count, unsigned int a2, __int64 a3, unsigned int count, __int64 a5, __int64 a6);
unsigned __int64 EFIAPI NetbufGetFragmentTable(__int64 a1, __int64 a2, unsigned int *va);
__int64 EFIAPI DxeConfig_4(__int64 a1, unsigned int a2);
__int64 EFIAPI DxeGetInfo_1(__int64 a1);
__int64 EFIAPI DxeConfig(__int64 a1);
__int64 EFIAPI QueueDpcForReceive(__int64 a1, __int64 a2);
__int64 EFIAPI DxeConfig_7(__int64 a1, __int64 (__fastcall *Configure)(), __int64 buf);
_DWORD *EFIAPI DxeConfig_0(__int64 a1, __int64 a2, __int64 src, ...);
__int64 EFIAPI DxeConfig_3(__int64 a1, __int64 a2, __int64 (__fastcall *Configure)(__int64, __int64), __int64 a4, __int64 buf);
char EFIAPI DxeGetInfo_2(__int64 a1);
__int64 EFIAPI DxeConfig_5(__int64 a1);
__int64 EFIAPI DxeConfig_9(__int64 a1, __int64 a2, char *buf);
__int64 EFIAPI DxeConfig_10(__int64 a1, __int64 (__fastcall *Configure)(), __int64 buf);

#endif
