Function at 0x40cb20
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4444e0
mov eax, dword fs:[0]
push eax
sub esp, 0x34
push ebx
push ebp
push esi
push edi
mov eax, dword [0x458640]
xor eax, esp
push eax
lea eax, [esp + 0x48]
mov dword fs:[0], eax
mov esi, ecx
push 0xffffffffffffffff
xor ebx, ebx
lea ecx, [esi + 0xfc]
push ebx
call fcn.00404150
mov edi, dword [esi + 0xf0]
push 0x44796c
lea ecx, [esp + 0x18]
mov dword [esp + 0x38], edi
call fcn.00405ce0
push 0x44796c
lea ecx, [esp + 0x1c]
mov dword [esp + 0x54], ebx
call fcn.00405ce0
push 0x44796c
lea ecx, [esp + 0x28]
mov byte [esp + 0x54], 1
call fcn.00405ce0
push 0x44796c
lea ecx, [esp + 0x24]
mov byte [esp + 0x54], 2
call fcn.00405ce0
push 0x44796c
lea ecx, [esp + 0x20]
mov byte [esp + 0x54], 3
call fcn.00405ce0
mov byte [esp + 0x50], 4
call fcn.00411614
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x40cbe1
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x3c], eax
call fcn.00411614
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x40cc0b
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
cmp edi, ebx
mov byte [esp + 0x50], 5
mov dword [esp + 0x2c], ebx
jle 0x40d2d0
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test ebx, ebx
jl 0x40d3ea
cmp ebx, dword [esi + 0xf0]
jge 0x40d3ea
mov ecx, dword [esi + 0xec]
lea eax, [ecx + ebx*4]
push eax
lea ecx, [esp + 0x18]
call fcn.00401a50
mov eax, dword [esi + 0x124]
mov edx, dword [esp + 0x14]
push eax
push 0xffffffffffffffff
push 0x448328
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x40ccb7
push 0xfa2
call fcn.004152df
test eax, eax
je 0x40cc96
push 0xfa2
push eax
lea ecx, [esp + 0x24]
call fcn.004043c0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.00404a50
add esp, 0xc
lea eax, [esp + 0x20]
push eax
jmp 0x40d2b4
push edi
call fcn.004152df
test eax, eax
je 0x40cccc
push edi
push eax
lea ecx, [esp + 0x20]
call fcn.004043c0
mov edx, dword [esp + 0x24]
mov eax, dword [edx - 8]
mov edi, dword [esi + 0x124]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x100
or eax, ecx
jge 0x40ccfc
push 0x100
lea ecx, [esp + 0x28]
call fcn.004012c0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
push edi
push 0x100
push edx
push 0x44796c
push str.CheckType
push ecx
call ebp
test eax, eax
je 0x40d27b
mov edx, dword [esp + 0x24]
cmp dword [edx - 0xc], 0
jne 0x40d27b
push 0x44796c
lea ecx, [esp + 0x2c]
call fcn.00405ce0
mov edx, dword [esp + 0x28]
mov eax, dword [edx - 8]
mov edi, dword [esi + 0x124]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x14
or eax, ecx
mov byte [esp + 0x50], 6
jge 0x40cd68
push 0x14
lea ecx, [esp + 0x2c]
call fcn.004012c0
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
push edi
push 0x14
push edx
push 0x44796c
push str.Install
push eax
call ebp
mov ecx, dword [esp + 0x24]
push str.FILEVER
push ecx
call fcn.0042ca95
add esp, 8
test eax, eax
sete al
test al, al
je 0x40ce41
mov eax, dword [esp + 0x18]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x30], esp
mov edi, esp
push eax
call fcn.00401310
add eax, 0x10
mov dword [edi], eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x40], esp
mov edi, esp
push eax
mov byte [esp + 0x5c], 7
call fcn.00401310
add eax, 0x10
mov dword [edi], eax
add esp, 4
mov ecx, esi
mov byte [esp + 0x58], 6
call fcn.0040b050
test eax, eax
jne 0x40d254
mov edx, dword [esp + 0x28]
push 0x448308
push edx
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40cef2
push 0xfae
call fcn.004152df
test eax, eax
je 0x40ce20
push 0xfae
push eax
lea ecx, [esp + 0x24]
call fcn.004043c0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.00404a50
add esp, 0xc
lea eax, [esp + 0x20]
push eax
jmp 0x40d249
mov ecx, dword [esp + 0x24]
push str.REGVALUE
push ecx
call fcn.0042ca95
add esp, 8
test eax, eax
sete al
test al, al
je 0x40cf31
mov eax, dword [esp + 0x18]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x3c], esp
mov edi, esp
push eax
call fcn.00401310
add eax, 0x10
mov dword [edi], eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x34], esp
mov edi, esp
push eax
mov byte [esp + 0x5c], 8
call fcn.00401310
add eax, 0x10
mov dword [edi], eax
add esp, 4
mov ecx, esi
mov byte [esp + 0x58], 6
call fcn.0040bb80
test eax, eax
jne 0x40d254
mov edx, dword [esp + 0x28]
push 0x448308
push edx
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40cef2
push 0xfae
lea ecx, [esp + 0x20]
call fcn.004049a0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.00404a50
add esp, 0xc
lea eax, [esp + 0x20]
push eax
jmp 0x40d249
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x40]
call fcn.00401a50
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x44]
call fcn.00401a50
sub esp, 8
lea eax, [esp + 0x44]
mov ecx, esp
mov dword [esp + 0x40], esp
push eax
call fcn.00404490
lea ecx, [esi + 0xfc]
call fcn.004086a0
jmp 0x40d254
mov ecx, dword [esp + 0x24]
push str.SPECIAL
push ecx
call fcn.0042ca95
add esp, 8
test eax, eax
sete al
test al, al
je 0x40d254
mov edx, dword [esp + 0x14]
push str.W2KSP4
push edx
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40cfab
mov ecx, esi
call fcn.00403810
test eax, eax
jne 0x40cfab
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x40]
call fcn.00401a50
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x44]
call fcn.00401a50
sub esp, 8
lea edx, [esp + 0x44]
mov ecx, esp
mov dword [esp + 0x40], esp
push edx
call fcn.00404490
lea ecx, [esi + 0xfc]
call fcn.004086a0
mov eax, dword [esp + 0x14]
push str.WEBCTRL
push eax
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40d05b
push 1
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esi + 0xd4]
call fcn.00401880
push 0x447d58
push eax
call fcn.00401380
add esp, 8
lea ecx, [esp + 0x30]
mov bl, al
call fcn.00401430
test bl, bl
mov ecx, esi
je 0x40d014
call fcn.00402ef0
test eax, eax
jne 0x40d057
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x40]
call fcn.00401a50
lea eax, [esp + 0x18]
push eax
jmp 0x40d030
call fcn.004035f0
test eax, eax
jne 0x40d057
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x40]
call fcn.00401a50
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x44]
call fcn.00401a50
sub esp, 8
lea edx, [esp + 0x44]
mov ecx, esp
mov dword [esp + 0x40], esp
push edx
call fcn.00404490
lea ecx, [esi + 0xfc]
call fcn.004086a0
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
push str.XPSP2
push eax
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40d0b1
mov ecx, esi
call fcn.00403830
test eax, eax
jne 0x40d0b1
push 0xfaf
lea ecx, [esp + 0x20]
call fcn.004049a0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
push ecx
push edx
lea eax, [esp + 0x28]
push eax
call fcn.00404a50
add esp, 0xc
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esi + 0x13c]
call fcn.00415420
mov edx, dword [esp + 0x14]
push str.hkscs2001
push edx
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40d1a8
mov ecx, esi
call fcn.00407830
test eax, eax
je 0x40d1a8
mov ecx, esi
call fcn.00407830
cmp eax, 1
je 0x40d1a8
push ecx
lea eax, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x3c], esp
push eax
call fcn.00401450
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x34], esp
push edx
mov byte [esp + 0x5c], 9
call fcn.00401450
mov ecx, esi
mov byte [esp + 0x58], 6
call fcn.0040bb80
test eax, eax
jne 0x40d1a8
push 0x448308
lea ecx, [esp + 0x2c]
call fcn.00401140
test eax, eax
jne 0x40d16e
push 0xfae
lea ecx, [esp + 0x20]
call fcn.004049a0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.00404a50
add esp, 0xc
lea eax, [esp + 0x20]
push eax
lea ecx, [esi + 0x13c]
call fcn.00415420
jmp 0x40d1a8
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x40]
call fcn.00401a50
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x44]
call fcn.00401a50
sub esp, 8
lea eax, [esp + 0x44]
mov ecx, esp
mov dword [esp + 0x40], esp
push eax
call fcn.00404490
lea ecx, [esi + 0xfc]
call fcn.004086a0
mov ecx, dword [esp + 0x14]
push str.W2003SP1
push ecx
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40d1fe
mov ecx, esi
call fcn.00403850
test eax, eax
jne 0x40d1fe
push 0xfaf
lea ecx, [esp + 0x20]
call fcn.004049a0
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
push edx
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.00404a50
add esp, 0xc
lea edx, [esp + 0x20]
push edx
lea ecx, [esi + 0x13c]
call fcn.00415420
mov eax, dword [esp + 0x14]
push str.W2003SP1_X64
push eax
call fcn.0042ca95
add esp, 8
test eax, eax
jne 0x40d254
mov ecx, esi
call fcn.00403850
test eax, eax
jne 0x40d254
push 0xfaf
lea ecx, [esp + 0x20]
call fcn.004049a0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
push ecx
push edx
lea eax, [esp + 0x28]
push eax
call fcn.00404a50
add esp, 0xc
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esi + 0x13c]
call fcn.00415420
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x50], 5
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40d2bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40d2bf
push 0xfa3
call fcn.004152df
test eax, eax
je 0x40d298
push 0xfa3
push eax
lea ecx, [esp + 0x24]
call fcn.004043c0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
push ecx
push edx
lea eax, [esp + 0x28]
push eax
call fcn.00404a50
add esp, 0xc
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esi + 0x13c]
call fcn.00415420
add ebx, 1
cmp ebx, dword [esp + 0x34]
mov dword [esp + 0x2c], ebx
jl 0x40cc32
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
mov byte [esp + 0x50], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40d2f5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d315
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x50], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d33a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x50], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d35f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x50], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d384
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x50], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d3a9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x50], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d3d1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
jmp fcn.0041150c