Function at 0x421ac0
Capabilities:
Check mutex on windows
Delete file
Delete registry value
Get common file path
Hide graphical window
Persist via run registry key

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5aea14
mov eax, dword fs:[0]
push eax
sub esp, 0x8d8
mov eax, dword [0x620024]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, ecx
mov dword [ebp - 0x234], eax
push dword [eax + 0x48]
lea ecx, [ebp - 0x230]
call fcn.00403880
mov dword [ebp - 4], 0
call fcn.00449b3d
mov ecx, eax
test ecx, ecx
je 0x422ba3
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x228], edi
mov byte [ebp - 4], 1
call fcn.00449b3d
mov ecx, eax
test ecx, ecx
je 0x422bad
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x224], esi
xor eax, eax
mov byte [ebp - 4], 2
mov dword [ebp - 0x22c], eax
xor ecx, ecx
mov dword [ebp - 0x240], eax
mov dword [ebp - 0x23c], eax
mov eax, dword [ebp - 0x230]
mov dword [ebp - 0x238], ecx
mov dword [ebp - 0x220], 6
cmp dword [eax - 0xc], ecx
jne 0x421d06
push ecx
push 0x82
lea ecx, [ebp - 0x644]
call fcn.0043f9c1
mov dword [ebp - method.CAboutDlg.virtual_0], vtable.CAboutDlg.0
mov dword [ebp - 0x598], 0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x644]
mov dword [ebp - 0x59c], 1
call fcn.0043ff77
push 0x5f5da8
push str.32770
call dword [sym.imp.USER32.dll_FindWindowW]
mov ebx, eax
mov dword [ebp - 0x240], ebx
test ebx, ebx
je 0x421c55
push ebx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push 9
push ebx
mov ebx, dword [sym.imp.USER32.dll_ShowWindow]
call ebx
push 5
push dword [ebp - 0x240]
call ebx
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
lea ecx, [ebp - 0x644]
mov dword [ebp - method.CAboutDlg.virtual_0], vtable.CAboutDlg.0
call fcn.0043fa20
or ebx, 0xffffffff
mov byte [ebp - 4], 1
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x421c36
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x422656
mov ecx, dword [edi]
push edi
jmp 0x422651
push 0
push 0xa0
lea ecx, [ebp - 0x2fc]
call fcn.0043f9c1
mov dword [ebp - method.CAppDlg.virtual_0], vtable.CAppDlg.0
mov dword [ebp - 0x24c], 0
mov dword [ebp - method.CBitmap.virtual_0], vtable.CBitmap.0
mov byte [ebp - 4], 5
call fcn.0044bbac
call fcn.0044bbac
push 0x64
mov eax, dword [eax + 0xc]
push eax
call dword [sym.imp.USER32.dll_LoadIconW]
mov dword [ebp - 0x254], eax
mov ecx, dword [ebp - 0x234]
lea eax, [ebp - 0x2fc]
mov byte [ebp - 4], 6
mov dword [ecx + 0x20], eax
mov ecx, eax
call fcn.0043ff77
lea ecx, [ebp - 0x250]
mov dword [ebp - method.CAppDlg.virtual_0], vtable.CAppDlg.0
mov dword [ebp - method.CBitmap.virtual_0], vtable.CBitmap.0
call fcn.00402b30
lea ecx, [ebp - 0x2fc]
call fcn.0043fa20
lea ecx, [ebp - 0x644]
mov dword [ebp - method.CAboutDlg.virtual_0], vtable.CAboutDlg.0
call fcn.0043fa20
or ebx, 0xffffffff
jmp 0x422797
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
or ebx, 0xffffffff
test eax, eax
je 0x42260c
mov edi, dword [ebp - 0x228]
push str._file
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x421de3
cmp dword [esi - 0xc], eax
jne 0x421de3
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
test eax, eax
je 0x4225bd
mov eax, dword [ebp - 0x228]
lea edi, [esi - 0x10]
lea edx, [eax - 0x10]
cmp edx, edi
je 0x421dd6
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x421dc1
mov ecx, dword [edx]
cmp ecx, dword [edi]
jne 0x421dc1
push edx
call fcn.00405670
add esp, 4
mov dword [ebp - 0x220], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x421dab
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x220]
lea esi, [eax + 0x10]
xor edi, edi
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [eax - 0xc]
lea ecx, [ebp - 0x224]
push eax
call fcn.00402d30
mov esi, dword [ebp - 0x224]
xor edi, edi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._email
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x421ea2
cmp dword [esi - 0xc], eax
jne 0x421ea2
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
test eax, eax
je 0x4225bd
mov eax, dword [ebp - 0x228]
lea edi, [esi - 0x10]
lea edx, [eax - 0x10]
cmp edx, edi
je 0x421e92
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x421e7d
mov ecx, dword [edx]
cmp ecx, dword [edi]
jne 0x421e7d
push edx
call fcn.00405670
add esp, 4
mov dword [ebp - 0x220], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x421e64
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x220]
lea esi, [eax + 0x10]
mov edi, 5
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [eax - 0xc]
lea ecx, [ebp - 0x224]
push eax
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 5
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._folder
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x421f8b
cmp dword [esi - 0xc], eax
jne 0x421f8b
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
test eax, eax
je 0x4225bd
mov eax, dword [ebp - 0x228]
lea edi, [esi - 0x10]
lea edx, [eax - 0x10]
cmp edx, edi
je 0x421f43
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x421f2e
mov ecx, dword [edx]
cmp ecx, dword [edi]
jne 0x421f2e
push edx
call fcn.00405670
add esp, 4
mov dword [ebp - 0x220], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x421f23
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x220]
lea esi, [eax + 0x10]
mov dword [ebp - 0x224], esi
jmp 0x421f43
push dword [eax - 0xc]
lea ecx, [ebp - 0x224]
push eax
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov ecx, dword [esi - 0xc]
mov edi, 1
mov dword [ebp - 0x220], edi
lea eax, [ecx - 1]
test eax, eax
js 0x422bc1
cmp eax, ecx
jg 0x422bc1
cmp word [esi + eax*2], 0x5c
je 0x4225cd
push edi
push 0x5f4568
lea ecx, [ebp - 0x224]
call fcn.00405b30
mov esi, dword [ebp - 0x224]
jmp 0x4225cd
push str._unused
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x42204a
cmp dword [esi - 0xc], eax
jne 0x42204a
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
test eax, eax
je 0x4225bd
mov eax, dword [ebp - 0x228]
lea edi, [esi - 0x10]
lea edx, [eax - 0x10]
cmp edx, edi
je 0x42203a
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x422025
mov ecx, dword [edx]
cmp ecx, dword [edi]
jne 0x422025
push edx
call fcn.00405670
add esp, 4
mov dword [ebp - 0x220], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x42200c
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x220]
lea esi, [eax + 0x10]
mov edi, 2
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [eax - 0xc]
lea ecx, [ebp - 0x224]
push eax
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 2
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._tempfile
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x422109
cmp dword [esi - 0xc], eax
jne 0x422109
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
test eax, eax
je 0x4225bd
mov eax, dword [ebp - 0x228]
lea edi, [esi - 0x10]
lea edx, [eax - 0x10]
cmp edx, edi
je 0x4220f9
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x4220e4
mov ecx, dword [edx]
cmp ecx, dword [edi]
jne 0x4220e4
push edx
call fcn.00405670
add esp, 4
mov dword [ebp - 0x220], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4220cb
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x220]
lea esi, [eax + 0x10]
mov edi, 4
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [eax - 0xc]
lea ecx, [ebp - 0x224]
push eax
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 4
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._drive
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x4221c8
cmp dword [esi - 0xc], eax
jne 0x4221c8
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
test eax, eax
je 0x4225bd
mov eax, dword [ebp - 0x228]
lea edi, [esi - 0x10]
lea edx, [eax - 0x10]
cmp edx, edi
je 0x4221b8
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x4221a3
mov ecx, dword [edx]
cmp ecx, dword [edi]
jne 0x4221a3
push edx
call fcn.00405670
add esp, 4
mov dword [ebp - 0x220], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x42218a
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x220]
lea esi, [eax + 0x10]
mov edi, 3
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [eax - 0xc]
lea ecx, [ebp - 0x224]
push eax
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 3
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._reboot
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x4221e9
mov dword [ebp - 0x238], 1
jmp 0x4225c7
push str._queue
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x42220a
mov dword [ebp - 0x23c], 1
jmp 0x4225c7
push str._silent
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
je 0x4225c7
push str._results
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
je 0x4225c7
push str._resultsonerror
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x422257
mov dword [ebp - 0x240], 1
jmp 0x4225c7
push str._recycled
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x4222ed
lea ecx, [esi - 0x10]
lea edx, [edi - 0x10]
mov dword [ebp - 0x220], ecx
cmp edx, ecx
je 0x4222dd
cmp dword [ecx + 0xc], eax
lea esi, [ecx + 0xc]
jl 0x4222c8
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x4222c8
push edx
call fcn.00405670
add esp, 4
mov edi, eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4222af
mov esi, dword [ebp - 0x220]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
lea esi, [edi + 0x10]
mov edi, 7
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [edi - 0xc]
lea ecx, [ebp - 0x224]
push edi
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 7
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._Install
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
je 0x42275c
push str._RightBtn
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x422399
lea ecx, [esi - 0x10]
lea edx, [edi - 0x10]
mov dword [ebp - 0x220], ecx
cmp edx, ecx
je 0x422389
cmp dword [ecx + 0xc], eax
lea esi, [ecx + 0xc]
jl 0x422374
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x422374
push edx
call fcn.00405670
add esp, 4
mov edi, eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x42235b
mov esi, dword [ebp - 0x220]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
lea esi, [edi + 0x10]
mov edi, 8
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [edi - 0xc]
lea ecx, [ebp - 0x224]
push edi
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 8
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push 0x5f5b1c
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x42242f
lea ecx, [esi - 0x10]
lea edx, [edi - 0x10]
mov dword [ebp - 0x220], ecx
cmp edx, ecx
je 0x42241f
cmp dword [ecx + 0xc], eax
lea esi, [ecx + 0xc]
jl 0x42240a
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x42240a
push edx
call fcn.00405670
add esp, 4
mov edi, eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4223f1
mov esi, dword [ebp - 0x220]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
lea esi, [edi + 0x10]
mov edi, 9
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [edi - 0xc]
lea ecx, [ebp - 0x224]
push edi
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 9
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._undeleted
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x4224c5
lea ecx, [esi - 0x10]
lea edx, [edi - 0x10]
mov dword [ebp - 0x220], ecx
cmp edx, ecx
je 0x4224b5
cmp dword [ecx + 0xc], eax
lea esi, [ecx + 0xc]
jl 0x4224a0
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x4224a0
push edx
call fcn.00405670
add esp, 4
mov edi, eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x422487
mov esi, dword [ebp - 0x220]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
lea esi, [edi + 0x10]
mov edi, 0xa
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [edi - 0xc]
lea ecx, [ebp - 0x224]
push edi
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 0xa
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._schReboot
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x422558
lea ecx, [esi - 0x10]
lea edx, [edi - 0x10]
mov dword [ebp - 0x220], ecx
cmp edx, ecx
je 0x42254b
cmp dword [ecx + 0xc], eax
lea esi, [ecx + 0xc]
jl 0x422536
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x422536
push edx
call fcn.00405670
add esp, 4
mov edi, eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x42251d
mov esi, dword [ebp - 0x220]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
lea esi, [edi + 0x10]
mov edi, 0xb
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push dword [edi - 0xc]
lea ecx, [ebp - 0x224]
push edi
call fcn.00402d30
mov esi, dword [ebp - 0x224]
mov edi, 0xb
mov dword [ebp - 0x220], edi
jmp 0x4225cd
push str._uninstall
push edi
call fcn.0058f7fd
add esp, 8
test eax, eax
jne 0x4225c7
lea eax, [ebp - 0x238]
push eax
push 0x20006
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionRun
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4225a9
push str.EdeW
push dword [ebp - 0x238]
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
push dword [ebp - 0x238]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.00449b3d
mov ecx, eax
test ecx, ecx
je 0x422bb7
jmp 0x422696
mov dword [ebp - 0x22c], 1
mov edi, dword [ebp - 0x220]
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.00422bf0
test eax, eax
jne 0x421d24
mov ecx, dword [ebp - 0x238]
test ecx, ecx
jne 0x4227f9
cmp dword [ebp - 0x22c], ecx
jne 0x42260c
cmp edi, 6
je 0x42260c
cmp dword [esi - 0xc], ecx
jne 0x422806
push 0
push 0x10
push 0xec
call fcn.0044b4c6
mov eax, ebx
mov byte [ebp - 4], 1
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x422635
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, ebx
mov edx, dword [ebp - 0x228]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422656
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x230]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x422678
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00586281
mov esp, ebp
pop ebp
ret
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x22c], eax
push 0
push 0x24
lea eax, [ebp - 0x21c]
mov byte [ebp - 4], 8
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x422710
lea ecx, [ebp - 0x21c]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4226d0
sub ecx, edx
lea eax, [ebp - 0x21c]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x22c]
call fcn.00402d30
push 0x17
push str._tempEDE_Quicklist.txt
lea ecx, [ebp - 0x22c]
call fcn.00405b30
push dword [ebp - 0x22c]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0x5f5da8
push str.32770
call dword [sym.imp.USER32.dll_FindWindowW]
test eax, eax
je 0x422739
push 0
push 0
push 0x12
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov byte [ebp - 4], 2
mov eax, ebx
mov edx, dword [ebp - 0x22c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422797
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x422797
push ecx
lea ecx, [ebp - 0x594]
call fcn.00406580
mov ecx, dword [ebp - 0x234]
lea eax, [ebp - 0x594]
mov byte [ebp - 4], 7
mov dword [ebp - 0x254], 1
mov dword [ecx + 0x20], eax
mov ecx, eax
call fcn.0043ff77
lea ecx, [ebp - 0x594]
call fcn.004069c0
mov byte [ebp - 4], 1
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4227b2
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x4227cd
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x230]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x4227ef
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, 1
jmp 0x42267a
cmp dword [ebp - 0x22c], 0
jne 0x42260c
mov byte [ebp - 4], 9
push ecx
test ecx, ecx
je 0x422861
lea ecx, [ebp - 0x594]
call fcn.00406580
mov ecx, dword [ebp - 0x234]
lea eax, [ebp - 0x594]
mov byte [ebp - 4], 0xa
mov dword [ebp - 0x268], 1
mov dword [ebp - 0x304], 1
mov dword [ecx + 0x20], eax
mov ecx, eax
call fcn.0043ff77
lea ecx, [ebp - 0x594]
cmp eax, 1
je 0x422b12
call fcn.004069c0
jmp 0x42261a
lea ecx, [ebp - 0x8e4]
call fcn.00406580
add edi, 0xfffffff9
mov byte [ebp - 4], 0xb
cmp edi, 4
ja case.default.0x422878
jmp dword [edi*4 + 0x422bd8]
mov dword [ebp - 0x650], 1
mov dword [ebp - 0x64c], 1
jmp 0x4228b7
mov dword [ebp - 0x648], 1
jmp 0x4228b7
mov dword [ebp - 0x644], 1
jmp 0x4228b7
mov dword [ebp - 0x640], 1
mov ecx, dword [ebp - 0x234]
lea eax, [ebp - 0x8e4]
mov dword [ecx + 0x20], eax
mov ecx, eax
call fcn.0043ff77
lea ecx, [ebp - 0x8e4]
cmp eax, 1
je 0x422b12
call fcn.004069c0
jmp 0x42261a
push 0
lea ecx, [ebp - 0x474]
call fcn.0041ef80
mov eax, dword [ebp - 0x234]
lea ecx, [ebp - 0x474]
mov byte [ebp - 4], 0xc
mov dword [eax + 0x20], ecx
call fcn.00449b3d
mov ecx, eax
test ecx, ecx
je 0x422bcb
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x238], edi
mov byte [ebp - 4], 0xd
xor eax, eax
mov dword [ebp - 0x22c], eax
cmp eax, 0x64
jae 0x4229ce
push eax
lea eax, [ebp - 0x238]
push str.EdeL.CD6A9C31_A86F_44bb_B1DF_672D9AAE0C47._u
push eax
call fcn.00402b00
mov edi, dword [ebp - 0x238]
add esp, 0xc
push edi
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 0xd0], eax
test eax, eax
je 0x422aa3
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4229c6
mov eax, dword [ebp - 0x234]
push dword [eax + 0xd0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x234]
mov dword [eax + 0xd0], 0
mov eax, dword [ebp - 0x22c]
cmp eax, 0x63
jne 0x4229c0
push 0
push 0x30
push 0xeb
call fcn.0044b4c6
mov eax, dword [ebp - 0x22c]
inc eax
jmp 0x422929
mov ecx, dword [ebp - 0x22c]
jmp 0x4229d0
xor ecx, ecx
mov eax, dword [ebp - 0x234]
cmp dword [eax + 0xd0], 0
je 0x422aa3
cmp dword [ebp - 0x23c], 0
je 0x422aa3
test ecx, ecx
je 0x422aa3
dec ecx
lea eax, [ebp - 0x238]
push ecx
push str.EdeL.CD6A9C31_A86F_44bb_B1DF_672D9AAE0C47._u
push eax
mov dword [ebp - 0x23c], ecx
call fcn.00402b00
mov edi, dword [ebp - 0x238]
add esp, 0xc
push edi
push 0
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov ecx, dword [ebp - 0x23c]
mov dword [ebp - 0x22c], eax
test eax, eax
je 0x4229f0
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp - 0x22c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0x22c], eax
test eax, eax
je 0x422aa3
mov eax, dword [ebp - 0x234]
push dword [eax + 0xd0]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x234]
push dword [eax + 0xd0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0x234]
mov eax, dword [ebp - 0x22c]
mov dword [ecx + 0xd0], eax
mov ecx, dword [ebp - 0x23c]
jmp 0x4229f0
mov byte [ebp - 4], 0xc
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x422abe
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x240]
lea ecx, [ebp - 0x474]
mov dword [ebp - 0x2b0], eax
mov eax, dword [ebp - 0x220]
push esi
push eax
mov dword [ebp - 0x2ac], 1
mov dword [ebp - 0x2a8], 1
call fcn.0041fec0
lea ecx, [ebp - 0x474]
call fcn.0043ff77
lea ecx, [ebp - 0x474]
cmp eax, 1
jne 0x422b57
call fcn.0041f380
lea ecx, [ebp - 0x8e4]
call fcn.004069c0
mov byte [ebp - 4], 1
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x422b32
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, ebx
mov edx, dword [ebp - 0x228]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4227cd
mov ecx, dword [edx]
push edx
jmp 0x4227c8
call fcn.0041f380
lea ecx, [ebp - 0x8e4]
call fcn.004069c0
jmp 0x42261a
push 0x80004005
call fcn.00403300
push 0x80004005
call fcn.00403300
push 0x80004005
call fcn.00403300
push 0x80070057
call fcn.00403300
push 0x80004005
call fcn.00403300
nop dword [eax]
jg 0x422c02
inc edx
add byte [ecx - 0x6affbdd8], cl
sub byte [edx], al
mov eax, dword [0xad004228]
sub byte [edx], al
int3
in al, dx
adc byte [ebx + 0x56], dl
push edi
mov eax, dword [0x620024]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov ecx, esi
mov edi, dword [ebp + 0xc]
call fcn.004234a0
mov ecx, esi
call fcn.004233a0
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0
jle 0x42313e
push 0x20
push ecx
call fcn.00587d48
mov ecx, dword [esi]
add esp, 8
test eax, eax
je 0x42313a
sub eax, ecx
sar eax, 1
mov dword [ebp - 0x1c], eax
cmp eax, 0xffffffff
je 0x42313a
push eax
lea eax, [ebp - 0x18]
mov ecx, esi
push eax
call fcn.00415fc0
mov dword [ebp - 4], 0
or ebx, 0xffffffff
mov edx, dword [eax]
mov ecx, dword [edi]
sub ecx, 0x10
mov dword [ebp - 0x14], ecx
lea eax, [edx - 0x10]
mov dword [ebp + 0xc], eax
cmp eax, ecx
je 0x422cd8
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
mov dword [ebp - 0x10], esi
mov esi, dword [ebp + 8]
jl 0x422ccd
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x422ccd
push dword [ebp + 0xc]
call fcn.00405670
mov dword [ebp + 0xc], eax
add esp, 4
mov eax, dword [ebp - 0x10]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x422cc3
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 0xc]
add eax, 0x10
mov dword [edi], eax
jmp 0x422cd8
push dword [edx - 0xc]
mov ecx, edi
push edx
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov eax, ebx
mov edx, dword [ebp - 0x18]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422cf9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax - 0xc]
sub eax, dword [ebp - 0x1c]
dec eax
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.00416080
mov dword [ebp - 4], 1
mov edx, dword [eax]
mov ecx, dword [esi]
sub ecx, 0x10
mov dword [ebp - 0x18], ecx
lea eax, [edx - 0x10]
mov dword [ebp + 0xc], eax
cmp eax, ecx
je 0x422d78
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0x1c], eax
jl 0x422d6d
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x422d6d
push dword [ebp + 0xc]
call fcn.00405670
mov edx, dword [ebp - 0x1c]
add esp, 4
mov dword [ebp + 0xc], eax
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x422d66
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 0xc]
add eax, 0x10
mov dword [esi], eax
jmp 0x422d78
push dword [edx - 0xc]
mov ecx, esi
push edx
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov eax, ebx
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422d99
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [edi]
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x42311c
js 0x42332f
cmp word [ecx], 0x22
jne 0x42311c
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
jle 0x422fe4
push 0x22
push eax
call fcn.00587d48
mov ecx, dword [edi]
add esp, 8
test eax, eax
je 0x422fe4
sub eax, dword [esi]
sar eax, 1
mov dword [ebp - 0x10], eax
cmp eax, 0xffffffff
je 0x422fe4
mov eax, dword [ecx - 0xc]
mov ecx, edi
dec eax
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00416080
mov dword [ebp - 4], 2
mov ecx, dword [eax]
mov esi, dword [edi]
sub esi, 0x10
lea edx, [ecx - 0x10]
cmp edx, esi
je 0x422e4f
cmp dword [esi + 0xc], 0
jl 0x422e44
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x422e44
push edx
call fcn.00405670
add esp, 4
mov dword [ebp + 0xc], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x422e3d
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 0xc]
add eax, 0x10
mov dword [edi], eax
jmp 0x422e4f
push dword [ecx - 0xc]
push ecx
mov ecx, edi
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov eax, ebx
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422e70
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x422e84
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x422e9a
call fcn.00449b3d
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x423325
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 0xc], eax
mov eax, 0x5f5de4
mov dword [ebp - 4], 3
lea ecx, [ebp + 0xc]
test eax, 0xffff0000
jne 0x422ec6
movzx eax, ax
push eax
call fcn.00403130
jmp 0x422ed0
push 0x5f5de4
call fcn.00406060
mov dword [ebp - 4], 4
mov ecx, edi
mov esi, dword [ebp + 0xc]
push dword [esi - 0xc]
push esi
call fcn.00405b30
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x422f03
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp - 0x10]
mov esi, dword [ebp + 8]
lea eax, [ebp + 0xc]
push eax
mov ecx, esi
call fcn.00415fc0
mov dword [ebp - 4], 5
mov ecx, edi
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
call fcn.00405b30
mov dword [ebp - 4], 0xffffffff
mov eax, ebx
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x422f49
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax - 0xc]
sub eax, dword [ebp - 0x10]
dec eax
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.00416080
mov dword [ebp - 4], 6
mov edx, dword [eax]
mov ecx, dword [esi]
sub ecx, 0x10
mov dword [ebp - 0x1c], ecx
lea eax, [edx - 0x10]
mov dword [ebp + 8], eax
cmp eax, ecx
je 0x422fd5
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp + 0xc], eax
jl 0x422fca
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x422fca
push dword [ebp + 8]
call fcn.00405670
mov edx, dword [ebp + 0xc]
add esp, 4
mov dword [ebp + 8], eax
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x422fb6
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x18]
mov dword [esi], eax
jmp 0x423107
push dword [edx - 0xc]
mov ecx, esi
push edx
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x18]
jmp 0x423107
mov eax, dword [ecx - 0xc]
mov ecx, edi
dec eax
push eax
lea eax, [ebp + 0xc]
push eax
call fcn.00416080
mov dword [ebp - 4], 7
mov ecx, dword [eax]
mov esi, dword [edi]
sub esi, 0x10
lea edx, [ecx - 0x10]
cmp edx, esi
je 0x42304c
cmp dword [esi + 0xc], 0
jl 0x423041
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x423041
push edx
call fcn.00405670
add esp, 4
mov dword [ebp + 8], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42303a
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
jmp 0x42304c
push dword [ecx - 0xc]
push ecx
mov ecx, edi
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov eax, ebx
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42306d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
jle 0x42311c
push 0x22
push eax
call fcn.00587d48
add esp, 8
test eax, eax
je 0x42311c
sub eax, dword [edi]
sar eax, 1
cmp eax, 0xffffffff
je 0x42311c
push eax
lea eax, [ebp + 0xc]
mov ecx, edi
push eax
call fcn.00415fc0
mov dword [ebp - 4], 8
mov ecx, dword [eax]
mov esi, dword [edi]
sub esi, 0x10
lea edx, [ecx - 0x10]
cmp edx, esi
je 0x4230fd
cmp dword [esi + 0xc], 0
jl 0x4230f2
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x4230f2
push edx
call fcn.00405670
add esp, 4
mov dword [ebp + 8], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4230eb
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
jmp 0x4230fd
push dword [ecx - 0xc]
push ecx
mov ecx, edi
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x42311c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [edi]
xor eax, eax
cmp dword [ecx - 0xc], eax
setne al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp dword [ecx - 0xc], 0
je 0x42330f
mov edx, dword [edi]
lea eax, [ecx - 0x10]
sub edx, 0x10
mov dword [ebp + 0xc], eax
or ebx, 0xffffffff
mov dword [ebp - 0x18], edx
cmp eax, edx
je 0x4231aa
cmp dword [edx + 0xc], 0
lea esi, [edx + 0xc]
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp + 8]
jl 0x42319f
mov eax, dword [eax]
cmp eax, dword [edx]
jne 0x42319f
push dword [ebp + 0xc]
call fcn.00405670
mov dword [ebp + 8], eax
add esp, 4
mov eax, dword [ebp - 0x1c]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x423195
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
jmp 0x4231aa
push dword [ecx - 0xc]
push ecx
mov ecx, edi
call fcn.00402d30
mov ecx, esi
call fcn.00403200
mov eax, dword [edi]
mov ecx, dword [eax - 0xc]
test ecx, ecx
js 0x42332f
cmp word [eax], 0x22
jne 0x423250
lea eax, [ecx - 1]
mov ecx, edi
push eax
lea eax, [ebp + 0xc]
push eax
call fcn.00416080
mov dword [ebp - 4], 9
mov ecx, dword [eax]
mov esi, dword [edi]
sub esi, 0x10
lea edx, [ecx - 0x10]
cmp edx, esi
je 0x42322f
cmp dword [esi + 0xc], 0
jl 0x423224
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x423224
push edx
call fcn.00405670
add esp, 4
mov dword [ebp + 8], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42321d
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
jmp 0x42322f
push dword [ecx - 0xc]
push ecx
mov ecx, edi
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov eax, ebx
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x423250
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [edi]
mov eax, dword [edx - 0xc]
lea ecx, [eax - 1]
test ecx, ecx
js 0x42332f
cmp ecx, eax
jg 0x42332f
cmp word [edx + ecx*2], 0x22
jne 0x4232f6
push ecx
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.00415fc0
mov dword [ebp - 4], 0xa
mov ecx, dword [eax]
mov esi, dword [edi]
sub esi, 0x10
lea edx, [ecx - 0x10]
cmp edx, esi
je 0x4232d7
cmp dword [esi + 0xc], 0
jl 0x4232cc
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x4232cc
push edx
call fcn.00405670
add esp, 4
mov dword [ebp + 8], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4232c5
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
jmp 0x4232d7
push dword [ecx - 0xc]
push ecx
mov ecx, edi
call fcn.00402d30
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x4232f6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 0x80004005
call fcn.00403300
push 0x80070057
call fcn.00403300
int3