Function at 0x43d3b0
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5e3835
mov eax, dword fs:[0]
push eax
sub esp, 0x74
push ebx
push esi
push edi
mov eax, dword [0x660ff8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xor edi, edi
mov dword [ebp - 4], 0
mov byte [ebp - 0xd], 0
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x6c], edi
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x7c], edi
mov dword [ebp - 0x78], edi
lea eax, [ebp - 0x24]
mov byte [ebp - 4], 2
push eax
push 0x20019
push edi
push dword [ebp + 8]
mov dword [ebp - 0x24], edi
push dword [ecx]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
or ebx, 0xffffffff
test eax, eax
jne 0x43d7dd
mov edi, dword [ebp - 0x24]
xor ebx, ebx
push 0x202
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x74], edi
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x20], ebx
call fcn.0048593a
mov ecx, eax
mov dword [ebp - 0x40], 0x100
add esp, 4
mov dword [ebp - 0x24], ecx
nop
lea eax, [ebp - 0x50]
push eax
push 0
push 0
push 0
lea eax, [ebp - 0x40]
push eax
push ecx
push ebx
push edi
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x43d7c1
xor ebx, ebx
mov dword [ebp - 0x60], ebx
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 3
push eax
push 0x20019
push ebx
push dword [ebp - 0x24]
mov dword [ebp - 0x1c], ebx
push edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x43d791
mov ebx, dword [ebp - 0x1c]
push 0x202
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x64], eax
call fcn.0048593a
add esp, 4
mov dword [ebp - 0x1c], 0x200
mov edi, eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x38], edi
push eax
push edi
lea eax, [ebp - 0x44]
push eax
push 0
push str.service
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43d778
mov eax, dword [ebp - 0x44]
cmp eax, 1
je 0x43d4ec
cmp eax, 2
jne 0x43d778
mov ecx, dword [ebp - 0x1c]
test edi, edi
je 0x43d516
test ecx, ecx
je 0x43d511
test cl, 1
jne 0x43d77c
mov eax, ecx
shr eax, 1
cmp word [edi + eax*2 - 2], 0
je 0x43d516
jmp 0x43d77c
xor eax, eax
mov word [edi], ax
shr ecx, 1
xor eax, eax
mov word [edi + ecx*2], ax
call fcn.0040cf77
mov ecx, eax
test ecx, ecx
je 0x43d818
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push edi
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 4
push str.systemcurrentcontrolset_services_senum
push eax
call fcn.00439910
add esp, 0xc
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x54], 0
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 5
mov esi, dword [ebp - 0x14]
push eax
push 0x20019
push 0
push esi
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x1c], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x43d74f
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x28], eax
call fcn.0040cf77
mov ecx, eax
test ecx, ecx
je 0x43d818
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1c], eax
push 0
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 6
push 0x6323ec
push eax
call fcn.00439910
push 0x202
call fcn.0048593a
mov ebx, eax
add esp, 0x10
mov dword [ebp - 0x2c], ebx
mov edi, dword [ebp - 0x1c]
lea eax, [ebp - 0x18]
push eax
push ebx
lea eax, [ebp - 0x48]
mov dword [ebp - 0x18], 0x200
push eax
push 0
push edi
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43d6f6
mov eax, dword [ebp - 0x48]
cmp eax, 1
je 0x43d60e
cmp eax, 2
jne 0x43d6f6
mov ecx, dword [ebp - 0x18]
test ebx, ebx
je 0x43d639
test ecx, ecx
je 0x43d634
test cl, 1
jne 0x43d6fa
mov eax, ecx
shr eax, 1
cmp word [ebx + eax*2 - 2], 0
jne 0x43d6fa
jmp 0x43d639
xor eax, eax
mov word [ebx], ax
shr ecx, 1
xor eax, eax
mov word [ebx + ecx*2], ax
call fcn.0040cf77
test eax, eax
je 0x43d818
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x18], eax
push ebx
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 7
call fcn.0040d730
test al, al
jne 0x43d675
push ebx
lea ecx, [ebp - 0x18]
call fcn.0040d8d0
mov byte [ebp - 4], 6
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x18]
test eax, eax
jne 0x43d688
or ebx, 0xffffffff
jmp 0x43d6ac
cmp dword [esi - 0xc], 0
jge 0x43d693
or ebx, 0xffffffff
jmp 0x43d6ac
push eax
push esi
call fcn.005b41a2
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x43d6a8
or ebx, 0xffffffff
jmp 0x43d6ac
sub ebx, esi
sar ebx, 1
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43d6c4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
jns 0x43d6ec
mov esi, dword [ebp - 0x28]
lea eax, [ebp - 0x1c]
inc esi
push esi
push 0x6323ec
push eax
mov dword [ebp - 0x28], esi
call fcn.00439910
mov ebx, dword [ebp - 0x2c]
add esp, 0xc
mov esi, dword [ebp - 0x30]
jmp 0x43d5d8
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
mov byte [ebp - 0xd], 1
test ebx, ebx
je 0x43d703
push ebx
call fcn.00485943
add esp, 4
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
je 0x43d715
push esi
call ebx
xor esi, esi
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x58], 0
add edi, 0xfffffff0
mov byte [ebp - 4], 5
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x43d738
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x43d746
push esi
call ebx
mov dword [ebp - 0x5c], 0
mov edi, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x58], 0
add esi, 0xfffffff0
mov byte [ebp - 4], 3
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43d772
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
je 0x43d785
push edi
call fcn.00485943
add esp, 4
test ebx, ebx
je 0x43d78e
push ebx
call esi
xor ebx, ebx
mov edi, dword [ebp - 0x3c]
inc dword [ebp - 0x20]
mov dword [ebp - 0x40], 0x100
test ebx, ebx
je 0x43d7a9
push ebx
call esi
mov dword [ebp - 0x68], 0
cmp byte [ebp - 0xd], 0
mov dword [ebp - 0x64], 0
jne 0x43d7c1
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
jmp 0x43d450
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x43d7d1
push eax
call fcn.00485943
add esp, 4
test edi, edi
je 0x43d7da
push edi
call esi
xor edi, edi
or ebx, 0xffffffff
test edi, edi
je 0x43d7e4
push edi
call esi
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x43d803
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov al, byte [ebp - 0xd]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00402449
int3