Function at 0x5245b0
Capabilities:
Check if file exists
Get common file path
Move file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x7a6c44
mov eax, dword fs:[0]
push eax
sub esp, 0xaf8
mov eax, dword [0x8ca144]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x8f0]
mov ebx, dword [ebp + 0xc]
push 0x8b08c8
mov dword [ebp - 0xb00], eax
mov dword [ebp - 0xb04], 0
call fcn.004026c0
xor eax, eax
mov dword [ebp - 4], 0
push str.InstallConfig1
lea ecx, [ebp - 0xa28]
mov dword [ebp - 0xaf4], eax
xor esi, esi
mov dword [ebp - 0xae0], eax
mov dword [ebp - 0xad8], eax
xor edi, edi
mov dword [ebp - 0xae4], eax
mov dword [ebp - 0xae8], eax
mov dword [ebp - 0xaec], eax
mov dword [ebp - 0xafc], eax
mov dword [ebp - 0xaf8], eax
mov dword [ebp - 0xadc], eax
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xa28]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 1
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xa28]
mov dword [ebp - 0xad4], eax
mov byte [ebp - 4], 0
call fcn.00402680
mov eax, dword [ebp - 0xad4]
test eax, eax
je 0x524696
cmp dword [eax + 0x14], 8
jb 0x524694
mov edi, dword [eax]
jmp 0x524696
mov edi, eax
push str.InstallConfig2
lea ecx, [ebp - 0xa40]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xa40]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 2
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xa40]
mov dword [ebp - 0xad4], eax
mov byte [ebp - 4], 0
call fcn.00402680
mov eax, dword [ebp - 0xad4]
test eax, eax
je 0x5246e7
cmp dword [eax + 0x14], 8
jb 0x5246e1
mov eax, dword [eax]
mov dword [ebp - 0xae0], eax
push str.InstallConfig3
lea ecx, [ebp - 0xa58]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xa58]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 3
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xa58]
mov dword [ebp - 0xad4], eax
mov byte [ebp - 4], 0
call fcn.00402680
mov eax, dword [ebp - 0xad4]
test eax, eax
je 0x524738
cmp dword [eax + 0x14], 8
jb 0x524732
mov eax, dword [eax]
mov dword [ebp - 0xad8], eax
push str.InstallConfig4
lea ecx, [ebp - 0xa70]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xa70]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 4
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xa70]
mov dword [ebp - 0xad4], eax
mov byte [ebp - 4], 0
call fcn.00402680
mov eax, dword [ebp - 0xad4]
test eax, eax
je 0x524789
cmp dword [eax + 0x14], 8
jb 0x524783
mov eax, dword [eax]
mov dword [ebp - 0xae8], eax
push str.InstallConfig5
lea ecx, [ebp - 0xa88]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xa88]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 5
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xa88]
mov dword [ebp - 0xad4], eax
mov byte [ebp - 4], 0
call fcn.00402680
mov eax, dword [ebp - 0xad4]
test eax, eax
je 0x5247d8
cmp dword [eax + 0x14], 8
jb 0x5247d6
mov esi, dword [eax]
jmp 0x5247d8
mov esi, eax
push str.InstallConfig6
lea ecx, [ebp - 0xaa0]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xaa0]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 6
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xaa0]
mov dword [ebp - 0xad4], eax
mov byte [ebp - 4], 0
call fcn.00402680
mov eax, dword [ebp - 0xad4]
test eax, eax
je 0x524829
cmp dword [eax + 0x14], 8
jb 0x524823
mov eax, dword [eax]
mov dword [ebp - 0xaf4], eax
push str.InstallConfig7
lea ecx, [ebp - 0xab8]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xab8]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 7
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xab8]
mov dword [ebp - 0xad4], eax
mov byte [ebp - 4], 0
call fcn.00402680
mov eax, dword [ebp - 0xad4]
test eax, eax
je 0x52487a
cmp dword [eax + 0x14], 8
jb 0x524874
mov eax, dword [eax]
mov dword [ebp - 0xaec], eax
xor edx, edx
mov dword [ebp - 0xad4], edx
test esi, esi
je 0x5248cb
mov eax, 0x8139f0
nop dword [eax + eax]
mov cx, word [esi]
cmp cx, word [eax]
jne 0x5248b6
test cx, cx
je 0x5248b2
mov cx, word [esi + 2]
cmp cx, word [eax + 2]
jne 0x5248b6
add esi, 4
add eax, 4
test cx, cx
jne 0x524890
xor eax, eax
jmp 0x5248bb
sbb eax, eax
or eax, 1
test eax, eax
mov eax, 1
cmove edx, eax
mov dword [ebp - 0xad4], edx
push str.InstallConfig8
lea ecx, [ebp - 0xa10]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0xa10]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 8
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0xa10]
mov byte [ebp - 4], 0
mov esi, eax
call fcn.00402680
test esi, esi
je 0x52491a
cmp dword [esi + 0x14], 8
jb 0x524914
mov eax, dword [esi]
mov dword [ebp - 0xafc], eax
jmp 0x52491a
mov dword [ebp - 0xafc], esi
push str.InstallConfig9
lea ecx, [ebp - 0x980]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0x980]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 9
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0x980]
mov byte [ebp - 4], 0
mov esi, eax
call fcn.00402680
test esi, esi
je 0x524969
cmp dword [esi + 0x14], 8
jb 0x524963
mov eax, dword [esi]
mov dword [ebp - 0xaf8], eax
jmp 0x524969
mov dword [ebp - 0xaf8], esi
push str.InstallConfig10
lea ecx, [ebp - 0x998]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0x998]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 0xa
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0x998]
mov byte [ebp - 4], 0
mov esi, eax
call fcn.00402680
test esi, esi
je 0x5249b8
cmp dword [esi + 0x14], 8
jb 0x5249b2
mov eax, dword [esi]
mov dword [ebp - 0xae4], eax
jmp 0x5249b8
mov dword [ebp - 0xae4], esi
push str.InstallConfig11
lea ecx, [ebp - 0x9b0]
call fcn.004026c0
mov eax, dword [ebx]
lea ecx, [ebp - 0x9b0]
push ecx
mov ecx, ebx
mov byte [ebp - 4], 0xb
mov eax, dword [eax + 0x1c]
call eax
lea ecx, [ebp - 0x9b0]
mov byte [ebp - 4], 0
mov esi, eax
call fcn.00402680
test esi, esi
je 0x524a07
cmp dword [esi + 0x14], 8
jb 0x524a01
mov eax, dword [esi]
mov dword [ebp - 0xadc], eax
jmp 0x524a07
mov dword [ebp - 0xadc], esi
mov eax, dword [ebp - 0xaec]
xor ebx, ebx
test eax, eax
je 0x524a29
push eax
call fcn.00753669
mov ebx, eax
add esp, 4
test ebx, ebx
js 0x524a27
cmp ebx, 0xa
jle 0x524a29
xor ebx, ebx
push 0x8b08c8
lea ecx, [ebp - 0x908]
call fcn.004026c0
mov eax, dword [ebp - 0xae0]
mov byte [ebp - 4], 0xc
test eax, eax
je 0x524a53
push eax
lea ecx, [ebp - 0x908]
call fcn.004027d0
lea eax, [ebp - 0x878]
push eax
call fcn.00744688
add esp, 4
cmp dword [ebp - 0x868], 0
mov byte [ebp - 4], 0xd
jne 0x524a84
mov ecx, dword [ebp - 0xb00]
push str.AppDataPathError
call fcn.004026c0
jmp 0x52529c
push 0x8b08b4
lea ecx, [ebp - 0x878]
call fcn.004041d0
test edi, edi
je 0x524ab4
push edi
lea ecx, [ebp - 0x878]
call fcn.004041d0
push 0x8b08b4
lea ecx, [ebp - 0x878]
call fcn.004041d0
cmp dword [ebp - 0x864], 8
lea eax, [ebp - 0x878]
cmovae eax, dword [ebp - 0x878]
push eax
call fcn.00728ac0
add esp, 4
lea eax, [ebp - 0x878]
lea ecx, [ebp - 0x848]
push eax
call fcn.004042e0
push 0xffffffffffffffff
push 0
lea eax, [ebp - 0x908]
mov byte [ebp - 4], 0xe
push eax
lea ecx, [ebp - 0x848]
call fcn.004045f0
lea eax, [ebp - 0x878]
push eax
lea ecx, [ebp - 0x8c0]
call fcn.004042e0
push str.gmicon.ico
lea ecx, [ebp - 0x8c0]
mov byte [ebp - 4], 0xf
call fcn.004041d0
call fcn.00409640
mov ecx, eax
call fcn.004062e0
push eax
lea ecx, [ebp - 0xad0]
call fcn.004026c0
cmp dword [ebp - 0x834], 8
lea eax, [ebp - 0x848]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmovae eax, dword [ebp - 0x848]
push eax
mov byte [ebp - 4], 0x10
call esi
test eax, eax
je 0x525259
cmp dword [ebp - 0xae4], 0
je 0x524c20
lea eax, [ebp - 0x878]
push eax
lea ecx, [ebp - 0x920]
call fcn.004042e0
push dword [ebp - 0xae4]
lea ecx, [ebp - 0x920]
mov byte [ebp - 4], 0x11
call fcn.004041d0
push str.regsvr32.exe__s
lea ecx, [ebp - 0x8d8]
call fcn.004026c0
push 0x813adc
lea ecx, [ebp - 0x8d8]
mov byte [ebp - 4], 0x12
call fcn.004041d0
push 0xffffffffffffffff
push 0
lea eax, [ebp - 0x920]
push eax
lea ecx, [ebp - 0x8d8]
call fcn.004045f0
push 0x813adc
lea ecx, [ebp - 0x8d8]
call fcn.004041d0
cmp dword [ebp - 0x8c4], 8
lea eax, [ebp - 0x8d8]
push 0x7d0
cmovae eax, dword [ebp - 0x8d8]
push 1
push eax
call fcn.00729884
add esp, 0xc
lea ecx, [ebp - 0x8d8]
call fcn.00402680
lea ecx, [ebp - 0x920]
mov byte [ebp - 4], 0x10
call fcn.00402680
lea ecx, [ebp - 0x9f8]
call fcn.00523600
cmp dword [ebp - 0x8ac], 8
lea eax, [ebp - 0x8c0]
mov byte [ebp - 4], 0x13
cmovae eax, dword [ebp - 0x8c0]
push eax
call esi
sub esp, 0x18
mov ecx, esp
test eax, eax
je 0x524c5d
lea eax, [ebp - 0x8c0]
push eax
call fcn.004042e0
jmp 0x524c67
push str.GameIconNull
call fcn.004026c0
lea ecx, [ebp - 0x9f8]
call fcn.005244c0
mov ecx, dword [ebp - 0xafc]
mov esi, dword [ebp - 0xadc]
test ecx, ecx
je 0x524ca4
cmp dword [ebp - 0x834], 8
lea eax, [ebp - 0x848]
push esi
cmovae eax, dword [ebp - 0x848]
push ecx
push eax
lea ecx, [ebp - 0x9f8]
call fcn.00523a10
mov ecx, dword [ebp - 0xaf8]
test ecx, ecx
je 0x524cd0
cmp dword [ebp - 0x834], 8
lea eax, [ebp - 0x848]
push esi
cmovae eax, dword [ebp - 0x848]
push ecx
push eax
lea ecx, [ebp - 0x9f8]
call fcn.005237a0
mov esi, dword [ebp - 0xad8]
lea ecx, [ebp - 0x8a8]
push esi
call fcn.004026c0
mov byte [ebp - 4], 0x14
test esi, esi
je 0x525241
lea ecx, [ebp - 0xaf0]
xor esi, esi
call fcn.0073ae4b
push dword [ebp - 0xad8]
lea ecx, [ebp - 0xaf0]
mov byte [ebp - 4], 0x15
call fcn.0073d8d0
test eax, eax
je 0x524e23
cmp eax, 1
jne 0x524e0e
push dword [ebp - 0xad8]
lea eax, [ebp - 0x9c8]
push eax
lea ecx, [ebp - 0xaf0]
call fcn.0073d0a9
lea eax, [ebp - 0x9c8]
mov byte [ebp - 4], 0x16
push eax
lea eax, [ebp - 0x950]
push eax
call fcn.007373c3
lea eax, [ebp - 0x848]
mov byte [ebp - 4], 0x17
push eax
lea eax, [ebp - 0x968]
push eax
call fcn.007373c3
lea eax, [ebp - 0x950]
mov byte [ebp - 4], 0x18
push eax
call fcn.007371b7
lea eax, [ebp - 0x968]
push eax
call fcn.007371b7
lea eax, [ebp - 0x968]
push eax
lea eax, [ebp - 0x950]
push eax
call fcn.00524550
add esp, 0x20
mov ecx, 0x813ae0
test al, al
mov eax, 1
cmovne esi, eax
mov eax, edi
nop word [eax + eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x524dd6
test dx, dx
je 0x524dd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x524dd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x524db0
xor eax, eax
jmp 0x524ddb
sbb eax, eax
or eax, 1
test eax, eax
lea ecx, [ebp - 0x968]
mov eax, 1
cmove esi, eax
call fcn.00405ba0
lea ecx, [ebp - 0x950]
call fcn.00405ba0
lea ecx, [ebp - 0x9c8]
mov byte [ebp - 4], 0x15
call fcn.00402680
test esi, esi
jne 0x524e23
push str.ShotCutExist
lea ecx, [ebp - 0x8f0]
call fcn.004027d0
jmp 0x525124
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0074fc20
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0x218]
add esp, 0xc
push 0
push 0x19
push eax
push 0
call esi
test eax, eax
je 0x525124
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x860]
call fcn.004026c0
push 0x8b08b4
lea ecx, [ebp - 0x860]
mov byte [ebp - 4], 0x19
call fcn.004041d0
mov eax, dword [ebp - 0xae8]
test eax, eax
je 0x524ed5
push eax
push dword [ebp - 0xad8]
lea eax, [ebp - 0x938]
push eax
call fcn.00736bf9
add esp, 0xc
lea eax, [ebp - 0x938]
mov byte [ebp - 4], 0x1a
push eax
lea ecx, [ebp - 0x860]
call fcn.00404870
lea eax, [ebp - 0x938]
push eax
lea ecx, [ebp - 0x8a8]
call fcn.00404220
lea ecx, [ebp - 0x938]
mov byte [ebp - 4], 0x19
call fcn.00402680
jmp 0x524ee6
push dword [ebp - 0xad8]
lea ecx, [ebp - 0x860]
call fcn.004041d0
push str..lnk
lea ecx, [ebp - 0x860]
call fcn.004041d0
mov eax, 0x813ae0
nop dword [eax + eax]
mov cx, word [edi]
cmp cx, word [eax]
jne 0x524f26
test cx, cx
je 0x524f22
mov cx, word [edi + 2]
cmp cx, word [eax + 2]
jne 0x524f26
add edi, 4
add eax, 4
test cx, cx
jne 0x524f00
xor eax, eax
jmp 0x524f2b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x525076
mov eax, dword [ebp - 0xae8]
test eax, eax
je 0x525115
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x890]
call fcn.004026c0
push 0x8b08b4
lea ecx, [ebp - 0x890]
mov byte [ebp - 4], 0x1b
call fcn.004041d0
push dword [ebp - 0xad8]
lea ecx, [ebp - 0x890]
call fcn.004041d0
push str..lnk
lea ecx, [ebp - 0x890]
call fcn.004041d0
lea ecx, [ebp - 0x890]
call fcn.00402750
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call edi
test eax, eax
jne 0x525046
push eax
push 0x10
lea eax, [ebp - 0x218]
push eax
push 0
call esi
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x890]
call fcn.004027d0
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x860]
call fcn.004027d0
push 0x8b08b4
lea ecx, [ebp - 0x890]
call fcn.004041d0
push 0x8b08b4
lea ecx, [ebp - 0x860]
call fcn.004041d0
mov esi, dword [ebp - 0xad8]
lea ecx, [ebp - 0x890]
push esi
call fcn.004041d0
lea eax, [ebp - 0x8a8]
push eax
lea ecx, [ebp - 0x860]
call fcn.00404870
push esi
lea ecx, [ebp - 0x8a8]
call fcn.004027d0
push str..lnk
lea ecx, [ebp - 0x890]
call fcn.004041d0
push str..lnk
lea ecx, [ebp - 0x860]
call fcn.004041d0
lea ecx, [ebp - 0x860]
call fcn.00402750
push eax
lea ecx, [ebp - 0x890]
call fcn.00402750
push eax
call fcn.00757daf
add esp, 8
lea ecx, [ebp - 0x890]
call fcn.00402680
jmp 0x525115
lea ecx, [ebp - 0x8c0]
call fcn.00402750
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call edi
push dword [ebp - 0xadc]
push 0
push 0
push 1
test eax, eax
je 0x5250ca
lea ecx, [ebp - 0x8c0]
call fcn.00402750
push eax
push 0
lea ecx, [ebp - 0x848]
call fcn.00402750
push eax
lea ecx, [ebp - 0x860]
call fcn.00402750
push eax
call fcn.00741c85
add esp, 0x20
jmp 0x5250ec
push 0
lea ecx, [ebp - 0x848]
call fcn.00402750
push eax
lea ecx, [ebp - 0x860]
call fcn.00402750
push eax
call fcn.00741ea3
add esp, 0x1c
lea ecx, [ebp - 0x860]
call fcn.00402750
push eax
call edi
lea ecx, [ebp - 0x8f0]
test eax, eax
jne 0x52510b
push str.CreateShortCutFailed
jmp 0x525110
push str.CreateShortCutSuccess
call fcn.004027d0
lea ecx, [ebp - 0x860]
mov byte [ebp - 4], 0x15
call fcn.00402680
cmp dword [ebp - 0xad4], 0
je 0x525236
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.00743ba9
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x190
call esi
push 0x3e8
call esi
mov edi, dword [ebp - 0xaf4]
test edi, edi
je 0x5251ed
push edi
call fcn.007428f3
add esp, 4
test eax, eax
je 0x5251c1
push edi
call fcn.007437ae
add esp, 4
test eax, eax
je 0x525195
push ebx
push edi
lea ecx, [ebp - 0x8a8]
call fcn.00402750
push eax
call fcn.00743bde
add esp, 0xc
jmp 0x52522f
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.0074fc20
lea eax, [ebp - 0x628]
push 0x104
push eax
call fcn.00742944
lea eax, [ebp - 0x628]
jmp 0x525217
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.0074fc20
lea eax, [ebp - 0x420]
push 0x104
push eax
call fcn.00742944
lea eax, [ebp - 0x420]
jmp 0x525217
push 0x208
lea eax, [ebp - 0x830]
push 0
push eax
call fcn.0074fc20
lea eax, [ebp - 0x830]
push 0x104
push eax
call fcn.00742944
lea eax, [ebp - 0x830]
add esp, 0x14
lea ecx, [ebp - 0x8a8]
push eax
call fcn.00402750
push eax
call fcn.00742d03
add esp, 8
push 0x190
call esi
lea ecx, [ebp - 0xaf0]
call fcn.00402330
lea ecx, [ebp - 0x8a8]
call fcn.00402680
lea ecx, [ebp - 0x9f8]
call fcn.00414280
jmp 0x525269
push str.CompressFailed
lea ecx, [ebp - 0x8f0]
call fcn.004027d0
mov ecx, dword [ebp - 0xb00]
lea eax, [ebp - 0x8f0]
push eax
call fcn.00404890
lea ecx, [ebp - 0xad0]
call fcn.00402680
lea ecx, [ebp - 0x8c0]
call fcn.00402680
lea ecx, [ebp - 0x848]
call fcn.00402680
lea ecx, [ebp - 0x878]
call fcn.00402680
lea ecx, [ebp - 0x908]
call fcn.00402680
lea ecx, [ebp - 0x8f0]
call fcn.00402680
mov eax, dword [ebp - 0xb00]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.006e70bb
mov esp, ebp
pop ebp
ret 8