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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5dc62f
mov eax, dword fs:[0]
push eax
sub esp, 0x888
mov eax, dword [0x67432c]
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.004029a0
cmp dword [ebp + 8], 0
mov byte [ebp - 4], 1
je 0x405022
add byte [eax], al
add al, ch
lahf
fcos
inc dword [ebx - 0x39fff783]
inc ebp
cld
add dword [edi + edx - 0x73], esi
inc esi
sbb al, 0x8d
invalid
lea eax, [esi + 0x1c]
lea ecx, [ebp - 0x828]
cmp ecx, eax
je 0x405022
push 0xffffffffffffffff
push 0
push eax
call fcn.004029a0
call fcn.0045250c
test al, al
je 0x40503c
retf
call fcn.00452215
test al, al
je 0x405064
add dword [edi + 0x39], 0x4eaee177
loope 0x404ff9
dec esi
insb byte es:[edi], dx
jg 0x4050b5
mov ebp, 0xde4db7bf
push ebx
imul eax, dword [edx - 0x496c8d00], 0xa4695fac
dec byte [esi - 0x173aa4cb]
leave
iretd
call fcn.00452032
test al, al
je 0x405083
ficom dword [ebp + 0x1dbebdcb]
rcr dword [ebp + ebp + 0xeca9bd], cl
insb byte es:[edi], dx
add dword [ecx], 0x55
lds ecx, [ebp + 0x5a]
pop edx
in eax, dx
inc edi
lea eax, [ebp + 0xc]
push eax
call fcn.0045b93c
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x840]
push eax
call fcn.004568a1
add esp, 0xc
mov byte [ebp - 4], 2
call fcn.00452620
test al, al
je 0x4050bf
jae 0x405049
inc ecx
mov dword [0xb9db3e38], eax
sub eax, 0x36a0ab88
cld
not byte [edi + eax*2 - 0x2d17b64b]
aam 4
add byte [eax + eax*8 + 0x2dc1b74], al
mov byte [ebx - 0x903c960], ch
xchg esp, eax
inc edi
mov ch, 0x49
call fcn.00452596
test al, al
je 0x4050e3
fadd qword [edx]
test byte [ebp + 0xf27cc31], dh
pop ds
mov esi, 0x6eac28d1
stosb byte es:[edi], al
in al, 0xc2
in al, 0xa5
push ds
xchg cl, ch
out dx, eax
invalid
call fcn.00452551
test al, al
je 0x405105
jnp 0x405142
mov ah, 0x1f
jne 0x405080
std
and byte [edx + edx + 0x3ef45e1a], 0x97
add byte [edi - 0x3f], 0xfd
inc esi
insd dword es:[edi], dx
sub dword [ecx + 0x682221], eax
or byte [eax], al
add byte [ebp - 0x80f7b], cl
jmp [edx]
push 0x800
lea eax, [ebp - 0x810]
push 0
push eax
call fcn.00480620
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 0x5e6948
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 0x40518d
xor ecx, ecx
jmp 0x4051a5
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405196
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x870]
call fcn.00402ac0
cmp dword [ebp - 0x860], 0
mov byte [ebp - 4], 3
je 0x40548d
mov eax, dword [ebp - 0x894]
lea ecx, [ebp - 0x870]
cmp eax, ecx
je 0x4051e5
push 0xffffffffffffffff
push 0
push ecx
mov ecx, eax
call fcn.004029a0
call fcn.00452551
test al, al
je 0x405210
in eax, dx
test al, 0xe0
push esp
mov esi, ecx
loope 0x405235
mov bh, 0x5a
mov edx, 0x4204cc8b
jae 0x405277
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 0x5e6948
push str.CacheTime
push ecx
call ebx
cmp word [ebp - 0x810], 0
jne 0x405260
sal bh, 0xff
dec dword [ebp - 0x80f7b]
jmp [eax]
xor ecx, ecx
jmp 0x40527f
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
test eax, eax
jne 0x405270
sub ecx, edx
sar ecx, 1
push ecx
mov ecx, dword [ebp - 0x890]
lea eax, [ebp - 0x810]
push eax
call fcn.00402ac0
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 0x5e6948
push str.File
push ecx
call ebx
cmp word [ebp - 0x810], 0
jne 0x4052e2
xor ecx, ecx
jmp 0x4052ff
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4052f0
sub ecx, edx
sar ecx, 1
mov ebx, dword [ebp - 0x88c]
lea eax, [ebp - 0x810]
push ecx
push eax
mov ecx, ebx
call fcn.00402ac0
cmp dword [ebx + 0x14], 8
jb 0x40531e
mov eax, dword [ebx]
jmp 0x405320
mov eax, ebx
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40548d
call fcn.00452620
test al, al
je 0x405359
mov al, byte [0xf09999d9]
mov byte [esi - 0x453b9b6b], 0xd9
and dh, byte [ebx]
jecxz 0x4052fb
mov esp, 0x1668e827
and eax, 0xb92ea3a9
cmp cl, byte [ebx - 0x88b63]
inc dword [ebx - 0x81343]
dec dword [eax]
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 0x5e6948
push str.LastMD5
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x858]
call fcn.00404060
cmp dword [ebp - 0x848], 0
mov byte [ebp - 4], 4
jne 0x4053c5
xor bl, bl
jmp 0x405450
cmp dword [ebx + 0x14], 8
jb 0x4053cd
mov ebx, dword [ebx]
sub esp, 0x18
mov ecx, esp
push ebx
call fcn.00404060
lea eax, [ebp - 0x888]
push eax
call fcn.0045413c
lea eax, [ebp - 0x858]
mov byte [ebp - 4], 5
push eax
call fcn.0045b93c
lea eax, [ebp - 0x888]
push eax
call fcn.0045b93c
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.00403a90
add esp, 0x34
lea ecx, [ebp - 0x888]
mov esi, eax
call fcn.00447330
test esi, esi
sete bl
mov eax, dword [ebp - 0x844]
cmp eax, 8
jb 0x40546e
inc eax
lea ecx, [ebp - 0x858]
push eax
push dword [ebp - 0x858]
call fcn.00402c10
xor eax, eax
mov dword [ebp - 0x844], 7
mov dword [ebp - 0x848], 0
mov word [ebp - 0x858], ax
jmp 0x40548f
xor bl, bl
mov eax, dword [ebp - 0x85c]
cmp eax, 8
jb 0x4054ad
inc eax
lea ecx, [ebp - 0x870]
push eax
push dword [ebp - 0x870]
call fcn.00402c10
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 0x4054e8
inc eax
lea ecx, [ebp - 0x840]
push eax
push dword [ebp - 0x840]
call fcn.00402c10
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 0x405523
inc eax
lea ecx, [ebp - 0x828]
push eax
push dword [ebp - 0x828]
call fcn.00402c10
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 0x405555
inc ecx
push ecx
push dword [ebp + 0xc]
lea ecx, [ebp + 0xc]
call fcn.00402c10
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.0046d802
mov esp, ebp
pop ebp
ret 0x28