Function at 0x451ad0
Capabilities:
Check if file exists
Get common file path
Get file attributes
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4692b0
mov eax, dword fs:[0]
push eax
sub esp, 0x834
mov eax, dword [0x481288]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ecx, 9
mov esi, str.UserDataImportSet
lea edi, [ebp - 0x4c]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [str.UserDataSet]
mov dword [ebp - 0xe0], eax
mov ecx, dword [0x478790]
mov dword [ebp - 0xdc], ecx
mov edx, dword [0x478794]
mov dword [ebp - 0xd8], edx
mov eax, dword [0x478798]
mov dword [ebp - 0xd4], eax
mov ecx, dword [0x47879c]
mov dword [ebp - 0xd0], ecx
mov edx, dword [0x4787a0]
mov dword [ebp - 0xcc], edx
mov eax, dword [str.NeedImport]
mov dword [ebp - 0x154], eax
mov ecx, dword [0x4787a8]
mov dword [ebp - 0x150], ecx
mov edx, dword [0x4787ac]
mov dword [ebp - 0x14c], edx
mov eax, dword [0x4787b0]
mov dword [ebp - 0x148], eax
mov ecx, dword [0x4787b4]
mov dword [ebp - 0x144], ecx
mov dx, word [0x4787b8]
mov word [ebp - 0x140], dx
mov eax, dword [str.OldVersion]
mov dword [ebp - 0x28], eax
mov ecx, dword [0x4787c0]
mov dword [ebp - 0x24], ecx
mov edx, dword [0x4787c4]
mov dword [ebp - 0x20], edx
mov eax, dword [0x4787c8]
mov dword [ebp - 0x1c], eax
mov ecx, dword [0x4787cc]
mov dword [ebp - 0x18], ecx
mov dx, word [0x4787d0]
mov word [ebp - 0x14], dx
mov ecx, 9
mov esi, str.OldVerDataPathType
lea edi, [ebp - 0x74]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 7
mov esi, str.OldVerDataPath
lea edi, [ebp - 0x100]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 8
mov esi, str.OldQQInstallPath
lea edi, [ebp - 0x13c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 0xa
mov esi, str.UserDataSavePathType
lea edi, [ebp - 0xc8]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 8
mov esi, str.UserDataSavePath
lea edi, [ebp - 0x9c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov eax, dword [str.NewVersion]
mov dword [ebp - 0x118], eax
mov ecx, dword [0x478894]
mov dword [ebp - 0x114], ecx
mov edx, dword [0x478898]
mov dword [ebp - 0x110], edx
mov eax, dword [0x47889c]
mov dword [ebp - 0x10c], eax
mov ecx, dword [0x4788a0]
mov dword [ebp - 0x108], ecx
mov dx, word [0x4788a4]
mov word [ebp - 0x104], dx
mov word [ebp - 0x184], 0
xor eax, eax
mov dword [ebp - 0x182], eax
mov dword [ebp - 0x17e], eax
mov dword [ebp - 0x17a], eax
mov dword [ebp - 0x176], eax
mov word [ebp - 0x172], ax
lea ecx, [ebp - 0x170]
call fcn.00401190
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x170]
push ecx
call fcn.00451340
add esp, 4
test eax, eax
jne 0x451cef
mov dword [ebp - 0x830], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x170]
call fcn.00401200
mov eax, dword [ebp - 0x830]
jmp 0x452325
push 0x4788a8
push 0x208
push 0x104
push 0x4884e0
call fcn.004157ac
add esp, 0x10
lea ecx, [ebp - 0x170]
call fcn.00401220
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x78], eax
cmp dword [ebp - 0x78], 0xffffffff
jne 0x451e87
push 0x4788ac
push 0x48a1c8
call fcn.004160f0
add esp, 8
test eax, eax
jne 0x451d55
push 0x4888f0
call fcn.00414d31
add esp, 4
test eax, eax
je 0x451e82
mov word [ebp - 0x38c], 0
push 0x206
push 0
lea edx, [ebp - 0x38a]
push edx
call fcn.00415680
add esp, 0xc
push 0x4788b0
lea ecx, [ebp - 0x3a8]
call fcn.004011c0
mov byte [ebp - 4], 1
push 1
push 5
lea eax, [ebp - 0x38c]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x451dff
lea ecx, [ebp - 0x38c]
push ecx
lea ecx, [ebp - 0x3a8]
call fcn.00403bf0
lea ecx, [ebp - 0x3a8]
call fcn.00402490
mov dword [ebp - 0x3ac], eax
mov edx, dword [ebp - 0x3ac]
sub edx, 1
push edx
lea ecx, [ebp - 0x3a8]
call fcn.00403c70
movzx eax, word [eax]
cmp eax, 0x5c
je 0x451def
push 0x4788b4
lea ecx, [ebp - 0x3a8]
call fcn.00403c10
push 0x4788b8
lea ecx, [ebp - 0x3a8]
call fcn.00403c10
lea ecx, [ebp - 0x3a8]
call fcn.00401220
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x451e73
lea ecx, [ebp - 0x3a8]
call fcn.00401220
push eax
push 0x4788cc
push 0x208
push 0x104
push 0x4884e0
call fcn.004157ac
add esp, 0x14
mov dword [ebp - 0x834], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x3a8]
call fcn.00401200
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x170]
call fcn.00401200
mov eax, dword [ebp - 0x834]
jmp 0x452325
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x3a8]
call fcn.00401200
jmp 0x452303
cmp dword [0x48acb0], 0
je 0x452021
push 0x4788d4
push 0x48a1c8
call fcn.004160f0
add esp, 8
test eax, eax
je 0x451ec0
push 0x4788d8
push 0x48a1c8
call fcn.004383a0
add esp, 8
test eax, eax
jle 0x451eef
push 0x4888f0
call fcn.00414d31
add esp, 4
test eax, eax
je 0x452021
push str.20.65.0.0.264
push 0x4888f0
call fcn.004383a0
add esp, 8
test eax, eax
jg 0x452021
mov word [ebp - 0x5b4], 0
push 0x206
push 0
lea ecx, [ebp - 0x5b2]
push ecx
call fcn.00415680
add esp, 0xc
push 0x478910
lea ecx, [ebp - 0x5d0]
call fcn.004011c0
mov byte [ebp - 4], 2
push 1
push 5
lea edx, [ebp - 0x5b4]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x451f99
lea eax, [ebp - 0x5b4]
push eax
lea ecx, [ebp - 0x5d0]
call fcn.00403bf0
lea ecx, [ebp - 0x5d0]
call fcn.00402490
mov dword [ebp - 0x5d4], eax
mov ecx, dword [ebp - 0x5d4]
sub ecx, 1
push ecx
lea ecx, [ebp - 0x5d0]
call fcn.00403c70
movzx edx, word [eax]
cmp edx, 0x5c
je 0x451f89
push 0x478914
lea ecx, [ebp - 0x5d0]
call fcn.00403c10
push 0x478918
lea ecx, [ebp - 0x5d0]
call fcn.00403c10
lea ecx, [ebp - 0x5d0]
call fcn.00401220
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x45200d
lea ecx, [ebp - 0x5d0]
call fcn.00401220
push eax
push 0x47892c
push 0x208
push 0x104
push 0x4884e0
call fcn.004157ac
add esp, 0x14
mov dword [ebp - 0x838], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x5d0]
call fcn.00401200
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x170]
call fcn.00401200
mov eax, dword [ebp - 0x838]
jmp 0x452325
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x5d0]
call fcn.00401200
jmp 0x452303
lea ecx, [ebp - 0x170]
call fcn.00401220
push eax
push 0x208
push 0x4884e0
push 0x478934
lea eax, [ebp - 0x9c]
push eax
lea ecx, [ebp - 0xe0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
test eax, eax
je 0x452303
lea ecx, [ebp - 0x170]
call fcn.00401220
push eax
push 0xa
lea edx, [ebp - 0x184]
push edx
push 0x478938
lea eax, [ebp - 0xc8]
push eax
lea ecx, [ebp - 0xe0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
test eax, eax
je 0x4522df
push 0x47893c
lea edx, [ebp - 0x184]
push edx
call fcn.004159fc
add esp, 8
test eax, eax
jne 0x452173
push 0x478940
lea ecx, [ebp - 0x61c]
call fcn.004011c0
mov byte [ebp - 4], 3
push 1
push 5
lea eax, [ebp - 0x824]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x452135
lea ecx, [ebp - 0x824]
push ecx
lea ecx, [ebp - 0x61c]
call fcn.00403bf0
lea ecx, [ebp - 0x61c]
call fcn.00402490
mov dword [ebp - 0x828], eax
mov edx, dword [ebp - 0x828]
sub edx, 1
push edx
lea ecx, [ebp - 0x61c]
call fcn.00403c70
movzx eax, word [eax]
cmp eax, 0x5c
je 0x452125
push 0x478944
lea ecx, [ebp - 0x61c]
call fcn.00403c10
push 0x478948
lea ecx, [ebp - 0x61c]
call fcn.00403c10
lea ecx, [ebp - 0x61c]
call fcn.00401220
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x452164
lea ecx, [ebp - 0x61c]
call fcn.00401220
push eax
push 0x4884e0
call fcn.00414f38
add esp, 8
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x61c]
call fcn.00401200
mov dword [ebp - 0x5fc], 0
mov dword [ebp - 0x600], 1
mov dword [ebp - 0x5d8], 1
jmp 0x4521a2
mov ecx, dword [ebp - 0x5d8]
add ecx, 1
mov dword [ebp - 0x5d8], ecx
mov edx, dword [ebp - 0x5d8]
movzx eax, word [edx*2 + 0x4884e0]
test eax, eax
je 0x452218
mov ecx, dword [ebp - 0x5d8]
movzx edx, word [ecx*2 + 0x4884e0]
cmp edx, 0x5c
jne 0x4521de
cmp dword [ebp - 0x5fc], 0
je 0x4521d2
jmp 0x452193
mov dword [ebp - 0x5fc], 1
jmp 0x4521e8
mov dword [ebp - 0x5fc], 0
mov eax, dword [ebp - 0x600]
mov ecx, dword [ebp - 0x5d8]
mov dx, word [ecx*2 + 0x4884e0]
mov word [eax*2 + 0x4884e0], dx
mov eax, dword [ebp - 0x600]
add eax, 1
mov dword [ebp - 0x600], eax
jmp 0x452193
mov ecx, dword [ebp - 0x600]
mov dword [ebp - 0x82c], ecx
jmp 0x452235
mov edx, dword [ebp - 0x82c]
add edx, 1
mov dword [ebp - 0x82c], edx
mov eax, dword [ebp - 0x82c]
cmp eax, dword [ebp - 0x5d8]
jge 0x452255
mov ecx, dword [ebp - 0x82c]
mov word [ecx*2 + 0x4884e0], 0
jmp 0x452226
push 0x478968
lea ecx, [ebp - 0x5f4]
call fcn.004011c0
mov byte [ebp - 4], 4
push 0x4884e0
lea ecx, [ebp - 0x5f4]
call fcn.00403bf0
lea ecx, [ebp - 0x5f4]
call fcn.00402490
mov dword [ebp - 0x5f8], eax
mov edx, dword [ebp - 0x5f8]
sub edx, 1
push edx
lea ecx, [ebp - 0x5f4]
call fcn.00403c70
movzx eax, word [eax]
cmp eax, 0x5c
je 0x4522b7
push 0x47896c
lea ecx, [ebp - 0x5f4]
call fcn.00403c10
lea ecx, [ebp - 0x5f4]
call fcn.00401220
push eax
push 0x4884e0
call fcn.00414f38
add esp, 8
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x5f4]
call fcn.00401200
mov dword [ebp - 0x83c], 1
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x170]
call fcn.00401200
mov eax, dword [ebp - 0x83c]
jmp 0x452325
mov dword [ebp - 0x840], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x170]
call fcn.00401200
mov eax, dword [ebp - 0x840]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004151d0
mov esp, ebp
pop ebp
ret