Function at 0x41ee80
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc00
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push edi
lea eax, [ebp - 0xc00]
push 0x400
push eax
push 0
call esi
lea ecx, [ebp - 0xc00]
push 0x400
lea edx, [ebp - 0x400]
push ecx
push edx
call dword [sym.imp.MSVCRT.dll__mbsnbcpy]
mov edi, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
add esp, 0xc
lea eax, [ebp - 0x400]
push eax
call edi
push 0x400
lea ecx, [ebp - 0x400]
push str.360Ver.dll
push ecx
call dword [sym.imp.MSVCRT.dll__mbsnbcat]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
add esp, 0xc
lea edx, [ebp - 0x400]
push edx
call ebx
test eax, eax
je 0x41f096
mov eax, dword [0x42f804]
test eax, eax
jne 0x41efd3
mov eax, dword [0x42f808]
test eax, eax
jne 0x41ef8d
lea eax, [ebp - 0x800]
push 0x400
push eax
push 0
call esi
lea ecx, [ebp - 0x800]
push ecx
call edi
mov eax, dword [0x42f80c]
xor esi, esi
test eax, eax
jle 0x41ef4b
lea edx, [ebp - 0x800]
push edx
call edi
mov eax, dword [0x42f80c]
inc esi
cmp esi, eax
jl 0x41ef38
lea eax, [ebp - 0x800]
push str.360Common.dll
lea ecx, [ebp - 0x800]
push eax
push ecx
call dword [sym.imp.SHLWAPI.dll_PathCombineA]
lea edx, [ebp - 0x800]
push edx
call fcn.00405850
add esp, 4
test eax, eax
je 0x41ef84
lea eax, [ebp - 0x800]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
mov dword [0x42f808], eax
je 0x41efc6
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.Get360CommonInstance
push eax
call esi
mov ecx, dword [0x42f808]
push str.Get360ProductHistoryManager
push ecx
mov dword [0x42f804], eax
call esi
mov edx, dword [0x42f808]
push str.Create360FireWareStateFunction
push edx
mov dword [0x42f800], eax
call esi
mov dword [0x42f7fc], eax
mov eax, dword [0x42f804]
test eax, eax
je 0x41f096
call eax
test eax, eax
je 0x41f096
mov ecx, dword [eax]
push eax
call dword [ecx + 4]
test eax, eax
je 0x41f096
lea edx, [ebp - 0x400]
test edx, edx
je 0x41f096
lea eax, [ebp - 0x400]
push eax
call ebx
test eax, eax
je 0x41f0a7
lea ecx, [ebp - 0x400]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.00422fa0
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, esp
push esi
push edi
lea edx, [ebp - 0x400]
push 0xffffffffffffffff
push edx
push 0
push 0
mov word [edi], 0
call ebx
push edi
call fcn.00420f30
add esp, 4
test eax, eax
jne 0x41f0a7
lea eax, [ebp - 0x400]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.00422fa0
mov edi, esp
push esi
push edi
lea ecx, [ebp - 0x400]
push 0xffffffffffffffff
push ecx
push 0
push 0
mov word [edi], 0
call ebx
call fcn.00420d70
push eax
push edi
call fcn.00420d80
add esp, 8
lea edx, [ebp - 0xc00]
test edx, edx
jne 0x41f11c
xor esi, esi
jmp 0x41f12b
lea edx, [ebp - 0x400]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, dword [ebp + 8]
mov ebx, eax
mov eax, dword [edi]
cmp dword [eax - 0xc], 1
jg 0x41f0c6
cmp ebx, dword [eax - 4]
jle 0x41f0dd
mov ecx, edi
call fcn.004028f0
push ebx
mov ecx, edi
call fcn.00402890
test eax, eax
je 0x41f170
lea eax, [ebx + 1]
cmp eax, ebx
jb 0x41f0ff
mov edi, dword [edi]
mov ecx, ebx
mov edx, ecx
lea esi, [ebp - 0x400]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov dword [eax - 8], ebx
mov ecx, dword [edi]
mov eax, 1
mov byte [ecx + ebx], 0
lea esp, [ebp - 0xc0c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0xc00]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
mov edi, dword [ebp + 8]
mov eax, dword [edi]
cmp dword [eax - 0xc], 1
jg 0x41f13b
cmp esi, dword [eax - 4]
jle 0x41f14e
mov ecx, edi
call fcn.004028f0
push esi
mov ecx, edi
call fcn.00402890
test eax, eax
je 0x41f170
mov eax, dword [edi]
lea ecx, [ebp - 0xc00]
push esi
lea edx, [esi + 1]
push ecx
push edx
push eax
call fcn.00402830
mov ecx, dword [edi]
add esp, 0x10
mov dword [ecx - 8], esi
mov edx, dword [edi]
mov byte [edx + esi], 0
lea esp, [ebp - 0xc0c]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret