Function at 0x402e70
Capabilities:
Check http status code
Connect to http server
Send data
Send http request

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x596f99
mov eax, dword fs:[0]
push eax
sub esp, 0x160
mov eax, dword [0x60cff4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x150], ecx
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x148], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x128], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x144], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x140], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x134], eax
mov eax, dword [0x61643c]
add eax, 0xfffffff0
mov dword [ebp - 0x130], edi
push eax
call fcn.00406350
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x164], esi
mov dword [ebp - 4], 0
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403f97
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x160], eax
mov byte [ebp - 4], 1
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403f97
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x15c], eax
lea eax, [ebp - 0x168]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x15c]
push eax
lea eax, [ebp - 0x160]
push eax
lea eax, [ebp - 0x16c]
push eax
push esi
call fcn.00433ed5
or ebx, 0xffffffff
test eax, eax
je 0x402fca
mov eax, dword [ebp - 0x150]
push 0
push 0
push 3
push 0
push 0
push dword [ebp - 0x168]
push dword [ebp - 0x160]
push dword [eax + 8]
call dword [sym.imp.WININET.dll_InternetConnectW]
mov dword [ebp - 0x150], eax
test eax, eax
je 0x402fca
push 0
push 0x80c00200
push 0
push 0
push 0
push dword [ebp - 0x15c]
push str.POST
push eax
call dword [sym.imp.WININET.dll_HttpOpenRequestW]
mov dword [ebp - 0x14c], eax
test eax, eax
jne 0x402fd2
push dword [ebp - 0x150]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
or edi, 0xffffffff
jmp 0x403f0e
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403f97
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x12c], eax
lea eax, [ebp - 0x12c]
mov byte [ebp - 4], 3
push str._REQUESTINFO_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str._FIRMUPDATETOOLINFO_
push eax
call fcn.00405780
mov eax, dword [ebp - 0x148]
push dword [eax]
lea eax, [ebp - 0x12c]
push str._FIRMCATEGORY__s__FIRMCATEGORY_
push eax
call fcn.00405780
push dword [0x616414]
lea eax, [ebp - 0x12c]
push str._OS__s__OS_
push eax
call fcn.00405780
add esp, 0x28
mov dword [ebp - 0x124], 0x114
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
push dword [ebp - 0x120]
lea eax, [ebp - 0x12c]
push str._OSVERSION__d__OSVERSION_
push eax
call fcn.00405780
xor eax, eax
cmp byte [0x6163c5], al
setne al
push eax
lea eax, [ebp - 0x12c]
push str._INSPECTMODE__d__INSPECTMODE_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str.__FIRMUPDATETOOLINFO_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str._FIRMUPDATEINFO_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str._MODELINFO_
push eax
call fcn.00405780
push dword [edi + 8]
lea eax, [ebp - 0x12c]
push str._SELIALNO__s__SELIALNO_
push eax
call fcn.00405780
push dword [edi + 0xc]
lea eax, [ebp - 0x12c]
push str._NAME__s__NAME_
push eax
call fcn.00405780
add esp, 0x48
lea eax, [ebp - 0x12c]
push dword [edi + 0x10]
push str._SPEC__s__SPEC_
push eax
call fcn.00405780
mov eax, dword [ebp - 0x128]
push dword [eax + 4]
lea eax, [ebp - 0x12c]
push str._DRIVER__s__DRIVER_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str._FIRMINFO_
push eax
call fcn.00405780
mov eax, dword [ebp - 0x130]
xor edi, edi
add esp, 0x20
cmp dword [eax + 0x1c], edi
jle 0x4031e1
lea eax, [ebp - 0x12c]
push str._FIRM_
push eax
call fcn.00405780
add esp, 8
test edi, edi
js 0x403f92
mov eax, dword [ebp - 0x130]
cmp edi, dword [eax + 0x1c]
jge 0x403f92
mov eax, dword [eax + 0x18]
lea ecx, [edi*4]
push dword [eax + ecx]
lea eax, [ebp - 0x12c]
push str._ID__s__ID_
push eax
call fcn.00405780
mov eax, dword [ebp - 0x130]
add esp, 0xc
cmp edi, dword [eax + 0x30]
jge 0x403f92
mov eax, dword [eax + 0x2c]
lea ecx, [edi*4]
push dword [eax + ecx]
lea eax, [ebp - 0x12c]
push str._VERSION__s__VERSION_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str.__FIRM_
push eax
call fcn.00405780
mov eax, dword [ebp - 0x130]
inc edi
add esp, 0x14
cmp edi, dword [eax + 0x1c]
jl 0x403144
lea eax, [ebp - 0x12c]
push str.__FIRMINFO_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str.__MODELINFO_
push eax
call fcn.00405780
xor ecx, ecx
add esp, 0x10
xor edx, edx
cmp dword [0x6163d0], ecx
jle 0x403248
mov edi, dword [0x6163cc]
mov eax, dword [0x6163d0]
add edi, 0x13
test ecx, ecx
js 0x403f92
cmp ecx, eax
jge 0x403f92
cmp byte [edi], 0
lea eax, [edx + 1]
cmove eax, edx
inc ecx
mov edx, eax
add edi, 0x24
mov eax, dword [0x6163d0]
cmp ecx, eax
jl 0x403220
push edx
lea eax, [ebp - 0x12c]
push str._DRIVERCNT__d__DRIVERCNT_
push eax
call fcn.00405780
mov edi, dword [ebp - 0x140]
lea eax, [ebp - 0x12c]
push dword [edi]
push str._LOGNO__s__LOGNO_
push eax
call fcn.00405780
mov eax, dword [ebp - 0x134]
push dword [eax]
lea eax, [ebp - 0x12c]
push str._ERRBIT__s__ERRBIT_
push eax
call fcn.00405780
mov eax, dword [edi]
add esp, 0x24
mov ecx, 0x5e2a9c
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4032bc
test dx, dx
je 0x4032b8
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4032bc
add eax, 4
add ecx, 4
test dx, dx
jne 0x403296
xor ecx, ecx
jmp 0x4032c1
sbb ecx, ecx
or ecx, 1
xor eax, eax
mov dword [ebp - 0x148], ecx
test ecx, ecx
sete al
push eax
lea eax, [ebp - 0x12c]
push 0x5e2aa0
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str.__FIRMUPDATEINFO_
push eax
call fcn.00405780
lea eax, [ebp - 0x12c]
push str.__REQUESTINFO_
push eax
call fcn.00405780
mov edi, dword [ebp - 0x12c]
add esp, 0x1c
test edi, edi
je 0x403370
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403314
sub ecx, edx
sar ecx, 1
inc ecx
cmp ecx, 0x3fffffff
jg 0x403370
lea eax, [ecx + ecx]
mov dword [ebp - 0x134], eax
call fcn.0056e950
mov eax, esp
mov dword [ebp - 0x140], eax
test eax, eax
je 0x403370
push 0
push 0
push dword [ebp - 0x134]
mov byte [eax], 0
push eax
push 0xffffffffffffffff
push edi
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
xor ecx, ecx
test eax, eax
mov eax, dword [ebp - 0x140]
cmove eax, ecx
jmp 0x403372
xor eax, eax
push dword [edi - 0xc]
or ecx, 0xffffffff
push eax
push 0x16
push str.Content_Type:_text_xml
push dword [ebp - 0x14c]
mov dword [ebp - 0x128], ecx
call dword [sym.imp.WININET.dll_HttpSendRequestW]
test eax, eax
je 0x403ed4
push 0
lea eax, [ebp - 0x134]
mov dword [ebp - 0x134], 4
push eax
lea eax, [ebp - 0x140]
push eax
push 0x20000013
push dword [ebp - 0x14c]
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
je 0x403ed4
cmp dword [ebp - 0x140], 0xc8
jne 0x403ed4
cmp dword [ebp - 0x148], 0
jne 0x403eca
push dword [ebp - 0x14c]
lea eax, [ebp - 0x148]
push eax
call fcn.00404410
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x148]
cmp dword [eax - 0xc], 0
jne 0x403430
lea edx, [eax - 0x10]
mov byte [ebp - 4], 3
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403ed4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x403ed4
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403f97
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x130], eax
push 0x5e2d2c
lea ecx, [ebp - 0x130]
mov byte [ebp - 4], 5
call fcn.004059a0
test al, al
jne 0x403477
push 0
push 0x5e2d2c
lea ecx, [ebp - 0x130]
call fcn.004060b0
mov byte [ebp - 4], 6
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403f97
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x158], eax
lea eax, [ebp - 0x130]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x148]
push eax
lea ecx, [ebp - 0x158]
call fcn.004320d0
mov byte [ebp - 4], 9
mov eax, ebx
mov edx, dword [ebp - 0x130]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4034d6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403f97
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x130], esi
mov byte [ebp - 4], 0xa
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403fa1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x128], eax
push str._RESPONSEINFO_FIRMUPDATEINFO_VERSIONCHECK
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 0xb
call fcn.004059a0
test al, al
jne 0x40353e
push 0x29
push str._RESPONSEINFO_FIRMUPDATEINFO_VERSIONCHECK
lea ecx, [ebp - 0x128]
call fcn.004060b0
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 0xc
push eax
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x158]
call fcn.00432430
mov byte [ebp - 4], 0xd
lea ecx, [esi - 0x10]
mov edx, dword [eax]
mov dword [ebp - 0x140], ecx
lea eax, [edx - 0x10]
mov dword [ebp - 0x134], eax
cmp eax, ecx
je 0x4035d9
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x4035c4
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x4035c4
push dword [ebp - 0x134]
call fcn.00406350
add esp, 4
mov dword [ebp - 0x134], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4035b9
mov esi, dword [ebp - 0x140]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x134]
lea esi, [eax + 0x10]
mov dword [ebp - 0x130], esi
jmp 0x4035d9
push dword [edx - 0xc]
lea ecx, [ebp - 0x130]
push edx
call fcn.004060b0
mov esi, dword [ebp - 0x130]
mov byte [ebp - 4], 0xc
mov eax, ebx
mov edx, dword [ebp - 0x138]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4035fa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x128]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40361b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x144]
lea ecx, [esi - 0x10]
mov dword [ebp - 0x13c], ecx
mov edx, dword [eax]
sub edx, 0x10
mov dword [ebp - 0x134], edx
cmp ecx, edx
je 0x40369e
cmp dword [edx + 0xc], 0
lea eax, [edx + 0xc]
mov dword [ebp - 0x138], eax
jl 0x40368f
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x40368f
push ecx
call fcn.00406350
mov edx, dword [ebp - 0x138]
add esp, 4
mov dword [ebp - 0x140], eax
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403682
mov eax, dword [ebp - 0x134]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x140]
mov ecx, dword [ebp - 0x144]
add eax, 0x10
mov dword [ecx], eax
jmp 0x40369e
push dword [esi - 0xc]
mov ecx, dword [ebp - 0x144]
push esi
call fcn.004060b0
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403fab
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x128], eax
push str._RESPONSEINFO_FIRMUPDATEINFO_MEMORYVERSION
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 0xe
call fcn.004059a0
test al, al
jne 0x4036e5
push 0x2a
push str._RESPONSEINFO_FIRMUPDATEINFO_MEMORYVERSION
lea ecx, [ebp - 0x128]
call fcn.004060b0
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 0xf
push eax
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x158]
call fcn.00432430
mov byte [ebp - 4], 0x10
mov ecx, dword [eax]
lea eax, [esi - 0x10]
lea edx, [ecx - 0x10]
cmp edx, eax
je 0x40376f
mov esi, dword [ebp - 0x13c]
cmp dword [esi + 0xc], 0
jl 0x40375a
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x40375a
push edx
call fcn.00406350
add esp, 4
mov dword [ebp - 0x13c], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40374f
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x13c]
lea esi, [eax + 0x10]
mov dword [ebp - 0x130], esi
jmp 0x40376f
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x130]
call fcn.004060b0
mov esi, dword [ebp - 0x130]
mov byte [ebp - 4], 0xf
mov eax, ebx
mov edx, dword [ebp - 0x138]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403790
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x128]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4037b1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x144]
lea ecx, [esi - 0x10]
add eax, 4
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x134], eax
mov edx, dword [eax]
sub edx, 0x10
mov dword [ebp - 0x138], edx
cmp ecx, edx
je 0x403846
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
mov dword [ebp - 0x13c], edi
mov edi, dword [ebp - 0x12c]
jl 0x40383b
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x403835
push ecx
call fcn.00406350
mov dword [ebp - 0x134], eax
add esp, 4
mov eax, dword [ebp - 0x13c]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403821
mov eax, dword [ebp - 0x138]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 0x144]
mov eax, dword [ebp - 0x134]
add eax, 0x10
mov dword [ecx + 4], eax
jmp 0x403846
mov eax, dword [ebp - 0x134]
push dword [esi - 0xc]
mov ecx, eax
push esi
call fcn.004060b0
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403fb5
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x128], eax
push str._RESPONSEINFO_FIRMUPDATEINFO_FIRMID
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 0x11
call fcn.004059a0
test al, al
jne 0x40388d
push 0x23
push str._RESPONSEINFO_FIRMUPDATEINFO_FIRMID
lea ecx, [ebp - 0x128]
call fcn.004060b0
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 0x12
push eax
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x158]
call fcn.00432430
mov byte [ebp - 4], 0x13
mov ecx, dword [eax]
lea eax, [esi - 0x10]
lea edx, [ecx - 0x10]
cmp edx, eax
je 0x403917
mov esi, dword [ebp - 0x140]
cmp dword [esi + 0xc], 0
jl 0x403902
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x403902
push edx
call fcn.00406350
add esp, 4
mov dword [ebp - 0x13c], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4038f7
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x13c]
lea esi, [eax + 0x10]
mov dword [ebp - 0x130], esi
jmp 0x403917
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x130]
call fcn.004060b0
mov esi, dword [ebp - 0x130]
mov byte [ebp - 4], 0x12
mov eax, ebx
mov edx, dword [ebp - 0x138]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403938
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x128]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403959
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x144]
lea ecx, [esi - 0x10]
add eax, 8
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x134], eax
mov edx, dword [eax]
sub edx, 0x10
mov dword [ebp - 0x138], edx
cmp ecx, edx
je 0x4039ee
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
mov dword [ebp - 0x13c], edi
mov edi, dword [ebp - 0x12c]
jl 0x4039e3
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4039dd
push ecx
call fcn.00406350
mov dword [ebp - 0x134], eax
add esp, 4
mov eax, dword [ebp - 0x13c]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4039c9
mov eax, dword [ebp - 0x138]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 0x144]
mov eax, dword [ebp - 0x134]
add eax, 0x10
mov dword [ecx + 8], eax
jmp 0x4039ee
mov eax, dword [ebp - 0x134]
push dword [esi - 0xc]
mov ecx, eax
push esi
call fcn.004060b0
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403fbf
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x128], eax
push str._RESPONSEINFO_FIRMUPDATEINFO_PATH
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 0x14
call fcn.004059a0
test al, al
jne 0x403a35
push 0x21
push str._RESPONSEINFO_FIRMUPDATEINFO_PATH
lea ecx, [ebp - 0x128]
call fcn.004060b0
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 0x15
push eax
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x158]
call fcn.00432430
mov byte [ebp - 4], 0x16
mov ecx, dword [eax]
lea eax, [esi - 0x10]
lea edx, [ecx - 0x10]
cmp edx, eax
je 0x403abf
mov esi, dword [ebp - 0x140]
cmp dword [esi + 0xc], 0
jl 0x403aaa
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x403aaa
push edx
call fcn.00406350
add esp, 4
mov dword [ebp - 0x13c], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403a9f
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x13c]
lea esi, [eax + 0x10]
mov dword [ebp - 0x130], esi
jmp 0x403abf
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x130]
call fcn.004060b0
mov esi, dword [ebp - 0x130]
mov byte [ebp - 4], 0x15
mov eax, ebx
mov edx, dword [ebp - 0x138]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403ae0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x128]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403b01
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x144]
lea ecx, [esi - 0x10]
add eax, 0x10
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x134], eax
mov edx, dword [eax]
sub edx, 0x10
mov dword [ebp - 0x138], edx
cmp ecx, edx
je 0x403b96
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
mov dword [ebp - 0x13c], edi
mov edi, dword [ebp - 0x12c]
jl 0x403b8b
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x403b85
push ecx
call fcn.00406350
mov dword [ebp - 0x134], eax
add esp, 4
mov eax, dword [ebp - 0x13c]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403b71
mov eax, dword [ebp - 0x138]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 0x144]
mov eax, dword [ebp - 0x134]
add eax, 0x10
mov dword [ecx + 0x10], eax
jmp 0x403b96
mov eax, dword [ebp - 0x134]
push dword [esi - 0xc]
mov ecx, eax
push esi
call fcn.004060b0
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403fc9
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x128], eax
push str._RESPONSEINFO_FIRMUPDATEINFO_LATESTVERSION
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 0x17
call fcn.004059a0
test al, al
jne 0x403bdd
push 0x2a
push str._RESPONSEINFO_FIRMUPDATEINFO_LATESTVERSION
lea ecx, [ebp - 0x128]
call fcn.004060b0
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 0x18
push eax
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x158]
call fcn.00432430
mov byte [ebp - 4], 0x19
mov ecx, dword [eax]
lea eax, [esi - 0x10]
lea edx, [ecx - 0x10]
cmp edx, eax
je 0x403c67
mov esi, dword [ebp - 0x140]
cmp dword [esi + 0xc], 0
jl 0x403c52
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x403c52
push edx
call fcn.00406350
add esp, 4
mov dword [ebp - 0x13c], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403c47
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x13c]
lea esi, [eax + 0x10]
mov dword [ebp - 0x130], esi
jmp 0x403c67
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x130]
call fcn.004060b0
mov esi, dword [ebp - 0x130]
mov byte [ebp - 4], 0x18
mov eax, ebx
mov edx, dword [ebp - 0x138]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403c88
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x128]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403ca9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x144]
lea ecx, [esi - 0x10]
add eax, 0xc
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x134], eax
mov edx, dword [eax]
sub edx, 0x10
mov dword [ebp - 0x138], edx
cmp ecx, edx
je 0x403d3e
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
mov dword [ebp - 0x13c], edi
mov edi, dword [ebp - 0x12c]
jl 0x403d33
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x403d2d
push ecx
call fcn.00406350
mov dword [ebp - 0x134], eax
add esp, 4
mov eax, dword [ebp - 0x13c]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403d19
mov eax, dword [ebp - 0x138]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 0x144]
mov eax, dword [ebp - 0x134]
add eax, 0x10
mov dword [ecx + 0xc], eax
jmp 0x403d3e
mov eax, dword [ebp - 0x134]
push dword [esi - 0xc]
mov ecx, eax
push esi
call fcn.004060b0
call fcn.00433b0d
mov ecx, eax
test ecx, ecx
je 0x403fd3
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x128], eax
push str._RESPONSEINFO_FIRMUPDATEINFO_DLTIME
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 0x1a
call fcn.004059a0
test al, al
jne 0x403d85
push 0x23
push str._RESPONSEINFO_FIRMUPDATEINFO_DLTIME
lea ecx, [ebp - 0x128]
call fcn.004060b0
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 0x1b
push eax
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x158]
call fcn.00432430
mov byte [ebp - 4], 0x1c
mov ecx, dword [eax]
lea eax, [esi - 0x10]
lea edx, [ecx - 0x10]
cmp edx, eax
je 0x403e0f
mov esi, dword [ebp - 0x140]
cmp dword [esi + 0xc], 0
jl 0x403dfa
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x403dfa
push edx
call fcn.00406350
add esp, 4
mov dword [ebp - 0x13c], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403def
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x13c]
lea esi, [eax + 0x10]
mov dword [ebp - 0x130], esi
jmp 0x403e0f
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x130]
call fcn.004060b0
mov esi, dword [ebp - 0x130]
mov byte [ebp - 4], 0x1b
mov eax, ebx
mov edx, dword [ebp - 0x138]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403e30
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x128]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403e51
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push 0
push esi
call fcn.005777e9
mov ecx, dword [ebp - 0x144]
add esp, 0xc
mov byte [ebp - 4], 9
add esi, 0xfffffff0
mov dword [ecx + 0x14], eax
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x403e82
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, ebx
mov edx, dword [ebp - 0x158]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403ea3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, ebx
mov edx, dword [ebp - 0x148]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403ec4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x164]
mov dword [ebp - 0x128], 1
push dword [ebp - 0x14c]
mov ebx, dword [sym.imp.WININET.dll_InternetCloseHandle]
call ebx
push dword [ebp - 0x150]
call ebx
or ebx, 0xffffffff
mov byte [ebp - 4], 2
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x403f08
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x128]
mov byte [ebp - 4], 1
mov eax, ebx
mov edx, dword [ebp - 0x15c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403f2f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, ebx
mov edx, dword [ebp - 0x160]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403f50
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x403f6c
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, edi
lea esp, [ebp - 0x17c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0056e21e
mov esp, ebp
pop ebp
ret 0x18
call fcn.00433611
push 0x80004005
call fcn.00406290
push 0x80004005
call fcn.00406290
push 0x80004005
call fcn.00406290
push 0x80004005
call fcn.00406290
push 0x80004005
call fcn.00406290
push 0x80004005
call fcn.00406290
push 0x80004005
call fcn.00406290
int3