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

Disassembly:
mov eax, 0x53a8
call fcn.00457d20
mov al, byte [0x493b50]
push ebx
push ebp
push esi
push edi
mov byte [esp + 0x190], al
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x191]
push 0x105
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x194]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [esp + 0x190]
push 0x5c
push edx
call fcn.004584c0
mov byte [eax], 0
mov al, byte [0x493b50]
mov byte [esp + 0x2a0], al
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x2a1]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x198]
lea edx, [esp + 0x2a0]
push ecx
push str._sCCProxy.ini
push edx
call fcn.00457c43
mov al, byte [0x493b50]
mov ecx, 0xff
mov byte [esp + 0x1fc0], al
xor eax, eax
lea edi, [esp + 0x1fc1]
add esp, 0x14
rep stosd dword es:[edi], eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [esp + 0x298]
push ecx
lea edx, [esp + 0x7a8]
push 0x400
push edx
stosw word es:[edi], ax
push 0x493b50
push str.RegCode
push str.System
stosb byte es:[edi], al
call ebx
lea eax, [esp + 0x298]
lea ecx, [esp + 0x3a0]
push eax
push 0x400
push ecx
push 0x493b50
push str.UserName
push str.System
call ebx
mov al, byte [esp + 0x7a4]
test al, al
je 0x44038d
mov al, byte [0x48d1cc]
test al, al
je 0x44038d
mov edi, 0x48d1cc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x7a4]
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
ja 0x44038d
mov al, byte [esp + 0x7a4]
test al, al
je 0x44038d
mov edi, 0x48d1cc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x7a4]
push ecx
push eax
push 0x48d1cc
call fcn.00458090
add esp, 0xc
test eax, eax
jne 0x4402f6
mov edi, 0x48d1cc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, 1
sub edx, ecx
lea edi, [esp + 0x7a4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, 0x48d1cc
add edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push edx
lea eax, [esp + ecx + 0x7a8]
lea ecx, [esp + 0x7a8]
push eax
push ecx
call fcn.00457d50
add esp, 0xc
jmp 0x44026e
mov al, byte [esp + 0x7a4]
test al, al
je 0x44038d
mov edi, 0x48d1cc
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x7a4]
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x7a4]
sub edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, 0x48d1cc
add edx, ecx
mov cl, byte [esi]
mov al, cl
cmp cl, byte [edx]
jne 0x440357
test al, al
je 0x440353
mov cl, byte [esi + 1]
mov al, cl
cmp cl, byte [edx + 1]
jne 0x440357
add esi, 2
add edx, 2
test al, al
jne 0x440333
xor eax, eax
jmp 0x44035c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x44038d
mov edi, 0x48d1cc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edx, [esp + 0x7a4]
sub edx, ecx
lea edi, [esp + 0x7a4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [edx + ecx], al
jmp 0x4402f6
mov al, byte [esp + 0x3a0]
test al, al
je 0x4404f0
mov al, byte [0x48d1cc]
test al, al
je 0x4404f0
mov edi, 0x48d1cc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x3a0]
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
ja 0x4404f0
mov al, byte [esp + 0x3a0]
test al, al
je 0x4404f0
mov edi, 0x48d1cc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x3a0]
push ecx
push eax
push 0x48d1cc
call fcn.00458090
add esp, 0xc
test eax, eax
jne 0x440459
mov edi, 0x48d1cc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, 1
sub edx, ecx
lea edi, [esp + 0x3a0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, 0x48d1cc
add edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push edx
lea eax, [esp + ecx + 0x3a4]
lea ecx, [esp + 0x3a4]
push eax
push ecx
call fcn.00457d50
add esp, 0xc
jmp 0x4403d1
mov al, byte [esp + 0x3a0]
test al, al
je 0x4404f0
mov edi, 0x48d1cc
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x3a0]
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x3a0]
sub edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, 0x48d1cc
add edx, ecx
mov cl, byte [esi]
mov al, cl
cmp cl, byte [edx]
jne 0x4404ba
test al, al
je 0x4404b6
mov cl, byte [esi + 1]
mov al, cl
cmp cl, byte [edx + 1]
jne 0x4404ba
add esi, 2
add edx, 2
test al, al
jne 0x440496
xor eax, eax
jmp 0x4404bf
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4404f0
mov edi, 0x48d1cc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edx, [esp + 0x3a0]
sub edx, ecx
lea edi, [esp + 0x3a0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [edx + ecx], al
jmp 0x440459
lea eax, [esp + 0x3a0]
lea ecx, [esp + 0x7a4]
push eax
push ecx
call fcn.0043e8c0
add esp, 8
mov dword [0x494050], eax
test eax, eax
je 0x440690
cmp byte [esp + 0x3a5], 0x30
jne 0x440690
mov dl, byte [0x493b50]
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x89]
mov byte [esp + 0x88], dl
push 0x104
rep stosd dword es:[edi], eax
lea eax, [esp + 0x8c]
mov byte [esp + 0x3b0], 0
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edi, str.Win.ini
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x88]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x88]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x3a4]
push 0
push ecx
push str.Product
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
lea edx, [esp + 0x14]
mov ebp, eax
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
lea eax, [esp + 0x14]
push 0xffffffffffffffff
push eax
lea ecx, [esp + 0x18]
call fcn.0046864a
push 0
lea ecx, [esp + 0x14]
call fcn.004686f5
mov esi, dword [eax + 0x14]
push 0
lea ecx, [esp + 0x14]
add esi, 0x76c
call fcn.004686f5
mov edi, dword [eax + 0x10]
push 0
lea ecx, [esp + 0x14]
inc edi
call fcn.004686f5
lea edx, [esi + esi*8]
mov ecx, eax
mov ecx, dword [ecx + 0xc]
lea eax, [esi + edx*8]
mov edx, edi
lea eax, [eax + eax*4]
shl edx, 4
add ecx, eax
sub edx, edi
test ebp, ebp
lea edx, [ecx + edx*2]
jne 0x44066c
mov al, byte [0x493b50]
mov ecx, 0xff
mov byte [esp + 0xba8], al
xor eax, eax
lea edi, [esp + 0xba9]
push edx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0xbac]
push 0x48d2ec
push ecx
stosb byte es:[edi], al
call fcn.00457c43
add esp, 0xc
lea edx, [esp + 0x88]
lea eax, [esp + 0xba8]
lea ecx, [esp + 0x3a0]
push edx
push eax
push ecx
push str.Product
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
jmp 0x440690
mov esi, edx
sub esi, ebp
js 0x440686
lea edx, [esp + 0x3aa]
push edx
call fcn.004584b2
add esp, 4
cmp esi, eax
jl 0x440690
mov dword [0x494050], 0
mov al, 0x43
mov edi, 0x48d1cc
mov byte [esp + 0x24], al
mov byte [esp + 0x25], al
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x24]
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
mov byte [esp + 0x26], 0x50
mov byte [esp + 0x27], 0x72
mov byte [esp + 0x28], 0x6f
mov byte [esp + 0x29], 0x78
mov byte [esp + 0x2a], 0x79
mov byte [esp + 0x2b], 0
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov dl, byte [0x493b50]
mov ecx, ebp
and ecx, 3
mov byte [esp + 0x43b4], dl
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x400
lea edi, [esp + 0x43b5]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x89]
mov byte [esp + 0x88], dl
push 0x493f48
rep stosd dword es:[edi], eax
lea eax, [esp + 0xbac]
push 0x400
push eax
push str.English
push 0x48d194
push str.System
call ebx
lea ecx, [esp + 0xba8]
lea edx, [esp + 0x88]
push ecx
push 0x493e40
push str._sLanguage_s.ini
push edx
call fcn.00457c43
mov al, byte [0x493b50]
mov ecx, 0x400
mov byte [esp + 0xfb8], al
xor eax, eax
lea edi, [esp + 0xfb9]
add esp, 0x10
rep stosd dword es:[edi], eax
call fcn.004744d9
mov eax, dword [eax + 8]
mov ebp, dword [sym.imp.USER32.dll_LoadStringA]
lea ecx, [esp + 0xfa8]
push 0x1000
push ecx
push 0x8048
push eax
call ebp
push 0x48d174
lea edx, [esp + 0xfac]
push 0x48d170
push edx
call fcn.004085c0
push 0x48d16c
lea eax, [esp + 0xfb8]
push 0x48d168
push eax
call fcn.004085c0
mov cl, byte [0x493b50]
add esp, 0x18
mov byte [esp + 0x23ac], cl
mov ecx, 0x400
xor eax, eax
lea edi, [esp + 0x23ad]
lea edx, [esp + 0x88]
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0x23b0]
push 0x1000
lea ecx, [esp + 0xfb0]
push eax
lea edx, [esp + 0xfb4]
push ecx
push edx
push str.String
call ebx
mov al, byte [esp + 0x23ac]
test al, al
je 0x44084a
lea edi, [esp + 0x23ac]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xfa8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x48d170
lea ecx, [esp + 0xfac]
push 0x48d174
push ecx
call fcn.004085c0
push 0x48d168
lea edx, [esp + 0xfb8]
push 0x48d16c
push edx
call fcn.004085c0
lea edi, [esp + 0xfc0]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x43b4]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x24]
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]
lea edi, [esp + 0x43b4]
or ecx, 0xffffffff
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
mov dl, byte [0x493b50]
and ecx, 3
mov byte [esp + 0x33b0], dl
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x400
lea edi, [esp + 0x33b1]
rep stosd dword es:[edi], eax
mov eax, dword [0x494050]
test eax, eax
je 0x440ad7
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x89]
mov byte [esp + 0x88], dl
rep stosd dword es:[edi], eax
push 0x493f48
lea eax, [esp + 0xbac]
push 0x400
push eax
push str.English
push 0x48d194
push str.System
call ebx
lea ecx, [esp + 0xba8]
lea edx, [esp + 0x88]
push ecx
push 0x493e40
push str._sLanguage_s.ini
push edx
call fcn.00457c43
mov al, byte [0x493b50]
mov ecx, 0x400
mov byte [esp + 0xfb8], al
xor eax, eax
lea edi, [esp + 0xfb9]
add esp, 0x10
rep stosd dword es:[edi], eax
call fcn.004744d9
mov eax, dword [eax + 8]
lea ecx, [esp + 0xfa8]
push 0x1000
push ecx
push 0x7f
push eax
call ebp
push 0x48d174
lea edx, [esp + 0xfac]
push 0x48d170
push edx
call fcn.004085c0
push 0x48d16c
lea eax, [esp + 0xfb8]
push 0x48d168
push eax
call fcn.004085c0
mov cl, byte [0x493b50]
add esp, 0x18
mov byte [esp + 0x23ac], cl
mov ecx, 0x400
xor eax, eax
lea edi, [esp + 0x23ad]
lea edx, [esp + 0x88]
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0x23b0]
push 0x1000
lea ecx, [esp + 0xfb0]
push eax
lea edx, [esp + 0xfb4]
push ecx
push edx
push str.String
call ebx
mov al, byte [esp + 0x23ac]
test al, al
je 0x440a40
lea edi, [esp + 0x23ac]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xfa8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x48d170
lea ecx, [esp + 0xfac]
push 0x48d174
push ecx
call fcn.004085c0
push 0x48d168
lea edx, [esp + 0xfb8]
push 0x48d16c
push edx
call fcn.004085c0
lea edi, [esp + 0xfc0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x33c8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x33c8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x1fc4]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x3c]
push ecx
push edx
push eax
call fcn.00457c43
add esp, 0x24
call fcn.0046e945
test eax, eax
je 0x440cb8
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x74]
test eax, eax
je 0x440cb8
jmp 0x440ca6
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x89]
mov byte [esp + 0x88], dl
rep stosd dword es:[edi], eax
push 0x493f48
lea eax, [esp + 0xbac]
push 0x400
push eax
push str.English
push 0x48d194
push str.System
call ebx
lea ecx, [esp + 0xba8]
lea edx, [esp + 0x88]
push ecx
push 0x493e40
push str._sLanguage_s.ini
push edx
call fcn.00457c43
mov al, byte [0x493b50]
mov ecx, 0x400
mov byte [esp + 0xfb8], al
xor eax, eax
lea edi, [esp + 0xfb9]
add esp, 0x10
rep stosd dword es:[edi], eax
call fcn.004744d9
mov eax, dword [eax + 8]
lea ecx, [esp + 0xfa8]
push 0x1000
push ecx
push 0x80
push eax
call ebp
push 0x48d174
lea edx, [esp + 0xfac]
push 0x48d170
push edx
call fcn.004085c0
push 0x48d16c
lea eax, [esp + 0xfb8]
push 0x48d168
push eax
call fcn.004085c0
mov cl, byte [0x493b50]
add esp, 0x18
mov byte [esp + 0x23ac], cl
mov ecx, 0x400
xor eax, eax
lea edi, [esp + 0x23ad]
lea edx, [esp + 0x88]
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0x23b0]
push 0x1000
lea ecx, [esp + 0xfb0]
push eax
lea edx, [esp + 0xfb4]
push ecx
push edx
push str.String
call ebx
mov al, byte [esp + 0x23ac]
test al, al
je 0x440c1c
lea edi, [esp + 0x23ac]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xfa8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x48d170
lea ecx, [esp + 0xfac]
push 0x48d174
push ecx
call fcn.004085c0
push 0x48d168
lea edx, [esp + 0xfb8]
push 0x48d16c
push edx
call fcn.004085c0
lea edi, [esp + 0xfc0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x33c8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x33c8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x1fc4]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x3c]
push ecx
push edx
push eax
call fcn.00457c43
add esp, 0x24
call fcn.0046e945
test eax, eax
je 0x440cb8
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x74]
test eax, eax
je 0x440cb8
mov edx, dword [eax + 0x1c]
lea ecx, [esp + 0x1fac]
push ecx
push edx
call dword [sym.imp.USER32.dll_SetWindowTextA]
mov eax, dword [0x494050]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x53a8
ret