Function at 0x401b50
Capabilities:
Read .ini file

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x477f2b
push eax
mov dword fs:[0], esp
sub esp, 0x90c
push ebp
mov ebp, dword [esp + 0x920]
test ebp, ebp
je 0x401e2d
mov al, byte [0x493b50]
push ebx
push esi
push edi
mov byte [esp + 0x14], al
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x15]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x493f48
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x120]
push 0x400
push ecx
push str.English
push 0x48d194
push str.System
call ebx
lea edx, [esp + 0x11c]
lea eax, [esp + 0x14]
push edx
push 0x493e40
push str._sLanguage_s.ini
push eax
call fcn.00457c43
mov ecx, dword [0x491ac4]
add esp, 0x10
mov dword [esp + 0x10], ecx
lea edx, [esp + 0x10]
mov ecx, ebp
push edx
mov dword [esp + 0x928], 0
call fcn.0046b918
push 0x48d174
push 0x48d170
lea ecx, [esp + 0x18]
call fcn.00467c96
push 0x48d16c
push 0x48d168
lea ecx, [esp + 0x18]
call fcn.00467c96
mov al, byte [0x493b50]
mov ecx, 0xff
mov byte [esp + 0x51c], al
xor eax, eax
lea edi, [esp + 0x51d]
lea edx, [esp + 0x51c]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x14]
stosb byte es:[edi], al
mov eax, dword [esp + 0x10]
push ecx
push 0x400
push edx
push eax
push eax
push str.String
call ebx
mov al, byte [esp + 0x51c]
test al, al
je 0x401ce7
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x51c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x401c9b
test cl, cl
je 0x401c97
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x401c9b
add eax, 2
add esi, 2
test cl, cl
jne 0x401c77
xor eax, eax
jmp 0x401ca0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401ce7
lea eax, [esp + 0x51c]
lea ecx, [esp + 0x10]
push eax
call fcn.0046e2eb
push 0x48d170
push 0x48d174
lea ecx, [esp + 0x18]
call fcn.00467c96
push 0x48d168
push 0x48d16c
lea ecx, [esp + 0x18]
call fcn.00467c96
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, ebp
call fcn.0046dc79
mov edx, dword [ebp + 0x1c]
push 5
push edx
call dword [sym.imp.USER32.dll_GetWindow]
push eax
call fcn.0046af22
mov ebp, eax
test ebp, ebp
je 0x401e16
lea eax, [esp + 0x10]
mov ecx, ebp
push eax
call fcn.0046b918
push 0x48d174
push 0x48d170
lea ecx, [esp + 0x18]
call fcn.00467c96
push 0x48d16c
push 0x48d168
lea ecx, [esp + 0x18]
call fcn.00467c96
mov cl, byte [0x493b50]
xor eax, eax
mov byte [esp + 0x11c], cl
mov ecx, 0xff
lea edi, [esp + 0x11d]
lea edx, [esp + 0x14]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push edx
lea eax, [esp + 0x120]
push 0x400
push eax
mov eax, dword [esp + 0x1c]
push eax
push eax
push str.String
call ebx
mov al, byte [esp + 0x11c]
test al, al
je 0x401dfa
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x11c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x401dae
test cl, cl
je 0x401daa
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x401dae
add eax, 2
add esi, 2
test cl, cl
jne 0x401d8a
xor eax, eax
jmp 0x401db3
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401dfa
lea eax, [esp + 0x11c]
lea ecx, [esp + 0x10]
push eax
call fcn.0046e2eb
push 0x48d170
push 0x48d174
lea ecx, [esp + 0x18]
call fcn.00467c96
push 0x48d168
push 0x48d16c
lea ecx, [esp + 0x18]
call fcn.00467c96
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, ebp
call fcn.0046dc79
mov edx, dword [ebp + 0x1c]
push 2
push edx
call dword [sym.imp.USER32.dll_GetWindow]
push eax
call fcn.0046af22
mov ebp, eax
test ebp, ebp
jne 0x401d03
lea ecx, [esp + 0x10]
mov dword [esp + 0x924], 0xffffffff
call fcn.0046e162
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x910]
pop ebp
mov dword fs:[0], ecx
add esp, 0x918
ret