From 258694996f288f8edb8a407b3a16ffb1876b2120 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 22:30:10 -0500
Subject: [PATCH 01/14] apt: Update apt function tables

Updated based off information from 3dbrew.
---
 src/core/hle/service/apt/apt_a.cpp | 77 +++++++++++++++++++++++++++---
 src/core/hle/service/apt/apt_s.cpp |  3 ++
 2 files changed, 73 insertions(+), 7 deletions(-)

diff --git a/src/core/hle/service/apt/apt_a.cpp b/src/core/hle/service/apt/apt_a.cpp
index a7a0c8a41..6e35e1d29 100644
--- a/src/core/hle/service/apt/apt_a.cpp
+++ b/src/core/hle/service/apt/apt_a.cpp
@@ -9,34 +9,97 @@ namespace Service {
 namespace APT {
 
 const Interface::FunctionInfo FunctionTable[] = {
-    {0x00010040, GetLockHandle, "GetLockHandle?"},
-    {0x00020080, Initialize, "Initialize?"},
-    {0x00030040, Enable, "Enable?"},
-    {0x00040040, nullptr, "Finalize?"},
+    {0x00010040, GetLockHandle, "GetLockHandle"},
+    {0x00020080, Initialize, "Initialize"},
+    {0x00030040, Enable, "Enable"},
+    {0x00040040, nullptr, "Finalize"},
     {0x00050040, GetAppletManInfo, "GetAppletManInfo"},
     {0x00060040, GetAppletInfo, "GetAppletInfo"},
+    {0x00070000, nullptr, "GetLastSignaledAppletId"},
+    {0x00080000, nullptr, "CountRegisteredApplet"},
     {0x00090040, IsRegistered, "IsRegistered"},
+    {0x000A0040, nullptr, "GetAttribute"},
     {0x000B0040, InquireNotification, "InquireNotification"},
     {0x000C0104, SendParameter, "SendParameter"},
     {0x000D0080, ReceiveParameter, "ReceiveParameter"},
     {0x000E0080, GlanceParameter, "GlanceParameter"},
     {0x000F0100, CancelParameter, "CancelParameter"},
+    {0x001000C2, nullptr, "DebugFunc"},
+    {0x001100C0, nullptr, "MapProgramIdForDebug"},
+    {0x00120040, nullptr, "SetHomeMenuAppletIdForDebug"},
+    {0x00130000, nullptr, "GetPreparationState"},
+    {0x00140040, nullptr, "SetPreparationState"},
     {0x00150140, PrepareToStartApplication, "PrepareToStartApplication"},
     {0x00160040, PreloadLibraryApplet, "PreloadLibraryApplet"},
+    {0x00170040, nullptr, "FinishPreloadingLibraryApplet"},
     {0x00180040, PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"},
+    {0x00190040, nullptr, "PrepareToStartSystemApplet"},
+    {0x001A0000, nullptr, "PrepareToStartNewestHomeMenu"},
+    {0x001B00C4, nullptr, "StartApplication"},
+    {0x001C0000, nullptr, "WakeupApplication"},
+    {0x001D0000, nullptr, "CancelApplication"},
     {0x001E0084, StartLibraryApplet, "StartLibraryApplet"},
+    {0x001F0084, nullptr, "StartSystemApplet"},
+    {0x00200044, nullptr, "StartNewestHomeMenu"},
+    {0x00210000, nullptr, "OrderToCloseApplication"},
+    {0x00220040, nullptr, "PrepareToCloseApplication"},
+    {0x00230040, nullptr, "PrepareToJumpToApplication"},
+    {0x00240044, nullptr, "JumpToApplication"},
+    {0x002500C0, nullptr, "PrepareToCloseLibraryApplet"},
+    {0x00260000, nullptr, "PrepareToCloseSystemApplet"},
+    {0x00270044, nullptr, "CloseApplication"},
+    {0x00280044, nullptr, "CloseLibraryApplet"},
+    {0x00290044, nullptr, "CloseSystemApplet"},
+    {0x002A0000, nullptr, "OrderToCloseSystemApplet"},
+    {0x002B0000, nullptr, "PrepareToJumpToHomeMenu"},
+    {0x002C0044, nullptr, "JumpToHomeMenu"},
+    {0x002D0000, nullptr, "PrepareToLeaveHomeMenu"},
+    {0x002E0044, nullptr, "LeaveHomeMenu"},
+    {0x002F0040, nullptr, "PrepareToLeaveResidentApplet"},
+    {0x00300044, nullptr, "LeaveResidentApplet"},
+    {0x00310100, nullptr, "PrepareToDoApplicationJump"},
+    {0x00320084, nullptr, "DoApplicationJump"},
+    {0x00330000, nullptr, "GetProgramIdOnApplicationJump"},
+    {0x00340084, nullptr, "SendDeliverArg"},
+    {0x00350080, nullptr, "ReceiveDeliverArg"},
+    {0x00360040, nullptr, "LoadSysMenuArg"},
+    {0x00370042, nullptr, "StoreSysMenuArg"},
+    {0x00380040, nullptr, "PreloadResidentApplet"},
+    {0x00390040, nullptr, "PrepareToStartResidentApplet"},
+    {0x003A0044, nullptr, "StartResidentApplet"},
     {0x003B0040, CancelLibraryApplet, "CancelLibraryApplet"},
+    {0x003C0042, nullptr, "SendDspSleep"},
+    {0x003D0042, nullptr, "SendDspWakeUp"},
     {0x003E0080, nullptr, "ReplySleepQuery"},
-    {0x00430040, NotifyToWait, "NotifyToWait?"},
-    {0x00440000, GetSharedFont, "GetSharedFont?"},
-    {0x004B00C2, AppletUtility, "AppletUtility?"},
+    {0x003F0040, nullptr, "ReplySleepNotificationComplete"},
+    {0x00400042, nullptr, "SendCaptureBufferInfo"},
+    {0x00410040, nullptr, "ReceiveCaptureBufferInfo"},
+    {0x00420080, nullptr, "SleepSystem"},
+    {0x00430040, NotifyToWait, "NotifyToWait"},
+    {0x00440000, GetSharedFont, "GetSharedFont"},
+    {0x00450040, nullptr, "GetWirelessRebootInfo"},
+    {0x00460104, nullptr, "Wrap"},
+    {0x00470104, nullptr, "Unwrap"},
+    {0x00480100, nullptr, "GetProgramInfo"},
+    {0x00490180, nullptr, "Reboot"},
+    {0x004A0040, nullptr, "GetCaptureInfo"},
+    {0x004B00C2, AppletUtility, "AppletUtility"},
+    {0x004C0000, nullptr, "SetFatalErrDispMode"},
+    {0x004D0080, nullptr, "GetAppletProgramInfo"},
+    {0x004E0000, nullptr, "HardwareResetAsync"},
     {0x004F0080, SetAppCpuTimeLimit, "SetAppCpuTimeLimit"},
     {0x00500040, GetAppCpuTimeLimit, "GetAppCpuTimeLimit"},
     {0x00510080, GetStartupArgument, "GetStartupArgument"},
+    {0x00520104, nullptr, "Wrap1"},
+    {0x00530104, nullptr, "Unwrap1"},
     {0x00550040, SetScreenCapPostPermission, "SetScreenCapPostPermission"},
     {0x00560000, GetScreenCapPostPermission, "GetScreenCapPostPermission"},
+    {0x00570044, nullptr, "WakeupApplication2"},
+    {0x00580002, nullptr, "GetProgramID"},
     {0x01010000, CheckNew3DSApp, "CheckNew3DSApp"},
     {0x01020000, CheckNew3DS, "CheckNew3DS"},
+    {0x01040000, nullptr, "IsStandardMemoryLayout"},
+    {0x01050100, nullptr, "IsTitleAllowed"},
 };
 
 APT_A_Interface::APT_A_Interface() {
diff --git a/src/core/hle/service/apt/apt_s.cpp b/src/core/hle/service/apt/apt_s.cpp
index c4556a5de..84019e6e5 100644
--- a/src/core/hle/service/apt/apt_s.cpp
+++ b/src/core/hle/service/apt/apt_s.cpp
@@ -94,9 +94,12 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00530104, nullptr, "Unwrap1"},
     {0x00550040, SetScreenCapPostPermission, "SetScreenCapPostPermission"},
     {0x00560000, GetScreenCapPostPermission, "GetScreenCapPostPermission"},
+    {0x00570044, nullptr, "WakeupApplication2"},
     {0x00580002, nullptr, "GetProgramID"},
     {0x01010000, CheckNew3DSApp, "CheckNew3DSApp"},
     {0x01020000, CheckNew3DS, "CheckNew3DS"},
+    {0x01040000, nullptr, "IsStandardMemoryLayout"},
+    {0x01050100, nullptr, "IsTitleAllowed"},
 };
 
 APT_S_Interface::APT_S_Interface() {

From 74b3f0faa792cfd2199db2c054fa697d6ecfff1f Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 22:54:34 -0500
Subject: [PATCH 02/14] act: Update function tables

Updated based off information from 3dbrew.
---
 src/core/hle/service/act_a.cpp | 7 +++++++
 src/core/hle/service/act_u.cpp | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/src/core/hle/service/act_a.cpp b/src/core/hle/service/act_a.cpp
index 3a775fa90..35ba71f79 100644
--- a/src/core/hle/service/act_a.cpp
+++ b/src/core/hle/service/act_a.cpp
@@ -10,6 +10,13 @@
 namespace ACT_A {
 
 const Interface::FunctionInfo FunctionTable[] = {
+    // act:u shared commands
+    {0x00010084, nullptr, "Initialize"},
+    {0x00020040, nullptr, "GetErrorCode"},
+    {0x000600C2, nullptr, "GetAccountDataBlock"},
+    {0x000B0042, nullptr, "AcquireEulaList"},
+    {0x000D0040, nullptr, "GenerateUuid"},
+    // act:a
     {0x041300C2, nullptr, "UpdateMiiImage"},
     {0x041B0142, nullptr, "AgreeEula"},
     {0x04210042, nullptr, "UploadMii"},
diff --git a/src/core/hle/service/act_u.cpp b/src/core/hle/service/act_u.cpp
index 05de4d002..1b871d441 100644
--- a/src/core/hle/service/act_u.cpp
+++ b/src/core/hle/service/act_u.cpp
@@ -10,10 +10,13 @@
 namespace ACT_U {
 
 const Interface::FunctionInfo FunctionTable[] = {
+    // clang-format off
     {0x00010084, nullptr, "Initialize"},
     {0x00020040, nullptr, "GetErrorCode"},
     {0x000600C2, nullptr, "GetAccountDataBlock"},
+    {0x000B0042, nullptr, "AcquireEulaList"},
     {0x000D0040, nullptr, "GenerateUuid"},
+    // clang-format on
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////

From 4ebdb7e3e10c57c6e52c9f822f735c4cb720d260 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:01:16 -0500
Subject: [PATCH 03/14] boss_p: Update function table

---
 src/core/hle/service/boss/boss_p.cpp | 71 ++++++++++++++++++++++++++--
 1 file changed, 68 insertions(+), 3 deletions(-)

diff --git a/src/core/hle/service/boss/boss_p.cpp b/src/core/hle/service/boss/boss_p.cpp
index dfee8d055..ee941e228 100644
--- a/src/core/hle/service/boss/boss_p.cpp
+++ b/src/core/hle/service/boss/boss_p.cpp
@@ -2,16 +2,81 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
+#include "core/hle/service/boss/boss.h"
 #include "core/hle/service/boss/boss_p.h"
 
 namespace Service {
 namespace BOSS {
 
-// Empty arrays are illegal -- commented out until an entry is added.
-// const Interface::FunctionInfo FunctionTable[] = { };
+const Interface::FunctionInfo FunctionTable[] = {
+    // boss:u shared commands
+    {0x00010082, InitializeSession, "InitializeSession"},
+    {0x00020100, RegisterStorage, "RegisterStorage"},
+    {0x00030000, UnregisterStorage, "UnregisterStorage"},
+    {0x00040000, GetStorageInfo, "GetStorageInfo"},
+    {0x00050042, RegisterPrivateRootCa, "RegisterPrivateRootCa"},
+    {0x00060084, RegisterPrivateClientCert, "RegisterPrivateClientCert"},
+    {0x00070000, GetNewArrivalFlag, "GetNewArrivalFlag"},
+    {0x00080002, RegisterNewArrivalEvent, "RegisterNewArrivalEvent"},
+    {0x00090040, SetOptoutFlag, "SetOptoutFlag"},
+    {0x000A0000, GetOptoutFlag, "GetOptoutFlag"},
+    {0x000B00C2, RegisterTask, "RegisterTask"},
+    {0x000C0082, UnregisterTask, "UnregisterTask"},
+    {0x000D0082, ReconfigureTask, "ReconfigureTask"},
+    {0x000E0000, GetTaskIdList, "GetTaskIdList"},
+    {0x000F0042, GetStepIdList, "GetStepIdList"},
+    {0x00100102, GetNsDataIdList, "GetNsDataIdList"},
+    {0x00110102, GetOwnNsDataIdList, "GetOwnNsDataIdList"},
+    {0x00120102, GetNewDataNsDataIdList, "GetNewDataNsDataIdList"},
+    {0x00130102, GetOwnNewDataNsDataIdList, "GetOwnNewDataNsDataIdList"},
+    {0x00140082, SendProperty, "SendProperty"},
+    {0x00150042, SendPropertyHandle, "SendPropertyHandle"},
+    {0x00160082, ReceiveProperty, "ReceiveProperty"},
+    {0x00170082, UpdateTaskInterval, "UpdateTaskInterval"},
+    {0x00180082, UpdateTaskCount, "UpdateTaskCount"},
+    {0x00190042, GetTaskInterval, "GetTaskInterval"},
+    {0x001A0042, GetTaskCount, "GetTaskCount"},
+    {0x001B0042, GetTaskServiceStatus, "GetTaskServiceStatus"},
+    {0x001C0042, StartTask, "StartTask"},
+    {0x001D0042, StartTaskImmediate, "StartTaskImmediate"},
+    {0x001E0042, CancelTask, "CancelTask"},
+    {0x001F0000, GetTaskFinishHandle, "GetTaskFinishHandle"},
+    {0x00200082, GetTaskState, "GetTaskState"},
+    {0x00210042, GetTaskResult, "GetTaskResult"},
+    {0x00220042, GetTaskCommErrorCode, "GetTaskCommErrorCode"},
+    {0x002300C2, GetTaskStatus, "GetTaskStatus"},
+    {0x00240082, GetTaskError, "GetTaskError"},
+    {0x00250082, GetTaskInfo, "GetTaskInfo"},
+    {0x00260040, DeleteNsData, "DeleteNsData"},
+    {0x002700C2, GetNsDataHeaderInfo, "GetNsDataHeaderInfo"},
+    {0x00280102, ReadNsData, "ReadNsData"},
+    {0x00290080, SetNsDataAdditionalInfo, "SetNsDataAdditionalInfo"},
+    {0x002A0040, GetNsDataAdditionalInfo, "GetNsDataAdditionalInfo"},
+    {0x002B0080, SetNsDataNewFlag, "SetNsDataNewFlag"},
+    {0x002C0040, GetNsDataNewFlag, "GetNsDataNewFlag"},
+    {0x002D0040, GetNsDataLastUpdate, "GetNsDataLastUpdate"},
+    {0x002E0040, GetErrorCode, "GetErrorCode"},
+    {0x002F0140, RegisterStorageEntry, "RegisterStorageEntry"},
+    {0x00300000, GetStorageEntryInfo, "GetStorageEntryInfo"},
+    {0x00310100, SetStorageOption, "SetStorageOption"},
+    {0x00320000, GetStorageOption, "GetStorageOption"},
+    {0x00330042, StartBgImmediate, "StartBgImmediate"},
+    {0x00340042, GetTaskActivePriority, "GetTaskActivePriority"},
+    {0x003500C2, RegisterImmediateTask, "RegisterImmediateTask"},
+    {0x00360084, SetTaskQuery, "SetTaskQuery"},
+    {0x00370084, GetTaskQuery, "GetTaskQuery"},
+    // boss:p
+    {0x04040080, nullptr, "GetAppNewFlag"},
+    {0x04130082, nullptr, "SendPropertyPrivileged"},
+    {0x041500C0, nullptr, "DeleteNsDataPrivileged"},
+    {0x04160142, nullptr, "GetNsDataHeaderInfoPrivileged"},
+    {0x04170182, nullptr, "ReadNsDataPrivileged"},
+    {0x041A0100, nullptr, "SetNsDataNewFlagPrivileged"},
+    {0x041B00C0, nullptr, "GetNsDataNewFlagPrivileged"},
+};
 
 BOSS_P_Interface::BOSS_P_Interface() {
-    // Register(FunctionTable);
+    Register(FunctionTable);
 }
 
 } // namespace BOSS

From 0229983ff2ec9259e94b0ee9b980de6bb33f4b0d Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:06:24 -0500
Subject: [PATCH 04/14] cecd_u: Update function table

Updated based off information from 3dbrew.
---
 src/core/hle/service/cecd/cecd_u.cpp | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/core/hle/service/cecd/cecd_u.cpp b/src/core/hle/service/cecd/cecd_u.cpp
index 4b747de7b..7d98ba6e9 100644
--- a/src/core/hle/service/cecd/cecd_u.cpp
+++ b/src/core/hle/service/cecd/cecd_u.cpp
@@ -9,10 +9,22 @@ namespace Service {
 namespace CECD {
 
 static const Interface::FunctionInfo FunctionTable[] = {
+    {0x000100C2, nullptr, "OpenRawFile"},
+    {0x00020042, nullptr, "ReadRawFile"},
+    {0x00030104, nullptr, "ReadMessage"},
+    {0x00040106, nullptr, "ReadMessageWithHMAC"},
+    {0x00050042, nullptr, "WriteRawFile"},
+    {0x00060104, nullptr, "WriteMessage"},
+    {0x00070106, nullptr, "WriteMessageWithHMAC"},
+    {0x00080102, nullptr, "Delete"},
+    {0x000A00C4, nullptr, "GetSystemInfo"},
+    {0x000B0040, nullptr, "RunCommand"},
+    {0x000C0040, nullptr, "RunCommandAlt"},
     {0x000E0000, GetCecStateAbbreviated, "GetCecStateAbbreviated"},
     {0x000F0000, GetCecInfoEventHandle, "GetCecInfoEventHandle"},
     {0x00100000, GetChangeStateEventHandle, "GetChangeStateEventHandle"},
-    {0x00120104, nullptr, "ReadSavedData"},
+    {0x00110104, nullptr, "OpenAndWrite"},
+    {0x00120104, nullptr, "OpenAndRead"},
 };
 
 CECD_U_Interface::CECD_U_Interface() {

From 733c8890aa33a36ad554f24e3f6ba67eb6088d24 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:09:49 -0500
Subject: [PATCH 05/14] cfg: Update function tables

Updated based off information from 3dbrew
---
 src/core/hle/service/cfg/cfg_i.cpp | 1 +
 src/core/hle/service/cfg/cfg_s.cpp | 1 +
 src/core/hle/service/cfg/cfg_u.cpp | 1 +
 3 files changed, 3 insertions(+)

diff --git a/src/core/hle/service/cfg/cfg_i.cpp b/src/core/hle/service/cfg/cfg_i.cpp
index 2ff52c8b8..46312da4b 100644
--- a/src/core/hle/service/cfg/cfg_i.cpp
+++ b/src/core/hle/service/cfg/cfg_i.cpp
@@ -20,6 +20,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00080080, nullptr, "GoThroughTable"},
     {0x00090040, GetCountryCodeString, "GetCountryCodeString"},
     {0x000A0040, GetCountryCodeID, "GetCountryCodeID"},
+    {0x000B0000, nullptr, "IsFangateSupported"},
     // cfg:i
     {0x04010082, GetConfigInfoBlk8, "GetConfigInfoBlk8"},
     {0x04020082, SetConfigInfoBlk4, "SetConfigInfoBlk4"},
diff --git a/src/core/hle/service/cfg/cfg_s.cpp b/src/core/hle/service/cfg/cfg_s.cpp
index eed26dec7..564a9bb08 100644
--- a/src/core/hle/service/cfg/cfg_s.cpp
+++ b/src/core/hle/service/cfg/cfg_s.cpp
@@ -20,6 +20,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00080080, nullptr, "GoThroughTable"},
     {0x00090040, GetCountryCodeString, "GetCountryCodeString"},
     {0x000A0040, GetCountryCodeID, "GetCountryCodeID"},
+    {0x000B0000, nullptr, "IsFangateSupported"},
     // cfg:s
     {0x04010082, GetConfigInfoBlk8, "GetConfigInfoBlk8"},
     {0x04020082, SetConfigInfoBlk4, "SetConfigInfoBlk4"},
diff --git a/src/core/hle/service/cfg/cfg_u.cpp b/src/core/hle/service/cfg/cfg_u.cpp
index f28217134..4c82846c0 100644
--- a/src/core/hle/service/cfg/cfg_u.cpp
+++ b/src/core/hle/service/cfg/cfg_u.cpp
@@ -20,6 +20,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00080080, nullptr, "GoThroughTable"},
     {0x00090040, GetCountryCodeString, "GetCountryCodeString"},
     {0x000A0040, GetCountryCodeID, "GetCountryCodeID"},
+    {0x000B0000, nullptr, "IsFangateSupported"},
 };
 
 CFG_U_Interface::CFG_U_Interface() {

From 093aa35c87ca1014a6fe1906b0bb72896ddf647f Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:13:53 -0500
Subject: [PATCH 06/14] dlp_srvr: Update function table

---
 src/core/hle/service/dlp/dlp_srvr.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/core/hle/service/dlp/dlp_srvr.cpp b/src/core/hle/service/dlp/dlp_srvr.cpp
index 49d5b8d1c..25c07f401 100644
--- a/src/core/hle/service/dlp/dlp_srvr.cpp
+++ b/src/core/hle/service/dlp/dlp_srvr.cpp
@@ -22,7 +22,14 @@ static void unk_0x000E0040(Interface* self) {
 const Interface::FunctionInfo FunctionTable[] = {
     {0x00010183, nullptr, "Initialize"},
     {0x00020000, nullptr, "Finalize"},
+    {0x00030000, nullptr, "GetServerState"},
+    {0x00050080, nullptr, "StartAccepting"},
+    {0x00070000, nullptr, "StartDistribution"},
     {0x000800C0, nullptr, "SendWirelessRebootPassphrase"},
+    {0x00090040, nullptr, "AcceptClient"},
+    {0x000B0042, nullptr, "GetConnectingClients"},
+    {0x000C0040, nullptr, "GetClientInfo"},
+    {0x000D0040, nullptr, "GetClientState"},
     {0x000E0040, unk_0x000E0040, "unk_0x000E0040"},
 };
 

From 006e6a7f4a7647e813d4b2b5929f7d351a1f0162 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:22:22 -0500
Subject: [PATCH 07/14] fs_user: Update function table

Updated based off information from 3dbrew.
---
 src/core/hle/service/fs/fs_user.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/core/hle/service/fs/fs_user.cpp b/src/core/hle/service/fs/fs_user.cpp
index 9ec17b395..d6ab5b065 100644
--- a/src/core/hle/service/fs/fs_user.cpp
+++ b/src/core/hle/service/fs/fs_user.cpp
@@ -1003,6 +1003,8 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x08680000, nullptr, "GetMediaType"},
     {0x08690000, nullptr, "GetNandEraseCount"},
     {0x086A0082, nullptr, "ReadNandReport"},
+    {0x087A0180, nullptr, "AddSeed"},
+    {0x088600C0, nullptr, "CheckUpdatedDat"},
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////

From 65d94857c3e2de1ccf4545806887cec21ba28d6e Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:26:25 -0500
Subject: [PATCH 08/14] gsp_lcd: Update function table

Updated based off information from 3dbrew.
---
 src/core/hle/service/gsp_lcd.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/core/hle/service/gsp_lcd.cpp b/src/core/hle/service/gsp_lcd.cpp
index b916dd759..3fdf5cca4 100644
--- a/src/core/hle/service/gsp_lcd.cpp
+++ b/src/core/hle/service/gsp_lcd.cpp
@@ -11,11 +11,15 @@ namespace GSP_LCD {
 
 const Interface::FunctionInfo FunctionTable[] = {
     // clang-format off
+    {0x000A0080, nullptr, "SetBrightnessRaw"},
+    {0x000B0080, nullptr, "SetBrightness"},
     {0x000F0000, nullptr, "PowerOnAllBacklights"},
     {0x00100000, nullptr, "PowerOffAllBacklights"},
     {0x00110040, nullptr, "PowerOnBacklight"},
     {0x00120040, nullptr, "PowerOffBacklight"},
     {0x00130040, nullptr, "SetLedForceOff"},
+    {0x00140000, nullptr, "GetVendor"},
+    {0x00150040, nullptr, "GetBrightness"},
     // clang-format on
 };
 

From c4bcd5c4ac32d6f0f9829960ab2856feb3b19dfe Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:33:35 -0500
Subject: [PATCH 09/14] http_c: Update function table

Updated based off information from 3dbrew.
---
 src/core/hle/service/http_c.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/core/hle/service/http_c.cpp b/src/core/hle/service/http_c.cpp
index 3cf62a4b8..65c7babe5 100644
--- a/src/core/hle/service/http_c.cpp
+++ b/src/core/hle/service/http_c.cpp
@@ -55,6 +55,10 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x002E0040, nullptr, "DestroyRootCertChain"},
     {0x002F0082, nullptr, "RootCertChainAddCert"},
     {0x00300080, nullptr, "RootCertChainAddDefaultCert"},
+    {0x00310080, nullptr, "RootCertChainRemoveCert"},
+    {0x00320084, nullptr, "OpenClientCertContext"},
+    {0x00330040, nullptr, "OpenDefaultClientCertContext"},
+    {0x00340040, nullptr, "CloseClientCertContext"},
     {0x00350186, nullptr, "SetDefaultProxy"},
     {0x00360000, nullptr, "ClearDNSCache"},
     {0x00370080, nullptr, "SetKeepAlive"},

From 4a150a8f3ceb4775f2974a46c4328e565a8f46c7 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:46:12 -0500
Subject: [PATCH 10/14] nim: Update function tables

Updated based off information from 3dbrew.
---
 src/core/hle/service/nim/nim_s.cpp | 1 +
 src/core/hle/service/nim/nim_u.cpp | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/core/hle/service/nim/nim_s.cpp b/src/core/hle/service/nim/nim_s.cpp
index e2ba693c9..28b87e6f7 100644
--- a/src/core/hle/service/nim/nim_s.cpp
+++ b/src/core/hle/service/nim/nim_s.cpp
@@ -10,6 +10,7 @@ namespace NIM {
 const Interface::FunctionInfo FunctionTable[] = {
     {0x000A0000, nullptr, "CheckSysupdateAvailableSOAP"},
     {0x0016020A, nullptr, "ListTitles"},
+    {0x00290000, nullptr, "AccountCheckBalanceSOAP"},
     {0x002D0042, nullptr, "DownloadTickets"},
     {0x00420240, nullptr, "StartDownload"},
 };
diff --git a/src/core/hle/service/nim/nim_u.cpp b/src/core/hle/service/nim/nim_u.cpp
index 7e07d02e8..7664bad60 100644
--- a/src/core/hle/service/nim/nim_u.cpp
+++ b/src/core/hle/service/nim/nim_u.cpp
@@ -15,6 +15,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00050000, nullptr, "CheckForSysUpdateEvent"},
     {0x00090000, CheckSysUpdateAvailable, "CheckSysUpdateAvailable"},
     {0x000A0000, nullptr, "GetState"},
+    {0x000B0000, nullptr, "GetSystemTitleHash"},
 };
 
 NIM_U_Interface::NIM_U_Interface() {

From 9f2ad62084fd9ed76d300c5661096df63a7748c1 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:51:40 -0500
Subject: [PATCH 11/14] nwm_uds: Update function table

Updated based off information from 3dbrew.
---
 src/core/hle/service/nwm_uds.cpp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/core/hle/service/nwm_uds.cpp b/src/core/hle/service/nwm_uds.cpp
index 80081aae2..8a2b00614 100644
--- a/src/core/hle/service/nwm_uds.cpp
+++ b/src/core/hle/service/nwm_uds.cpp
@@ -90,7 +90,7 @@ static void RecvBeaconBroadcastData(Service::Interface* self) {
  *      2 : Value 0
  *      3 : Output handle
  */
-static void Initialize(Service::Interface* self) {
+static void InitializeWithVersion(Service::Interface* self) {
     u32* cmd_buff = Kernel::GetCommandBuffer();
     u32 unk1 = cmd_buff[1];
     u32 unk2 = cmd_buff[12];
@@ -120,24 +120,26 @@ static void Initialize(Service::Interface* self) {
 const Interface::FunctionInfo FunctionTable[] = {
     {0x00020000, nullptr, "Scrap"},
     {0x00030000, Shutdown, "Shutdown"},
-    {0x00040402, nullptr, "CreateNetwork"},
+    {0x00040402, nullptr, "CreateNetwork (deprecated)"},
     {0x00050040, nullptr, "EjectClient"},
     {0x00060000, nullptr, "EjectSpectator"},
     {0x00070080, nullptr, "UpdateNetworkAttribute"},
     {0x00080000, nullptr, "DestroyNetwork"},
+    {0x00090442, nullptr, "ConnectNetwork (deprecated)"},
     {0x000A0000, nullptr, "DisconnectNetwork"},
     {0x000B0000, nullptr, "GetConnectionStatus"},
     {0x000D0040, nullptr, "GetNodeInformation"},
+    {0x000E0006, nullptr, "DecryptBeaconData (deprecated)"},
     {0x000F0404, RecvBeaconBroadcastData, "RecvBeaconBroadcastData"},
-    {0x00100042, nullptr, "SetBeaconAdditionalData"},
+    {0x00100042, nullptr, "SetApplicationData"},
     {0x00110040, nullptr, "GetApplicationData"},
     {0x00120100, nullptr, "Bind"},
     {0x00130040, nullptr, "Unbind"},
-    {0x001400C0, nullptr, "RecvBroadcastDataFrame"},
+    {0x001400C0, nullptr, "PullPacket"},
     {0x00150080, nullptr, "SetMaxSendDelay"},
     {0x00170182, nullptr, "SendTo"},
     {0x001A0000, nullptr, "GetChannel"},
-    {0x001B0302, Initialize, "Initialize"},
+    {0x001B0302, InitializeWithVersion, "InitializeWithVersion"},
     {0x001D0044, nullptr, "BeginHostingNetwork"},
     {0x001E0084, nullptr, "ConnectToNetwork"},
     {0x001F0006, nullptr, "DecryptBeaconData"},

From c67dae54b9156d0a0ad3ef5f027b2b66ed68459e Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 7 Dec 2016 23:54:33 -0500
Subject: [PATCH 12/14] pm_app: Update function table

Updated based off information from 3dbrew.
---
 src/core/hle/service/pm_app.cpp | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/core/hle/service/pm_app.cpp b/src/core/hle/service/pm_app.cpp
index 7d91694f6..194d7c40d 100644
--- a/src/core/hle/service/pm_app.cpp
+++ b/src/core/hle/service/pm_app.cpp
@@ -10,18 +10,21 @@
 namespace PM_APP {
 
 const Interface::FunctionInfo FunctionTable[] = {
+    // clang-format off
     {0x00010140, nullptr, "LaunchTitle"},
-    {0x00020082, nullptr, "LaunchFIRMSetParams"},
-    {0x00030080, nullptr, "TerminateProcesse"},
-    {0x00040100, nullptr, "TerminateProcessTID"},
-    {0x000500C0, nullptr, "TerminateProcessTID_unknown"},
+    {0x00020082, nullptr, "LaunchFIRM"},
+    {0x00030080, nullptr, "TerminateApplication"},
+    {0x00040100, nullptr, "TerminateTitle"},
+    {0x000500C0, nullptr, "TerminateProcess"},
+    {0x00060082, nullptr, "PrepareForReboot"},
     {0x00070042, nullptr, "GetFIRMLaunchParams"},
     {0x00080100, nullptr, "GetTitleExheaderFlags"},
     {0x00090042, nullptr, "SetFIRMLaunchParams"},
-    {0x000A0140, nullptr, "SetResourceLimit"},
-    {0x000B0140, nullptr, "GetResourceLimitMax"},
+    {0x000A0140, nullptr, "SetAppResourceLimit"},
+    {0x000B0140, nullptr, "GetAppResourceLimit"},
     {0x000C0080, nullptr, "UnregisterProcess"},
     {0x000D0240, nullptr, "LaunchTitleUpdate"},
+    // clang-format on
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////

From ab900f8a25995dcaf56777492440b9265cd7b9e8 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Thu, 8 Dec 2016 00:02:00 -0500
Subject: [PATCH 13/14] ptm: Update ptm_sysm function table

Updated based off information from 3dbrew.
---
 src/core/hle/service/ptm/ptm.cpp      | 2 +-
 src/core/hle/service/ptm/ptm.h        | 7 ++++---
 src/core/hle/service/ptm/ptm_sysm.cpp | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/core/hle/service/ptm/ptm.cpp b/src/core/hle/service/ptm/ptm.cpp
index cc859c14c..6a9f1d24d 100644
--- a/src/core/hle/service/ptm/ptm.cpp
+++ b/src/core/hle/service/ptm/ptm.cpp
@@ -81,7 +81,7 @@ void GetTotalStepCount(Service::Interface* self) {
     LOG_WARNING(Service_PTM, "(STUBBED) called");
 }
 
-void IsLegacyPowerOff(Service::Interface* self) {
+void GetSoftwareClosedFlag(Service::Interface* self) {
     u32* cmd_buff = Kernel::GetCommandBuffer();
 
     cmd_buff[1] = RESULT_SUCCESS.raw;
diff --git a/src/core/hle/service/ptm/ptm.h b/src/core/hle/service/ptm/ptm.h
index 6e163a6f9..a1a628012 100644
--- a/src/core/hle/service/ptm/ptm.h
+++ b/src/core/hle/service/ptm/ptm.h
@@ -82,12 +82,13 @@ void GetBatteryChargeState(Interface* self);
 void GetTotalStepCount(Interface* self);
 
 /**
- * PTM::IsLegacyPowerOff service function
+ * PTM::GetSoftwareClosedFlag service function
  *  Outputs:
  *      1: Result code, 0 on success, otherwise error code
- *      2: Whether the system is going through a power off
+ *      2: Whether or not the "software closed" dialog was requested by the last FIRM
+ *         and should be displayed.
  */
-void IsLegacyPowerOff(Interface* self);
+void GetSoftwareClosedFlag(Interface* self);
 
 /**
  * PTM::CheckNew3DS service function
diff --git a/src/core/hle/service/ptm/ptm_sysm.cpp b/src/core/hle/service/ptm/ptm_sysm.cpp
index 693158dbf..82e118e2b 100644
--- a/src/core/hle/service/ptm/ptm_sysm.cpp
+++ b/src/core/hle/service/ptm/ptm_sysm.cpp
@@ -33,8 +33,8 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x080C0080, nullptr, "SetUserTime"},
     {0x080D0000, nullptr, "InvalidateSystemTime"},
     {0x080E0140, nullptr, "NotifyPlayEvent"},
-    {0x080F0000, IsLegacyPowerOff, "IsLegacyPowerOff"},
-    {0x08100000, nullptr, "ClearLegacyPowerOff"},
+    {0x080F0000, GetSoftwareClosedFlag, "GetSoftwareClosedFlag"},
+    {0x08100000, nullptr, "ClearSoftwareClosedFlag"},
     {0x08110000, GetShellState, "GetShellState"},
     {0x08120000, nullptr, "IsShutdownByBatteryEmpty"},
     {0x08130000, nullptr, "FormatSavedata"},

From a09602d6f6a98fcadbb32657126196836e66d4e0 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Thu, 8 Dec 2016 00:08:31 -0500
Subject: [PATCH 14/14] ssl_c: Update function table

Updated based off information from 3dbrew
---
 src/core/hle/service/ssl_c.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/core/hle/service/ssl_c.cpp b/src/core/hle/service/ssl_c.cpp
index abab1d271..6d36e5a24 100644
--- a/src/core/hle/service/ssl_c.cpp
+++ b/src/core/hle/service/ssl_c.cpp
@@ -66,6 +66,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00050082, nullptr, "AddTrustedRootCA"},
     {0x00060080, nullptr, "RootCertChainAddDefaultCert"},
     {0x00070080, nullptr, "RootCertChainRemoveCert"},
+    {0x000D0084, nullptr, "OpenClientCertContext"},
     {0x000E0040, nullptr, "OpenDefaultClientCertContext"},
     {0x000F0040, nullptr, "CloseClientCertContext"},
     {0x00110042, GenerateRandomData, "GenerateRandomData"},
@@ -73,10 +74,12 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00130040, nullptr, "StartConnection"},
     {0x00140040, nullptr, "StartConnectionGetOut"},
     {0x00150082, nullptr, "Read"},
+    {0x00160082, nullptr, "ReadPeek"},
     {0x00170082, nullptr, "Write"},
     {0x00180080, nullptr, "ContextSetRootCertChain"},
     {0x00190080, nullptr, "ContextSetClientCert"},
     {0x001B0080, nullptr, "ContextClearOpt"},
+    {0x001C00C4, nullptr, "ContextGetProtocolCipher"},
     {0x001E0040, nullptr, "DestroyContext"},
     {0x001F0082, nullptr, "ContextInitSharedmem"},
 };