Function at 0x470ff0
Capabilities:
Create service
Modify service
Persist via run registry key
Print debug messages
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x488260
mov eax, dword fs:[0]
push eax
sub esp, 0xa8c
mov eax, dword [0x4a7740]
xor eax, ebp
mov dword [ebp - 0x50], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0xa94], ecx
mov dword [ebp - 0xa88], 0
mov dword [ebp - 0xa8c], 0
mov dword [ebp - 0x85c], 0
mov dword [ebp - 0x860], 0
mov word [ebp - 0xa7c], 0
push 0x1fe
push 0
lea eax, [ebp - 0xa7a]
push eax
call fcn.00453b10
add esp, 0xc
mov word [ebp - 0x854], 0
push 0x7fe
push 0
lea ecx, [ebp - 0x852]
push ecx
call fcn.00453b10
add esp, 0xc
mov dword [ebp - 0x858], 0
mov dword [ebp - 0xa84], 0
mov ecx, dword [ebp - 0xa94]
call fcn.0046f580
push 0x3ff
lea edx, [ebp - 0x854]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov dword [ebp - 0xa8c], eax
cmp dword [ebp - 0xa8c], 0
jne 0x4710fd
push pe_nt_image_headers32
lea eax, [ebp - 0xa7c]
push eax
mov ecx, dword [ebp - 0xa94]
call fcn.0046fb90
push eax
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx + 8]
push edx
push str.Unable_to_install__s____s_n
call fcn.00458986
add esp, 0xc
jmp 0x4714a1
mov ecx, dword [ebp - 0xa94]
call fcn.00433be0
mov dword [ebp - 0xa8c], eax
cmp dword [ebp - 0xa8c], 0
je 0x47119e
lea eax, [ebp - 0x85c]
push eax
mov ecx, dword [str.SoftwareMicrosoftWindowsCurrentVersionRunServices]
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyW]
mov dword [ebp - 0x860], eax
cmp dword [ebp - 0x860], 0
jne 0x47119e
lea edx, [ebp - 0x854]
push edx
call fcn.00450f30
add esp, 4
add eax, 1
push eax
lea eax, [ebp - 0x854]
push eax
push 2
push 0
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx + 4]
push edx
mov eax, dword [ebp - 0x85c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [ebp - 0x860], eax
mov ecx, dword [ebp - 0x85c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x860], 0
jne 0x471199
jmp 0x471497
jmp 0x4714a1
push 0xf003f
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov dword [ebp - 0xa84], eax
cmp dword [ebp - 0xa84], 0
jne 0x4711f3
push pe_nt_image_headers32
lea edx, [ebp - 0xa7c]
push edx
mov ecx, dword [ebp - 0xa94]
call fcn.0046fb90
push eax
push 0x49015c
call fcn.00458986
add esp, 8
lea eax, [ebp - 0xa7c]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x4714a1
mov ecx, dword [ebp - 0xa94]
cmp dword [ecx + 0x4c], 1
je 0x47120b
mov edx, dword [ebp - 0xa94]
cmp dword [edx + 0x4c], 2
jne 0x471234
mov eax, dword [ebp - 0xa94]
cmp dword [eax + 0x50], 0
je 0x471223
mov ecx, dword [ebp - 0xa94]
cmp dword [ecx + 0x50], 1
jne 0x471234
mov edx, dword [ebp - 0xa94]
add edx, 0x5c
mov dword [ebp - 0xa98], edx
jmp 0x47123e
mov dword [ebp - 0xa98], 0
mov eax, dword [ebp - 0xa94]
mov ecx, dword [eax + 0x68]
push ecx
mov edx, dword [ebp - 0xa94]
mov eax, dword [edx + 0x64]
push eax
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx + 0x60]
push edx
mov eax, dword [ebp - 0xa98]
push eax
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx + 0x58]
push edx
lea eax, [ebp - 0x854]
push eax
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx + 0x54]
push edx
mov eax, dword [ebp - 0xa94]
mov ecx, dword [eax + 0x50]
push ecx
mov edx, dword [ebp - 0xa94]
mov eax, dword [edx + 0x4c]
push eax
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx + 0x48]
push edx
mov eax, dword [ebp - 0xa94]
mov ecx, dword [eax + 8]
push ecx
mov edx, dword [ebp - 0xa94]
mov eax, dword [edx + 4]
push eax
mov ecx, dword [ebp - 0xa84]
push ecx
call dword [sym.imp.ADVAPI32.dll_CreateServiceW]
mov dword [ebp - 0x858], eax
cmp dword [ebp - 0x858], 0
jne 0x471303
push pe_nt_image_headers32
lea edx, [ebp - 0xa7c]
push edx
mov ecx, dword [ebp - 0xa94]
call fcn.0046fb90
push eax
push str.CreateService_failed____s_n
call fcn.00458986
add esp, 8
lea eax, [ebp - 0xa7c]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x4714a1
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx + 8]
push edx
push str._s_installed._n
call fcn.00458986
add esp, 8
mov dword [ebp - 0xa80], 0x4901ec
lea eax, [ebp - 0xa80]
push eax
push 1
mov ecx, dword [ebp - 0x858]
push ecx
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
test eax, eax
jne 0x471372
push pe_nt_image_headers32
lea edx, [ebp - 0xa7c]
push edx
mov ecx, dword [ebp - 0xa94]
call fcn.0046fb90
push eax
push str.ChangeServiceConfig2_Descripe_failed____s_n
call fcn.00458986
add esp, 8
lea eax, [ebp - 0xa7c]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x47137f
push str.ChangeServiceConfig2_Descripe_succeeded_n
call fcn.00458986
add esp, 4
mov dword [ebp - 0x4c], 0x15180
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x874], 0xea60
mov dword [ebp - 0x878], 1
mov dword [ebp - 0x86c], 0xea60
mov dword [ebp - 0x870], 1
mov dword [ebp - 0x864], 0xea60
mov dword [ebp - 0x868], 1
mov dword [ebp - 0x40], 3
lea ecx, [ebp - 0x878]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x44], 0
lea edx, [ebp - 0x4c]
push edx
push 2
mov eax, dword [ebp - 0x858]
push eax
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
test eax, eax
jne 0x471438
push str.KANTServer_ChangeServiceConfig2_AutoStartSrv_failed_n
call fcn.00458a35
add esp, 4
push pe_nt_image_headers32
lea ecx, [ebp - 0xa7c]
push ecx
mov ecx, dword [ebp - 0xa94]
call fcn.0046fb90
push eax
push str.ChangeServiceConfig2_AutoStartSrv_failed____s_n
call fcn.00458986
add esp, 8
lea edx, [ebp - 0xa7c]
push edx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x471445
push str.ChangeServiceConfig2_AutoStartSrv_succeeded_n
call fcn.00458a35
add esp, 4
mov eax, dword [ebp - 0x858]
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov ecx, dword [ebp - 0xa84]
push ecx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push 7
lea edx, [ebp - 0x854]
push edx
mov eax, dword [ebp - 0xa94]
mov edx, dword [eax]
mov ecx, dword [ebp - 0xa94]
mov eax, dword [edx + 0x48]
call eax
push 0xffffffffffffffff
push 4
push str.Service_installed
mov ecx, dword [ebp - 0xa94]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0xa94]
mov eax, dword [edx + 0x50]
call eax
mov dword [ebp - 0xa88], 1
lea ecx, [ebp - 0x38]
call fcn.004838a0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x38]
call fcn.00484560
mov ecx, dword [ebp - 0xa88]
mov dword [ebp - 0xa90], ecx
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x38]
call fcn.00483840
mov eax, dword [ebp - 0xa90]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x50]
xor ecx, ebp
call fcn.00450ba2
mov esp, ebp
pop ebp
ret