Function at 0x402670
Capabilities:
Get common file path
Set current directory

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x40edd0
push eax
mov dword fs:[0], esp
sub esp, 0x434
push ebx
push esi
push edi
mov esi, ecx
call fcn.004059c0
mov edx, dword [eax]
push 0x402ba0
mov ecx, eax
call dword [edx]
lea eax, [esp + 0x40]
push eax
push 0x400
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
call fcn.004059c0
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x48]
test eax, eax
jne 0x4026d0
mov ecx, dword [0x416870]
call fcn.004051c0
jmp 0x402b82
call fcn.004059c0
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x18]
mov edi, dword [0x416864]
xor ebx, ebx
cmp edi, ebx
jne 0x4026ee
mov edi, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
call fcn.004059c0
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x4c]
test eax, eax
jne 0x40270f
mov ecx, dword [0x416870]
call fcn.004051c0
jmp 0x402b82
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
call fcn.004059c0
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x54]
call fcn.004059c0
mov edx, dword [eax]
push ebx
mov ecx, eax
call dword [edx]
mov al, byte [0x416860]
push ebx
lea ecx, [esp + 0x34]
mov byte [esp + 0x34], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [ecx]
lea ecx, [esp + 0x30]
push edx
push ebx
push 0x416860
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov edi, str.Uninst.exe
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x448], ebx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Uninst.exe
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const___unsigned_int_]
mov al, byte [0x416860]
push ebx
lea ecx, [esp + 0x20]
mov byte [esp + 0x20], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [ecx]
lea ecx, [esp + 0x1c]
push edx
push ebx
push 0x416860
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov edi, str.Skin_favction.ico
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0x448], 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Skin_favction.ico
lea ecx, [esp + 0x24]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const___unsigned_int_]
mov eax, dword [esp + 0x20]
cmp eax, ebx
jne 0x4027e6
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push eax
push 0x4161e4
push 0x4161d4
push str.http:__gouwu.dianxin.com
push 0x19
mov ecx, esi
call fcn.00401f80
mov eax, dword [esi + 0x80]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push ebx
push ebx
push 0x18b
push eax
call edi
mov ecx, dword [esi + 0x80]
push 0x4161a0
push eax
push 0x181
push ecx
call edi
mov edx, dword [esi + 0x80]
push ebx
push 3
push 0x115
push edx
call edi
mov eax, dword [esp + 0x20]
cmp eax, ebx
jne 0x402847
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push eax
push 0x41618c
push str.http:__gouwu.dianxin.com
push 0x4161d4
push 0xb
mov ecx, esi
call fcn.004022a0
mov eax, dword [esp + 0x34]
cmp eax, ebx
jne 0x40286d
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push ebp
push ebx
push 0x41618c
push eax
push 0x416178
push 0xb
mov ecx, esi
call fcn.004022a0
mov eax, dword [esi + 0x80]
push ebx
push ebx
push 0x18b
push eax
call edi
mov ecx, dword [esi + 0x80]
push 0x41615c
push eax
push 0x181
push ecx
call edi
mov edx, dword [esi + 0x80]
push ebx
push 3
push 0x115
push edx
call edi
push 0x10
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x30], eax
cmp eax, ebx
mov byte [esp + 0x44c], 2
je 0x4028e2
push 0x80000002
mov ecx, eax
call fcn.00403080
mov ebp, eax
jmp 0x4028e4
xor ebp, ebp
mov eax, dword [0x416864]
mov byte [esp + 0x44c], 1
cmp eax, ebx
jne 0x4028fa
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push 0x416144
push str.http:__gouwu.dianxin.com
push 0x416140
push 0x41612c
push str.Uninst.exe
push str.DianXinPlugin.dll
push eax
push 0x416078
mov ecx, ebp
call fcn.004031a0
mov ecx, ebp
call fcn.00403130
cmp ebp, ebx
je 0x402939
mov eax, dword [ebp]
push 1
mov ecx, ebp
call dword [eax]
mov ecx, dword [esi + 0x20]
push ebx
push ebx
push 0x52c
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
mov edx, dword [esi + 0x80]
push ebx
push ebx
push 0x18b
push edx
call edi
push 0x416100
push eax
mov eax, dword [esi + 0x80]
push 0x181
push eax
call edi
mov ecx, dword [esi + 0x80]
push ebx
push 3
push 0x115
push ecx
call edi
push 0x10
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x30], eax
cmp eax, ebx
mov byte [esp + 0x44c], 3
je 0x4029a7
push 0x80000001
mov ecx, eax
call fcn.00403080
mov ebx, eax
push str.SoftwareDianXin
mov ecx, ebx
mov byte [esp + 0x450], 1
call fcn.004030d0
mov dl, byte [0x416860]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
xor ebp, ebp
mov byte [esp + 0x10], dl
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov ecx, dword [eax]
push ecx
push ebp
push 0x416860
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov edi, str.DianXinAssist.dll
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
repne scasb al, byte es:[edi]
mov eax, dword [edx]
mov edx, dword [esp + 0x18]
not ecx
dec ecx
sub eax, edx
mov esi, ecx
mov byte [esp + 0x44c], 4
cmp eax, esi
ja 0x402a1c
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
cmp esi, ebp
jbe 0x402a66
mov ecx, dword [esp + 0x18]
push 0
lea ebp, [ecx + esi]
lea ecx, [esp + 0x14]
push ebp
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x402a64
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, esi
mov esi, str.DianXinAssist.dll
lea edi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], ebp
mov byte [eax + ebp], 0
xor ebp, ebp
mov eax, dword [esp + 0x14]
cmp eax, ebp
jne 0x402a73
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push eax
push str.AppFilePath
mov ecx, ebx
call fcn.00403150
mov eax, dword [0x416864]
cmp eax, ebp
jne 0x402a8e
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push eax
push str.InstallPath
mov ecx, ebx
call fcn.00403150
mov ecx, ebx
call fcn.00403130
cmp ebx, ebp
je 0x402aae
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
mov ecx, dword [0x416870]
call fcn.004051c0
mov ecx, dword [0x416870]
call fcn.00405240
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0xbb8
call esi
push str.HIDE
push 0x416820
call dword [sym.imp.MSVCP60.dll_bool___cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__]
add esp, 8
test al, al
je 0x402afd
push 0x3e8
call esi
mov ecx, dword [0x416870]
mov eax, dword [ecx]
call dword [eax + 0xcc]
mov ecx, dword [esp + 0x14]
cmp ecx, ebp
je 0x402b21
mov al, byte [ecx - 1]
test al, al
je 0x402b17
cmp al, 0xff
je 0x402b17
dec al
mov byte [ecx - 1], al
jmp 0x402b21
dec ecx
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x14], ebp
cmp ecx, ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
je 0x402b51
mov al, byte [ecx - 1]
test al, al
je 0x402b47
cmp al, 0xff
je 0x402b47
dec al
mov byte [ecx - 1], al
jmp 0x402b51
dec ecx
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
cmp ecx, ebp
pop ebp
je 0x402b82
mov al, byte [ecx - 1]
test al, al
je 0x402b78
cmp al, 0xff
je 0x402b78
dec al
mov byte [ecx - 1], al
jmp 0x402b82
dec ecx
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x440]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x440
ret