Function at 0x415360
Capabilities:
Check for time delay via gettickcount
Query service status
Start service
Stop service

Disassembly:
sub esp, 0x50
push ebx
push ebp
xor eax, eax
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ebp
call edi
push 0xf003f
push str.ServicesActive
push ebp
mov ebx, eax
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
cmp eax, ebp
mov dword [esp + 0x1c], eax
jne 0x4153d0
push str.When_reatart_DNS_Client_fail_to_open_SC_Manager.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret
push 0xf01ff
push str.Dnscache
push eax
call dword [sym.imp.ADVAPI32.dll_OpenServiceA]
cmp eax, ebp
mov dword [esp + 0x10], eax
jne 0x415400
push str.Fail_to_open_DNS_Client_service_.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 4
jmp 0x415638
lea ecx, [esp + 0x14]
push ecx
push 0x24
lea edx, [esp + 0x44]
push edx
push ebp
push eax
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
jne 0x415429
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Fail_to_QueryServiceStatusEx_error_code:__d.
jmp 0x41562b
mov eax, dword [esp + 0x40]
cmp eax, 4
jne 0x415625
cmp dword [0x43b464], ebp
mov esi, 1
je 0x415638
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ecx]
lea eax, [esi - 1]
cmp eax, 3
ja case.default.0x41545c
jmp dword [eax*4 + 0x41565c]
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x20]
push eax
push 1
push ecx
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
je 0x4155cb
mov esi, 2
jmp 0x4155bc
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
push 0x24
lea eax, [esp + 0x44]
push eax
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x4155d9
jmp 0x4154b0
mov eax, dword [esp + 0x40]
cmp eax, 3
je 0x4154be
cmp eax, 2
jne 0x41552f
mov eax, 0xcccccccd
mul dword [esp + 0x54]
shr edx, 3
push edx
push str.Current_dwWaitTime:__d.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 8
push 0xc8
call ebp
call edi
mov ecx, dword [esp + 0x64]
sub eax, ebx
cmp eax, ecx
mov eax, dword [0x43b464]
jae 0x4155e7
test eax, eax
je 0x4155e7
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
push 0x24
lea eax, [esp + 0x44]
push eax
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
jne 0x4154b0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.When_confirming_waiting__fail_to_QueryServiceStatusEx__error_code:__d.
jmp 0x41562b
push eax
push esi
push str.ProcStatus:__d__current_status:_d
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 0xc
cmp esi, 2
jne 0x415568
mov eax, dword [esp + 0x40]
cmp eax, 1
jne 0x415558
mov esi, 3
jmp 0x4155bc
cmp eax, 4
jne case.default.0x41545c
mov esi, 1
jmp 0x4155bc
cmp esi, 4
jne case.default.0x41545c
mov eax, dword [esp + 0x40]
cmp eax, esi
je 0x415611
cmp eax, 2
je 0x4155b7
cmp eax, 1
jne case.default.0x41545c
mov esi, 3
jmp 0x4155bc
mov edx, dword [esp + 0x10]
push 0
push 0
push edx
call dword [sym.imp.ADVAPI32.dll_StartServiceA]
test eax, eax
mov ecx, 0x43b48c
je 0x415602
push str.Succeed_in_starting_DNS_Client_service__need_confirm.
call fcn.0040a090
add esp, 4
mov esi, 4
cmp dword [0x43b464], 0
jne 0x415450
jmp 0x415638
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Fail_to_stop_DNS_Client_service__error_code:__d.
jmp 0x41562b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.When_Confirming__fail_to_QueryServiceStatusEx__error_code:__d.
jmp 0x41562b
push eax
push ecx
call edi
sub eax, ebx
push eax
push str.Stop_wait_for_restart_DNS_client_have_wait_time:_d__MaxWaitTime:_d__wait_flag:_d_.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 0x10
jmp 0x415638
push str.Fail_to_start_DNS_Client_service.
call fcn.0040a090
add esp, 4
jmp 0x415638
mov dword [esp + 0x18], 1
jmp 0x415638
mov dword [esp + 0x18], 0
jmp 0x415638
push eax
push str.The_initial_status_of_DNS_Client_is__d__no_need_to_restart.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 8
mov eax, dword [esp + 0x10]
test eax, eax
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
je 0x415649
push eax
call esi
mov eax, dword [esp + 0x1c]
push eax
call esi
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret