Function at 0x1400015d8
Capabilities:
Get system firmware table

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov qword [rax + 8], rcx
push rbp
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
xor eax, eax
mov r15, r9
mov r12, r8
mov qword [rbp - 0x20], rax
mov r13, rdx
mov qword [rbp - 0x18], rax
xor r9d, r9d
mov qword [rbp - 0x10], rax
xor r8d, r8d
mov qword [rbp - 8], rax
xor edx, edx
mov ecx, 0x52534d42
mov ebx, eax
mov edi, eax
mov esi, eax
call qword [sym.imp.KERNEL32.dll_GetSystemFirmwareTable]
nop dword [rax + rax]
mov r14d, eax
test eax, eax
jne 0x14000165a
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
test ebx, ebx
jne 0x1400016ad
mov rcx, r14
call qword [sym.imp.msvcrt.dll_malloc]
nop dword [rax + rax]
mov rdi, rax
test rax, rax
je 0x1400016ad
mov r9d, r14d
mov r8, rax
xor edx, edx
mov ecx, 0x52534d42
call qword [sym.imp.KERNEL32.dll_GetSystemFirmwareTable]
nop dword [rax + rax]
test eax, eax
je 0x1400016ad
cmp eax, r14d
ja 0x1400016a6
cmp eax, 9
jb 0x1400016a6
mov ecx, dword [rdi + 4]
add rcx, 8
mov eax, eax
cmp rcx, rax
jbe 0x1400016cb
mov ebx, 0x8000ffff
jmp 0x1400016c7
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
test ebx, ebx
jne 0x1400016d0
mov rsi, rdi
jmp 0x1400016e4
test rdi, rdi
je 0x1400016e4
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_free]
nop dword [rax + rax]
test ebx, ebx
je 0x1400016fd
mov edx, ebx
lea rcx, str._nFailed_to_retrieve_SMBIOS_tables.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
test rsi, rsi
je 0x140001899
lea r8, [rbp - 0x20]
xor edx, edx
mov rcx, rsi
call fcn.1400024ec
test eax, eax
je 0x14000172d
mov edx, eax
lea rcx, str.Failed_to_find_BIOS_Information__Type_0_.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
lea r8, [rbp - 0x18]
mov dl, 1
mov rcx, rsi
call fcn.1400024ec
test eax, eax
je 0x140001754
mov edx, eax
lea rcx, str.Failed_to_find_System_Information__Type_1_.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
lea r8, [rbp - 0x10]
mov dl, 2
mov rcx, rsi
call fcn.1400024ec
test eax, eax
je 0x14000177b
mov edx, eax
lea rcx, str.Failed_to_find_Baseboard_Information__Type_2_.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
lea r8, [rbp - 8]
mov dl, 3
mov rcx, rsi
call fcn.1400024ec
test eax, eax
je 0x1400017a2
mov edx, eax
lea rcx, str.Failed_to_find_Enclosure_Information__Type_3_.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
mov rcx, qword [rbp - 0x20]
mov ebx, dword [rbp + 0x88]
test rcx, rcx
je 0x1400017e2
mov rdx, qword [rbp + 0x30]
mov r9, r12
mov dword [rsp + 0x28], ebx
mov r8, r13
mov qword [rsp + 0x20], r15
call fcn.140001188
test eax, eax
je 0x1400017e2
mov edx, eax
lea rcx, str.Failed_to_get_BIOS_table_information.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
mov rcx, qword [rbp - 0x18]
test rcx, rcx
je 0x140001822
mov rax, qword [rbp + 0x68]
mov r9, qword [rbp + 0x60]
mov r8, qword [rbp + 0x58]
mov rdx, qword [rbp + 0x50]
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
call fcn.1400012e8
test eax, eax
je 0x140001822
mov edx, eax
lea rcx, str.Failed_to_get_System_table_information.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
mov rcx, qword [rbp - 0x10]
test rcx, rcx
je 0x140001854
mov r8, qword [rbp + 0x78]
mov r9d, ebx
mov rdx, qword [rbp + 0x70]
call fcn.1400014d0
test eax, eax
je 0x140001854
mov edx, eax
lea rcx, str.Failed_to_get_Baseboard_table_information.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
mov rax, qword [rbp - 8]
test rax, rax
je 0x14000188a
mov rcx, qword [rbp + 0x80]
test rcx, rcx
je 0x140001872
mov al, byte [rax + 5]
and al, 0x7f
mov byte [rcx], al
jmp 0x14000188a
mov edx, 0x80070057
lea rcx, str.Failed_to_get_Enclosure_table_information.__hr__0x_08x_n
call qword [sym.imp.msvcrt.dll_wprintf]
nop dword [rax + rax]
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_free]
nop dword [rax + rax]
lea r11, [rsp + 0x50]
xor eax, eax
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret