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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x46e101
mov eax, dword fs:[0]
push eax
sub esp, 0xa0
push ebx
push esi
push edi
mov eax, dword [0x486ba4]
xor eax, esp
push eax
lea eax, [esp + 0xb0]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x1c], ebx
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x108]
cmp eax, dword [ebx + 0x280]
jne 0x41f982
mov eax, dword [ebx + 0x3b8]
xor edi, edi
inc edi
cmp eax, edi
jne 0x41f866
mov eax, dword [ebx + 0x3c0]
push ecx
sub eax, 0x10
mov dword [esp + 0x20], esp
mov esi, esp
call fcn.004021fc
add eax, 0x10
mov dword [esi], eax
push dword [ebx + 0x3bc]
call fcn.0041deea
pop ecx
pop ecx
test eax, eax
jne 0x41f847
push 0x40
push ecx
mov eax, esp
mov dword [esp + 0x24], esp
push str.Information
push eax
mov esi, edi
call fcn.00402676
and dword [esp + 0xc0], 0
push ecx
mov dword [esp + 0x20], esp
mov edi, esp
push ecx
mov eax, esp
mov dword [esp + 0x24], esp
push str.tipmsg_close
push eax
call fcn.00402676
push edi
push dword [ebx + 0x384]
call fcn.0040dd02
or dword [esp + 0xc4], 0xffffffff
mov eax, esi
mov ecx, ebx
call fcn.00422f2b
cmp eax, esi
jne 0x41fddb
push 3
sub esp, 0x1c
mov esi, esp
mov dword [esp + 0x3c], esp
push str.closetype
call fcn.004070e1
call fcn.00413d35
jmp 0x41f963
cmp eax, 3
jne 0x41f963
mov eax, dword [0x489144]
mov ecx, 0x489144
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x18], eax
mov dword [esp + 0xb8], edi
push dword [ebx + 0x3c4]
push ecx
mov eax, esp
mov dword [esp + 0x1c], esp
push str.tipmsg_close2
push eax
call fcn.00402676
lea eax, [esp + 0x24]
push eax
push dword [ebx + 0x384]
call fcn.0040dd02
mov byte [esp + 0xbc], 2
push dword [eax]
lea eax, [esp + 0x20]
call fcn.004044d7
mov byte [esp + 0xc0], 1
mov eax, dword [esp + 0x24]
pop ecx
pop ecx
add eax, 0xfffffff0
call fcn.004026f8
push 0x40
push ecx
mov eax, esp
mov dword [esp + 0x1c], esp
push str.Information
push eax
call fcn.00402676
mov byte [esp + 0xc0], 3
mov edi, dword [esp + 0x20]
push ecx
add edi, 0xfffffff0
mov eax, edi
mov dword [esp + 0x28], esp
mov esi, esp
call fcn.004021fc
add eax, 0x10
mov dword [esi], eax
xor eax, eax
inc eax
mov ecx, ebx
mov byte [esp + 0xc4], 1
call fcn.00422f2b
cmp eax, 1
je 0x41f92f
mov eax, edi
jmp 0x41fdd6
mov ecx, dword [ebx + 0x380]
call fcn.0041b0d0
push 4
sub esp, 0x1c
mov esi, esp
mov dword [esp + 0x34], esp
push str.closetype
call fcn.004070e1
call fcn.00413d35
or dword [esp + 0xb8], 0xffffffff
mov eax, edi
call fcn.004026f8
push 1
xor esi, esi
push esi
mov ecx, ebx
call fcn.00426eab
push esi
push esi
mov ecx, ebx
push 0x81bc
call fcn.004271ee
jmp 0x41fddb
lea ecx, [ebx + 0x28c]
cmp eax, dword [ecx]
je 0x41fae6
cmp eax, dword [ebx + 0x294]
jne 0x41f9aa
mov ecx, dword [ecx]
mov eax, dword [ecx]
call dword [eax + 0xc8]
test al, al
jne 0x41fae6
mov eax, dword [esi + 0x108]
cmp eax, dword [ebx + 0x2a8]
je 0x41facc
cmp eax, dword [ebx + 0x2ac]
je 0x41facc
cmp eax, dword [ebx + 0x2b0]
je 0x41facc
cmp eax, dword [ebx + 0x2a4]
jne 0x41f9fb
cmp dword [ebx + 0x374], 0x222
mov ecx, ebx
je 0x41f9ef
push 2
pop eax
jmp 0x41f9f1
xor eax, eax
call fcn.0042193c
jmp 0x41fddb
cmp eax, dword [ebx + 0x2bc]
jne 0x41fa0f
mov esi, ebx
call fcn.0041f66f
jmp 0x41fddb
cmp eax, dword [ebx + 0x2d8]
je 0x41fac0
cmp eax, dword [ebx + 0x284]
je 0x41fac0
cmp eax, dword [ebx + 0x290]
je 0x41fa51
cmp eax, dword [ebx + 0x294]
jne 0x41fddb
mov ecx, dword [ebx + 0x290]
mov eax, dword [ecx]
call dword [eax + 0xc8]
test al, al
je 0x41fddb
mov ecx, dword [ebx + 0x290]
mov eax, dword [ecx]
xor esi, esi
push esi
call dword [eax + 0xd8]
mov ecx, dword [ebx + 0x294]
mov eax, dword [ecx]
push esi
call dword [eax + 0xd8]
push 1
push esi
mov ecx, ebx
call fcn.00426eab
mov eax, ebx
call fcn.004230b9
lea esi, [ebx + 0x380]
mov ebx, dword [esi]
call fcn.0041afd0
test al, al
je 0x41fa9a
mov ecx, dword [esi]
call fcn.0041b0d0
xor edi, edi
push edi
sub esp, 0x1c
mov esi, esp
mov dword [esp + 0x44], esp
push str.closetype
call fcn.004070e1
call fcn.00413d35
mov ecx, dword [esp + 0x1c]
push edi
push edi
jmp 0x41f973
mov esi, ebx
call fcn.0041fdf3
jmp 0x41fddb
xor eax, eax
cmp dword [ebx + 0x374], 0x1f6
mov ecx, ebx
je 0x41f9f1
inc eax
jmp 0x41f9f1
mov eax, dword [ebx + 0x3c0]
push ecx
sub eax, 0x10
mov dword [esp + 0x28], esp
mov esi, esp
call fcn.004021fc
add eax, 0x10
mov dword [esi], eax
push dword [ebx + 0x3bc]
call fcn.0041deea
pop ecx
pop ecx
mov esi, str.Information
test eax, eax
je 0x41fbea
mov eax, dword [0x489144]
mov ecx, 0x489144
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x1c], eax
mov dword [esp + 0xb8], 4
push dword [ebx + 0x3c4]
push ecx
mov eax, esp
mov dword [esp + 0x2c], esp
push str.tipmsg_installed
push eax
call fcn.00402676
lea eax, [esp + 0x1c]
push eax
push dword [ebx + 0x384]
call fcn.0040dd02
mov byte [esp + 0xbc], 5
push dword [eax]
lea eax, [esp + 0x24]
call fcn.004044d7
mov byte [esp + 0xc0], 4
mov eax, dword [esp + 0x1c]
pop ecx
pop ecx
add eax, 0xfffffff0
call fcn.004026f8
push 0x40
push ecx
mov eax, esp
mov dword [esp + 0x2c], esp
push esi
push eax
call fcn.00402676
mov byte [esp + 0xc0], 6
mov edi, dword [esp + 0x24]
push ecx
add edi, 0xfffffff0
mov dword [esp + 0x20], esp
mov eax, edi
mov dword [esp + 0x20], esp
call fcn.004021fc
add eax, 0x10
mov ecx, esp
mov dword [ecx], eax
xor eax, eax
inc eax
mov ecx, ebx
mov byte [esp + 0xc4], 4
call fcn.00422f2b
cmp eax, 1
mov eax, edi
jne 0x41fdd6
or dword [esp + 0xb8], 0xffffffff
call fcn.004026f8
mov ecx, dword [ebx + 0x2a0]
call fcn.00428c51
test al, al
jne 0x41fc62
push 0x40
push ecx
mov eax, esp
mov dword [esp + 0x2c], esp
push esi
xor edi, edi
push eax
inc edi
call fcn.00402676
push ecx
mov esi, esp
mov dword [esp + 0xc4], 7
mov dword [esp + 0x20], esp
push ecx
mov eax, esp
mov dword [esp + 0x24], esp
push str.tipmsg_licenseaccept
push eax
call fcn.00402676
push esi
push dword [ebx + 0x384]
call fcn.0040dd02
or dword [esp + 0xc4], 0xffffffff
mov eax, edi
mov ecx, ebx
call fcn.00422f2b
cmp eax, 2
jne 0x41fddb
mov ecx, dword [ebx + 0x2a0]
push edi
call fcn.00428c49
mov ecx, dword [ebx + 0x2b8]
mov eax, dword [ecx]
lea edx, [esp + 0x28]
push edx
call dword [eax + 0x28]
mov ecx, eax
mov dword [esp + 0xb8], 8
call fcn.004282f7
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.00402676
lea ecx, [esp + 0x28]
mov byte [esp + 0xb8], 0xa
call fcn.004282dd
lea eax, [esp + 0x18]
call fcn.00401d18
call fcn.00401d68
mov eax, dword [esp + 0x18]
cmp dword [eax - 0xc], 0
je 0x41fdbf
add eax, 0xfffffff0
call fcn.004021fc
lea esi, [eax + 0x10]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41fcdc
lea eax, [esi - 0x10]
call fcn.004026f8
jmp 0x41fcfd
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
and eax, 0x10
cmp eax, 0x10
lea eax, [esi - 0x10]
sete byte [esp + 0x23]
call fcn.004026f8
cmp byte [esp + 0x23], 0
jne 0x41fd53
push 0x10
push ecx
mov eax, esp
mov dword [esp + 0x2c], esp
push str.Error
push eax
xor esi, esi
call fcn.00402676
push ecx
mov edi, esp
mov byte [esp + 0xc4], 0xb
mov dword [esp + 0x20], esp
push ecx
mov eax, esp
mov dword [esp + 0x24], esp
push str.errmsg_pathnoexist
push eax
call fcn.00402676
push edi
push dword [ebx + 0x384]
call fcn.0040dd02
mov eax, esi
mov ecx, ebx
mov byte [esp + 0xc4], 0xa
call fcn.00422f2b
jmp 0x41fdcf
mov eax, dword [esp + 0x18]
cmp dword [eax - 0xc], 0
je 0x41fdbf
push 0x5c
lea esi, [esp + 0x1c]
call fcn.00403d9d
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx - 0xc]
dec ecx
cmp eax, ecx
je 0x41fdaa
lea eax, [esp + 0x14]
push 0x478d68
push eax
mov ecx, esi
call fcn.00403e8f
pop ecx
pop ecx
mov edi, esi
mov byte [esp + 0xb8], 0xc
call fcn.00401bfe
mov byte [esp + 0xb8], 0xa
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
call fcn.004026f8
mov eax, dword [ebx + 0x380]
push dword [esp + 0x18]
add eax, 0x498
push eax
call fcn.00403f75
push 0
push 0
push 0x8065
mov ecx, ebx
call fcn.004271ee
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
call fcn.004026f8
mov ecx, dword [esp + 0xb0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4