Function at 0x406980
Capabilities:
Check if file exists
Get file attributes
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x534ec1
mov eax, dword fs:[0]
push eax
mov eax, 0x2704
call fcn.0051f200
mov eax, dword [0x5a6a30]
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 edi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov esi, ecx
mov dword [ebp - 0x26c0], esi
mov dword [ebp - 0x26e0], edi
push eax
push 0x1000
lea eax, [ebp - 0x2014]
push eax
xor ebx, ebx
push edi
mov dword [ebp - 4], ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
lea eax, [ebp - 0x2014]
lea edx, [eax + 2]
jmp 0x4069f0
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4069f0
sub eax, edx
sar eax, 1
je 0x4078a9
lea ecx, [ebp - 0x2710]
call fcn.00428420
lea ecx, [ebp - 0x2014]
push ecx
lea ecx, [ebp - 0x2710]
mov byte [ebp - 4], 1
call fcn.00428e50
lea ecx, [ebp - 0x2710]
mov dword [ebp - 0x26c4], ebx
call fcn.00426dd0
test eax, eax
je 0x407884
nop
lea ecx, [ebp - 0x26f8]
call fcn.00428600
mov edx, dword [ebp - 0x26c4]
push 0x3d
push edx
lea ecx, [ebp - 0x2710]
mov byte [ebp - 4], 2
call fcn.00427000
mov esi, dword [ebp - 0x26c0]
push eax
lea ecx, [esi + 0xec]
call fcn.00427860
push eax
lea ecx, [ebp - 0x26f8]
call fcn.004289f0
push 0x20
lea ecx, [ebp - 0x26f8]
call fcn.00428040
lea ecx, [ebp - 0x26f8]
call fcn.00426dd0
cmp eax, 2
jb 0x407839
push 0
lea ecx, [ebp - 0x26f8]
call fcn.00427000
push eax
lea ecx, [esi + 0xec]
call fcn.00427860
xor ecx, ecx
mov word [ebp - 0x204c], cx
mov ecx, eax
mov dword [ebp - 0x2038], 7
mov dword [ebp - 0x203c], 0
lea esi, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x406ae0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x204c]
call fcn.00401dd0
mov byte [ebp - 4], 3
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x407895
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x26b0], ebx
mov byte [ebp - 4], 4
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x407895
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x26b8], eax
mov byte [ebp - 4], 5
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x407895
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x26b4], eax
lea ecx, [ebp - 0x26b8]
mov byte [ebp - 4], 6
call fcn.00401530
lea ecx, [ebp - 0x26b4]
call fcn.00401530
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
sub ecx, esi
mov eax, 0xa80a80a9
imul ecx
add edx, ecx
sar edx, 0xa
mov ecx, edx
shr ecx, 0x1f
xor edi, edi
add ecx, edx
je 0x406c95
xor ebx, ebx
lea esp, [esp]
lea edx, [esi + ebx]
mov eax, edx
lea esi, [eax + 2]
jmp 0x406bd0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x406bd0
sub eax, esi
sar eax, 1
push eax
push edx
mov edx, dword [ebp - 0x203c]
push edx
push 0
lea ecx, [ebp - 0x204c]
call fcn.00403e80
test eax, eax
je 0x406c21
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
sub ecx, esi
mov eax, 0xa80a80a9
imul ecx
add edx, ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
inc edi
add eax, edx
add ebx, 0x618
cmp edi, eax
jb 0x406bc0
jmp 0x406c8f
mov ecx, dword [ebp + 0x10]
imul edi, edi, 0x618
lea edx, [edi + ecx + 0x208]
test edx, edx
jne 0x406c39
xor eax, eax
jmp 0x406c4f
mov eax, edx
lea esi, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x406c40
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x26b8]
call fcn.00401bc0
mov edx, dword [ebp + 0x10]
lea edi, [edi + edx + 0x410]
test edi, edi
jne 0x406c6e
xor eax, eax
jmp 0x406c82
mov eax, edi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x406c73
sub eax, edx
sar eax, 1
push eax
push edi
lea ecx, [ebp - 0x26b4]
call fcn.00401bc0
mov ebx, dword [ebp - 0x26b0]
mov esi, dword [ebp - 0x26b8]
cmp dword [esi - 0xc], 0
jne 0x406d6d
mov eax, dword [ebp - 0x204c]
mov edi, 8
cmp dword [ebp - 0x2038], edi
jae 0x406cbe
lea eax, [ebp - 0x204c]
push eax
push str.Not_Support_Driver__DriverName___1_s_._n
push 4
call fcn.00403750
mov eax, dword [ebp - 0x26b4]
add eax, 0xfffffff0
add esp, 0xc
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406cf4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406d14
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406d34
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x2038], edi
jb 0x406d4b
mov ecx, dword [ebp - 0x204c]
push ecx
call fcn.00429e6f
add esp, 4
xor edx, edx
mov dword [ebp - 0x2038], 7
mov dword [ebp - 0x203c], 0
mov word [ebp - 0x204c], dx
jmp 0x40784f
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x406d8f
push 0
lea ecx, [ebp - 0x26b8]
call fcn.004015a0
mov esi, dword [ebp - 0x26b8]
push esi
push str.DriverName___1_s_._n
push 4
call fcn.00403750
mov ecx, dword [ebp - 0x26b4]
mov eax, 1
sub eax, dword [ecx - 4]
mov ecx, dword [ecx - 8]
add esp, 0xc
or ecx, eax
jge 0x406dc1
push 0
lea ecx, [ebp - 0x26b4]
call fcn.004015a0
mov eax, dword [ebp - 0x26b4]
push eax
push str.DeviceName___1_s_._n
push 4
call fcn.00403750
add esp, 0xc
lea ecx, [ebp - 0x26dc]
call fcn.00428600
lea ecx, [ebp - 0x26dc]
mov byte [ebp - 4], 7
call fcn.00428440
push 0x2c
push 1
lea ecx, [ebp - 0x26f8]
call fcn.00427000
mov esi, dword [ebp - 0x26c0]
add esi, 0xec
push eax
mov ecx, esi
call fcn.00427860
push eax
lea ecx, [ebp - 0x26dc]
call fcn.004289f0
push 0x20
lea ecx, [ebp - 0x26dc]
call fcn.00428040
lea ecx, [ebp - 0x26dc]
xor edi, edi
call fcn.00426dd0
lea ecx, [ebp - 0x26dc]
cmp eax, 3
jb 0x4070c7
push edi
call fcn.00427000
push eax
mov ecx, esi
call fcn.00427860
push eax
lea ecx, [ebp - 0x26bc]
call fcn.004022a0
mov ecx, dword [ebp - 0x26bc]
push str.HKLM
push ecx
mov byte [ebp - 4], 8
call fcn.0051eced
add esp, 8
test eax, eax
jne 0x406e89
mov edi, reloc.OLEAUT32.dll_SysReAllocString
jmp 0x406f04
mov edx, dword [ebp - 0x26bc]
push str.HKCU
push edx
call fcn.0051eced
add esp, 8
test eax, eax
jne 0x406ea8
mov edi, SysReAllocStringLen
jmp 0x406f04
mov eax, dword [ebp - 0x26bc]
push str.HKCR
push eax
call fcn.0051eced
add esp, 8
test eax, eax
jne 0x406ec7
mov edi, SysReAllocStringLen
jmp 0x406f04
mov ecx, dword [ebp - 0x26bc]
push str.HKCC
push ecx
call fcn.0051eced
add esp, 8
test eax, eax
jne 0x406ee6
mov edi, VariantCopy
jmp 0x406f04
mov edx, dword [ebp - 0x26bc]
push str.DIRECT
push edx
call fcn.0051eced
add esp, 8
test eax, eax
jne 0x406fde
xor edi, edi
mov eax, dword [ebp - 0x26bc]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406f2a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 1
lea ecx, [ebp - 0x26dc]
call fcn.00427000
push eax
mov ecx, esi
call fcn.00427860
xor ecx, ecx
mov word [ebp - 0x2030], cx
mov ecx, eax
mov dword [ebp - 0x201c], 7
mov dword [ebp - 0x2020], 0
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x406f61
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2030]
call fcn.00401dd0
cmp dword [ebp - 0x201c], 8
mov eax, dword [ebp - 0x2030]
mov byte [ebp - 4], 9
jae 0x406f96
lea eax, [ebp - 0x2030]
push eax
push str.strUninstPath___1_s_._n
push 4
call fcn.00403750
mov esi, dword [ebx - 0x10]
lea eax, [ebx - 0x10]
add esp, 0xc
cmp dword [eax + 4], 0
je 0x4071d6
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jge 0x4071ae
cmp dword [ebx - 8], 0
jl 0x40789f
xor edx, edx
mov dword [ebx - 0xc], 0
mov word [ebx], dx
jmp 0x4071d6
mov edx, dword [ebp - 0x26bc]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x407006
push 0
lea ecx, [ebp - 0x26bc]
call fcn.004015a0
mov edx, dword [ebp - 0x26bc]
push edx
push str.Path_Type_Injustice___1_s__._n
push 4
call fcn.00403750
mov eax, dword [ebp - 0x26bc]
add eax, 0xfffffff0
add esp, 0xc
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40703c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x26dc]
mov byte [ebp - 4], 6
call fcn.00428610
mov eax, dword [ebp - 0x26b4]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407071
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x26b8]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407097
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4070b7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x204c]
call fcn.00401880
jmp 0x40784f
call fcn.00426dd0
cmp eax, 1
ja 0x406f2a
mov eax, dword [ebp - 0x204c]
mov esi, 8
cmp dword [ebp - 0x2038], esi
jae 0x4070ee
lea eax, [ebp - 0x204c]
push eax
push 0x5457b8
push 4
call fcn.00403750
add esp, 0xc
lea ecx, [ebp - 0x26dc]
mov byte [ebp - 4], 6
call fcn.00428610
mov eax, dword [ebp - 0x26b4]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407133
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x26b8]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407159
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407179
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x2038], esi
jb 0x407190
mov ecx, dword [ebp - 0x204c]
push ecx
call fcn.00429e6f
add esp, 4
xor edx, edx
mov dword [ebp - 0x2038], 7
mov dword [ebp - 0x203c], edi
mov word [ebp - 0x204c], dx
jmp 0x40784f
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4071c4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0xc]
mov ecx, esi
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x26b0], ebx
test edi, edi
je 0x4074d5
push 1
push 0x5457b4
lea ecx, [ebp - 0x2030]
call fcn.004035d0
mov eax, dword [ebp - 0x26b8]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x407200
mov ecx, dword [ebp - 0x26b8]
sub eax, edx
sar eax, 1
push eax
push ecx
lea ecx, [ebp - 0x2030]
call fcn.004035d0
push 2
lea ecx, [ebp - 0x26dc]
call fcn.00427000
mov ecx, dword [ebp - 0x26c0]
push eax
add ecx, 0xec
call fcn.00427860
xor edx, edx
mov ecx, eax
mov dword [ebp - 0x2054], 7
mov dword [ebp - 0x2058], 0
mov word [ebp - 0x2068], dx
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407263
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2068]
call fcn.00401dd0
cmp dword [ebp - 0x201c], 8
mov eax, dword [ebp - 0x2030]
mov byte [ebp - 4], 0xa
jae 0x407298
lea eax, [ebp - 0x2030]
push eax
push str.Registry_Uninstaller_Path_____1_s___n
push 5
call fcn.00403750
mov eax, dword [ebp - 0x2068]
mov esi, 8
add esp, 0xc
cmp dword [ebp - 0x2054], esi
jae 0x4072c1
lea eax, [ebp - 0x2068]
push eax
push str.Registry_Uninstaller_Value____1_s___n
push 5
call fcn.00403750
add esp, 0xc
lea ecx, [ebp - 0x2090]
call fcn.004237a0
mov eax, dword [ebp - 0x2030]
mov byte [ebp - 4], 0xb
cmp dword [ebp - 0x201c], esi
jae 0x4072f4
lea eax, [ebp - 0x2030]
push eax
push edi
lea ecx, [ebp - 0x2090]
call fcn.004230f0
test eax, eax
je 0x407345
mov eax, dword [ebp - 0x2068]
cmp dword [ebp - 0x2054], esi
jae 0x407319
lea eax, [ebp - 0x2068]
push eax
lea ecx, [ebp - 0x2090]
call fcn.004234f0
test eax, eax
jne 0x407330
xor ecx, ecx
jmp 0x407483
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407335
jmp 0x40747f
mov eax, dword [ebp - 0x26b4]
cmp dword [eax - 0xc], 0
je 0x4074a1
cmp dword [ebp - 0x201c], 8
mov eax, dword [ebp - 0x2030]
mov dword [ebp - 0x2020], 0
jae 0x407374
lea eax, [ebp - 0x2030]
xor ecx, ecx
mov word [eax], cx
push 1
lea ecx, [ebp - 0x26dc]
call fcn.00427000
mov ecx, dword [ebp - 0x26c0]
push eax
add ecx, 0xec
call fcn.00427860
mov ecx, eax
lea esi, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4073a0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2030]
call fcn.00401dd0
push 1
push 0x5457b4
lea ecx, [ebp - 0x2030]
call fcn.004035d0
mov eax, dword [ebp - 0x26b4]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4073d7
sub eax, edx
mov edx, dword [ebp - 0x26b4]
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x2030]
call fcn.004035d0
mov eax, dword [ebp - 0x2030]
mov esi, 8
cmp dword [ebp - 0x201c], esi
jae 0x407412
lea eax, [ebp - 0x2030]
push eax
push str.Registry_Uninstaller_Path__device_____1_s___n
push 5
call fcn.00403750
mov eax, dword [ebp - 0x2030]
add esp, 0xc
cmp dword [ebp - 0x201c], esi
jae 0x407436
lea eax, [ebp - 0x2030]
push eax
push edi
lea ecx, [ebp - 0x2090]
call fcn.004230f0
test eax, eax
je 0x4074a1
mov eax, dword [ebp - 0x2068]
cmp dword [ebp - 0x2054], esi
jae 0x40745b
lea eax, [ebp - 0x2068]
push eax
lea ecx, [ebp - 0x2090]
call fcn.004234f0
test eax, eax
jne 0x40746f
xor ecx, ecx
jmp 0x407483
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407474
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x26b0]
call fcn.00401bc0
lea ecx, [ebp - 0x2090]
call fcn.00423320
mov ebx, dword [ebp - 0x26b0]
lea ecx, [ebp - 0x2090]
mov byte [ebp - 4], 0xa
call fcn.004237d0
cmp dword [ebp - 0x2054], 8
mov byte [ebp - 4], 9
jb 0x407582
mov eax, dword [ebp - 0x2068]
push eax
call fcn.00429e6f
add esp, 4
jmp 0x407582
mov ecx, dword [ebp - 0x26c0]
mov ecx, dword [ecx + 0xe8]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x407536
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x407526
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x407526
push eax
call fcn.004040b0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x40751b
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x26b0], ebx
jmp 0x407536
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x26b0]
call fcn.00401bc0
cmp dword [ebp - 0x201c], 8
jb 0x40754d
mov eax, dword [ebp - 0x2030]
mov esi, eax
test eax, eax
jne 0x407553
jmp 0x40756f
lea esi, [ebp - 0x2030]
mov eax, esi
lea edx, [eax + 2]
jmp 0x407560
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x407560
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x26b0]
call fcn.004049b0
mov ebx, dword [ebp - 0x26b0]
cmp dword [ebx - 0xc], 0
je 0x407727
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x4075ae
push 0
lea ecx, [ebp - 0x26b0]
call fcn.004015a0
mov ebx, dword [ebp - 0x26b0]
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x407727
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x4075e0
push 0
lea ecx, [ebp - 0x26b0]
call fcn.004015a0
mov ebx, dword [ebp - 0x26b0]
push ebx
push str.strPath___1_s_._n
push 4
call fcn.00403750
mov ecx, dword [ebp - 0x203c]
add esp, 0xc
push 3
push 0x545688
push ecx
push 0
lea ecx, [ebp - 0x204c]
call fcn.00403e80
test eax, eax
jne 0x40761b
mov dword [ebp - 0x26ac], 1
jmp 0x407646
mov edx, dword [ebp - 0x203c]
push 4
push str.SCAN
push edx
push 0
lea ecx, [ebp - 0x204c]
call fcn.00403e80
neg eax
sbb eax, eax
and eax, 0xfffffffe
add eax, 2
mov dword [ebp - 0x26ac], eax
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x407668
push 0
lea ecx, [ebp - 0x26b0]
call fcn.004015a0
mov ebx, dword [ebp - 0x26b0]
push ebx
lea eax, [ebp - 0x26a8]
push 0x410
push eax
call fcn.0051e2ba
mov edi, dword [ebp - 0x26b8]
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
add esp, 0xc
or ecx, eax
jge 0x4076a5
push 0
lea ecx, [ebp - 0x26b8]
call fcn.004015a0
mov edi, dword [ebp - 0x26b8]
push edi
lea ecx, [ebp - 0x24a0]
push 0x410
push ecx
call fcn.0051e2ba
mov esi, dword [ebp - 0x26b4]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
add esp, 0xc
or ecx, eax
jge 0x4076e2
push 0
lea ecx, [ebp - 0x26b4]
call fcn.004015a0
mov esi, dword [ebp - 0x26b4]
push esi
lea edx, [ebp - 0x2298]
push 0x410
push edx
call fcn.0051e2ba
mov ecx, dword [ebp - 0x26c0]
add esp, 0xc
lea eax, [ebp - 0x26ac]
add ecx, 0xd0
push eax
call fcn.00406450
lea ecx, [ebp - 0x26a8]
push ecx
push str.CDelDrvApp::GetInitInfo_UninstallerName__1_s___n
push 5
call fcn.00403750
add esp, 0xc
jmp 0x40777b
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x407749
push 0
lea ecx, [ebp - 0x26b0]
call fcn.004015a0
mov ebx, dword [ebp - 0x26b0]
cmp dword [ebp - 0x2038], 8
mov eax, dword [ebp - 0x204c]
jae 0x40775e
lea eax, [ebp - 0x204c]
push ebx
push eax
push str._1_s__:__2_s__is_not_Found._n
push 4
call fcn.00403750
mov edi, dword [ebp - 0x26b8]
mov esi, dword [ebp - 0x26b4]
add esp, 0x10
cmp dword [ebp - 0x201c], 8
jb 0x407793
mov edx, dword [ebp - 0x2030]
push edx
call fcn.00429e6f
add esp, 4
xor eax, eax
lea ecx, [ebp - 0x26dc]
mov dword [ebp - 0x201c], 7
mov dword [ebp - 0x2020], 0
mov word [ebp - 0x2030], ax
mov byte [ebp - 4], 6
call fcn.00428610
lea eax, [esi - 0x10]
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4077df
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4077ff
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40781f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x2038], 8
jb 0x40784f
mov ecx, dword [ebp - 0x204c]
push ecx
call fcn.00429e6f
add esp, 4
jmp 0x40784f
mov edx, dword [ebp - 0x26e0]
push edx
push str.CDelDrvApp::GetInitInfo____1_s____Section_Injustice._n
push 5
call fcn.00403750
add esp, 0xc
lea ecx, [ebp - 0x26f8]
mov byte [ebp - 4], 1
call fcn.00428610
mov esi, dword [ebp - 0x26c4]
inc esi
lea ecx, [ebp - 0x2710]
mov dword [ebp - 0x26c4], esi
call fcn.00426dd0
cmp esi, eax
jb 0x406a40
mov esi, dword [ebp - 0x26c0]
lea ecx, [ebp - 0x2710]
mov byte [ebp - 4], 0
call fcn.00428480
jmp 0x4078b9
push 0x80004005
call fcn.004010e0
push 0x80070057
call fcn.004010e0
push edi
push str.CDelDrvApp::GetInitInfo____1_s____Section_No_Data._n
push 5
call fcn.00403750
add esp, 0xc
mov ecx, dword [esi + 0xd4]
sub ecx, dword [esi + 0xd0]
mov eax, 0x14f38f63
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
xor ecx, ecx
cmp ecx, eax
mov eax, dword [ebp + 0x10]
sbb esi, esi
neg esi
test eax, eax
je 0x4078ee
push eax
call fcn.00429e6f
add esp, 4
mov eax, esi
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.0051e701
mov esp, ebp
pop ebp
ret 0x18