Function at 0x1000ca40
Capabilities:
Check for time delay via gettickcount
Copy file
Create service
Delete registry key
Delete service
Get common file path
Get disk information
Query service status
Start service

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x388
push ebx
push esi
push edi
mov al, byte [0x100273cc]
mov byte [ebp - 0x128], al
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x127]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov dword [ebp - 0x12c], 0
mov dword [ebp - 0x130], 0
cmp dword [ebp + 0x20], 0
jne 0x1000ca89
mov ecx, dword [ebp + 8]
mov dword [ebp + 0x20], ecx
mov edx, dword [ebp + 0x1c]
push edx
mov eax, dword [ebp + 0x18]
push eax
mov ecx, dword [ebp + 0x20]
push ecx
push str.InstallNTDriver._1.__s.__d.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x18
push 0
push 0xffffffffffffffff
push 1
mov edx, dword [ebp + 0x20]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.1000c5d0
add esp, 0x18
test eax, eax
je 0x1000cad1
mov eax, 1
jmp 0x1000d394
push 0xf003f
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x1000cb28
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x12c], eax
mov edx, dword [ebp + 0x20]
push edx
mov eax, dword [ebp - 0x12c]
push eax
push str.InstallNTDriver._2.__08X.__s.
push 0x100273cc
push 1
call fcn.1000eed0
add esp, 0x14
mov ecx, dword [ebp - 0x12c]
push ecx
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x1000d394
cmp dword [ebp + 0x14], 0
je 0x1000ce9a
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov edx, dword [ebp + 0x20]
push edx
push str.InstallNTDriver._9.__s.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x10
push 0xf01ff
mov eax, dword [ebp + 0x20]
push eax
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_OpenServiceA]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x1000cbbd
mov edx, dword [ebp + 0x20]
push edx
push str.InstallNTDriver._10.__s.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x10
lea eax, [ebp - 0x24]
push eax
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
mov edx, dword [ebp - 0x20]
push edx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._11.__08X.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x14
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov ecx, dword [ebp + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._12.__08X.__s.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x14
lea edx, [ebp - 0x128]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov byte [ebp - 0x125], 0
lea eax, [ebp - 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
je 0x1000cc43
lea ecx, [ebp - 0x128]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 4
je 0x1000cc43
lea edx, [ebp - 0x128]
push edx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
je 0x1000cc43
lea eax, [ebp - 0x128]
push eax
call fcn.1000d450
add esp, 4
cmp eax, 2
jne 0x1000ce43
mov cl, byte [0x100273cc]
mov byte [ebp - 0x234], cl
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x233]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov dl, byte [0x100273cc]
mov byte [ebp - 0x338], dl
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x337]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x234]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
test eax, eax
je 0x1000ccd1
lea ecx, [ebp - 0x234]
push ecx
call fcn.1001e830
add esp, 4
test eax, eax
je 0x1000ccd1
lea edx, [ebp - 0x338]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x1000ccd1
lea eax, [ebp - 0x338]
push eax
call fcn.1001e830
add esp, 4
test eax, eax
jne 0x1000ccfd
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._24.__08X.
push 0x100273cc
push 1
call fcn.1000eed0
add esp, 0x10
xor eax, eax
jmp 0x1000d394
lea edx, [ebp - 0x234]
push edx
call fcn.1001e830
add esp, 4
movsx eax, byte [ebp + eax - 0x235]
cmp eax, 0x5c
je 0x1000cd2d
push 0x10029d48
lea ecx, [ebp - 0x234]
push ecx
call fcn.1001e2a0
add esp, 8
lea edx, [ebp - 0x338]
push edx
call fcn.1001e830
add esp, 4
movsx eax, byte [ebp + eax - 0x339]
cmp eax, 0x5c
je 0x1000cd5d
push 0x10029d48
lea ecx, [ebp - 0x338]
push ecx
call fcn.1001e2a0
add esp, 8
mov edx, dword [ebp + 8]
push edx
lea eax, [ebp - 0x234]
push eax
call fcn.1001e2a0
add esp, 8
mov ecx, dword [ebp + 8]
push ecx
lea edx, [ebp - 0x338]
push edx
call fcn.1001e2a0
add esp, 8
mov eax, dword [ebp + 0xc]
and eax, 1
test eax, eax
jne 0x1000cd97
mov ecx, dword [ebp + 0xc]
and ecx, 2
test ecx, ecx
je 0x1000cdc1
push str..SYS
lea edx, [ebp - 0x234]
push edx
call fcn.1001e2a0
add esp, 8
push str..SYS
lea eax, [ebp - 0x338]
push eax
call fcn.1001e2a0
add esp, 8
jmp 0x1000cde9
push str..EXE
lea ecx, [ebp - 0x234]
push ecx
call fcn.1001e2a0
add esp, 8
push str..EXE
lea edx, [ebp - 0x338]
push edx
call fcn.1001e2a0
add esp, 8
push 0
lea eax, [ebp - 0x338]
push eax
lea ecx, [ebp - 0x234]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x1000ce2f
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._25.__08X.
push 0x100273cc
push 1
call fcn.1000eed0
add esp, 0x10
xor eax, eax
jmp 0x1000d394
lea eax, [ebp - 0x128]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
jmp 0x1000ce55
lea ecx, [ebp - 0x128]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edx, [ebp - 0x128]
push edx
call fcn.1001e830
add esp, 4
test eax, eax
je 0x1000ce98
lea eax, [ebp - 0x128]
push eax
call fcn.1001e830
add esp, 4
movsx ecx, byte [ebp + eax - 0x129]
cmp ecx, 0x5c
je 0x1000ce98
push 0x10029d48
lea edx, [ebp - 0x128]
push edx
call fcn.1001e2a0
add esp, 8
jmp 0x1000cf03
push 0x104
lea eax, [ebp - 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea ecx, [ebp - 0x128]
push ecx
call fcn.1001e830
add esp, 4
test eax, eax
je 0x1000ceef
lea edx, [ebp - 0x128]
push edx
call fcn.1001e830
add esp, 4
movsx eax, byte [ebp + eax - 0x129]
cmp eax, 0x5c
je 0x1000ceef
push 0x10029d48
lea ecx, [ebp - 0x128]
push ecx
call fcn.1001e2a0
add esp, 8
push str.drivers_
lea edx, [ebp - 0x128]
push edx
call fcn.1001e2a0
add esp, 8
mov eax, dword [ebp + 8]
push eax
lea ecx, [ebp - 0x128]
push ecx
call fcn.1001e2a0
add esp, 8
mov edx, dword [ebp + 0xc]
and edx, 1
test edx, edx
jne 0x1000cf2a
mov eax, dword [ebp + 0xc]
and eax, 2
test eax, eax
je 0x1000cf40
push str..SYS
lea ecx, [ebp - 0x128]
push ecx
call fcn.1001e2a0
add esp, 8
jmp 0x1000cf54
push str..EXE
lea edx, [ebp - 0x128]
push edx
call fcn.1001e2a0
add esp, 8
lea eax, [ebp - 0x128]
push eax
call fcn.1000d3a0
add esp, 4
push eax
mov ecx, dword [ebp + 0x10]
push ecx
lea edx, [ebp - 0x128]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._13.__08X.__08X.__s.__s.__s.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x24
push 0
push 0
mov edx, dword [ebp + 0x10]
push edx
push 0
push 0
lea eax, [ebp - 0x128]
push eax
push 1
mov ecx, dword [ebp + 0x24]
push ecx
mov edx, dword [ebp + 0xc]
push edx
push 0xf01ff
push 0
mov eax, dword [ebp + 0x20]
push eax
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_CreateServiceA]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x1000d046
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x431
jne 0x1000cff6
push 0xf01ff
mov edx, dword [ebp + 0x20]
push edx
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenServiceA]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x1000d046
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x12c], eax
lea ecx, [ebp - 0x128]
push ecx
mov edx, dword [ebp + 0x20]
push edx
mov eax, dword [ebp - 0x12c]
push eax
push str.InstallNTDriver._14.__08X.__s.__s.
push 0x100273cc
push 1
call fcn.1000eed0
add esp, 0x18
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov edx, dword [ebp - 0x12c]
push edx
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x1000d394
mov eax, dword [ebp + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._15.__08X.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x14
cmp dword [ebp + 0x28], 0
je 0x1000d360
mov dword [ebp - 0x33c], 0x3c
mov ecx, dword [ebp + 0x1c]
push ecx
mov edx, dword [ebp + 0x18]
push edx
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_StartServiceA]
test eax, eax
jne 0x1000d1c2
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x420
je 0x1000d1c2
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x12c], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._15a.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x10
cmp dword [ebp - 0x12c], 0x41f
jne 0x1000d121
cmp dword [ebp - 0x33c], 0
jle 0x1000d121
mov ecx, dword [ebp - 0x33c]
push ecx
mov edx, dword [ebp - 0x12c]
push edx
push str.InstallNTDriver._16.__08X.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x14
mov eax, dword [ebp - 0x33c]
sub eax, 1
mov dword [ebp - 0x33c], eax
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x1000d079
lea ecx, [ebp - 0x128]
push ecx
mov edx, dword [ebp + 0x20]
push edx
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [ebp - 0x12c]
push ecx
push str.InstallNTDriver._17.__08X.__08X.__s.__s.
push 0x100273cc
push 1
call fcn.1000eed0
add esp, 0x1c
cmp dword [ebp - 0x12c], 0x422
jne 0x1000d19a
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_DeleteService]
push str.SYSTEMCurrentControlSetServices_
lea eax, [ebp - 0x128]
push eax
call fcn.1001e290
add esp, 8
mov ecx, dword [ebp + 8]
push ecx
lea edx, [ebp - 0x128]
push edx
call fcn.1001e2a0
add esp, 8
lea eax, [ebp - 0x128]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, dword [ebp - 0x12c]
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x1000d394
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._18.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x10
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [ebp - 0x24]
push ecx
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x344], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x340], eax
mov ecx, dword [ebp - 0x340]
push ecx
mov edx, dword [ebp - 0x344]
push edx
mov eax, dword [ebp - 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._19.__08X.__08X.__08X.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x1c
cmp dword [ebp - 0x20], 2
jne 0x1000d304
mov eax, dword [ebp - 0xc]
xor edx, edx
mov ecx, 0xa
div ecx
mov dword [ebp - 0x348], eax
cmp dword [ebp - 0x348], 0x3e8
jae 0x1000d269
mov dword [ebp - 0x348], 0x3e8
jmp 0x1000d27f
cmp dword [ebp - 0x348], 0x2710
jbe 0x1000d27f
mov dword [ebp - 0x348], 0x2710
mov edx, dword [ebp - 0x348]
push edx
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0x24]
push eax
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
jne 0x1000d2a0
jmp 0x1000d304
mov edx, dword [ebp - 0x340]
push edx
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [ebp - 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._20.__08X.__08X.__08X.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x1c
mov edx, dword [ebp - 0x10]
cmp edx, dword [ebp - 0x340]
jbe 0x1000d2ec
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x344], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x340], eax
jmp 0x1000d2ff
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebp - 0x344]
cmp eax, dword [ebp - 0xc]
jbe 0x1000d2ff
jmp 0x1000d304
jmp 0x1000d235
mov ecx, dword [ebp - 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._21.__08X.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x14
cmp dword [ebp - 0x20], 4
je 0x1000d360
mov edx, dword [ebp - 0x20]
push edx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._22.__08X.__08X.
push 0x100273cc
push 1
call fcn.1000eed0
add esp, 0x14
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor eax, eax
jmp 0x1000d394
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InstallNTDriver._23.__08X.
push 0x100273cc
push 3
call fcn.1000eed0
add esp, 0x10
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret