Function at 0x443100
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d7100
mov eax, dword fs:[0]
push eax
sub esp, 0xc
mov eax, dword [0x516108]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x18]
push str.SYSTEMCurrentControlSetServices_
mov dword [ebp - 0x18], 0
call fcn.00404470
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x18]
mov eax, dword [ebp + 8]
push dword [eax - 0xc]
push eax
call fcn.0042afd0
call fcn.004049b0
mov ecx, eax
test ecx, ecx
jne 0x443170
push 0x80004005
call fcn.00404710
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ebx
mov byte [ebp - 4], 3
lea eax, [ebp - 0x14]
push dword [ebp + 0xc]
push dword [ebp - 0x18]
push str.InitStartInfo:__s__AppName:_s_DriverType:_d
push eax
call fcn.004140d0
mov esi, dword [ebp - 0x14]
add esp, 0x14
push esi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
or edi, 0xffffffff
mov byte [ebp - 4], 2
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4431bf
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp + 0xc]
mov edx, eax
lea esi, [edx + 2]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x4431c7
sub edx, esi
sar edx, 1
push ecx
lea ecx, [edx*2 + 2]
mov edx, dword [ebp - 0x18]
push ecx
push eax
push 1
push str.AppName
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
call fcn.0046deb0
mov esi, eax
add esp, 0x14
test esi, esi
je 0x443258
call fcn.004049b0
mov ecx, eax
test ecx, ecx
jne 0x443212
push 0x80004005
call fcn.00404710
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push esi
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 4
push str.InitStartInfo_AppName:__s
push eax
call fcn.004140d0
mov esi, dword [ebp - 0x14]
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov byte [ebp - 4], 2
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x443258
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
push ecx
push 4
push eax
push 4
push str.DriverType
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x14], ebx
call fcn.0046deb0
mov esi, eax
add esp, 0x14
test esi, esi
je 0x4432da
call fcn.004049b0
mov ecx, eax
test ecx, ecx
jne 0x443294
push 0x80004005
call fcn.00404710
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push esi
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 5
push str.InitStartInfo_DriverType:__s
push eax
call fcn.004140d0
mov esi, dword [ebp - 0x14]
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov byte [ebp - 4], 2
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4432da
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov eax, edi
mov edx, dword [ebp - 0x18]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4432f8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x443316
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], edi
dec edi
test edi, edi
jg 0x443335
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0048e923
mov esp, ebp
pop ebp
ret