Function at 0x40b267
Capabilities:
Check if file exists
Check mutex on windows
Check os version
Create thread
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x298
push ebx
xor ebx, ebx
push esi
push edi
mov esi, ecx
mov dword [ebp - 0x14], ebx
rdtsc
push 0x440d68
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
lea eax, [esi + 0x4bc]
push 0x440d48
push eax
call fcn.0042b1f0
pop ecx
lea edi, [esi + 0x116c]
pop ecx
push 0x14
push 0x40
mov dword [edi], 0xc
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
cmp eax, ebx
mov dword [esi + 0x1170], eax
je 0x40b2e1
push 1
push eax
call dword [sym.imp.ADVAPI32.dll_InitializeSecurityDescriptor]
test eax, eax
je 0x40b2e1
push ebx
push ebx
push 1
push dword [esi + 0x1170]
call dword [sym.imp.ADVAPI32.dll_SetSecurityDescriptorDacl]
test eax, eax
je 0x40b2e1
mov dword [esi + 0x1178], edi
mov edi, dword [sym.imp.KERNEL32.dll_CreateEventA]
push ebx
push ebx
push 1
push ebx
call edi
push ebx
push 1
push 1
push ebx
mov dword [esi + 0x428], eax
call edi
push ebx
push ebx
push ebx
mov dword [esi + 0x4b8], eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push ebx
push 1
push 1
push ebx
mov dword [esi + 0xac0], eax
call edi
push ebx
push ebx
push ebx
push ebx
mov dword [esi + 0xac4], eax
call edi
push ebx
push ebx
push ebx
push ebx
mov dword [esi + 0xe38], eax
call edi
push ebx
push ebx
push ebx
push ebx
mov dword [esi + 0x1060], eax
call edi
push ebx
push ebx
push 1
push ebx
mov dword [esi + 0x1064], eax
call edi
push str.GlobalWIL.P3OGL.Ready
push ebx
push 1
mov dword [esi + 0xe58], eax
push dword [esi + 0x1178]
call edi
push ebx
push ebx
push 1
push ebx
mov dword [esi + 0x11bc], eax
call edi
cmp dword [esi + 0x428], ebx
mov dword [esi + 0x430], eax
je 0x40bc00
cmp dword [esi + 0x4b8], ebx
je 0x40bc00
cmp dword [esi + 0xac0], ebx
je 0x40bc00
cmp dword [esi + 0xac4], ebx
je 0x40bc00
cmp dword [esi + 0xe38], ebx
je 0x40bc00
cmp dword [esi + 0x1060], ebx
je 0x40bc00
cmp dword [esi + 0x1064], ebx
je 0x40bc00
cmp dword [esi + 0xe58], ebx
je 0x40bc00
cmp dword [esi + 0x11bc], ebx
je 0x40bc00
cmp eax, ebx
je 0x40bc00
lea edi, [esi + 0xfb8]
push 0x94
push ebx
push edi
call fcn.0042b620
add esp, 0xc
mov dword [edi], 0x94
push edi
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
xor eax, eax
cmp dword [esi + 0xfc8], 2
sete al
mov word [esi + 0x104c], ax
mov eax, dword [esi + 0xfbc]
cmp eax, 5
jne 0x40b434
cmp dword [esi + 0xfc0], ebx
jne 0x40b434
push 1
pop ecx
jmp 0x40b436
xor ecx, ecx
cmp eax, 5
mov word [esi + 0x104e], cx
jne 0x40b44f
cmp dword [esi + 0xfc0], ebx
je 0x40b44f
push 1
pop ecx
jmp 0x40b451
xor ecx, ecx
cmp eax, 6
mov word [esi + 0x1050], cx
sbb ecx, ecx
inc ecx
cmp eax, 7
mov word [esi + 0x1052], cx
jae 0x40b47b
cmp eax, 6
jne 0x40b477
cmp dword [esi + 0xfc0], ebx
jne 0x40b47b
xor eax, eax
jmp 0x40b47e
push 1
pop eax
mov word [esi + 0x1054], ax
call fcn.00424cbe
push str.User32.DLL
mov word [esi + 0x1056], ax
mov word [esi + 0x438], 1
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [esi + 0x11c8], eax
jne 0x40b4b9
mov eax, str.Cant_load_User32.DLL
jmp 0x40bc0a
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.ShutdownBlockReasonCreate
push eax
call edi
push str.ShutdownBlockReasonDestroy
mov dword [esi + 0x11cc], eax
push dword [esi + 0x11c8]
call edi
push ebx
push ebx
mov dword [esi + 0x11d0], eax
push ebx
lea eax, [esi + 0xf3c]
push ebx
push ebx
push eax
mov ecx, esi
call fcn.00409d4a
test ax, ax
je 0x40b502
mov eax, str.Cant_create_default_message_box_font
jmp 0x40bc0a
push 0x6b
push dword [esi + 8]
call dword [sym.imp.USER32.dll_LoadIconA]
mov dword [esi + 0x8bc], eax
push 0x28
lea eax, [ebp - 0x3c]
push ebx
push eax
call fcn.0042b620
mov eax, dword [esi + 8]
add esp, 0xc
mov dword [ebp - 0x2c], eax
mov eax, dword [esi + 0x8bc]
push 0x7f00
push ebx
mov dword [ebp - 0x3c], 0x2003
mov dword [ebp - 0x38], 0x40af84
mov dword [ebp - 0x28], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x3c]
mov edi, 0x44129c
push eax
mov dword [ebp - 0x20], 0x10
mov dword [ebp - 0x18], edi
call dword [sym.imp.USER32.dll_RegisterClassA]
test ax, ax
jne 0x40b576
mov eax, str.Cant_register_driver_class
jmp 0x40bc0a
push ebx
push dword [esi + 8]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push edi
push edi
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
cmp eax, ebx
mov dword [esi + 0x14], eax
jne 0x40b59b
mov eax, str.Cant_create_driver_window
jmp 0x40bc0a
push dword [esi + 0x42c]
lea eax, [esi + 0x1ca]
mov ecx, esi
push eax
call fcn.0042090a
test ax, ax
je 0x40b5bf
mov eax, dword [esi + 0x42c]
jmp 0x40bc0a
push dword [esi + 0x42c]
lea eax, [esi + 0x9c]
mov ecx, esi
push eax
call fcn.00420939
test ax, ax
jne 0x40b5b4
mov ecx, esi
call fcn.0040e16f
push dword [esi + 0x42c]
mov edi, 0x452000
mov ecx, esi
push edi
call fcn.00420a85
test ax, ax
jne 0x40b5b4
lea eax, [esi + 0xf8e]
push 0x452004
push eax
call fcn.0042b1f0
pop ecx
pop ecx
mov ecx, esi
call fcn.00424c5f
push dword [esi + 0x42c]
mov ecx, esi
call fcn.00427173
test ax, ax
jne 0x40b5b4
cmp word [0x452020], bx
je 0x40b638
mov ecx, esi
call fcn.00401346
jmp 0x40bc15
push edi
lea eax, [ebp - 0x10]
push str.UNI_s.CMF
push eax
call fcn.0042b964
add esp, 0xc
lea eax, [ebp - 0x10]
push dword [esi + 0x42c]
mov ecx, 0x454168
push eax
call fcn.004205d6
test ax, ax
jne 0x40b5b4
cmp byte [0x452004], bl
mov eax, 0x452004
jne 0x40b679
mov eax, 0x441254
push eax
lea eax, [esi + 0x4bc]
push 0x400
push eax
push 0x10001
push 0x454168
call fcn.00420804
add esp, 0x14
cmp byte [0x452004], bl
jne 0x40b6b0
push ebx
mov ecx, 0x454168
call fcn.004208a3
jmp 0x40bc0a
push 0x452004
lea eax, [ebp - 0x10]
push str._s.DEV
push eax
call fcn.0042b964
add esp, 0xc
mov ecx, esi
push ebx
push dword [esi + 0x42c]
push 0x43d288
push edi
push str.UNIMSG.DFT
call fcn.00407744
test ax, ax
jne 0x40b5b4
push dword [esi + 0x42c]
mov ecx, esi
call fcn.00407f23
test ax, ax
jne 0x40b5b4
push ebx
lea eax, [ebp - 0x10]
push dword [esi + 0x42c]
mov ecx, esi
push 0x43d360
push edi
push eax
call fcn.00407744
test ax, ax
jne 0x40b5b4
push 1
mov ecx, esi
push dword [esi + 0x42c]
push 0x43d360
push edi
push str.WIL32C2.DEV
call fcn.00407744
test ax, ax
jne 0x40b5b4
mov ax, word [0x453276]
mov ecx, esi
mov word [0x451cd4], ax
call fcn.0040ac70
lea eax, [esi + 0xe5c]
push eax
push ebx
push esi
push 0x40e2a2
push ebx
push ebx
call fcn.0042b9c1
add esp, 0x18
cmp eax, ebx
mov dword [esi + 0xe54], eax
jne 0x40b781
mov eax, str.Cant_create_aux_message_loop_thread
jmp 0x40bc0a
push 0xffffffffffffffff
push dword [esi + 0xe58]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea edi, [esi + 0x1c]
push 0x45335e
mov ecx, edi
call fcn.0041e1a4
push 0xd
mov ecx, edi
call fcn.0041e310
cmp word [esi + 0x1232], bx
je 0x40b7be
lea eax, [esi + 0x11f4]
push eax
push str.Service_name____s_
jmp 0x40b7c6
push dword [esi + 0xc]
push str.Command_line____s_
push edi
call fcn.0041e63d
add esp, 0xc
lea eax, [esi + 0x9c]
push eax
push str.Working_path____s_
push edi
call fcn.0041e63d
add esp, 0xc
lea eax, [esi + 0x1ca]
push eax
push str.Temp_path_______s_
push edi
call fcn.0041e63d
add esp, 0xc
push 0x45202c
push str.System_path_____s_
push edi
call fcn.0041e63d
add esp, 0xc
push 0x452288
push str.Private_path____s_
push edi
call fcn.0041e63d
add esp, 0xc
push 0x4524e4
push str.Fax_path________s_
push edi
call fcn.0041e63d
add esp, 0xc
push 0x452740
push str.Comm_path_______s_
push edi
call fcn.0041e63d
add esp, 0xc
push 0x452e8a
push str.Port____________s_
push edi
call fcn.0041e63d
add esp, 0xc
lea eax, [ebp - 0x10]
push eax
push str.Defaults________s_
push edi
call fcn.0041e63d
lea eax, [esi + 0x106a]
add esp, 0xc
cmp byte [eax], bl
je 0x40b883
push eax
push str.Release_________s_
push edi
call fcn.0041e63d
add esp, 0xc
cmp byte [esi + 0xfcc], bl
lea eax, [esi + 0xfcc]
jne 0x40b896
mov eax, str.no_Service_Pack
cmp word [esi + 0x1056], bx
mov ecx, str.64_bit_
jne 0x40b8a9
mov ecx, 0x451740
push eax
movzx eax, word [esi + 0xfc4]
push eax
push ecx
push dword [esi + 0xfc0]
push dword [esi + 0xfbc]
push str.Using_Windows_version__u._u___sbuild__u___s_
push edi
call fcn.0041e63d
add esp, 0x1c
mov ecx, esi
push edi
call fcn.00424faf
push dword [esi + 0x42c]
mov byte [esi + 0x1248], al
lea eax, [ebp - 0x10]
mov ecx, esi
push eax
call fcn.00407f9f
test ax, ax
jne 0x40b5b4
mov ax, word [0x452014]
cmp ax, 2
jne 0x40b953
cmp word [0x45200e], bx
jne 0x40b91c
cmp word [0x452010], bx
jne 0x40b91c
cmp word [0x452012], bx
je 0x40b923
mov word [0x452014], bx
push dword [esi + 0x42c]
mov ecx, esi
call fcn.00420d5e
test ax, ax
jne 0x40b5b4
push edi
mov ecx, 0x4535e0
call fcn.00420fce
test ax, ax
je 0x40b97a
mov eax, str.Cant_create_inter_instance_pipe_communication
jmp 0x40bc0a
cmp ax, bx
jne 0x40b923
cmp word [0x45200e], bx
jne 0x40b923
cmp word [0x452010], bx
jne 0x40b923
cmp word [0x452012], bx
jne 0x40b923
push 9
jmp 0x40b6a1
push ebx
mov ecx, esi
call fcn.0040da5f
test ax, ax
je 0x40b99d
push str.Using_existing_instance_of_the_Class_2_driver
push edi
call fcn.0041e63d
pop ecx
mov ax, 1
pop ecx
jmp 0x40bc15
push 0x452004
mov ecx, esi
call fcn.0040813f
test ax, ax
je 0x40b9b8
mov eax, str.Cant_read_registry_data
jmp 0x40bc0a
mov ax, word [0x453332]
mov ecx, esi
push eax
lea eax, [esi + 0xf38]
push dword [0x45332e]
push dword [0x45332a]
push 0x45330a
push 0x11
push eax
call fcn.00409d4a
test ax, ax
je 0x40b9ef
mov eax, str.Cant_create_dialog_box_font
jmp 0x40bc0a
mov ax, word [0x45335c]
mov ecx, esi
push eax
lea eax, [esi + 0xf3c]
push dword [0x453358]
push dword [0x453354]
push 0x453334
push ebx
push eax
call fcn.00409d4a
test ax, ax
je 0x40ba25
mov eax, str.Cant_create_message_box_font
jmp 0x40bc0a
mov ecx, esi
call fcn.004260d4
test ax, ax
je 0x40ba3b
mov eax, str.Cant_create_status_dialog_box
jmp 0x40bc0a
mov ecx, esi
call fcn.00408b15
test ax, ax
je 0x40ba51
mov eax, str.Cant_create_driver_dialog_box
jmp 0x40bc0a
push dword [esi + 0x42c]
mov ecx, esi
mov word [esi + 0x43c], 1
call fcn.004247a2
test ax, ax
jne 0x40b5b4
lea ecx, [esi + 0x5c]
push ebx
call fcn.0041e1a4
push 0xe
lea ecx, [esi + 0x5c]
call fcn.0041e310
cmp word [0x452ef4], bx
je 0x40baa2
push dword [esi + 0x42c]
mov ecx, esi
call fcn.00408c74
test ax, ax
jne 0x40b5b4
push 0x20000
mov ecx, esi
call fcn.0040d976
push 0x4534b2
lea ecx, [esi + 0xefc]
call fcn.0040e487
mov ecx, esi
call fcn.004094c2
test ax, ax
je 0x40bae1
push str.Failed_to_create_system_tray_icon___waiting_for_user_session
push edi
call fcn.0041e63d
pop ecx
pop ecx
push ebx
push 0xf
mov ecx, esi
call fcn.0040cbea
cmp word [0x452014], bx
je 0x40bb1c
lea eax, [ebp - 0x298]
push eax
push 0x452740
push str.____UNIM._SH
call fcn.00407697
add esp, 0xc
lea eax, [ebp - 0x298]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x40bb1c
push 3
jmp 0x40b6a1
cmp word [0x45200e], bx
je 0x40bb3f
push dword [esi + 0x42c]
mov ecx, 0x453670
push edi
call fcn.004272d3
test ax, ax
jne 0x40b5b4
cmp word [0x452010], bx
je 0x40bb79
lea eax, [esi + 0xf7a]
push 0x452004
push eax
call fcn.0042b1f0
pop ecx
lea eax, [esi + 0x5c]
pop ecx
push dword [esi + 0x42c]
mov ecx, 0x451aa8
push eax
push edi
call fcn.004265f0
test ax, ax
jne 0x40b5b4
cmp word [0x452012], bx
je 0x40bbb3
lea eax, [esi + 0xf84]
push 0x452004
push eax
call fcn.0042b1f0
pop ecx
lea eax, [esi + 0x5c]
pop ecx
push dword [esi + 0x42c]
mov ecx, 0x451ee0
push eax
push edi
call fcn.0041eaf2
test ax, ax
jne 0x40b5b4
lea eax, [esi + 0x5c]
mov ecx, 0x4536c0
push eax
call fcn.004232a2
test ax, ax
je 0x40bbcd
mov eax, str.Failed_to_initialise_Scheduler_communications
jmp 0x40bc0a
mov ecx, 0x4536a8
call fcn.004220cc
test ax, ax
je 0x40bbe3
mov eax, str.Failed_to_initialise_job_progress_reporting
jmp 0x40bc0a
mov ecx, esi
call fcn.0040df4b
push ebx
push 0xd
mov ecx, esi
call fcn.0040cbea
test ax, ax
je 0x40bc07
mov eax, str.Failed_to_start_initialisation_job
jmp 0x40bc0a
mov eax, str.Cant_create_event_or_mutex
jmp 0x40bc0a
mov eax, dword [ebp - 0x14]
push 1
push eax
push ebx
mov ecx, esi
call fcn.0040bd49
pop edi
pop esi
pop ebx
leave
ret