Function at 0x4023e0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4de300
mov eax, dword fs:[0]
push eax
sub esp, 0x20
push ebx
push esi
push edi
mov eax, dword [0x64a000]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov edi, ecx
mov ecx, dword [edi + 4]
mov eax, dword [ecx + 0x10]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
cmp edx, 1
jle 0x4026ba
mov ecx, eax
mov eax, dword [ecx + 8]
mov eax, dword [ecx + eax*4 + 0x14]
mov dword [esp + 0x10], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x40243e
cmp ecx, 0xffffffff
je 0x40243e
mov ecx, 1
lock xadd dword [eax], ecx
push 0x4eb584
push 2
lea ecx, [esp + 0x18]
mov dword [esp + 0x40], 0
call fcn.00417c30
or ebx, 0xffffffff
test al, al
jne 0x402a2d
push str._install
push 8
lea ecx, [esp + 0x18]
call fcn.00417c30
test al, al
jne 0x402a2d
push 0x4eb6b4
push 2
lea ecx, [esp + 0x18]
call fcn.00417c30
test al, al
jne 0x402937
push str._uninstall
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x402937
push 0x4eb73c
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x40286d
push str._version
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x40286d
push 0x4eb7a8
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x402835
push str._exec
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x402835
push 0x4eb7d8
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x402810
push str._terminate
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x402810
push 0x4eb80c
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x402800
push str._pause
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x402800
push 0x4eb818
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x4027f0
push str._resume
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x4027f0
push 0x4eb824
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x4027b7
push str._command
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x4027b7
push 0x4eb834
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x40277b
push str._help
lea ecx, [esp + 0x2c]
call fcn.004011c0
lea ecx, [esp + 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00417c30
test al, al
jne 0x40277b
lea ecx, [esp + 0x10]
mov dword [esp + 0x38], ebx
call fcn.00467a00
mov ecx, dword [edi + 4]
call fcn.00404c10
test al, al
jne 0x402c8b
lea eax, [esp + 0x14]
mov ecx, edi
push eax
call fcn.00403460
lea ecx, [esp + 0x18]
mov dword [esp + 0x38], 0xd
push ecx
mov ecx, eax
call fcn.0041e8b0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
add ecx, eax
push ecx
push str.The_service__s_could_not_start_n
call fcn.004c0ec2
add eax, 0x40
push eax
call fcn.004c0f9e
mov eax, dword [esp + 0x24]
add esp, 0xc
or ebx, 0xffffffff
mov ecx, dword [eax]
test ecx, ecx
je 0x40272a
cmp ecx, ebx
je 0x402737
mov ecx, ebx
lock xadd dword [eax], ecx
setne al
test al, al
jne 0x402737
mov eax, dword [esp + 0x18]
push 4
push 1
push eax
call fcn.00413640
add esp, 0xc
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
test ecx, ecx
je 0x402756
cmp ecx, 0xffffffff
je 0x402763
lock xadd dword [eax], ebx
dec ebx
setne al
test al, al
jne 0x402763
mov eax, dword [esp + 0x14]
push 4
push 2
push eax
call fcn.00413640
add esp, 0xc
mov eax, 0xfffffffc
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0x2c
ret
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0x10]
lea eax, [esp + 0x18]
push eax
mov eax, dword [ecx + 8]
lea ecx, [ecx + eax*4]
add ecx, 0x10
call fcn.0041e8b0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
add ecx, eax
push ecx
push str._n_s___iuesvh__n_t_i_nstall___account___password__t:_Install_the_service__optionally_using_given_account_and_password_n_t_u_ninstall__t:_Uninstall_the_service._n_t_e_xec__t_t:_Run_as_a_regular_application._Useful_for_debugging._n_t_t_erminate__t:_Stop_the_service._n_t_c_ommand__num_t:_Send_command_code_num_to_the_service._n_t_v_ersion__t:_Print_version_and_status_information._n_t_h_elp_____t:_Show_this_help_n_tNo_arguments_t:_Start_the_service._n
call fcn.004c10c5
add esp, 8
lea ecx, [esp + 0x18]
call fcn.0043c130
jmp 0x402c48
mov esi, dword [edi + 4]
xor edx, edx
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp ecx, 2
jle 0x4027df
mov ecx, eax
push 0xa
push edx
mov eax, dword [ecx + 8]
lea ecx, [ecx + eax*4]
add ecx, 0x18
call fcn.0041d580
mov edx, eax
mov ecx, dword [edi + 4]
push edx
add ecx, 0x14
call fcn.00404940
jmp 0x402c48
mov ecx, dword [edi + 4]
add ecx, 0x14
call fcn.00404670
jmp 0x402c48
mov ecx, dword [edi + 4]
add ecx, 0x14
call fcn.00404560
jmp 0x402c48
mov ecx, dword [edi + 4]
add ecx, 0x14
call fcn.00405270
test al, al
jne 0x402c48
push str.The_service_could_not_be_stopped.
call fcn.00411d20
add esp, 4
jmp 0x402c48
mov ecx, dword [edi + 4]
push 1
add ecx, 0x10
call fcn.00403040
mov ecx, dword [edi + 4]
lea eax, [ecx + 0x10]
push eax
push 0
call fcn.004030b0
mov esi, eax
cmp esi, 0xffffffff
jne 0x402c4a
push str.The_service_could_not_be_executed.
call fcn.00411d20
add esp, 4
jmp 0x402c4a
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0x10]
lea eax, [esp + 0x1c]
push eax
mov eax, dword [ecx + 8]
lea ecx, [ecx + eax*4]
add ecx, 0x10
call fcn.0041e8b0
mov esi, eax
lea eax, [esp + 0x14]
mov ecx, edi
push eax
call fcn.00403460
lea ecx, [esp + 0x18]
mov byte [esp + 0x38], 0xc
push ecx
mov ecx, eax
call fcn.0041e8b0
mov ecx, dword [esi]
mov edx, dword [eax]
mov eax, dword [ecx + 0xc]
add eax, ecx
push eax
mov eax, dword [edx + 0xc]
add eax, edx
push eax
push str.The_service_n_t_s_n_t_s_n_n
call fcn.004c10c5
add esp, 0xc
lea ecx, [esp + 0x18]
call fcn.0043c130
lea ecx, [esp + 0x14]
call fcn.00467a00
lea ecx, [esp + 0x1c]
mov byte [esp + 0x38], 0
call fcn.0043c130
mov ecx, dword [edi + 4]
add ecx, 0x14
call fcn.00404140
test al, al
mov edx, str.not_installed
mov ecx, str.installed
cmove ecx, edx
push ecx
push str.is__s
call fcn.004c10c5
mov ecx, dword [edi + 4]
add esp, 8
add ecx, 0x14
call fcn.004041a0
test al, al
mov edx, str.not_running
mov ecx, str.running
cmove ecx, edx
push ecx
push str._and__s_n_n
call fcn.004c10c5
add esp, 8
jmp 0x402c48
mov ecx, dword [edi + 4]
add ecx, 0x14
call fcn.00404140
test al, al
je 0x4029db
mov ecx, dword [edi + 4]
add ecx, 0x14
call fcn.00405460
test al, al
mov ecx, edi
lea eax, [esp + 0x18]
push eax
jne 0x4029ae
call fcn.00403460
lea ecx, [esp + 0x1c]
mov byte [esp + 0x38], 8
push ecx
mov ecx, eax
call fcn.0041e8b0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
add ecx, eax
push ecx
push str.The_service__s_could_not_be_uninstalled_n
call fcn.004c0ec2
add eax, 0x40
push eax
call fcn.004c0f9e
add esp, 0xc
lea ecx, [esp + 0x1c]
call fcn.0043c130
lea ecx, [esp + 0x18]
call fcn.00467a00
or esi, 0xffffffff
jmp 0x402c4a
call fcn.00403460
lea ecx, [esp + 0x1c]
mov byte [esp + 0x38], 9
push ecx
mov ecx, eax
call fcn.0041e8b0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
add ecx, eax
push ecx
push str.The_service__s_has_been_uninstalled._n
call fcn.004c10c5
add esp, 8
jmp 0x402a16
lea eax, [esp + 0x18]
mov ecx, edi
push eax
call fcn.00403460
lea ecx, [esp + 0x1c]
mov byte [esp + 0x38], 0xa
push ecx
mov ecx, eax
call fcn.0041e8b0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
add ecx, eax
push ecx
push str.The_service__s_is_not_installed_n
call fcn.004c0ec2
add eax, 0x40
push eax
call fcn.004c0f9e
add esp, 0xc
lea ecx, [esp + 0x1c]
call fcn.0043c130
lea ecx, [esp + 0x18]
call fcn.00467a00
jmp 0x402c48
mov ecx, dword [edi + 4]
add ecx, 0x14
call fcn.00404140
test al, al
jne 0x402bb3
mov dword [esp + 0x18], 0x4ed20c
mov dword [esp + 0x14], 0x4ed20c
mov edx, dword [edi + 4]
mov byte [esp + 0x38], 2
mov eax, dword [edx + 0x10]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp ecx, 2
jle 0x402a7b
mov ecx, eax
mov eax, dword [ecx + 8]
add ecx, 0x18
lea eax, [ecx + eax*4]
push eax
lea ecx, [esp + 0x1c]
call fcn.004178d0
mov edx, dword [edi + 4]
mov eax, dword [edx + 0x10]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp ecx, 3
jle 0x402aa1
mov ecx, eax
mov eax, dword [ecx + 8]
add ecx, 0x1c
lea eax, [ecx + eax*4]
push eax
lea ecx, [esp + 0x18]
call fcn.004178d0
mov ecx, dword [edi + 4]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.00403e00
test al, al
jne 0x402b1e
lea eax, [esp + 0x20]
mov ecx, edi
push eax
call fcn.00403460
lea ecx, [esp + 0x1c]
mov byte [esp + 0x38], 3
push ecx
mov ecx, eax
call fcn.0041e8b0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
add ecx, eax
push ecx
push str.The_service__s_could_not_be_installed_n
call fcn.004c0ec2
add eax, 0x40
push eax
call fcn.004c0f9e
add esp, 0xc
lea ecx, [esp + 0x1c]
call fcn.0043c130
lea ecx, [esp + 0x20]
call fcn.00467a00
lea ecx, [esp + 0x14]
call fcn.00467a00
lea ecx, [esp + 0x18]
call fcn.00467a00
or esi, 0xffffffff
jmp 0x402c4a
mov ecx, dword [edi + 4]
lea eax, [esp + 0x28]
push eax
call fcn.004038e0
lea ecx, [esp + 0x24]
mov byte [esp + 0x38], 4
push ecx
mov ecx, eax
call fcn.0041e8b0
mov esi, eax
lea eax, [esp + 0x1c]
mov ecx, edi
push eax
call fcn.00403460
lea ecx, [esp + 0x20]
mov byte [esp + 0x38], 6
push ecx
mov ecx, eax
call fcn.0041e8b0
mov ecx, dword [esi]
mov edx, dword [eax]
mov eax, dword [ecx + 0xc]
add eax, ecx
push eax
mov eax, dword [edx + 0xc]
add eax, edx
push eax
push str.The_service__s_has_been_installed_under:__s_n
call fcn.004c10c5
add esp, 0xc
lea ecx, [esp + 0x20]
call fcn.0043c130
lea ecx, [esp + 0x1c]
call fcn.00467a00
lea ecx, [esp + 0x24]
call fcn.0043c130
lea ecx, [esp + 0x28]
call fcn.00467a00
lea ecx, [esp + 0x14]
call fcn.00467a00
lea ecx, [esp + 0x18]
call fcn.00467a00
jmp 0x402c48
lea eax, [esp + 0x14]
mov ecx, edi
push eax
call fcn.00403460
lea ecx, [esp + 0x18]
mov byte [esp + 0x38], 7
push ecx
mov ecx, eax
call fcn.0041e8b0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
add ecx, eax
push ecx
push str.The_service__s_is_already_installed_n
call fcn.004c0ec2
add eax, 0x40
push eax
call fcn.004c0f9e
mov eax, dword [esp + 0x24]
add esp, 0xc
mov ecx, dword [eax]
test ecx, ecx
je 0x402c0e
cmp ecx, 0xffffffff
je 0x402c1b
mov ecx, ebx
lock xadd dword [eax], ecx
setne al
test al, al
jne 0x402c1b
mov eax, dword [esp + 0x18]
push 4
push 1
push eax
call fcn.00413640
add esp, 0xc
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
test ecx, ecx
je 0x402c3b
cmp ecx, 0xffffffff
je 0x402c48
mov ecx, ebx
lock xadd dword [eax], ecx
setne al
test al, al
jne 0x402c48
mov eax, dword [esp + 0x14]
push 4
push 2
push eax
call fcn.00413640
add esp, 0xc
xor esi, esi
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
test ecx, ecx
je 0x402c69
cmp ecx, 0xffffffff
je 0x402c76
lock xadd dword [eax], ebx
dec ebx
setne al
test al, al
jne 0x402c76
mov eax, dword [esp + 0x10]
push 4
push 2
push eax
call fcn.00413640
add esp, 0xc
mov eax, esi
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0x2c
ret
xor eax, eax
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0x2c
ret