Function at 0x422420
Capabilities:
Get common file path
Read .ini file

Disassembly:
sub esp, 0x25c
push ebx
push ebp
push esi
push edi
mov ecx, 0x54
xor eax, eax
lea edi, [esp + 0x11c]
mov dword [esp + 0x118], 0x154
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x118]
push eax
lea eax, [esp + 0x11c]
push eax
push ecx
push 0x29
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
test eax, eax
je 0x422475
lea edx, [esp + 0x1b8]
push edx
call dword [sym.imp.GDI32.dll_CreateFontIndirectA]
mov dword [0x43b3b0], eax
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x15]
mov byte [esp + 0x14], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x43ad68
stosb byte es:[edi], al
call fcn.00405490
test eax, eax
je 0x4225bb
mov ecx, 0x43ad68
call fcn.00405750
test eax, eax
je 0x4225bb
push 0x43b07c
mov ecx, 0x439a00
call fcn.00406610
test eax, eax
je 0x4225bb
mov ecx, 0x439a00
call fcn.00407df0
test eax, eax
je 0x4225bb
mov edi, 0x43ae74
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x439eb6
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x43ad70
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x422530
mov edi, 0x43ad70
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x439db2
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x439c3c
lea eax, [esp + 0x18]
push str._s.ini
push eax
call fcn.00426b7c
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [0x43b3b4]
mov edx, dword [ecx]
call dword [edx + 0x14]
push eax
push str.CodePage
push str.INSTALLED
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [0x439c2c], eax
mov eax, dword [0x43b3b8]
cmp eax, 5
je 0x42259d
cmp eax, 1
je 0x42259d
cmp eax, 2
je 0x42259d
cmp eax, 6
je 0x42259d
mov ecx, 0x4397a8
call fcn.0040e930
test eax, eax
je 0x422833
mov eax, dword [0x43b3b8]
cmp eax, 4
je 0x422705
push 0x43af78
push 0x43a4ce
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x422705
mov ecx, 0x439a00
mov dword [0x43b3b8], 3
call fcn.00407df0
test eax, eax
je 0x422833
mov ecx, 0x4397a8
call fcn.0040eb70
test eax, eax
je 0x422833
mov ecx, 0x4397a8
call fcn.0040ee40
test eax, eax
je 0x422833
mov eax, dword [0x43b3bc]
mov ecx, eax
and ecx, 4
test cl, cl
jne 0x42261a
and eax, 8
test al, al
jne 0x42261a
mov ecx, 0x439a00
call fcn.00408d80
push str.Language.ini
push 0x439fba
lea edx, [esp + 0x1c]
push str._s_s
push edx
call fcn.00426b7c
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
add esp, 0x10
lea eax, [esp + 0x14]
push eax
push 0
push str.CodePage
push str.LANGUAGE
call ebx
mov ebp, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x4226a6
lea ecx, [esp + 0x14]
push 0x104
push ecx
call ebp
mov edi, str.TempLanguage.ini
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x43b3b4]
mov edx, dword [ecx]
call dword [edx + 0x14]
push eax
jmp 0x4226ad
lea eax, [esp + 0x14]
push eax
push 0
push str.CodePage
push str.LANGUAGE
call ebx
lea ecx, [esp + 0x14]
push 0x104
push ecx
mov dword [0x439c2c], eax
call ebp
mov edi, str.TempLanguage.ini
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.00423590
add esp, 4
mov ecx, dword [0x43b3b4]
mov eax, dword [0x439c2c]
push eax
mov edx, dword [ecx]
call dword [edx + 0x10]
push 0xffffffffffffffff
lea ecx, [esp + 0x14]
push 1
push ecx
call fcn.00422b30
mov edi, dword [0x439698]
mov ebp, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov ebx, eax
add esp, 0xc
mov esi, dword [ebx]
cmp edi, esi
je 0x4227ee
mov eax, dword [edi - 0xc]
lea ecx, [edi - 0xc]
test eax, eax
jge 0x422754
lea edx, [edi - 0xc]
cmp edx, dword [0x4350bc]
jne 0x42275b
mov edx, dword [esi - 0xc]
test edx, edx
jge 0x4227ac
mov ebx, dword [esi - 8]
cmp eax, 1
jg 0x422768
cmp ebx, dword [edi - 4]
jle 0x422787
mov ecx, 0x439698
call fcn.00401e30
push ebx
mov ecx, 0x439698
call fcn.00401dd0
test eax, eax
je 0x4227ee
mov edi, dword [0x439698]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x439698]
mov dword [ecx - 8], ebx
mov edx, dword [0x439698]
mov byte [edx + ebx], 0
jmp 0x4227ee
mov eax, dword [0x4350bc]
add edi, 0xfffffff4
cmp edi, eax
je 0x4227dc
push ecx
call ebp
test eax, eax
jg 0x4227d0
mov eax, dword [0x439698]
add eax, 0xfffffff4
push eax
call fcn.00426ac0
add esp, 4
mov ecx, dword [0x4350b8]
mov dword [0x439698], ecx
mov ebx, dword [ebx]
mov dword [0x439698], ebx
add ebx, 0xfffffff4
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x10]
mov ecx, dword [0x4350bc]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x422819
add eax, 0xfffffff4
push eax
call ebp
test eax, eax
jg 0x422819
mov eax, dword [esp + 0x10]
add eax, 0xfffffff4
push eax
call fcn.00426ac0
add esp, 4
mov ecx, 0x439a00
call fcn.00406870
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x25c
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x25c
ret