Function at 0x122a5030
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push ecx
cmp dword [0x123b10a8], 0
jne 0x122a5046
cmp dword [0x123b10a4], 3
jbe 0x122a5050
mov eax, dword [0x123b10a8]
jmp 0x122a556b
mov eax, dword [0x123b10a4]
add eax, 1
mov dword [0x123b10a4], eax
mov dword [ebp - 4], 0
call fcn.122ff170
test eax, eax
je 0x122a507d
push 0x1239a404
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 4], eax
jmp 0x122a508b
push 0x1239a420
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x122a5098
xor eax, eax
jmp 0x122a556b
push str.OpenThreadToken
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fb0], eax
push str.SetThreadToken
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fb4], eax
push str.OpenProcessToken
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fb8], eax
push str.DuplicateToken
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fbc], eax
push str.DuplicateTokenEx
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fc0], eax
push str.GetTokenInformation
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fc4], eax
push str.SetTokenInformation
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fc8], eax
push str.GetFileSecurityA
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fcc], eax
push str.GetFileSecurityW
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fd0], eax
push str.SetFileSecurityA
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fd4], eax
push str.SetFileSecurityW
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fd8], eax
push str.RegGetKeySecurity
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fdc], eax
push str.RegSetKeySecurity
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fe0], eax
push str.GetKernelObjectSecurity
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fe4], eax
push str.SetKernelObjectSecurity
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fe8], eax
push str.GetAclInformation
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0fec], eax
push str.SetAclInformation
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0ff0], eax
push str.GetSecurityDescriptorDacl
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0ff4], eax
push str.SetSecurityDescriptorDacl
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0ff8], eax
push str.GetSecurityDescriptorGroup
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b0ffc], eax
push str.SetSecurityDescriptorGroup
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1000], eax
push str.GetSecurityDescriptorOwner
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1004], eax
push str.SetSecurityDescriptorOwner
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1008], eax
push str.GetSecurityDescriptorSacl
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b100c], eax
push str.SetSecurityDescriptorSacl
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1010], eax
push str.LookupAccountNameA
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1014], eax
push str.LookupAccountNameW
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1018], eax
push str.LookupAccountSidA
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b101c], eax
push str.LookupAccountSidW
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1020], eax
push str.LookupPrivilegeValueA
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1024], eax
push str.LookupPrivilegeValueW
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1028], eax
push str.LookupPrivilegeNameA
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b102c], eax
push str.LookupPrivilegeNameW
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1030], eax
push str.LookupPrivilegeDisplayNameA
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1034], eax
push str.LookupPrivilegeDisplayNameW
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1038], eax
push str.AdjustTokenPrivileges
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b103c], eax
push str.ImpersonateAnonymousToken
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1040], eax
push str.ImpersonateNamedPipeClient
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1044], eax
push str.ImpersonateLoggedOnUser
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1048], eax
push str.RevertToSelf
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b104c], eax
push str.LogonUserA
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1050], eax
push str.LogonUserW
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1054], eax
push str.CreateProcessAsUserA
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1058], eax
push str.CreateProcessAsUserW
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b105c], eax
push str.CreateProcessWithLogonW
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1060], eax
push str.CreateProcessWithTokenW
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1064], eax
push str.ConvertSidToStringSidA
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1068], eax
push str.ConvertSidToStringSidW
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b106c], eax
push str.ConvertStringSidToSidA
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1070], eax
push str.ConvertStringSidToSidW
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1074], eax
push str.ConvertStringSecurityDescriptorToSecurityDescriptorA
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1078], eax
push str.ConvertStringSecurityDescriptorToSecurityDescriptorW
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b107c], eax
push str.CopySid
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1080], eax
push str.EqualSid
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1084], eax
push str.EqualPrefixSid
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1088], eax
push str.FreeSid
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b108c], eax
push str.QueryServiceConfig2A
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1090], eax
push str.QueryServiceConfig2W
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1094], eax
push str.ChangeServiceConfig2A
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b1098], eax
push str.ChangeServiceConfig2W
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b109c], eax
push str.QueryServiceStatusEx
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x123b10a0], eax
mov dword [0x123b10a8], 1
mov eax, 1
mov esp, ebp
pop ebp
ret