Function at 0x4022c0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x40890e
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x40f238]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov esi, ecx
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x10]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
mov ebx, dword [0x40a3a4]
cmp edx, 1
jle 0x40252b
mov ecx, eax
mov eax, dword [ecx + 8]
lea ecx, [ecx + eax*4 + 0x18]
push ecx
lea ecx, [esp + 0x18]
call dword [0x40a378]
mov edi, dword [0x40a304]
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x30], 0x40a4c0
call edi
test al, al
jne 0x402a00
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._install
call edi
test al, al
jne 0x402a00
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a934
call edi
test al, al
jne 0x40285c
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._uninstall
call edi
test al, al
jne 0x40285c
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a924
call edi
test al, al
jne 0x40273c
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._version
call edi
test al, al
jne 0x40273c
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a914
call edi
test al, al
jne 0x4026d3
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._exec
call edi
test al, al
jne 0x4026d3
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a908
call edi
test al, al
jne 0x4026b4
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._terminate
call edi
test al, al
jne 0x4026b4
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a8f8
call edi
test al, al
jne 0x4026a7
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._pause
call edi
test al, al
jne 0x4026a7
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a8ec
call edi
test al, al
jne 0x40269a
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._resume
call edi
test al, al
jne 0x40269a
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a8e0
call edi
test al, al
jne 0x402630
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._command
call edi
test al, al
jne 0x402630
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], 0x40a8d0
call edi
test al, al
jne 0x4025cd
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x30], str._help
call edi
test al, al
jne 0x4025cd
mov edx, dword [esp + 0x14]
mov dword [esp + 0x38], 0xffffffff
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x40252b
mov ecx, dword [esp + 0x14]
push ecx
call ebx
add esp, 4
mov ecx, dword [esi + 4]
call fcn.00404630
test al, al
jne 0x402684
lea ecx, [esp + 0x28]
push ecx
mov ecx, esi
call fcn.00401290
lea edx, [esp + 0x2c]
push edx
mov ecx, eax
mov dword [esp + 0x3c], 0xd
call dword [0x40a308]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push str.The_service__s_could_not_start_n
call dword [0x40a100]
add eax, 0x40
push eax
call dword [0x40a104]
mov ecx, dword [esp + 0x38]
add esp, 0xc
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402595
mov eax, dword [esp + 0x2c]
push eax
call dword [0x40a368]
add esp, 4
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x38], 0xffffffff
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x4025b4
mov eax, dword [esp + 0x28]
push eax
call ebx
add esp, 4
mov eax, 0xfffffffc
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov esi, dword [esi + 4]
mov esi, dword [esi + 0x10]
mov eax, dword [esi + 8]
lea edx, [esp + 0x1c]
push edx
lea ecx, [esi + eax*4 + 0x14]
call dword [0x40a308]
mov ecx, dword [eax]
mov eax, dword [ecx + 0xc]
push eax
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 dword [0x40a108]
mov edx, dword [esp + 0x24]
add esp, 8
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x402614
mov ecx, dword [esp + 0x1c]
push ecx
call dword [0x40a368]
add esp, 4
mov edx, dword [esp + 0x14]
mov dword [esp + 0x38], 0xffffffff
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x402684
mov ecx, dword [esp + 0x14]
push ecx
jmp 0x40267b
mov edx, dword [esi + 4]
mov ecx, dword [edx + 0x10]
mov edi, dword [ecx + 0xc]
sub edi, dword [ecx + 8]
xor eax, eax
cmp edi, 2
jle 0x402655
mov edx, ecx
push 0xa
push eax
mov eax, dword [edx + 8]
lea ecx, [edx + eax*4 + 0x1c]
call dword [0x40a30c]
mov ecx, dword [esi + 4]
push eax
add ecx, 0x14
call fcn.00403490
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x38], 0xffffffff
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402684
mov eax, dword [esp + 0x14]
push eax
call dword [0x40a3a4]
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov ecx, dword [esi + 4]
add ecx, 0x14
call fcn.00403400
jmp 0x402661
mov ecx, dword [esi + 4]
add ecx, 0x14
call fcn.00403370
jmp 0x402661
mov ecx, dword [esi + 4]
add ecx, 0x14
call fcn.00403270
test al, al
jne 0x402661
push str.The_service_could_not_be_stopped.
call dword [0x40a310]
add esp, 4
jmp 0x402661
mov ecx, dword [esi + 4]
push 1
add ecx, 0x10
call fcn.00401e40
mov ecx, dword [esi + 4]
lea edx, [ecx + 0x10]
push edx
push 0
call fcn.00401ef0
mov esi, eax
cmp esi, 0xffffffff
jne 0x402703
push str.The_service_could_not_be_executed.
call dword [0x40a310]
add esp, 4
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], 0xffffffff
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x402726
mov edx, dword [esp + 0x14]
push edx
call dword [0x40a3a4]
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 8]
mov edi, dword [0x40a308]
lea ecx, [esp + 0x20]
push ecx
lea ecx, [eax + edx*4 + 0x14]
call edi
mov ebp, eax
lea eax, [esp + 0x18]
mov bl, 0xb
push eax
mov ecx, esi
mov byte [esp + 0x3c], bl
call fcn.00401290
lea ecx, [esp + 0x1c]
push ecx
mov ecx, eax
mov byte [esp + 0x3c], 0xc
call edi
mov edx, dword [ebp]
mov ecx, dword [edx + 0xc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edi, dword [0x40a108]
push ecx
push eax
push str.The_service_n_t_s_n_t_s_n_n
call edi
mov ecx, dword [esp + 0x28]
add esp, 0xc
or edx, 0xffffffff
lock xadd dword [ecx], edx
mov ebp, dword [0x40a368]
jne 0x4027b2
mov eax, dword [esp + 0x1c]
push eax
call ebp
add esp, 4
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x38], bl
or edx, 0xffffffff
lock xadd dword [ecx], edx
mov ebx, dword [0x40a3a4]
jne 0x4027d3
mov eax, dword [esp + 0x18]
push eax
call ebx
add esp, 4
mov ecx, dword [esp + 0x20]
mov byte [esp + 0x38], 0
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x4027ef
mov eax, dword [esp + 0x20]
push eax
call ebp
add esp, 4
mov ecx, dword [esi + 4]
add ecx, 0x14
call fcn.00403100
test al, al
mov eax, str.installed
jne 0x402808
mov eax, str.not_installed
push eax
push str.is__s
call edi
mov ecx, dword [esi + 4]
add esp, 8
add ecx, 0x14
call fcn.00403160
test al, al
mov eax, str.running
jne 0x40282c
mov eax, str.not_running
push eax
push str._and__s_n_n
call edi
mov ecx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x38], 0xffffffff
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402684
mov eax, dword [esp + 0x14]
push eax
call ebx
jmp 0x402681
mov ecx, dword [esi + 4]
add ecx, 0x14
call fcn.00403100
mov edi, dword [0x40a3a4]
test al, al
je 0x402968
mov ecx, dword [esi + 4]
add ecx, 0x14
call fcn.00403200
lea ecx, [esp + 0x1c]
push ecx
mov ecx, esi
test al, al
jne 0x40293b
call fcn.00401290
lea edx, [esp + 0x20]
push edx
mov ecx, eax
mov byte [esp + 0x3c], 8
call dword [0x40a308]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push str.The_service__s_could_not_be_uninstalled_n
call dword [0x40a100]
add eax, 0x40
push eax
call dword [0x40a104]
mov ecx, dword [esp + 0x2c]
add esp, 0xc
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x4028df
mov eax, dword [esp + 0x20]
push eax
call dword [0x40a368]
add esp, 4
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x38], 0
or edx, 0xffffffff
lock xadd dword [ecx], edx
mov esi, dword [0x40a3a4]
jne 0x402901
mov eax, dword [esp + 0x1c]
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x38], 0xffffffff
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402b6e
mov eax, dword [esp + 0x14]
push eax
call esi
add esp, 4
or eax, 0xffffffff
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
call fcn.00401290
lea edx, [esp + 0x20]
push edx
mov ecx, eax
mov byte [esp + 0x3c], 9
call dword [0x40a308]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push str.The_service__s_has_been_uninstalled._n
call dword [0x40a108]
add esp, 8
jmp 0x4029a4
lea ecx, [esp + 0x1c]
push ecx
mov ecx, esi
call fcn.00401290
lea edx, [esp + 0x20]
push edx
mov ecx, eax
mov byte [esp + 0x3c], 0xa
call dword [0x40a308]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push str.The_service__s_is_not_installed_n
call dword [0x40a100]
add eax, 0x40
push eax
call dword [0x40a104]
add esp, 0xc
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x4029bf
mov eax, dword [esp + 0x20]
push eax
call dword [0x40a368]
add esp, 4
mov ecx, dword [esp + 0x1c]
or edx, 0xffffffff
mov byte [esp + 0x38], 0
lock xadd dword [ecx], edx
jne 0x4029db
mov eax, dword [esp + 0x1c]
push eax
call edi
add esp, 4
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x38], 0xffffffff
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402684
mov eax, dword [esp + 0x14]
push eax
call edi
jmp 0x402681
mov ecx, dword [esi + 4]
add ecx, 0x14
call fcn.00403100
test al, al
jne 0x402c9e
mov eax, dword [0x40a3a8]
mov dword [esp + 0x1c], eax
mov ecx, 1
lock xadd dword [eax], ecx
mov eax, dword [0x40a3a8]
mov dword [esp + 0x18], eax
mov edx, 1
lock xadd dword [eax], edx
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x10]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
mov edi, dword [0x40a374]
mov byte [esp + 0x38], 2
cmp edx, 2
jle 0x402a63
mov ecx, eax
mov eax, dword [ecx + 8]
lea ecx, [ecx + eax*4 + 0x1c]
push ecx
lea ecx, [esp + 0x20]
call edi
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x10]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
cmp edx, 3
jle 0x402a84
mov ecx, eax
mov eax, dword [ecx + 8]
lea ecx, [ecx + eax*4 + 0x20]
push ecx
lea ecx, [esp + 0x1c]
call edi
mov ecx, dword [esi + 4]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x20]
push eax
call fcn.00403a50
test al, al
jne 0x402b85
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call fcn.00401290
lea edx, [esp + 0x20]
push edx
mov ecx, eax
mov byte [esp + 0x3c], 3
call dword [0x40a308]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push str.The_service__s_could_not_be_installed_n
call dword [0x40a100]
add eax, 0x40
push eax
call dword [0x40a104]
mov ecx, dword [esp + 0x2c]
add esp, 0xc
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402af5
mov eax, dword [esp + 0x20]
push eax
call dword [0x40a368]
add esp, 4
mov ecx, dword [esp + 0x24]
mov byte [esp + 0x38], 2
or edx, 0xffffffff
lock xadd dword [ecx], edx
mov esi, dword [0x40a3a4]
jne 0x402b17
mov eax, dword [esp + 0x24]
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x38], 1
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402b33
mov eax, dword [esp + 0x18]
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x38], 0
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402b4f
mov eax, dword [esp + 0x1c]
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x38], 0xffffffff
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402b6e
mov eax, dword [esp + 0x14]
push eax
call esi
add esp, 4
or eax, 0xffffffff
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esi + 4]
call fcn.00403090
mov edi, dword [0x40a308]
lea edx, [esp + 0x28]
push edx
mov ecx, eax
mov byte [esp + 0x3c], 4
call edi
mov ebp, eax
lea eax, [esp + 0x20]
mov bl, 5
push eax
mov ecx, esi
mov byte [esp + 0x3c], bl
call fcn.00401290
lea ecx, [esp + 0x24]
push ecx
mov ecx, eax
mov byte [esp + 0x3c], 6
call edi
mov edx, dword [ebp]
mov ecx, dword [edx + 0xc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push ecx
push eax
push str.The_service__s_has_been_installed_under:__s_n
call dword [0x40a108]
mov ecx, dword [esp + 0x30]
add esp, 0xc
or edx, 0xffffffff
lock xadd dword [ecx], edx
mov edi, dword [0x40a368]
jne 0x402c00
mov eax, dword [esp + 0x24]
push eax
call edi
add esp, 4
mov ecx, dword [esp + 0x20]
mov esi, dword [0x40a3a4]
mov byte [esp + 0x38], bl
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402c21
mov eax, dword [esp + 0x20]
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x28]
mov byte [esp + 0x38], 4
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402c3d
mov eax, dword [esp + 0x28]
push eax
call edi
add esp, 4
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0x38], 2
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402c59
mov eax, dword [esp + 0x2c]
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x38], 1
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402c75
mov eax, dword [esp + 0x18]
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x38], 0
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402661
mov eax, dword [esp + 0x1c]
push eax
call dword [0x40a3a4]
add esp, 4
jmp 0x402661
lea ecx, [esp + 0x28]
push ecx
mov ecx, esi
call fcn.00401290
lea edx, [esp + 0x2c]
push edx
mov ecx, eax
mov byte [esp + 0x3c], 7
call dword [0x40a308]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push str.The_service__s_is_already_installed_n
call dword [0x40a100]
add eax, 0x40
push eax
call dword [0x40a104]
mov ecx, dword [esp + 0x38]
add esp, 0xc
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402cf5
mov eax, dword [esp + 0x2c]
push eax
call dword [0x40a368]
add esp, 4
mov ecx, dword [esp + 0x28]
mov byte [esp + 0x38], 0
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x402661
mov eax, dword [esp + 0x28]
push eax
call dword [0x40a3a4]
add esp, 4
jmp 0x402661