Function at 0x4609f0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4cedf5
mov eax, dword fs:[0]
push eax
sub esp, 0x38
push ebx
push esi
push edi
mov eax, dword [0x509074]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov esi, dword [eax + 0x18]
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x10]
push str.Name
call fcn.00403470
test al, al
jne 0x460a63
push 4
push str.Name
lea ecx, [ebp - 0x10]
call fcn.004035e0
mov dword [ebp - 4], 1
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x10]
lea ecx, [ebx + 4]
push eax
push ecx
mov ecx, edi
call esi
mov dword [ebp - 4], 0xffffffff
or esi, 0xffffffff
mov edx, dword [ebp - 0x10]
mov eax, esi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460a9e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x24], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c36
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov dword [ebp - 4], 3
lea ecx, [ebp - 0x10]
push str.ServerFileName
call fcn.00403470
test al, al
jne 0x460ae7
push 0xe
push str.ServerFileName
lea ecx, [ebp - 0x10]
call fcn.004035e0
mov dword [ebp - 4], 4
lea eax, [ebx + 0x10]
push eax
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebx + 4]
push ecx
mov ecx, edi
call dword [ebp - 0x24]
mov dword [ebp - 4], 0xffffffff
mov eax, esi
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460b20
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], 7
lea eax, [ebp - 0x20]
push dword [ebx + 0x158]
push 0x4e2950
push eax
call fcn.00408700
mov eax, dword [edi]
add esp, 0xc
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x24], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c40
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x10]
push str.State
call fcn.00403470
test al, al
jne 0x460b9e
push 5
push str.State
lea ecx, [ebp - 0x10]
call fcn.004035e0
mov byte [ebp - 4], 9
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x24]
mov byte [ebp - 4], 7
mov eax, esi
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460bd1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebx + 0x18], 0
jle 0x460bf1
mov eax, dword [edi]
mov ecx, edi
push 0x5c
push 0x3b
mov edx, dword [eax + 0x30]
lea eax, [ebx + 0x14]
push eax
push str.UpdatedApplicationVersions
lea eax, [ebx + 4]
push eax
call edx
cmp dword [ebx + 0x24], 0
jle 0x460c11
mov eax, dword [edi]
mov ecx, edi
push 0x5c
push 0x3b
mov edx, dword [eax + 0x30]
lea eax, [ebx + 0x20]
push eax
push str.UpdatedApplications
lea eax, [ebx + 4]
push eax
call edx
mov eax, dword [edi]
mov ecx, edi
push str._s_d
push str.DescriptionHtml
mov edx, dword [eax + 0x20]
lea eax, [ebx + 0x2c]
push eax
lea eax, [ebx + 4]
push eax
call edx
mov eax, dword [edi]
mov ecx, edi
push str._s_d
push dword [ebx + 0x40]
mov edx, dword [eax + 0x20]
lea eax, [ebx + 0x44]
push eax
lea eax, [ebx + 4]
push eax
call edx
mov eax, dword [edi]
mov ecx, edi
push str._s_d
push dword [ebx + 0x58]
mov edx, dword [eax + 0x20]
lea eax, [ebx + 0x5c]
push eax
lea eax, [ebx + 4]
push eax
call edx
mov eax, dword [edi]
mov ecx, edi
push str._s_d
push dword [ebx + 0x70]
mov edx, dword [eax + 0x20]
lea eax, [ebx + 0x74]
push eax
lea eax, [ebx + 4]
push eax
call edx
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov byte [ebp - 4], 0xb
xor eax, eax
mov ecx, dword [ebx + 0xb0]
mov dword [ebp - 0x10], eax
test ecx, ecx
jle 0x460d0a
xor edx, edx
mov dword [ebp - 0x24], edx
test edx, edx
js 0x461c54
cmp eax, ecx
jge 0x461c54
mov ecx, dword [ebx + 0xac]
lea eax, [ebp - 0x28]
add ecx, edx
push eax
call fcn.004370b0
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x34]
push eax
call fcn.004090b0
mov byte [ebp - 4], 0xb
mov eax, esi
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460cf0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x24]
inc eax
mov ecx, dword [ebx + 0xb0]
add edx, 0x24
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x24], edx
cmp eax, ecx
jl 0x460ca4
mov eax, dword [edi]
lea ecx, [ebp - 0x34]
push str._s_d
push str.AutoCloseApplication
push ecx
lea ecx, [ebx + 4]
push ecx
mov ecx, edi
call dword [eax + 0x20]
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x460d75
cmp dword [ebp - 0x30], 0
jle 0x460d65
xor edi, edi
lea eax, [eax + edi*4]
mov dword [ebp - 0x28], eax
mov byte [ebp - 4], 7
mov edx, dword [eax]
mov eax, esi
sub edx, 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460d59
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x34]
inc edi
cmp edi, dword [ebp - 0x30]
jl 0x460d36
mov edi, dword [ebp + 8]
push eax
call fcn.004a09b1
add esp, 4
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 0x10
lea eax, [ebp - 0x1c]
push dword [ebx + 0x80]
push 0x4e2950
push eax
call fcn.00408700
mov eax, dword [edi]
add esp, 0xc
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c4a
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x11
lea ecx, [ebp + 8]
push str.Size
call fcn.00403470
test al, al
jne 0x460dfe
push 4
push str.Size
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x12
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x10
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460e31
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebx + 0xbc]
cmp dword [eax - 0xc], 0
je 0x460eb9
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c5e
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x14
lea ecx, [ebp + 8]
push str.CommandLine
call fcn.00403470
test al, al
jne 0x460e83
push 0xb
push str.CommandLine
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x15
lea eax, [ebx + 0xbc]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x10
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460eb9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c68
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x17
lea ecx, [ebp + 8]
push str.NoGUICommandLineSwitch
call fcn.00403470
test al, al
jne 0x460eff
push 0x16
push str.NoGUICommandLineSwitch
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x18
lea eax, [ebx + 0xc0]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x10
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460f35
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov ecx, edi
push 0x4e62b8
mov edx, dword [eax + 0x28]
lea eax, [ebx + 4]
push eax
lea eax, [ebx + 0x84]
push eax
call edx
mov eax, dword [ebx + 0x98]
cmp dword [eax - 0xc], 0
je 0x460fd6
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c72
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x1a
lea ecx, [ebp + 8]
push str.SHA256
call fcn.00403470
test al, al
jne 0x460fa0
push 6
push str.SHA256
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x1b
lea eax, [ebx + 0x98]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x10
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x460fd6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebx + 0x9c]
cmp dword [eax - 0xc], 0
je 0x46105e
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c7c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x1d
lea ecx, [ebp + 8]
push 0x4e5f6c
call fcn.00403470
test al, al
jne 0x461028
push 3
push 0x4e5f6c
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x1e
lea eax, [ebx + 0x9c]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x10
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46105e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov ecx, edi
push str._s_d
push 0x4e6084
mov edx, dword [eax + 0x20]
lea eax, [ebx + 0xa0]
push eax
lea eax, [ebx + 4]
push eax
call edx
mov eax, dword [ebx + 0xc]
cmp dword [eax - 0xc], 0
je 0x4610fe
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c86
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x20
lea ecx, [ebp + 8]
push str.Category
call fcn.00403470
test al, al
jne 0x4610cb
push 8
push str.Category
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x21
lea eax, [ebx + 0xc]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x10
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4610fe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0x24
movzx eax, word [ebx + 0x12c]
push eax
movzx eax, word [ebx + 0x12e]
push eax
movzx eax, word [ebx + 0x132]
push eax
lea eax, [ebp - 0x18]
push str._.2u__.2u__.4u
push eax
call fcn.00408700
mov eax, dword [edi]
add esp, 0x14
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c90
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x25
lea ecx, [ebp + 8]
push str.ReleaseDate
call fcn.00403470
test al, al
jne 0x46118b
push 0xb
push str.ReleaseDate
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x26
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4611be
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebx + 0xc4], 0
lea ecx, [ebx + 0xc4]
jne 0x4611e3
cmp dword [ecx + 4], 0
jne 0x4611e3
cmp dword [ecx + 8], 0
jne 0x4611e3
cmp dword [ecx + 0xc], 0
je 0x46128a
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x10]
push eax
call fcn.0041eab0
mov dword [ebp - 0x28], eax
mov byte [ebp - 4], 0x28
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c9a
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x29
lea ecx, [ebp + 8]
push str.TargetOsMinVersion
call fcn.00403470
test al, al
jne 0x46123a
push 0x12
push str.TargetOsMinVersion
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x2a
lea eax, [ebp + 8]
push dword [ebp - 0x28]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x24]
mov byte [ebp - 4], 0x28
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46126c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x46128a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebx + 0xd8], 0
lea ecx, [ebx + 0xd8]
jne 0x4612af
cmp dword [ecx + 4], 0
jne 0x4612af
cmp dword [ecx + 8], 0
jne 0x4612af
cmp dword [ecx + 0xc], 0
je 0x461356
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x10]
push eax
call fcn.0041eab0
mov dword [ebp - 0x28], eax
mov byte [ebp - 4], 0x2d
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461ca4
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x2e
lea ecx, [ebp + 8]
push str.TargetOsMaxVersion
call fcn.00403470
test al, al
jne 0x461306
push 0x12
push str.TargetOsMaxVersion
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x2f
lea eax, [ebp + 8]
push dword [ebp - 0x28]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x24]
mov byte [ebp - 4], 0x2d
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461338
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461356
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebx + 0xec]
cmp eax, 1
jne 0x4613d4
mov eax, dword [ebx + 0xf4]
cmp dword [eax - 0xc], 0
je 0x461778
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461cae
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x32
lea ecx, [ebp + 8]
push str.FilePath
call fcn.00403470
test al, al
jne 0x4613b7
push 8
push str.FilePath
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x33
lea eax, [ebx + 0xf4]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
jmp 0x46175a
test eax, eax
jne 0x46144b
mov eax, dword [ebx + 0xf4]
cmp dword [eax - 0xc], 0
je 0x461778
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461cb8
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x35
lea ecx, [ebp + 8]
push str.RegistryKey
call fcn.00403470
test al, al
jne 0x46142e
push 0xb
push str.RegistryKey
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x36
lea eax, [ebx + 0xf4]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
jmp 0x46175a
cmp eax, 3
jne 0x46154f
mov eax, dword [ebx + 0xf4]
cmp dword [eax - 0xc], 0
je 0x4614dc
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461cc2
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x38
lea ecx, [ebp + 8]
push str.CustomDetection
call fcn.00403470
test al, al
jne 0x4614a6
push 0xf
push str.CustomDetection
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x39
lea eax, [ebx + 0xf4]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4614dc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebx + 0xf8]
cmp dword [eax - 0xc], 0
je 0x461778
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461ccc
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x3b
lea ecx, [ebp + 8]
push str.CustomDetectionParams
call fcn.00403470
test al, al
jne 0x461532
push 0x15
push str.CustomDetectionParams
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x3c
lea eax, [ebx + 0xf8]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
jmp 0x46175a
cmp eax, 4
jne 0x461778
mov eax, dword [ebx + 0xfc]
cmp dword [eax - 0xc], 0
je 0x4615e0
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461cd6
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x3e
lea ecx, [ebp + 8]
push str.AppIdName
call fcn.00403470
test al, al
jne 0x4615aa
push 9
push str.AppIdName
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x3f
lea eax, [ebx + 0xfc]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4615e0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebx + 0x100]
cmp dword [eax - 0xc], 0
je 0x461668
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461ce0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x41
lea ecx, [ebp + 8]
push str.AppIdArch
call fcn.00403470
test al, al
jne 0x461632
push 9
push str.AppIdArch
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x42
lea eax, [ebx + 0x100]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461668
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebx + 0x104]
cmp dword [eax - 0xc], 0
je 0x4616f0
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461cea
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x44
lea ecx, [ebp + 8]
push str.AppIdResourceId
call fcn.00403470
test al, al
jne 0x4616ba
push 0xf
push str.AppIdResourceId
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x45
lea eax, [ebx + 0x104]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4616f0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebx + 0x108]
cmp dword [eax - 0xc], 0
je 0x461778
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461cf4
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x47
lea ecx, [ebp + 8]
push str.AppIdPublisherId
call fcn.00403470
test al, al
jne 0x461742
push 0x10
push str.AppIdPublisherId
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x48
lea eax, [ebx + 0x108]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461778
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0x4b
mov eax, dword [ebx + 0xf0]
test al, 1
je 0x4618be
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 0x4d
xor eax, eax
mov ecx, dword [ebx + 0x110]
mov edx, 0x4e4f90
cmp ecx, 1
setne al
inc eax
cmp ecx, 1
push eax
mov eax, 0x4e78d8
lea ecx, [ebp - 0x24]
cmove eax, edx
push eax
call fcn.004035e0
lea ecx, [ebx + 0x114]
push ecx
lea eax, [ebp + 8]
push eax
call fcn.0041eab0
mov byte [ebp - 4], 0x4e
push dword [eax]
mov esi, dword [ebp - 0x24]
lea eax, [ebp - 0x14]
push esi
push str._s__s
push eax
call fcn.00408700
add esp, 0x10
mov byte [ebp - 4], 0x4d
or eax, 0xffffffff
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461835
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461cfe
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x50
lea ecx, [ebp + 8]
push str.Version
call fcn.00403470
test al, al
jne 0x46187b
push 7
push str.Version
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x51
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x4d
or eax, 0xffffffff
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4618af
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x4b
lea edx, [esi - 0x10]
or esi, 0xffffffff
jmp 0x46197e
test al, 2
je 0x461992
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461d08
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov byte [ebp - 4], 0x55
lea eax, [ebp - 0x10]
push dword [ebx + 0x128]
push 0x4e2950
push eax
call fcn.00408700
mov eax, dword [edi]
add esp, 0xc
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461d12
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x56
lea ecx, [ebp + 8]
push str.FileSize
call fcn.00403470
test al, al
jne 0x461941
push 8
push str.FileSize
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x57
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x28]
mov byte [ebp - 4], 0x55
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461974
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x4b
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461992
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebx + 0x13c]
test ecx, ecx
je 0x461a1a
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x24], eax
lea eax, [ecx + 4]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461d1c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x5a
lea ecx, [ebp + 8]
push str.Depends
call fcn.00403470
test al, al
jne 0x4619e8
push 7
push str.Depends
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x5b
lea eax, [ebp + 8]
push dword [ebp - 0x28]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x24]
mov byte [ebp - 4], 0x4b
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461a1a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
mov byte [ebp - 4], 0x5d
cmp byte [ebx + 0x144], 0
je 0x461aaa
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461c2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x5e
lea ecx, [ebp + 8]
push 0x4e7920
call fcn.00403470
test al, al
jne 0x461a7a
push 3
push 0x4e7920
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x5f
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x40]
call fcn.004090b0
mov byte [ebp - 4], 0x5d
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461aef
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x461aef
xor ecx, ecx
mov dword [ebp + 8], ecx
cmp dword [ebx + 0x14c], ecx
jle 0x461aef
test ecx, ecx
js 0x461c54
cmp ecx, dword [ebx + 0x14c]
jge 0x461c54
mov eax, dword [ebx + 0x148]
mov eax, dword [eax + ecx*4]
lea ecx, [ebp - 0x40]
add eax, 4
push eax
call fcn.004090b0
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [ebx + 0x14c]
jl 0x461ab7
mov eax, dword [edi]
lea ecx, [ebp - 0x40]
push 0x5c
push 0x3b
push ecx
push str.Replaces
lea ecx, [ebx + 4]
push ecx
mov ecx, edi
call dword [eax + 0x30]
mov ecx, dword [ebx + 0x154]
test ecx, ecx
je 0x461b93
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x24], eax
lea eax, [ecx + 4]
mov dword [ebp - 0x28], eax
call fcn.004043d0
mov ecx, eax
test ecx, ecx
je 0x461d26
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x61
lea ecx, [ebp + 8]
push str.NextDeprecated
call fcn.00403470
test al, al
jne 0x461b61
push 0xe
push str.NextDeprecated
lea ecx, [ebp + 8]
call fcn.004035e0
mov byte [ebp - 4], 0x62
lea eax, [ebp + 8]
push dword [ebp - 0x28]
mov ecx, edi
push eax
lea eax, [ebx + 4]
push eax
call dword [ebp - 0x24]
mov byte [ebp - 4], 0x5d
mov eax, esi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461b93
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x4b
lea ecx, [ebp - 0x40]
call fcn.00409010
mov byte [ebp - 4], 0x24
mov eax, esi
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461bbd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x10
mov eax, esi
mov edx, dword [ebp - 0x18]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461bdb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov eax, esi
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461bf9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x461c18
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x8000000b
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
push 0x80004005
call fcn.00402570
int3