Function at 0x403bd0
Capabilities:
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x407806
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x800
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x820]
mov dword [esp + 0x818], 1
cmp edi, 3
ja case.default.0x403c0a
jmp dword [edi*4 + 0x403eb4]
mov ecx, dword [esp + 0x824]
lea eax, [esp + 0x18]
push eax
push 0xf003f
push 0
push ecx
push 0x80000000
jmp 0x403c7b
mov eax, dword [esp + 0x824]
lea edx, [esp + 0x18]
push edx
push 0xf003f
push 0
push eax
push 0x80000001
jmp 0x403c7b
mov edx, dword [esp + 0x824]
lea ecx, [esp + 0x18]
push ecx
push 0xf003f
push 0
push edx
push 0x80000002
jmp 0x403c7b
mov ecx, dword [esp + 0x824]
lea eax, [esp + 0x18]
push eax
push 0xf003f
push 0
push ecx
push 0x80000003
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov ebp, dword [sym.imp.KERNEL32.dll_FormatMessageA]
mov ebx, dword [sym.imp.KERNEL32.dll_LocalFree]
mov esi, eax
test esi, esi
je 0x403d04
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_1
push 0
lea edx, [esp + 0x18]
push 0
push edx
push 0x400
push esi
push 0
push 0x1300
mov byte [esp + 0x834], 2
call ebp
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x10]
push eax
push edi
push 0x40a7a4
push ecx
call sub.MFC42.DLL_CString::Format
add esp, 0xc
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x24], esp
push edx
call fcn.00406f3e
call fcn.00404250
mov eax, dword [esp + 0x18]
add esp, 4
push eax
call ebx
lea ecx, [esp + 0x10]
mov byte [esp + 0x818], 1
call sub.MFC42.DLL_CString::CString
mov ecx, 0x1fa
xor eax, eax
lea edi, [esp + 0x28]
push 0x40ab34
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x830]
mov dword [esp + 0x20], 0x7e8
mov ecx, edi
call sub.MFC42.DLL_CString::operator
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x82c]
lea eax, [esp + 0x28]
push edx
mov edx, dword [esp + 0x20]
push eax
push 0
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov esi, eax
test esi, esi
jne 0x403de3
cmp dword [esp + 0x24], 4
je 0x403d6f
lea eax, [esp + 0x28]
mov ecx, edi
push eax
call sub.MFC42.DLL_CString::operator
jmp 0x403da3
mov ecx, dword [esp + 0x1c]
lea esi, [esp + 0x28]
mov edx, ecx
lea edi, [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x82c]
push eax
push 0x40a7a0
push ecx
call sub.MFC42.DLL_CString::Format
add esp, 0xc
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x824]
mov byte [esp + 0x818], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x828]
mov dword [esp + 0x818], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, 1
jmp 0x403e9b
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_1
push 0
lea ecx, [esp + 0x18]
push 0
push ecx
push 0x400
push esi
push 0
push 0x1300
mov byte [esp + 0x834], 3
call ebp
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x828]
mov ecx, dword [esp + 0x824]
push edx
push eax
push ecx
lea edx, [esp + 0x1c]
push 0x40a77c
push edx
call sub.MFC42.DLL_CString::Format
add esp, 0x10
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00406f3e
call fcn.00404250
mov ecx, dword [esp + 0x18]
add esp, 4
push ecx
call ebx
lea ecx, [esp + 0x10]
mov byte [esp + 0x818], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x824]
mov byte [esp + 0x818], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x828]
mov dword [esp + 0x818], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
mov ecx, dword [esp + 0x810]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x80c
ret