Function at 0x4413e0
Capabilities:
Check if file exists
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51be0e
mov eax, dword fs:[0]
push eax
sub esp, 0x488
mov eax, dword [0x5684dc]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
call fcn.00416f80
mov ecx, eax
test ecx, ecx
je 0x4420e3
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x444], eax
mov dword [ebp - 4], 0
mov dword [ebp - method.mf_bind_t_class_CInstaller__class_CInstaller___void_.virtual_0], vtable.mf_bind_t_class_CInstaller__class_CInstaller___void_.0
mov dword [ebp - 0x434], 0x43f980
mov dword [ebp - 0x430], edi
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 1
push eax
call fcn.0044b610
add esp, 4
mov byte [ebp - 4], 0
call fcn.00437e20
mov esi, eax
call fcn.00437ea0
mov ecx, eax
call fcn.00438020
mov ecx, dword [esi]
push dword [eax]
push esi
call dword [ecx + 0x24]
push eax
push str.install_type:_d__install_version:_s
call fcn.0043a380
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 0
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 2
push eax
call fcn.0044b610
add esp, 0x10
mov byte [ebp - 4], 0
lea esi, [edi + 4]
push esi
call fcn.00437ea0
mov ecx, eax
call fcn.00438060
push eax
call fcn.0044cad0
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 2
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 3
push eax
call fcn.0044b610
mov esi, dword [esi]
lea ecx, [ebp - 0x43c]
add esp, 0xc
mov byte [ebp - 4], 0
call fcn.0044d230
push esi
lea ecx, [ebp - 0x43c]
mov byte [ebp - 4], 4
call fcn.0044d810
lea ecx, [ebp - 0x43c]
call fcn.0044db20
lea ecx, [ebp - 0x43c]
mov byte [ebp - 4], 0
call fcn.0044d340
push str.remove_all_pending_files
call fcn.0043a380
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 3
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 5
push eax
call fcn.0044b610
push str..tmp
push dword [edi + 4]
lea esi, [edi + 4]
mov byte [ebp - 4], 0
call fcn.00405530
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 4
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 6
push eax
call fcn.0044b610
push dword [esi]
mov byte [ebp - 4], 0
push str.remove_all_.tmp_files_in__s
call fcn.0043a380
push str.update
lea eax, [ebp - 0x42c]
push esi
push eax
call fcn.00429a70
push dword [eax]
mov byte [ebp - 4], 7
call fcn.00404be0
mov edx, dword [ebp - 0x42c]
or esi, 0xffffffff
add esp, 0x2c
mov byte [ebp - 4], 0
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x44162a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.update
lea eax, [edi + 4]
push eax
lea eax, [ebp - 0x42c]
push eax
call fcn.00429a70
push dword [eax]
mov byte [ebp - 4], 8
push str.Delete_directory_recursively:__s
call fcn.0043a380
mov edx, dword [ebp - 0x42c]
add esp, 0x14
mov byte [ebp - 4], 0
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x441673
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 5
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 9
push eax
call fcn.0044b610
add esp, 4
mov byte [ebp - 4], 0
mov ecx, edi
call fcn.0043dce0
and eax, 1
mov dword [ebp - 0x440], eax
jne 0x4416d2
push 0xf
push str.copy_file_fail
lea ecx, [ebp - 0x444]
call fcn.004167a0
push 0x210
lea eax, [ebp - 0x220]
push 0
push eax
call fcn.004a4120
add esp, 0xc
lea esi, [edi + 4]
lea eax, [ebp - 0x220]
push str.utils_base.dll
push dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
je 0x44191b
push str.GetLuaExplain
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x5738ec], eax
call fcn.00423190
mov ecx, eax
call fcn.00417470
mov ecx, str.home
mov eax, dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x44175e
test dx, dx
je 0x44175a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x44175e
add eax, 4
add ecx, 4
test dx, dx
jne 0x441738
xor eax, eax
jmp 0x441763
sbb eax, eax
or eax, 1
test eax, eax
je 0x44191b
push 4
call fcn.00431b30
mov esi, eax
add esp, 4
test esi, esi
je 0x441783
mov dword [esi], 0x43fd60
jmp 0x441785
xor esi, esi
mov dword [ebp - 0x42c], esi
lea eax, [ebp - 0x464]
mov byte [ebp - 4], 0xa
push eax
call fcn.00455ebf
add esp, 4
test eax, eax
je 0x4417ab
push eax
call fcn.004558af
add esp, 4
mov eax, dword [ebp - 0x464]
mov byte [ebp - 0x454], 1
mov dword [ebp - 0x450], eax
lea eax, [ebp - 0x460]
mov byte [ebp - 4], 0xb
push 1
push eax
call fcn.004555d7
add esp, 8
test eax, eax
je 0x4417e0
push eax
call fcn.004558af
add esp, 4
mov eax, dword [ebp - 0x460]
mov byte [ebp - 0x434], 1
mov dword [ebp - 0x430], eax
push eax
mov byte [ebp - 4], 0xc
mov byte [ebp - 0x45c], 0
call fcn.0045562a
add esp, 4
test eax, eax
je 0x441814
push eax
call fcn.004558af
add esp, 4
mov dword [ebp - 0x468], 0x532454
mov dword [ebp - 0x42c], 0
mov dword [ebp - 0x458], esi
lea eax, [ebp - 0x468]
mov byte [ebp - 4], 0xd
push eax
lea eax, [ebp - 0x44c]
push 0x442a30
push eax
call fcn.00455b1f
add esp, 0xc
mov ecx, 1
cmp eax, 4
cmovne ecx, eax
test ecx, ecx
je 0x441865
push ecx
call fcn.004558af
add esp, 4
cmp byte [ebp - 0x45c], 0
jne 0x44189a
nop
push dword [ebp - 0x460]
push dword [ebp - 0x464]
call fcn.00455f1a
add esp, 8
test eax, eax
je 0x441891
push eax
call fcn.004558af
add esp, 4
cmp byte [ebp - 0x45c], 0
je 0x441870
mov eax, dword [ebp - 0x458]
test eax, eax
je 0x4418af
push 4
push eax
call fcn.004774e9
add esp, 8
mov esi, dword [ebp - 0x460]
mov eax, dword [ebp - 0x464]
push esi
mov byte [ebp - 4], 0xe
mov dword [ebp - 0x450], eax
call fcn.0045569f
add esp, 4
test eax, eax
je 0x4418db
push eax
call fcn.004558af
add esp, 4
push esi
call fcn.00455593
push dword [ebp - 0x450]
call fcn.00455e88
add esp, 8
mov byte [ebp - 4], 0
cmp dword [edi + 0x98], 0
jne 0x4420ed
mov eax, dword [ebp - 0x44c]
lea esi, [edi + 4]
mov dword [edi + 0x94], eax
mov eax, dword [ebp - 0x448]
mov dword [edi + 0x98], eax
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 0x5d
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 0xf
push eax
call fcn.0044b610
push str.start_call_program
mov byte [ebp - 4], 0
call fcn.0043a380
mov eax, dword [esi]
add esp, 8
push dword [eax - 0xc]
push eax
call fcn.00437ea0
mov ecx, eax
call fcn.00438060
mov ecx, eax
call fcn.00444320
mov eax, dword [esi]
push dword [eax - 0xc]
push eax
call fcn.00437ea0
mov ecx, eax
call fcn.00438060
mov ecx, eax
call fcn.00444b30
push dword [esi]
call fcn.0044e380
add esp, 4
mov ecx, edi
call fcn.00442630
test eax, eax
jne 0x4419bf
push 0x14
push str.write_path_reg_fail
lea ecx, [ebp - 0x444]
mov dword [ebp - 0x440], eax
call fcn.004167a0
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 0x60
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 0x10
push eax
call fcn.0044b610
add esp, 4
mov byte [ebp - 4], 0
call fcn.00423190
mov ecx, eax
call fcn.00418290
push eax
call fcn.00423190
mov ecx, eax
call fcn.00418660
push eax
call fcn.00423190
mov ecx, eax
call fcn.004184c0
push eax
call fcn.00423190
mov ecx, eax
call fcn.00418370
push eax
call fcn.00423190
mov ecx, eax
call fcn.00418140
push eax
push ecx
mov esi, esp
mov dword [ebp - 0x42c], esi
mov eax, dword [edi + 4]
sub eax, 0x10
push eax
call fcn.00404570
add esp, 4
lea ecx, [ebp - 0x490]
add eax, 0x10
mov dword [esi], eax
call fcn.0044e6e0
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 0x61
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 0x12
push eax
call fcn.0044b610
add esp, 4
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x490]
call fcn.0044e910
call fcn.00423190
mov eax, dword [eax + 0x38]
sub eax, 0x10
push eax
call fcn.00404570
add esp, 4
add eax, 0x10
mov dword [ebp - 0x42c], eax
mov ecx, str.__fromnewinstall
nop dword [eax + eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x441af6
test dx, dx
je 0x441af2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x441af6
add eax, 4
add ecx, 4
test dx, dx
jne 0x441ad0
xor esi, esi
jmp 0x441afb
sbb esi, esi
or esi, 1
mov edx, dword [ebp - 0x42c]
or eax, 0xffffffff
mov byte [ebp - 4], 0x11
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x441b1d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
jne 0x441bb1
push str.Call_SetArParm
call fcn.0043a380
push 0x210
lea eax, [ebp - 0x220]
push esi
push eax
call fcn.004a4120
add esp, 0x10
lea eax, [ebp - 0x42c]
lea ecx, [ebp - 0x475]
push eax
call fcn.0043d700
lea esi, [edi + 4]
push dword [eax]
lea eax, [ebp - 0x220]
push dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
mov edx, dword [ebp - 0x42c]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x441b88
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
je 0x441bb4
push str.SetArParm
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x441bb4
push 0
push 1
call eax
jmp 0x441bb4
lea esi, [edi + 4]
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 0x62
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 0x14
push eax
call fcn.0044b610
mov dword [ebp - method.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.virtual_0], vtable.mf_bind_t_1_class_CInstaller__class_CInstaller___void__int_.0
mov dword [ebp - 0x438], 0x43f990
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], 0x63
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 0x15
push eax
call fcn.0044b610
add esp, 8
mov byte [ebp - 4], 0x11
mov ecx, edi
call fcn.00442260
test eax, eax
jne 0x441c46
push 0x11
push str.set_autorun_fail
lea ecx, [ebp - 0x444]
mov dword [ebp - 0x440], eax
call fcn.004167a0
cmp dword [edi + 0x98], 0
je 0x441c5a
lea ecx, [edi + 0x94]
call fcn.00442e80
push str.install_end.
call fcn.0043a380
mov eax, dword [ebp - 0x440]
mov dword [ebp - 0x45c], eax
mov eax, dword [ebp - 0x444]
mov dword [ebp - method.mf_bind_t_2_class_CInstaller__class_CInstaller___void__int__wchar_t_const__.virtual_0], vtable.mf_bind_t_2_class_CInstaller__class_CInstaller___void__int__wchar_t_const__.0
mov dword [ebp - 0x464], 0x43f960
mov dword [ebp - 0x460], edi
mov dword [ebp - 0x458], eax
lea eax, [ebp - 0x468]
mov byte [ebp - 4], 0x16
push eax
call fcn.0044b610
add esp, 8
mov byte [ebp - 4], 0x11
call fcn.00423190
mov ecx, eax
call fcn.00418c60
test eax, eax
je 0x441e88
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004a4120
add esp, 0xc
lea eax, [ebp - 0x218]
push str.utilsmgpsvc.dll
push dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
push 0
push 0x526d24
lea eax, [ebp - 0x218]
push 0x532420
push eax
call fcn.00412550
lea eax, [ebp - 0x218]
push eax
call fcn.0043a380
add esp, 0x14
lea eax, [ebp - 0x218]
xor esi, esi
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
je 0x441d39
push str.IsRuning
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x441d39
call eax
mov esi, eax
push esi
push str.sv_is_runing:_d
call fcn.0043a380
add esp, 8
test esi, esi
je 0x441df0
push str.run_suc
lea ecx, [ebp - 0x448]
call fcn.00404100
push str.service
lea ecx, [ebp - 0x440]
mov byte [ebp - 4], 0x17
call fcn.00404100
sub esp, 0x28
mov eax, esp
mov dword [ebp - 0x42c], esp
mov dword [eax + 0x24], 0
push 0
push 0
lea eax, [ebp - 0x448]
mov byte [ebp - 4], 0x19
push eax
lea eax, [ebp - 0x440]
push eax
call fcn.00423310
mov ecx, eax
mov byte [ebp - 4], 0x18
call fcn.0040e0c0
mov edx, dword [ebp - 0x440]
or esi, 0xffffffff
mov byte [ebp - 4], 0x17
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x441dcf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x448]
mov eax, esi
mov byte [ebp - 4], 0x11
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x441df0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x208
lea eax, [ebp - 0x428]
push 0
push eax
call fcn.004a4120
add esp, 0xc
lea eax, [ebp - 0x428]
push 0
push 0x1a
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov esi, dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x428]
push str.AICleaner
push eax
push eax
call esi
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x441e4e
lea eax, [ebp - 0x428]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
push 0x52b430
lea eax, [ebp - 0x428]
push eax
push eax
call esi
lea eax, [ebp - 0x428]
push eax
push 0x527b5c
push str.installedsvc
push 0x531f1c
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
lea eax, [ebp - 0x428]
push eax
call fcn.0043a380
add esp, 4
mov eax, dword [edi + 4]
lea ecx, [ebp - 0x450]
push ecx
push 0
lea ecx, [ebp - 0x448]
mov dword [ebp - 0x42c], eax
push ecx
push 0
push 0
push 4
xorps xmm0, xmm0
mov dword [ebp - 0x448], 0
push 1
push eax
mov dword [ebp - 0x440], 0
mov dword [ebp - 0x450], 0
movups xmmword [ebp - 0x474], xmm0
movups xmmword [ebp - 0x464], xmm0
call dword [sym.imp.ADVAPI32.dll_GetNamedSecurityInfoW]
lea eax, [ebp - 0x440]
mov dword [ebp - 0x470], 2
push eax
push dword [ebp - 0x448]
lea eax, [ebp - 0x474]
mov dword [ebp - 0x46c], 3
push eax
xorps xmm0, xmm0
mov dword [ebp - 0x460], 1
push 1
movlpd qword [ebp - 0x468], xmm0
mov dword [ebp - 0x45c], 5
mov dword [ebp - 0x458], str.Users
mov dword [ebp - 0x474], 0x10000000
call dword [sym.imp.ADVAPI32.dll_SetEntriesInAclW]
mov esi, eax
test esi, esi
jne 0x441f63
push eax
push dword [ebp - 0x440]
push eax
push eax
push 4
push 1
push dword [ebp - 0x42c]
call dword [sym.imp.ADVAPI32.dll_SetNamedSecurityInfoW]
mov esi, eax
mov ecx, dword [ebp - 0x450]
mov eax, dword [sym.imp.KERNEL32.dll_LocalFree]
test ecx, ecx
je 0x441f7a
push ecx
call eax
mov eax, dword [sym.imp.KERNEL32.dll_LocalFree]
mov ecx, dword [ebp - 0x440]
test ecx, ecx
je 0x441f87
push ecx
call eax
test esi, esi
je 0x44204c
push 0x44
push 0
mov dword [ebp - 0x450], 0
mov dword [ebp - 0x448], 0x44
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov esi, eax
test esi, esi
je 0x44204c
lea eax, [ebp - 0x448]
push eax
push esi
push 0
push 0x54
call dword [sym.imp.ADVAPI32.dll_CreateWellKnownSid]
test eax, eax
je 0x442045
lea eax, [ebp - 0x450]
mov dword [ebp - 0x474], 0x10000000
push eax
push 0
lea eax, [ebp - 0x474]
mov dword [ebp - 0x470], 2
push eax
xorps xmm0, xmm0
mov dword [ebp - 0x46c], 3
push 1
movlpd qword [ebp - 0x468], xmm0
mov dword [ebp - 0x460], 0
mov dword [ebp - 0x45c], 5
mov dword [ebp - 0x458], esi
call dword [sym.imp.ADVAPI32.dll_SetEntriesInAclW]
test eax, eax
jne 0x442045
push eax
push dword [ebp - 0x450]
push eax
push eax
push 4
push 1
push dword [ebp - 0x42c]
call dword [sym.imp.ADVAPI32.dll_SetNamedSecurityInfoW]
push esi
call dword [sym.imp.KERNEL32.dll_LocalFree]
push str.real_install_end.
call fcn.0043a380
lea esi, [edi + 0x78]
mov dword [ebp - method._BaseModule::CAutoLocker.virtual_0], vtable._BaseModule::CAutoLocker.0
add esp, 4
mov dword [ebp - 0x430], esi
test esi, esi
je 0x442075
mov eax, dword [esi]
push esi
call dword [eax]
mov ecx, dword [edi + 0x68]
mov byte [ebp - 4], 0x1a
test ecx, ecx
je 0x442086
mov eax, dword [ecx]
push ecx
call dword [eax + 0x14]
mov byte [ebp - 4], 0x1b
test esi, esi
je 0x442094
mov eax, dword [esi]
push esi
call dword [eax + 4]
lea ecx, [ebp - 0x490]
call fcn.0044e8c0
mov edx, dword [ebp - 0x444]
or eax, 0xffffffff
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4420c4
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
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004774d8
mov esp, ebp
pop ebp
ret 8
push 0x80004005
call fcn.00404410
call fcn.004c389b
int3