Function at 0x46a684
Capabilities:
Link many functions at runtime
Query or enumerate registry value

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov eax, dword [0x4c1074]
xor eax, esp
mov dword [esp + 0x14], eax
push 0
push 8
push 1
call fcn.004115d0
add esp, 0xc
mov ebp, eax
mov eax, dword [0x4c3464]
test eax, eax
jne 0x46a6c9
push str.kernel32.dll
call fcn.0046caa4
add esp, 4
mov dword [0x4c3464], eax
test eax, eax
je 0x46aa15
push str.AddDllDirectory
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4c3468], eax
xor edi, edi
push edi
push 0x64
push 3
call fcn.004115d0
add esp, 0xc
mov dword [ebp], eax
mov dword [ebp + 4], edi
lea eax, [esp + 0x10]
push eax
push str.SOFTWAREMITKerberos
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
mov dword [esp], ebp
jne 0x46a8c6
lea ebp, [esp + 8]
lea esi, [esp + 0xc]
push ebp
push edi
push esi
push edi
push str.InstallDir
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x46a7ef
cmp dword [esp + 0xc], 1
jne 0x46a7ef
mov eax, dword [esp + 8]
add eax, 0x14
xor edi, edi
push edi
push 1
push eax
call fcn.004115d0
add esp, 0xc
mov ebx, eax
push ebp
push eax
push esi
push edi
push str.InstallDir
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x46a7e6
cmp dword [esp + 0xc], 1
jne 0x46a7e6
push ebx
call fcn.004855c0
add esp, 4
mov dword [ebx + eax], 0x6e69625c
mov byte [ebx + eax + 4], 0
cmp dword [0x4c3468], 0
je 0x46a7af
xor eax, eax
push ebx
push eax
push eax
call fcn.00413a2d
add esp, 0xc
mov edi, eax
push eax
call dword [0x4c3468]
push edi
call fcn.00411645
add esp, 4
push ebx
call fcn.004855c0
add esp, 4
mov dword [ebx + eax], 0x7373675c
mov dword [ebx + eax + 4], 0x33697061
mov dword [ebx + eax + 8], 0x6c642e32
mov word [ebx + eax + 0xc], 0x6c
push 0xd00
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov edi, eax
push ebx
call fcn.00411645
add esp, 4
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
mov ebp, dword [esp]
je 0x46a8c6
mov ebx, dword [ebp]
mov eax, dword [ebp + 4]
lea ecx, [eax + 1]
mov dword [ebp + 4], ecx
imul ebp, eax, 0x64
lea eax, [ebx + ebp]
mov dword [esp + 4], eax
mov dword [ebx + ebp], 0
mov dword [ebx + ebp + 4], str.Using_GSSAPI_from_GSSAPI32.DLL
mov dword [ebx + ebp + 0x60], edi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.gss_delete_sec_context
push edi
call esi
mov dword [ebx + ebp + 0x34], eax
push str.gss_display_status
push edi
call esi
mov dword [ebx + ebp + 0x38], eax
push str.gss_get_mic
push edi
call esi
mov dword [ebx + ebp + 0x3c], eax
push str.gss_verify_mic
push edi
call esi
mov dword [ebx + ebp + 0x40], eax
push str.gss_import_name
push edi
call esi
mov dword [ebx + ebp + 0x44], eax
push str.gss_init_sec_context
push edi
call esi
mov dword [ebx + ebp + 0x48], eax
push str.gss_release_buffer
push edi
call esi
mov dword [ebx + ebp + 0x4c], eax
push str.gss_release_cred
push edi
call esi
mov dword [ebx + ebp + 0x50], eax
push str.gss_release_name
push edi
call esi
mov dword [ebx + ebp + 0x54], eax
push str.gss_acquire_cred
push edi
call esi
mov dword [ebx + ebp + 0x58], eax
push str.gss_inquire_cred_by_mech
push edi
call esi
mov dword [ebx + ebp + 0x5c], eax
mov ebp, dword [esp]
push dword [esp + 4]
call fcn.0043f1a0
add esp, 4
mov esi, dword [esp + 0x2c]
push str.secur32.dll
call fcn.0046caa4
add esp, 4
test eax, eax
je 0x46a9d0
mov edi, eax
mov esi, dword [ebp]
mov eax, dword [ebp + 4]
lea ecx, [eax + 1]
mov dword [ebp + 4], ecx
imul ebp, eax, 0x64
mov dword [esi + ebp], 1
mov dword [esi + ebp + 4], str.Using_SSPI_from_SECUR32.DLL
mov dword [esi + ebp + 0x60], edi
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.AcquireCredentialsHandleA
push edi
call ebx
mov dword [0x4c346c], eax
push str.InitializeSecurityContextA
push edi
call ebx
mov dword [0x4c3470], eax
push str.FreeContextBuffer
push edi
call ebx
mov dword [0x4c3474], eax
push str.FreeCredentialsHandle
push edi
call ebx
mov dword [0x4c3478], eax
push str.DeleteSecurityContext
push edi
call ebx
mov dword [0x4c347c], eax
push str.QueryContextAttributesA
push edi
call ebx
mov dword [0x4c3480], eax
push str.MakeSignature
push edi
call ebx
mov dword [0x4c3484], eax
push str.VerifySignature
push edi
call ebx
mov dword [0x4c3488], eax
mov dword [esi + ebp + 8], 0x46ab9f
mov dword [esi + ebp + 0xc], 0x46abb7
mov dword [esi + ebp + 0x10], 0x46abe1
mov dword [esi + ebp + 0x14], 0x46ac06
mov dword [esi + ebp + 0x18], 0x46ade8
mov dword [esi + ebp + 0x1c], 0x46ae0a
mov dword [esi + ebp + 0x20], 0x46ae96
mov dword [esi + ebp + 0x24], 0x46aed1
mov dword [esi + ebp + 0x28], 0x46afb4
mov dword [esi + ebp + 0x2c], 0x46b03d
mov dword [esi + ebp + 0x30], 0x46b04f
mov esi, dword [esp + 0x2c]
mov ebp, dword [esp]
push 0x2d
push esi
call fcn.00403612
add esp, 8
mov esi, dword [eax]
cmp byte [esi], 0
je 0x46ab3a
cmp dword [0x4c3468], 0
je 0x46aa56
push esi
call fcn.004855c0
add esp, 4
test eax, eax
jle 0x46aa56
mov cl, byte [esi + eax - 1]
dec eax
cmp cl, 0x5c
je 0x46aa1c
cmp cl, 0x3a
jne 0x46a9f8
lea ecx, [eax + 1]
cmp ecx, 1
jg 0x46aa1d
jmp 0x46aa56
xor eax, eax
jmp 0x46a6d5
inc eax
push esi
push eax
push 0x4a9a86
call fcn.0045abe5
add esp, 0xc
mov edi, eax
xor eax, eax
push edi
push eax
push eax
call fcn.00413a2d
add esp, 0xc
mov ebx, eax
push eax
call dword [0x4c3468]
push ebx
call fcn.00411645
add esp, 4
push edi
call fcn.00411645
add esp, 4
push 0xd00
push 0
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
test eax, eax
je 0x46ab3a
mov edi, eax
mov ebx, dword [ebp]
mov eax, dword [ebp + 4]
lea ecx, [eax + 1]
mov dword [ebp + 4], ecx
imul ebp, eax, 0x64
lea eax, [ebx + ebp]
mov dword [esp + 4], eax
mov dword [ebx + ebp], 2
push esi
push str.Using_GSSAPI_from_user_specified_library__s
call fcn.0045abe5
add esp, 8
mov dword [ebx + ebp + 4], eax
mov dword [ebx + ebp + 0x60], edi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.gss_delete_sec_context
push edi
call esi
mov dword [ebx + ebp + 0x34], eax
push str.gss_display_status
push edi
call esi
mov dword [ebx + ebp + 0x38], eax
push str.gss_get_mic
push edi
call esi
mov dword [ebx + ebp + 0x3c], eax
push str.gss_verify_mic
push edi
call esi
mov dword [ebx + ebp + 0x40], eax
push str.gss_import_name
push edi
call esi
mov dword [ebx + ebp + 0x44], eax
push str.gss_init_sec_context
push edi
call esi
mov dword [ebx + ebp + 0x48], eax
push str.gss_release_buffer
push edi
call esi
mov dword [ebx + ebp + 0x4c], eax
push str.gss_release_cred
push edi
call esi
mov dword [ebx + ebp + 0x50], eax
push str.gss_release_name
push edi
call esi
mov dword [ebx + ebp + 0x54], eax
push str.gss_acquire_cred
push edi
call esi
mov dword [ebx + ebp + 0x58], eax
push str.gss_inquire_cred_by_mech
push edi
call esi
mov dword [ebx + ebp + 0x5c], eax
mov ebp, dword [esp]
push dword [esp + 4]
call fcn.0043f1a0
add esp, 4
mov ecx, dword [esp + 0x14]
xor ecx, esp
call fcn.00475526
mov eax, ebp
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret