Function at 0x422ea0
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5726d0
mov eax, dword fs:[0]
push eax
sub esp, 0x74
push esi
push edi
mov eax, dword [0x5d1614]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov dword [ebp - 4], 0
mov ecx, dword [esi + 0xac]
xor eax, eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], eax
mov eax, dword [esi + 0xb0]
mov dword [ebp - 0x80], eax
mov eax, dword [esi + 0xbc]
lea edi, [esi + 0xbc]
mov dword [ebp - 0x78], ecx
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
or eax, ecx
jge 0x422f18
push 0
mov ecx, edi
call fcn.00401db0
mov eax, dword [esi + 0xb4]
mov edx, dword [edi]
mov esi, dword [ebx + 8]
or edi, 0xffffffff
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x20], esi
test esi, esi
jle 0x424108
xor ecx, ecx
mov eax, esi
mov edx, 0x418
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004473ee
mov edi, dword [ebp - 0x20]
add esp, 4
xor esi, esi
mov dword [ebp - 0x24], eax
test edi, edi
jle 0x422fb8
xor ecx, ecx
xor edx, edx
add eax, 0x10
jmp 0x422f69
xor ecx, ecx
cmp edx, ecx
mov dword [eax - 4], ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
jl 0x42310e
cmp esi, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, edx
mov ecx, dword [ecx + 0x1c]
mov dword [eax - 8], ecx
cmp esi, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, edx
mov ecx, dword [ecx + 0x18]
mov dword [eax - 0x10], ecx
mov dword [eax - 0xc], 0
inc esi
add edx, 0xdc
add eax, 0x418
cmp esi, edi
jl 0x422f67
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0xa8]
add esi, 0xa8
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
or eax, ecx
jge 0x422fe2
push 0
mov ecx, esi
call fcn.00401db0
mov edx, dword [esi]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x70], edx
mov eax, edi
lea edx, [ebp - 0x80]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x64], edx
call fcn.00451023
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x70]
mov dword [eax + 0x124], 8
mov dword [eax + 0x128], ecx
call fcn.00451023
call fcn.00451023
mov eax, dword [eax + 4]
lea esi, [eax + 0xd0]
or edi, 0xffffffff
test esi, esi
je 0x423053
mov eax, dword [esi + 0x60]
test eax, eax
je 0x423053
push str.Download
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x423053
mov edx, dword [esi + 0x58]
mov ecx, dword [esi + 0x54]
push edx
push ecx
call eax
mov edi, eax
mov dword [esi + 0x5c], edi
cmp dword [ebp - 0x20], 0
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x14], 0
jle 0x4240f6
jmp 0x423070
mov eax, dword [ebp - 0x14]
test eax, eax
jl 0x42310e
cmp eax, dword [ebx + 8]
jge 0x42310e
mov esi, dword [ebp - 0x24]
mov ecx, dword [ebx + 4]
mov edx, eax
imul edx, edx, 0x418
mov edi, eax
imul edi, edi, 0xdc
add esi, edx
mov edx, dword [esi + 0xc]
add ecx, edi
mov dword [ecx + 0xac], edx
cmp eax, dword [ebx + 8]
mov dword [ebp - 0x18], edi
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [esi + 0xc]
add ecx, edi
mov dword [ecx + 0xa8], edx
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [esi + 0x10]
add ecx, edi
mov dword [ecx + 0xb0], edx
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [esi + 0x14]
add ecx, edi
mov dword [ecx + 0xa4], edx
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [esi + 0x14]
add ecx, edi
mov dword [ecx + 0x3c], edx
cmp eax, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
mov ecx, dword [esi + 4]
add eax, edi
add eax, 0x2c
mov dword [ebp - 0x1c], eax
test ecx, ecx
jne 0x423113
xor eax, eax
jmp 0x423130
call fcn.00447de9
mov eax, ecx
lea edx, [eax + 2]
mov dword [ebp - 0x2c], edx
jmp 0x423120
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x423120
sub eax, dword [ebp - 0x2c]
sar eax, 1
push eax
push ecx
mov ecx, dword [ebp - 0x1c]
call fcn.00401e60
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, edi
add esi, 0x18
lea ecx, [eax + 0x30]
jne 0x423153
xor eax, eax
jmp 0x423170
mov eax, esi
lea edx, [eax + 2]
mov dword [ebp - 0x2c], edx
jmp 0x423160
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x423160
sub eax, dword [ebp - 0x2c]
sar eax, 1
push eax
push esi
call fcn.00401e60
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, edi
mov dword [eax + 0x14], 0x270f
cmp esi, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, edi
mov dword [eax + 0xc8], 1
call fcn.00447edb
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x424125
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 1
cmp dword [eax - 0xc], 0
jne 0x42330e
push ecx
mov ecx, esp
mov dword [ebp - 0x3c], esp
push str.ApplicationName
call fcn.00401a30
push ecx
mov byte [ebp - 4], 2
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 0x5a4b28
call fcn.00401a30
mov byte [ebp - 4], 3
cmp esi, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
mov esi, dword [eax + edi + 0x30]
add eax, edi
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
mov dword [ebp - 0x2c], esp
mov dword [ebp - 0x2c], esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x42323c
cmp eax, dword [esi]
jne 0x42323c
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x423277
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x2c]
lea edx, [ebp - 0x38]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 1
call fcn.00407a10
add esp, 0x10
mov byte [ebp - 4], 4
mov ecx, dword [eax]
mov esi, dword [ebp - 0x1c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x4232eb
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4232de
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4232de
push eax
call fcn.00401fe0
mov dword [ebp - 0x2c], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4232d3
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x2c]
add ecx, 0x10
mov dword [ebp - 0x1c], ecx
jmp 0x4232eb
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x1c]
call fcn.00401e60
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x38]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42330e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov ecx, esp
mov dword [ebp - 0x5c], esp
push str._Firmware_Update_
call fcn.00401a30
lea ecx, [ebp - 0x34]
push ecx
lea ecx, [ebp - 0x1c]
call fcn.00407730
add esp, 8
mov byte [ebp - 4], 5
call fcn.00447edb
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x424125
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x2c], eax
push 0
push 0x5a04b0
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 6
call fcn.00401e60
mov byte [ebp - 4], 7
xor eax, eax
cmp dword [ebp + 0x10], 2
jne 0x423378
mov eax, 1
mov esi, dword [ebp + 0xc]
push eax
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esi, 0xfffffff0
mov dword [ebp - 0x5c], esp
mov dword [ebp - 0x3c], esp
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x4233aa
cmp eax, dword [esi]
jne 0x4233aa
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x4233e5
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
add edi, 0x10
mov dword [ecx], edi
mov byte [ebp - 4], 8
mov esi, dword [ebp - 0x34]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esi, 0xfffffff0
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423422
cmp eax, dword [esi]
jne 0x423422
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x42345d
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
add edi, 0x10
mov dword [ecx], edi
lea edx, [ebp - 0x40]
push edx
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 7
call fcn.0040bfd0
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 9
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov esi, dword [ecx + 0x90]
lea edi, [ecx + 0x90]
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x4234ea
cmp dword [esi + 0xc], 0
jl 0x4234de
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4234de
push eax
call fcn.00401fe0
mov dword [ebp - 0x3c], eax
add esp, 4
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4234d4
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x4234ea
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.00401e60
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x40]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42350d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov ecx, esp
mov dword [ebp - 0x5c], esp
push str.ApplicationDescription
call fcn.00401a30
push ecx
mov byte [ebp - 4], 0xa
mov ecx, esp
mov dword [ebp - 0x60], esp
push 0x5a4b28
call fcn.00401a30
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0xb
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x30]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423578
cmp eax, dword [esi]
jne 0x423578
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x4235b3
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x28]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 7
call fcn.00407a10
add esp, 0x10
lea esi, [ebp - 0x28]
mov byte [ebp - 4], 0xc
call fcn.004154b0
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
mov esi, dword [eax + 0x9c]
lea edi, [eax + 0x9c]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x423649
cmp dword [esi + 0xc], 0
jl 0x42363d
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x42363d
push eax
call fcn.00401fe0
mov dword [ebp - 0x3c], eax
add esp, 4
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x423633
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x423649
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.00401e60
push ecx
mov ecx, esp
mov dword [ebp - 0x60], esp
push str.NewVersion
call fcn.00401a30
push ecx
mov byte [ebp - 4], 0xd
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 0x5a4b28
call fcn.00401a30
mov edx, dword [ebp - 0x14]
mov byte [ebp - 4], 0xe
cmp edx, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x30]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
sub esi, 0x10
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call edx
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x4236b4
cmp eax, dword [esi]
jne 0x4236b4
mov edi, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x4236ef
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x44]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 0xc
call fcn.00407a10
add esp, 0x10
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0xf
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov esi, dword [ecx + 0x94]
lea edi, [ecx + 0x94]
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x42377c
cmp dword [esi + 0xc], 0
jl 0x423770
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x423770
push eax
call fcn.00401fe0
mov dword [ebp - 0x3c], eax
add esp, 4
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x423766
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x42377c
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.00401e60
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0x44]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42379f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov ecx, esp
mov dword [ebp - 0x60], esp
push str.CurrentVersion
call fcn.00401a30
push ecx
mov byte [ebp - 4], 0x10
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 0x5a4b28
call fcn.00401a30
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x11
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x30]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x42380a
cmp eax, dword [esi]
jne 0x42380a
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x423845
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x48]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 0xc
call fcn.00407a10
add esp, 0x10
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x12
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov esi, dword [ecx + 0x98]
lea edi, [ecx + 0x98]
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x4238d2
cmp dword [esi + 0xc], 0
jl 0x4238c6
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4238c6
push eax
call fcn.00401fe0
mov dword [ebp - 0x3c], eax
add esp, 4
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4238bc
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x4238d2
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.00401e60
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0x48]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4238f5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov ecx, esp
mov dword [ebp - 0x60], esp
push str.ExecuteName
call fcn.00401a30
push ecx
mov byte [ebp - 4], 0x13
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 0x5a4b28
call fcn.00401a30
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x14
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x30]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423960
cmp eax, dword [esi]
jne 0x423960
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x42399b
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x4c]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 0xc
call fcn.00407a10
add esp, 0x10
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x15
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov esi, dword [ecx + 8]
lea edi, [ecx + 8]
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x423a22
cmp dword [esi + 0xc], 0
jl 0x423a16
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x423a16
push eax
call fcn.00401fe0
mov dword [ebp - 0x3c], eax
add esp, 4
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x423a0c
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x423a22
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.00401e60
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0x4c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423a45
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xa4], 0
jne 0x423bab
push ecx
mov ecx, esp
mov dword [ebp - 0x60], esp
push str.UpdateInfoLocation
call fcn.00401a30
push ecx
mov byte [ebp - 4], 0x16
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 0x5a4b28
call fcn.00401a30
mov edx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x17
cmp edx, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x30]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
sub esi, 0x10
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call edx
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423ac0
cmp eax, dword [esi]
jne 0x423ac0
mov edi, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x423afb
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x50]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 0xc
call fcn.00407a10
add esp, 0x10
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x18
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov esi, dword [ecx + 0xa0]
lea edi, [ecx + 0xa0]
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x423b88
cmp dword [esi + 0xc], 0
jl 0x423b7c
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x423b7c
push eax
call fcn.00401fe0
mov dword [ebp - 0x3c], eax
add esp, 4
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x423b72
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x423b88
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.00401e60
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0x50]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423bab
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov ecx, esp
mov dword [ebp - 0x60], esp
push str.RequiredOption
call fcn.00401a30
push ecx
mov byte [ebp - 4], 0x19
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 0x5a4b28
call fcn.00401a30
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x1a
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x30]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423c16
cmp eax, dword [esi]
jne 0x423c16
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x423c51
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x30]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 0xc
call fcn.00407a10
add esp, 0x10
mov byte [ebp - 4], 0x1b
mov esi, dword [ebp - 0x30]
cmp dword [esi - 0xc], 0
je 0x423d08
push ecx
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
add esi, 0xfffffff0
mov dword [ebp - 0x60], esp
mov dword [ebp - 0x3c], esp
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x423ca8
cmp eax, dword [esi]
jne 0x423ca8
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x423ce3
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
add edi, 0x10
mov dword [ecx], edi
call fcn.00427600
mov edx, dword [ebp - 0x14]
cmp edx, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov dword [ecx + 0xd8], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + edx + 0x30]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea edi, [ecx + edx]
push eax
push 0
push str.LastFirmVer
push 0x5a4b28
call esi
mov dword [edi + 0xb4], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + edx + 0x30]
lea edi, [ecx + edx]
push eax
push 0
push str.PrinterOnline
push 0x5a4b28
call esi
mov dword [edi + 0xb8], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + edx + 0x30]
lea edi, [ecx + edx]
push eax
push 0
push str.DefaultInstall
push 0x5a4b28
call esi
mov dword [edi + 0xbc], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + edx + 0x30]
lea edi, [ecx + edx]
push eax
push 0
push str.UpdateOnly
push 0x5a4b28
call esi
mov dword [edi + 0xc0], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + edx + 0x30]
lea edi, [ecx + edx]
push eax
push 0
push str.RunServerOS
push 0x5a4b28
call esi
mov dword [edi + 0xc4], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + edx + 0x30]
lea edi, [ecx + edx]
push eax
push 0
push str.Essential
push 0x5a4b28
call esi
push ecx
mov ecx, esp
mov dword [ebp - 0x60], esp
push str.Status
mov dword [edi + 0xcc], eax
call fcn.00401a30
push ecx
mov byte [ebp - 4], 0x1c
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 0x5a4b28
call fcn.00401a30
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 0x1d
cmp eax, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x30]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
mov dword [ebp - 0x3c], esp
mov dword [ebp - 0x3c], esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423e8d
cmp eax, dword [esi]
jne 0x423e8d
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x423ec8
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp - 0x54]
add edi, 0x10
mov dword [ecx], edi
push edx
mov byte [ebp - 4], 0x1b
call fcn.00407a10
add esp, 0x10
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x1e
cmp ecx, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov esi, dword [ecx + 0xd0]
lea edi, [ecx + 0xd0]
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x423f55
cmp dword [esi + 0xc], 0
jl 0x423f49
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x423f49
push eax
call fcn.00401fe0
mov dword [ebp - 0x3c], eax
add esp, 4
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x423f3f
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x423f55
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.00401e60
mov byte [ebp - 4], 0x1b
mov eax, dword [ebp - 0x54]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x423f78
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
sub esp, 0x28
mov ecx, esp
mov dword [ebp - 0x60], esp
push ecx
lea edi, [ebp + 0xc]
call fcn.00424140
mov edx, dword [ebp - 0x14]
mov byte [ebp - 4], 0x1f
cmp edx, dword [ebx + 8]
jge 0x42310e
mov eax, dword [ebx + 4]
add eax, dword [ebp - 0x18]
push ecx
mov esi, dword [eax + 0x90]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
sub esi, 0x10
mov dword [ebp - 0x5c], esp
mov dword [ebp - 0x3c], esp
call edx
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423fd3
cmp eax, dword [esi]
jne 0x423fd3
mov edi, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42400e
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42412f
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00540a95
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
add edi, 0x10
mov dword [ecx], edi
mov byte [ebp - 4], 0x1b
call fcn.00426ed0
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebx + 8]
jge 0x42310e
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 0xc
mov dword [ecx + 0xd4], eax
mov eax, dword [ebp - 0x30]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42405a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42407d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4240a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4240c3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4240e6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc esi
cmp esi, dword [ebp - 0x20]
mov dword [ebp - 0x14], esi
jl 0x423070
mov edi, dword [ebp - 0x58]
cmp dword [ebp - 0x24], 0
je 0x424108
mov ecx, dword [ebp - 0x24]
push ecx
call fcn.004473e3
add esp, 4
lea esi, [ebp + 0xc]
call fcn.00421b50
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
push 0x80004005
call fcn.00401fc0
call fcn.004132a0
int3