Function at 0x4d9ac4
Capabilities:
Check if file exists
Create directory
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x6b4
push ebx
push esi
push edi
xor ebx, ebx
push str.v3_check_and_download_begin
mov dword [esp + 0x78], ebx
call fcn.0049d036
lea ecx, [esp + 0x24]
mov dword [esp], 0x5d906c
call fcn.00409af0
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0xa8]
push eax
call fcn.004e840c
pop ecx
pop ecx
lea ecx, [esp + 0x20]
call fcn.00409b60
xor eax, eax
mov esi, 0x206
push esi
mov word [esp + 0x2b4], ax
lea eax, [esp + 0x2b6]
push ebx
push eax
call fcn.004fe380
add esp, 0xc
xor eax, eax
push esi
mov word [esp + 0x4bc], ax
lea eax, [esp + 0x4be]
push ebx
push eax
call fcn.004fe380
add esp, 0xc
push 1
push 0x1a
lea eax, [esp + 0x4c0]
push eax
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push str.360mobilemgr_supports
lea eax, [esp + 0x4bc]
push eax
lea eax, [esp + 0x2b8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [esp + 0x2b0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4d9b9c
push ebx
lea eax, [esp + 0x2b4]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea eax, [esp + 0x2b0]
push eax
lea ecx, [esp + 0x14c]
call fcn.0048dc40
push str.mauthorization.pkg
lea ecx, [esp + 0x114]
call fcn.0048dc40
lea eax, [esp + 0x2b0]
push eax
lea ecx, [esp + 0x24]
call fcn.0048dc40
lea eax, [esp + 0x20]
push eax
lea esi, [esp + 0x194]
call fcn.004dae3d
lea ecx, [esp + 0x20]
call fcn.00407f70
mov eax, esi
push eax
lea eax, [esp + 0x114]
call fcn.004dae91
lea esi, [esp + 0x14]
call fcn.00406670
lea eax, [esp + 0x180]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
lea esi, [esp + 0x1c]
call fcn.00406670
movzx eax, word [esp + 0x186]
push eax
movzx eax, word [esp + 0x186]
push eax
push str._02d_02d
mov edi, esi
call fcn.00407710
add esp, 0xc
lea esi, [esp + 0x18]
call fcn.00406670
push dword [esp + 0x1c]
mov edi, esi
push str.http:__intf.zsall.mobilem.360.cn_html_data_check_connect_im_v2.json_t_s
call fcn.00407710
pop ecx
pop ecx
push ebx
push 0x2710
lea eax, [esp + 0x1c]
push eax
push ecx
mov eax, esi
mov esi, esp
call fcn.00406690
call fcn.004a08c7
add esp, 0x10
test eax, eax
je 0x4d9d7a
push dword [esp + 0x14]
lea ecx, [esp + 0x130]
call fcn.00409af0
lea eax, [esp + 0x12c]
push eax
lea eax, [esp + 0x24]
push eax
call fcn.004e840c
cmp dword [esp + 0x40], 8
mov eax, dword [esp + 0x2c]
pop ecx
pop ecx
jae 0x4d9caf
lea eax, [esp + 0x24]
push eax
call fcn.0049d036
pop ecx
lea ecx, [esp + 0x20]
call fcn.00407f70
push ebx
lea esi, [esp + 0x94]
call fcn.004ac850
lea eax, [esp + 0x220]
push eax
call fcn.004afc30
mov eax, esi
push eax
lea eax, [esp + 0x130]
lea edi, [esp + 0x224]
call fcn.004afcf0
test al, al
je 0x4d9d56
cmp byte [esp + 0x98], 7
jne 0x4d9d56
mov eax, dword [esp + 0x68]
mov edi, 0xffffff01
and eax, edi
or eax, 1
mov dword [esp + 0x68], eax
lea eax, [esp + 0x60]
push eax
mov eax, str.errno
lea esi, [esp + 0xe4]
lea ecx, [esp + 0x94]
mov dword [esp + 0x70], ebx
mov dword [esp + 0x64], ebx
call fcn.004ad940
lea ecx, [esp + 0x60]
call fcn.004acb90
cmp byte [esp + 0xe8], bl
jne 0x4d9dda
lea ecx, [esp + 0xe0]
call fcn.004acb90
lea edi, [esp + 0x220]
call fcn.00411db0
lea ecx, [esp + 0x90]
call fcn.004acb90
lea ecx, [esp + 0x12c]
call fcn.00409b60
lea ecx, [esp + 0x18]
call fcn.00406760
lea ecx, [esp + 0x1c]
call fcn.00406760
lea eax, [esp + 0x14]
call fcn.004b8a70
lea esi, [esp + 0x190]
call fcn.004da601
lea ecx, [esp + 0x110]
call fcn.00407f70
lea ecx, [esp + 0x148]
call fcn.00407f70
lea ecx, [esp + 0xa4]
call fcn.00407f70
push str.v3_check_and_download_end
call fcn.0049d036
or eax, 0xffffffff
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [esp + 0xe8], 4
lea ecx, [esp + 0xe0]
jne 0x4d9e16
lea esi, [esp + 0x20]
call fcn.004accc0
cmp dword [eax + 0x18], 0x10
jb 0x4d9dff
mov eax, dword [eax + 4]
jmp 0x4d9e02
add eax, 4
push eax
call fcn.004f8ab7
pop ecx
lea ecx, [esp + 0x20]
mov esi, eax
call fcn.00409b60
jmp 0x4d9e1d
call fcn.004acdf0
mov esi, eax
cmp esi, ebx
jne 0x4d9d4a
mov eax, dword [esp + 0x48]
and eax, edi
or eax, 1
mov dword [esp + 0x48], eax
lea eax, [esp + 0x40]
push eax
mov eax, str.data
lea esi, [esp + 0x64]
lea ecx, [esp + 0x94]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x44], ebx
call fcn.004ad940
lea ecx, [esp + 0x40]
call fcn.004acb90
cmp byte [esp + 0x68], 7
je 0x4d9f00
or ebx, 0xffffffff
lea ecx, [esp + 0x60]
call fcn.004acb90
lea ecx, [esp + 0xe0]
call fcn.004acb90
lea edi, [esp + 0x220]
call fcn.00411db0
lea ecx, [esp + 0x90]
call fcn.004acb90
lea ecx, [esp + 0x12c]
call fcn.00409b60
lea ecx, [esp + 0x18]
call fcn.00406760
lea ecx, [esp + 0x1c]
call fcn.00406760
lea eax, [esp + 0x14]
call fcn.004b8a70
lea esi, [esp + 0x190]
call fcn.004da601
lea ecx, [esp + 0x110]
call fcn.00407f70
lea ecx, [esp + 0x148]
call fcn.00407f70
lea ecx, [esp + 0xa4]
call fcn.00407f70
push str.v3_check_and_download_end
call fcn.0049d036
mov eax, ebx
jmp 0x4d9dd2
mov eax, dword [esp + 0x48]
and eax, edi
or eax, 1
mov dword [esp + 0x48], eax
lea eax, [esp + 0x40]
push eax
mov eax, str.enabled
lea esi, [esp + 0x54]
lea ecx, [esp + 0x64]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x44], ebx
call fcn.004ad940
lea ecx, [esp + 0x40]
call fcn.004acb90
cmp byte [esp + 0x58], bl
jne 0x4d9f4c
lea ecx, [esp + 0x50]
call fcn.004acb90
push 0xfffffffffffffffe
pop ebx
jmp 0x4d9e6b
cmp byte [esp + 0x58], 4
lea ecx, [esp + 0x50]
jne 0x4d9f87
lea esi, [esp + 0x20]
call fcn.004accc0
cmp dword [eax + 0x18], 0x10
jb 0x4d9f6b
mov eax, dword [eax + 4]
jmp 0x4d9f6e
add eax, 4
push eax
call fcn.004f8ab7
pop ecx
test eax, eax
lea ecx, [esp + 0x20]
setne byte [esp + 0xf]
call fcn.00409b60
jmp 0x4d9f93
call fcn.004acdf0
test eax, eax
setne byte [esp + 0xf]
cmp byte [esp + 0xf], bl
je 0x4d9f3b
mov eax, dword [esp + 0x48]
and eax, edi
or eax, 1
mov dword [esp + 0x48], eax
lea eax, [esp + 0x40]
push eax
mov eax, str.version
lea esi, [esp + 0x7c]
lea ecx, [esp + 0x64]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x44], ebx
call fcn.004ad940
lea ecx, [esp + 0x40]
call fcn.004acb90
cmp byte [esp + 0x80], bl
jne 0x4d9fee
lea ecx, [esp + 0x78]
call fcn.004acb90
lea ecx, [esp + 0x50]
call fcn.004acb90
jmp 0x4d9e6b
cmp byte [esp + 0x80], 4
lea ecx, [esp + 0x78]
jne 0x4da02c
lea esi, [esp + 0x20]
call fcn.004accc0
cmp dword [eax + 0x18], 0x10
jb 0x4da010
mov eax, dword [eax + 4]
jmp 0x4da013
add eax, 4
push eax
call fcn.004f8ab7
pop ecx
lea ecx, [esp + 0x20]
mov dword [esp + 0x8c], eax
call fcn.00409b60
jmp 0x4da038
call fcn.004acdf0
mov dword [esp + 0x8c], eax
push 0x5d906c
lea esi, [esp + 0xc4]
call fcn.004ac960
mov eax, esi
push eax
mov eax, 0x5d93e8
lea esi, [esp + 0x44]
lea ecx, [esp + 0x64]
call fcn.004ad940
lea ecx, [esp + 0xc0]
call fcn.004acb90
cmp byte [esp + 0x48], bl
jne 0x4da090
lea ecx, [esp + 0x40]
call fcn.004acb90
lea ecx, [esp + 0x78]
call fcn.004acb90
lea ecx, [esp + 0x50]
call fcn.004acb90
jmp 0x4d9e68
lea esi, [esp + 0x10]
call fcn.00406670
cmp byte [esp + 0x48], 4
jne 0x4da12c
lea esi, [esp + 0x20]
lea ecx, [esp + 0x40]
call fcn.004accc0
cmp dword [eax + 0x18], 0x10
jb 0x4da0bc
mov eax, dword [eax + 4]
jmp 0x4da0bf
add eax, 4
lea ecx, [esp + 0xc0]
push ecx
mov ebx, eax
call fcn.0041a110
mov edi, dword [esp + 0x14]
pop ecx
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [edi - 0x10]
cmp eax, esi
je 0x4da113
cmp dword [esi + 0xc], 0
jl 0x4da102
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4da102
call fcn.004073f0
mov ebx, eax
mov eax, esi
call fcn.00403930
lea edi, [ebx + 0x10]
mov dword [esp + 0x10], edi
jmp 0x4da113
mov ebx, dword [ecx - 0xc]
push ecx
lea eax, [esp + 0x14]
call fcn.004072f0
mov edi, dword [esp + 0x10]
lea ecx, [esp + 0xc0]
call fcn.00406760
lea ecx, [esp + 0x20]
call fcn.00409b60
xor ebx, ebx
jmp 0x4da130
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x8c]
cmp eax, dword [ebp + 8]
jg 0x4da153
lea ecx, [esp + 0x10]
call fcn.00406760
lea ecx, [esp + 0x40]
call fcn.004acb90
jmp 0x4d9fd7
cmp dword [edi - 0xc], ebx
je 0x4da18f
lea eax, [esp + 0x190]
push eax
lea ecx, [esp + 0x24]
mov dword [esp + 0x78], 1
call fcn.0042cbe0
cmp dword [esp + 0x38], 8
mov eax, dword [esp + 0x24]
jae 0x4da180
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4da18f
mov bl, 1
jmp 0x4da191
xor bl, bl
test byte [esp + 0x74], 1
je 0x4da1a1
lea ecx, [esp + 0x20]
call fcn.00407f70
test bl, bl
je 0x4da233
lea eax, [esp + 0x190]
push eax
lea ecx, [esp + 0x24]
call fcn.0042cbe0
cmp dword [esp + 0x38], 8
mov ecx, dword [esp + 0x24]
jae 0x4da1c9
lea ecx, [esp + 0x24]
push ecx
push esp
call fcn.004066b0
lea eax, [esp + 0xc4]
push eax
call fcn.0049c799
pop ecx
pop ecx
push eax
mov ecx, edi
call fcn.00406810
mov ebx, eax
neg ebx
sbb bl, bl
lea ecx, [esp + 0xc0]
inc bl
call fcn.00406760
lea ecx, [esp + 0x20]
call fcn.00407f70
test bl, bl
je 0x4da233
lea ecx, [esp + 0x10]
call fcn.00406760
lea ecx, [esp + 0x40]
call fcn.004acb90
lea ecx, [esp + 0x78]
call fcn.004acb90
lea ecx, [esp + 0x50]
call fcn.004acb90
xor ebx, ebx
jmp 0x4d9e6b
push 0x5d906c
lea esi, [esp + 0xc4]
call fcn.004ac960
mov eax, esi
push eax
mov eax, 0x5d93d4
lea esi, [esp + 0x24]
lea ecx, [esp + 0x64]
call fcn.004ad940
lea esi, [esp + 0x164]
mov ecx, eax
call fcn.004accc0
lea ecx, [esp + 0x20]
call fcn.004acb90
lea ecx, [esp + 0xc0]
call fcn.004acb90
xor ebx, ebx
cmp dword [esp + 0x178], ebx
je 0x4da2b3
mov eax, esi
push eax
lea eax, [esp + 0x24]
push eax
call fcn.004e847d
pop ecx
pop ecx
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0xb0]
call fcn.0042d910
lea ecx, [esp + 0x20]
call fcn.00407f70
push 0x5d8494
lea ecx, [esp + 0x24]
call fcn.0048dc40
lea eax, [esp + 0xa4]
push eax
lea ecx, [esp + 0x24]
lea esi, [esp + 0xc4]
call fcn.004e805f
pop ecx
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0xb0]
call fcn.0042d910
mov ecx, esi
call fcn.00407f70
lea ecx, [esp + 0x20]
call fcn.00407f70
cmp dword [esp + 0xbc], 8
mov eax, dword [esp + 0xa8]
jae 0x4da312
lea eax, [esp + 0xa8]
push eax
call fcn.0049d036
pop ecx
lea eax, [esp + 0x190]
push eax
lea ecx, [esp + 0x24]
call fcn.0042cbe0
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0xf8]
call fcn.0042cbe0
lea ecx, [esp + 0x20]
call fcn.00407f70
push str..tmp
lea ecx, [esp + 0xf8]
call fcn.0049dc66
cmp dword [esp + 0xb8], ebx
je 0x4da406
cmp dword [esp + 0x10c], 8
mov ecx, dword [esp + 0xf8]
jae 0x4da37a
lea ecx, [esp + 0xf8]
cmp dword [esp + 0xbc], 8
mov esi, dword [esp + 0xa8]
jae 0x4da392
lea esi, [esp + 0xa8]
push 0xea60
push ecx
push esp
call fcn.004066b0
push ecx
push esp
lea ecx, [esp + 0x2c0]
call fcn.004066b0
push ecx
push esp
mov ecx, esi
call fcn.004066b0
call fcn.004a0813
add esp, 0x10
test eax, eax
jne 0x4da406
cmp dword [esp + 0x10c], 8
mov eax, dword [esp + 0xf8]
jae 0x4da3d9
lea eax, [esp + 0xf8]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [esp + 0xf4]
call fcn.00407f70
lea ecx, [esp + 0x164]
call fcn.00409b60
lea ecx, [esp + 0x10]
call fcn.00406760
jmp 0x4da070
push str.download_ok_
call fcn.0049d036
pop ecx
lea eax, [esp + 0x190]
push eax
lea ecx, [esp + 0x24]
call fcn.0042cbe0
cmp dword [esp + 0x38], 8
mov eax, dword [esp + 0x24]
jae 0x4da431
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [esp + 0x20]
call fcn.00407f70
lea eax, [esp + 0x190]
push eax
lea ecx, [esp + 0x24]
call fcn.0042cbe0
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0xf8]
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.004e8525
mov bl, byte [eax + 4]
mov byte [eax + 5], 1
add esp, 0xc
lea ecx, [esp + 0x20]
mov dword [esp + 0xc0], vtable.itdtk::object::ErrorCode_bool_.0
call fcn.00407f70
test bl, bl
je 0x4da530
cmp dword [edi - 0xc], 0
je 0x4da530
lea eax, [esp + 0x190]
push eax
lea ecx, [esp + 0x24]
call fcn.0042cbe0
cmp dword [esp + 0x38], 8
mov ecx, dword [esp + 0x24]
jae 0x4da4bc
lea ecx, [esp + 0x24]
push ecx
push esp
call fcn.004066b0
lea eax, [esp + 0xc4]
push eax
call fcn.0049c799
pop ecx
pop ecx
push eax
mov ecx, edi
call fcn.00406810
test eax, eax
lea ecx, [esp + 0xc0]
setne bl
call fcn.00406760
lea ecx, [esp + 0x20]
call fcn.00407f70
test bl, bl
je 0x4da530
lea ecx, [esp + 0xf4]
call fcn.00407f70
lea ecx, [esp + 0x164]
call fcn.00409b60
lea ecx, [esp + 0x10]
call fcn.00406760
lea ecx, [esp + 0x40]
call fcn.004acb90
lea ecx, [esp + 0x78]
call fcn.004acb90
jmp 0x4d9f3b
lea ecx, [esp + 0xf4]
call fcn.00407f70
lea ecx, [esp + 0x164]
call fcn.00409b60
lea ecx, [esp + 0x10]
call fcn.00406760
lea ecx, [esp + 0x40]
call fcn.004acb90
lea ecx, [esp + 0x78]
call fcn.004acb90
lea ecx, [esp + 0x50]
call fcn.004acb90
lea ecx, [esp + 0x60]
call fcn.004acb90
lea ecx, [esp + 0xe0]
call fcn.004acb90
lea edi, [esp + 0x220]
call fcn.00411db0
lea ecx, [esp + 0x90]
call fcn.004acb90
lea ecx, [esp + 0x12c]
call fcn.00409b60
lea ecx, [esp + 0x18]
call fcn.00406760
lea ecx, [esp + 0x1c]
call fcn.00406760
lea eax, [esp + 0x14]
call fcn.004b8a70
lea esi, [esp + 0x190]
call fcn.004da601
lea ecx, [esp + 0x110]
call fcn.00407f70
lea ecx, [esp + 0x148]
call fcn.00407f70
lea ecx, [esp + 0xa4]
call fcn.00407f70
push str.v3_check_and_download_end
call fcn.0049d036
xor eax, eax
jmp 0x4d9dd2