Function at 0x7104eb10
Capabilities:
Get system firmware table

Disassembly:
push ebp
mov ecx, 0x1c
mov edx, 1
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [ebp + 8]
call sym._resize_table
test eax, eax
je 0x7104edd8
mov dword [esp + 0xc], 0
mov edi, dword [sym.imp.kernel32.dll_GetSystemFirmwareTable]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x52534d42
call edi
sub esp, 0x10
mov esi, eax
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x2c], eax
call eax
mov ebx, eax
test eax, eax
je 0x7104edd8
mov dword [esp + 0xc], esi
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0x52534d42
call edi
mov edi, dword [ebp + 8]
mov ecx, esi
mov edx, ebx
sub esp, 0x10
mov eax, 3
mov edi, dword [edi + 0x14]
mov dword [edi], str.System_Enclosure
call sym._find_smbios_entry
test eax, eax
je 0x7104ebbd
cmp byte [eax + 1], 8
mov dword [ebp - 0x30], eax
ja 0x7104ed00
mov dword [esp], 0xc
mov eax, dword [ebp - 0x2c]
call eax
mov edx, eax
test eax, eax
je 0x7104ec03
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp], 2
call eax
mov edx, dword [ebp - 0x30]
mov dword [edx + 8], eax
test eax, eax
je 0x7104ede2
movzx ecx, word [0x7106092c]
mov dword [edx], 2
mov dword [edx + 4], 1
mov word [eax], cx
mov eax, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x2c], eax
mov dword [edi + 4], edx
mov ecx, esi
mov edx, ebx
mov eax, 3
mov dword [edi + 8], str.System_Enclosure
call sym._find_smbios_entry
xor edx, edx
test eax, eax
je 0x7104ec36
cmp byte [eax + 1], 8
jbe 0x7104ec36
movsx edx, byte [eax + 5]
sar edx, 0x1f
mov dword [edi + 0xc], edx
mov ecx, esi
mov edx, ebx
mov eax, 3
call sym._find_smbios_entry
test eax, eax
je 0x7104edc0
mov ecx, eax
movzx eax, byte [eax + 1]
mov dword [esp], esi
mov edx, ebx
sub ecx, ebx
add ecx, eax
mov eax, 1
call sym._get_smbios_string
test eax, eax
je 0x7104edc0
mov dword [edi + 0x10], eax
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x14], str.System_Enclosure
mov dword [edi + 0x18], str.System_Enclosure_0
test eax, eax
je 0x7104edb0
lea eax, [ebp - 0x24]
mov dword [esp + 4], 0
mov edi, 0xffffffff
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._eval_cond
test eax, eax
jne 0x7104ed60
mov eax, dword [ebp - 0x1c]
or eax, dword [ebp - 0x20]
mov edi, 1
mov esi, 1
je 0x7104ed60
mov dword [esp], ebx
mov eax, dword [ebp - 0x2c]
call eax
test byte [0x71060048], 8
jne 0x7104ed80
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], esi
lea esp, [ebp - 0xc]
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], 0xc
mov eax, dword [ebp - 0x2c]
call eax
test eax, eax
mov dword [ebp - 0x34], eax
je 0x7104ebbd
mov dword [esp], 2
mov eax, dword [ebp - 0x2c]
call eax
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
test eax, eax
je 0x7104ede2
movzx ecx, byte [ecx + 5]
mov dword [edx + 8], eax
mov dword [edx], 2
and cl, 0x7f
mov dword [edx + 4], 1
mov word [eax], cx
mov eax, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x2c], eax
jmp 0x7104ec0b
mov eax, dword [ebp + 8]
mov dword [esp + 4], 0
xor esi, esi
mov dword [esp], eax
call sym._free_row_values
jmp 0x7104ecd7
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str.created__u_rows_n
mov dword [esp + 8], str.fill_systemenclosure
mov dword [esp + 4], 0x71060048
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x7104ecec
xor edi, edi
mov esi, 1
jmp 0x7104ecd7
mov dword [esp], str.Wine
call dword [sym.imp.ucrtbase.dll__wcsdup]
jmp 0x7104ec70
mov edi, 0xffffffff
jmp 0x7104ecf2
mov eax, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], edx
mov dword [ebp - 0x2c], eax
call eax
xor edx, edx
jmp 0x7104ec0b