Function at 0x404620
Capabilities:
Check if file exists
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a39cf
mov eax, dword fs:[0]
push eax
sub esp, 0x888
mov eax, dword [0x630198]
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 esi, ecx
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0x894], eax
mov eax, dword [ebp + 0x28]
mov dword [ebp - 0x890], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x88c], eax
xor ecx, ecx
mov dword [ebp - 4], 0
push 0xffffffffffffffff
push ecx
lea eax, [esi + 4]
mov word [ebp - 0x828], cx
push eax
lea ecx, [ebp - 0x828]
mov dword [ebp - 0x814], 7
mov dword [ebp - 0x818], 0
call fcn.00401ff0
cmp dword [ebp + 8], 0
mov byte [ebp - 4], 1
je 0x4046c2
lea eax, [esi + 0x1c]
lea ecx, [ebp - 0x828]
cmp ecx, eax
je 0x4046c2
push 0xffffffffffffffff
push 0
push eax
call fcn.00401ff0
call fcn.004265cf
test al, al
je 0x4046dc
dec esp
sar dword [ebp - 0x51], 0x70
push cs
invalid
call fcn.004262d8
test al, al
je 0x404704
sal byte [0x15eb75a5], 0xf0
wait
xchg ecx, eax
and bh, dh
push cs
sub eax, 0x65785d19
jne 0x40476b
invalid
shr eax, cl
in al, dx
sbb dword [edx], eax
add byte [eax + eax*8 - 0x7ab1e98c], al
sar dword [edi - 0xf], 0xc9
call fcn.004260f5
test al, al
je 0x404723
dec esi
test ecx, eax
jg 0x404703
leave
mov ebx, 0x98150591
fimul word [esi + 0xb]
xlatb
std
div dword [esi]
add al, 0xba
inc esi
push ebp
lea eax, [ebp + 0xc]
push eax
inc ebp
or al, 0x50
call fcn.0042a914
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x840]
push eax
call fcn.00429f00
add esp, 0xc
mov byte [ebp - 4], 2
call fcn.004266e3
test al, al
je 0x40475f
jge 0x404724
mov dl, byte [ebp + 0x23ea6ec3]
pop eax
sbb dh, byte [bp + di + 0x44]
ret
call fcn.00426659
test al, al
je 0x404783
pop eax
push es
sub esp, dword [edx + 0x363b76c3]
mov byte [0x363b76c3], al
ret 0x62fd
call fcn.00426614
test al, al
je 0x4047a5
sbb ecx, dword [esp + ecx*2]
inc esi
mov esp, 0x9b696c74
test esi, 0x4aea5b63
xlatb
jne 0x4047c8
imul edi, dword [eax + 0x65edecc6], 0x80068b2
add byte [eax], al
push 0x800
lea eax, [ebp - 0x810]
push 0
push eax
call fcn.00447ad0
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x828]
add esp, 0xc
lea ecx, [ebp - 0x840]
cmp dword [ebp - 0x814], 8
cmovae eax, dword [ebp - 0x828]
cmp dword [ebp - 0x82c], 8
push eax
cmovae ecx, dword [ebp - 0x840]
lea eax, [ebp - 0x810]
push 0x400
push eax
push 0x5a98a4
push str.LastUpdTimeStamp
push ecx
call ebx
xor eax, eax
mov dword [ebp - 0x85c], 7
mov dword [ebp - 0x860], 0
mov word [ebp - 0x870], ax
cmp word [ebp - 0x810], ax
jne 0x40482d
invalid
xor ecx, ecx
jmp 0x404845
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404836
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x870]
call fcn.00402110
cmp dword [ebp - 0x860], 0
mov byte [ebp - 4], 3
je 0x404b2d
mov eax, dword [ebp - 0x894]
lea ecx, [ebp - 0x870]
cmp eax, ecx
je 0x404885
push 0xffffffffffffffff
push 0
push ecx
mov ecx, eax
call fcn.00401ff0
call fcn.00426614
test al, al
je 0x4048b0
inc eax
mov ecx, 0x1785a6f5
fcmovnu st(0), st(5)
xor esi, dword [ebx - 0x68]
sbb ebx, dword [ebx + 0x505faf2f]
hlt
cmp dword [ebp - 0x814], 8
lea eax, [ebp - 0x828]
lea ecx, [ebp - 0x840]
cmovae eax, dword [ebp - 0x828]
cmp dword [ebp - 0x82c], 8
push eax
cmovae ecx, dword [ebp - 0x840]
lea eax, [ebp - 0x810]
push 0x400
push eax
push 0x5a98a4
push str.CacheTime
push ecx
call ebx
cmp word [ebp - 0x810], 0
jne 0x404900
xor ecx, ecx
jmp 0x40491f
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404910
sub ecx, edx
sar ecx, 1
push ecx
mov ecx, dword [ebp - 0x890]
lea eax, [ebp - 0x810]
push eax
call fcn.00402110
cmp dword [ebp - 0x814], 8
lea eax, [ebp - 0x828]
lea ecx, [ebp - 0x840]
cmovae eax, dword [ebp - 0x828]
cmp dword [ebp - 0x82c], 8
push eax
cmovae ecx, dword [ebp - 0x840]
lea eax, [ebp - 0x810]
push 0x400
push eax
push 0x5a98a4
push str.File
push ecx
call ebx
cmp word [ebp - 0x810], 0
jne 0x404982
xor ecx, ecx
jmp 0x40499f
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404990
sub ecx, edx
sar ecx, 1
mov ebx, dword [ebp - 0x88c]
lea eax, [ebp - 0x810]
push ecx
push eax
mov ecx, ebx
call fcn.00402110
cmp dword [ebx + 0x14], 8
jb 0x4049be
mov eax, dword [ebx]
jmp 0x4049c0
mov eax, ebx
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x404b2d
call fcn.004266e3
test al, al
je 0x4049f9
inc ecx
xor dword [esi - 0x19], ebx
invalid
cmp dword [ebp - 0x814], 8
lea eax, [ebp - 0x828]
lea ecx, [ebp - 0x840]
cmovae eax, dword [ebp - 0x828]
cmp dword [ebp - 0x82c], 8
push eax
cmovae ecx, dword [ebp - 0x840]
lea eax, [ebp - 0x810]
push 0x400
push eax
push 0x5a98a4
push str.LastMD5
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x858]
call fcn.00403700
cmp dword [ebp - 0x848], 0
mov byte [ebp - 4], 4
jne 0x404a65
xor bl, bl
jmp 0x404af0
cmp dword [ebx + 0x14], 8
jb 0x404a6d
mov ebx, dword [ebx]
sub esp, 0x18
mov ecx, esp
push ebx
call fcn.00403700
lea eax, [ebp - 0x888]
push eax
call fcn.00427d68
lea eax, [ebp - 0x858]
mov byte [ebp - 4], 5
push eax
call fcn.0042a914
lea eax, [ebp - 0x888]
push eax
call fcn.0042a914
cmp dword [ebp - 0x874], 8
lea ecx, [ebp - 0x888]
push dword [ebp - 0x878]
cmovae ecx, dword [ebp - 0x888]
lea eax, [ebp - 0x858]
cmp dword [ebp - 0x844], 8
push ecx
cmovae eax, dword [ebp - 0x858]
push dword [ebp - 0x848]
push eax
call fcn.00403130
add esp, 0x34
lea ecx, [ebp - 0x888]
mov esi, eax
call fcn.0041a3f0
test esi, esi
sete bl
mov eax, dword [ebp - 0x844]
cmp eax, 8
jb 0x404b0e
inc eax
lea ecx, [ebp - 0x858]
push eax
push dword [ebp - 0x858]
call fcn.00402260
xor eax, eax
mov dword [ebp - 0x844], 7
mov dword [ebp - 0x848], 0
mov word [ebp - 0x858], ax
jmp 0x404b2f
xor bl, bl
mov eax, dword [ebp - 0x85c]
cmp eax, 8
jb 0x404b4d
inc eax
lea ecx, [ebp - 0x870]
push eax
push dword [ebp - 0x870]
call fcn.00402260
xor eax, eax
mov dword [ebp - 0x85c], 7
mov word [ebp - 0x870], ax
mov eax, dword [ebp - 0x82c]
mov dword [ebp - 0x860], 0
cmp eax, 8
jb 0x404b88
inc eax
lea ecx, [ebp - 0x840]
push eax
push dword [ebp - 0x840]
call fcn.00402260
xor eax, eax
mov dword [ebp - 0x82c], 7
mov word [ebp - 0x840], ax
mov eax, dword [ebp - 0x814]
mov dword [ebp - 0x830], 0
cmp eax, 8
jb 0x404bc3
inc eax
lea ecx, [ebp - 0x828]
push eax
push dword [ebp - 0x828]
call fcn.00402260
mov ecx, dword [ebp + 0x20]
xor eax, eax
mov dword [ebp - 0x814], 7
mov dword [ebp - 0x818], 0
mov word [ebp - 0x828], ax
cmp ecx, 8
jb 0x404bf5
inc ecx
push ecx
push dword [ebp + 0xc]
lea ecx, [ebp + 0xc]
call fcn.00402260
mov al, bl
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.0043c551
mov esp, ebp
pop ebp
ret 0x28