Function at 0x405090
Capabilities:
Check if file exists
Encode data using xor
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5df56f
mov eax, dword fs:[0]
push eax
sub esp, 0x888
mov eax, dword [0x678390]
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.00402a70
cmp dword [ebp + 8], 0
mov byte [ebp - 4], 1
je 0x405132
idiv edi
call dword [eax - 0x73]
invalid
lea eax, [esi + 0x1c]
lea ecx, [ebp - 0x828]
cmp ecx, eax
je 0x405132
push 0xffffffffffffffff
push 0
push eax
call fcn.00402a70
call fcn.00453bb5
test al, al
je 0x40514c
add dword [ebp + 0x48], eax
invalid
pushfd
retf
call fcn.004538be
test al, al
je 0x405174
xchg ebp, esi
int1
xor al, 0x8e
jb 0x40519b
lcall 0x2fb8, 0x1b336ecc
mov dl, 0x72
pushal
jle 0x4050ee
imul ebp, dword [ebx], 0x61
loopne 0x405140
frstor dword [ecx + edx*4 + 0x7f]
mov dh, 0x69
dec ebx
call fcn.004536db
test al, al
je 0x405193
invalid
sti
int 0x12
fisubr word [edi]
sbb al, 0xc4
dec dh
jo 0x405175
inc eax
jmp 0x405151
lea eax, [ebp + 0xc]
push eax
call fcn.0045dec0
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x840]
push eax
call fcn.0045db5f
add byte [ebp - 0x72aff3bb], cl
test eax, eax
idiv edi
call dword [eax - 0x18]
mov bl, 0x89
add eax, 0xcc48300
add esp, 0xc
mov byte [ebp - 4], 2
call fcn.00453cc9
test al, al
je 0x4051cf
or al, 0xe8
push 0xffffffffffffffbb
inc ecx
scasb al, byte es:[edi]
std
wait
wait
inc ebx
cmp dword [ecx - 0x3a], esi
sub eax, 0x573fcc05
dec ecx
call fcn.00453c3f
test al, al
je 0x4051f3
sbb ecx, edx
mov eax, 0xb42c3024
xor byte [esp + esi*4], ch
nop
xchg bl, dl
jns 0x4051ac
xor ecx, esi
jle 0x40521d
aam 0x1b
aam 0xfc
jno 0x40520d
out dx, al
sub edx, esi
loop 0x4051dc
call fcn.00453bfa
add ch, dl
add al, 0
test al, al
je 0x405215
sar byte [0x936c70b9], 1
jge 0x40526d
pop ecx
aas
fdiv qword [edx + 0x42a4550a]
fisubr word [edi + edx*4]
sub al, 0x97
int1
enter 0xffffffffffff8c4c, 0x7c
push 0x800
lea eax, [ebp - 0x810]
push 0
push eax
call fcn.00483520
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 0x5e9978
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
idiv edi
jmp [edx]
lcall 0x33d3, 0xff51005e
rol bh, 0x85
movsb byte es:[edi], byte [esi]
idiv edi
inc dword [edi]
add byte [eax], al
add bh, al
test dword [eax + 0xfffff7], esp
add byte [eax], al
add byte [esi - 0x77], ah
test dword [eax + 0x66fffff7], edx
cmp dword [ebp - 0x810], eax
jne 0x40529d
xor ecx, ecx
jmp 0x4052b5
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4052a6
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x870]
call fcn.00402b90
cmp dword [ebp - 0x860], 0
mov byte [ebp - 4], 3
je 0x40559d
mov eax, dword [ebp - 0x894]
lea ecx, [ebp - 0x870]
cmp eax, ecx
je 0x4052f5
push 0xffffffffffffffff
push 0
push ecx
mov ecx, eax
call fcn.00402a70
call fcn.00453bfa
test al, al
je 0x405320
out 0x2a, eax
jecxz 0x40535e
mov ch, 0xb7
sub al, 0xaa
inc esi
retf 0xd439
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 0x5e9978
push str.CacheTime
push ecx
call ebx
cmp word [ebp - 0x810], 0
jne 0x405370
add byte [ecx - 1], dl
shl dword [esi - 0x7d], cl
mov ebp, 0xfffff7f0
add byte [ebp + 4], dh
xor ecx, ecx
jmp 0x40538f
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405380
sub ecx, edx
sar ecx, 1
push ecx
mov ecx, dword [ebp - 0x890]
lea eax, [ebp - 0x810]
push eax
call fcn.00402b90
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 0x5e9978
push str.File
push ecx
call ebx
cmp word [ebp - 0x810], 0
jne 0x4053f2
xor ecx, ecx
jmp 0x40540f
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405400
sub ecx, edx
sar ecx, 1
mov ebx, dword [ebp - 0x88c]
lea eax, [ebp - 0x810]
push ecx
push eax
mov ecx, ebx
call fcn.00402b90
cmp dword [ebx + 0x14], 8
adc al, 8
jb 0x40542e
mov eax, dword [ebx]
jmp 0x405430
mov eax, ebx
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40559d
call fcn.00453cc9
test al, al
je 0x405469
clc
mov bh, 2
inc ecx
mov byte [0xa39e71ec], al
and dword [edx + 0x7d], eax
pushal
cmp bh, bl
xchg ebp, eax
pop ebx
jne 0x405426
jo 0x4054b7
mov edx, dword [esi - 0x5bca39cd]
mov ebx, dword [ebp - 0x88c]
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 0x5e9978
push str.LastMD5
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x858]
call fcn.00404170
cmp dword [ebp - 0x848], 0
mov byte [ebp - 4], 4
jne 0x4054d5
lea ebp, [eax - 0x17000009]
scasd eax, dword es:[edi]
in al, dx
invalid
xor bl, bl
jmp 0x405560
cmp dword [ebx + 0x14], 8
jb 0x4054dd
mov ebx, dword [ebx]
sub esp, 0x18
mov ecx, esp
push ebx
call fcn.00404170
lea eax, [ebp - 0x888]
push eax
call int.004557d1
lea eax, [ebp - 0x858]
mov byte [ebp - 4], 5
push eax
call fcn.0045dec0
lea eax, [ebp - 0x888]
push eax
call fcn.0045dec0
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.00403be0
add esp, 0x34
lea ecx, [ebp - 0x888]
mov esi, eax
call fcn.00412820
test esi, esi
sete bl
mov eax, dword [ebp - 0x844]
cmp eax, 8
jb 0x40557e
inc eax
lea ecx, [ebp - 0x858]
push eax
push dword [ebp - 0x858]
call fcn.00402ce0
xor eax, eax
mov dword [ebp - 0x844], 7
mov dword [ebp - 0x848], 0
mov word [ebp - 0x858], ax
jmp 0x40559f
xor bl, bl
mov eax, dword [ebp - 0x85c]
cmp eax, 8
jb 0x4055bd
inc eax
lea ecx, [ebp - 0x870]
push eax
push dword [ebp - 0x870]
call fcn.00402ce0
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 0x4055f8
inc eax
lea ecx, [ebp - 0x840]
push eax
push dword [ebp - 0x840]
call fcn.00402ce0
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 0x405633
inc eax
lea ecx, [ebp - 0x828]
push eax
push dword [ebp - 0x828]
call fcn.00402ce0
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 0x405665
inc ecx
push ecx
push dword [ebp + 0xc]
lea ecx, [ebp + 0xc]
call fcn.00402ce0
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.0047070c
mov esp, ebp
pop ebp
ret 0x28