Function at 0x417980
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4604f8
mov eax, dword fs:[0]
push eax
sub esp, 0x54
push ebx
push esi
push edi
mov eax, dword [0x4786a0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xor ebx, ebx
mov dword [ebp - 4], ebx
mov eax, dword [0x478034]
mov edx, dword [eax + 0xc]
mov ecx, 0x478034
call edx
lea edi, [eax + 0x10]
mov dword [ebp - 0x10], edi
push ecx
mov byte [ebp - 4], 1
mov eax, esp
mov dword [ebp - 0x20], esp
push eax
mov ecx, str.adxloader.dll.manifest
call fcn.00401110
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x1c], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x18]
mov byte [ebp - 4], 1
call fcn.004196c0
mov byte [ebp - 4], 3
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [edi - 0x10]
cmp eax, esi
je 0x417a56
cmp dword [esi + 0xc], ebx
lea edi, [esi + 0xc]
jl 0x417a44
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x417a44
call fcn.004218e0
mov dword [ebp - 0x1c], eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x417a39
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x1c]
add ecx, 0x10
mov dword [ebp - 0x10], ecx
jmp 0x417a53
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x10]
push edx
call fcn.00401330
xor ebx, ebx
mov edi, dword [ebp - 0x10]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417a79
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x417af8
mov eax, dword [ebp + 8]
add eax, 0x100
push str.Cant_find_the_manifest_file.
push eax
mov ebx, 0x1d
call fcn.00401330
add edi, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417abc
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417ae2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov edx, dword [0x478034]
mov eax, dword [edx + 0xc]
mov ecx, 0x478034
call eax
add eax, 0x10
mov dword [ebp - 0x5c], eax
mov byte [ebp - 4], 4
mov edx, dword [0x478034]
mov eax, dword [edx + 0xc]
mov ecx, 0x478034
call eax
add eax, 0x10
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], ebx
xor edx, edx
lea eax, [ebp - 0x5c]
mov byte [ebp - 4], 7
call fcn.0043d740
mov dword [ebp - 0x34], 8
lea ecx, [ebp - 0x58]
push ecx
push edi
lea ecx, [ebp - 0x34]
lea edx, [ebp - 0x5c]
mov byte [ebp - 4], 8
call fcn.0043d7e0
add esp, 8
test al, al
je 0x417b70
lea ecx, [ebp - 0x5c]
call fcn.0043e040
cmp al, bl
jne 0x417bb9
mov eax, dword [ebp + 8]
add eax, 0x100
push str.Failed_to_read_the_manifest_file.
push eax
mov ebx, 0x21
call fcn.00401330
lea eax, [ebp - 0x5c]
call fcn.00403ad0
add edi, 0xfffffff0
mov byte [ebp - 4], 0
lea edx, [edi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x417abc
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
jmp 0x417abc
mov eax, str.configuration
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x417c10
mov edi, dword [ebp + 8]
add edi, 0x100
mov edx, str.Cant_find_the_configuration_section_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x5c]
call fcn.00403ad0
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417abc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x417abc
lea eax, [ebp - 0x5c]
call fcn.0043de40
mov eax, 0x468ab0
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
je 0x417de3
mov eax, esi
call fcn.0043de40
mov eax, str.application
call fcn.0043db30
test al, al
jne 0x417c4e
push str.application
mov ecx, esi
call fcn.00440040
xor ecx, ecx
cmp dword [ebp - 0x50], ebx
mov eax, 0x46ac74
setne cl
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], ecx
call fcn.0043db30
test al, al
jne 0x417c7f
push 0x46ac74
mov ecx, esi
call fcn.00440040
xor edx, edx
cmp dword [ebp - 0x50], ebx
mov eax, str.autoUpdateEnabled
setne dl
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], edx
call fcn.0043db30
test al, al
jne 0x417cb0
push str.autoUpdateEnabled
mov ecx, esi
call fcn.00440040
xor eax, eax
cmp dword [ebp - 0x50], ebx
lea esi, [ebp - 0x5c]
setne al
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], eax
mov eax, str.installationUrl
call fcn.0043db30
test al, al
jne 0x417ce1
push str.installationUrl
mov ecx, esi
call fcn.00440040
xor ecx, ecx
cmp dword [ebp - 0x50], ebx
mov eax, str.additionalInstallationUrls
setne cl
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], ecx
call fcn.0043db30
test al, al
jne 0x417d12
push str.additionalInstallationUrls
mov ecx, esi
call fcn.00440040
xor edx, edx
cmp dword [ebp - 0x50], ebx
mov eax, str.language
setne dl
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], edx
call fcn.0043db30
test al, al
jne 0x417d43
push str.language
mov ecx, esi
call fcn.00440040
xor eax, eax
cmp dword [ebp - 0x50], ebx
lea esi, [ebp - 0x5c]
setne al
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], eax
mov eax, str.version
call fcn.0043db30
test al, al
jne 0x417d74
push str.version
mov ecx, esi
call fcn.00440040
xor ecx, ecx
cmp dword [ebp - 0x50], ebx
mov eax, str.productCode
setne cl
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], ecx
call fcn.0043db30
test al, al
jne 0x417da5
push str.productCode
mov ecx, esi
call fcn.00440040
xor edx, edx
cmp dword [ebp - 0x50], ebx
mov eax, str.updaterAutoDownload
setne dl
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], edx
call fcn.0043db30
test al, al
jne 0x417dd6
push str.updaterAutoDownload
mov ecx, esi
call fcn.00440040
lea eax, [ebp - 0x5c]
call fcn.0043de80
jmp 0x417f82
lea eax, [ebp - 0x18]
push eax
mov ecx, str._msi__r_n_____application___r_n_____id___r_n_____autoUpdateEnabled___r_n_____installationUrl___r_n_____additionalInstallationUrls___r_n_____language___r_n_____version___r_n_____productCode___r_n_____updaterAutoDownload___r_n____msi_
call fcn.00401110
mov eax, 0x468854
lea esi, [ebp - 0x5c]
mov byte [ebp - 4], 9
call fcn.0043db30
mov edx, esi
test al, al
je 0x417ea2
mov ecx, dword [ebp - 0x18]
push ecx
mov ecx, 0x2000
call fcn.00440200
test al, al
je 0x417f5f
mov eax, dword [ebp - 0x5c]
add eax, 0xfffffff0
call fcn.004218e0
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
mov byte [ebp - 4], 0xa
cmp dword [esi - 0xc], ebx
jl 0x417f57
push str._Signature
push esi
call fcn.00446659
add esp, 8
cmp eax, ebx
je 0x417f57
sub eax, esi
sar eax, 1
mov edi, eax
cmp edi, ebx
jle 0x417f57
mov ecx, edi
lea esi, [ebp - 0x1c]
lea edx, [ebp - 0x14]
call fcn.0041e340
mov bl, 0xb
mov eax, edi
lea ecx, [ebp - 0x20]
lea edx, [ebp - 0x14]
mov byte [ebp - 4], bl
call fcn.0041e3e0
lea edi, [ebp - 0x14]
mov byte [ebp - 4], 0xc
call fcn.0041db20
lea eax, [ebp - 0x20]
mov byte [ebp - 4], bl
call fcn.0041d790
mov edx, edi
push edx
jmp 0x417f28
mov eax, dword [ebp - 0x18]
push eax
xor ecx, ecx
call fcn.00440200
test al, al
je 0x417f5f
mov eax, dword [ebp - 0x5c]
add eax, 0xfffffff0
call fcn.004218e0
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
mov byte [ebp - 4], 0xd
cmp dword [esi - 0xc], ebx
jl 0x417f57
push str._msi_
push esi
call fcn.00446659
add esp, 8
cmp eax, ebx
je 0x417f57
sub eax, esi
sar eax, 1
mov edi, eax
cmp edi, ebx
jle 0x417f57
mov ecx, edi
lea esi, [ebp - 0x1c]
lea edx, [ebp - 0x14]
call fcn.0041e340
mov bl, 0xe
mov eax, edi
lea ecx, [ebp - 0x20]
lea edx, [ebp - 0x14]
mov byte [ebp - 4], bl
call fcn.0041e3e0
lea edi, [ebp - 0x14]
mov byte [ebp - 4], 0xf
call fcn.0041db20
lea eax, [ebp - 0x20]
mov byte [ebp - 4], bl
call fcn.0041d790
mov ecx, edi
push ecx
mov edx, 0x46aee4
call fcn.0041e6d0
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ebx, [ebp - 0x14]
call fcn.00420540
mov edx, dword [ebp - 0x14]
lea eax, [ebp - 0x5c]
call fcn.0043d740
lea eax, [ebp - 0x1c]
call fcn.0041d790
xor ebx, ebx
lea eax, [ebp - 0x14]
call fcn.0041d790
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x417f82
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x5c]
call fcn.0043de80
mov eax, str.configuration
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], ebx
call fcn.0043db30
test al, al
je 0x417bca
mov eax, esi
call fcn.0043de40
mov eax, 0x468ab0
call fcn.0043db30
test al, al
jne 0x417ff3
mov edx, str.Cant_find_the_msi_section_in_the_manifest_file.
mov edi, dword [ebp + 8]
add edi, 0x100
call fcn.004011b0
lea eax, [ebp - 0x5c]
call fcn.00403ad0
lea eax, [ebp - 0x10]
call fcn.0041d790
lea eax, [ebp + 0xc]
call fcn.0041d790
jmp 0x417ae2
lea eax, [ebp - 0x5c]
call fcn.0043de40
mov eax, str.application
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x418013
mov edx, str.Cant_find_the_application_element_in_the_manifest_file.
jmp 0x417fc8
mov eax, dword [0x47b764]
add eax, 0xfffffff0
call fcn.004218e0
add eax, 0x10
mov dword [ebp - 0x14], eax
lea edi, [ebp - 0x14]
mov byte [ebp - 4], 0x10
call fcn.0041e2e0
mov ecx, dword [ebp - 0x14]
push ecx
lea ecx, [ebp - 0x5c]
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, 0x46ac74
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x418077
mov edi, dword [ebp + 8]
add edi, 0x100
mov edx, str.Cant_find_the_id_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov edx, dword [0x47b780]
push edx
lea ecx, [ebp - 0x5c]
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, str.autoUpdateEnabled
lea esi, [ebp - 0x5c]
call fcn.0043db30
mov edi, dword [ebp + 8]
test al, al
jne 0x4180bf
add edi, 0x100
mov edx, str.Cant_find_the_autoUpdateEnabled_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
lea ecx, [ebp - 0x5c]
cmp byte [edi + 0x111], bl
je 0x4180d1
push 0x468b78
jmp 0x4180d6
push 0x468a48
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, str.installationUrl
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x418111
add edi, 0x100
mov edx, str.Cant_find_the_installationUrl_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov eax, dword [0x47b74c]
push eax
lea ecx, [ebp - 0x5c]
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, str.additionalInstallationUrls
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x418155
add edi, 0x100
mov edx, str.Cant_find_the_additionalInstallationUrls_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov ecx, dword [0x47b788]
push ecx
lea ecx, [ebp - 0x5c]
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, str.language
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x41819a
add edi, 0x100
mov edx, str.Cant_find_the_language_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov edx, dword [0x47b750]
push edx
lea ecx, [ebp - 0x5c]
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, str.version
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x4181df
add edi, 0x100
mov edx, str.Cant_find_the_version_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov eax, dword [0x47b76c]
push eax
lea ecx, [ebp - 0x5c]
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, str.productCode
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x418223
add edi, 0x100
mov edx, str.Cant_find_the_productCode_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov ecx, dword [0x47b75c]
push ecx
lea ecx, [ebp - 0x5c]
call fcn.0043f620
lea eax, [ebp - 0x5c]
call fcn.00403b70
mov eax, str.updaterAutoDownload
lea esi, [ebp - 0x5c]
call fcn.0043db30
test al, al
jne 0x418268
add edi, 0x100
mov edx, str.Cant_find_the_updaterAutoDownload_element_in_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov edx, dword [0x47b784]
push edx
lea ecx, [ebp - 0x5c]
call fcn.0043f620
mov ecx, dword [ebp - 0x10]
lea eax, [ebp - 0x34]
push eax
push ecx
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x5c]
call fcn.0043d9b0
add esp, 8
test al, al
jne 0x4182ae
add edi, 0x100
mov edx, str.Cant_save_the_manifest_file.
call fcn.004011b0
lea eax, [ebp - 0x14]
call fcn.0041d790
jmp 0x417fd6
mov eax, dword [ebp + 0xc]
push ecx
add eax, 0xfffffff0
mov dword [ebp + 8], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
call fcn.00418300
lea eax, [ebp - 0x14]
call fcn.0041d790
lea eax, [ebp - 0x5c]
call fcn.00403ad0
lea eax, [ebp - 0x10]
call fcn.0041d790
lea eax, [ebp + 0xc]
call fcn.0041d790
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8