/** @file IpmiDeviceAmount.h -- Header for IpmiDeviceAmount Copyright (c) HR650X BIOS Decompilation Project **/ #ifndef __IPMIDEVICEAMOUNT_H__ #define __IPMIDEVICEAMOUNT_H__ #include "../uefi_headers/Uefi.h" // // Function Prototypes // EFI_STATUS EFIAPI ModuleEntryPoint( VOID ); EFI_STATUS EFIAPI unsigned __int8 *v3; // r13( VOID ); EFI_STATUS EFIAPI __int64 v5; // rax( VOID ); EFI_STATUS EFIAPI unsigned __int64 v8; // r12( VOID ); EFI_STATUS EFIAPI __int64 v10; // rax( VOID ); EFI_STATUS EFIAPI __int64 v12; // rax( VOID ); EFI_STATUS EFIAPI __int64 v14; // r12( VOID ); EFI_STATUS EFIAPI __int64 v16; // rax( VOID ); EFI_STATUS EFIAPI unsigned __int64 v18; // r13( VOID ); EFI_STATUS EFIAPI __int64 v20; // r14( VOID ); EFI_STATUS EFIAPI __int64 v22; // rax( VOID ); EFI_STATUS EFIAPI __int64 v24; // rax( VOID ); EFI_STATUS EFIAPI __int64 v26; // r15( VOID ); EFI_STATUS EFIAPI unsigned int v28; // r15d( VOID ); EFI_STATUS EFIAPI _QWORD *v30; // r10( VOID ); EFI_STATUS EFIAPI // NOTE: Full decompilation was too large for IDA output.( VOID ); EFI_STATUS EFIAPI function appears to be the outermost dispatcher.( VOID ); EFI_STATUS EFIAPI - capacity GB integer part( VOID ); EFI_STATUS EFIAPI __int64 v9; // rdi - status( VOID ); EFI_STATUS EFIAPI - loop index( VOID ); EFI_STATUS EFIAPI - offset into handle buffer( VOID ); EFI_STATUS EFIAPI - status (OpenProtocol for ATA)( VOID ); EFI_STATUS EFIAPI - line number for assert( VOID ); EFI_STATUS EFIAPI - status( VOID ); EFI_STATUS EFIAPI - swap index( VOID ); EFI_STATUS EFIAPI - loop counter for model swap( VOID ); EFI_STATUS EFIAPI __int64 v20; // r8( VOID ); EFI_STATUS EFIAPI - temp for byte swap( VOID ); EFI_STATUS EFIAPI - trim loop( VOID ); EFI_STATUS EFIAPI - capacity sectors( VOID ); EFI_STATUS EFIAPI - capacity in bytes( VOID ); EFI_STATUS EFIAPI - capacity fractional GB( VOID ); EFI_STATUS EFIAPI pool for model string buffer (256 bytes)( VOID ); EFI_STATUS EFIAPI pool for capacity string buffer (256 bytes)( VOID ); EFI_STATUS EFIAPI the ATA Pass Thru protocol on the controller handle( VOID ); EFI_STATUS EFIAPI get the list of available ports/devices( VOID ); EFI_STATUS EFIAPI if port is enabled (bit 3 of attributes)( VOID ); EFI_STATUS EFIAPI ATA protocol interface on this port( VOID ); EFI_STATUS EFIAPI if device matches expected GUID (unk_2CC0)( VOID ); EFI_STATUS EFIAPI device type info (HDD vs SSD detection)( VOID ); EFI_STATUS EFIAPI IDENTIFY data buffer (512 bytes)( VOID ); EFI_STATUS EFIAPI the IDENTIFY buffer( VOID ); EFI_STATUS EFIAPI IDENTIFY DEVICE command via ATA Pass Thru( VOID ); EFI_STATUS EFIAPI model name from ATA IDENTIFY data (byte-swapped)( VOID ); EFI_STATUS EFIAPI model name is in words 27-46 (54 bytes), byte-swapped( VOID ); EFI_STATUS EFIAPI trailing spaces from model name( VOID ); EFI_STATUS EFIAPI model name as ASCII string( VOID ); EFI_STATUS EFIAPI capacity( VOID ); EFI_STATUS EFIAPI does not support LBA - use ATAPI fallback( VOID ); EFI_STATUS EFIAPI sectors to GB (sector size = 512 bytes = << 9)( VOID ); EFI_STATUS EFIAPI bytes( VOID ); EFI_STATUS EFIAPI integer part( VOID ); EFI_STATUS EFIAPI fractional part (1 decimal)( VOID ); EFI_STATUS EFIAPI as SSD or HDD( VOID ); EFI_STATUS EFIAPI count( VOID ); EFI_STATUS EFIAPI total capacity( VOID ); EFI_STATUS EFIAPI IDENTIFY buffer( VOID ); EFI_STATUS EFIAPI on failure( VOID ); EFI_STATUS EFIAPI __int64 v10; // rbx - status( VOID ); EFI_STATUS EFIAPI __int64 v18; // rax - status from sub_A24( VOID ); EFI_STATUS EFIAPI all handles supporting ATA Pass Thru protocol( VOID ); EFI_STATUS EFIAPI &unk_2D00, // ATA Pass Thru GUID( VOID ); EFI_STATUS EFIAPI ATA Pass Thru protocol on this handle( VOID ); EFI_STATUS EFIAPI Block IO protocol to get device topology info( VOID ); EFI_STATUS EFIAPI device location (SATA port, bus, device, function)( VOID ); EFI_STATUS EFIAPI the ATA controller port( VOID ); EFI_STATUS EFIAPI print: SATA controller location( VOID ); EFI_STATUS EFIAPI devices on this controller( VOID ); EFI_STATUS EFIAPI HDD count( VOID ); EFI_STATUS EFIAPI HDD capacity( VOID ); EFI_STATUS EFIAPI SSD count( VOID ); EFI_STATUS EFIAPI SSD capacity( VOID ); EFI_STATUS EFIAPI unsigned __int8 v2; // r15( VOID ); EFI_STATUS EFIAPI __int64 v4; // rdx( VOID ); EFI_STATUS EFIAPI __int64 v6; // rbx( VOID ); EFI_STATUS EFIAPI __int64 v8; // rbx( VOID ); EFI_STATUS EFIAPI char v10; // r8( VOID ); EFI_STATUS EFIAPI _BYTE *v12; // rdx( VOID ); EFI_STATUS EFIAPI __int64 n0x7FFF; // rdx( VOID ); EFI_STATUS EFIAPI __int64 v16; // r8( VOID ); EFI_STATUS EFIAPI __int64 v18; // rdi( VOID ); EFI_STATUS EFIAPI unsigned __int8 v20; // r14( VOID ); EFI_STATUS EFIAPI unsigned __int8 v22; // si( VOID ); EFI_STATUS EFIAPI unsigned __int8 v24; // di( VOID ); EFI_STATUS EFIAPI unsigned __int8 *v26; // rbx( VOID ); EFI_STATUS EFIAPI __int64 v28; // r9( VOID ); EFI_STATUS EFIAPI __int64 result; // rax( VOID ); EFI_STATUS EFIAPI __int64 v32; // rax( VOID ); EFI_STATUS EFIAPI function registers a ReadyToBoot callback that reads CPU( VOID ); EFI_STATUS EFIAPI HDD and SSD counts to the BMC.( VOID ); EFI_STATUS EFIAPI unsigned __int64 n0xF4240; // rdi - counter, max 1,000,000( VOID ); EFI_STATUS EFIAPI _WORD *v2; // rbx( VOID ); EFI_STATUS EFIAPI __int64 v4; // r8( VOID ); EFI_STATUS EFIAPI __int64 v6; // r10( VOID ); EFI_STATUS EFIAPI unsigned __int64 n3; // rdi( VOID ); EFI_STATUS EFIAPI __int16 v10; // dx( VOID ); EFI_STATUS EFIAPI result = SSD_1;( VOID ); EFI_STATUS EFIAPI first 5 characters for "SSD" pattern match( VOID ); EFI_STATUS EFIAPI with known SSD model prefix table( VOID ); EFI_STATUS EFIAPI wide chars( VOID ); EFI_STATUS EFIAPI next SSD keyword pattern( VOID ); EFI_STATUS EFIAPI __int64 v3; // rcx( VOID ); EFI_STATUS EFIAPI __int64 v5; // r9( VOID ); EFI_STATUS EFIAPI comparison - checks all 4 fields of the GUID structure( VOID ); EFI_STATUS EFIAPI current time formatted as a string buffer( VOID ); EFI_STATUS EFIAPI for debug/timestamp output( VOID ); EFI_STATUS EFIAPI va_list va; // [rsp+48h] [rbp+10h] BYREF( VOID ); EFI_STATUS EFIAPI DebugPrint or similar UEFI debug output function( VOID ); EFI_STATUS EFIAPI UEFI ASSERT implementation:( VOID ); EFI_STATUS EFIAPI gBS->CreateEventEx(EVT_NOTIFY_SIGNAL, TPL_CALLBACK, sub_10C0, ...)( VOID ); EFI_STATUS EFIAPI gBS->RegisterProtocolNotify(...)( VOID ); EFI_STATUS EFIAPI UEFI libraries:( VOID ); EFI_STATUS EFIAPI gBS->SetMem() or BaseMemoryLib SetMem()( VOID ); EFI_STATUS EFIAPI ASCII string to uppercase( VOID ); EFI_STATUS EFIAPI CPU information via HOB or SMBIOS( VOID ); EFI_STATUS EFIAPI UnicodeSPrint(dst, size, fmt, ...)( VOID ); EFI_STATUS EFIAPI serial/console print implementation with format string support( VOID ); EFI_STATUS EFIAPI current serial port configuration( VOID ); #endif /* __IPMIDEVICEAMOUNT_H__ */