Function at 0x404dd0
Capabilities:
Extract resource via kernel32 functions
Query or enumerate registry value
Read .ini file

Disassembly:
sub esp, 0x4c
lea eax, [esp]
push ebx
push esi
push edi
push eax
push str.SoftwareAvanceAC97_Audio
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x404e39
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x18]
push 0x40d050
push edx
push 0
push str.Language
push eax
mov dword [esp + 0x2c], 3
mov dword [esp + 0x28], 2
call edi
mov ecx, dword [esp + 0xc]
mov esi, eax
push ecx
call ebx
test esi, esi
je 0x405066
push 0x40fc60
lea edx, [esp + 0x1c]
push 0x20
push edx
push 0x40e2cc
push str.DefaultLang
push str.General
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jne 0x404e6f
mov ax, word [0x40b2c0]
mov word [0x40d050], ax
jmp 0x405066
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
lea ecx, [esp + 0x18]
push str.AUTO
push ecx
call esi
test eax, eax
jne 0x404e8b
mov word [0x40d050], ax
lea edx, [esp + 0x18]
push str.ENGLISH
push edx
call esi
test eax, eax
jne 0x404ea4
mov word [0x40d050], 0xffff
lea eax, [esp + 0x18]
push str.TRADCHIN
push eax
call esi
test eax, eax
jne 0x404ebd
mov word [0x40d050], 0x404
lea ecx, [esp + 0x18]
push str.SIMPCHIN
push ecx
call esi
test eax, eax
jne 0x404ed6
mov word [0x40d050], 0x804
lea edx, [esp + 0x18]
push str.DANISH
push edx
call esi
test eax, eax
jne 0x404eef
mov word [0x40d050], 0x406
lea eax, [esp + 0x18]
push str.DUTCH
push eax
call esi
test eax, eax
jne 0x404f08
mov word [0x40d050], 0x413
lea ecx, [esp + 0x18]
push str.FRENCH
push ecx
call esi
test eax, eax
jne 0x404f21
mov word [0x40d050], 0x40c
lea edx, [esp + 0x18]
push str.GERMAN
push edx
call esi
test eax, eax
jne 0x404f3a
mov word [0x40d050], 0x407
lea eax, [esp + 0x18]
push str.ITALIAN
push eax
call esi
test eax, eax
jne 0x404f53
mov word [0x40d050], 0x410
lea ecx, [esp + 0x18]
push str.JAPANESE
push ecx
call esi
test eax, eax
jne 0x404f6c
mov word [0x40d050], 0x411
lea edx, [esp + 0x18]
push str.KOREAN
push edx
call esi
test eax, eax
jne 0x404f85
mov word [0x40d050], 0x412
lea eax, [esp + 0x18]
push str.PORTUGUESE_D
push eax
call esi
test eax, eax
jne 0x404f9e
mov word [0x40d050], 0x816
lea ecx, [esp + 0x18]
push str.PORTUGUESE_BRAZILIAN
push ecx
call esi
test eax, eax
jne 0x404fb7
mov word [0x40d050], 0x416
lea edx, [esp + 0x18]
push str.RUSSIAN
push edx
call esi
test eax, eax
jne 0x404fd0
mov word [0x40d050], 0x419
lea eax, [esp + 0x18]
push str.SPANISH
push eax
call esi
test eax, eax
jne 0x404fe9
mov word [0x40d050], 0x40a
lea ecx, [esp + 0x18]
push str.SWEDISH
push ecx
call esi
test eax, eax
jne 0x405002
mov word [0x40d050], 0x41d
lea edx, [esp + 0x18]
push str.ARABIC
push edx
call esi
test eax, eax
jne 0x40501b
mov word [0x40d050], 0x401
lea eax, [esp + 0x18]
push str.THAI
push eax
call esi
test eax, eax
jne 0x405034
mov word [0x40d050], 0x41e
lea ecx, [esp + 0x18]
push str.POLISH
push ecx
call esi
test eax, eax
jne 0x40504d
mov word [0x40d050], 0x415
lea edx, [esp + 0x18]
push str.GREEK
push edx
call esi
test eax, eax
jne 0x405066
mov word [0x40d050], 0x408
mov ax, word [0x40d050]
push 0x410000
mov word [0x40d052], ax
mov dword [0x410000], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp word [0x40d050], 0
jne 0x40513c
cmp dword [0x410004], 4
ja 0x405110
cmp dword [0x410008], 0x5a
jae 0x405110
lea ecx, [esp + 0xc]
push ecx
push 1
push 0
push str.Control_PanelDesktopResourceLocale
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40513c
lea edx, [esp + 0x10]
lea eax, [esp + 0x38]
push edx
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
push ecx
push 0
push 0
push edx
mov dword [esp + 0x2c], 1
mov dword [esp + 0x28], 0x20
call edi
mov esi, eax
mov eax, dword [esp + 0xc]
push eax
call ebx
test esi, esi
jne 0x40513c
lea ecx, [esp + 0x3c]
push ecx
call fcn.004053e0
add esp, 4
mov word [0x40d050], ax
jmp 0x40513c
push 0x40d71c
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
je 0x40513c
push str.GetUserDefaultUILanguage
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
call eax
push esi
mov word [0x40d050], ax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [0x40d050]
and eax, 0xffff
mov edx, eax
and edx, 0x3ff
lea ecx, [edx - 1]
cmp ecx, 0x1d
ja case.0x405162.17
xor edx, edx
mov dl, byte [ecx + 0x4053b8]
jmp dword [edx*4 + 0x405374]
and eax, 0xfffffc00
push str.LANG
cmp eax, 0x800
jne 0x40518e
push 0x8c
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push 0x90
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x7f
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x80
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x82
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x83
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x85
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x86
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x87
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
and eax, 0xfffffc00
push str.LANG
cmp eax, 0x400
jne 0x405273
push 0x8a
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push 0x89
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x8b
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x8d
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x8e
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x7e
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x8f
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x88
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x84
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
jmp 0x405341
push str.LANG
push 0x81
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
mov word [0x40d050], 0xffff
test esi, esi
je 0x40536a
push esi
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push esi
push 0
mov edi, eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push edi
mov dword [0x40e294], eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [0x40e290], eax
pop edi
pop esi
pop ebx
add esp, 0x4c
ret