Function at 0x446880
Capabilities:
Check if file exists
Contain obfuscated stackstrings
Get common file path
Link many functions at runtime
Query or enumerate registry value
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5265b0
mov eax, dword fs:[0]
push eax
sub esp, 0x664
mov eax, dword [0x576644]
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
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
push 0
mov dword [ebp - 0x668], ebx
mov dword [ebp - 0x660], esi
call dword [sym.imp.ole32.dll_CoInitialize]
push 0
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_DefWindowProcW]
lea eax, [ebp - 0x654]
mov dword [ebp - 0x654], 8
push eax
mov dword [ebp - 0x650], 4
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
push 0x53ce1c
push 0
call fcn.004f9aa0
add esp, 8
mov ecx, 0x57a164
push 0
push ebx
push 0
call fcn.00442d20
push 0x208
lea eax, [ebp - 0x43c]
push 0
push eax
call fcn.004ca680
add esp, 0xc
lea eax, [ebp - 0x43c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov edi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x43c]
push 0x53ce20
push eax
call edi
call fcn.00422de0
mov ecx, eax
test ecx, ecx
je 0x4474bd
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x64c]
mov dword [ebp - 0x64c], eax
lea eax, [ebp - 0x43c]
push eax
call fcn.004115c0
test al, al
jne 0x4469b2
lea ecx, [ebp - 0x43c]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x446990
sub ecx, edx
lea eax, [ebp - 0x43c]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x64c]
call fcn.00412590
lea eax, [ebp - 0x64c]
mov ecx, 0x57a6b8
push eax
call fcn.00455400
mov edx, dword [ebp - 0x64c]
or ebx, 0xffffffff
add edx, 0xfffffff0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4469e3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
call fcn.00438830
mov ecx, eax
call fcn.0041abb0
call fcn.00443f80
test eax, eax
jne 0x446a26
push str.illegal_call
call fcn.00455860
add esp, 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 - 0x10]
xor ecx, ebp
call fcn.004a7695
mov esp, ebp
pop ebp
ret 0x10
lea ecx, [ebp - 0x670]
call fcn.0040b290
call fcn.00422c60
mov ecx, eax
call fcn.004a4cc0
mov eax, dword [0x57a1cc]
test al, 1
jne 0x446a65
or eax, 1
mov ecx, 0x57a1c8
mov dword [0x57a1cc], eax
call fcn.004413b0
push 0x534dd0
call fcn.004a7680
add esp, 4
mov ecx, 0x57a1c8
call fcn.00441400
call fcn.00438830
mov ecx, eax
call fcn.0041ac20
push eax
call fcn.00436a60
mov ecx, 0x57a1a0
call fcn.0040b9c0
test eax, eax
jne 0x446aaf
push str.CheckSingleInstance_failed__exit
call fcn.00455860
add esp, 4
push 0
push 0x53cea4
push 0
call fcn.00436a70
jmp 0x447332
call fcn.00422de0
mov ecx, eax
test ecx, ecx
je 0x4474c7
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x64c]
push str._READYUNINSTALL
mov dword [ebp - 0x64c], eax
call fcn.004115c0
test al, al
jne 0x446b10
mov ecx, str._READYUNINSTALL
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x446af0
sub ecx, edx
sar ecx, 1
push ecx
push str._READYUNINSTALL
lea ecx, [ebp - 0x64c]
call fcn.00412590
mov byte [ebp - 0x645], 0
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 0
push eax
call fcn.0046ac54
lea eax, [ebp - 0x654]
mov dword [ebp - 0x65c], eax
lea eax, [ebp - 0x645]
mov dword [ebp - 0x658], eax
lea eax, [ebp - 0x65c]
push eax
push 0x431390
push 0x57a09c
call fcn.0046b656
add esp, 0x10
test eax, eax
je 0x4474b1
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 1
push eax
call fcn.0046ac8e
mov ecx, dword [0x57a098]
lea eax, [ebp - 0x64c]
add esp, 4
mov dword [ebp - 4], 0xffffffff
push eax
call fcn.0041aaa0
mov edx, dword [ebp - 0x64c]
test eax, eax
mov eax, ebx
sete byte [ebp - 0x645]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x446bb8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x645], 0
je 0x446be1
call fcn.00442e40
push esi
call fcn.00442fb0
add esp, 4
test eax, eax
jne 0x447332
call fcn.00444780
jmp 0x447332
lea eax, [ebp - 0x64c]
mov dword [ebp - 0x650], 1
push eax
lea eax, [ebp - 0x234]
mov dword [ebp - 0x64c], 0x104
push eax
lea eax, [ebp - 0x650]
push eax
push str.path
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_Pathshalowp.exe
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
jne 0x4472de
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4472de
call fcn.0044a5c0
lea edx, [ebp - 0x234]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
push str.halowp.exe
lea eax, [ebp - 0x234]
push eax
call edi
lea eax, [ebp - 0x234]
push eax
call fcn.00416d40
mov ecx, eax
call fcn.00412440
push 0x208
lea eax, [ebp - 0x234]
push 0
push eax
call fcn.004ca680
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x234]
add esp, 0xc
push 0x104
push eax
push 0
call edi
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
call fcn.00422de0
mov ecx, eax
test ecx, ecx
je 0x4474d1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x64c]
push 0x53ced0
mov dword [ebp - 0x64c], eax
call fcn.004115c0
test al, al
jne 0x446cf8
push 2
push 0x53ced0
lea ecx, [ebp - 0x64c]
call fcn.00412590
mov byte [ebp - 0x645], 0
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 4
push eax
call fcn.0046ac54
lea eax, [ebp - 0x654]
mov dword [ebp - 0x65c], eax
lea eax, [ebp - 0x645]
mov dword [ebp - 0x658], eax
lea eax, [ebp - 0x65c]
push eax
push 0x431390
push 0x57a09c
call fcn.0046b656
add esp, 0x10
test eax, eax
je 0x4472d5
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 5
push eax
call fcn.0046ac8e
mov ecx, dword [0x57a098]
lea eax, [ebp - 0x64c]
add esp, 4
mov dword [ebp - 4], 0xffffffff
push eax
call fcn.0041aaa0
mov edx, dword [ebp - 0x64c]
mov esi, eax
add edx, 0xfffffff0
mov ecx, ebx
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x446d99
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x446dce
lea ecx, [ebp - 0x664]
call fcn.0043fd00
lea ecx, [ebp - 0x664]
call fcn.00440db0
lea ecx, [ebp - 0x664]
call fcn.00440cb0
lea ecx, [ebp - 0x664]
call fcn.0043fed0
jmp 0x4471b1
push 0x208
lea eax, [ebp - 0x234]
push 0
push eax
call fcn.004ca680
add esp, 0xc
lea eax, [ebp - 0x234]
push 0x104
push eax
push 0
call edi
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
push 0x537cdc
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
mov byte [ebp - 0x645], 0
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 8
push eax
call fcn.0046ac54
lea eax, [ebp - 0x654]
mov dword [ebp - 0x65c], eax
lea eax, [ebp - 0x645]
mov dword [ebp - 0x658], eax
lea eax, [ebp - 0x65c]
push eax
push 0x420480
push 0x579f90
call fcn.0046b656
add esp, 0x10
test eax, eax
je 0x4472cc
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 9
push eax
call fcn.0046ac8e
mov edi, dword [0x579f8c]
lea eax, [ebp - 0x234]
push eax
mov dword [ebp - 4], 0xffffffff
call fcn.004672b0
add esp, 8
test eax, eax
je 0x446efe
cmp dword [edi], 0
jne 0x446efe
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [edi], eax
test eax, eax
je 0x446efe
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.HttpInit
push eax
call esi
push str.HttpUninit
push dword [edi]
mov dword [edi + 4], eax
call esi
push str.zlib_uncompress
push dword [edi]
mov dword [edi + 8], eax
call esi
push str.zlib_compress
push dword [edi]
mov dword [edi + 0x10], eax
call esi
push str.zlib_compressBound
push dword [edi]
mov dword [edi + 0x14], eax
call esi
mov dword [edi + 0x18], eax
mov eax, dword [edi + 4]
test eax, eax
je 0x446efe
call eax
mov dword [edi + 0xc], eax
mov byte [ebp - 0x645], 0
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 0xc
push eax
call fcn.0046ac54
lea eax, [ebp - 0x654]
mov dword [ebp - 0x65c], eax
lea eax, [ebp - 0x645]
mov dword [ebp - 0x658], eax
lea eax, [ebp - 0x65c]
push eax
push 0x4312c0
push 0x57a0b4
call fcn.0046b656
add esp, 0x10
test eax, eax
je 0x4472c3
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 0xd
push eax
call fcn.0046ac8e
mov ecx, dword [0x57a0b0]
add esp, 4
mov dword [ebp - 4], 0xffffffff
call fcn.00448260
call fcn.00442e40
sub esp, 0x28
mov byte [ebp - 0x645], 0
mov eax, esp
mov dword [eax + 0x24], 0
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 0x10
push eax
call fcn.0046ac54
lea eax, [ebp - 0x654]
mov dword [ebp - 0x65c], eax
lea eax, [ebp - 0x645]
mov dword [ebp - 0x658], eax
lea eax, [ebp - 0x65c]
push eax
push 0x416460
push 0x579ea0
call fcn.0046b656
add esp, 0x10
test eax, eax
je 0x447299
lea eax, [ebp - 0x654]
mov dword [ebp - 4], 0x11
push eax
call fcn.0046ac8e
mov ecx, dword [0x579e9c]
add esp, 4
mov dword [ebp - 4], 0xffffffff
push 0
push 0
push str.uninstall_1
call fcn.00412080
call fcn.0044a5c0
mov edi, eax
push edi
mov ecx, dword [edi]
call dword [ecx]
mov esi, eax
test esi, esi
je 0x4470d1
push esi
push str.pre_init_check_failed__ret___d
call fcn.00455860
lea eax, [ebp - 0x650]
push esi
push eax
call fcn.00442bf0
add esp, 0x10
push 0
push dword [eax]
push 0
call fcn.00436a70
mov edx, dword [ebp - 0x650]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x447067
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.00422de0
mov ecx, eax
test ecx, ecx
je 0x4474db
mov eax, dword [ecx]
call dword [eax + 0xc]
push esi
add eax, 0x10
push str.720260B5_154E_483f_A485_0B46C3D6C50D
mov dword [ebp - 0x64c], eax
lea eax, [ebp - 0x64c]
push str._sPreInitCheck:_d
push eax
call fcn.00413080
mov esi, dword [ebp - 0x64c]
sub esp, 0x18
mov eax, esp
push 0
push esi
push str.unist_init_fail
mov dword [eax + 0x24], 0
call fcn.00416d40
mov ecx, eax
call fcn.00412080
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x44731d
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x2c], 0x690062
push ecx
push str.SETUPCONFIG
xor eax, eax
mov dword [ebp - 0x28], 0x68007a
push 0xd1
push dword [ebp - 0x668]
mov dword [ebp - 0x24], 0x2e0069
mov dword [ebp - 0x20], 0x64006c
mov dword [ebp - 0x1c], 0x700073
mov dword [ebp - 0x18], 0x6a0072
mov word [ebp - 0x14], ax
mov eax, dword [edi]
push edi
call dword [eax + 4]
test eax, eax
jne 0x44719a
push str.init_config_failed__exit
call fcn.00455860
add esp, 4
call fcn.00444780
call fcn.00422de0
mov ecx, eax
test ecx, ecx
je 0x4474e5
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
push str.720260B5_154E_483f_A485_0B46C3D6C50D
mov dword [ebp - 0x64c], eax
lea eax, [ebp - 0x64c]
push str._sInitConfigFaile
push eax
call fcn.00413080
mov esi, dword [ebp - 0x64c]
sub esp, 0x1c
mov eax, esp
push 0
push esi
push str.unist_init_fail
mov dword [eax + 0x24], 0
call fcn.00416d40
mov ecx, eax
call fcn.00412080
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x44731d
push dword [ebp + 0x14]
push dword [ebp - 0x660]
call fcn.00445a60
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
add esp, 8
mov byte [ebp - 0x645], 0
lea eax, [ebp - 0x66c]
mov dword [ebp - 4], 0x14
push eax
call fcn.0046ac54
lea eax, [ebp - 0x66c]
mov dword [ebp - 0x65c], eax
lea eax, [ebp - 0x645]
mov dword [ebp - 0x658], eax
lea eax, [ebp - 0x65c]
push eax
push 0x4312c0
push 0x57a0b4
call fcn.0046b656
add esp, 0x10
test eax, eax
je 0x44726f
lea eax, [ebp - 0x66c]
mov dword [ebp - 4], 0x15
push eax
call fcn.0046ac8e
mov ecx, dword [0x57a0b0]
add esp, 4
mov dword [ebp - 4], 0xffffffff
call fcn.00448cc0
push 0x208
lea eax, [ebp - 0x644]
push 0
push eax
call fcn.004ca680
add esp, 0xc
lea eax, [ebp - 0x644]
push 0x104
push eax
push 0
call edi
lea eax, [ebp - 0x644]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0x644]
push eax
call fcn.00450000
add esp, 4
jmp 0x447332
lea eax, [ebp - 0x66c]
mov dword [ebp - 4], 0x16
push eax
call fcn.0046acd0
add esp, 4
mov dword [ebp - 4], 0xffffffff
test al, al
je 0x447505
jmp 0x4474ef
mov dword [ebp - 4], 0x12
lea eax, [ebp - 0x654]
push eax
call fcn.0046acd0
add esp, 4
mov dword [ebp - 4], 0xffffffff
test al, al
jne 0x44750a
jmp 0x447505
mov dword [ebp - 4], 0xe
jmp 0x4472a0
mov dword [ebp - 4], 0xa
jmp 0x4472a0
mov dword [ebp - 4], 6
jmp 0x4472a0
call fcn.00422de0
mov ecx, eax
test ecx, ecx
je 0x447520
mov eax, dword [ecx]
call dword [eax + 0xc]
push 0x16
add eax, 0x10
lea ecx, [ebp - 0x64c]
push 0x53cc34
mov dword [ebp - 0x64c], eax
call fcn.00412590
mov esi, dword [ebp - 0x64c]
push 0
push esi
push 0
call fcn.00436a70
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x447332
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, 0x57a1a0
call fcn.0040c000
mov eax, dword [0x57a1cc]
test al, 1
jne 0x447364
or eax, 1
mov ecx, 0x57a1c8
mov dword [0x57a1cc], eax
call fcn.004413b0
push 0x534dd0
call fcn.004a7680
add esp, 4
mov ecx, 0x57a1c8
call fcn.00441a10
call fcn.00422c60
mov ecx, eax
call fcn.004a4e70
mov edi, dword [0x57a0dc]
add edi, 0x10
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [0x57a19c]
test esi, esi
je 0x4473dc
cmp dword [esi + 4], 0
jle 0x4473aa
mov eax, dword [esi]
push dword [eax]
call dword [sym.imp.USER32.dll_DestroyWindow]
mov esi, dword [0x57a19c]
test esi, esi
je 0x4473dc
mov eax, dword [esi]
test eax, eax
je 0x4473c3
push eax
call fcn.004f54a8
add esp, 4
mov dword [esi], 0
push 0xc
push esi
mov dword [esi + 4], 0
mov dword [esi + 8], 0
call fcn.004a7285
add esp, 8
push edi
mov dword [0x57a19c], 0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [0x57a198]
test esi, esi
je 0x447435
mov eax, dword [esi]
test eax, eax
je 0x44740c
push eax
call fcn.004f54a8
add esp, 4
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x447423
push eax
call fcn.004f54a8
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
mov dword [esi + 8], 0
call fcn.004a7285
add esp, 8
mov esi, dword [0x57a190]
test esi, esi
je 0x447467
cmp dword [esi], 0
je 0x447467
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x447451
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov eax, dword [esi + 0x20]
push 0
mov dword [esi + 0x10], 0
call eax
add esi, 0x24
cmp dword [esi], 0
jne 0x447444
mov esi, dword [0x575134]
mov ecx, dword [0x575138]
cmp esi, ecx
jae 0x447491
mov eax, dword [esi]
test eax, eax
je 0x44748a
mov eax, dword [eax + 0x1c]
push 0
call eax
mov ecx, dword [0x575138]
add esi, 4
cmp esi, ecx
jb 0x447477
mov ecx, 0x57a164
call fcn.00445f00
call dword [sym.imp.ole32.dll_CoUninitialize]
lea ecx, [ebp - 0x670]
call fcn.0040b2d0
jmp 0x446a06
mov dword [ebp - 4], 2
jmp 0x4472a0
push 0x80004005
call fcn.00409d40
push 0x80004005
call fcn.00409d40
push 0x80004005
call fcn.00409d40
push 0x80004005
call fcn.00409d40
push 0x80004005
call fcn.00409d40
sub esp, 8
lea eax, [ebp - 0x66c]
mov ecx, esp
push eax
call fcn.004112b0
call fcn.00412b40
call fcn.0046b727
sub esp, 8
lea eax, [ebp - 0x654]
mov ecx, esp
push eax
call fcn.004112b0
call fcn.00412b40
push 0x80004005
call fcn.00409d40
int3