Function at 0x488e00
Capabilities:
Create process on windows
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57facd
mov eax, dword fs:[0]
push eax
mov eax, 0x56f4
call fcn.00536300
mov eax, dword [0x5fb61c]
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
push 0x4ffe
xor edi, edi
lea ecx, [ebp - 0x5626]
xor eax, eax
push edi
push ecx
mov word [ebp - 0x5628], ax
call fcn.005336c0
push 0x206
lea eax, [ebp - 0x626]
xor edx, edx
push edi
push eax
mov word [ebp - 0x628], dx
call fcn.005336c0
push 0x206
lea edx, [ebp - 0x41e]
xor ecx, ecx
push edi
push edx
mov word [ebp - 0x420], cx
call fcn.005336c0
push 0x206
lea ecx, [ebp - 0x216]
xor eax, eax
push edi
push ecx
mov word [ebp - 0x218], ax
call fcn.005336c0
add esp, 0x30
push 0x104
lea edx, [ebp - 0x628]
push edx
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov eax, dword [0x600c58]
mov ecx, dword [0x600c60]
push 0x104
lea edx, [ebp - 0x218]
push edx
push 0x1a
mov dword [ebp - 0x5658], eax
mov dword [ebp - 0x565c], ecx
call fcn.0046e6d0
add esp, 0xc
push str.__needcommunicate
lea ecx, [ebp - 0x564c]
call fcn.00422540
push 0xb
push str.__appdata_
lea ecx, [ebp - 0x564c]
mov dword [ebp - 4], edi
call fcn.00422060
lea eax, [ebp - 0x218]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x488f11
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x564c]
call fcn.00422060
push 1
push 0x595ba4
lea ecx, [ebp - 0x564c]
call fcn.00422060
push edi
push 0x1c
lea ecx, [ebp - 0x420]
push ecx
push edi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push 0x10
push str.__localappdata_
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea eax, [ebp - 0x420]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x488f71
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x420]
push edx
lea ecx, [ebp - 0x564c]
call fcn.00422060
push 1
push 0x595ba4
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea eax, [ebp - 0x5650]
push eax
call fcn.0048f0a0
add esp, 4
mov ecx, dword [ebp - 0x5650]
mov byte [ebp - 4], 1
cmp dword [ecx - 0xc], edi
je 0x488ffd
push 0x12
push str.__curinstallpath_
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov eax, dword [ebp - 0x5650]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
call fcn.00422060
push 1
push 0x595ba4
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea edx, [ebp - 0x5648]
push edx
call fcn.0048dee0
add esp, 4
push eax
lea ecx, [ebp - 0x5650]
mov byte [ebp - 4], 2
call fcn.004222b0
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489042
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x5650]
cmp dword [ecx - 0xc], edi
je 0x489087
push 0x10
push str.__curstartmenu_
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov eax, dword [ebp - 0x5650]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
call fcn.00422060
push 1
push 0x595ba4
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea edx, [ebp - 0x5648]
push edx
call fcn.0048f450
add esp, 4
push eax
lea ecx, [ebp - 0x5650]
mov byte [ebp - 4], 3
call fcn.004222b0
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4890cc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x5650]
cmp dword [ecx - 0xc], edi
je 0x489111
push 0x11
push str.__waitclearlist_
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov eax, dword [ebp - 0x5650]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
call fcn.00422060
push 1
push 0x595ba4
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea edx, [ebp - 0x5648]
push edx
call fcn.0048dfc0
add esp, 4
push eax
lea ecx, [ebp - 0x5650]
mov byte [ebp - 4], 4
call fcn.004222b0
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489156
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x5650]
cmp dword [ecx - 0xc], edi
je 0x489189
push 0xc
push str.__curlocale
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov eax, dword [ebp - 0x5650]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea edx, [ebp - 0x5648]
push edx
call fcn.0048eb10
add esp, 4
push eax
lea ecx, [ebp - 0x5650]
mov byte [ebp - 4], 5
call fcn.004222b0
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4891ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x5650]
cmp dword [ecx - 0xc], edi
je 0x489201
push 7
push str.__lang
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov eax, dword [ebp - 0x5650]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea edx, [ebp - 0x5648]
push edx
call fcn.0048e0a0
add esp, 4
push eax
lea ecx, [ebp - 0x5650]
mov byte [ebp - 4], 6
call fcn.004222b0
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489246
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x5650]
cmp dword [ecx - 0xc], edi
je 0x48928b
push 0x17
push str.__autorecoverfilepath_
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov eax, dword [ebp - 0x5650]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
call fcn.00422060
push 1
push 0x595ba4
lea ecx, [ebp - 0x564c]
call fcn.00422060
lea edx, [ebp - 0x5648]
push edx
call fcn.00493740
add esp, 4
push eax
lea ecx, [ebp - 0x5650]
mov byte [ebp - 4], 7
call fcn.004222b0
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4892d0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x5650]
cmp dword [ecx - 0xc], edi
je 0x489370
push 0x1a
push str.__oldautorecoverfilepath_
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov edx, dword [ebp - 0x5650]
push edx
lea eax, [ebp - 0x5644]
push eax
call fcn.00437b90
add esp, 8
mov ebx, 8
mov byte [ebp - 4], bl
cmp dword [eax + 0x14], ebx
jb 0x489318
mov edx, dword [eax]
jmp 0x48931a
mov edx, eax
cmp edx, edi
jne 0x489322
xor eax, eax
jmp 0x489336
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x489327
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x564c]
call fcn.00422060
mov byte [ebp - 4], 1
cmp dword [ebp - 0x5630], ebx
jb 0x48935e
mov ecx, dword [ebp - 0x5644]
push ecx
call int.0042bfd0
add esp, 4
push 1
push 0x595ba4
lea ecx, [ebp - 0x564c]
call fcn.00422060
push str.uninstallsend_message
lea ecx, [ebp - 0x5660]
call fcn.00422540
lea edx, [ebp - 0x5660]
push edx
lea eax, [ebp - 0x5654]
push eax
mov byte [ebp - 4], 9
call fcn.0046de10
add esp, 8
mov eax, dword [ebp - 0x5660]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4893c0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x5654]
push ecx
lea edx, [ebp - 0x5648]
push str.__msgwndname
push edx
call fcn.0043a1b0
add esp, 0xc
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
mov byte [ebp - 4], 0xc
call fcn.00422060
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489417
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0048ba30
test eax, eax
je 0x48946c
push str.__2019icDisable
lea ecx, [ebp - 0x5648]
call fcn.00422540
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
mov byte [ebp - 4], 0xd
call fcn.00422060
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x48946c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.DisableDelBackup
lea ecx, [ebp - 0x5648]
call fcn.00422540
lea ecx, [ebp - 0x5648]
push ecx
mov byte [ebp - 4], 0xe
call fcn.0048e140
mov esi, eax
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
add esp, 4
mov byte [ebp - 4], 0xb
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4894b7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, edi
je 0x489507
push str.__delbackupdisable
lea ecx, [ebp - 0x5648]
call fcn.00422540
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
mov byte [ebp - 4], 0xf
call fcn.00422060
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489507
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.DisableDelCustomBackup
lea ecx, [ebp - 0x5648]
call fcn.00422540
lea ecx, [ebp - 0x5648]
push ecx
mov byte [ebp - 4], 0x10
call fcn.0048e140
mov esi, eax
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
add esp, 4
mov byte [ebp - 4], 0xb
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x489552
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, edi
je 0x4895a2
push str.__delcustombackupdisable
lea ecx, [ebp - 0x5648]
call fcn.00422540
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
mov byte [ebp - 4], 0x11
call fcn.00422060
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4895a2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.DisableDelAddon
lea ecx, [ebp - 0x5648]
call fcn.00422540
lea ecx, [ebp - 0x5648]
push ecx
mov byte [ebp - 4], 0x12
call fcn.0048e140
mov esi, eax
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
add esp, 4
mov byte [ebp - 4], 0xb
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4895ed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, edi
je 0x48963d
push str.__deladdondisable
lea ecx, [ebp - 0x5648]
call fcn.00422540
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
mov byte [ebp - 4], 0x13
call fcn.00422060
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x48963d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.DisableSilentDefaultDel
lea ecx, [ebp - 0x5648]
call fcn.00422540
lea ecx, [ebp - 0x5648]
push ecx
mov byte [ebp - 4], 0x14
call fcn.0048e140
mov esi, eax
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
add esp, 4
mov byte [ebp - 4], 0xb
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x489688
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, edi
je 0x4896d8
push str.__silentdefaultdeldisable
lea ecx, [ebp - 0x5648]
call fcn.00422540
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x564c]
mov byte [ebp - 4], 0x15
call fcn.00422060
mov eax, dword [ebp - 0x5648]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4896d8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x564c]
push ecx
lea edx, [ebp - 0x5628]
push 0xffffffffffffffff
push edx
call fcn.00534500
push str.__upgradepower
lea eax, [ebp - 0x5628]
push 0xffffffffffffffff
push eax
call fcn.00534500
mov ebx, dword [ebp - 0x5658]
mov esi, 1
add esp, 0x18
cmp ebx, esi
jle 0x489745
push 0x595eb4
lea ecx, [ebp - 0x5628]
push 0xffffffffffffffff
push ecx
call fcn.00534500
mov edx, dword [ebp - 0x565c]
mov eax, dword [edx + esi*4]
push eax
lea eax, [ebp - 0x5628]
push 0xffffffffffffffff
push eax
call fcn.00534500
inc esi
add esp, 0x18
cmp esi, ebx
jl 0x489712
push 0x38
lea ecx, [ebp - 0x56d0]
push edi
push ecx
mov dword [ebp - 0x56d4], 0x3c
call fcn.005336c0
add esp, 0xc
lea ecx, [ebp - 0x56d4]
lea edx, [ebp - 0x628]
lea eax, [ebp - 0x5628]
push ecx
mov dword [ebp - 0x56d0], 0x500
mov dword [ebp - 0x569c], edi
mov dword [ebp - 0x56cc], edi
mov dword [ebp - 0x56c8], str.runas
mov dword [ebp - 0x56c4], edx
mov dword [ebp - 0x56c0], eax
mov dword [ebp - 0x56b8], 1
mov dword [ebp - 0x56b4], edi
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
jne 0x489847
mov eax, dword [ebp - 0x5654]
add eax, 0xfffffff0
mov dword [0x5ff840], 5
mov byte [ebp - 4], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4897ee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x5650]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489814
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x564c]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x48983d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 5
jmp 0x489a8f
xor esi, esi
push esi
call dword [sym.imp.ole32.dll_CoInitialize]
mov ecx, dword [0x5ff800]
push esi
push ecx
push esi
mov ecx, 0x5ff844
call fcn.004862e0
mov dword [ebp - 0x5698], 0x5a3420
mov dword [ebp - 0x5694], esi
mov dword [ebp - 0x5690], esi
mov dword [ebp - 0x568c], esi
mov dword [ebp - 0x5688], esi
mov dword [ebp - 0x5684], esi
mov dword [ebp - 0x5680], esi
mov esi, dword [0x5feb8c]
mov edi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea edx, [ebp - 0x5698]
add esi, 0x10
push esi
mov byte [ebp - 4], 0x16
mov dword [ebp - 0x565c], edx
call edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x5658], eax
lea eax, [ebp - 0x565c]
push eax
lea ecx, [ebp - 0x5658]
push ecx
mov ecx, dword [0x5ff878]
call fcn.00487320
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push esi
call ebx
lea edx, [ebp - 0x5654]
push edx
lea ecx, [ebp - 0x5700]
call fcn.0048aa50
lea ecx, [ebp - 0x5698]
mov byte [ebp - 4], 0x17
call fcn.00486230
mov ecx, 0x5ff844
call fcn.00488470
mov esi, dword [0x5feb8c]
add esi, 0x10
push esi
call edi
mov eax, dword [0x5ff87c]
test eax, eax
je 0x489938
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x489938
mov eax, dword [eax]
mov eax, dword [eax]
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov eax, dword [0x5ff87c]
mov edi, eax
test eax, eax
je 0x489964
mov eax, dword [eax]
test eax, eax
je 0x489953
push eax
call fcn.00533290
add esp, 4
mov dword [edi], 0
xor eax, eax
push edi
mov dword [edi + 4], eax
mov dword [edi + 8], eax
call int.0042bfd0
add esp, 4
xor edi, edi
push esi
mov dword [0x5ff87c], edi
call ebx
mov esi, dword [0x5ff878]
cmp esi, edi
je 0x4899a9
mov eax, dword [esi]
cmp eax, edi
je 0x48998a
push eax
call fcn.00533290
add esp, 4
mov dword [esi], edi
mov eax, dword [esi + 4]
cmp eax, edi
je 0x48999d
push eax
call fcn.00533290
add esp, 4
mov dword [esi + 4], edi
push esi
mov dword [esi + 8], edi
call int.0042bfd0
add esp, 4
mov ecx, 0x5ff844
call fcn.00486140
call dword [sym.imp.ole32.dll_CoUninitialize]
mov esi, dword [0x5ff840]
lea ecx, [ebp - 0x5700]
mov byte [ebp - 4], 0x16
call fcn.0048a930
mov eax, dword [ebp - 0x5688]
cmp eax, edi
je 0x4899e7
push eax
call fcn.00533290
add esp, 4
mov dword [ebp - 0x5688], edi
mov eax, dword [ebp - 0x5694]
mov dword [ebp - 0x5684], edi
mov dword [ebp - 0x5680], edi
cmp eax, edi
je 0x489a0c
push eax
call fcn.00533290
add esp, 4
mov dword [ebp - 0x5694], edi
mov eax, dword [ebp - 0x5654]
add eax, 0xfffffff0
mov dword [ebp - 0x5690], edi
mov dword [ebp - 0x568c], edi
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489a3e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x5650]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489a64
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x564c]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x489a8d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
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.005332ca
mov esp, ebp
pop ebp
ret