Function at 0x4106f0
Capabilities:
Move file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43d046
mov eax, dword fs:[0]
push eax
sub esp, 0xaac
mov eax, dword [0x451430]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
xor eax, eax
mov dword [ebp - 0xa94], ebx
mov byte [ebp - 0xa19], al
mov dword [ebp - 0xa2c], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0xa6c], eax
mov dword [ebp - 0xa70], eax
mov esi, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
push str.platform
call esi
mov edi, eax
mov dword [ebp - 0xa8c], edi
push str.bootload
call esi
mov dword [ebp - 0xa34], eax
push str.safeboot
call esi
mov dword [ebp - 0xa44], eax
push str.vtpoptions
call esi
mov dword [ebp - 0xa50], eax
push 0x441b84
call esi
mov dword [ebp - 0xa48], eax
push str.action
call esi
mov dword [ebp - 0xa40], eax
push str.winver
call esi
mov dword [ebp - 0xa3c], eax
push str.ndisaltitude
call esi
mov dword [ebp - 0xa38], eax
xor eax, eax
mov dword [ebp - 0xa90], eax
mov dword [ebp - 0xa60], eax
mov byte [ebp - 0xa21], al
mov byte [ebp - 0xa49], al
mov al, byte [0x452515]
mov byte [ebp - 0xa61], al
mov eax, dword [ebp + 0xc]
cmp eax, 0x40
mov byte [ebp - 4], 0xa
mov byte [ebp - 0xa22], 0
mov byte [ebp - 0xa68], 0
jne 0x41084e
mov ecx, dword [ebp - 0xa38]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push ecx
call esi
mov edx, dword [ebp - 0xa3c]
push edx
call esi
mov eax, dword [ebp - 0xa40]
push eax
call esi
mov ecx, dword [ebp - 0xa48]
push ecx
call esi
mov edx, dword [ebp - 0xa50]
push edx
call esi
mov eax, dword [ebp - 0xa44]
push eax
call esi
mov ecx, dword [ebp - 0xa34]
push ecx
call esi
push edi
call esi
push 0
call esi
push 0
call esi
push 0
call esi
mov al, 1
jmp 0x411df3
cmp eax, 0x80
jne 0x41089a
mov edx, dword [ebp - 0xa38]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push edx
call esi
mov eax, dword [ebp - 0xa3c]
push eax
call esi
mov ecx, dword [ebp - 0xa40]
push ecx
call esi
mov edx, dword [ebp - 0xa48]
push edx
call esi
mov eax, dword [ebp - 0xa50]
push eax
call esi
mov ecx, dword [ebp - 0xa44]
push ecx
call esi
mov edx, dword [ebp - 0xa34]
push edx
jmp 0x410836
cmp eax, 0x200
jne 0x4108e9
mov eax, dword [ebp - 0xa38]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push eax
call esi
mov ecx, dword [ebp - 0xa3c]
push ecx
call esi
mov edx, dword [ebp - 0xa40]
push edx
call esi
mov eax, dword [ebp - 0xa48]
push eax
call esi
mov ecx, dword [ebp - 0xa50]
push ecx
call esi
mov edx, dword [ebp - 0xa44]
push edx
call esi
mov eax, dword [ebp - 0xa34]
push eax
jmp 0x410836
cmp eax, 0x400
je 0x4107f3
push eax
push str.Driver_action__x_n
call fcn.0040c2f0
mov eax, dword [ebp + 0xc]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
add esp, 8
cmp eax, 8
je 0x410d73
cmp eax, 0x2000
je 0x410d73
mov edx, dword [ebx]
mov ecx, dword [edx + 0xb0]
lea eax, [ebp - 0xa84]
push eax
push edi
push ebx
call ecx
test eax, eax
jl 0x4109ec
cmp word [ebp - 0xa84], 1
je 0x4109ec
mov edx, dword [ebp - 0xa7c]
push edx
lea ecx, [ebp - 0xa20]
call fcn.0040c130
mov eax, dword [ebp - 0xa20]
push 0x441ee0
push eax
mov byte [ebp - 4], 0xb
call fcn.0042ddef
mov ecx, dword [ebp - 0xa20]
push 0x4417cc
push ecx
call fcn.0042ddef
add esp, 0x10
test eax, eax
jne 0x4109df
push str.Skipping_x64_driver_on_x86_n
call fcn.0040c2f0
mov edx, dword [ebp - 0xa20]
add esp, 4
push edx
call esi
mov eax, dword [ebp - 0xa38]
push eax
call esi
mov ecx, dword [ebp - 0xa3c]
push ecx
call esi
mov edx, dword [ebp - 0xa40]
push edx
call esi
mov eax, dword [ebp - 0xa48]
push eax
call esi
mov ecx, dword [ebp - 0xa50]
push ecx
call esi
mov edx, dword [ebp - 0xa44]
push edx
call esi
mov eax, dword [ebp - 0xa34]
push eax
jmp 0x410836
mov ecx, dword [ebp - 0xa20]
push ecx
mov byte [ebp - 4], 0xa
call esi
mov ecx, dword [ebp - 0xa3c]
mov edx, dword [ebx]
mov edx, dword [edx + 0xb0]
lea eax, [ebp - 0xa84]
push eax
push ecx
push ebx
call edx
test eax, eax
jl 0x410ad1
cmp word [ebp - 0xa84], 1
je 0x410ad1
mov eax, dword [ebp - 0xa7c]
push eax
lea ecx, [ebp - 0xa30]
call fcn.0040c130
push 0
push 0
mov byte [ebp - 4], 0xc
call fcn.00401490
mov edi, dword [ebp - 0xa30]
test edi, edi
mov dword [ebp - 0xa28], eax
jne 0x410a4e
xor eax, eax
jmp 0x410a55
push edi
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov ecx, dword [ebp - 0xa28]
push ecx
push eax
push edi
call fcn.0040cbc0
test al, al
jne 0x410aca
mov edx, dword [ebp - 0xa28]
push edx
push edi
push str.Skipping_driver_with_winver_attr__S_on_OS__d_n
call fcn.0040c2f0
add esp, 0xc
push edi
call esi
mov eax, dword [ebp - 0xa38]
push eax
call esi
mov ecx, dword [ebp - 0xa3c]
push ecx
call esi
mov edx, dword [ebp - 0xa40]
push edx
call esi
mov eax, dword [ebp - 0xa48]
push eax
call esi
mov ecx, dword [ebp - 0xa50]
push ecx
call esi
mov edx, dword [ebp - 0xa44]
push edx
call esi
mov eax, dword [ebp - 0xa34]
push eax
call esi
mov ecx, dword [ebp - 0xa8c]
push ecx
jmp 0x410839
push edi
mov byte [ebp - 4], 0xa
call esi
mov ecx, dword [ebp - 0xa38]
mov edx, dword [ebx]
mov edx, dword [edx + 0xb0]
lea eax, [ebp - 0xa84]
push eax
push ecx
push ebx
call edx
test eax, eax
jl 0x410b2c
cmp word [ebp - 0xa84], 1
je 0x410b2c
mov eax, dword [ebp - 0xa7c]
push eax
lea ecx, [ebp - 0xa30]
call fcn.0040c130
mov edi, dword [ebp - 0xa30]
push 0x442ad8
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410b29
mov byte [ebp - 0xa68], 1
push edi
call esi
mov eax, dword [ebp - 0xa34]
mov ecx, dword [ebx]
mov ecx, dword [ecx + 0xb0]
lea edx, [ebp - 0xa84]
push edx
push eax
push ebx
call ecx
test eax, eax
jl 0x410bf9
cmp word [ebp - 0xa84], 1
je 0x410bf9
mov edx, dword [ebp - 0xa7c]
push edx
lea ecx, [ebp - 0xa30]
call fcn.0040c130
mov edi, dword [ebp - 0xa30]
push 0x4421b0
push edi
mov byte [ebp - 4], 0xd
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410ba0
push str.Will_merge_boot_start_value_n
call fcn.0040c2f0
add esp, 4
mov dword [ebp - 0xa90], 1
push 0x442ab4
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410bc9
push str.Will_merge_boot_start_value_n
call fcn.0040c2f0
add esp, 4
mov dword [ebp - 0xa90], 1
push 0x442ab0
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410bf2
push str.Will_merge_boot_start_value_n
call fcn.0040c2f0
add esp, 4
mov dword [ebp - 0xa90], 2
push edi
mov byte [ebp - 4], 0xa
call esi
mov edx, dword [ebp - 0xa50]
mov eax, dword [ebx]
mov eax, dword [eax + 0xb0]
lea ecx, [ebp - 0xa84]
push ecx
push edx
push ebx
call eax
test eax, eax
jl 0x410c4e
cmp word [ebp - 0xa84], 1
je 0x410c4e
mov ecx, dword [ebp - 0xa7c]
push ecx
lea ecx, [ebp - 0xa60]
call fcn.0040c130
mov edi, dword [ebp - 0xa60]
push 0
push 0
push edi
call fcn.0042e853
add esp, 0xc
push edi
mov dword [ebp - 0xa60], eax
call esi
mov ecx, dword [ebp - 0xa40]
mov edx, dword [ebx]
mov edx, dword [edx + 0xb0]
lea eax, [ebp - 0xa84]
push eax
push ecx
push ebx
call edx
test eax, eax
jl 0x410d18
cmp word [ebp - 0xa84], 1
je 0x410d18
mov eax, dword [ebp - 0xa7c]
push eax
lea ecx, [ebp - 0xa30]
call fcn.0040c130
mov edi, dword [ebp - 0xa30]
push str.deleteOnBoot
push edi
mov byte [ebp - 4], 0xe
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410cb2
mov byte [ebp - 0xa22], 1
push str.uninstall
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410cde
test byte [ebp + 0xc], 1
je 0x410cde
push str.Found_driver_marked_with_actionuninstall_changing_pa_install_to_pa_uninstall_n
call fcn.0040c2f0
add esp, 4
mov dword [ebp + 0xc], 2
push str.forceuninstall
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410d11
test byte [ebp + 0xc], 1
je 0x410d11
push str.Found_driver_marked_with_actionuninstall_changing_pa_install_to_pa_uninstall_n
call fcn.0040c2f0
add esp, 4
mov dword [ebp + 0xc], 2
mov byte [0x452515], 1
push edi
mov byte [ebp - 4], 0xa
call esi
mov eax, dword [ebp - 0xa44]
mov ecx, dword [ebx]
mov ecx, dword [ecx + 0xb0]
lea edx, [ebp - 0xa84]
push edx
push eax
push ebx
call ecx
test eax, eax
jl 0x410d73
cmp word [ebp - 0xa84], 1
je 0x410d73
mov edx, dword [ebp - 0xa7c]
push edx
lea ecx, [ebp - 0xa30]
call fcn.0040c130
mov edi, dword [ebp - 0xa30]
push str.network
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410d70
mov byte [ebp - 0xa21], 1
push edi
call esi
mov eax, dword [ebx]
mov edx, dword [eax + 0x58]
lea ecx, [ebp - 0xa98]
push ecx
push ebx
call edx
test eax, eax
jl 0x411d71
cmp word [ebp - 0xa98], 0xffff
jne 0x411d71
mov eax, dword [ebx]
mov edx, dword [eax + 0x30]
lea ecx, [ebp - 0xa88]
push ecx
push ebx
call edx
test eax, eax
jl 0x411d6a
mov eax, dword [ebp - 0xa88]
test eax, eax
je 0x411d6a
lea ecx, [ecx]
mov ecx, dword [eax]
lea edx, [ebp - 0xa74]
push edx
push eax
mov eax, dword [ecx + 0x24]
call eax
test eax, eax
jl 0x411294
mov eax, dword [ebp - 0xa74]
test eax, eax
je 0x411294
mov ecx, dword [eax]
lea edx, [ebp - 0xab0]
push edx
push eax
mov eax, dword [ecx + 0x28]
call eax
mov ebx, eax
test ebx, ebx
jl 0x411294
cmp dword [ebp - 0xab0], 1
jne 0x41115a
mov eax, dword [ebp - 0xa74]
mov ecx, dword [eax]
lea edx, [ebp - 0xa5c]
push edx
mov dword [ebp - 0xaa8], eax
push eax
mov eax, dword [ecx + 0x1c]
call eax
mov ebx, eax
test ebx, ebx
jl 0x411170
mov ecx, dword [ebp - 0xa5c]
push 0x442a48
push ecx
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x410e8d
mov eax, dword [ebp - 0xa74]
mov edx, dword [eax]
mov edx, dword [edx + 0x68]
lea ecx, [ebp - 0xa9c]
push ecx
push eax
call edx
lea eax, [ebp - 0xa9c]
push eax
lea ecx, [ebp - 0xaac]
call fcn.0040c150
push eax
lea ecx, [ebp - 0xa6c]
call fcn.0040d1f0
mov ecx, dword [ebp - 0xaac]
push ecx
call esi
mov edx, dword [ebp - 0xa9c]
push edx
call esi
mov eax, dword [ebp - 0xa5c]
push str.FileName
push eax
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x4110a4
mov eax, dword [ebp - 0xa74]
mov ecx, dword [eax]
lea edx, [ebp - 0xaa0]
push edx
push eax
mov eax, dword [ecx + 0x68]
call eax
lea ecx, [ebp - 0xaa0]
push ecx
lea ecx, [ebp - 0xab8]
call fcn.0040c150
push eax
lea ecx, [ebp - 0xa2c]
call fcn.0040d1f0
mov edx, dword [ebp - 0xab8]
push edx
call esi
mov eax, dword [ebp - 0xaa0]
push eax
call esi
mov dword [ebp - 0xa54], 0
mov ecx, dword [ebp - 0xa74]
push ecx
lea ecx, [ebp - 0xa54]
mov byte [ebp - 4], 0xf
call fcn.0040d100
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0xa54]
push edi
push 0x64
lea edx, [ebp - 0x13c]
push edx
push eax
call fcn.0040d230
test al, al
je 0x41117a
cmp edi, 0x800
je 0x4111b6
cmp edi, 8
jne 0x410f71
mov ecx, dword [ebp - 0xa54]
push ecx
lea edx, [ebp - 0x13c]
push edx
call fcn.0040ca20
test al, al
mov byte [ebp - 0xa19], al
jne 0x410f71
lea eax, [ebp - 0x13c]
push eax
push str.Unable_to_sign_service_binary__S_n
call fcn.0040c2f0
add esp, 8
mov eax, dword [ebp - 0xa54]
mov ecx, dword [eax]
lea edx, [ebp - 0xa84]
push edx
mov edx, dword [ebp - 0xa48]
push edx
push eax
mov eax, dword [ecx + 0xb0]
call eax
mov ebx, eax
test ebx, ebx
mov dword [ebp - 0xab4], ebx
jl 0x41108c
cmp word [ebp - 0xa84], 1
je 0x41108c
mov ecx, dword [ebp - 0xa7c]
push ecx
lea ecx, [ebp - 0xa20]
call fcn.0040c130
xor edi, edi
lea edx, [ebp - 0x20]
mov byte [ebp - 4], 0x10
mov word [ebp - 0xa56], di
mov byte [ebp - 0xa49], 1
mov dword [ebp - 0xa28], edx
mov ebx, dword [ebp - 0xa20]
test ebx, ebx
je 0x411080
push ebx
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp edi, eax
jae 0x411080
push 0x10
mov eax, ebx
mov cx, word [eax + edi*2]
lea edx, [ebp - 0xa58]
push 0
push edx
mov word [ebp - 0xa58], cx
call fcn.0042e853
mov ecx, dword [ebp - 0xa20]
mov bl, al
mov eax, dword [ebp - 0xa28]
add esp, 0xc
shl bl, 4
push ecx
mov byte [eax], bl
add edi, 1
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp edi, eax
jae 0x41124a
mov edx, dword [ebp - 0xa20]
mov ax, word [edx + edi*2]
push 0x10
lea ecx, [ebp - 0xa58]
push 0
push ecx
mov word [ebp - 0xa58], ax
call fcn.0042e853
mov edx, eax
mov eax, dword [ebp - 0xa28]
or dl, bl
mov byte [eax], dl
add eax, 1
add esp, 0xc
mov dword [ebp - 0xa28], eax
add edi, 1
jmp 0x410fdd
push ebx
call esi
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 0xab4]
mov eax, dword [ebp - 0xa54]
test eax, eax
mov byte [ebp - 4], 0xa
je 0x4110a7
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x4110a7
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0xa5c]
push str.EventSource
push eax
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x41114f
push 0x12c
lea ecx, [ebp - 0x4a0]
push ecx
push eax
push eax
call fcn.00424930
add esp, 0x10
test al, al
je 0x41126b
mov edx, dword [ebp - 0xaa8]
push edi
push 1
push edx
lea eax, [ebp - 0x4a0]
push eax
call fcn.0040d3c0
test al, al
mov byte [ebp - 0xa19], al
jne 0x41110a
cmp edi, 2
jne 0x411286
mov eax, dword [ebp - 0xa74]
mov ecx, dword [eax]
lea edx, [ebp - 0xa30]
push edx
push eax
mov eax, dword [ecx + 0x68]
call eax
lea ecx, [ebp - 0xa30]
push ecx
lea ecx, [ebp - 0xaa4]
call fcn.0040c150
push eax
lea ecx, [ebp - 0xa70]
call fcn.0040d1f0
mov edx, dword [ebp - 0xaa4]
push edx
call esi
mov eax, dword [ebp - 0xa30]
push eax
call esi
mov ecx, dword [ebp - 0xa5c]
push ecx
call esi
jmp 0x41115d
mov edi, dword [ebp + 0xc]
test ebx, ebx
jl 0x411297
mov eax, dword [ebp - 0xa88]
jmp 0x410dc0
push str.Failed_to_get_child_elements_name_n
jmp 0x411d76
mov edx, dword [ebp - 0xa2c]
push edx
push str.Unable_to_get__s_source_location_n
call fcn.0040c2f0
mov eax, dword [ebp - 0xa5c]
add esp, 8
push eax
call esi
mov eax, dword [ebp - 0xa54]
test eax, eax
mov byte [ebp - 4], 0xa
je 0x411d7e
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x411d7e
lea eax, [ebp - 0x13c]
push eax
push 0x441d94
call fcn.0042e111
mov eax, dword [ebp - 0xa54]
add esp, 8
test eax, eax
mov byte [ebp - 4], 0xa
je 0x4111e0
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [ebp - 0xa38]
push eax
call esi
mov ecx, dword [ebp - 0xa3c]
push ecx
call esi
mov edx, dword [ebp - 0xa40]
push edx
call esi
mov eax, dword [ebp - 0xa48]
push eax
call esi
mov ecx, dword [ebp - 0xa50]
push ecx
call esi
mov edx, dword [ebp - 0xa44]
push edx
call esi
mov eax, dword [ebp - 0xa34]
push eax
call esi
mov ecx, dword [ebp - 0xa8c]
push ecx
call esi
mov edx, dword [ebp - 0xa70]
push edx
call esi
mov eax, dword [ebp - 0xa6c]
push eax
call esi
mov ecx, dword [ebp - 0xa2c]
push ecx
call esi
mov al, 1
jmp 0x411df3
push str.parse_error_in_md5_attribute__n
call fcn.0040c2f0
mov edx, dword [ebp - 0xa5c]
add esp, 4
push edx
call esi
mov eax, dword [ebp - 0xa20]
jmp 0x411194
push str.Failed_to_get_system_core_destination_n
call fcn.0040c2f0
mov eax, dword [ebp - 0xa5c]
add esp, 4
push eax
call esi
jmp 0x411d7e
mov ecx, dword [ebp - 0xa5c]
push ecx
call esi
jmp 0x411d7e
mov edi, dword [ebp + 0xc]
cmp edi, 0x2000
jne 0x4112e0
lea edx, [ebp - 0x13c]
push edx
push 0x441d0c
call fcn.00421950
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x4112e0
push ebx
call fcn.00419f70
test al, al
mov byte [ebp - 0xa19], al
jne 0x4112d7
push ebx
push str.AddFileToCabinet__s_failed_n
call fcn.0040c2f0
add esp, 8
push ebx
call fcn.00420af0
add esp, 4
mov eax, edi
and eax, 1
mov dword [ebp - 0xa58], eax
jne 0x411301
cmp edi, 0x100
je 0x411301
cmp edi, 0x10
jne 0x411509
mov edi, dword [ebp + 0xc]
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x13c]
push ecx
call fcn.00402120
test al, al
jne 0x4113a3
lea edx, [ebp - 0x13c]
push edx
push str.Failed_to_get_MD5_for__S__n
call fcn.0040c2f0
add esp, 8
cmp edi, 0x100
je 0x4111e0
mov edx, dword [ebp - 0xa38]
push edx
call esi
mov eax, dword [ebp - 0xa3c]
push eax
call esi
mov ecx, dword [ebp - 0xa40]
push ecx
call esi
mov edx, dword [ebp - 0xa48]
push edx
call esi
mov eax, dword [ebp - 0xa50]
push eax
call esi
mov ecx, dword [ebp - 0xa44]
push ecx
call esi
mov edx, dword [ebp - 0xa34]
push edx
call esi
mov eax, dword [ebp - 0xa8c]
push eax
call esi
mov ecx, dword [ebp - 0xa70]
push ecx
call esi
mov edx, dword [ebp - 0xa6c]
push edx
call esi
mov eax, dword [ebp - 0xa2c]
push eax
call esi
xor al, al
jmp 0x411df3
cmp byte [ebp - 0xa49], 0
je 0x4114fc
mov eax, 0x10
lea ecx, [ebp - 0x20]
lea edx, [ebp - 0x30]
jmp 0x4113c0
mov edi, dword [edx]
cmp edi, dword [ecx]
jne 0x4113d8
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x4113c0
test eax, eax
je 0x411435
movzx ebx, byte [ecx]
movzx edi, byte [edx]
sub edi, ebx
jne 0x411427
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x411435
movzx ebx, byte [ecx]
movzx edi, byte [edx]
sub edi, ebx
jne 0x411427
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x411435
movzx ebx, byte [ecx]
movzx edi, byte [edx]
sub edi, ebx
jne 0x411427
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x411435
movzx ecx, byte [ecx]
movzx edi, byte [edx]
sub edi, ecx
je 0x411435
test edi, edi
mov eax, 1
jg 0x411437
or eax, 0xffffffff
jmp 0x411437
xor eax, eax
test eax, eax
je 0x4114fc
push 0x42
lea edx, [ebp - 0x180]
push 0
push edx
call fcn.0042d860
push 0x42
lea eax, [ebp - 0x74]
push 0
push eax
call fcn.0042d860
mov ebx, dword [sym.imp.SHLWAPI.dll_wnsprintfW]
add esp, 0x18
xor edi, edi
lea eax, [ebp - 0x74]
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x411470
movzx ecx, byte [ebp + edi - 0x30]
push ecx
sub eax, edx
sar eax, 1
push str._02x
lea edx, [ebp + eax*2 - 0x74]
push 3
push edx
call ebx
lea eax, [ebp - 0x180]
add esp, 0x10
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4114a0
movzx ecx, byte [ebp + edi - 0x20]
push ecx
sub eax, edx
sar eax, 1
push str._02x
lea edx, [ebp + eax*2 - 0x180]
push 3
push edx
call ebx
add edi, 1
add esp, 0x10
cmp edi, 0x10
jb 0x411467
lea eax, [ebp - 0x74]
push eax
lea ecx, [ebp - 0x180]
push ecx
lea edx, [ebp - 0x13c]
push edx
push str.Source_file__S_MD5_comparision_failed___S__S___n
call fcn.0040c2f0
add esp, 0x10
mov byte [ebp - 0xa19], 0
jmp 0x411d7e
cmp dword [ebp + 0xc], 0x10
jne 0x411509
mov byte [ebp - 0xa19], 1
cmp dword [ebp - 0xa58], 0
je 0x411991
cmp byte [ebp - 0xa22], 0
jne 0x41189f
mov edi, dword [ebp - 0xa2c]
push str.mfendisk.sys
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
je 0x41158e
push str.mfenlfk.sys
push edi
call fcn.0042ddef
add esp, 8
test eax, eax
je 0x41158e
mov ebx, dword [ebp - 0xa60]
push ebx
push str.Will_set_VTP_Options_to__x_n
call fcn.0040c2f0
movzx eax, byte [0x452538]
mov edx, dword [0x452540]
add esp, 8
push ebx
push 0x452539
push eax
push edi
lea ecx, [ebp - 0x13c]
push ecx
push edx
call fcn.004076b0
mov byte [ebp - 0xa19], al
jmp 0x41181a
mov ebx, dword [ebp - 0xa6c]
test ebx, ebx
je 0x411806
push 0x64
lea eax, [ebp - 0x248]
push eax
push edi
call fcn.00406e20
lea ecx, [ebp - 0x770]
push 0x104
push ecx
call fcn.004237b0
push ebx
lea edx, [ebp - 0x770]
push edx
push 0x441c6c
lea eax, [ebp - 0x13c]
push 0x64
push eax
call fcn.00422b20
lea eax, [ebp - 0x13c]
add esp, 0x1c
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4115e3
sub eax, edx
sar eax, 1
cmp dword [0x456b14], 0
mov dword [ebp - 0xa28], eax
je 0x411782
push 0
push 0
call fcn.00401490
cmp eax, 0x1770
jge 0x411782
mov ebx, dword [ebp - 0xa28]
lea ebx, [ebx + ebx + 0x3a]
push ebx
mov dword [ebp - 0xa60], 0
call fcn.0042e047
mov edi, eax
add esp, 4
test edi, edi
je 0x411765
push ebx
push 0
push edi
call fcn.0042d860
add esp, 0xc
mov dword [edi], 3
mov dword [edi + 4], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [ebp - 0xa28]
mov dword [edi + 8], eax
mov edx, ecx
push edx
lea eax, [ebp - 0x13c]
push eax
lea ebx, [edi + 0x38]
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 2
mov dword [edi + 0x14], 1
push ebx
mov dword [edi + 0x28], ecx
call fcn.0042e589
push 0x2e
push ebx
call fcn.0042e5c9
add esp, 0x14
test eax, eax
je 0x4116ae
push 4
push str..cat
push eax
call fcn.0042e589
add esp, 0xc
push ebx
push str.parseDriver:_Verifying_signature_on_NDIS_cat__S_n
call fcn.0040c2f0
add esp, 8
push 0
lea ecx, [ebp - 0xa60]
push ecx
lea edx, [ebp - 0xaa4]
push edx
lea eax, [ebp - 0xaa8]
push eax
push edi
call fcn.0042a320
test eax, eax
jne 0x411758
push str.parseDriver:_NDIS_Cat_failed_validation__deleting_catalog_database_to_force_re_build_n
call fcn.0040c2f0
add esp, 4
push 0x12c
lea ecx, [ebp - 0xa18]
push ecx
push str.catroo2edb.log
push 0
call fcn.00406ec0
push 0x12c
lea edx, [ebp - 0x4a0]
push edx
push str.catroo2edb.tst
push 0
call fcn.00406ec0
push 1
lea eax, [ebp - 0x4a0]
push eax
lea ecx, [ebp - 0xa18]
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x411765
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea edx, [ebp - 0x4a0]
push edx
lea eax, [ebp - 0xa18]
push eax
push str.parseDriver:_MoveFile_from__S_to__S_failed__x_n
call fcn.0040c2f0
add esp, 0x10
jmp 0x411765
push str.parseDriver:_cat_validated_succesfully_n
call fcn.0040c2f0
add esp, 4
mov eax, dword [ebp - 0xa60]
test eax, eax
je 0x411775
push eax
call fcn.0042a570
test edi, edi
je 0x411782
push edi
call fcn.0042df6a
add esp, 4
call fcn.0040c210
mov edi, eax
push edi
call fcn.00401070
push 0
call fcn.00407e00
push 0xbb8
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [0x452540]
push ecx
lea edx, [ebp - 0x13c]
push edx
lea ecx, [ebp - 0x5c]
call fcn.00417990
mov eax, dword [ebp - 0xa68]
mov ecx, dword [ebp + 0xc]
push 0x452539
push eax
mov eax, dword [ebp - 0xa2c]
push ecx
lea edx, [ebp - 0x248]
push edx
push eax
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x11
call fcn.004185e0
test eax, eax
push ebx
setge byte [ebp - 0xa19]
call fcn.00407e00
push edi
call fcn.00401050
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0xa
call fcn.00417e70
jmp 0x41181a
push str.Required_INF_element_not_found__n
call fcn.0040c2f0
add esp, 4
mov byte [ebp - 0xa19], 0
mov edi, dword [ebp - 0xa70]
test edi, edi
je 0x411881
push 0x12c
lea ecx, [ebp - 0x4a0]
push ecx
push 0
push 0
call fcn.00424930
add esp, 0x10
test al, al
jne 0x41184a
push str.Failed_to_get_system_core_destination_n
jmp 0x411d76
push edi
lea edx, [ebp - 0x4a0]
push edx
push 0x441c6c
lea eax, [ebp - 0x13c]
push 0x64
push eax
call fcn.00422b20
mov edx, dword [ebp - 0xa2c]
mov eax, dword [0x452540]
add esp, 0x14
lea ecx, [ebp - 0x13c]
push ecx
push edx
push eax
call fcn.004092a0
cmp byte [ebp - 0xa21], 0
je 0x41189f
mov ecx, dword [ebp - 0xa2c]
mov edx, dword [0x452540]
push ecx
push 2
push edx
call fcn.00409610
cmp dword [ebp - 0xa58], 0
je 0x411991
cmp byte [ebp - 0xa22], 0
je 0x411991
mov ebx, dword [ebp - 0xa2c]
push 0x64
lea eax, [ebp - 0x248]
push eax
push ebx
call fcn.00406e20
lea ecx, [ebp - 0x248]
push ecx
call fcn.00405d80
test eax, eax
jne 0x411997
push 0x12c
lea edx, [ebp - 0x4a0]
push edx
push str.drivers_
push eax
call fcn.00406ec0
push ebx
lea eax, [ebp - 0x4a0]
push 0x12c
push eax
call fcn.00421b60
lea ecx, [ebp - 0x4a0]
push ecx
lea edx, [ebp - 0x248]
push edx
push str.Installing__S_driver_temporarily_to__S_n
call fcn.0040c2f0
add esp, 0x18
push 0x452539
lea eax, [ebp - 0x4a0]
push eax
lea ecx, [ebp - 0x13c]
push ecx
call fcn.00402c30
push 0
push 0
push 0
push 0
push 0
push 1
push 3
push 1
movzx dx, al
push 0
movzx eax, dx
push ebx
lea ecx, [ebp - 0x248]
push ecx
mov dword [ebp - 0xa98], eax
call fcn.004039a0
lea edx, [ebp - 0x248]
push edx
mov byte [ebp - 0xa19], al
call fcn.00404fe0
lea eax, [ebp - 0x4a0]
push eax
call fcn.00401be0
mov byte [0x452539], 1
jmp 0x411997
mov ebx, dword [ebp - 0xa2c]
mov eax, dword [ebp + 0xc]
cmp eax, 0x100
jne 0x411bee
push 0x64
lea ecx, [ebp - 0x248]
push ecx
push ebx
call fcn.00406e20
lea edx, [ebp - 0x248]
push edx
call fcn.00405d80
test eax, eax
je 0x411a33
push 0x12c
lea eax, [ebp - 0x4a0]
push eax
push ebx
call fcn.00406e60
push 0x12c
lea ecx, [ebp - 0x7c0]
push ecx
push ebx
call fcn.004075c0
push 0x12c
lea edx, [ebp - 0xa18]
push edx
push ebx
call fcn.00407600
movzx eax, byte [0x452538]
push 0x452539
push eax
lea ecx, [ebp - 0xa18]
push ecx
lea edx, [ebp - 0x7c0]
push edx
lea eax, [ebp - 0x4a0]
push eax
lea ecx, [ebp - 0x13c]
push ecx
call fcn.00402a10
mov byte [ebp - 0xa19], al
jmp 0x411d2a
mov byte [ebp - 0xa19], 1
push 0x64
lea ecx, [ebp - 0x568]
push ecx
push ebx
call fcn.00406e20
lea edx, [ebp - 0x568]
push edx
push str.SYSTEMCurrentControlSetServices_s
lea eax, [ebp - 0x4a0]
push 0x12c
push eax
call fcn.00422b20
mov ebx, dword [ebp - 0xa90]
add esp, 0x10
test ebx, ebx
je 0x411acf
cmp dword [ebp - 0xa58], 0
jne 0x411a82
cmp dword [ebp + 0xc], 2
jne 0x411acf
lea ecx, [ebp - 0x4a0]
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.00422c80
mov edi, eax
add esp, 8
test edi, edi
je 0x411acf
push str.Adding_or_Removing_BootLoadContent_flag_n
call fcn.0040c2f0
movzx edx, byte [ebp + 0xc]
mov eax, dword [0x452540]
add esp, 4
and edx, 0xffffff01
push edx
push ebx
push str.BootLoadContent
push eax
push edi
call fcn.004063e0
push edi
call fcn.00422c60
add esp, 4
mov eax, dword [ebp - 0xa94]
mov ecx, dword [eax]
lea edx, [ebp - 0xa88]
push edx
push eax
mov eax, dword [ecx + 0x30]
call eax
test eax, eax
jl 0x411d6a
cmp dword [ebp - 0xa88], 0
je 0x411d6a
mov bl, 0x13
mov eax, dword [ebp - 0xa88]
mov ecx, dword [eax]
lea edx, [ebp - 0xa68]
push edx
push eax
mov eax, dword [ecx + 0x24]
call eax
test eax, eax
jl 0x411d7e
mov eax, dword [ebp - 0xa68]
test eax, eax
je 0x411d7e
mov ecx, dword [eax]
lea edx, [ebp - 0xa94]
push edx
push eax
mov eax, dword [ecx + 0x28]
call eax
test eax, eax
jl 0x411d7e
cmp dword [ebp - 0xa94], 1
jne 0x411afb
mov dword [ebp - 0xa20], 0
mov ecx, dword [ebp - 0xa68]
push ecx
lea ecx, [ebp - 0xa20]
mov byte [ebp - 4], bl
call fcn.0040d100
mov eax, dword [ebp - 0xa68]
mov edx, dword [eax]
mov edx, dword [edx + 0x1c]
lea ecx, [ebp - 0xa28]
push ecx
push eax
call edx
test eax, eax
jl 0x411d3e
mov eax, dword [ebp - 0xa28]
push str.Registry
push eax
call fcn.0042ddef
add esp, 8
test eax, eax
jne 0x411bc6
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp - 0xa20]
push edi
push 1
push ecx
lea edx, [ebp - 0x4a0]
push edx
call fcn.0040f450
test al, al
mov byte [ebp - 0xa19], al
jne 0x411bc6
cmp edi, 2
jne 0x411d56
mov eax, dword [ebp - 0xa28]
push eax
call esi
mov eax, dword [ebp - 0xa20]
test eax, eax
mov byte [ebp - 4], 0xa
je 0x411afb
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x411afb
cmp eax, 2
jne 0x411d2a
push str.mfendisk.sys
push ebx
call fcn.0042ddef
add esp, 8
test eax, eax
je 0x411c38
push str.mfenlfk.sys
push ebx
call fcn.0042ddef
add esp, 8
test eax, eax
je 0x411c38
mov edx, dword [0x452540]
push 0x452539
push ebx
push edx
call fcn.00407880
mov byte [ebp - 0xa19], al
jmp 0x411cfd
mov edi, dword [ebp - 0xa6c]
test edi, edi
je 0x411ce9
lea eax, [ebp - 0x770]
push 0x104
push eax
call fcn.004237b0
add esp, 8
push 0x64
lea ecx, [ebp - 0x248]
push ecx
push ebx
call fcn.00406e20
push edi
lea edx, [ebp - 0x770]
push edx
push 0x441c6c
lea eax, [ebp - 0x13c]
push 0x64
push eax
call fcn.00422b20
add esp, 0x14
call fcn.0040c210
mov edi, eax
push edi
call fcn.00401070
mov ecx, dword [0x452540]
push ecx
lea edx, [ebp - 0x13c]
push edx
lea ecx, [ebp - 0x5c]
call fcn.00417990
mov eax, dword [ebp - 0xa68]
push 0x452539
push eax
push 2
lea ecx, [ebp - 0x248]
push ecx
push ebx
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x12
call fcn.004185e0
test eax, eax
push edi
setge byte [ebp - 0xa19]
call fcn.00401050
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0xa
call fcn.00417e70
jmp 0x411cfd
push str.Required_INF_element_not_found__n
call fcn.0040c2f0
add esp, 4
mov byte [ebp - 0xa19], 0
cmp dword [ebp - 0xa70], 0
je 0x411d13
mov edx, dword [0x452540]
push ebx
push edx
call fcn.00409190
cmp byte [ebp - 0xa21], 0
je 0x411d2a
mov eax, dword [0x452540]
push ebx
push 2
push eax
call fcn.004096c0
cmp byte [ebp - 0xa19], 0
jne 0x411a3a
push str.parseDriver_failed_n
jmp 0x411d76
push str.Failed_to_get_child_elements_name_n
call fcn.0040c2f0
mov eax, dword [ebp - 0xa20]
add esp, 4
jmp 0x41119d
mov eax, dword [ebp - 0xa28]
push eax
call esi
mov eax, dword [ebp - 0xa20]
jmp 0x41119d
push str.Failed_to_get_child_nodes_n
jmp 0x411d76
push str.Element_does_not_have_child_nodes_n
call fcn.0040c2f0
add esp, 4
movzx eax, byte [ebp - 0xa61]
mov ecx, dword [ebp - 0xa38]
push ecx
mov byte [0x452515], al
call esi
mov edx, dword [ebp - 0xa3c]
push edx
call esi
mov eax, dword [ebp - 0xa40]
push eax
call esi
mov ecx, dword [ebp - 0xa48]
push ecx
call esi
mov edx, dword [ebp - 0xa50]
push edx
call esi
mov eax, dword [ebp - 0xa44]
push eax
call esi
mov ecx, dword [ebp - 0xa34]
push ecx
call esi
mov edx, dword [ebp - 0xa8c]
push edx
call esi
mov eax, dword [ebp - 0xa70]
push eax
call esi
mov ecx, dword [ebp - 0xa6c]
push ecx
call esi
mov edx, dword [ebp - 0xa2c]
push edx
call esi
mov al, byte [ebp - 0xa19]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042d845
mov esp, ebp
pop ebp
ret 8