Function at 0x404280
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4111ff
mov eax, dword fs:[0]
push eax
sub esp, 0x700
mov eax, dword [0x417200]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edx, dword [section..data]
mov dword [ebp - 0x6c8], eax
mov eax, dword [edx + 0xc]
mov ecx, section..data
call eax
add eax, 0x10
mov dword [ebp - 0x704], eax
xor edi, edi
mov dword [ebp - 4], edi
mov edx, dword [section..data]
mov eax, dword [edx + 0xc]
mov ecx, section..data
call eax
add eax, 0x10
mov dword [ebp - 0x700], eax
mov dword [ebp - 0x6d8], edi
mov dword [ebp - 0x6cc], edi
mov dword [ebp - 0x6d0], edi
mov dword [ebp - 0x6d4], edi
lea esi, [ebp - 0x704]
mov byte [ebp - 4], 3
call fcn.00401200
mov dword [ebp - 0x6dc], edi
mov dword [ebp - 4], 4
mov edx, dword [section..data]
mov eax, dword [edx + 0xc]
mov ecx, section..data
call eax
add eax, 0x10
mov dword [ebp - 0x6bc], eax
push 0x104
lea ecx, [ebp - 0x21c]
push ecx
push edi
mov byte [ebp - 4], 5
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea edx, [ebp - 0x21c]
push 0x5c
push edx
call fcn.00406859
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyW]
add esp, 8
lea esi, [eax + 2]
push str.info.xml
push esi
mov dword [ebp - 0x6c4], esi
call ebx
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4043cc
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x6bc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4043b2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x704]
push ecx
mov dword [ebp - 4], 0xffffffff
call fcn.00404b80
xor eax, eax
jmp 0x404821
lea edx, [ebp - 0x700]
push edx
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x6dc]
lea edx, [ebp - 0x704]
call fcn.004012d0
add esp, 8
test al, al
je 0x4043fd
lea ecx, [ebp - 0x704]
call fcn.00401b90
push str.SystemUpdateService.exe
push esi
call ebx
cmp dword [ebp - 0x6d0], edi
je 0x4047e3
mov ecx, dword [ebp - 0x6f8]
push str.UpdateInfo
push ecx
lea edx, [ebp - 0x704]
push edx
mov edx, dword [ebp - 0x6fc]
call fcn.00402680
cmp eax, edi
je 0x4047e3
mov esi, dword [ebp - 0x6d4]
mov ecx, eax
mov edx, eax
and edx, 0xffff
sar ecx, 0x10
mov ecx, dword [esi + ecx*4]
shl edx, 5
mov edx, dword [ecx + edx + 0x10]
push str.MainFile
lea esi, [ebp - 0x704]
mov dword [ebp - 0x6fc], edx
mov dword [ebp - 0x6f8], eax
mov dword [ebp - 0x6f4], edi
mov dword [ebp - 0x6e4], edi
mov dword [ebp - 0x6e0], edi
mov dword [ebp - 0x6e8], 1
call fcn.00401530
test al, al
je 0x404576
mov edi, 0x414fa0
lea ecx, [ebp - 0x6c0]
mov eax, esi
call fcn.00404b60
mov eax, dword [eax]
mov esi, dword [ebp - 0x6c8]
push eax
push esi
call ebx
mov eax, dword [ebp - 0x6c0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4044d4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x21c]
call fcn.00401120
push eax
push str._08X
lea edi, [ebp - 0x6bc]
call fcn.00403580
add esp, 8
mov edi, str.hash
lea ecx, [ebp - 0x6c0]
lea eax, [ebp - 0x704]
call fcn.00404b60
mov byte [ebp - 4], 6
mov edi, dword [ebp - 0x6bc]
xor ecx, ecx
test edi, edi
setne cl
test ecx, ecx
jne 0x404528
push 0x80004005
call fcn.00401100
mov eax, dword [eax]
push edi
push eax
call fcn.0040698a
add esp, 8
test eax, eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x6c0]
setne byte [ebp - 0x6b5]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404563
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor ecx, ecx
cmp byte [ebp - 0x6b5], cl
setne cl
xor edi, edi
mov dword [esi + 0x100], ecx
push str.PlugInfo
lea esi, [ebp - 0x704]
call fcn.00401530
test al, al
je 0x40474c
mov eax, esi
call fcn.00401830
push str.FILE
call fcn.00401530
test al, al
je 0x404741
jmp 0x4045b2
xor edi, edi
push 0x292
lea edx, [ebp - 0x4b4]
push edi
push edx
call fcn.00406ab0
add esp, 0xc
mov edi, str.name
lea ecx, [ebp - 0x6c0]
lea eax, [ebp - 0x704]
call fcn.00404b60
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x4b4]
push eax
call ebx
mov eax, dword [ebp - 0x6c0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40460b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, 0x414fa0
lea ecx, [ebp - 0x6c8]
lea eax, [ebp - 0x704]
call fcn.00404b60
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x434]
push ecx
call ebx
mov eax, dword [ebp - 0x6c8]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40464f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.hash
lea ecx, [ebp - 0x70c]
lea eax, [ebp - 0x704]
call fcn.00404b60
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x234]
push ecx
call ebx
mov eax, dword [ebp - 0x70c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x404693
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, 0x414fec
lea ecx, [ebp - 0x708]
lea eax, [ebp - 0x704]
call fcn.00404b60
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x334]
push ecx
call ebx
mov eax, dword [ebp - 0x708]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4046d7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebp - 0x6c4]
lea ecx, [ebp - 0x4b4]
push ecx
push edx
call ebx
lea ecx, [ebp - 0x21c]
call fcn.00401120
push eax
push str._08X
lea edi, [ebp - 0x6bc]
call fcn.00403580
mov ecx, dword [ebp - 0x6bc]
lea eax, [ebp - 0x234]
push eax
push ecx
call fcn.0040698a
add esp, 0x10
test eax, eax
je 0x404729
lea edx, [ebp - 0x4b4]
push edx
call fcn.00404a00
push str.FILE
lea esi, [ebp - 0x704]
call fcn.00401530
test al, al
jne 0x4045b0
lea eax, [ebp - 0x704]
call fcn.00401870
push str.OpenPage
lea esi, [ebp - 0x704]
call fcn.00401530
test al, al
je 0x4047e3
mov eax, esi
call fcn.00401830
push str.PAGE
call fcn.00401530
test al, al
je 0x4047d8
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcatW]
nop
mov edi, 0x414fa0
lea ecx, [ebp - 0x6c4]
lea eax, [ebp - 0x704]
call fcn.00404b60
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x6b4]
push eax
call ebx
mov eax, dword [ebp - 0x6c4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4047c4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.PAGE
lea esi, [ebp - 0x704]
call fcn.00401530
test al, al
jne 0x404780
lea eax, [ebp - 0x704]
call fcn.00401870
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x6bc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404809
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x704]
push ecx
mov dword [ebp - 4], 0xffffffff
call fcn.00404b80
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004051d1
mov esp, ebp
pop ebp
ret