Function at 0x408d60
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x460e2e
mov eax, dword fs:[0]
push eax
sub esp, 0x434
mov eax, dword [0x4786a0]
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
xor ebx, ebx
mov dword [ebp - 0x358], ebx
mov eax, dword [0x478034]
mov edx, dword [eax + 0xc]
mov esi, ecx
mov ecx, 0x478034
mov dword [ebp - 0x308], esi
call edx
add eax, 0x10
mov dword [ebp - 0x318], eax
mov dword [ebp - 4], ebx
mov eax, dword [0x478034]
mov edx, dword [eax + 0xc]
mov ecx, 0x478034
call edx
add eax, 0x10
mov dword [ebp - 0x324], eax
mov byte [ebp - 4], 1
mov eax, dword [0x478034]
mov edx, dword [eax + 0xc]
mov ecx, 0x478034
call edx
add eax, 0x10
mov dword [ebp - 0x31c], eax
mov byte [ebp - 4], 2
mov eax, dword [0x478034]
mov edx, dword [eax + 0xc]
mov ecx, 0x478034
call edx
add eax, 0x10
mov dword [ebp - 0x348], eax
mov byte [ebp - 4], 3
mov eax, dword [0x478034]
mov edx, dword [eax + 0xc]
mov ecx, 0x478034
call edx
add eax, 0x10
mov dword [ebp - 0x30c], eax
mov byte [ebp - 4], 4
mov eax, dword [0x478034]
mov edx, dword [eax + 0xc]
mov ecx, 0x478034
call edx
add eax, 0x10
mov dword [ebp - 0x32c], eax
lea edi, [esi + 0x44]
mov byte [ebp - 4], 5
mov dword [ebp - 0x330], edi
cmp dword [edi + 0x34], ebx
je 0x4090bb
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 8]
push str.application
push eax
push edi
call fcn.0043eb10
cmp eax, ebx
je 0x4090bb
mov edx, dword [edi + 0x30]
mov ecx, eax
mov esi, eax
sar ecx, 0x10
mov ecx, dword [edx + ecx*4]
and esi, 0xffff
shl esi, 5
mov edx, dword [ecx + esi + 0x10]
mov dword [edi + 0xc], eax
mov eax, 1
mov dword [edi + 8], edx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x20], ebx
mov dword [edi + 0x24], ebx
mov dword [edi + 0x1c], eax
mov ecx, dword [edi + 0xc]
cmp ecx, ebx
je 0x408ec8
cmp eax, eax
jne 0x408ec8
mov eax, ebx
mov dword [edi + 8], ecx
xor ecx, ecx
cmp eax, ebx
setne cl
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], ebx
mov dword [edi + 0x20], ebx
mov dword [edi + 0x24], ebx
mov dword [edi + 0x1c], ecx
mov eax, 0x468854
mov esi, edi
call fcn.0043db30
test al, al
je 0x408f9a
mov eax, edi
call fcn.0043db90
movzx eax, al
mov dword [0x47b5c8], eax
cmp eax, ebx
je 0x408f9a
mov eax, edi
call fcn.0043de40
mov eax, str.KeyInfo
call fcn.0043db30
test al, al
je 0x408f93
mov eax, edi
call fcn.0043de40
mov eax, str.KeyValue
call fcn.0043db30
test al, al
je 0x408f8c
mov eax, edi
call fcn.0043de40
mov eax, str.RSAKeyValue
call fcn.0043db30
test al, al
je 0x408f85
mov eax, edi
call fcn.0043de40
mov eax, str.Modulus
call fcn.0043db30
test al, al
je 0x408f7e
lea esi, [ebp - 0x35c]
mov eax, edi
call fcn.00403ba0
mov edi, dword [ebp - 0x308]
add edi, 0x144
mov byte [ebp - 4], 6
call fcn.0041db20
mov eax, esi
mov byte [ebp - 4], 5
call fcn.0041d790
mov edi, dword [ebp - 0x330]
mov eax, edi
call fcn.0043de80
mov eax, edi
call fcn.0043de80
mov eax, edi
call fcn.0043de80
mov eax, edi
call fcn.0043de80
mov dword [edi + 0xc], ebx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x20], ebx
mov dword [edi + 0x24], ebx
mov dword [edi + 0x1c], ebx
cmp dword [0x47b5c8], ebx
je 0x409387
mov esi, dword [ebp - 0x308]
mov ecx, esi
call fcn.0041a640
test al, al
jne 0x4091bf
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x408ff0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409016
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40903c
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409062
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409087
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
lea eax, [esi + 0x100]
push str.XML_error:_Cant_find_the_application_tag.
push eax
mov ebx, 0x2c
call fcn.00401330
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4090f7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40911d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409143
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409169
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 - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40918f
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
mov ecx, esi
call fcn.0041a9a0
test al, al
jne 0x4092bf
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091f4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40921a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409240
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409266
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40928b
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
mov ecx, esi
mov eax, dword [ecx + 0x90]
sub eax, 0x10
call fcn.004218e0
add eax, 0x10
mov dword [ebp - 0x33c], eax
lea edx, [ebp - 0x33c]
push edx
mov edx, 0x46ce9c
mov byte [ebp - 4], 7
call fcn.0041e6d0
lea eax, [ebp - 0x33c]
push eax
mov edx, str.version_info.xml
call fcn.0041e6d0
mov eax, dword [ebp - 0x33c]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x368], esp
mov esi, esp
call fcn.004218e0
mov ecx, dword [ebp - 0x308]
add eax, 0x10
push ecx
mov dword [esi], eax
call fcn.0041ad30
cmp al, bl
lea eax, [ebp - 0x33c]
jne 0x40937e
call fcn.0041d790
lea eax, [ebp - 0x32c]
call fcn.0041d790
lea eax, [ebp - 0x30c]
call fcn.0041d790
lea eax, [ebp - 0x348]
call fcn.0041d790
lea eax, [ebp - 0x31c]
call fcn.0041d790
lea eax, [ebp - 0x324]
call fcn.0041d790
lea eax, [ebp - 0x318]
call fcn.0041d790
xor al, al
jmp 0x40bb8e
mov byte [ebp - 4], 5
call fcn.0041d790
lea ebx, [ebp - 0x35c]
call fcn.00429ec0
mov byte [ebp - 4], 8
mov esi, dword [ebp - 0x35c]
lea eax, [esi - 0x10]
mov dword [ebp - 0x33c], eax
call fcn.00421810
add eax, 0x10
mov dword [ebp - 0x350], eax
lea edx, [ebp - 0x350]
push edx
mov byte [ebp - 4], 9
call fcn.0041d7b0
mov eax, dword [ebp - 0x350]
mov eax, dword [eax - 0xc]
test eax, eax
jne 0x409531
cmp dword [0x47b5c8], eax
je 0x409730
mov edi, dword [ebp - 0x308]
add edi, 0x100
mov edx, 0x4688b8
call fcn.004011b0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x350]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40941c
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 - 0x33c]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40943f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409465
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40948b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4094b1
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4094d7
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 - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4094fd
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
push ecx
mov ecx, dword [ebp - 0x308]
mov eax, dword [ecx + 0x144]
sub eax, 0x10
mov dword [ebp - 0x368], esp
mov ebx, esp
call fcn.004218e0
add eax, 0x10
lea ecx, [ebp - 0x338]
mov dword [ebx], eax
call fcn.0040c420
xor eax, eax
test esi, esi
setne al
mov byte [ebp - 4], 0xa
test eax, eax
jne 0x409577
push 0x80004005
call fcn.00401680
mov edx, dword [ebp - 0x338]
push esi
push edx
call fcn.00446bc3
add esp, 8
test eax, eax
je 0x409706
mov edi, dword [ebp - 0x308]
add edi, 0x100
mov edx, str.Security_error:_The_loader_manifest_is_not_trusted.
call fcn.004011b0
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x338]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4095cb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x350]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4095f1
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 - 0x33c]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409614
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40963a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409660
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409686
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4096ac
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 - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4096d2
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x338]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409730
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esp, [esp]
cmp dword [edi + 0x34], 0
je 0x40ba5c
mov ecx, dword [edi + 0xc]
mov edx, dword [edi + 8]
push str.product
push ecx
push edi
call fcn.0043eb10
test eax, eax
je 0x40ba5c
mov ecx, dword [edi + 0x30]
mov edx, eax
mov esi, eax
sar edx, 0x10
mov edx, dword [ecx + edx*4]
and esi, 0xffff
shl esi, 5
mov ecx, dword [edx + esi + 0x10]
mov esi, dword [ebp - 0x330]
xor ebx, ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], ebx
mov dword [edi + 0x20], ebx
mov dword [edi + 0x24], ebx
mov dword [edi + 0x1c], 1
mov edi, str.language
lea ecx, [ebp - 0x38c]
mov eax, esi
call fcn.00403bc0
mov byte [ebp - 4], 0xb
mov ecx, dword [eax]
mov edi, dword [ebp - 0x31c]
lea eax, [ecx - 0x10]
add edi, 0xfffffff0
cmp eax, edi
je 0x409806
cmp dword [edi + 0xc], ebx
jl 0x4097f4
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x4097f4
call fcn.004218e0
mov dword [ebp - 0x320], eax
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4097e3
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x31c], ecx
jmp 0x409806
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x31c]
push edx
call fcn.00401330
xor ebx, ebx
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x38c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40982c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [0x47b750]
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
je 0x40956d
mov ecx, dword [ebp - 0x31c]
push eax
push ecx
call fcn.0044646f
add esp, 8
cmp eax, ebx
jne 0x40b4b3
mov ecx, dword [esi + 0xc]
cmp ecx, ebx
je 0x409889
cmp dword [esi + 0x1c], 1
jne 0x409889
mov eax, dword [esi + 0x10]
xor edx, edx
cmp eax, ebx
setne dl
mov dword [esi + 8], ecx
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], ebx
mov dword [esi + 0x20], ebx
mov dword [esi + 0x24], ebx
mov dword [esi + 0x1c], edx
jmp 0x409889
mov esi, dword [ebp - 0x330]
xor edi, edi
cmp dword [esi + 0x34], edi
je 0x40b62e
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 8]
push str.version
push eax
push esi
call fcn.0043eb10
cmp eax, edi
je 0x40b62e
mov edx, dword [esi + 0x30]
mov ecx, eax
mov ebx, eax
sar ecx, 0x10
mov ecx, dword [edx + ecx*4]
and ebx, 0xffff
shl ebx, 5
mov edx, dword [ecx + ebx + 0x10]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], edi
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], edi
mov edi, str.name
lea ecx, [ebp - 0x378]
mov eax, esi
mov dword [esi + 8], edx
mov dword [esi + 0x1c], 1
call fcn.00403bc0
mov byte [ebp - 4], 0xc
mov ecx, dword [eax]
mov edi, dword [ebp - 0x318]
lea eax, [ecx - 0x10]
add edi, 0xfffffff0
cmp eax, edi
je 0x409957
cmp dword [edi + 0xc], 0
lea ebx, [edi + 0xc]
jl 0x409947
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x409947
call fcn.004218e0
mov dword [ebp - 0x320], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x409936
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x318], ecx
jmp 0x409957
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x318]
push edx
call fcn.00401330
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x378]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40997d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.component
lea ecx, [ebp - 0x380]
mov eax, esi
call fcn.00403bc0
mov byte [ebp - 4], 0xd
mov ecx, dword [eax]
mov edi, dword [ebp - 0x32c]
lea eax, [ecx - 0x10]
add edi, 0xfffffff0
cmp eax, edi
je 0x4099f6
cmp dword [edi + 0xc], 0
lea ebx, [edi + 0xc]
jl 0x4099e6
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x4099e6
call fcn.004218e0
mov dword [ebp - 0x320], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x4099d5
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x32c], ecx
jmp 0x4099f6
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x32c]
push edx
call fcn.00401330
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x380]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409a1c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [0x47b76c]
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x40956d
mov ecx, dword [ebp - 0x318]
push eax
push ecx
call fcn.0044646f
add esp, 8
test eax, eax
mov eax, esi
jne 0x40b3f4
mov edi, str.updateType
lea ecx, [ebp - 0x3d0]
call fcn.00403bc0
mov byte [ebp - 4], 0xe
mov ecx, dword [eax]
mov ebx, dword [ebp - 0x30c]
lea eax, [ecx - 0x10]
lea edi, [ebx - 0x10]
cmp eax, edi
je 0x409ac7
cmp dword [edi + 0xc], 0
lea ebx, [edi + 0xc]
jl 0x409ab1
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x409ab1
call fcn.004218e0
mov dword [ebp - 0x320], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x409aa0
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x30c], ecx
jmp 0x409ac1
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x30c]
push edx
call fcn.00401330
mov ebx, dword [ebp - 0x30c]
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x3d0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409aed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebx - 0xc], 0
je 0x409b2a
cmp dword [0x47b5c4], 0
jne 0x409b2a
push str.bootstrapper
push ebx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x409b20
mov dword [0x47b5c4], 1
cmp dword [0x47b5bc], eax
je 0x409b2a
mov dword [0x47b5c4], 0
mov edi, str.showRunningApplicationsWarning
lea ecx, [ebp - 0x3f8]
mov eax, esi
call fcn.00403bc0
mov byte [ebp - 4], 0xf
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea edi, [ebx - 0x10]
cmp eax, edi
je 0x409ba3
cmp dword [edi + 0xc], 0
lea ebx, [edi + 0xc]
jl 0x409b8d
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x409b8d
call fcn.004218e0
mov dword [ebp - 0x320], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x409b7c
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x30c], ecx
jmp 0x409b9d
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x30c]
push edx
call fcn.00401330
mov ebx, dword [ebp - 0x30c]
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x3f8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409bc9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebx - 0xc], 0
je 0x409bef
push 0x468a48
push ebx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x409bef
mov ebx, dword [ebp - 0x308]
mov byte [ebx + 0x10c], al
jmp 0x409bf5
mov ebx, dword [ebp - 0x308]
mov ecx, dword [esi + 0xc]
xor edi, edi
cmp ecx, edi
je 0x409c20
cmp dword [esi + 0x1c], 1
jne 0x409c20
mov eax, dword [esi + 0x10]
mov dword [esi + 8], ecx
xor ecx, ecx
cmp eax, edi
setne cl
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], edi
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], edi
mov dword [esi + 0x1c], ecx
cmp dword [esi + 0x34], edi
je 0x40b640
mov edx, dword [esi + 0xc]
push str.files
push edx
mov edx, dword [esi + 8]
push esi
call fcn.0043eb10
cmp eax, edi
je 0x40b640
mov edx, dword [esi + 0x30]
mov ecx, eax
mov edi, eax
sar ecx, 0x10
mov ecx, dword [edx + ecx*4]
and edi, 0xffff
shl edi, 5
mov edx, dword [ecx + edi + 0x10]
mov dword [esi + 0xc], eax
xor eax, eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], eax
mov edi, 0x468ab0
lea ecx, [ebp - 0x400]
mov eax, esi
mov dword [esi + 8], edx
mov dword [esi + 0x1c], 1
call fcn.00403bc0
lea edi, [ebx + 0x114]
mov byte [ebp - 4], 0x10
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x400]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409cbc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push edi
mov eax, 4
lea ecx, [ebp - 0x3dc]
call fcn.0041e360
mov eax, dword [eax]
push str..msi
push eax
call fcn.004465ce
add esp, 8
test eax, eax
mov eax, dword [ebp - 0x3dc]
setne byte [ebp - 0x325]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409d08
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp - 0x325], 0
je 0x409d25
push 4
push str..msi
mov ebx, edi
call fcn.00420540
mov ebx, dword [ebp - 0x308]
mov edi, str.customActionAssembly
lea ecx, [ebp - 0x3d8]
mov eax, esi
call fcn.00403bc0
lea edi, [ebx + 0x118]
mov byte [ebp - 4], 0x11
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x3d8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409d6c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.customActionClass
lea ecx, [ebp - 0x37c]
mov eax, esi
call fcn.00403bc0
lea edi, [ebx + 0x11c]
mov byte [ebp - 4], 0x12
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x37c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409db3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.hash
lea ecx, [ebp - 0x3cc]
mov eax, esi
call fcn.00403bc0
lea edi, [ebx + 0x120]
mov byte [ebp - 4], 0x13
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x3cc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409dfa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi]
cmp dword [ecx - 0xc], 0
jle 0x409e7b
mov eax, dword [0x47b704]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x334], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
lea ecx, [ebp - 0x360]
mov dword [esi], eax
call fcn.0040c0c0
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x360]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je 0x40956d
mov edi, dword [edi]
push ecx
push edi
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x40b796
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x360]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x409e7b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x478034]
mov eax, dword [edx + 0xc]
mov ecx, 0x478034
call eax
add eax, 0x10
mov dword [ebp - 0x310], eax
mov byte [ebp - 4], 0x15
mov eax, dword [0x47b714]
add eax, 0xfffffff0
call fcn.004218e0
lea edi, [eax + 0x10]
mov dword [ebp - 0x354], edi
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x318]
push ecx
add eax, 0xfffffff0
cmp dword [ebx + 0x88], 2
mov dword [ebp - 0x334], esp
mov esi, esp
jne 0x409f51
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
push ecx
mov byte [ebp - 4], 0x17
mov eax, dword [ebp - 0x31c]
mov dword [ebp - 0x340], esp
mov esi, esp
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x340], esp
mov ebx, esp
call fcn.004218e0
add eax, 0x10
mov dword [ebx], eax
push ecx
lea eax, [edi - 0x10]
mov byte [ebp - 4], 0x18
mov dword [ebp - 0x320], esp
mov ebx, esp
call fcn.004218e0
add eax, 0x10
mov dword [ebx], eax
mov byte [ebp - 4], 0x17
call fcn.004194f0
lea esi, [ebp - 0x384]
mov byte [ebp - 4], 0x16
call fcn.004194f0
lea edi, [ebp - 0x354]
mov byte [ebp - 4], 0x19
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x384]
jmp 0x409fcf
push ecx
mov dword [ebp - 0x340], esp
mov ebx, esp
call fcn.004218e0
add eax, 0x10
mov dword [ebx], eax
mov byte [ebp - 4], 0x1a
mov eax, dword [ebp - 0x31c]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x320], esp
mov ebx, esp
call fcn.004218e0
add eax, 0x10
mov dword [ebx], eax
mov byte [ebp - 4], 0x16
call fcn.004196c0
push ecx
mov byte [ebp - 4], 0x1b
lea eax, [edi - 0x10]
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3e0]
mov byte [ebp - 4], 0x16
call fcn.004196c0
lea edi, [ebp - 0x354]
mov byte [ebp - 4], 0x1c
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3e0]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409feb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [ebp - 0x330]
mov ecx, dword [ebx + 0xc]
xor esi, esi
cmp ecx, esi
je 0x40a01c
cmp dword [ebx + 0x1c], 1
jne 0x40a01c
mov eax, dword [ebx + 0x10]
mov dword [ebx + 8], ecx
xor ecx, ecx
cmp eax, esi
setne cl
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], esi
mov dword [ebx + 0x20], esi
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x1c], ecx
mov byte [ebp - 0x325], 0
xor edi, edi
cmp dword [ebx + 0x34], edi
je 0x40aa66
mov edx, dword [ebx + 0xc]
push str.file
push edx
mov edx, dword [ebx + 8]
push ebx
call fcn.0043eb10
cmp eax, edi
je 0x40aa66
mov edx, dword [ebx + 0x30]
mov ecx, eax
mov esi, eax
sar ecx, 0x10
mov ecx, dword [edx + ecx*4]
and esi, 0xffff
shl esi, 5
mov edx, dword [ecx + esi + 0x10]
mov dword [ebx + 0xc], eax
lea esi, [ebp - 0x370]
mov eax, ebx
mov dword [ebx + 8], edx
mov dword [ebx + 0x10], edi
mov dword [ebx + 0x20], edi
mov dword [ebx + 0x24], edi
mov dword [ebx + 0x1c], 1
mov byte [ebp - 0x341], 0
mov byte [ebp - 0x311], 0
mov byte [ebp - 0x342], 0
call fcn.00403ba0
mov byte [ebp - 4], 0x1d
mov ecx, dword [eax]
mov esi, dword [ebp - 0x310]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x40a0fc
cmp dword [esi + 0xc], edi
jl 0x40a0e6
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x40a0e6
call fcn.004218e0
mov edi, eax
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40a0db
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add edi, 0x10
mov dword [ebp - 0x310], edi
jmp 0x40a0fc
mov ebx, dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x310]
push ecx
call fcn.00401330
mov ebx, dword [ebp - 0x330]
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x370]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40a122
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.prerequisite
lea ecx, [ebp - 0x3d4]
mov eax, ebx
call fcn.00403bc0
mov byte [ebp - 4], 0x1e
mov ecx, dword [eax]
mov esi, dword [ebp - 0x30c]
lea eax, [ecx - 0x10]
lea edi, [esi - 0x10]
cmp eax, edi
je 0x40a1a7
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x40a18b
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x40a18b
call fcn.004218e0
mov dword [ebp - 0x320], eax
or eax, 0xffffffff
lock xadd dword [esi], eax
dec eax
test eax, eax
jg 0x40a17a
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x30c], ecx
jmp 0x40a1a1
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x30c]
push edx
call fcn.00401330
mov ebx, dword [ebp - 0x330]
mov esi, dword [ebp - 0x30c]
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3d4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a1cd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esi - 0xc], 0
je 0x40a1ea
push 0x468b78
push esi
call fcn.0044646f
add esp, 8
test eax, eax
sete byte [ebp - 0x341]
mov edi, str.updater
lea ecx, [ebp - 0x394]
mov eax, ebx
call fcn.00403bc0
mov byte [ebp - 4], 0x1f
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea edi, [esi - 0x10]
cmp eax, edi
je 0x40a269
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x40a24d
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x40a24d
call fcn.004218e0
mov dword [ebp - 0x320], eax
or eax, 0xffffffff
lock xadd dword [esi], eax
dec eax
test eax, eax
jg 0x40a23c
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x30c], ecx
jmp 0x40a263
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x30c]
push edx
call fcn.00401330
mov ebx, dword [ebp - 0x330]
mov esi, dword [ebp - 0x30c]
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x394]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a28f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esi - 0xc], 0
je 0x40a2ac
push 0x468b78
push esi
call fcn.0044646f
add esp, 8
test eax, eax
sete byte [ebp - 0x311]
mov edi, str.action
lea ecx, [ebp - 0x3e8]
mov eax, ebx
call fcn.00403bc0
mov byte [ebp - 4], 0x20
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea edi, [esi - 0x10]
cmp eax, edi
je 0x40a32b
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x40a30f
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x40a30f
call fcn.004218e0
mov dword [ebp - 0x320], eax
or eax, 0xffffffff
lock xadd dword [esi], eax
dec eax
test eax, eax
jg 0x40a2fe
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [ebp - 0x320]
add ecx, 0x10
mov dword [ebp - 0x30c], ecx
jmp 0x40a325
mov ebx, dword [ecx - 0xc]
push ecx
lea edx, [ebp - 0x30c]
push edx
call fcn.00401330
mov ebx, dword [ebp - 0x330]
mov esi, dword [ebp - 0x30c]
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3e8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a351
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esi - 0xc], 0
je 0x40a36e
push 0x468b78
push esi
call fcn.0044646f
add esp, 8
test eax, eax
sete byte [ebp - 0x342]
mov edi, str.size
lea ecx, [ebp - 0x39c]
mov eax, ebx
call fcn.00403bc0
lea edi, [ebp - 0x30c]
mov byte [ebp - 4], 0x21
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x39c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a3b5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x30c]
cmp dword [eax - 0xc], 0
je 0x40a453
xor ecx, ecx
mov word [ebp - 0x304], cx
mov ecx, eax
mov dword [ebp - 0x2f0], 7
mov dword [ebp - 0x2f4], 0
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40a3e7
sub ecx, esi
sar ecx, 1
push ecx
lea ecx, [ebp - 0x304]
call fcn.00429690
lea edx, [ebp - 0x304]
push edx
mov byte [ebp - 4], 0x22
call fcn.00437960
add esp, 4
mov byte [ebp - 4], 0x16
cmp dword [ebp - 0x2f0], 8
mov esi, eax
mov edi, edx
jb 0x40a435
mov eax, dword [ebp - 0x304]
push eax
call fcn.0044543c
add esp, 4
test edi, edi
jl 0x40a453
jg 0x40a43f
test esi, esi
je 0x40a453
mov eax, dword [ebp - 0x308]
add dword [eax + 0xe8], esi
adc dword [eax + 0xec], edi
jmp 0x40a459
mov eax, dword [ebp - 0x308]
cmp byte [ebp - 0x341], 0
je 0x40a732
cmp dword [0x47b5bc], 0
jne 0x40a023
xor esi, esi
mov edi, str.language
lea ecx, [ebp - 0x3f0]
mov eax, ebx
mov dword [ebp - 0x34c], esi
call fcn.00403bc0
lea edi, [ebp - 0x30c]
mov byte [ebp - 4], 0x23
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3f0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a4c2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x30c]
cmp dword [eax - 0xc], esi
je 0x40a542
xor ecx, ecx
mov word [ebp - 0x304], cx
mov ecx, eax
mov byte [ebp - 0x325], 1
mov dword [ebp - 0x2f0], 7
mov dword [ebp - 0x2f4], esi
lea edi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
cmp dx, si
jne 0x40a4f2
sub ecx, edi
sar ecx, 1
push ecx
lea ecx, [ebp - 0x304]
call fcn.00429690
lea edx, [ebp - 0x304]
push edx
mov byte [ebp - 4], 0x24
call fcn.00437860
add esp, 4
mov byte [ebp - 4], 0x16
cmp dword [ebp - 0x2f0], 8
mov dword [ebp - 0x34c], eax
jb 0x40a542
mov eax, dword [ebp - 0x304]
push eax
call fcn.0044543c
add esp, 4
mov ecx, dword [ebp - 0x308]
mov eax, dword [ebp - 0x310]
push ecx
add eax, 0xfffffff0
cmp dword [ecx + 0x88], 2
mov dword [ebp - 0x334], esp
mov esi, esp
jne 0x40a5cf
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 0x25
mov eax, dword [ebp - 0x354]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3a4]
mov byte [ebp - 4], 0x16
call fcn.004194f0
mov edi, dword [ebp - 0x308]
add edi, 0x220
mov ecx, eax
mov byte [ebp - 4], 0x26
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3a4]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x40a639
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 0x27
mov eax, dword [ebp - 0x354]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3fc]
mov byte [ebp - 4], 0x16
call fcn.004196c0
mov edi, dword [ebp - 0x308]
add edi, 0x220
mov ecx, eax
mov byte [ebp - 4], 0x28
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3fc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a645
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x310]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x334], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
mov edi, dword [ebp - 0x308]
mov byte [ebp - 4], 0x29
mov eax, dword [edi + 0x90]
push ecx
sub eax, 0x10
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3ac]
mov byte [ebp - 4], 0x16
call fcn.004196c0
add edi, 0x250
mov ecx, eax
mov byte [ebp - 4], 0x2a
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3ac]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a6cd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.hash
lea ecx, [ebp - 0x3e4]
mov eax, ebx
call fcn.00403bc0
mov esi, dword [ebp - 0x308]
lea edi, [esi + 0x230]
mov ecx, eax
mov byte [ebp - 4], 0x2b
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3e4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a71c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea edi, [esi + 0x240]
lea eax, [ebp - 0x34c]
call fcn.0041fde0
jmp 0x40a023
inc dword [eax + 0xf0]
cmp dword [eax + 0x88], 2
mov eax, dword [ebp - 0x310]
push ecx
mov dword [ebp - 0x334], esp
mov esi, esp
jne 0x40a7af
add eax, 0xfffffff0
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 0x2c
mov eax, dword [ebp - 0x354]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3b4]
mov byte [ebp - 4], 0x16
call fcn.004194f0
mov edi, dword [ebp - 0x308]
add edi, 0x1e0
mov ecx, eax
mov byte [ebp - 4], 0x2d
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3b4]
jmp 0x40a80c
add eax, 0xfffffff0
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 0x2e
mov eax, dword [ebp - 0x354]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3f4]
mov byte [ebp - 4], 0x16
call fcn.004196c0
mov edi, dword [ebp - 0x308]
add edi, 0x1e0
mov ecx, eax
mov byte [ebp - 4], 0x2f
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3f4]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a828
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp - 0x311], 0
je 0x40a966
mov ecx, dword [ebp - 0x310]
cmp dword [ecx - 0xc], 8
jle 0x40a879
mov eax, 8
lea ecx, [ebp - 0x3bc]
lea edx, [ebp - 0x310]
call fcn.0041e3e0
mov eax, dword [eax]
or dword [ebp - 0x358], 1
push str.updater_
push eax
call fcn.0044646f
add esp, 8
mov byte [ebp - 0x311], 1
test eax, eax
je 0x40a880
mov byte [ebp - 0x311], 0
mov dword [ebp - 4], 0x16
test byte [ebp - 0x358], 1
je 0x40a8b9
mov eax, dword [ebp - 0x3bc]
and dword [ebp - 0x358], 0xfffffffe
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40a8b9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp - 0x311], 0
je 0x40a8d5
lea ecx, [ebp - 0x310]
push ecx
mov eax, 8
xor ecx, ecx
call fcn.0041dc90
mov eax, dword [ebp - 0x310]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x334], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
mov edi, dword [ebp - 0x308]
mov byte [ebp - 4], 0x31
mov eax, dword [edi + 0x9c]
push ecx
sub eax, 0x10
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3ec]
mov byte [ebp - 4], 0x16
call fcn.004196c0
add edi, 0x200
mov ecx, eax
mov byte [ebp - 4], 0x32
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3ec]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40aa0e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40aa0e
mov eax, dword [ebp - 0x310]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x334], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
mov edi, dword [ebp - 0x308]
mov byte [ebp - 4], 0x33
mov eax, dword [edi + 0x90]
push ecx
sub eax, 0x10
mov dword [ebp - 0x340], esp
mov esi, esp
call fcn.004218e0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x3c4]
mov byte [ebp - 4], 0x16
call fcn.004196c0
add edi, 0x200
mov ecx, eax
mov byte [ebp - 4], 0x34
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3c4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a9ee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp - 0x342], 0
je 0x40aa0e
mov edi, dword [ebp - 0x308]
add edi, 0x210
lea ecx, [ebp - 0x310]
call fcn.0041fd20
mov edi, str.hash
lea ecx, [ebp - 0x374]
mov eax, ebx
call fcn.00403bc0
mov edi, dword [ebp - 0x308]
add edi, 0x1f0
mov ecx, eax
mov byte [ebp - 4], 0x35
call fcn.0041fd20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x374]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a023
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40a023
mov edi, dword [ebp - 0x308]
mov ecx, dword [edi + 0x224]
sub ecx, dword [edi + 0x220]
lea eax, [edi + 0x220]
sar ecx, 2
mov dword [ebp - 0x34c], eax
test ecx, ecx
je 0x40aee5
cmp byte [ebp - 0x325], 0
je 0x40ad33
lea edx, [ebp - 0x42c]
push edx
mov ecx, eax
mov dword [ebp - 0x364], 0
call fcn.0041fc60
lea eax, [ebp - 0x41c]
lea ebx, [edi + 0x230]
push eax
mov ecx, ebx
mov byte [ebp - 4], 0x36
call fcn.0041fc60
lea ecx, [ebp - 0x43c]
lea esi, [edi + 0x250]
push ecx
mov ecx, esi
mov byte [ebp - 4], 0x37
call fcn.0041fc60
mov byte [ebp - 4], 0x38
mov eax, dword [ebp - 0x34c]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push ecx
push edx
lea edx, [ebp - 0x404]
push edx
push eax
call fcn.00421550
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
push eax
push ecx
lea eax, [ebp - 0x408]
push eax
push ebx
call fcn.00421550
mov eax, dword [esi + 4]
mov ecx, dword [esi]
push eax
push ecx
lea ecx, [ebp - 0x40c]
push ecx
push esi
call fcn.00421550
mov edx, dword [edi + 0x244]
sub edx, dword [edi + 0x240]
xor eax, eax
sar edx, 2
test edx, edx
je 0x40ab78
mov ecx, dword [edi + 0x240]
mov edx, dword [0x47b5b4]
cmp dword [ecx], edx
je 0x40ab68
mov edx, dword [edi + 0x244]
sub edx, dword [edi + 0x240]
inc eax
sar edx, 2
add ecx, 4
cmp eax, edx
jb 0x40ab45
jmp 0x40ab78
mov eax, edx
mov dword [ebp - 0x364], eax
test eax, eax
jne 0x40ac3b
xor eax, eax
push 0xc6
push eax
lea ecx, [ebp - 0xd6]
push ecx
mov word [ebp - 0xd8], ax
call fcn.00449910
mov edx, dword [edi + 0x244]
sub edx, dword [edi + 0x240]
add esp, 0xc
sar edx, 2
mov dword [ebp - 0x338], 0
test edx, edx
je 0x40ac3b
jmp 0x40abc0
mov eax, dword [edi + 0x240]
mov ecx, dword [ebp - 0x338]
push 0x64
lea edx, [ebp - 0xd8]
push edx
lea eax, [eax + ecx*4]
mov eax, dword [eax]
push 0x1001
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
jle 0x40ac04
mov edx, dword [0x47b70c]
lea ecx, [ebp - 0xd8]
push ecx
push edx
call fcn.0044646f
add esp, 8
test eax, eax
je 0x40ac26
mov ecx, dword [edi + 0x244]
sub ecx, dword [edi + 0x240]
mov eax, dword [ebp - 0x338]
inc eax
sar ecx, 2
mov dword [ebp - 0x338], eax
cmp eax, ecx
jb 0x40abc0
jmp 0x40ac3b
mov edx, dword [edi + 0x240]
mov eax, dword [ebp - 0x338]
mov ecx, dword [edx + eax*4]
mov dword [ebp - 0x364], ecx
mov edx, dword [edi + 0x244]
sub edx, dword [edi + 0x240]
xor eax, eax
sar edx, 2
mov dword [ebp - 0x320], eax
test edx, edx
je 0x40ad08
mov ecx, dword [ebp - 0x41c]
mov edx, dword [ebp - 0x42c]
sub edx, ecx
mov dword [ebp - 0x340], edx
mov edx, dword [ebp - 0x43c]
sub edx, ecx
mov dword [ebp - 0x338], ecx
mov dword [ebp - 0x334], edx
jmp 0x40ac90
mov ecx, dword [edi + 0x240]
mov edx, dword [ecx + eax*4]
cmp edx, dword [ebp - 0x364]
jne 0x40ace7
mov ecx, dword [ebp - 0x338]
add ecx, dword [ebp - 0x340]
mov edi, dword [ebp - 0x34c]
call fcn.0041fd20
mov ecx, dword [ebp - 0x338]
mov edi, ebx
call fcn.0041fd20
mov eax, dword [ebp - 0x338]
mov ecx, dword [ebp - 0x334]
lea ecx, [ecx + eax]
mov edi, esi
call fcn.0041fd20
mov edi, dword [ebp - 0x308]
mov eax, dword [ebp - 0x320]
mov ecx, dword [edi + 0x244]
sub ecx, dword [edi + 0x240]
add dword [ebp - 0x338], 4
inc eax
sar ecx, 2
mov dword [ebp - 0x320], eax
cmp eax, ecx
jb 0x40ac90
lea ebx, [ebp - 0x43c]
call fcn.00421620
lea ebx, [ebp - 0x41c]
call fcn.00421620
lea ebx, [ebp - 0x42c]
mov byte [ebp - 4], 0x16
call fcn.00421620
mov ebx, dword [ebp - 0x330]
mov edx, dword [0x478034]
mov eax, dword [edx + 0xc]
mov ecx, 0x478034
call eax
add eax, 0x10
mov dword [ebp - 0x34c], eax
xor esi, esi
push 0x208
lea edx, [ebp - 0x2e6]
mov byte [ebp - 4], 0x39
xor ecx, ecx
push esi
push edx
mov dword [ebp - 0x36c], esi
mov word [ebp - 0x2e8], cx
call fcn.00449910
mov eax, dword [edi + 0x254]
sub eax, dword [edi + 0x250]
add esp, 0xc
sar eax, 2
test eax, eax
je 0x40aea9
lea ecx, [ecx]
mov ecx, dword [edi + 0x250]
mov eax, dword [ecx + esi*4]
lea edx, [ebp - 0x36c]
push edx
lea ecx, [ebp - 0x2e8]
push ecx
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov edx, dword [ebp - 0x36c]
test edx, edx
je 0x40ae10
mov eax, edx
lea ebx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40adc2
sub eax, ebx
push edx
sar eax, 1
lea edx, [ebp - 0x34c]
push edx
mov ebx, eax
call fcn.00401330
mov ebx, dword [ebp - 0x34c]
push str.setup.exe
push ebx
call fcn.0044646f
add esp, 8
test eax, eax
je 0x40ae2d
push str.setup.exe.deploy
push ebx
call fcn.0044646f
add esp, 8
test eax, eax
je 0x40ae2d
mov ebx, dword [ebp - 0x330]
mov eax, dword [edi + 0x254]
sub eax, dword [edi + 0x250]
inc esi
sar eax, 2
cmp esi, eax
jb 0x40ad90
jmp 0x40aea9
mov edx, dword [ebp - 0x36c]
xor ecx, ecx
lea eax, [ebp - 0x2e8]
mov word [edx], cx
lea esi, [edi + 0xb4]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40ae47
sub eax, edx
lea ecx, [ebp - 0x2e8]
sar eax, 1
push ecx
push esi
mov ebx, eax
call fcn.00401330
mov eax, dword [edi + 0x90]
push 0x46cea0
push eax
push esi
call fcn.0041ddd0
mov edx, dword [esi]
mov ecx, dword [edx - 0xc]
lea eax, [ecx - 1]
test eax, eax
js 0x40b907
cmp eax, dword [edx - 0xc]
jg 0x40b907
cmp word [edx + eax*2], 0x5c
jne 0x40aea3
dec ecx
push esi
mov eax, 1
call fcn.0041dc90
mov ebx, dword [ebp - 0x330]
mov eax, dword [edi + 0x254]
sub eax, dword [edi + 0x250]
or edx, 0xffffffff
sar eax, 2
inc eax
add dword [edi + 0xf0], eax
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x34c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40aee5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebx + 8]
test eax, eax
je 0x40af30
mov ecx, dword [ebx + 0xc]
mov dword [ebp - 0x334], ecx
mov ecx, dword [ebx + 0x30]
mov edx, eax
sar edx, 0x10
mov edx, dword [ecx + edx*4]
mov esi, eax
and esi, 0xffff
shl esi, 5
mov ecx, dword [edx + esi + 0x10]
mov edx, dword [ebp - 0x334]
xor esi, esi
mov dword [ebx + 8], ecx
xor ecx, ecx
cmp eax, esi
setne cl
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x20], esi
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x1c], ecx
mov eax, str.preferences
mov esi, ebx
call fcn.0043db30
test al, al
je 0x40b2be
mov ecx, dword [ebx + 0xc]
xor esi, esi
cmp ecx, esi
je 0x40af6f
cmp dword [ebx + 0x1c], 1
jne 0x40af6f
mov eax, dword [ebx + 0x10]
xor edx, edx
cmp eax, esi
setne dl
mov dword [ebx + 8], ecx
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], esi
mov dword [ebx + 0x20], esi
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x1c], edx
mov eax, str.showInstallUI
mov esi, ebx
call fcn.0043db30
test al, al
je 0x40afef
lea esi, [ebp - 0x388]
mov eax, ebx
call fcn.00403ba0
lea edi, [ebp - 0x310]
mov byte [ebp - 4], 0x3a
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x388]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40afc1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x310]
push 0x468a48
push ecx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x40afe9
mov edx, dword [ebp - 0x308]
mov byte [edx + 0x10a], al
mov edi, edx
jmp 0x40afef
mov edi, dword [ebp - 0x308]
mov eax, str.showUninstallUI
mov esi, ebx
call fcn.0043db30
test al, al
je 0x40b070
lea esi, [ebp - 0x390]
mov eax, ebx
call fcn.00403ba0
lea edi, [ebp - 0x310]
mov byte [ebp - 4], 0x3b
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x390]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b041
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x310]
push 0x468b78
push ecx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x40b06a
mov edx, dword [ebp - 0x308]
mov byte [edx + 0x10b], 1
mov edi, edx
jmp 0x40b070
mov edi, dword [ebp - 0x308]
mov eax, str.showRunningApplicationsWarning
mov esi, ebx
call fcn.0043db30
test al, al
je 0x40b0f0
lea esi, [ebp - 0x398]
mov eax, ebx
call fcn.00403ba0
lea edi, [ebp - 0x310]
mov byte [ebp - 4], 0x3c
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x398]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b0c2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x310]
push 0x468a48
push ecx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x40b0ea
mov edx, dword [ebp - 0x308]
mov byte [edx + 0x10c], al
mov edi, edx
jmp 0x40b0f0
mov edi, dword [ebp - 0x308]
mov eax, str.loadCAInDownloader
mov esi, ebx
call fcn.0043db30
test al, al
je 0x40b171
lea esi, [ebp - 0x3a0]
mov eax, ebx
call fcn.00403ba0
lea edi, [ebp - 0x310]
mov byte [ebp - 4], 0x3d
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3a0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b142
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x310]
push 0x468b78
push ecx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x40b16b
mov edx, dword [ebp - 0x308]
mov byte [edx + 0x10f], 1
mov edi, edx
jmp 0x40b171
mov edi, dword [ebp - 0x308]
mov eax, str.loadCAInUpdater
mov esi, ebx
call fcn.0043db30
test al, al
je 0x40b1f2
lea esi, [ebp - 0x3a8]
mov eax, ebx
call fcn.00403ba0
lea edi, [ebp - 0x310]
mov byte [ebp - 4], 0x3e
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3a8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b1c3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x310]
push 0x468b78
push ecx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x40b1ec
mov edx, dword [ebp - 0x308]
mov byte [edx + 0x110], 1
mov edi, edx
jmp 0x40b1f2
mov edi, dword [ebp - 0x308]
mov eax, str.enableAutomaticUpdates
mov esi, ebx
call fcn.0043db30
test al, al
je 0x40b273
lea esi, [ebp - 0x3b0]
mov eax, ebx
call fcn.00403ba0
lea edi, [ebp - 0x310]
mov byte [ebp - 4], 0x3f
call fcn.0041db20
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x3b0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b244
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x310]
push 0x468b78
push ecx
call fcn.0044646f
add esp, 8
test eax, eax
jne 0x40b26d
mov edx, dword [ebp - 0x308]
mov byte [edx + 0x111], 1
mov edi, edx
jmp 0x40b273
mov edi, dword [ebp - 0x308]
mov eax, dword [ebx + 8]
test eax, eax
je 0x40b2be
mov ecx, dword [ebx + 0xc]
mov dword [ebp - 0x334], ecx
mov ecx, dword [ebx + 0x30]
mov edx, eax
sar edx, 0x10
mov edx, dword [ecx + edx*4]
mov esi, eax
and esi, 0xffff
shl esi, 5
mov ecx, dword [edx + esi + 0x10]
mov edx, dword [ebp - 0x334]
xor esi, esi
mov dword [ebx + 8], ecx
xor ecx, ecx
cmp eax, esi
setne cl
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x20], esi
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x1c], ecx
mov eax, dword [ebx + 8]
test eax, eax
je 0x40b309
mov edx, dword [ebx + 0xc]
mov dword [ebp - 0x334], edx
mov edx, dword [ebx + 0x30]
mov ecx, eax
sar ecx, 0x10
mov ecx, dword [edx + ecx*4]
mov esi, eax
and esi, 0xffff
shl esi, 5
mov edx, dword [ecx + esi + 0x10]
mov ecx, dword [ebp - 0x334]
xor esi, esi
mov dword [ebx + 8], edx
xor edx, edx
cmp eax, esi
setne dl
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], ecx
mov dword [ebx + 0x20], esi
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x1c], edx
mov ebx, 0x47b75c
call fcn.004177d0
test al, al
jne 0x40b39f
lea esi, [ebp - 0x300]
call fcn.0040bbb0
mov eax, ebx
mov edi, esi
mov byte [ebp - 4], 0x40
call fcn.0041db20
lea eax, [ebp - 0x31c]
lea edi, [ebp - 0x2f8]
call fcn.0041db20
lea eax, [ebp - 0x318]
lea edi, [ebp - 0x2fc]
call fcn.0041db20
lea eax, [ebp - 0x32c]
lea edi, [ebp - 0x2f4]
call fcn.0041db20
xor eax, eax
mov word [ebp - 0x2ea], ax
mov eax, dword [ebp - 0x308]
mov cl, byte [eax + 0x10a]
mov dl, byte [eax + 0x10b]
mov byte [ebp - 0x2ec], cl
lea ebx, [eax + 0x1d0]
mov ecx, esi
mov byte [ebp - 0x2eb], dl
call fcn.0041fbb0
call fcn.0040bc20
mov byte [ebp - 4], 0x15
mov eax, dword [ebp - 0x354]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b3c5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x310]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409883
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x409883
mov edi, str.productCode
lea ecx, [ebp - 0x3b8]
call fcn.00403bc0
lea edi, [ebp - 0x324]
mov byte [ebp - 4], 0x41
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x3b8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b439
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x324]
cmp dword [ecx - 0xc], 0
je 0x409889
mov edi, dword [ebp - 0x308]
lea ebx, [ebp - 0x324]
call fcn.004177d0
test al, al
jne 0x409889
lea edx, [ebp - 0x32c]
push edx
lea eax, [ebp - 0x31c]
push eax
lea ecx, [ebp - 0x318]
push ecx
mov edx, ebx
push edx
push edi
call fcn.0040bcc0
test al, al
jne 0x409889
add edi, 0x100
mov edx, str.XML_error:_Cant_parse_the_version_subtree.
call fcn.004011b0
lea eax, [ebp - 0x350]
call fcn.0041d790
lea eax, [ebp - 0x35c]
call fcn.0041d790
jmp 0x409335
mov eax, esi
call fcn.0043de40
mov eax, str.version
call fcn.0043db30
test al, al
je 0x40b628
lea esp, [esp]
mov esi, dword [ebp - 0x330]
mov edi, str.name
lea ecx, [ebp - 0x3c0]
mov eax, esi
call fcn.00403bc0
lea edi, [ebp - 0x318]
mov byte [ebp - 4], 0x42
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x3c0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b51d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.productCode
lea ecx, [ebp - 0x3c8]
mov eax, esi
call fcn.00403bc0
lea edi, [ebp - 0x324]
mov byte [ebp - 4], 0x43
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x3c8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b564
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, str.component
lea ecx, [ebp - 0x368]
mov eax, esi
call fcn.00403bc0
lea edi, [ebp - 0x32c]
mov byte [ebp - 4], 0x44
call fcn.0041db20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x368]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b5ab
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x318]
cmp dword [ecx - 0xc], 0
je 0x40b604
mov edx, dword [ebp - 0x324]
cmp dword [edx - 0xc], 0
je 0x40b604
mov edi, dword [ebp - 0x308]
lea ebx, [ebp - 0x324]
call fcn.004177d0
test al, al
jne 0x40b5fe
lea eax, [ebp - 0x32c]
push eax
lea ecx, [ebp - 0x31c]
push ecx
lea edx, [ebp - 0x318]
push edx
mov eax, ebx
push eax
push edi
call fcn.0040bcc0
test al, al
je 0x40b911
mov esi, dword [ebp - 0x330]
mov eax, str.version
call fcn.0043db30
test al, al
jne 0x40b4d0
mov eax, esi
call fcn.0043de80
mov edi, dword [ebp - 0x330]
jmp 0x409730
mov esi, dword [ebp - 0x330]
mov eax, esi
call fcn.0043de80
mov edi, dword [ebp - 0x330]
jmp 0x409730
mov eax, dword [ebp - 0x308]
add eax, 0x100
push str.XML_error:_Cant_find_the_files_tag.
push eax
mov ebx, 0x26
call fcn.00401330
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x350]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b681
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 - 0x33c]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b6a4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b6ca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b6f0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b716
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b73c
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 - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b762
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
lea edi, [ebx + 0x100]
mov edx, str.Wrong_downloader_hash.
call fcn.004011b0
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x360]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b7cc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x350]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b7f2
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 - 0x33c]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b815
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b83b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b861
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b887
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b8ad
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 - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b8d3
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
push 0x80070057
call fcn.00401680
add edi, 0x100
mov edx, str.XML_error:_Cant_parse_the_version_subtree.
call fcn.004011b0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x350]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b947
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 - 0x33c]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b96a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b990
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b9b6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b9dc
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ba02
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 - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ba28
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4091b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40bb8e
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x350]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ba82
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 - 0x33c]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40baa5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x32c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bacb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x30c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40baf1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x348]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bb17
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 - 0x31c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bb3d
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 - 0x324]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bb63
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 - 0x318]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bb8c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov al, 1
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.00445447
mov esp, ebp
pop ebp
ret