Function at 0x473cd0
Capabilities:
Identify system language via api
Read .ini file
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a3272
mov eax, dword fs:[0]
push eax
sub esp, 0x1a4
mov eax, dword [0x4e24e0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea esi, [ebp - 0x194]
call fcn.004016d0
xor ebx, ebx
mov edi, 0x4eae14
mov dword [ebp - 4], ebx
call fcn.00411540
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x194]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x473d41
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, 0x4b0040
lea ecx, [ebp - 0x48]
call fcn.0048ccf0
mov dword [ebp - 4], 1
mov eax, dword [ebp - 0x44]
mov edi, 8
cmp dword [ebp - 0x30], edi
jae 0x473d65
lea eax, [ebp - 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
call fcn.00473a80
test eax, eax
jne 0x473da4
cmp dword [ebp - 0x30], edi
jb 0x473d86
mov ecx, dword [ebp - 0x44]
push ecx
call fcn.0044556f
add esp, 4
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0044557a
mov esp, ebp
pop ebp
ret
push 0x4b0060
call fcn.00473870
push 0x4b008c
lea edx, [ebp - 0x1a0]
push 0x4eae14
push edx
call fcn.0040f510
add esp, 0xc
mov byte [ebp - 4], 2
mov edx, dword [0x4eae20]
mov eax, dword [edx - 8]
mov esi, dword [ebp - 0x1a0]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x40
or eax, ecx
jge 0x473dfe
mov ecx, 0x40
mov eax, 0x4eae20
call fcn.00411430
mov edx, dword [0x4eae20]
push esi
push 0x40
push edx
push 0x4b00a4
push 0x4b00ac
push 0x4b00c0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov eax, dword [0x4eae20]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.0044600f
add esp, 8
cmp eax, ebx
jl 0x474411
mov ecx, dword [0x4eae20]
cmp eax, dword [ecx - 8]
jg 0x474411
mov dword [ecx - 0xc], eax
mov edx, dword [0x4eae20]
xor ecx, ecx
mov word [edx + eax*2], cx
mov dword [ebp - 0x184], ebx
mov byte [ebp - 4], 3
push 0x4b00c8
mov dword [ebp - 0x18c], ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, ebx
je 0x473e80
push str.DllGetClassObject
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x18c], eax
lea eax, [ebp - 0x184]
mov dword [ebp - 0x188], eax
mov eax, dword [ebp - 0x184]
cmp eax, ebx
je 0x473e9e
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
push ebx
lea eax, [ebp - 0x184]
push eax
push 0x4cd3e8
lea ecx, [ebp - 0x18c]
push ecx
mov edx, 0x4cd994
mov dword [ebp - 0x184], ebx
call fcn.0041c0b0
cmp dword [ebp - 0x184], ebx
je 0x47433b
push str.CommonXMLCommonResource.xml
lea ecx, [ebp - 0x48]
lea esi, [ebp - 0x64]
call fcn.0040a3a0
add esp, 4
mov bl, 4
mov byte [ebp - 4], bl
cmp dword [ebp - 0x4c], edi
mov edi, dword [ebp - 0x60]
jae 0x473ef1
lea edi, [ebp - 0x60]
push ecx
mov edx, esp
mov dword [ebp - 0x188], esp
push edx
call fcn.0040e870
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x184]
test ecx, ecx
jne 0x473f18
push 0x80004003
call fcn.00441d80
mov byte [ebp - 4], bl
call fcn.00427580
mov eax, dword [0x4eae28]
test eax, eax
jne 0x473f33
push 0x80004003
call fcn.00441d80
mov edx, dword [ebp - 0x184]
mov ecx, dword [eax]
push edx
push 0
push eax
mov eax, dword [ecx + 0x34]
call eax
mov edi, dword [0x4eae20]
push ecx
mov ecx, esp
mov dword [ebp - 0x188], esp
push ecx
call fcn.0040e870
mov byte [ebp - 4], 6
cmp dword [0x4eae28], 0
jne 0x473f70
push 0x80004003
call fcn.00441d80
mov byte [ebp - 4], bl
mov ecx, dword [0x4eae28]
call fcn.0042dd90
push ecx
mov edx, esp
mov dword [ebp - 0x188], esp
push edx
mov edi, 0x4b0118
call fcn.0040e870
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x184]
test ecx, ecx
jne 0x473faa
push 0x80004003
call fcn.00441d80
lea edx, [ebp - 0x1ac]
mov byte [ebp - 4], bl
call fcn.004157a0
mov byte [ebp - 4], 8
mov eax, dword [eax]
test eax, eax
je 0x473fc6
mov edx, dword [eax]
jmp 0x473fc8
xor edx, edx
xor eax, eax
mov word [ebp - 0x28], ax
mov eax, edx
mov dword [ebp - 0x14], 7
mov dword [ebp - 0x18], 0
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x473fe1
sub eax, esi
sar eax, 1
push eax
push edx
lea esi, [ebp - 0x2c]
call fcn.00403020
lea edi, [ebp - 0x1ac]
mov byte [ebp - 4], 0xa
call fcn.0040e820
cmp dword [ebp - 0x14], 8
mov eax, dword [ebp - 0x28]
jae 0x474015
lea eax, [ebp - 0x28]
push 0x4b0128
push eax
call fcn.004479b4
add esp, 8
test eax, eax
je 0x474072
push ecx
mov ecx, esp
mov dword [ebp - 0x188], esp
push ecx
mov edi, 0x4b0130
call fcn.0040e870
mov byte [ebp - 4], 0xb
cmp dword [0x4eae28], 0
jne 0x474052
push 0x80004003
call fcn.00441d80
mov byte [ebp - 4], 0xa
mov ecx, dword [0x4eae28]
call fcn.0042dd90
push 2
push 0x4b0138
push 0x4eae20
call fcn.004114a0
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movzx eax, ax
mov edx, 0x419
cmp dx, ax
jne 0x4740aa
push 0x4eae20
mov ecx, 0x4b0140
call fcn.00413810
add esp, 4
test al, al
je 0x4740aa
call fcn.004739a0
mov byte [0x4eae2c], al
jmp 0x4742fc
push ecx
mov eax, esp
mov dword [ebp - 0x188], esp
push eax
mov edi, str.autolinebreak
call fcn.0040e870
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0x184]
test ecx, ecx
jne 0x4740d6
push 0x80004003
call fcn.00441d80
lea edx, [ebp - 0x1a8]
mov byte [ebp - 4], 0xa
call fcn.004157a0
mov byte [ebp - 4], 0xd
mov eax, dword [eax]
test eax, eax
je 0x4740f3
mov eax, dword [eax]
jmp 0x4740f5
xor eax, eax
lea ecx, [ebp - 0x190]
push ecx
mov ecx, eax
call fcn.00411220
mov bl, 0xf
lea edi, [ebp - 0x1a8]
mov byte [ebp - 4], bl
call fcn.0040e820
mov ecx, dword [ebp - 0x190]
cmp dword [ecx - 0xc], 0
jl 0x474140
push 0x4b0164
push ecx
call fcn.00446ee4
mov ecx, dword [ebp - 0x190]
add esp, 8
test eax, eax
je 0x474140
sub eax, ecx
sar eax, 1
cmp eax, 0xffffffff
jne 0x474165
push 0x4b0168
push ecx
call fcn.004479b4
add esp, 8
test eax, eax
jne 0x4742d6
call fcn.004739a0
mov byte [0x4eae2c], al
jmp 0x4742d6
lea ecx, [eax + 1]
lea esi, [ebp - 0x1a4]
lea edx, [ebp - 0x190]
call fcn.0040d7c0
mov byte [ebp - 4], 0x10
mov edi, dword [ebp - 0x1a4]
cmp dword [edi - 0xc], 0
jl 0x4742b7
push 0x4b0170
push edi
call fcn.00446ee4
add esp, 8
test eax, eax
je 0x4742b7
sub eax, edi
sar eax, 1
cmp eax, 0xffffffff
je 0x4742b7
lea ecx, [eax + 1]
lea esi, [ebp - 0x19c]
lea edx, [ebp - 0x1a4]
call fcn.0040d7c0
lea edx, [ebp - 0x194]
push edx
push 0x4b0174
lea eax, [ebp - 0x188]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x11
push ecx
mov dword [ebp - 0x194], 0
call fcn.0040e6f0
mov eax, dword [eax]
push eax
call fcn.0044ae80
add esp, 4
lea ecx, [ebp - 0x188]
mov esi, eax
call fcn.00402430
lea edx, [ebp - 0x194]
push edx
push 0x4b0178
lea eax, [ebp - 0x198]
push eax
lea ecx, [ebp - 0x19c]
push ecx
call fcn.0040e6f0
push 0x110
lea edx, [ebp - 0x17c]
push 0
push edx
mov byte [ebp - 4], 0x12
call fcn.0044b7d0
add esp, 0xc
lea eax, [ebp - 0x180]
push eax
mov dword [ebp - 0x180], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp esi, dword [ebp - 0x17c]
jne 0x4742a1
lea esi, [ebp - 0x198]
call fcn.0042dc80
test al, al
je 0x474273
call fcn.004739a0
jmp 0x47429c
mov ecx, dword [ebp - 0x198]
push ecx
call fcn.0044ae80
add esp, 4
cmp eax, dword [ebp - 0x178]
jne 0x47429a
call fcn.004739a0
test al, al
je 0x47429a
mov eax, 1
jmp 0x47429c
xor eax, eax
mov byte [0x4eae2c], al
lea ecx, [ebp - 0x198]
call fcn.00402430
lea ecx, [ebp - 0x19c]
call fcn.00402430
lea eax, [edi - 0x10]
mov byte [ebp - 4], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4742d6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x190]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4742fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, 8
cmp dword [ebp - 0x14], esi
jb 0x474312
mov ecx, dword [ebp - 0x28]
push ecx
call fcn.0044556f
add esp, 4
xor edx, edx
mov byte [ebp - 4], 3
mov dword [ebp - 0x14], 7
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], dx
cmp dword [ebp - 0x4c], esi
jb 0x47433b
mov eax, dword [ebp - 0x60]
push eax
call fcn.0044556f
add esp, 4
mov ecx, 0x4b0180
lea edi, [ebp - 0x64]
call fcn.0048cd90
mov bl, 0x13
mov esi, 8
mov byte [ebp - 4], bl
cmp dword [eax + 0x18], esi
jb 0x47435c
mov eax, dword [eax + 4]
jmp 0x47435f
add eax, 4
mov ecx, dword [0x4eae20]
push ecx
push eax
lea edx, [ebp - 0x188]
push edx
call fcn.00475e80
add esp, 0xc
mov edi, 0x4eae1c
mov byte [ebp - 4], 0x14
call fcn.00411540
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x188]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4743a9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x4c], esi
jb 0x4743ba
mov ecx, dword [ebp - 0x60]
push ecx
call fcn.0044556f
add esp, 4
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x184]
test eax, eax
je 0x4743d0
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x1a0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4743f6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x30], esi
jb 0x474407
mov ecx, dword [ebp - 0x44]
push ecx
call fcn.0044556f
add esp, 4
mov eax, 1
jmp 0x473d88
push 0x80070057
call fcn.00411620
int3