Function at 0x46a924
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.004116c4
add esp, 0xc
mov ebp, eax
mov eax, dword [0x4c3464]
test eax, eax
jne 0x46a969
push str.kernel32.dll
call fcn.0046cde0
add esp, 4
mov dword [0x4c3464], eax
test eax, eax
je 0x46acf4
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.004116c4
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 0x46aba5
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 0x46aace
cmp dword [esp + 0xc], 1
jne 0x46aace
mov eax, dword [esp + 8]
add eax, 0x14
xor edi, edi
push edi
push 1
push eax
call fcn.004116c4
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 0x46aac5
cmp dword [esp + 0xc], 1
jne 0x46aac5
push ebx
call fcn.00485930
add esp, 4
mov dword [ebx + eax], 0x6e69625c
mov byte [ebx + eax + 4], 0
cmp dword [0x4c3468], 0
je 0x46aa57
xor eax, eax
push ebx
push eax
push eax
call fcn.004138bd
add esp, 0xc
mov edi, eax
push eax
call dword [0x4c3468]
push edi
call fcn.00411739
add esp, 4
push ebx
call fcn.00485930
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
mov ecx, eax
call fcn.0046ae2e
test al, al
je 0x46aaa0
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [0x4c348c]
test eax, eax
jne 0x46aabb
push 0x42aa42
call fcn.00459964
add esp, 4
mov dword [0x4c348c], eax
push edi
push eax
call fcn.004599fc
add esp, 8
push ebx
call fcn.00411739
add esp, 4
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
mov ebp, dword [esp]
je 0x46aba5
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.0043ee54
add esp, 4
mov esi, dword [esp + 0x2c]
push str.secur32.dll
call fcn.0046cde0
add esp, 4
test eax, eax
je 0x46acaf
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], 0x46aebf
mov dword [esi + ebp + 0xc], 0x46aed7
mov dword [esi + ebp + 0x10], 0x46af01
mov dword [esi + ebp + 0x14], 0x46af26
mov dword [esi + ebp + 0x18], 0x46b109
mov dword [esi + ebp + 0x1c], 0x46b12b
mov dword [esi + ebp + 0x20], 0x46b1b7
mov dword [esi + ebp + 0x24], 0x46b1f2
mov dword [esi + ebp + 0x28], 0x46b2d5
mov dword [esi + ebp + 0x2c], 0x46b35e
mov dword [esi + ebp + 0x30], 0x46b370
mov esi, dword [esp + 0x2c]
mov ebp, dword [esp]
push 0x2e
push esi
call fcn.00403662
add esp, 8
mov esi, dword [eax]
cmp byte [esi], 0
je 0x46ae19
cmp dword [0x4c3468], 0
je 0x46ad35
push esi
call fcn.00485930
add esp, 4
test eax, eax
jle 0x46ad35
mov cl, byte [esi + eax - 1]
dec eax
cmp cl, 0x5c
je 0x46acfb
cmp cl, 0x3a
jne 0x46acd7
lea ecx, [eax + 1]
cmp ecx, 1
jg 0x46acfc
jmp 0x46ad35
xor eax, eax
jmp 0x46a975
inc eax
push esi
push eax
push 0x4a9b76
call fcn.0045ad89
add esp, 0xc
mov edi, eax
xor eax, eax
push edi
push eax
push eax
call fcn.004138bd
add esp, 0xc
mov ebx, eax
push eax
call dword [0x4c3468]
push ebx
call fcn.00411739
add esp, 4
push edi
call fcn.00411739
add esp, 4
push 0xd00
push 0
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
test eax, eax
je 0x46ae19
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.0045ad89
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.0043ee54
add esp, 4
mov ecx, dword [esp + 0x14]
xor ecx, esp
call fcn.00475893
mov eax, ebp
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret