Function at 0x408cb0
Capabilities:
Check mutex on windows
Delete directory

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4708cc
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x3d0
mov eax, dword [0x4d100c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x3d0], edi
mov esi, dword [0x4d2e90]
test esi, esi
jne 0x408d24
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
nop dword [eax]
push 1
call edi
mov esi, dword [0x4d2e90]
test esi, esi
je 0x408d10
mov edi, dword [ebp - 0x3d0]
mov dword [ebp - 0x3c8], esi
mov dword [ebp - 4], 0
mov eax, dword [0x4d3310]
mov dword [0x4d2e90], 0
lock inc dword [eax + 0x60]
test edi, edi
je 0x408f8a
mov ecx, dword [0x4d3310]
lea eax, [ebp - 0x3c4]
push str.progress.text
push eax
call fcn.00427100
mov ecx, dword [ebp - 0x3c4]
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [0x4d3320], eax
test ecx, ecx
je 0x408de3
mov edx, dword [ebp - 0x3c0]
push ecx
call fcn.004134b0
mov eax, dword [ebp - 0x3bc]
add esp, 4
mov ecx, dword [ebp - 0x3c4]
sub eax, ecx
sar eax, 3
lea edx, [eax*8]
mov eax, ecx
cmp edx, 0x1000
jb 0x408dbb
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a336
push edx
push ecx
call fcn.00451449
add esp, 8
mov dword [ebp - 0x3c4], 0
mov dword [ebp - 0x3c0], 0
mov dword [ebp - 0x3bc], 0
mov ecx, dword [0x4d3310]
lea eax, [ebp - 0x3b8]
push str.progress.total
push eax
call fcn.00427100
mov ecx, dword [ebp - 0x3b8]
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [0x4d31f4], eax
test ecx, ecx
je 0x408e7a
mov edx, dword [ebp - 0x3b4]
push ecx
call fcn.004134b0
mov eax, dword [ebp - 0x3b0]
add esp, 4
mov ecx, dword [ebp - 0x3b8]
sub eax, ecx
sar eax, 3
lea edx, [eax*8]
mov eax, ecx
cmp edx, 0x1000
jb 0x408e52
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a33b
push edx
push ecx
call fcn.00451449
add esp, 8
mov dword [ebp - 0x3b8], 0
mov dword [ebp - 0x3b4], 0
mov dword [ebp - 0x3b0], 0
mov ecx, dword [0x4d3310]
lea eax, [ebp - 0x3c4]
push str.progress.currentIn
push eax
call fcn.00427100
mov ecx, dword [ebp - 0x3c4]
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [0x4d332c], eax
test ecx, ecx
je 0x408f11
mov edx, dword [ebp - 0x3c0]
push ecx
call fcn.004134b0
mov eax, dword [ebp - 0x3bc]
add esp, 4
mov ecx, dword [ebp - 0x3c4]
sub eax, ecx
sar eax, 3
lea edx, [eax*8]
mov eax, ecx
cmp edx, 0x1000
jb 0x408ee9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a340
push edx
push ecx
call fcn.00451449
add esp, 8
mov dword [ebp - 0x3c4], 0
mov dword [ebp - 0x3c0], 0
mov dword [ebp - 0x3bc], 0
mov ecx, dword [0x4d3310]
lea eax, [ebp - 0x3b8]
push str.progress.currentOut
push eax
call fcn.00427100
mov ecx, dword [ebp - 0x3b8]
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [0x4d3334], eax
test ecx, ecx
je 0x408f8a
mov edx, dword [ebp - 0x3b4]
push ecx
call fcn.004134b0
mov eax, dword [ebp - 0x3b0]
add esp, 4
mov ecx, dword [ebp - 0x3b8]
sub eax, ecx
sar eax, 3
lea edx, [eax*8]
mov eax, ecx
cmp edx, 0x1000
jb 0x408f80
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a345
push edx
push ecx
call fcn.00451449
add esp, 8
mov eax, dword [0x4d3310]
mov ecx, esi
mov dword [esi + 0x3b8], eax
call fcn.00408220
mov eax, dword [0x4d3324]
mov byte [esi + 0x389], 0
test eax, eax
je 0x408fb2
cmp word [eax], 0
jne 0x408fc8
mov eax, dword [0x4d3314]
test eax, eax
je 0x408fc8
cmp word [eax], 0
je 0x408fc8
mov byte [esi + 0x3a8], 1
cmp byte [0x4d31f9], 0
mov byte [ebp - 0x399], 1
je 0x409aa5
lea ecx, [ebp - 0x230]
call fcn.00402d80
mov byte [ebp - 4], 1
lea edx, [ebp - 0x230]
cmp dword [ebp - 0x21c], 8
lea ecx, [ebp - 0x2d8]
push 0
cmovae edx, dword [ebp - 0x230]
call fcn.0041d2b0
add esp, 4
push str.initialized
mov edx, str.update_check
mov byte [ebp - 4], 2
mov ecx, esi
call fcn.00407ce0
add esp, 4
mov edx, str.install_update_start
mov ecx, 0x49
call fcn.00441530
push str.FileIntegrity.bin
push str.Databases
mov edx, 0x4d1b54
lea ecx, [ebp - 0x320]
call fcn.00401830
add esp, 8
mov esi, eax
mov ecx, dword [0x4d2ee4]
mov dword [ebp - 0x3b4], 0x4d2ee4
mov byte [ebp - 0x3b0], 1
mov edx, 0x4d2ee4
test ecx, ecx
jne 0x409092
mov eax, 1
lock xadd dword [edx], eax
test eax, eax
jne 0x409092
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x4d2ee8], eax
jmp 0x409097
mov eax, dword [0x4d2ee8]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov byte [ebp - 4], 4
cmp dword [0x4d2ef0], 0
jne 0x409172
push 0x44
lea eax, [ebp - 0x398]
push 0
push eax
call fcn.00452b60
mov eax, esp
mov dword [ebp - 0x3c1], 0
mov dword [ebp - 0x3bd], 0
xor cl, cl
movq xmm0, qword [ebp - 0x3c1]
push esi
movq qword [eax], xmm0
mov byte [eax + 8], cl
lea ecx, [ebp - 0x398]
call fcn.00450820
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x374]
test eax, eax
je 0x409119
push ecx
lea eax, [ebp - 0x398]
push eax
call fcn.004328c0
test al, al
jne 0x409102
mov eax, dword [ebp - 0x374]
mov byte [ebp - 4], 4
test eax, eax
je 0x409132
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x374], 0
mov edx, dword [ebp - 0x378]
cmp edx, 8
jb 0x409172
mov ecx, dword [ebp - 0x38c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409168
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a34a
push edx
push ecx
call fcn.00451449
add esp, 8
push dword [0x4d2ee8]
mov eax, dword [sym.imp.KERNEL32.dll_ReleaseMutex]
call eax
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x30c]
cmp edx, 8
jb 0x4091c3
mov ecx, dword [ebp - 0x320]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4091b9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a34f
push edx
push ecx
call fcn.00451449
add esp, 8
mov esi, dword [ebp - 0x3c8]
mov ecx, esi
push edi
push 1
push 0
call fcn.0042e770
mov byte [ebp - 0x399], al
lea ecx, [ebp - 0x2c0]
push 0xe
xor eax, eax
mov dword [ebp - 0x2c0], 0
push str.install_update
mov dword [ebp - 0x2b0], 0
mov dword [ebp - 0x2ac], 7
mov word [ebp - 0x2c0], ax
call fcn.00411b40
cmp byte [ebp - 0x399], 0
mov edx, str.__ok
mov eax, str.__fail
mov byte [ebp - 4], 6
cmove edx, eax
mov ecx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409231
sub ecx, edi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x2c0]
call fcn.00412220
mov dword [ebp - 0x248], 0
xor ecx, ecx
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x248], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x238], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 7
lea edx, [ebp - 0x248]
cmp dword [ebp - 0x234], 8
mov ecx, 0x49
cmovae edx, dword [ebp - 0x248]
call fcn.00441530
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x234]
cmp edx, 8
jb 0x4092fb
mov ecx, dword [ebp - 0x248]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4092f1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a354
push edx
push ecx
call fcn.00451449
add esp, 8
xor eax, eax
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x2ac]
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 7
mov word [ebp - 0x248], ax
cmp edx, 8
jb 0x40935c
mov ecx, dword [ebp - 0x2c0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409352
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a354
push edx
push ecx
call fcn.00451449
add esp, 8
mov eax, dword [0x4d2ea8]
mov ecx, str.failed
mov edi, dword [0x4d2eac]
mov edx, str.update_check
cmp byte [esi + 0x3e8], 0
mov dword [ebp - 0x3cc], eax
mov eax, dword [0x4d1a44]
mov dword [ebp - 0x3d4], eax
mov eax, dword [0x4d2eb0]
mov dword [ebp - 0x3a0], eax
mov eax, dword [0x4d2eb4]
mov dword [0x4d2eac], eax
mov eax, dword [0x4d2eb8]
mov dword [0x4d2ea8], eax
mov eax, dword [0x4d2ebc]
mov dword [0x4d1a44], eax
mov eax, dword [0x4d2ec0]
mov dword [0x4d2eb0], eax
mov eax, str.completed
cmove eax, ecx
mov ecx, esi
push eax
call fcn.00407ce0
mov eax, dword [ebp - 0x3cc]
add esp, 4
mov dword [0x4d2ea8], eax
mov eax, dword [ebp - 0x3d4]
mov dword [0x4d1a44], eax
mov eax, dword [ebp - 0x3a0]
mov dword [0x4d2eb0], eax
mov al, byte [esi + 0x47d]
mov dword [0x4d2eac], edi
test al, al
je 0x409442
push str.initialized
mov edx, str.update
mov ecx, esi
call fcn.00407ce0
add esp, 4
mov edi, str.completed
cmp byte [ebp - 0x399], 0
mov ecx, str.failed
mov eax, edi
mov edx, str.update
cmove eax, ecx
mov ecx, esi
push eax
call fcn.00407ce0
mov al, byte [esi + 0x47d]
add esp, 4
jmp 0x409447
mov edi, str.completed
cmp byte [esi + 0x3e8], 0
je 0x4094b2
mov ecx, esi
push str.initialized
test al, al
je 0x40946c
mov edx, str.update_installed
call fcn.00407ce0
mov edx, str.update_installed
jmp 0x409495
cmp byte [esi + 0x47e], 0
je 0x409486
mov edx, str.repair
call fcn.00407ce0
mov edx, str.repair
jmp 0x409495
mov edx, str.integrity_check
call fcn.00407ce0
mov edx, str.integrity_check
add esp, 4
mov eax, str.failed
cmp byte [esi + 0x3e9], 0
mov ecx, esi
cmove edi, eax
push edi
call fcn.00407ce0
add esp, 4
push 0x60
call fcn.004511c8
add esp, 4
mov dword [ebp - 0x3a0], eax
push 0
push str.desktop_prerelease
mov ecx, eax
mov byte [ebp - 4], 8
call fcn.0041e7b0
sub esp, 0x18
mov byte [ebp - 4], 2
mov dword [ebp - 0x3d4], esp
mov dword [ebp - 0x3a0], esp
sub esp, 0x18
mov edi, esp
mov dword [ebp - 0x3cc], eax
sub esp, 0x18
mov ecx, esp
push 0
push 0x47c352
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
mov ecx, edi
call fcn.0041c680
mov ecx, dword [ebp - 0x3a0]
add esp, 0x18
call fcn.0041cce0
mov ecx, esp
mov byte [ebp - 4], 9
push 9
push str.device_id
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
mov edi, dword [ebp - 0x3cc]
mov ecx, edi
mov byte [ebp - 4], 2
call fcn.0041ed20
sub esp, 0x18
mov ecx, esp
push 0xa
push str.client_app
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
push str.spotlight
mov ecx, edi
call fcn.0041eeb0
sub esp, 0x18
lea eax, [esi + 0x370]
mov ecx, esp
mov dword [ebp - 0x3b0], esp
push eax
call fcn.00411890
sub esp, 0x18
mov byte [ebp - 4], 0xa
mov ecx, esp
push 9
push str.code_used
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
mov ecx, edi
mov byte [ebp - 4], 2
call fcn.0041ed20
sub esp, 0x18
mov ecx, esp
push 0xf
push str.prerelease_name
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
push str.org_beta
mov ecx, edi
call fcn.0041eeb0
cmp byte [esi + 0x3e8], 0
mov eax, str.update_check_failure
mov edi, str.update_check_success
cmove edi, eax
sub esp, 0x18
mov ecx, esp
push 6
push str.result
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
push edi
mov edi, dword [ebp - 0x3cc]
mov ecx, edi
call fcn.0041eeb0
push ecx
push edi
call fcn.004201c0
movq xmm0, qword [0x4d2e98]
movq qword [ebp - 0x3b8], xmm0
push dword [ebp - 0x3b4]
lea eax, [ebp - 0x218]
push dword [ebp - 0x3b8]
push str.network_bytes_downloaded:__lld
push 0x200
push eax
call fcn.004013b0
add esp, 0x14
lea edx, [ebp - 0x218]
mov ecx, 0x4d
call fcn.00441530
cmp dword [esi + 0x478], 8
lea eax, [esi + 0x464]
jb 0x4096b4
mov eax, dword [eax]
mov edi, dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
push eax
call edi
cmp dword [0x4d1bc8], 8
mov eax, 0x4d1bb4
cmovae eax, dword [0x4d1bb4]
push eax
call edi
cmp dword [0x4d1aa8], 8
mov eax, 0x4d1a94
cmovae eax, dword [0x4d1a94]
push eax
call edi
mov al, byte [esi + 0x47d]
lea ecx, [ebp - 0x338]
mov byte [0x4d31ec], al
mov edx, 0x4d1b54
mov al, byte [esi + 0x47e]
push str.FileIntegrity.bin
push str.Databases
mov byte [0x4d2ed5], al
call fcn.00401830
add esp, 4
mov byte [ebp - 4], 0xb
push eax
call fcn.00432b10
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x324]
cmp edx, 8
jb 0x40976a
mov ecx, dword [ebp - 0x338]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409760
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a359
push edx
push ecx
call fcn.00451449
add esp, 8
mov eax, dword [0x4d2ee4]
test eax, eax
jne 0x409795
mov eax, 1
mov ecx, 0x4d2ee4
lock xadd dword [ecx], eax
test eax, eax
jne 0x409795
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x4d2ee8], eax
jmp 0x40979a
mov eax, dword [0x4d2ee8]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x230]
mov ecx, 0x4d2eec
push eax
lea eax, [ebp - 0x3e0]
push eax
call fcn.00414390
mov esi, dword [ebp - 0x3d8]
mov eax, dword [0x4d2eec]
cmp byte [esi + 0xd], 0
jne 0x40981b
cmp dword [esi + 0x24], 8
lea edx, [esi + 0x10]
mov edi, dword [edx + 0x10]
jb 0x4097da
mov edx, dword [edx]
cmp dword [ebp - 0x21c], 8
lea ecx, [ebp - 0x230]
mov eax, dword [ebp - 0x220]
cmovae ecx, dword [ebp - 0x230]
cmp edi, eax
cmovb eax, edi
push eax
call fcn.004146b0
add esp, 4
test eax, eax
jne 0x40992b
cmp dword [ebp - 0x220], edi
jae 0x409936
mov eax, dword [0x4d2eec]
mov esi, eax
push dword [0x4d2ee8]
mov edi, dword [sym.imp.KERNEL32.dll_ReleaseMutex]
cmp esi, eax
setne byte [ebp - 0x3a1]
call edi
cmp byte [ebp - 0x3a1], 0
je 0x409973
lea edx, [ebp - 0x2d8]
lea ecx, [ebp - 0x230]
call fcn.00432f50
test al, al
jne 0x409973
lea ecx, [ebp - 0x308]
call fcn.00402d80
mov esi, eax
cmp esi, 0x4d1b9c
je 0x4098f3
mov edx, dword [0x4d1bb0]
cmp edx, 8
jb 0x4098b3
mov ecx, dword [0x4d1b9c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4098a9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a35e
push edx
push ecx
call fcn.00451449
add esp, 8
mov dword [0x4d1bac], 0
xor eax, eax
mov dword [0x4d1bb0], 7
mov word [0x4d1b9c], ax
movups xmm0, xmmword [esi]
movups xmmword [0x4d1b9c], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [0x4d1bac], xmm0
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], 7
mov word [esi], ax
mov edx, dword [ebp - 0x2f4]
cmp edx, 8
jb 0x40994a
mov ecx, dword [ebp - 0x308]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409940
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a35e
jmp 0x409940
shr eax, 0x1f
test al, al
jne 0x409816
mov eax, dword [0x4d2eec]
jmp 0x40981d
push edx
push ecx
call fcn.00451449
add esp, 8
xor eax, eax
mov dword [ebp - 0x2f8], 0
mov dword [ebp - 0x2f4], 7
mov word [ebp - 0x308], ax
mov byte [0x4d1a62], al
mov byte [0x4d3330], 1
cmp byte [ebp - 0x399], 0
je 0x409a02
cmp dword [ebp - 0x3d0], 0
je 0x409a02
mov esi, dword [0x4d3310]
add esi, 0x58
mov eax, dword [esi]
test eax, eax
jne 0x4099b1
mov eax, 1
lock xadd dword [esi], eax
test eax, eax
jne 0x4099b1
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [esi + 4], eax
push 0xffffffffffffffff
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [0x4d31f4]
mov edx, dword [0x4d332c]
mov eax, dword [ecx + 0x24]
mov dword [edx + 0x24], eax
mov eax, dword [ecx + 0x24]
mov ecx, dword [0x4d3334]
mov dword [ecx + 0x24], eax
mov eax, dword [0x4d3320]
mov byte [edx + 0x37], 1
mov byte [ecx + 0x37], 1
mov byte [eax + 0x37], 1
push dword [esi + 4]
call edi
mov eax, dword [0x4d3310]
push 0
push 0
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_InvalidateRect]
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x2c4]
cmp edx, 0x10
jb 0x409a40
mov ecx, dword [ebp - 0x2d8]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409a36
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a363
push edx
push ecx
call fcn.00451449
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x21c]
mov dword [ebp - 0x2c8], 0
mov dword [ebp - 0x2c4], 0xf
mov byte [ebp - 0x2d8], 0
cmp edx, 8
jb 0x409a9f
mov ecx, dword [ebp - 0x230]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409a95
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a363
push edx
push ecx
call fcn.00451449
add esp, 8
mov esi, dword [ebp - 0x3c8]
mov ecx, 0x4d1b3c
call fcn.0040c1a0
mov eax, dword [0x4d3310]
lock dec dword [eax + 0x60]
call fcn.0041e170
sub esp, 0x18
mov dword [ebp - 0x3a0], eax
mov ecx, esp
mov edi, edx
push 0xe
push str.launcherUpdate
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
push edi
push dword [ebp - 0x3a0]
mov edi, 1
mov ecx, edi
call fcn.00402f90
mov eax, dword [0x4d3324]
add esp, 0x20
test eax, eax
je 0x409b13
cmp word [eax], 0
jne 0x409bd0
mov eax, dword [0x4d3314]
test eax, eax
je 0x409bd0
cmp word [eax], 0
je 0x409bd0
cmp byte [ebp - 0x399], 0
lea edx, [esi + 0x44c]
mov eax, str.success
mov byte [ebp - 0x399], 1
mov ecx, str.failure
mov byte [0x4d1a62], 0
cmove eax, ecx
cmp dword [edx + 0x14], 8
mov dword [0x4d3324], eax
jb 0x409b5f
mov edx, dword [edx]
push str.TwitchStudio.exe
lea ecx, [ebp - 0x350]
call fcn.004185a0
mov edx, dword [0x4d1bb0]
add esp, 4
cmp edx, 8
jb 0x409bb2
mov ecx, dword [0x4d1b9c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409ba8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a36d
push edx
push ecx
call fcn.00451449
add esp, 8
movups xmm0, xmmword [ebp - 0x350]
movups xmmword [0x4d1b9c], xmm0
movq xmm0, qword [ebp - 0x340]
movq qword [0x4d1bac], xmm0
cmp byte [0x4d2e94], 0
je 0x409d5d
cmp byte [0x4d332b], 0
jne 0x409d5d
cmp byte [0x4d3332], 0
jne 0x409d5d
mov ecx, dword [0x4d2ea0]
test ecx, ecx
je 0x409c3b
mov eax, dword [ecx + 0x34]
mov ecx, dword [ecx + 0x38]
sub ecx, eax
mov dword [ebp - 0x3a0], eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x22
jb 0x409c3b
mov edx, dword [ebp - 0x3a0]
add edx, 0x318
cmp dword [edx + 0x14], 8
jb 0x409c40
mov edx, dword [edx]
jmp 0x409c40
mov edx, 0x47c32c
mov ecx, edx
mov dword [ebp - 0x260], 0
mov dword [ebp - 0x250], 0
mov dword [ebp - 0x24c], 7
lea eax, [ecx + 2]
mov dword [ebp - 0x3a0], eax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409c70
sub ecx, dword [ebp - 0x3a0]
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x260]
call fcn.00411b40
mov ecx, dword [0x4d2ea0]
test ecx, ecx
je 0x409cd4
mov eax, dword [ecx + 0x34]
mov ecx, dword [ecx + 0x38]
sub ecx, eax
mov dword [ebp - 0x3a0], eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x28
jb 0x409cd4
mov ecx, dword [ebp - 0x3a0]
add ecx, 0x3a8
cmp dword [ecx + 0x14], 8
jb 0x409cd9
mov ecx, dword [ecx]
jmp 0x409cd9
mov ecx, 0x47c32c
cmp dword [ebp - 0x24c], 8
lea eax, [ebp - 0x260]
push 0
cmovae eax, dword [ebp - 0x260]
push ecx
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov edx, dword [ebp - 0x24c]
mov byte [0x4d2e94], 0
cmp edx, 8
jb 0x409d40
mov ecx, dword [ebp - 0x260]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409d36
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a368
push edx
push ecx
call fcn.00451449
add esp, 8
xor eax, eax
mov dword [ebp - 0x250], 0
mov dword [ebp - 0x24c], 7
mov word [ebp - 0x260], ax
cmp byte [ebp - 0x399], 0
je 0x409f42
cmp byte [0x4d31fa], 0
jne 0x40a2e0
cmp byte [0x4d332b], 0
jne 0x409e20
mov esi, dword [0x4d3310]
add esi, 0x58
mov eax, dword [esi]
test eax, eax
jne 0x409da7
lock xadd dword [esi], edi
test edi, edi
jne 0x409da7
push edi
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [esi + 4], eax
push 0xffffffffffffffff
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [0x4d2ea0]
test ecx, ecx
je 0x409ded
mov edi, dword [ecx + 0x34]
mov eax, 0x2aaaaaab
mov ecx, dword [ecx + 0x38]
sub ecx, edi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x23
jb 0x409ded
cmp dword [edi + 0x344], 8
lea ecx, [edi + 0x330]
jb 0x409df2
mov ecx, dword [ecx]
jmp 0x409df2
mov ecx, 0x47c32c
mov eax, dword [0x4d3320]
mov dword [eax + 0x78], ecx
mov byte [eax + 0x37], 1
push dword [esi + 4]
mov eax, dword [sym.imp.KERNEL32.dll_ReleaseMutex]
call eax
mov eax, dword [0x4d3310]
push 0
push 0
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_InvalidateRect]
mov esi, dword [ebp - 0x3c8]
cmp dword [esi + 0x308], 0
je 0x409ec7
push 0xe
push str.__releaseType
mov ecx, 0x4d1ac4
call fcn.00412220
cmp dword [esi + 0x30c], 0x10
lea edx, [esi + 0x2f8]
jb 0x409e4f
mov edx, dword [edx]
lea ecx, [ebp - 0x2f0]
call fcn.00417b40
mov byte [ebp - 4], 0xc
lea eax, [ebp - 0x2f0]
cmp dword [ebp - 0x2dc], 8
mov ecx, 0x4d1ac4
push dword [ebp - 0x2e0]
cmovae eax, dword [ebp - 0x2f0]
push eax
call fcn.00412220
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x2dc]
cmp edx, 8
jb 0x409ec7
mov ecx, dword [ebp - 0x2f0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x409ebd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a36d
push edx
push ecx
call fcn.00451449
add esp, 8
cmp dword [0x4d1b50], 8
mov ecx, 0x4d1b3c
mov dl, byte [0x4d1a62]
cmovae ecx, dword [0x4d1b3c]
call fcn.004059b0
mov byte [ebp - 0x3a1], al
mov byte [ebp - 0x399], al
test al, al
jne 0x40a2e0
mov edi, dword [0x4d2eac]
mov byte [ebp - 0x399], al
test edi, edi
jne 0x409fbd
mov dword [0x4d2eac], 0x17
mov dword [0x4d1a44], 0x4946b4
mov dword [0x4d2eb0], 0x562
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [0x4d2ea8], eax
mov al, byte [ebp - 0x3a1]
mov byte [ebp - 0x399], al
mov edi, dword [0x4d2eac]
test edi, edi
jne 0x409fbd
mov ecx, dword [0x4d2ea0]
test ecx, ecx
je 0x409f97
test edi, edi
je 0x409f97
mov eax, dword [ecx + 0x34]
mov ecx, dword [ecx + 0x38]
sub ecx, eax
mov dword [ebp - 0x3a0], eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
ja 0x409f97
mov ecx, dword [ebp - 0x3a0]
lea edx, [edi - 1]
lea edx, [edx + edx*2]
cmp dword [ecx + edx*8 + 0x14], 8
lea edx, [ecx + edx*8]
jb 0x409f9c
mov edx, dword [edx]
jmp 0x409f9c
mov edx, 0x47c32c
mov ecx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409fa1
sub ecx, edi
sar ecx, 1
push ecx
push edx
lea ecx, [esi + 0x268]
call fcn.00411b40
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x3b0], esp
push 0
push 0x47c352
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
sub esp, 0x18
mov byte [ebp - 4], 0xd
mov ecx, esp
push 0xc
push str.Update_error
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.00411c40
mov byte [ebp - 4], 0
call fcn.00403a70
add esp, 0x30
cmp byte [0x4d332b], 0
jne 0x40a2fd
cmp byte [0x4d3332], 0
jne 0x40a2e9
mov ecx, dword [0x4d2ea0]
test ecx, ecx
je 0x40a072
mov edi, dword [ecx + 0x34]
mov eax, 0x2aaaaaab
mov ecx, dword [ecx + 0x38]
sub ecx, edi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x19
jb 0x40a072
cmp dword [edi + 0x254], 8
lea edx, [edi + 0x240]
jb 0x40a077
mov edx, dword [edx]
jmp 0x40a077
mov edx, 0x47c32c
mov ecx, edx
mov dword [ebp - 0x290], 0
xor eax, eax
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x27c], 7
mov word [ebp - 0x290], ax
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a0a3
sub ecx, edi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x290]
call fcn.00411b40
push 4
push str._r_n_r_n
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 0xe
call fcn.00412220
mov dword [ebp - 0x278], 0
xor ecx, ecx
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x264], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x278], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x268], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
lea eax, [esi + 0x268]
mov byte [ebp - 4], 0xf
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x40a132
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x278]
call fcn.00412220
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x2a8], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x298], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov edx, dword [ebp - 0x264]
cmp edx, 8
jb 0x40a1a9
mov ecx, dword [ebp - 0x278]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40a19f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a372
push edx
push ecx
call fcn.00451449
add esp, 8
mov edx, dword [ebp - 0x27c]
xor eax, eax
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x264], 7
mov word [ebp - 0x278], ax
cmp edx, 8
jb 0x40a206
mov ecx, dword [ebp - 0x290]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40a1fc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a372
push edx
push ecx
call fcn.00451449
add esp, 8
mov ecx, dword [0x4d2ea0]
xor eax, eax
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x27c], 7
mov word [ebp - 0x290], ax
test ecx, ecx
je 0x40a25e
mov edi, dword [ecx + 0x34]
mov eax, 0x2aaaaaab
mov ecx, dword [ecx + 0x38]
sub ecx, edi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x28
jb 0x40a25e
cmp dword [edi + 0x3bc], 8
lea ecx, [edi + 0x3a8]
jb 0x40a263
mov ecx, dword [ecx]
jmp 0x40a263
mov ecx, 0x47c32c
cmp dword [ebp - 0x294], 8
lea eax, [ebp - 0x2a8]
push 0
cmovae eax, dword [ebp - 0x2a8]
push ecx
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov edx, dword [ebp - 0x294]
cmp edx, 8
jb 0x40a2c3
mov ecx, dword [ebp - 0x2a8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40a2b9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a377
push edx
push ecx
call fcn.00451449
add esp, 8
xor eax, eax
mov dword [ebp - 0x298], 0
mov dword [ebp - 0x294], 7
mov word [ebp - 0x2a8], ax
cmp byte [0x4d332b], 0
jne 0x40a2fd
mov eax, dword [0x4d3310]
push 0
push 0
push 0x10
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, esi
call fcn.0042aba0
push 0x4b0
push esi
call fcn.00451449
mov al, byte [ebp - 0x399]
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00450db2
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
call fcn.00460976
int3