Function at 0x478400
Capabilities:
Delete file
Hash data with md5
Move file
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x641dfe
mov eax, dword fs:[0]
push eax
sub esp, 0x138
mov eax, dword [0x6bc858]
xor eax, esp
mov dword [esp + 0x130], eax
push ebx
push esi
push edi
mov eax, dword [0x6bc858]
xor eax, esp
push eax
lea eax, [esp + 0x148]
mov dword fs:[0], eax
mov ebx, ecx
xor edi, edi
mov dword [esp + 0x1c], ebx
cmp dword [ebx + 8], edi
je 0x478789
mov eax, dword [ebx + 0x18c]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [ebx + 0x18c], edi
cmp dword [ebx + 0xc], edi
je 0x478473
or eax, 0xffffffff
jmp 0x478791
cmp eax, edi
jne 0x478789
add ebx, 0x19c
push str..down
lea ecx, [esp + 0x30]
push ebx
push ecx
mov dword [esp + 0x34], ebx
call fcn.0041d670
add esp, 0xc
mov dword [esp + 0x150], edi
cmp dword [ebx + 0x18], 0x10
jb 0x4784b1
mov eax, dword [ebx + 4]
lea esi, [ebx + 4]
mov dword [esp + 0x14], esi
jmp 0x4784ba
lea eax, [ebx + 4]
mov dword [esp + 0x14], eax
mov esi, eax
cmp eax, edi
jne 0x4784c5
call fcn.004c35a0
jmp 0x4784cf
push edi
push eax
call fcn.005fc7e0
add esp, 8
cmp eax, edi
mov edi, 0x10
je 0x4784ea
cmp dword [ebx + 0x18], edi
jb 0x4784e1
mov eax, dword [esi]
jmp 0x4784e3
mov eax, esi
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp dword [ebx + 0x18], edi
jb 0x4784f3
mov eax, dword [esi]
jmp 0x4784f5
mov eax, esi
mov ecx, dword [esp + 0x30]
cmp dword [esp + 0x44], edi
jae 0x478503
lea ecx, [esp + 0x30]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileA]
push str..temp
lea edx, [esp + 0xe0]
push ebx
push edx
call fcn.0041d670
add esp, 0xc
mov esi, eax
lea edi, [esp + 0x2c]
mov byte [esp + 0x150], 1
call fcn.00419940
lea ecx, [esp + 0xdc]
mov byte [esp + 0x150], 0
call fcn.00412410
mov eax, dword [esp + 0x30]
mov esi, 0x10
cmp dword [esp + 0x44], esi
jae 0x47855b
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
xor eax, eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0xd4], 0
mov dword [esp + 0x6c], 0x67452301
mov dword [esp + 0x70], 0xefcdab89
mov dword [esp + 0x74], 0x98badcfe
mov dword [esp + 0x78], 0x10325476
cmp dword [ebx + 0x18], esi
jb 0x4785a2
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x70]
call fcn.004cd3e0
lea edi, [esp + 0x4c]
lea eax, [esp + 0x6c]
call fcn.004ce010
mov byte [esp + 0x150], 2
call fcn.004d1540
push 0xffffffffffffffff
push 0
push eax
mov ecx, edi
call fcn.004126e0
push 0x3f
lea ecx, [esp + 0x101]
push 0
push ecx
mov byte [esp + 0x108], 0
call fcn.005ff630
mov edi, dword [esp + 0x28]
add esp, 0xc
lea eax, [edi + 0x204]
mov dword [esp + 0x18], eax
cmp dword [edi + 0x218], esi
jb 0x478606
mov eax, dword [eax]
push eax
push 0x40
lea edx, [esp + 0x104]
push edx
push 0x6745b6
push str.host_md5
push str.update
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [esp + 0xfc]
add edi, 0x1c0
push eax
mov ecx, edi
call fcn.004124a0
call fcn.004d1540
push 0xffffffffffffffff
push 0
push eax
mov ecx, edi
call fcn.004126e0
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x64], esi
jae 0x47865a
lea eax, [esp + 0x50]
push eax
push str.CUpdate::_Finish___LocalMd5:__s__r_n
lea eax, [esp + 0x28]
mov dword [esp + 0x28], str.Update.cpp
mov dword [esp + 0x2c], 0x8d
call fcn.0041d7b0
add esp, 8
lea ebx, [edi + 4]
cmp dword [edi + 0x18], esi
jb 0x478688
mov eax, dword [ebx]
jmp 0x47868a
mov eax, ebx
push eax
push str.CUpdate::_Finish___HostMd5_:__s__r_n
lea eax, [esp + 0x28]
mov dword [esp + 0x28], str.Update.cpp
mov dword [esp + 0x2c], 0x8e
call fcn.0041d7b0
mov eax, dword [edi + 0x14]
add esp, 8
cmp dword [edi + 0x18], esi
jb 0x4786b6
mov ebx, dword [ebx]
push ebx
mov edi, eax
mov eax, dword [esp + 0x64]
lea ebx, [esp + 0x50]
call fcn.004127d0
test eax, eax
jne 0x478741
mov esi, dword [esp + 0x1c]
cmp dword [esi + 0x218], 0x10
mov ebx, dword [esp + 0x18]
jb 0x4786df
mov eax, dword [ebx]
jmp 0x4786e3
mov eax, dword [esp + 0x18]
mov edi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push eax
push 0x675d18
push str.download_finish
push str.update
call edi
cmp dword [esi + 0x218], 0x10
jb 0x478708
mov eax, dword [ebx]
jmp 0x47870a
mov eax, ebx
push eax
push 0x686e68
push str.install_finish
push str.update
call edi
mov ecx, dword [0x6c4df0]
push 4
push str.over
add ecx, 0x6c
call fcn.00412c10
cmp dword [0x6c4df0], 0
je 0x47875e
call fcn.00490be0
jmp 0x47875e
mov ecx, dword [esp + 0x28]
cmp dword [ecx + 0x18], 0x10
jb 0x478753
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
jmp 0x478757
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea ecx, [esp + 0x4c]
mov byte [esp + 0x150], 0
call fcn.00412410
lea ecx, [esp + 0x2c]
mov dword [esp + 0x150], 0xffffffff
call fcn.00412410
mov ebx, dword [esp + 0x1c]
xor edi, edi
mov dword [ebx + 0x190], edi
xor eax, eax
mov ecx, dword [esp + 0x148]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x130]
xor ecx, esp
call fcn.005f0da0
mov esp, ebp
pop ebp
ret