Function at 0x409b20
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [0x443054]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword fs:[0x2c]
push esi
push edi
mov edi, ecx
mov edx, dword [eax]
mov eax, dword [0x44524c]
cmp eax, dword [edx + 4]
jle 0x409b7c
push 0x44524c
call fcn.0041040e
add esp, 4
cmp dword [0x44524c], 0xffffffff
jne 0x409b7c
push str.EzULIB.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push 0x44524c
mov dword [0x445254], eax
call fcn.004103c4
add esp, 4
mov eax, dword [0x445254]
test eax, eax
jne 0x409bff
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_load_DLL
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.DownloadFile
push eax
call esi
push str.EnumerateUpdatableItem
push dword [0x445254]
mov dword [edi + 0x38], eax
call esi
push str.GetModelName
push dword [0x445254]
mov dword [edi + 0x3c], eax
call esi
push str.GetProductName
push dword [0x445254]
mov dword [edi + 0x40], eax
call esi
push str.SetMsgBody
push dword [0x445254]
mov dword [edi + 0x44], eax
call esi
push str.UnZip
push dword [0x445254]
mov dword [edi + 0x48], eax
call esi
push str.DownloadAbort
push dword [0x445254]
mov dword [edi + 0x4c], eax
call esi
push str.UpdateFile
push dword [0x445254]
mov dword [edi + 0x50], eax
call esi
push str.SetMode
push dword [0x445254]
mov dword [edi + 0x54], eax
call esi
push str.SetApUsingModelName
push dword [0x445254]
mov dword [edi + 0x58], eax
call esi
push str.DecryptToXml
push dword [0x445254]
mov dword [edi + 0x5c], eax
call esi
push str.GetBiosUpdateShutdownMode
push dword [0x445254]
mov dword [edi + 0x60], eax
call esi
push str.WriteFeedbackFile
push dword [0x445254]
mov dword [edi + 0x64], eax
call esi
push str.GetType1FamilyName
push dword [0x445254]
mov dword [edi + 0x68], eax
call esi
push str.DecryptToEncryptIdx
push dword [0x445254]
mov dword [edi + 0x6c], eax
call esi
cmp dword [edi + 0x38], 0
mov dword [edi + 0x70], eax
jne 0x409d80
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_DLL_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x3c], 0
jne 0x409e10
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pEnumerateUpdatableItem_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x40], 0
jne 0x409ea0
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pGetModelName_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x44], 0
jne 0x409f30
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pGetProductName_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x4c], 0
jne 0x409fc0
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pUnZip_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x54], 0
jne 0x40a050
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pUpdateFile_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x5c], 0
jne 0x40a0e0
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pSetApUsingModelName_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x6c], 0
jne 0x40a170
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pGetType1FamilyName_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x40a1fe
push dword [0x445254]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x18]
push eax
call fcn.00419b80
add esp, 4
lea eax, [ebp - 0x18]
push eax
call fcn.0041a536
movzx ecx, word [ebp - 0x10]
add esp, 4
mov edx, eax
push ecx
push dword [edx]
mov eax, dword [edx + 0x10]
push dword [edx + 4]
inc eax
push dword [edx + 8]
push dword [edx + 0xc]
push eax
mov eax, dword [edx + 0x14]
add eax, 0x76c
push eax
push str._04d__02d__02d__02d:_02d:_02d._03d
push 0x445278
call fcn.0040ae70
add esp, 0x24
mov byte [0x44528f], 0
push 0x445278
push str._s_ERROR:_unable_to_find_pDecryptToEncryptIdx_function
push 0x4451ec
call fcn.0040b450
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004102c8
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
xor ecx, ebp
pop esi
call fcn.004102c8
mov esp, ebp
pop ebp
ret