Function at 0x447600
Capabilities:
Check mutex on windows
Copy file
Create process on windows
Get common file path
Print debug messages
Read .ini file

Disassembly:
sub esp, 0x608
mov eax, dword [0x4ac13c]
xor eax, esp
mov dword [esp + 0x604], eax
mov eax, dword [esp + 0x614]
push ebx
push ebp
push esi
push edi
mov edi, 8
xor ebx, ebx
push edi
mov ebp, 7
push str.QQMINIDL
lea ecx, [esp + 0x178]
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x190], ebp
mov dword [esp + 0x18c], ebx
mov word [esp + 0x17c], bx
call fcn.00402470
call fcn.00448f70
test al, al
je 0x447677
push 6
push str._ADMIN
lea ecx, [esp + 0x178]
call fcn.00411cd0
push ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
cmp dword [esp + 0x188], edi
mov eax, dword [esp + 0x174]
jae 0x447695
lea eax, [esp + 0x174]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4476b7
mov dword [esp + 0x18], 1
mov ecx, dword [esp + 0x61c]
push 0xffffffffffffffff
mov dword [0x4ae99c], ecx
call sub.IMM32.dll_ImmDisableIME
call fcn.00436620
push str.pubconfig.ini
lea edx, [esp + 0x13c]
push ebx
push edx
call fcn.00449fb0
add esp, 8
push eax
lea eax, [esp + 0x1e8]
push eax
call fcn.00412230
add esp, 0xc
cmp dword [esp + 0x150], edi
jb 0x447710
mov ecx, dword [esp + 0x13c]
push ecx
call fcn.00451fd9
add esp, 4
cmp dword [esp + 0x1f8], edi
mov eax, dword [esp + 0x1e4]
jae 0x447727
lea eax, [esp + 0x1e4]
push eax
push ebx
push str.CurrentUin
push str.Info
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
cmp eax, 0x2710
jbe 0x447749
push eax
call fcn.0045afef
add esp, 4
push 0x206
lea edx, [esp + 0x20a]
push ebx
push edx
mov dword [esp + 0x1e8], ebp
mov dword [esp + 0x1e4], ebx
mov word [esp + 0x1d4], bx
mov dword [esp + 0x178], ebp
mov dword [esp + 0x174], ebx
mov word [esp + 0x164], bx
mov word [esp + 0x210], bx
call fcn.0045c2f0
add esp, 0xc
push 0x104
lea eax, [esp + 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea eax, [esp + 0x204]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4477b0
sub eax, edx
sar eax, 1
push eax
lea ecx, [esp + 0x208]
push ecx
lea ecx, [esp + 0x15c]
call fcn.00402470
mov eax, dword [esp + 0x168]
lea esi, [eax - 1]
cmp esi, eax
jbe 0x4477e7
call fcn.0045c852
cmp dword [esp + 0x16c], edi
mov eax, dword [esp + 0x158]
jae 0x4477fe
lea eax, [esp + 0x158]
cmp word [eax + esi*2], 0x5c
je 0x44785e
push 1
push 0x494618
lea ecx, [esp + 0x124]
mov dword [esp + 0x13c], ebp
mov dword [esp + 0x138], ebx
mov word [esp + 0x128], bx
call fcn.00402470
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x124]
push edx
lea ecx, [esp + 0x160]
call fcn.00411bc0
cmp dword [esp + 0x134], edi
jb 0x44785e
mov eax, dword [esp + 0x120]
push eax
call fcn.00451fd9
add esp, 4
push str.Kernel32.dll
lea ecx, [esp + 0x158]
push ecx
lea edx, [esp + 0x140]
push edx
call fcn.00412230
add esp, 0xc
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x1d0]
call fcn.0040218f
cmp dword [esp + 0x150], edi
jb 0x4478a4
mov eax, dword [esp + 0x13c]
push eax
call fcn.00451fd9
add esp, 4
mov ecx, dword [0x4947bc]
mov dx, word [0x4947c0]
lea eax, [esp + 0x1fc]
mov dword [esp + 0x1fc], ecx
mov ecx, dword [esp + 0x10]
push eax
push ecx
xor ebp, ebp
mov word [esp + 0x208], dx
call fcn.00436160
mov esi, eax
add esp, 8
cmp esi, ebx
je 0x447b9f
push str.RegServer
push esi
call fcn.004361b0
add esp, 8
test eax, eax
jne 0x4478fb
lea ebp, [eax + 1]
jmp 0x447b9f
push str.UnregServer
push esi
call fcn.004361b0
add esp, 8
test eax, eax
jne 0x447915
lea ebp, [eax + 2]
jmp 0x447b9f
push str.Embedding
push esi
call fcn.004361b0
add esp, 8
test eax, eax
jne 0x44792f
lea ebp, [eax + 3]
jmp 0x447b9f
push str.Uninstall
push esi
call fcn.004361b0
add esp, 8
test eax, eax
jne 0x447949
lea ebp, [eax + 5]
jmp 0x447b9f
push str.PrepareUninstall
push esi
call fcn.004361b0
add esp, 8
test eax, eax
jne 0x447963
lea ebp, [eax + 6]
jmp 0x447b9f
push str.Install
push esi
call fcn.004361b0
add esp, 8
test eax, eax
jne 0x447b9f
push esi
lea ecx, [esp + 0x120]
lea ebp, [eax + 4]
call fcn.0040427f
push 0x49a2a8
lea ecx, [esp + 0xe8]
call fcn.0040427f
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x120]
call fcn.00411b50
mov esi, eax
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x120]
call fcn.00411b90
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0x120]
mov edi, eax
call fcn.00411b50
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push fcn.0045dc2f
push edx
mov edx, dword [edi + 4]
push ecx
mov ecx, dword [edi]
push edx
mov edx, dword [eax + 4]
mov eax, dword [eax]
push ecx
push edx
push eax
lea ecx, [esp + 0x88]
push ecx
call fcn.004391b0
add esp, 0x20
push ebx
push 0x4950b8
lea ecx, [esp + 0x124]
call fcn.00438140
cmp eax, 0xffffffff
je 0x447abc
mov edx, dword [esp + 0x130]
push edx
push ebx
push 0x4950b8
lea ecx, [esp + 0x128]
call fcn.00438140
push eax
lea eax, [esp + 0x140]
push eax
lea ecx, [esp + 0x128]
call fcn.004398c0
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0xf0]
call fcn.0040218f
lea ecx, [esp + 0x138]
call fcn.00402055
push ebx
push 0x49a7a4
lea ecx, [esp + 0xec]
call fcn.00438170
cmp eax, 0xffffffff
je 0x447abc
push ebx
push 0x49a7a4
lea ecx, [esp + 0xec]
call fcn.00438170
push eax
push ebx
lea ecx, [esp + 0x140]
push ecx
lea ecx, [esp + 0xf0]
call fcn.004398c0
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0xf0]
call fcn.0040218f
lea ecx, [esp + 0x138]
call fcn.00402055
cmp dword [esp + 0xf8], ebx
je 0x447b87
push 0x49a2a6
lea ecx, [esp + 0x104]
call fcn.004040b7
lea edx, [esp + 0x100]
push edx
lea eax, [esp + 0xe8]
push eax
call fcn.0044b9c0
add esp, 8
push 3
push ebx
lea ecx, [esp + 0x108]
call fcn.00402332
push ebx
push 0x494070
lea ecx, [esp + 0x108]
call fcn.00437f20
cmp eax, 0xffffffff
je 0x447b46
jmp 0x447b20
push 1
push eax
lea ecx, [esp + 0x108]
call fcn.00402332
push ebx
push 0x494070
lea ecx, [esp + 0x108]
call fcn.00437f20
cmp eax, 0xffffffff
jne 0x447b20
lea ecx, [esp + 0x100]
push ecx
call fcn.00449170
add esp, 4
test al, al
je 0x447b7b
cmp dword [esp + 0x118], 0x10
mov eax, dword [esp + 0x104]
jae 0x447b72
lea eax, [esp + 0x104]
push eax
call fcn.0045c94e
add esp, 4
lea ecx, [esp + 0x100]
call fcn.00401fba
lea ecx, [esp + 0xe4]
call fcn.00402055
lea ecx, [esp + 0x11c]
call fcn.00402055
xor edi, edi
lea eax, [ebp - 1]
cmp eax, 5
mov dword [esp + 0x10], edi
ja case.default.0x447bb1
jmp dword [eax*4 + 0x448318]
mov esi, 1
cmp ebp, esi
jne 0x447bcd
call fcn.0043aa70
mov esi, eax
call fcn.00444ea0
mov edx, dword [esp + 0x628]
push edx
mov ecx, 0x4ae9d0
call fcn.0043b380
mov edi, eax
lea eax, [esp + 0x11c]
push ebx
push eax
call fcn.0044a2c0
lea ecx, [esp + 0x194]
push ebx
push ecx
call fcn.0044a370
push str.DownloadProxyPS.dll
lea edx, [esp + 0x1a0]
push edx
lea eax, [esp + 0x150]
push eax
call fcn.00412230
push 0x494490
lea ecx, [esp + 0x1ac]
push ecx
lea edx, [esp + 0x1cc]
push edx
call fcn.00412230
push 0x494a28
lea eax, [esp + 0x1b8]
push eax
lea ecx, [esp + 0x130]
push ecx
call fcn.00412230
add esp, 0x34
cmp dword [esp + 0x130], ebx
je 0x447e68
cmp ebp, 1
jne 0x447da9
cmp dword [esp + 0x134], 8
mov eax, dword [esp + 0x120]
jae 0x447c7c
lea eax, [esp + 0x120]
mov edx, dword [0x4ab254]
push edx
push eax
call fcn.00448c60
mov eax, dword [esp + 0x1b4]
mov ebp, 8
add esp, 8
cmp dword [esp + 0x1c0], ebp
jae 0x447ca8
lea eax, [esp + 0x1ac]
mov ecx, dword [0x4ab254]
push ecx
push eax
call fcn.00448c60
mov eax, dword [esp + 0x10c]
add esp, 8
cmp dword [esp + 0x118], ebp
jae 0x447ccf
lea eax, [esp + 0x104]
mov edx, dword [0x4ab254]
push edx
push eax
call fcn.00448c60
add esp, 8
cmp esi, ebx
je 0x447d9f
push 0x4947d0
lea eax, [esp + 0x13c]
push eax
lea ecx, [esp + 0x7c]
push str._s__
push ecx
call fcn.00439d70
add esp, 0xc
push eax
lea edx, [esp + 0xec]
push edx
call fcn.00412230
add esp, 0xc
lea ecx, [esp + 0x74]
call fcn.00402055
push 0x3c
lea eax, [esp + 0x34]
push ebx
push eax
call fcn.0045c2f0
add esp, 0xc
cmp dword [esp + 0xfc], ebp
mov dword [esp + 0x30], 0x3c
mov dword [esp + 0x34], 0x40
mov dword [esp + 0x40], str.regsvr32.exe
mov dword [esp + 0x4c], ebx
jb 0x447d62
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x44], ecx
jmp 0x447d6d
lea edx, [esp + 0xe8]
mov dword [esp + 0x44], edx
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
mov ecx, dword [esp + 0x68]
push 0x493e0
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [esp + 0x68]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0xe4]
call fcn.00402055
call fcn.00444ea0
jmp 0x447e68
push 0x4947d0
lea eax, [esp + 0x13c]
push eax
lea ecx, [esp + 0xd0]
push str._u__s__
push ecx
call fcn.00439d70
add esp, 0xc
push eax
lea edx, [esp + 0xec]
push edx
call fcn.00412230
add esp, 0xc
lea ecx, [esp + 0xc8]
call fcn.00402055
push 0x3c
lea eax, [esp + 0x34]
push ebx
push eax
call fcn.0045c2f0
add esp, 0xc
cmp dword [esp + 0xfc], 8
mov dword [esp + 0x30], 0x3c
mov dword [esp + 0x34], 0x40
mov dword [esp + 0x40], str.regsvr32.exe
mov dword [esp + 0x4c], ebx
jb 0x447e2b
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x44], ecx
jmp 0x447e36
lea edx, [esp + 0xe8]
mov dword [esp + 0x44], edx
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
mov ecx, dword [esp + 0x68]
push 0x493e0
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [esp + 0x68]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0xe4]
call fcn.00402055
lea ecx, [esp + 0x100]
call fcn.00402055
lea ecx, [esp + 0x1a8]
call fcn.00402055
lea ecx, [esp + 0x138]
call fcn.00402055
lea ecx, [esp + 0x18c]
call fcn.00402055
lea ecx, [esp + 0x11c]
call fcn.00402055
jmp case.default.0x447bb1
lea eax, [esp + 0x100]
push ebx
push eax
call fcn.0044a2c0
mov ebp, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
add esp, 8
push str.____strSrcExeFilePath:_n
call ebp
mov eax, dword [esp + 0x104]
mov esi, 8
cmp dword [esp + 0x118], esi
jae 0x447ee3
lea eax, [esp + 0x104]
push eax
call ebp
cmp dword [esp + 0x114], ebx
jne 0x447f00
lea ecx, [esp + 0x100]
call fcn.00402055
jmp case.default.0x447bb1
cmp dword [esp + 0x118], esi
mov eax, dword [esp + 0x104]
jae 0x447f17
lea eax, [esp + 0x104]
push 0x104
push eax
lea ecx, [esp + 0x414]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
lea edx, [esp + 0x40c]
push edx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [esp + 0x40c]
push eax
lea ecx, [esp + 0x120]
call fcn.0040427f
push 0x494490
lea ecx, [esp + 0x120]
call fcn.00412170
push 0x494490
lea ecx, [esp + 0xb0]
push ebx
push ecx
call fcn.00449fb0
add esp, 8
push eax
lea edx, [esp + 0x1b0]
push edx
call fcn.00412230
add esp, 0xc
lea ecx, [esp + 0xac]
call fcn.00402055
push 0x4949b0
lea eax, [esp + 0x94]
push ebx
push eax
call fcn.00449fb0
add esp, 8
push eax
lea ecx, [esp + 0xec]
push ecx
call fcn.00412230
add esp, 0xc
lea ecx, [esp + 0x90]
call fcn.00402055
push str.____strDstExeFilePath:_n
call ebp
cmp dword [esp + 0xfc], esi
mov eax, dword [esp + 0xe8]
jae 0x447fe2
lea eax, [esp + 0xe8]
push eax
call ebp
cmp dword [esp + 0x1c0], esi
mov ecx, dword [esp + 0x1ac]
jae 0x447ffc
lea ecx, [esp + 0x1ac]
cmp dword [esp + 0x134], esi
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileW]
jb 0x448028
mov eax, dword [esp + 0x120]
cmp eax, ebx
je 0x448031
cmp ecx, ebx
je 0x448031
push 0
push ecx
push eax
call esi
cmp eax, 1
sete bl
jmp 0x448033
lea eax, [esp + 0x120]
jmp 0x448016
xor bl, bl
mov ecx, dword [esp + 0xe8]
mov edi, 8
cmp dword [esp + 0xfc], edi
jae 0x44804f
lea ecx, [esp + 0xe8]
cmp dword [esp + 0x118], edi
jb 0x4480f3
mov eax, dword [esp + 0x104]
test eax, eax
je 0x4480ff
test ecx, ecx
je 0x4480ff
push 0
push ecx
push eax
call esi
cmp eax, 1
sete al
test al, al
je 0x4480ff
test bl, bl
je 0x4480ff
push str.._Uninstall
lea ecx, [esp + 0x190]
call fcn.0040427f
cmp dword [esp + 0x1a4], edi
mov ecx, dword [esp + 0x190]
jae 0x4480af
lea ecx, [esp + 0x190]
cmp dword [esp + 0xfc], edi
mov eax, dword [esp + 0xe8]
jae 0x4480c6
lea eax, [esp + 0xe8]
push 0
push 0
push ecx
push eax
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
cmp eax, 0x20
jge 0x4480e5
push str.____._Uninstall_failed:_n
call ebp
lea ecx, [esp + 0x18c]
call fcn.00402055
jmp 0x44810c
lea eax, [esp + 0x104]
jmp 0x44806b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push str.____und::filesystem::CopyFilel_failed:_n
call ebp
lea ecx, [esp + 0xe4]
call fcn.00402055
lea ecx, [esp + 0x1a8]
call fcn.00402055
lea ecx, [esp + 0x11c]
call fcn.00402055
lea ecx, [esp + 0x100]
call fcn.00402055
mov edi, dword [esp + 0x10]
xor ebx, ebx
jmp case.default.0x447bb1
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push str.Uninstall_start___n
call edi
mov edx, dword [str.QQMINIDL_UNINSTALL_MUTEX]
push edx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
call fcn.00449020
push ebx
call fcn.00446d70
add esp, 4
push str.Uninstall_Finish___n
call edi
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [esp + 0x10]
jmp case.default.0x447bb1
call fcn.00445660
test eax, eax
jne 0x4481aa
push str.xxx_QQMiniDL_verify_sig_error_
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
jmp case.default.0x447bb1
cmp dword [esp + 0x18], ebx
jne case.default.0x447bb1
lea eax, [esp + 0x138]
push ebx
push eax
call fcn.0044a370
lea ecx, [esp + 0x140]
push ebx
push ecx
call fcn.004443b0
lea edx, [esp + 0x38]
push edx
call fcn.00435a40
mov ecx, dword [eax]
add esp, 0x14
call fcn.00435b60
lea ecx, [esp + 0x28]
call fcn.00438830
mov eax, dword [esp + 0x628]
push eax
mov ecx, 0x4ae9d0
call fcn.0043b380
lea ecx, [esp + 0x20]
push ecx
mov edi, eax
call fcn.00435a40
mov ecx, dword [eax]
add esp, 4
call fcn.004314c0
lea ecx, [esp + 0x20]
call fcn.00438830
call fcn.0042ed60
lea ecx, [esp + 0x138]
call fcn.00402055
jmp case.default.0x447bb1
push ebx
call fcn.004459c0
add esp, 4
mov eax, dword [esp + 0x1c]
cmp eax, ebx
je 0x448249
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x16c], 8
jb 0x448263
mov edx, dword [esp + 0x158]
push edx
call fcn.00451fd9
add esp, 4
mov ebp, 8
cmp dword [esp + 0x1dc], ebp
mov esi, 7
mov dword [esp + 0x16c], esi
mov dword [esp + 0x168], ebx
mov word [esp + 0x158], bx
jb 0x44829c
mov eax, dword [esp + 0x1c8]
push eax
call fcn.00451fd9
add esp, 4
cmp dword [esp + 0x1f8], ebp
mov dword [esp + 0x1dc], esi
mov dword [esp + 0x1d8], ebx
mov word [esp + 0x1c8], bx
jb 0x4482cb
mov ecx, dword [esp + 0x1e4]
push ecx
call fcn.00451fd9
add esp, 4
cmp dword [esp + 0x188], ebp
mov dword [esp + 0x1f8], esi
mov dword [esp + 0x1f4], ebx
mov word [esp + 0x1e4], bx
jb 0x4482fa
mov edx, dword [esp + 0x174]
push edx
call fcn.00451fd9
add esp, 4
mov ecx, dword [esp + 0x614]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0045b7a6
add esp, 0x608
ret 0x10