Function at 0x402380
Capabilities:
Check os version
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc88
mov eax, dword [0x76dec4]
xor eax, esp
mov dword [esp + 0xc84], eax
mov eax, dword [ebp + 0x10]
xorps xmm0, xmm0
push esi
push edi
xor edi, edi
mov dword [esp + 0x10], eax
push 0x42e339
movaps xmmword [esp + 0x24], xmm0
movq qword [esp + 0x34], xmm0
mov byte [esp + 0x13], 1
mov dword [esp + 0x18], edi
call dword [sym.imp.KERNEL32.dll_SetDllDirectoryA]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
test eax, eax
je 0x4025ae
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
test eax, eax
je 0x4024bd
push 0x200
cmp dword [esp + 0x18], edi
je 0x40244b
lea eax, [esp + 0x8c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryA]
test eax, eax
je 0x40249e
lea ecx, [esp + 0x88]
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402420
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [esp + 0x8c]
push eax
lea eax, [esp + 0x490]
push eax
call fcn.00416f38
lea eax, [esp + 0x494]
jmp 0x402490
lea eax, [esp + 0x28c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x40249e
lea ecx, [esp + 0x288]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402467
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [esp + 0x28c]
push eax
lea eax, [esp + 0x890]
push eax
call fcn.00416f38
lea eax, [esp + 0x894]
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_AddDllDirectory]
test eax, eax
jne 0x4024a3
mov byte [esp + 0xf], 0
push 0x400
call dword [sym.imp.KERNEL32.dll_SetDefaultDllDirectories]
test eax, eax
je 0x4024bd
cmp byte [esp + 0xf], 0
jne 0x4025ae
push 0x200
xorps xmm0, xmm0
push 0x775208
push 0
movaps xmmword [esp + 0x5c], xmm0
movq qword [esp + 0x6c], xmm0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x20]
push eax
push 1
push dword [esp + 0x1c]
call fcn.00404f20
mov ecx, eax
add esp, 0x10
test ecx, ecx
jne 0x402509
cmp dword [esp + 0x1c], 1
sete cl
jne 0x402590
mov eax, dword [esp + 0x14]
mov dword [eax], 0x775208
test ecx, ecx
je 0x402590
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x50]
mov ecx, dword [esp + 0x1c]
push eax
call fcn.00401180
add esp, 4
test al, al
je 0x402590
cmp byte [esp + 0x50], 0
jne 0x402550
cmp byte [esp + 0x51], 0
jne 0x402550
push 0x10
push 0x76eb0c
push str.Your_security_settings_could_not_be_detected._Try_restarting_your_system_and_running_the_update_again.
push 0
call esi
jmp 0x402562
lea eax, [esp + 0x50]
push str.Your_security_settings_could_not_be_detected._Try_restarting_your_system_and_running_the_update_again._n
push eax
call fcn.004038e0
add esp, 8
mov eax, dword [0x774ec4]
test eax, eax
jne 0x4025a5
mov dword [0x774ec4], 0xa
mov eax, 0xa
pop edi
pop esi
mov ecx, dword [esp + 0xc84]
xor ecx, esp
call fcn.0040fa7f
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [0x774ec4]
test eax, eax
jne 0x4025a5
mov dword [0x774ec4], 0x100
jmp 0x4025ae
cmp eax, 0xa
je 0x402980
push 0x200
push 0x775000
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x50]
push eax
push 1
push dword [esp + 0x1c]
call fcn.00404f20
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x14], ecx
test ecx, ecx
jne 0x4025f0
cmp dword [esp + 0x4c], 1
sete cl
mov dword [esp + 0x14], ecx
jne 0x40261e
mov eax, dword [esp + 0x48]
mov dword [eax], 0x775000
test ecx, ecx
je 0x402980
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x20]
mov ecx, dword [esp + 0x4c]
push eax
call fcn.00401180
movzx ecx, al
add esp, 4
mov dword [esp + 0x14], ecx
test ecx, ecx
je 0x402980
cmp byte [esp + 0x2c], 0
je 0x402660
cmp byte [esp + 0x21], 0
jne 0x402864
push 0
push 0x76eb0c
push str.Dell_Get_Dock_Version_utility___General_Usage:_n_Filename_.exe____option1___value1_______option2___value2___..._nSee_listing_below_for__option__and__value__information._n_nOption_Descriptions:_n__none__________t__Save_Dock_version_and_log_to_default_files._n____or__h_______t__Display_this_help_screen._n__showmsg_______t__Display_the_user_interface._n__l_path____t__Log_messages_to_this_file._n__o_path____t__Save_Dock_information_in_xml_to_this_file._n__t_t_t__t__default_:_dockversion.xml._n_nExamples:_n_Filename_.exe_____odockinfo.xml_n_Filename_.exe______odockversion.xml__l_C:my_path_with_spaceslog.txt__n
push 0
call esi
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0xc84]
xor ecx, esp
call fcn.0040fa7f
mov esp, ebp
pop ebp
ret 0x10
cmp byte [esp + 0x2d], 0
je 0x40269a
cmp byte [esp + 0x21], 0
jne 0x402864
push 0
push 0x76eb0c
push str.Get_Dock_Version_Executable_nVersion:_1.0.15_n
push 0
call esi
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0xc84]
xor ecx, esp
call fcn.0040fa7f
mov esp, ebp
pop ebp
ret 0x10
push dword [esp + 0x10]
lea ecx, [esp + 0x24]
call fcn.00403210
add esp, 4
lea ecx, [esp + 0x20]
mov edx, 0x76eb28
call fcn.00401cf0
lea eax, [esp + 0x1c]
mov dword [esp + 0x50], edi
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push 0x220
push 0x20
push 2
lea eax, [esp + 0x78]
mov word [esp + 0x7c], 0x500
push eax
call dword [sym.imp.ADVAPI32.dll_AllocateAndInitializeSid]
mov ecx, eax
mov dword [esp + 0x10], ecx
test ecx, ecx
je 0x40273d
push str.CheckTokenMembership
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x774ebc], eax
test eax, eax
je 0x40273b
lea ecx, [esp + 0x10]
push ecx
push dword [esp + 0x20]
push 0
call eax
push dword [esp + 0x1c]
neg eax
sbb eax, eax
and dword [esp + 0x14], eax
call dword [sym.imp.ADVAPI32.dll_FreeSid]
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x40273d
jmp 0x402751
xor ecx, ecx
mov eax, dword [0x774ec4]
mov edx, 0x107
test eax, eax
cmove eax, edx
mov dword [0x774ec4], eax
xor eax, eax
test ecx, ecx
setne al
xor esi, esi
test ecx, ecx
mov dword [esp + 0x10], eax
cmovne esi, dword [esp + 0x14]
test esi, esi
je 0x4027d8
call fcn.00409e40
mov dword [esp + 0x1c], eax
cmp eax, 5
ja case.default.0x402777
jmp dword [eax*4 + 0x4031f8]
mov eax, str.WSMT_Supported:_using_WMI_commands_n
jmp 0x4027ad
mov eax, str.WSMT_Disabled_using_legacy_DACI_commands_n
jmp 0x4027ad
mov eax, str.WSMT_Not_Supported:_WSMT_Support_token_not_found__using_legacy_DACI_commands_n
jmp 0x4027ad
mov eax, str.WSMT_Not_Supported:_WSMT_Support_token_is_disabled__using_legacy_DACI_commands_n
jmp 0x4027ad
mov eax, str.WSMT_Not_Supported:_Unable_to_load_smbios_tables._WSMT_support_token_not_found__using_legacy_DACI_commands_n
jmp 0x4027ad
mov eax, str.WSMT_Not_Supported:_Attempted_WMI_command_to_read_WSMT_support_token_but_command_failed__using_legacy_DACI_commands_n
jmp 0x4027ad
mov eax, str.Invalid_status_returned_by_CheckIfWSMTSupported_n
push eax
lea eax, [esp + 0x24]
push eax
call fcn.004038e0
add esp, 8
cmp dword [esp + 0x1c], 4
jne 0x40287c
cmp dword [0x774ec4], edi
jne 0x4027d8
mov dword [0x774ec4], 0x118
push dword [0x774ec4]
lea eax, [esp + 0x24]
push str.Final_Error_code:_d_n
push eax
call fcn.004038e0
add esp, 0xc
cmp byte [esp + 0x22], 0
je 0x402857
cmp dword [0x76e7dc], 0xffffffff
je 0x402857
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, word [esp + 0x5c]
push eax
movzx eax, word [esp + 0x5e]
push eax
movzx eax, word [esp + 0x60]
push eax
movzx eax, word [esp + 0x5c]
push eax
movzx eax, word [esp + 0x66]
push eax
movzx eax, word [esp + 0x66]
push eax
lea eax, [esp + 0x38]
push str.Dell_Get_Dock_Version_finished_at__d__d__d_at__d:_02d:_02d_n_n
push eax
call fcn.004038e0
add esp, 0x20
push dword [0x76e7dc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x76e7dc], 0xffffffff
test edi, edi
je 0x402864
push edi
call fcn.0041746d
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0xc84]
xor ecx, esp
call fcn.0040fa7f
mov esp, ebp
pop ebp
ret 0x10
test esi, esi
je 0x4027d8
push 0x98
lea eax, [esp + 0x90]
push 0
push eax
call fcn.00411b60
add esp, 0xc
mov dword [esp + 0x88], 0x9c
lea eax, [esp + 0x88]
mov esi, 1
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x4028da
lea eax, [esp + 0x88]
mov dword [esp + 0x88], 0x94
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x4028f0
mov eax, dword [esp + 0x98]
sub eax, 2
jne 0x4028f0
cmp dword [esp + 0x8c], 4
ja 0x402904
xor esi, esi
cmp dword [0x774ec4], esi
jne 0x402904
mov dword [0x774ec4], 0x108
test esi, esi
je 0x4027d8
push str.GlobalDELL_BIOS_FLASH_MUL_INSTANCE_MUTEX
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
je 0x402946
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor ecx, ecx
test eax, eax
sete cl
test eax, eax
je 0x40294b
mov eax, dword [0x774ec4]
mov edx, 0x106
test eax, eax
cmove eax, edx
mov dword [0x774ec4], eax
jmp 0x40294b
mov ecx, 1
test ecx, ecx
je 0x4027d8
push 0x4000
call fcn.00417488
mov edi, eax
add esp, 4
mov dword [esp + 0x1c], edi
mov dword [esp + 0x44], edi
test edi, edi
jne 0x40299b
push str.Error:_Internal_Error_n
lea eax, [esp + 0x24]
push eax
call fcn.004038e0
add esp, 8
mov ecx, dword [esp + 0xc8c]
mov eax, 0xa
pop edi
pop esi
xor ecx, esp
call fcn.0040fa7f
mov esp, ebp
pop ebp
ret 0x10
cmp dword [esp + 0x10], 0
je 0x4027d8
lea eax, [esp + 0x50]
mov dword [esp + 0x10], 0xffffffff
or esi, 0xffffffff
mov dword [esp + 0x50], 0x160011
push eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0xfffffffd
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
call fcn.00409c50
add esp, 4
push 2
call fcn.00409a00
add esp, 4
lea eax, [esp + 0x50]
push eax
call fcn.00409c30
add esp, 4
cmp dword [esp + 0x64], 0
jne 0x402a41
movzx esi, byte [esp + 0x68]
mov ecx, 1
movzx eax, byte [esp + 0x6c]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
jmp 0x402a46
xor ecx, ecx
or eax, 0xffffffff
test ecx, ecx
jne 0x402a6b
push 0x76eb0c
push 0x76e9c8
lea eax, [esp + 0x28]
push str._s_n_s_n
push eax
call fcn.004038e0
add esp, 0x10
jmp 0x4027d8
test esi, esi
je 0x402aa5
cmp eax, 2
jae 0x402aa5
mov dword [esp + 0x10], 2
mov esi, 2
mov edx, esi
lea ecx, [esp + 0x44]
call fcn.00403980
movzx ecx, al
test al, al
je 0x402a9b
movzx eax, byte [edi + 0x60]
cmp eax, esi
je 0x402ac9
inc esi
cmp esi, 6
jl 0x402a81
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
test ecx, ecx
je 0x4031ec
sub esi, 0
je 0x4031da
sub esi, 1
je 0x402ad5
push str.Error:_Too_many_docks_attached_n
jmp 0x4031df
mov eax, esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x10], eax
jmp 0x402aa9
mov edx, eax
lea ecx, [esp + 0x44]
call fcn.00403980
test al, al
lea eax, [esp + 0x20]
jne 0x402af2
push str.GetDockInfo_Failed_n
jmp 0x402977
push str.________________________________________________
push 0x42e33c
push eax
call fcn.004038e0
add esp, 0xc
lea eax, [esp + 0x20]
push str.Dock_Info_Record_defined_in_DSIS_3.0.10__Class:17__Select:22:
push 0x42e33c
push eax
call fcn.004038e0
movzx eax, byte [edi + 4]
add esp, 0xc
push eax
lea eax, [esp + 0x24]
push str.Dock_Info_version___0x_02x_n
push eax
call fcn.004038e0
movzx eax, byte [edi + 5]
add esp, 0xc
push eax
lea eax, [esp + 0x24]
push str.Dock_Type___________0x_02x_n
push eax
call fcn.004038e0
movzx eax, byte [edi + 0x62]
add esp, 0xc
push eax
lea eax, [esp + 0x24]
push str.Dock_Info_count______d_n
push eax
call fcn.004038e0
movzx eax, byte [edi + 0x60]
add esp, 0xc
push eax
lea eax, [esp + 0x24]
push str.Dock_Info_location___d_n
push eax
call fcn.004038e0
add esp, 0xc
lea eax, [esp + 0x20]
push dword [edi + 0x5c]
push str.Dock_Info_cable_Type_0x_02x_n
push eax
call fcn.004038e0
add esp, 0xc
lea eax, [esp + 0x20]
push dword [edi + 0x58]
push str.Dock_Info_flash_spec_ver_0x_08x_n
push eax
call fcn.004038e0
mov al, byte [edi + 5]
add esp, 0xc
cmp al, 1
jne 0x402bc3
push str.Thunderbolt_Dock
lea eax, [esp + 0x24]
push str.Dock_description_____s_n
push eax
call fcn.004038e0
mov al, byte [edi + 5]
add esp, 0xc
cmp al, 2
jne 0x402be1
push str.Wired_Dock
lea eax, [esp + 0x24]
push str.Dock_description_____s_n
push eax
call fcn.004038e0
mov al, byte [edi + 5]
add esp, 0xc
cmp al, 3
jne 0x402bff
push str.TB18_Dock
lea eax, [esp + 0x24]
push str.Dock_description_____s_n
push eax
call fcn.004038e0
mov al, byte [edi + 5]
add esp, 0xc
test al, al
jne 0x402c1a
push str.Unknown
lea eax, [esp + 0x24]
push str.Dock_description_____s_n
push eax
call fcn.004038e0
add esp, 0xc
push str.________________________________________________
lea eax, [esp + 0x24]
push 0x42e33c
push eax
call fcn.004038e0
xor al, al
add esp, 0xc
mov byte [esp + 0xf], al
cmp byte [edi + 0x62], al
jbe 0x402ce9
movzx eax, al
imul eax, eax, 0x54
push str.Query
add eax, 0x63
add eax, edi
push eax
mov dword [esp + 0x1c], eax
call fcn.00411370
mov esi, eax
add esp, 8
test esi, esi
je 0x402cd6
mov eax, dword [esp + 0x10]
xor edx, edx
movzx eax, al
mov ecx, 9
div ecx
mov ecx, 0x76e835
mov edi, 0xa
mov al, dl
add al, 0x30
mov byte [esp + 0x1b], al
mov eax, dword [ecx + 9]
lea edx, [esp + 0x50]
movq xmm0, qword [eax]
mov al, byte [eax + 8]
mov byte [esp + 0x58], al
mov al, byte [esp + 0x1b]
movq qword [esp + 0x50], xmm0
mov byte [esp + 0x50], al
mov eax, dword [esi + 6]
cmp eax, dword [edx]
jne 0x402cca
mov eax, dword [esi + 0xa]
cmp eax, dword [edx + 4]
jne 0x402cca
movzx eax, byte [esi + 0xe]
cmp al, byte [edx + 8]
mov edx, dword [esp + 0x14]
jne 0x402cca
mov byte [ecx], 1
mov eax, dword [edx + 0x50]
mov dword [ecx + 5], eax
add ecx, 0x26
sub edi, 1
jne 0x402c85
mov edi, dword [esp + 0x1c]
mov al, byte [esp + 0xf]
add al, 1
mov byte [esp + 0xf], al
cmp al, byte [edi + 0x62]
jb 0x402c40
mov al, byte [edi + 5]
cmp al, 2
je 0x402d56
cmp al, 1
je 0x402d2b
cmp al, 3
jne 0x4031d1
cmp byte [0x76e881], 1
jne 0x402d8b
mov ecx, dword [0x76e886]
mov dword [0x774eb8], ecx
mov dword [0x774ec0], 0x76e99c
mov dword [0x773ea0], 0x76e7fc
jmp 0x402d91
cmp byte [0x76e85b], 1
jne 0x402d8b
mov ecx, dword [0x76e860]
mov dword [0x774eb8], ecx
mov dword [0x774ec0], 0x76e818
mov dword [0x773ea0], 0x76e7c0
jmp 0x402d91
movzx eax, byte [0x773eb0]
imul ecx, eax, 0x26
cmp byte [ecx + 0x76e835], 1
jne 0x402d8b
mov ecx, dword [ecx + 0x76e83a]
mov dword [0x774eb8], ecx
mov dword [0x774ec0], 0x76e9a4
mov dword [0x773ea0], 0x76e7e0
jmp 0x402d91
mov ecx, dword [0x774eb8]
xorps xmm0, xmm0
mov word [esp + 0x58], 0
lea edx, [esp + 0x50]
movq qword [esp + 0x50], xmm0
call fcn.004015d0
lea eax, [esp + 0x20]
push str.Before_VerifyDockECMinVersion________n
push eax
call fcn.004038e0
movzx eax, byte [0x773eb0]
add esp, 8
imul ecx, eax, 0x26
cmp byte [ecx + 0x76e835], 1
jne 0x402ded
push eax
lea eax, [esp + 0x54]
push eax
push dword [ecx + 0x76e83a]
lea eax, [esp + 0x2c]
push str.Wired_Dock_EC_Version:BCD:_08x:_s_at_Index:_d_n
push eax
call fcn.004038e0
add esp, 0x14
cmp byte [0x76e85b], 1
jne 0x402e15
push 1
lea eax, [esp + 0x54]
push eax
push dword [0x76e860]
lea eax, [esp + 0x2c]
push str.BME_Dock_EC_Version:BCD:_08x:_s_at_Index:_d_n
push eax
call fcn.004038e0
add esp, 0x14
cmp byte [0x76e881], 1
jne 0x402e3d
push 2
lea eax, [esp + 0x54]
push eax
push dword [0x76e886]
lea eax, [esp + 0x2c]
push str.BME_Dock_EC_Version:BCD:_08x:_s_at_Index:_d_n
push eax
call fcn.004038e0
add esp, 0x14
mov al, byte [edi + 5]
mov esi, dword [0x774eb8]
push esi
mov byte [esp + 0x1f], al
lea eax, [esp + 0x24]
push str.VerifyDockECMinVersion:DockECVersion:_08x_n
push eax
mov dword [esp + 0x28], 0x39
call fcn.004038e0
add esp, 0xc
cmp byte [esp + 0x1b], 1
jne 0x403011
lea eax, [esp + 0x20]
push str.VerifyDockECMinVersion:Checking_for_BME_Dock_n
push eax
call fcn.004038e0
push 0x400
call fcn.00417488
add esp, 0xc
mov dword [esp + 0x10], eax
cmp esi, 0xffffffff
je 0x402fed
test esi, esi
je 0x402fed
lea eax, [esp + 0x20]
test esi, 0xff000000
jbe 0x402f37
push str.VerifyDockECMinVersion:Checking_for_EC_A_REV._n
push eax
call fcn.004038e0
add esp, 8
push 0x400
push dword [esp + 0x14]
push 0xc8
push 0
call dword [sym.imp.USER32.dll_LoadStringA]
test eax, eax
lea eax, [esp + 0x20]
jg 0x402ef7
push 0x1000006
push str.Error_reading_resource_string_IDS_EC_AREV_MIN_VERSION._Using_default_value:_08x_n
push eax
call fcn.004038e0
add esp, 0xc
mov eax, 0x1000006
jmp 0x402f16
push dword [esp + 0x10]
push str.VerifyDockECMinVersion:ARev_Resource_string_read:_s_n
push eax
call fcn.004038e0
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x2c]
add esp, 0xc
call fcn.00401c30
cmp esi, eax
jae 0x402fbc
push eax
push esi
lea eax, [esp + 0x28]
push str.VerifyDockECMinVersion:Failed.BMEDockARev_:BCD:_08x___Minver:_08x_n
push eax
call fcn.004038e0
add esp, 0x10
jmp 0x402fff
push str.VerifyDockECMinVersion:Checking_for_EC_X_REV._n
push eax
call fcn.004038e0
add esp, 8
push 0x400
push dword [esp + 0x14]
push 0xc9
push 0
call dword [sym.imp.USER32.dll_LoadStringA]
test eax, eax
lea eax, [esp + 0x20]
jg 0x402f7a
push 0x39
push str.Error_reading_resource_string_IDS_EC_XREV_MIN_VERSION._Using_default_value:_08x_n
push eax
call fcn.004038e0
add esp, 0xc
mov eax, 0x39
jmp 0x402f9d
push dword [esp + 0x10]
push str.VerifyDockECMinVersion:XRev_Resource_string_read:_s_n
push eax
call fcn.004038e0
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x2c]
add esp, 0xc
call fcn.00401c30
mov dword [esp + 0x1c], eax
cmp esi, eax
jae 0x402fb7
push eax
push esi
lea eax, [esp + 0x28]
push str.VerifyDockECMinVersion:Failed:BMEDockXRev_:BCD:_08x___Minver:_08x_n
push eax
call fcn.004038e0
add esp, 0x10
jmp 0x402fff
mov eax, 0x1000006
push eax
push dword [esp + 0x20]
lea eax, [esp + 0x28]
push esi
push str.VerifyDockECMinVersion:successful.:DockECVersion:_08x_MinXRev:_08x:MINARev:_08x_n
push eax
call fcn.004038e0
add esp, 0x14
lea eax, [esp + 0x20]
push str.________________________________________
push 0x42e33c
push eax
call fcn.004038e0
add esp, 0xc
jmp 0x403011
lea eax, [esp + 0x20]
push str.VerifyDockECMinVersion:Failed:_Invalid_DOCK_Version._n
push eax
call fcn.004038e0
add esp, 8
lea eax, [esp + 0x20]
push str.Invalid_EC_Version_:_Firmware_Update_is_not_Supported_for_the_Dock._n
push eax
call fcn.004038e0
add esp, 8
cmp dword [0x774eb8], 0xffffffff
jne 0x403036
lea eax, [esp + 0x20]
mov dword [0x774eb8], 0
push str.Changing_Invalid_Dock_EC_from_0xFFFFFFFF_to_0._n
push eax
call fcn.004038e0
add esp, 8
lea eax, [esp + 0x20]
push str.After_VerifyDockECMinVersion________n
push eax
call fcn.004038e0
mov ecx, dword [0x774eb8]
lea edx, [esp + 0x58]
add esp, 8
call fcn.004015d0
movzx eax, byte [0x773eb0]
imul ecx, eax, 0x26
cmp byte [ecx + 0x76e835], 1
jne 0x403088
push eax
lea eax, [esp + 0x54]
push eax
push dword [ecx + 0x76e83a]
lea eax, [esp + 0x2c]
push str.Wired_Dock_EC_Version:BCD:_08x:_s_at_Index:_d_n
push eax
call fcn.004038e0
add esp, 0x14
cmp byte [0x76e85b], 1
jne 0x4030b0
push 1
lea eax, [esp + 0x54]
push eax
push dword [0x76e860]
lea eax, [esp + 0x2c]
push str.BME_Dock_EC_Version:BCD:_08x:_s_at_Index:_d_n
push eax
call fcn.004038e0
add esp, 0x14
cmp byte [0x76e881], 1
jne 0x4030d8
push 2
lea eax, [esp + 0x54]
push eax
push dword [0x76e886]
lea eax, [esp + 0x2c]
push str.BME_Dock_EC_Version:BCD:_08x:_s_at_Index:_d_n
push eax
call fcn.004038e0
add esp, 0x14
mov eax, dword [edi + 0x58]
cmp eax, 0xffffff
jb 0x403103
lea eax, [esp + 0x20]
mov dword [0x774eb8], 0
push str.Changing_Invalid_Dock_Package_version_from_0xFFFFFFFF_to_0._n
push eax
call fcn.004038e0
mov eax, dword [0x774eb8]
add esp, 8
shl eax, 8
lea edx, [esp + 0x50]
mov dword [0x774eb8], eax
mov byte [0x774eb8], 0
mov ecx, dword [0x774eb8]
call fcn.004015d0
lea eax, [esp + 0x50]
push eax
push dword [edi + 0x58]
lea eax, [esp + 0x28]
push str.Dock_package_version:BCD:_08x:_s__n
push eax
call fcn.004038e0
add esp, 0x10
lea eax, [esp + 0x20]
cmp byte [esp + 0x30], 0
push dword [esp + 0x34]
jne 0x40315d
push str.Bad_Dock_Version_output_filename:_s_n
push eax
call fcn.004038e0
add esp, 0xc
jmp 0x402980
push str.Dock_Version_inofrmation_is_saved_in__filename:_s_n
push eax
call fcn.004038e0
add esp, 0xc
cmp byte [esp + 0x30], 0
je 0x4031d1
lea eax, [esp + 0x20]
push str.XML_output_Begin_n
push eax
call fcn.004038e0
mov eax, dword [0x773ea0]
lea ecx, [esp + 0x58]
push eax
push ecx
push eax
push dword [0x774ec0]
push 0x76ea48
push 0x773eb8
call fcn.004016d0
lea eax, [esp + 0x40]
push 0x773eb8
push eax
call fcn.004038e0
lea eax, [esp + 0x48]
push str._nXML_output_End_n
push eax
call fcn.004038e0
add esp, 0x30
lea ecx, [esp + 0x20]
mov edx, 0x773eb8
call fcn.00401cf0
mov edi, dword [esp + 0x44]
jmp 0x4027d8
push str.Error:_No_dock_attached_n
lea eax, [esp + 0x24]
push eax
call fcn.004038e0
add esp, 8
push str.Error:_No_Dock_found_or_cannot_communicate_to_the_Dock._Exit_the_program._n
jmp 0x402973