Function at 0x409b3d
Capabilities:
Print debug messages
Set current directory

Disassembly:
mov eax, 0x41bdbe
call fcn.00418d60
sub esp, 0x7c
mov eax, dword [0x428480]
push ebx
push esi
mov esi, dword [sym.imp.MSVCR71.dll__wcsicmp]
push edi
mov edi, dword [ebp + 0x10]
xor eax, ebp
push str._StartTP
push edi
mov dword [ebp - 0x10], eax
xor bl, bl
call esi
test eax, eax
pop ecx
pop ecx
je 0x409b90
push str._debug
push edi
call dword [sym.imp.MSVCR71.dll_wcscmp]
test eax, eax
pop ecx
pop ecx
je 0x409b90
push 0x41f22c
push edi
call esi
test eax, eax
pop ecx
pop ecx
jne 0x409b92
mov bl, 1
lea ecx, [ebp - 0x80]
call fcn.0040933b
and dword [ebp - 4], 0
lea eax, [ebp - 0x80]
push eax
call fcn.0040982e
test bl, bl
pop ecx
je 0x409bb6
lea eax, [ebp - 0x80]
push eax
call fcn.004093c6
pop ecx
lea eax, [ebp - 0x80]
push eax
call fcn.0040959e
lea eax, [ebp - 0x2c]
push eax
call fcn.0040cc15
pop ecx
pop ecx
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov ebx, dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 0
call ebx
or eax, 1
push eax
call ebx
push str._RegServer
push edi
call esi
test eax, eax
pop ecx
pop ecx
jne 0x409c18
call fcn.0040997e
mov ecx, dword [0x4285ec]
call fcn.00408e90
mov esi, eax
call fcn.004099fd
jmp 0x409d38
push str._RegServerEx
push edi
call esi
test eax, eax
pop ecx
pop ecx
jne 0x409c39
call fcn.0040997e
mov eax, dword [0x4285ec]
mov byte [eax + 0xf0], 0
jmp 0x409c01
push str._UnRegServer
push edi
call esi
test eax, eax
pop ecx
pop ecx
jne 0x409c59
call fcn.0040997e
mov ecx, dword [0x4285ec]
call fcn.00408af9
jmp 0x409c0c
mov ebx, str._CopyTo
push ebx
call dword [sym.imp.MSVCR71.dll_wcslen]
push eax
push ebx
push edi
call dword [sym.imp.MSVCR71.dll__wcsnicmp]
add esp, 0x10
test eax, eax
jne 0x409c9f
call fcn.00409a5f
mov esi, dword [0x4285f4]
push ebx
call dword [sym.imp.MSVCR71.dll_wcslen]
pop ecx
lea eax, [edi + eax*2]
push eax
mov ecx, esi
call fcn.00403453
mov esi, eax
call fcn.00409adb
jmp 0x409d38
lea ecx, [ebp - 0x84]
call fcn.00403014
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x88]
call fcn.0040209b
mov byte [ebp - 4], 3
push str._StartTP
push edi
call esi
test eax, eax
pop ecx
pop ecx
je 0x409cfc
push str._debug
push edi
call dword [sym.imp.MSVCR71.dll_wcscmp]
test eax, eax
pop ecx
pop ecx
je 0x409cf0
push 0x41f22c
push edi
call esi
test eax, eax
pop ecx
pop ecx
je 0x409cf0
or esi, 0xffffffff
jmp 0x409d1a
call fcn.00409724
mov ecx, eax
call fcn.00409de0
xor esi, esi
call fcn.00409724
mov ecx, eax
call fcn.0040c0f3
push str.Calling_into_UnInitReplaceProgram_...
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
call fcn.004186e0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x88]
call fcn.00401f4e
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x84]
call fcn.00403091
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x80]
call fcn.0040937f
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.00418e11
leave
ret 0x10