Function at 0x407ca0
Capabilities:
Create directory
Get disk size
Read data from internet
Receive data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x456148
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x103c
call fcn.004205b0
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
test ebx, ebx
mov dword [ebp - 0x10], esp
mov esi, ecx
je 0x4080f4
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4080f4
mov ecx, 0x400
xor eax, eax
lea edi, [ebp - 0x104c]
rep stosd dword es:[edi], eax
mov eax, dword [0x470a10]
mov dword [ebp - 0x14], eax
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0
call fcn.0043f220
mov ecx, esi
call fcn.00407b40
test eax, eax
jne 0x407d39
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.0043f295
mov eax, 0x12
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push ebx
lea ecx, [ebp - 0x14]
call fcn.0043f41e
push str.update.zip
push str.update.ini
lea ecx, [ebp - 0x14]
call fcn.00435aae
lea ecx, [ebp - 0x14]
push ecx
mov ecx, esi
call fcn.00407b90
mov ebx, eax
test ebx, ebx
mov dword [ebp - 0x3c], ebx
jne 0x407d8f
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.0043f295
mov eax, 0x12
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push ebx
mov ecx, esi
call fcn.00407c40
test eax, eax
jg 0x407dd3
mov edx, dword [ebp - 0x14]
push edx
push str._Error__URL_Path_:__s
call fcn.00404400
add esp, 8
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.0043f295
mov eax, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [0x470a10]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], eax
mov edi, dword [ebp + 0xc]
lea eax, [ebp - 0x18]
push edi
push 0x46d128
push eax
mov byte [ebp - 4], 2
call fcn.0043620d
mov ecx, dword [ebp - 0x18]
add esp, 0xc
xor esi, esi
mov eax, dword [ecx - 8]
test eax, eax
jle 0x407e70
lea edi, [esi + 1]
lea edx, [ebp - 0x24]
push edi
push edx
lea ecx, [ebp - 0x18]
call fcn.00435d97
mov eax, dword [eax]
lea ecx, [ebp - 0x1c]
push eax
push 0x46d128
push ecx
mov byte [ebp - 4], 3
call fcn.0043620d
add esp, 0xc
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call fcn.0043f295
mov edx, dword [ebp - 0x18]
cmp byte [esi + edx], 0x5c
jne 0x407e63
mov eax, dword [ebp - 0x1c]
push 0
push eax
call fcn.0041ffcf
add esp, 8
cmp eax, 0xffffffff
jne 0x407e63
mov ecx, dword [ebp - 0x1c]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x407ed9
mov edx, dword [ebp - 0x18]
mov esi, edi
cmp esi, dword [edx - 8]
jl 0x407e03
mov edi, dword [ebp + 0xc]
lea ecx, [ebp - 0x38]
call fcn.004405ce
push 0
push 0x1001
push edi
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 4
call fcn.00440780
test eax, eax
jne 0x407f29
push str._Error__File_Open_Failed
call fcn.00404400
add esp, 4
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 2
call fcn.004406c3
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 1
call fcn.0043f295
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0
call fcn.0043f295
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.0043f295
jmp 0x408101
mov eax, dword [ebp - 0x1c]
push eax
push str._Error__DownloadINI_Rountine_:_Cant_Create_Directory___s__
call fcn.00404400
add esp, 8
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 1
call fcn.0043f295
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0
call fcn.0043f295
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.0043f295
mov eax, 3
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 0
push 0
lea ecx, [ebp + 8]
push 0
push ecx
push edi
call fcn.004205df
mov esi, dword [sym.imp.WININET.dll_InternetReadFile]
mov edi, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
add esp, 0x14
lea edx, [ebp - 0x20]
lea eax, [ebp - 0x104c]
push edx
push 0x1000
push eax
push ebx
call esi
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x40801b
lea ecx, [ebp - 0x4c]
push 0
lea edx, [ebp - 0x28]
push ecx
lea eax, [ebp + 8]
push edx
push eax
call edi
mov eax, dword [ebp - 0x24]
test eax, eax
ja 0x407fe5
jb 0x407f88
cmp dword [ebp - 0x28], 0x1000
jae 0x407fe5
mov ecx, dword [0x470a10]
mov dword [ebp + 0xc], ecx
movsx edx, byte [ebp + 8]
push edx
lea eax, [ebp + 0xc]
push 0x8b
push eax
mov byte [ebp - 4], 5
call fcn.00436220
mov ecx, dword [ebp + 0xc]
add esp, 0xc
push 0
push 0
push ecx
call fcn.00446361
lea ecx, [ebp - 0x38]
call fcn.0044099b
push ebx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
push str._Error__Hard_Disk_Full._INI_File_Write_Failed
call fcn.00404400
add esp, 4
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 4
call fcn.0043f295
jmp 0x4080a9
lea ecx, [ebp - 0x44]
call fcn.0044054d
mov edx, dword [ebp - 0x20]
lea eax, [ebp - 0x104c]
push edx
push eax
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 7
call fcn.004408d7
mov dword [ebp - 4], 4
call fcn.0044058b
mov eax, dword [ebp - 0x20]
test eax, eax
jne 0x407f48
lea ecx, [ebp - 0x38]
call fcn.0044099b
push ebx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 2
call fcn.004406c3
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 1
call fcn.0043f295
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0
call fcn.0043f295
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.0043f295
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 2
call fcn.004406c3
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 1
call fcn.0043f295
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0
call fcn.0043f295
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.0043f295
mov eax, 0x11
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push str._Error__INI_File_URL_Not_Good
call fcn.00404400
add esp, 4
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8