Function at 0x428e40
Capabilities:
Check if file exists
Copy file
Delete file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4a1ed7
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2c78
call fcn.00484be0
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4c86e0]
xor eax, esp
push eax
lea eax, [esp + 0x2c90]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x3c], edi
xor eax, eax
xor ebp, ebp
mov dword [esp + 0x44], ebp
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
call fcn.00463420
mov eax, dword [eax + 8]
lea ecx, [esp + 0x44]
push ecx
push str.32770
push eax
call dword [sym.imp.USER32.dll_GetClassInfoA]
push 5
mov dword [esp + 0x6c], 0x4af284
call dword [sym.imp.GDI32.dll_GetStockObject]
lea edx, [esp + 0x44]
push edx
mov dword [esp + 0x64], eax
mov dword [esp + 0x5c], ebp
call fcn.00460170
lea eax, [esp + 0x44]
push eax
mov dword [esp + 0x6c], str.QCBoxContainer
call fcn.00460170
lea ecx, [esp + 0x44]
push ecx
mov dword [esp + 0x6c], str.Skycn_Main_Class
call fcn.00460170
lea edx, [esp + 0x6c]
push edx
mov dword [esp + 0x70], 8
mov dword [esp + 0x74], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
push ebp
lea eax, [esp + 0x78]
push eax
lea ecx, [edi + 0xa4]
mov ebx, 1
push ecx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebp
mov dword [esp + 0x88], ebp
mov dword [esp + 0x8c], ebp
call sub.gdiplus.dll_GdiplusStartup
mov ecx, edi
call fcn.00470d70
call fcn.004299e0
test eax, eax
jne 0x42959f
push 0x40fc80
call dword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
push 8
call fcn.00459aee
add esp, 4
cmp eax, ebp
je 0x428f8f
mov dword [eax], vtable.CImpIDispatch.0
mov dword [eax + 4], ebp
jmp 0x428f91
xor eax, eax
push 4
mov dword [edi + 0xa8], eax
mov dword [0x4cf960], eax
call fcn.00471934
cmp eax, ebp
je 0x428faf
mov dword [eax], vtable.CCustomOccManager.0
jmp 0x428fb1
xor eax, eax
push eax
call fcn.0046f61e
mov edx, dword [edi + 0x48]
add esp, 4
cmp edx, ebp
jne 0x428fc5
xor eax, eax
jmp 0x428fdb
mov eax, edx
lea esi, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x428fd0
sub eax, esi
push eax
push edx
mov ecx, 0x4cfec0
call fcn.00401c60
push 0x4af2b8
mov ecx, edi
call fcn.0046ec14
call fcn.00461729
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x42900d
push 0x80004005
call fcn.00401fb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
lea esi, [esp + 0x18]
mov dword [esp + 0x2c98], ebp
call fcn.00445180
mov byte [esp + 0x2c98], bl
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x30]
push str._scache
push edx
call fcn.00402a20
mov byte [esp + 0x2ca4], 0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x429071
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00445580
add esp, 4
call fcn.00461729
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x429098
push 0x80004005
call fcn.00401fb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
lea esi, [esp + 0x18]
mov byte [esp + 0x2c98], 2
call fcn.00445180
mov byte [esp + 0x2c98], 3
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x28]
push str._sLog
push edx
call fcn.00402a20
mov byte [esp + 0x2ca4], 2
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4290fe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x24]
push ecx
call fcn.00445580
add esp, 4
call fcn.00461729
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x429125
push 0x80004005
call fcn.00401fb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
lea esi, [esp + 0x18]
mov byte [esp + 0x2c98], 4
call fcn.00445180
mov byte [esp + 0x2c98], 5
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x2c]
push str._sUpdate
push edx
call fcn.00402a20
mov byte [esp + 0x2ca4], 4
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42918b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x28]
push ecx
call fcn.00445580
add esp, 4
call fcn.00461729
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x4291b2
push 0x80004005
call fcn.00401fb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
lea esi, [esp + 0x18]
mov byte [esp + 0x2c98], 6
call fcn.00445180
mov byte [esp + 0x2c98], 7
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x20]
push str._sdata
push edx
call fcn.00402a20
mov byte [esp + 0x2ca4], 6
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x429218
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.00445580
add esp, 4
push 9
push str.data.dat
lea ecx, [esp + 0x24]
call fcn.004063a0
call dword [0x4c99c8]
mov eax, dword [esp + 0x1c]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x38], esp
mov esi, esp
push eax
mov dword [esp + 0x3c], eax
call fcn.00402840
lea edx, [esp + 0x38]
add esp, 4
add eax, 0x10
push edx
mov dword [esi], eax
call fcn.00404220
add esp, 8
mov byte [esp + 0x2c98], 8
call fcn.00461729
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x42928a
push 0x80004005
call fcn.00401fb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x2c98], 9
mov ecx, dword [esp + 0x30]
push 0x4d07b8
push ecx
call sub.sqlite3.dll_sqlite3_open
add esp, 8
cmp eax, ebp
je 0x4292e2
mov edx, dword [0x4d07b8]
push edx
call sub.sqlite3.dll_sqlite3_errmsg
add esp, 4
push eax
lea eax, [esp + 0x1c]
push str.Could_not_open_database:__s
push eax
call fcn.00402a20
add esp, 0xc
mov dword [0x4d07b8], ebp
jmp 0x4292ec
mov ecx, 0x4d0790
call fcn.00438f50
call fcn.00461729
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x429306
push 0x80004005
call fcn.00401fb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x38], eax
lea esi, [esp + 0x20]
mov byte [esp + 0x2c98], 0xa
call fcn.00445180
mov byte [esp + 0x2c98], 0xb
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x3c]
push str._sdatadata.tmp
push edx
call fcn.00402a20
mov byte [esp + 0x2ca4], 0xa
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42936c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.00461729
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x429386
push 0x80004005
call fcn.00401fb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov bl, 0xc
lea esi, [esp + 0x40]
mov byte [esp + 0x2c98], bl
call fcn.00445180
mov byte [esp + 0x2c98], 0xd
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x24]
push str._sdatadata.dll
push edx
call fcn.00402a20
mov byte [esp + 0x2ca4], bl
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4293ec
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x38]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
mov esi, dword [esp + 0x20]
je 0x429417
mov ebp, dword [sym.imp.KERNEL32.dll_DeleteFileA]
push esi
call ebp
push 0
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push edi
call ebp
xor ebp, ebp
lea ecx, [esp + 0x84]
push ecx
call fcn.0042a380
mov eax, dword [esp + 0x3c]
lea edx, [esp + 0x84]
mov byte [esp + 0x2c98], 0xe
mov ecx, edx
mov dword [esp + 0x2c18], ebp
mov dword [esp + 0xabc], 0x4d2000
mov dword [eax + 0x20], edx
call fcn.0045a951
lea ecx, [esp + 0x84]
push ecx
mov byte [esp + 0x2c9c], bl
call fcn.004295c0
lea eax, [esi - 0x10]
mov byte [esp + 0x2c98], 0xa
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42948b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [esp + 0x2c98], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4294af
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c98], 8
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4294d7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c98], 6
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4294ff
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
mov byte [esp + 0x2c98], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x429524
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c98], 2
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42954c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c98], 0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x429574
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x2c98], 0xffffffff
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42959f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x2c90]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret