# PiSmmIpl

## Function Table

| Address | Name | Description |
|---------|------|-------------|
|  | **ModuleEntryPoint** |  |
|  | **sub_1504** |  |
|  | **sub_1854** |  |
|  | **sub_1B0C** |  |
|  | **sub_2CF8** |  |
|  | **sub_2D80** |  |
|  | **sub_2E40** |  |
|  | **sub_2E4C** |  |
|  | **sub_2EA4** |  |
|  | **sub_2FAC** |  |
|  | **sub_3034** |  |
|  | **sub_43C4** |  |
|  | **sub_4424** |  |
|  | **sub_444C** |  |
| Full | **decompilation of all functions** |  |
| _ModuleEntryPoint | **@ 0x1128** |  |
| rbx | **sub_1154(ImageHandle, SystemTable); /*0x1131*/** |  |
| sub_1154 | **@ 0x1154** |  |
| r10 | **__int64 BootServices_1; // r10** |  |
| rax | **__int64 v6; // rax** |  |
| rbx | **__int64 v8; // rax** |  |
| rbx | **__int64 v10; // rax** |  |
| rax | **::ImageHandle = ImageHandle; /*0x116c*/** |  |
| sub_1504 | **@ 0x1504** |  |
| rax | **__int64 v1; // rax** |  |
| rax | **__int64 BootServices_1; // rax** |  |
| rax | **__int64 v5; // rax** |  |
| rbx | **BootServices = BootServices; /*0x1518*/** |  |
| sub_16CC | **@ 0x16CC** |  |
| sub_1704 | **@ 0x1704** |  |
| rax | **char _smmc__1; // di** |  |
| sub_180C | **@ 0x180C** |  |
| sub_1854 | **@ 0x1854** |  |
| sub_185C | **@ 0x185C** |  |
| rax | **unsigned __int64 result; // rax** |  |
| sub_1958 | **@ 0x1958** |  |
| rax | **__int64 v3; // rax** |  |
| r8 | **__int64 v5; // [rsp+40h] [rbp+18h] BYREF** |  |
| sub_19E8 | **@ 0x19E8** |  |
| rax | **__int64 v3; // rbx** |  |
| rax | **char v5; // [rsp+40h] [rbp+18h] BYREF** |  |
| sub_1AA8 | **@ 0x1AA8** |  |
| sub_1B0C | **@ 0x1B0C** |  |
| sub_1B20 | **@ 0x1B20** |  |
| r12 | **__int64 v4; // r14** |  |
| rbx | **unsigned __int64 v7; // rax** |  |
| rdi | **__int64 v9; // rsi** |  |
| r8d | **int v11; // r9d** |  |
| rax | **unsigned int v13; // r9d** |  |
| rbx | **unsigned __int64 v15; // rbx** |  |
| r8 | **__int64 v17; // rax** |  |
| r8 | **unsigned __int64 v19; // [rsp+30h] [rbp-A9h] BYREF** |  |
| sub_1E50 | **@ 0x1E50** |  |
| rax | **unsigned __int64 v9; // r10** |  |
| rcx | **unsigned __int64 v13; // rdi** |  |
| rsi | **__int64 v16; // rax** |  |
| r10 | **__int64 v18; // r8** |  |
| rcx | **__int64 v20; // rdx** |  |
| rdx | **__int64 v22; // rcx** |  |
| rcx | **unsigned __int64 v24; // rax** |  |
| r8 | **__int64 v26; // rcx** |  |
| rdx | **__int64 v28; // rcx** |  |
| rdx | **__int64 v30; // rcx** |  |
| rcx | **_UNKNOWN *retaddr; // [rsp+8h] [rbp+0h] BYREF** |  |
| sub_2098 | **@ 0x2098** |  |
| rax | **__int64 v3; // rcx** |  |
| rsi | **unsigned __int64 v5; // rbx** |  |
| rax | **unsigned __int64 v7; // r15** |  |
| r12 | **__int64 v9; // rdi** |  |
| r14 | **__int64 v11; // rcx** |  |
| rcx | **__int64 v13; // r13** |  |
| rdi | **__int64 v15; // r14** |  |
| rax | **unsigned __int64 v17; // rcx** |  |
| r12 | **unsigned __int64 v19; // rax** |  |
| r15 | **unsigned __int64 *v21; // r14** |  |
| r11 | **unsigned __int64 *v23; // rbx** |  |
| r8 | **unsigned __int64 v25; // rdx** |  |
| rcx | **__int64 v27; // rax** |  |
| rsi | **unsigned __int64 v29; // rbx** |  |
| rax | **unsigned __int64 v31; // rcx** |  |
| r8 | **_QWORD *v33; // rdx** |  |
| rbx | **__int64 v36; // rdi** |  |
| rax | **__int64 v38; // rbx** |  |
| rax | **_QWORD *v40; // [rsp+40h] ... [9911 chars total]** |  |
| sub_2598 | **@ 0x2598** |  |
| rax | **__int64 v5; // rbx** |  |
| rax | **unsigned __int64 n258048; // rdi** |  |
| rdx | **__int64 v9; // r11** |  |
| r9 | **_BYTE *v11; // r10** |  |
| rcx | **unsigned __int64 v13; // rdx** |  |
| rcx | **char v15; // r11** |  |
| rbx | **__int64 v17; // r10** |  |
| rax | **unsigned __int64 v19; // r9** |  |
| r8 | **__int64 v21; // rax** |  |
| rdi | **__int64 (__fastcall **v23)(); // rcx** |  |
| rbx | **__int64 v25; // rbp** |  |
| r14 | **__int64 (__fastcall *v27)(); // rsi** |  |
| r15 | **__int64 v29; // rax** |  |
| rax | **__int64 v31; // rax** |  |
| rax | **__int64 v34; // [rsp+70h] [rbp+8h] BYREF** |  |
| sub_2B38 | **@ 0x2B38** |  |
| sub_2B80 | **@ 0x2B80** |  |
| rdi | **__int64 v7; // rax** |  |
| sub_2BE8 | **@ 0x2BE8** |  |
| rbp | **v3 = n16 - 1; /*0x2c05*/** |  |
| sub_2C88 | **@ 0x2C88** |  |
| sub_2CB8 | **@ 0x2CB8** |  |
| sub_2CF8 | **@ 0x2CF8** |  |
| rax | **unsigned __int64 n0x10; // rbx** |  |
| sub_2D80 | **@ 0x2D80** |  |
| rax | **__int64 v4; // r8** |  |
| r9 | **unsigned __int8 v6; // al** |  |
| al | **int n113; // edx** |  |
| sub_2E00 | **@ 0x2E00** |  |
| rax | **result = sub_2CF8(); /*0x2e18*/** |  |
| sub_2E40 | **@ 0x2E40** |  |
| sub_2E4C | **@ 0x2E4C** |  |
| rax | **if ( qword_6430 ) /*0x2e58*/** |  |
| sub_2E74 | **@ 0x2E74** |  |
| sub_2EA4 | **@ 0x2EA4** |  |
| rax | **result = (*(__int64 (**)(void))(BootServices + 72))(); /*0x2eaf*/** |  |
| sub_2EE8 | **@ 0x2EE8** |  |
| r14 | **if ( !a1 ) /*0x2f0a*/** |  |
| sub_2FAC | **@ 0x2FAC** |  |
| sub_3034 | **@ 0x3034** |  |
| rax | **result = (*(__int64 (__fastcall **)(_QWORD, __int64 *))(RuntimeServices + 64))(0, &RuntimeServices_1); /*0x3048*/** |  |
| sub_3058 | **@ 0x3058** |  |
| rcx | **bool v4; // zf** |  |
| eax | **__int64 v6; // r9** |  |
| rcx | **__int64 v8; // rcx** |  |
| ax | **unsigned __int64 v10; // rdx** |  |
| rcx | **__int64 v13; // rax** |  |
| r8d | **unsigned int v15; // r8d** |  |
| r10d | **unsigned int v17; // edx** |  |
| edx | **int v19; // edx** |  |
| ecx | **unsigned int n0x10; // r8d** |  |
| r9d | **unsigned int v23; // r8d** |  |
| r10d | **unsigned int v25; // edx** |  |
| edx | **__int16 n3772; // cx** |  |
| r15 | **unsigned int n40; // esi** |  |
| r14d | **__int64 v31; // rcx** |  |
| edx | **int v33; // ecx** |  |
| rax | **_BYTE v35[12]; // [rsp+20h] [rbp-49h] BYREF** |  |
| sub_359C | **@ 0x359C** |  |
| rax | **char n512_3; // r9** |  |
| edx | **__int16 n523; // r8** |  |
| cl | **unsigned __int16 v7; // r10** |  |
| esi | **__int64 v9; // rax** |  |
| eax | **char *v11; // r15** |  |
| rdi | **unsigned __int64 v13; // r12** |  |
| rsi | **bool i; // cf** |  |
| rcx | **bool v17; // zf** |  |
| r14 | **unsigned __int64 v19; // rsi** |  |
| rcx | **unsigned __int64 v21; // r12** |  |
| r14 | **unsigned __int64 v23; // r15** |  |
| rdi | **__int64 v25; // rcx** |  |
| r8 | **unsigned __int64 v27; // rax** |  |
| rsi | **__int64 v29; // rcx** |  |
| sub_3910 | **@ 0x3910** |  |
| r15d | **__int64 v5; // rcx** |  |
| r9 | **unsigned int n5; // edx** |  |
| rcx | **unsigned int *v9; // rcx** |  |
| rdi | **__int64 v11; // rax** |  |
| r10 | **unsigned __int64 v13; // rcx** |  |
| rdx | **unsigned __int64 v15; // r11** |  |
| r13 | **_WORD *v19; // r8** |  |
| cf | **unsigned int *v21; // r14** |  |
| rcx | **unsigned int *v23; // rbp** |  |
| r11 | **unsigned __int64 v25; // rsi** |  |
| rcx | **int v27; // r11d** |  |
| r11d | **int v29; // r11d** |  |
| r11d | **_QWORD *v31; // r8** |  |
| r8 | **__int64 v33; // rax** |  |
| sub_3C30 | **@ 0x3C30** |  |
| rsi | **signed __int64 result; // rax** |  |
| rcx | **__int64 v5; // r8** |  |
| rax | **__int64 v7; // rdx** |  |
| r11d | **__int64 v9; // r8** |  |
| r9 | **__int64 v11; // rbx** |  |
| rax | **unsigned int *v13; // r13** |  |
| rax | **__int64 v15; // r12** |  |
| r10 | **unsigned __int64 v17; // rdx** |  |
| r9 | **unsigned __int64 v19; // r14** |  |
| r14 | **unsigned __int64 v21; // r8** |  |
| r8 | **unsigned __int64 v23; // rax** |  |
| r10d | **unsigned __int64 v29; // rcx** |  |
| rcx | **unsigned int n5; // eax** |  |
| rcx | **unsigned __int64 v33; // rax** |  |
| r14 | **_DWORD *v35; // r14** |  |
| r12d | **unsigned int v37; // r8d** |  |
| sub_422C | **@ 0x422C** |  |
| sub_43C4 | **@ 0x43C4** |  |
| rcx | **if ( !qword_6458 && !byte_6450 ) /*0x43db*/** |  |
| sub_4424 | **@ 0x4424** |  |
| rax | **if ( qword_6458 ) /*0x4430*/** |  |
| sub_444C | **@ 0x444C** |  |
| sub_44A8 | **@ 0x44A8** |  |

---
*Generated by HR650X BIOS Decompilation Project*