Function at 0x497840
Capabilities:
Create http request

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4dbed2
mov eax, dword fs:[0]
push eax
sub esp, 0x48
push ebx
push esi
push edi
mov eax, dword [0x523f10]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 0x18], ebx
call fcn.004ab443
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x49788a
push 0x80004005
call fcn.00422000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], ebx
mov dword [ebp - 0x38], ebx
call fcn.004ab443
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4978b9
push 0x80004005
call fcn.00422000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x14], eax
lea ecx, [edi + 0x60]
push ecx
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x14]
mov esi, 1
mov dword [edi + 0x178], ebx
call fcn.00424ef9
push 7
lea edx, [ebp - 0x40]
push edx
lea ecx, [ebp - 0x14]
call fcn.004249da
mov byte [ebp - 4], 2
mov eax, dword [eax]
push str.http:__
push eax
mov dword [ebp - 0x18], esi
call fcn.004b9dc0
add esp, 8
cmp eax, ebx
sete al
test al, al
jne 0x497943
push 8
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x14]
call fcn.004249da
mov eax, dword [eax]
push str.https:__
push eax
mov dword [ebp - 0x18], 3
call fcn.004b9dc0
add esp, 8
cmp eax, ebx
sete al
mov byte [ebp - 0xd], 0
test al, al
je 0x497947
mov byte [ebp - 0xd], 1
test byte [ebp - 0x18], 2
je 0x497970
mov eax, dword [ebp - 0x44]
and dword [ebp - 0x18], 0xfffffffd
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497970
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], esi
test byte [ebp - 0x18], 1
je 0x49799c
mov eax, dword [ebp - 0x40]
and dword [ebp - 0x18], 0xfffffffe
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49799c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp - 0xd], 0
je 0x497c23
push 0x14
call fcn.004aad32
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x4979d6
push ebx
push ebx
push ebx
push ebx
push str.CHttpRemoteFile
mov dword [esi], vtable.CHttpRemoteFile.0
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [esi + 0xc], eax
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
jmp 0x4979d8
xor esi, esi
mov ecx, dword [ebp + 8]
push ecx
mov dword [ebp - 0x4c], esp
mov ebx, esp
mov dword [ecx + 0x178], esi
mov esi, dword [ebp - 0x14]
push 0x5c
push ecx
add esi, 0xfffffff0
mov dword [ebp - 0x4c], esp
mov edi, esp
push esi
call fcn.0042545f
add esp, 4
add eax, 0x10
push ebx
mov dword [edi], eax
call fcn.0046c060
lea edx, [ebp - 0x44]
add esp, 0xc
push edx
call fcn.0046bdc0
add esp, 8
mov ebx, eax
mov byte [ebp - 4], 3
mov eax, dword [ebx]
mov edi, dword [eax - 0xc]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, edi
or eax, ecx
jge 0x497a3c
push edi
mov ecx, ebx
call fcn.00422527
mov eax, dword [ebx]
lea ecx, [edi + 1]
push ecx
push eax
call fcn.004bca75
add esp, 8
test edi, edi
jl 0x497c9a
mov eax, dword [ebx]
cmp edi, dword [eax - 8]
jg 0x497c9a
mov dword [eax - 0xc], edi
mov edx, dword [ebx]
xor eax, eax
mov word [edx + edi*2], ax
mov ebx, dword [ebx]
sub ebx, 0x10
push ebx
call fcn.0042545f
add eax, 0x10
add esp, 4
mov dword [ebp - 0x34], eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497aa0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x34]
push str.aspx
push edi
call fcn.004b9dc0
add esp, 8
test eax, eax
sete al
test al, al
jne 0x497aec
push 0x50df94
push edi
call fcn.004b9dc0
add esp, 8
test eax, eax
sete al
test al, al
jne 0x497aec
push 0x50df9c
push edi
call fcn.004b9dc0
add esp, 8
test eax, eax
sete al
test al, al
je 0x497c01
mov edi, dword [ebp - 0x14]
mov eax, dword [edi - 0xc]
test eax, eax
jle 0x497b0e
push 0x3f
push edi
call fcn.004ba628
add esp, 8
test eax, eax
je 0x497b0e
sub eax, edi
sar eax, 1
cmp eax, 0xffffffff
jne 0x497b5c
mov edx, dword [edi - 0xc]
mov eax, dword [esi + 8]
mov ecx, 1
sub ecx, dword [esi + 0xc]
lea ebx, [edx + 1]
sub eax, ebx
or eax, ecx
mov dword [ebp - 0x40], edx
jge 0x497b37
push ebx
lea ecx, [ebp - 0x14]
call fcn.00422527
mov edi, dword [ebp - 0x14]
mov edx, dword [ebp - 0x40]
mov ecx, 0x3f
mov word [edi + edx*2], cx
test ebx, ebx
jl 0x497c9a
cmp ebx, dword [edi - 8]
jg 0x497c9a
xor edx, edx
mov dword [edi - 0xc], ebx
mov word [edi + ebx*2], dx
jmp 0x497ba8
mov edx, dword [edi - 0xc]
mov eax, dword [esi + 8]
mov ecx, 1
sub ecx, dword [esi + 0xc]
lea ebx, [edx + 1]
sub eax, ebx
or eax, ecx
mov dword [ebp - 0x40], edx
jge 0x497b85
push ebx
lea ecx, [ebp - 0x14]
call fcn.00422527
mov edi, dword [ebp - 0x14]
mov edx, dword [ebp - 0x40]
mov eax, 0x26
mov word [edi + edx*2], ax
test ebx, ebx
jl 0x497c9a
cmp ebx, dword [edi - 8]
jg 0x497c9a
xor ecx, ecx
mov dword [edi - 0xc], ebx
mov word [edi + ebx*2], cx
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x68]
mov ecx, dword [eax + 0x64]
push edx
mov edx, dword [eax + 0x38]
push ecx
push edx
lea eax, [ebp - 0x40]
push str.version_spkgId_sbuildUID_s
push eax
call fcn.0046bd30
add esp, 0x14
mov byte [ebp - 4], 6
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x14]
call fcn.00425b2b
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497bfe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x34]
lea eax, [edi - 0x10]
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497c6c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x497c6c
push 0x10
call fcn.004aad32
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x497c64
mov dword [esi], vtable.CFsRemoteFile.0
call fcn.004ab443
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x497c53
push 0x80004005
call fcn.00422000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esi + 0xc], eax
jmp 0x497c66
xor esi, esi
mov dword [edi + 0x178], esi
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x497ce4
push 1
lea edx, [ebp - 0x40]
push edx
lea ecx, [ebp - 0x14]
call fcn.00424993
mov byte [ebp - 4], 7
mov ecx, dword [eax]
mov eax, dword [ecx - 0xc]
or dword [ebp - 0x18], 4
cmp eax, 1
jne 0x497cad
test eax, eax
jge 0x497ca4
push 0x80070057
call fcn.00422000
movzx eax, word [ecx]
cmp ax, 0x2f
je 0x497ce0
push 1
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x14]
call fcn.00424993
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
or dword [ebp - 0x18], 8
cmp ecx, 1
jne 0x497ce4
test ecx, ecx
jge 0x497cd7
push 0x80070057
call fcn.00422000
movzx eax, word [eax]
cmp ax, 0x5c
jne 0x497ce4
mov bl, 1
jmp 0x497ce6
xor bl, bl
test byte [ebp - 0x18], 8
je 0x497d0f
mov eax, dword [ebp - 0x44]
and dword [ebp - 0x18], 0xfffffff7
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497d0f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 1
test byte [ebp - 0x18], 4
je 0x497d3b
mov eax, dword [ebp - 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497d3b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x497d8d
mov ecx, dword [ebp + 8]
push str..xml
add ecx, 0x24
push ecx
lea edx, [ebp - 0x44]
push edx
call fcn.00424a3a
add esp, 0xc
mov byte [ebp - 4], 8
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x14]
call fcn.00425b2b
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497d8d
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 + 0x178], 0
je 0x4989c7
mov edx, dword [ebp - 0x14]
cmp dword [edx - 0xc], 0
je 0x4989c7
push ecx
mov ebx, edx
lea esi, [ebx - 0x10]
mov dword [ebp - 0x4c], esp
mov edi, esp
push esi
mov dword [ebp - 0x44], esi
call fcn.0042545f
add eax, 0x10
mov dword [edi], eax
mov edi, dword [ebp + 8]
mov ecx, dword [edi + 0x178]
mov eax, dword [ecx]
mov edx, dword [eax]
add esp, 4
call edx
test eax, eax
jne 0x497e1c
push ecx
mov eax, esp
mov dword [ebp + 8], esp
push ebx
push str.CVirtAutoUpdate::CheckForNewVersion:_SetLocation_failed_for__s_
push eax
call fcn.0046bd30
add esp, 0xc
call fcn.00496e00
add esp, 4
mov byte [ebp - 4], 0
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x498a6c
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
jmp 0x498a6c
mov ecx, dword [edi + 0x178]
mov edx, dword [ecx]
mov edx, dword [edx + 0x10]
lea eax, [ebp - 0x38]
push eax
call edx
test eax, eax
ja 0x497e3f
push ecx
mov eax, esp
mov dword [ebp + 8], esp
push ebx
push str.CVirtAutoUpdate::CheckForNewVersion:_cannot_download_XML_file_from__s_
jmp 0x497de5
push eax
lea ecx, [ebp - 0x3c]
push ecx
mov ecx, dword [ebp - 0x38]
call fcn.0046c220
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x38]
push edx
call fcn.004ba2c5
mov ebx, dword [ebp - 0x3c]
add esp, 8
mov eax, esp
mov dword [ebp - 0x4c], esp
push ebx
push str.CVirtAutoUpdate::CheckForNewVersion:_XmlData_s
push eax
call fcn.0046bd30
add esp, 0xc
call fcn.00496e00
add esp, 4
lea ecx, [ebp - 0x20]
push 0
push ecx
mov ecx, ebx
call fcn.00487bc0
add esp, 8
mov byte [ebp - 4], 0xb
cmp dword [ebp - 0x20], 0
jne 0x497eeb
mov eax, dword [ebp - 0x14]
push ecx
mov edx, esp
mov dword [ebp + 8], esp
push eax
push str.CVirtAutoUpdate::CheckForNewVersion:_cannot_download_XML_file_from__s_
push edx
call fcn.0046bd30
add esp, 0xc
call fcn.00496e00
add esp, 4
lea ecx, [ebp - 0x20]
push ecx
mov byte [ebp - 4], 0xa
call fcn.00488650
add ebx, 0xfffffff0
mov byte [ebp - 4], 1
lea edx, [ebx + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x497df6
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
jmp 0x497df6
push 0
push str.AutoUpdate
lea ecx, [ebp - 0x2c]
push ecx
lea eax, [ebp - 0x20]
call fcn.00488e00
mov byte [ebp - 4], 0xc
cmp dword [ebp - 0x2c], 0
jne 0x497f6b
mov eax, dword [ebp - 0x14]
push ecx
mov edx, esp
mov dword [ebp + 8], esp
push eax
push str.CVirtAutoUpdate::CheckForNewVersion:_no_AutoUpdate_info_returned_from_server:__s
push edx
call fcn.0046bd30
add esp, 0xc
call fcn.00496e00
add esp, 4
lea ecx, [ebp - 0x2c]
push ecx
mov byte [ebp - 4], 0xb
call fcn.00488650
lea edx, [ebp - 0x20]
push edx
mov byte [ebp - 4], 0xa
call fcn.00488650
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497df6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x497df6
push 0
push 0x50e284
lea ecx, [ebp - 0x28]
push ecx
lea eax, [ebp - 0x2c]
call fcn.00488e00
mov byte [ebp - 4], 0xd
mov edi, dword [ebp - 0x28]
test edi, edi
jne 0x497ff9
mov eax, dword [ebp - 0x14]
push ecx
mov edx, esp
mov dword [ebp + 8], esp
push eax
push str.CVirtAutoUpdate::CheckForNewVersion:_no_Pkg_info_returned_from_server:__s
push edx
call fcn.0046bd30
add esp, 0xc
call fcn.00496e00
add esp, 4
lea ecx, [ebp - 0x28]
push ecx
mov byte [ebp - 4], 0xc
call fcn.00488650
lea edx, [ebp - 0x2c]
push edx
mov byte [ebp - 4], 0xb
call fcn.00488650
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 0xa
call fcn.00488650
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x497df6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x497df6
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x498025
mov eax, dword [esi]
push 0x50e324
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49805e
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x498008
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x49818c
mov eax, dword [esi]
push str.preRemove
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x498136
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x498038
jmp 0x49818c
cmp dword [esi + 4], 0
je 0x498025
mov ecx, dword [ebp + 8]
mov eax, dword [edi + 0x10]
mov edx, dword [ecx + 0x64]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x4980a1
lea esp, [esp]
mov eax, dword [esi]
push 0x50e324
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49812e
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x498080
xor esi, esi
mov eax, dword [ebp - 0x34]
push eax
push esi
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x498025
mov edx, dword [ebp - 0x14]
push ecx
mov ecx, esp
mov dword [ebp + 8], esp
push edx
push str.CVirtAutoUpdate::CheckForNewVersion:_PkgId_info_mismatch_returned_from_server:__s
push ecx
call fcn.0046bd30
add esp, 0xc
call fcn.00496e00
add esp, 4
lea eax, [ebp - 0x28]
push eax
mov byte [ebp - 4], 0xc
call fcn.00488650
lea ecx, [ebp - 0x2c]
push ecx
mov byte [ebp - 4], 0xb
call fcn.00488650
lea edx, [ebp - 0x20]
push edx
mov byte [ebp - 4], 0xa
call fcn.00488650
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x498122
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 - 0x44]
jmp 0x498a53
mov esi, dword [esi + 4]
jmp 0x4980a3
cmp dword [esi + 4], 0
je 0x49818c
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x498171
jmp 0x498150
mov eax, dword [esi]
push str.preRemove
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x498323
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x498150
xor esi, esi
push str.true
push esi
call fcn.004b98c4
mov ecx, dword [ebp + 8]
add esp, 8
neg eax
sbb eax, eax
inc eax
mov dword [ecx + 4], eax
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x4981c1
jmp 0x4981a0
mov eax, dword [esi]
push str.version
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49832b
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x4981a0
xor esi, esi
mov ecx, dword [ebp + 8]
add ecx, 8
push esi
call fcn.00424844
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x498201
mov edi, edi
mov eax, dword [esi]
push str.buildUID
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x498333
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x4981e0
xor esi, esi
mov ecx, dword [ebp + 8]
add ecx, 0xc
push esi
call fcn.00424844
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x498241
mov edi, edi
mov eax, dword [esi]
push str.releaseDate
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49833b
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x498220
xor esi, esi
mov ecx, dword [ebp + 8]
add ecx, 0x10
push esi
call fcn.00424844
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x40], eax
test eax, eax
jle 0x498281
mov edi, edi
mov eax, dword [esi]
push str.hash
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x498343
inc ebx
add esi, 8
cmp ebx, dword [ebp - 0x40]
jl 0x498260
xor esi, esi
mov ecx, dword [ebp + 8]
add ecx, 0x14
push esi
call fcn.00424844
mov ebx, dword [edi + 0x10]
mov edi, dword [edi + 0x28]
xor esi, esi
test ebx, ebx
jle 0x4982c0
jmp 0x4982a0
mov eax, dword [edi]
push str.updateCondition
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49834b
inc esi
add edi, 8
cmp esi, ebx
jl 0x4982a0
xor edi, edi
push edi
lea ecx, [ebp - 0x24]
call fcn.004247eb
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x24]
push str.IfHigher
push edx
call fcn.004b98c4
add esp, 8
test eax, eax
jne 0x498353
mov esi, dword [ebp + 8]
push ecx
lea eax, [esi + 0x38]
mov ecx, esp
mov dword [ebp - 0x4c], esp
push eax
call fcn.004247d6
push ecx
mov byte [ebp - 4], 0xf
lea eax, [esi + 8]
mov ecx, esp
mov dword [ebp - 0x48], esp
push eax
call fcn.004247d6
mov byte [ebp - 4], 0xe
call fcn.00470720
xor ecx, ecx
add esp, 8
test eax, eax
setg cl
mov dword [esi], ecx
jmp 0x4983bf
mov esi, dword [esi + 4]
jmp 0x498173
mov esi, dword [esi + 4]
jmp 0x4981c3
mov esi, dword [esi + 4]
jmp 0x498203
mov esi, dword [esi + 4]
jmp 0x498243
mov esi, dword [esi + 4]
jmp 0x498283
mov edi, dword [edi + 4]
jmp 0x4982c2
mov edx, dword [ebp - 0x24]
push str.IfDifferent
push edx
call fcn.004b98c4
add esp, 8
test eax, eax
jne 0x498381
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x38]
push eax
lea eax, [esi + 8]
call fcn.0042486e
neg eax
sbb eax, eax
neg eax
mov dword [esi], eax
jmp 0x4983bf
mov eax, dword [ebp - 0x24]
push str.Force
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
jne 0x4983a1
mov ecx, dword [ebp + 8]
mov dword [ecx], 1
jmp 0x4983bf
mov edx, dword [ebp - 0x24]
push str.Never
push edx
call fcn.004b98c4
add esp, 8
test eax, eax
jne 0x4983bf
mov eax, dword [ebp + 8]
mov dword [eax], 0
push str.Exception
lea eax, [ebp - 0x28]
call fcn.00488db0
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x40], eax
test ecx, ecx
jle 0x498889
lea ecx, [ebp - 0x18]
push ecx
mov ebx, str.Exception
lea edi, [ebp - 0x28]
call fcn.00488ea0
mov byte [ebp - 4], 0x10
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x498403
lea edx, [ebp - 0x18]
push edx
jmp 0x498870
mov esi, dword [eax + 0x10]
mov edi, dword [eax + 0x28]
xor ebx, ebx
test esi, esi
jle 0x498430
nop
mov eax, dword [edi]
push str.minClientVersion
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4984dd
inc ebx
add edi, 8
cmp ebx, esi
jl 0x498410
xor edi, edi
push edi
lea ecx, [ebp - 0x34]
call fcn.004247eb
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x18]
mov esi, dword [eax + 0x10]
mov edi, dword [eax + 0x28]
xor ebx, ebx
test esi, esi
jle 0x498470
mov edi, edi
mov eax, dword [edi]
push str.maxClientVersion
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4984e5
inc ebx
add edi, 8
cmp ebx, esi
jl 0x498450
xor edi, edi
push edi
lea ecx, [ebp - 0x30]
call fcn.004247eb
mov bl, 0x12
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x34]
cmp dword [eax - 0xc], 0
je 0x4984ea
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x48], esp
mov esi, esp
push eax
call fcn.0042545f
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 0x13
mov eax, dword [ebp + 8]
add eax, 0x38
mov ecx, esp
mov dword [ebp - 0x50], esp
push eax
call fcn.004247d6
mov byte [ebp - 4], bl
call fcn.00470720
add esp, 8
test eax, eax
jge 0x4984ea
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x49883d
mov edi, dword [edi + 4]
jmp 0x498432
mov edi, dword [edi + 4]
jmp 0x498472
mov eax, dword [ebp - 0x30]
cmp dword [eax - 0xc], 0
je 0x49852b
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x50], esp
mov esi, esp
push eax
call fcn.0042545f
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 0x14
mov edx, dword [ebp + 8]
add edx, 0x38
mov ecx, esp
mov dword [ebp - 0x48], esp
push edx
call fcn.004247d6
mov byte [ebp - 4], bl
call fcn.00470720
add esp, 8
test eax, eax
jg 0x4984c1
mov esi, dword [ebp - 0x18]
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x4985ab
lea ecx, [ecx]
mov eax, dword [edi]
push str.shouldUpdate
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49855f
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498540
jmp 0x4985ab
cmp dword [edi + 4], 0
je 0x4985ab
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x498591
mov eax, dword [edi]
push str.shouldUpdate
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4985df
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498574
xor edi, edi
push str.true
push edi
call fcn.004b98c4
mov edx, dword [ebp + 8]
add esp, 8
neg eax
sbb eax, eax
inc eax
mov dword [edx], eax
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x498638
mov edi, edi
mov eax, dword [edi]
push str.preRemove
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4985e4
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x4985c0
jmp 0x498638
mov edi, dword [edi + 4]
jmp 0x498593
cmp dword [edi + 4], 0
je 0x498638
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x49861d
lea esp, [esp]
mov eax, dword [edi]
push str.preRemove
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x498666
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498600
xor edi, edi
push str.true
push edi
call fcn.004b98c4
mov ecx, dword [ebp + 8]
add esp, 8
neg eax
sbb eax, eax
inc eax
mov dword [ecx + 4], eax
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x4986ab
mov eax, dword [edi]
push str.version
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49866b
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498647
jmp 0x4986ab
mov edi, dword [edi + 4]
jmp 0x49861f
cmp dword [edi + 4], 0
je 0x4986ab
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x49869d
mov eax, dword [edi]
push str.version
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4986df
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498680
xor edi, edi
mov ecx, dword [ebp + 8]
push edi
add ecx, 8
call fcn.00424844
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x49872b
lea ebx, [ebx]
mov eax, dword [edi]
push str.buildUID
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4986e4
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x4986c0
jmp 0x49872b
mov edi, dword [edi + 4]
jmp 0x49869f
cmp dword [edi + 4], 0
je 0x49872b
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x49871d
lea esp, [esp]
mov eax, dword [edi]
push str.buildUID
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x49875f
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498700
xor edi, edi
mov ecx, dword [ebp + 8]
push edi
add ecx, 0xc
call fcn.00424844
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x4987ab
lea ebx, [ebx]
mov eax, dword [edi]
push str.releaseDate
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x498764
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498740
jmp 0x4987ab
mov edi, dword [edi + 4]
jmp 0x49871f
cmp dword [edi + 4], 0
je 0x4987ab
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x49879d
lea esp, [esp]
mov eax, dword [edi]
push str.releaseDate
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4987df
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x498780
xor edi, edi
mov ecx, dword [ebp + 8]
push edi
add ecx, 0x10
call fcn.00424844
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x498826
lea ebx, [ebx]
mov eax, dword [edi]
push str.hash
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4987e4
inc ebx
add edi, 8
cmp ebx, dword [ebp - 0x48]
jl 0x4987c0
jmp 0x498826
mov edi, dword [edi + 4]
jmp 0x49879f
cmp dword [edi + 4], 0
je 0x498826
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x28]
xor ebx, ebx
test eax, eax
jle 0x498818
mov esi, eax
mov eax, dword [edi]
push str.hash
push eax
call fcn.004b98c4
add esp, 8
test eax, eax
je 0x4989bf
inc ebx
add edi, 8
cmp ebx, esi
jl 0x4987f8
xor edi, edi
mov ecx, dword [ebp + 8]
push edi
add ecx, 0x14
call fcn.00424844
mov byte [ebp - 4], 0x11
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 0x498849
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0x10
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 0x49886c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x18]
push ecx
mov byte [ebp - 4], 0xe
call fcn.00488650
mov eax, dword [ebp - 0x40]
inc eax
cmp eax, dword [ebp - 0x4c]
mov dword [ebp - 0x40], eax
jl 0x4983de
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0x14]
mov eax, dword [ebx + 0xc]
push ecx
mov ecx, dword [ebx + 0x10]
mov dword [ebp - 0x50], esp
mov esi, esp
push edx
mov edx, dword [ebp - 0x24]
push eax
push ecx
push edx
push ecx
lea edi, [ebx + 0x38]
mov ecx, esp
mov dword [ebp - 0x50], esp
push edi
call fcn.004247d6
push ecx
mov byte [ebp - 4], 0x15
mov ecx, esp
mov dword [ebp - 0x4c], esp
add ebx, 8
push ebx
call fcn.004247d6
mov byte [ebp - 4], 0xe
call fcn.00470720
mov ecx, dword [ebx]
mov edx, dword [ebp + 8]
add esp, 8
push eax
mov eax, dword [edi]
push eax
mov eax, dword [edx]
push ecx
push eax
push str.CVirtAutoUpdate::CheckForNewVersion:_ServerVer:_ShouldUpdate_d___ServerVer_s__MyVer_s__Comp_d___UpdateCondition_s__ReleaseDate_s__BuildUID_s__Hash_s
push esi
call fcn.0046bd30
add esp, 0x28
call fcn.00496e00
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x498916
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x28]
push ecx
mov byte [ebp - 4], 0xc
call fcn.00488650
lea edx, [ebp - 0x2c]
push edx
mov byte [ebp - 4], 0xb
call fcn.00488650
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 0xa
call fcn.00488650
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x498960
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 - 0x44]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x498980
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
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 0x4989a6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
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
mov edi, dword [edi + 4]
jmp 0x49881a
push ecx
mov esi, esp
mov dword [ebp + 8], esp
mov dword [ebp + 8], esi
call fcn.004ab443
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4989ea
push 0x80004005
call fcn.00422000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esi], eax
mov ecx, str.CVirtAutoUpdate::CheckForNewVersion:_unknown_protocol___XML_path_
mov byte [ebp - 4], 9
test ecx, 0xffff0000
jne 0x498a23
mov edx, ecx
movzx edi, dx
push edi
call fcn.004b33b0
test eax, eax
je 0x498a3d
push edi
push eax
mov ecx, esi
call fcn.00424e6b
jmp 0x498a3d
push str.CVirtAutoUpdate::CheckForNewVersion:_unknown_protocol___XML_path_
call fcn.004b9b7a
add esp, 4
push eax
push str.CVirtAutoUpdate::CheckForNewVersion:_unknown_protocol___XML_path_
mov ecx, esi
call fcn.004253ee
mov byte [ebp - 4], 1
call fcn.00496e00
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x14]
add esp, 4
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x498a6c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
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 0x498a92
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
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