Function at 0x5091b0
Capabilities:
Check os version
Persist via windows service
Set registry value

Disassembly:
sub esp, 0xa30
mov eax, dword [0x6aae14]
xor eax, esp
mov dword [esp + 0xa2c], eax
cmp dword [0x74aff0], 0
push ebx
push esi
mov esi, dword [esp + 0xa3c]
push edi
mov edi, dword [esp + 0xa44]
jne 0x5091ff
mov ebx, 1
mov dword [0x74aff0], ebx
call dword [sym.imp.KERNEL32.dll_GetVersion]
test eax, eax
js 0x5091ff
cmp al, 6
jb 0x5091ff
mov dword [0x74afec], ebx
jmp 0x50920c
cmp dword [0x74afec], 0
je 0x5092bb
push 0x103
lea eax, [esp + 0x15]
push 0
push eax
mov byte [esp + 0x1c], 0
call fcn.005dfd60
mov al, byte [esi]
xor ecx, ecx
add esp, 0xc
mov word [esp + 0x628], cx
lea ecx, [esp + 0x628]
mov edx, esi
test al, al
je 0x509251
mov edi, edi
movzx ax, al
inc edx
mov word [ecx], ax
mov al, byte [edx]
add ecx, 2
test al, al
jne 0x509240
xor eax, eax
xor edx, edx
mov word [esp + 0x218], ax
mov al, byte [edi]
mov word [ecx], dx
lea ecx, [esp + 0x218]
mov edx, edi
test al, al
je 0x509281
nop
movzx ax, al
inc edx
mov word [ecx], ax
mov al, byte [edx]
add ecx, 2
test al, al
jne 0x509270
xor edx, edx
mov word [ecx], dx
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x21c]
push ecx
lea edx, [esp + 0x630]
push edx
call fcn.00503e30
push esi
mov edi, eax
call fcn.004f89f0
xor eax, eax
add esp, 0x10
test edi, edi
sete al
lea eax, [eax + eax - 1]
jmp 0x5093bf
push ebp
push 0x207
lea eax, [esp + 0x19]
push 0
push eax
mov byte [esp + 0x20], 0
call fcn.005dfd60
push esi
push edi
lea ecx, [esp + 0x28]
push str._s::Enabled:_s
push ecx
mov dword [esp + 0x2c], 0
call fcn.005dfb23
mov ebp, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
add esp, 0x1c
lea edx, [esp + 0x10]
push edx
push 0xf003f
push 0
push str.SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyStandardProfileAuthorizedApplicationsList
push reloc.OLEAUT32.dll_SysReAllocString
call ebp
mov ebx, dword [sym.imp.KERNEL32.dll_SetLastError]
mov esi, eax
push esi
call ebx
test esi, esi
jne 0x5093a9
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edx, dword [esp + 0x10]
inc eax
push eax
lea ecx, [esp + 0x18]
push ecx
push 1
push esi
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
jne 0x50939e
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp byte [esp + 0xa4c], 1
jne 0x5093b9
lea edx, [esp + 0x10]
push edx
push 0xf003f
push esi
push str.SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyDomainProfileAuthorizedApplicationsList
push reloc.OLEAUT32.dll_SysReAllocString
call ebp
mov esi, eax
push esi
call ebx
test esi, esi
jne 0x5093a9
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edx, dword [esp + 0x10]
inc eax
push eax
lea ecx, [esp + 0x18]
push ecx
push 1
push esi
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x5093ae
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
or eax, 0xffffffff
jmp 0x5093be
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 1
pop ebp
mov ecx, dword [esp + 0xa38]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.005dfbbe
add esp, 0xa30
ret 0xc