Function at 0x47e180
Capabilities:
Check if file exists
Enumerate files on windows
Get file attributes
Identify system language via api
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a4a74
mov eax, dword fs:[0]
push eax
sub esp, 0x2dc
mov eax, dword [0x4c9144]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
xor ebx, ebx
mov dword [ebp - 4], ebx
mov eax, dword [0x4d2da8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x47e1cf
lea eax, [ebx + 2]
jmp 0x47f319
xor esi, esi
mov dword [ebp - 0x2a0], esi
mov dword [ebp - 0x29c], ebx
mov dword [ebp - 0x298], ebx
lea ecx, [ebp - 0x278]
push ecx
mov byte [ebp - 4], 1
call fcn.0041b8b0
lea edx, [ebp - 0x268]
push edx
push 0x20019
push ebx
mov byte [ebp - 4], 2
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
push str.SOFTWAREPatchouMessenger_Plus__Live
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x268], ebx
call edi
cmp eax, ebx
jne 0x47e252
mov esi, dword [ebp - 0x268]
lea eax, [ebp - 0x2a0]
mov dword [ebp - 0x29c], ebx
push eax
lea ebx, [ebp - 0x278]
mov eax, str.DefaultLangFile
mov dword [ebp - 0x2a0], esi
mov byte [0x4d291c], 1
call fcn.0041d070
xor ebx, ebx
lea ecx, [ebp - 0x268]
push ecx
push 0x20019
push ebx
push str.SOFTWAREPatchouMessenger_Plus__Live
push SysReAllocString
mov dword [ebp - 0x268], ebx
call edi
cmp eax, ebx
jne 0x47e304
xor eax, eax
cmp esi, ebx
je 0x47e286
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x268]
mov dword [ebp - 0x2a0], esi
mov dword [ebp - 0x29c], ebx
cmp eax, ebx
jne 0x47e304
lea edx, [ebp - 0x268]
push edx
call fcn.0041b8b0
lea eax, [ebp - 0x2a0]
push eax
lea ebx, [ebp - 0x268]
mov eax, str.LanguageFile
mov byte [ebp - 4], 3
call fcn.0041d070
mov ecx, dword [ebp - 0x268]
cmp dword [ecx - 0xc], 0
je 0x47e2dc
mov eax, ebx
lea edi, [ebp - 0x278]
call fcn.00417620
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47e302
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor ebx, ebx
mov byte [ebp - 0x27c], bl
mov ecx, dword [ebp - 0x27c]
push ecx
push ebx
lea ecx, [ebp - 0x2a4]
mov byte [ebp - 0x281], bl
mov dword [ebp - 0x2a8], ebx
call fcn.0041c410
lea edx, [ebp - 0x2a8]
mov byte [ebp - 4], 4
mov eax, dword [0x4d2910]
push edx
mov dword [ebp - 0x268], ebx
push str.Files
lea ebx, [ebp - 0x268]
mov edx, str.File_Languages
call fcn.0041dae0
test al, al
je 0x47e402
mov ebx, dword [ebp - 0x268]
test ebx, ebx
je 0x47e402
lea eax, [ebp - 0x268]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 5
mov ecx, dword [0x4d2da8]
push ecx
push str._sLanguages.dat
lea edi, [ebp - 0x268]
call fcn.00417250
mov edx, dword [ebp - 0x2a8]
mov edi, dword [ebp - 0x268]
add esp, 8
push ebx
push edx
call fcn.004179d0
add esp, 8
test al, al
je 0x47e3d2
mov eax, dword [0x4d2da8]
mov ecx, dword [ebp - 0x268]
push 0
push eax
push ecx
xor edx, edx
mov ecx, str..ini
call fcn.0041c550
add esp, 0xc
mov bl, 1
test al, al
jne 0x47e3d8
mov bl, byte [ebp - 0x281]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47e3fe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x47e475
mov byte [ebp - 4], 2
mov edi, dword [ebp - 0x2a4]
test edi, edi
je 0x47e43a
lea ecx, [edi + 4]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x47e43a
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
lea eax, [edi + 8]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x47e43a
mov edx, dword [edi]
mov eax, dword [edx + 8]
mov ecx, edi
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x278]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e460
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x47e46b
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 5
jmp 0x47f319
lea ecx, [ebp - 0x294]
push ecx
call fcn.0041b8b0
mov byte [ebp - 4], 6
mov edx, dword [0x4d2da8]
push edx
push str._sLng_.ini
lea edi, [ebp - 0x294]
call fcn.00417250
add esp, 8
push 0x250
lea eax, [ebp - 0x264]
push 0
push eax
call fcn.0048bb40
mov edx, dword [ebp - 0x294]
add esp, 0xc
lea ecx, [ebp - 0x264]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x47e802
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ebx, [ebx]
lea eax, [ebp - 0x268]
push eax
call fcn.0041b8b0
lea ecx, [ebp - 0x238]
mov byte [ebp - 4], 7
mov edx, dword [0x4d2da8]
push ecx
push edx
push 0x4ab8d0
lea edi, [ebp - 0x268]
call fcn.00417250
add esp, 0xc
lea eax, [ebp - 0x270]
push eax
call fcn.0041b8b0
lea ecx, [ebp - 0x274]
push ecx
mov byte [ebp - 4], 8
call fcn.0041b8b0
lea edx, [ebp - 0x280]
push edx
mov byte [ebp - 4], 9
call fcn.0041b8b0
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x270]
mov eax, dword [edx - 8]
mov edi, dword [ebp - 0x268]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x100
or eax, ecx
jge 0x47e577
mov eax, 0x100
lea ecx, [ebp - 0x270]
call fcn.00417470
mov edx, dword [ebp - 0x270]
push edi
push 0x100
push edx
push 0x4ab684
push str.LanguageNameEng
push str.FileInfo
call ebx
mov eax, dword [ebp - 0x270]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
test eax, eax
js 0x47e906
mov ecx, dword [ebp - 0x270]
cmp eax, dword [ecx - 8]
jg 0x47e906
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x270]
xor ecx, ecx
mov word [edx + eax*2], cx
mov edx, dword [ebp - 0x274]
mov eax, dword [edx - 8]
mov edi, dword [ebp - 0x268]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x100
or eax, ecx
jge 0x47e5fe
mov eax, 0x100
lea ecx, [ebp - 0x274]
call fcn.00417470
mov edx, dword [ebp - 0x274]
push edi
push 0x100
push edx
push 0x4ab684
push str.LanguageNameLocal
push str.FileInfo
call ebx
mov eax, dword [ebp - 0x274]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
test eax, eax
js 0x47e906
mov ecx, dword [ebp - 0x274]
cmp eax, dword [ecx - 8]
jg 0x47e906
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x274]
xor ecx, ecx
mov word [edx + eax*2], cx
mov ecx, dword [ebp - 0x274]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x47e66a
push 0x80004005
call fcn.00417580
mov edi, dword [ebp - 0x270]
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x47e698
test dx, dx
je 0x47e694
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x47e698
add eax, 4
add ecx, 4
test dx, dx
jne 0x47e672
xor eax, eax
jmp 0x47e69d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
je 0x47e6bc
push edi
push 0x4b19f8
lea edi, [ebp - 0x280]
call fcn.00417250
add esp, 8
jmp 0x47e6cd
lea eax, [ebp - 0x270]
lea edi, [ebp - 0x280]
call fcn.00417620
mov eax, dword [ebp - 0x268]
push eax
push 0
push str.CompatibilityLevel
push str.FileInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
cmp eax, 0x44d
jb 0x47e74d
mov ecx, dword [ebp - 0x280]
cmp dword [ecx - 0xc], 0
je 0x47e74d
lea edx, [ebp - 0x28c]
push edx
lea ecx, [ebp - 0x238]
call fcn.0041be20
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 0xb
call fcn.00480060
mov edi, eax
lea eax, [ebp - 0x280]
call fcn.00417620
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x28c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e74d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x280]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e773
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x274]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e799
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x270]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e7bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e7e5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x264]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x47e4e0
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
lea edx, [ebp - 0x290]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 0xc
mov eax, dword [0x4d2da8]
push eax
push str._sLng_Default.ini
lea edi, [ebp - 0x290]
call fcn.00417250
mov ecx, dword [ebp - 0x290]
add esp, 8
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x47e910
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x290]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47e867
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x294]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e88d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov edi, dword [ebp - 0x2a4]
test edi, edi
je 0x47e8c5
lea ecx, [edi + 4]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x47e8c5
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
lea eax, [edi + 8]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x47e8c5
mov edx, dword [edi]
mov eax, dword [edx + 8]
mov ecx, edi
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x278]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47e8eb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x2a0]
test eax, eax
je 0x47e8fc
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 6
jmp 0x47f319
push 0x80070057
call fcn.00417580
lea ecx, [ebp - 0x26c]
push ecx
call fcn.0041b8b0
mov byte [ebp - 4], 0xd
mov edx, dword [ebp - 0x278]
cmp dword [edx - 0xc], 0
jne 0x47eeb0
mov edi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
call edi
mov ecx, 0x3ff
and ax, cx
movzx esi, ax
call edi
shr ax, 0xa
movzx ecx, ax
lea eax, [esi - 1]
cmp eax, 0x24
ja case.0x47e95f.2
movzx edx, byte [eax + 0x47f390]
jmp dword [edx*4 + 0x47f338]
lea eax, [ebp - 0x28c]
push eax
mov ecx, 0x4b1a28
call fcn.0041be20
lea eax, [ebp - 0x28c]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0xe
call fcn.00417620
lea eax, [ebp - 0x28c]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x268]
push ecx
mov ecx, 0x4b1a30
call fcn.0041be20
lea eax, [ebp - 0x268]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0xf
call fcn.00417620
lea eax, [ebp - 0x268]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
cmp ecx, 2
jne 0x47ea19
lea edx, [ebp - 0x280]
push edx
mov ecx, str.zh_cn
call fcn.0041be20
lea eax, [ebp - 0x280]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x10
call fcn.00417620
lea eax, [ebp - 0x280]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea eax, [ebp - 0x274]
push eax
mov ecx, str.zh_tw
call fcn.0041be20
lea eax, [ebp - 0x274]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x11
call fcn.00417620
lea eax, [ebp - 0x274]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x270]
push ecx
mov ecx, 0x4b1a50
call fcn.0041be20
lea eax, [ebp - 0x270]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x12
call fcn.00417620
lea eax, [ebp - 0x270]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea edx, [ebp - 0x2e8]
push edx
mov ecx, 0x4b1a58
call fcn.0041be20
lea eax, [ebp - 0x2e8]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x13
call fcn.00417620
lea eax, [ebp - 0x2e8]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea eax, [ebp - 0x2c8]
push eax
mov ecx, 0x4b1a60
call fcn.0041be20
lea eax, [ebp - 0x2c8]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x14
call fcn.00417620
lea eax, [ebp - 0x2c8]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x2d0]
push ecx
mov ecx, 0x4b1a68
call fcn.0041be20
lea eax, [ebp - 0x2d0]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x15
call fcn.00417620
lea eax, [ebp - 0x2d0]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea edx, [ebp - 0x2d8]
push edx
mov ecx, 0x4b1a70
call fcn.0041be20
lea eax, [ebp - 0x2d8]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x16
call fcn.00417620
lea eax, [ebp - 0x2d8]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea eax, [ebp - 0x2e0]
push eax
mov ecx, 0x4b1a78
call fcn.0041be20
lea eax, [ebp - 0x2e0]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x17
call fcn.00417620
lea eax, [ebp - 0x2e0]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x2ac]
push ecx
mov ecx, 0x4b1a80
call fcn.0041be20
lea eax, [ebp - 0x2ac]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x18
call fcn.00417620
lea eax, [ebp - 0x2ac]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea edx, [ebp - 0x2b4]
push edx
mov ecx, 0x4b1a88
call fcn.0041be20
lea eax, [ebp - 0x2b4]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x19
call fcn.00417620
lea eax, [ebp - 0x2b4]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea eax, [ebp - 0x2dc]
push eax
mov ecx, 0x4b1a90
call fcn.0041be20
lea eax, [ebp - 0x2dc]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x1a
call fcn.00417620
lea eax, [ebp - 0x2dc]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x2bc]
push ecx
mov ecx, 0x4b1a98
call fcn.0041be20
lea eax, [ebp - 0x2bc]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x1b
call fcn.00417620
lea eax, [ebp - 0x2bc]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea edx, [ebp - 0x2d4]
push edx
mov ecx, 0x4b1aa0
call fcn.0041be20
lea eax, [ebp - 0x2d4]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x1c
call fcn.00417620
lea eax, [ebp - 0x2d4]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea eax, [ebp - 0x2c4]
push eax
mov ecx, 0x4b1aa8
call fcn.0041be20
lea eax, [ebp - 0x2c4]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x1d
call fcn.00417620
lea eax, [ebp - 0x2c4]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x2e4]
push ecx
mov ecx, 0x4b1ab0
call fcn.0041be20
lea eax, [ebp - 0x2e4]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x1e
call fcn.00417620
lea eax, [ebp - 0x2e4]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea edx, [ebp - 0x2cc]
push edx
mov ecx, 0x4b1ab8
call fcn.0041be20
lea eax, [ebp - 0x2cc]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x1f
call fcn.00417620
lea eax, [ebp - 0x2cc]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea eax, [ebp - 0x2b0]
push eax
mov ecx, 0x4b1ac0
call fcn.0041be20
lea eax, [ebp - 0x2b0]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x20
call fcn.00417620
lea eax, [ebp - 0x2b0]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x2b8]
push ecx
mov ecx, 0x4b1ac8
call fcn.0041be20
lea eax, [ebp - 0x2b8]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x21
call fcn.00417620
lea eax, [ebp - 0x2b8]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea edx, [ebp - 0x2c0]
push edx
mov ecx, 0x4b1ad0
call fcn.0041be20
lea eax, [ebp - 0x2c0]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x22
call fcn.00417620
lea eax, [ebp - 0x2c0]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea eax, [ebp - 0x288]
push eax
mov ecx, 0x4b1ad8
call fcn.0041be20
lea eax, [ebp - 0x288]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x23
call fcn.00417620
lea eax, [ebp - 0x288]
mov byte [ebp - 4], 0xd
call fcn.0041b950
jmp 0x47eeb0
lea ecx, [ebp - 0x27c]
push ecx
mov ecx, 0x4b1ae0
call fcn.0041be20
lea eax, [ebp - 0x27c]
lea edi, [ebp - 0x26c]
mov byte [ebp - 4], 0x24
call fcn.00417620
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x27c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47eeb0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [0x4d2d9c]
mov esi, dword [eax]
mov dword [ebp - 0x27c], esi
mov dword [ebp - 0x288], eax
cmp esi, dword [ebp - 0x288]
je 0x47eeec
mov ecx, dword [ebp - 0x278]
cmp dword [ecx - 0xc], 0
je 0x47ef44
mov eax, dword [esi + 0xc]
push ecx
push eax
call fcn.00489d2d
add esp, 8
test eax, eax
jne 0x47f0e6
mov ecx, dword [ebp - 0x278]
cmp dword [ecx - 0xc], 0
je 0x47f0fc
cmp esi, dword [ebp - 0x288]
je 0x47f0fc
lea eax, [ebp - 0x278]
mov edi, 0x4d2db0
call fcn.00417620
push 0x1c
call fcn.004881ae
mov edi, eax
add esp, 4
mov dword [ebp - 0x27c], edi
mov byte [ebp - 4], 0x2a
test edi, edi
je 0x47f217
mov edx, dword [0x4d2db0]
push 1
push edx
jmp 0x47f1f4
lea ecx, [ebp - 0x268]
push ecx
call fcn.0041b8b0
mov byte [ebp - 4], 0x25
mov eax, dword [esi + 0xc]
mov edx, dword [0x4d2da8]
push eax
push edx
push 0x4ab8d0
lea edi, [ebp - 0x268]
call fcn.00417250
add esp, 0xc
lea eax, [ebp - 0x270]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x26
mov edx, dword [ebp - 0x270]
mov eax, dword [edx - 8]
mov edi, dword [ebp - 0x268]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x40
or eax, ecx
jge 0x47efb6
mov eax, 0x40
lea ecx, [ebp - 0x270]
call fcn.00417470
mov edx, dword [ebp - 0x270]
push edi
push 0x40
push edx
push 0x4ab684
push str.LanguageId
push str.FileInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov eax, dword [ebp - 0x270]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
test eax, eax
js 0x47e906
mov ecx, dword [ebp - 0x270]
cmp eax, dword [ecx - 8]
jg 0x47e906
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x270]
xor ecx, ecx
mov word [edx + eax*2], cx
mov ecx, dword [ebp - 0x26c]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x47f023
push 0x80004005
call fcn.00417580
mov eax, dword [ebp - 0x270]
push ecx
push eax
call fcn.00489d2d
add esp, 8
test eax, eax
jne 0x47f09a
lea eax, [esi + 0xc]
lea edi, [ebp - 0x278]
call fcn.00417620
mov byte [ebp - 4], 0x25
mov eax, dword [ebp - 0x270]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47f06b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47eeec
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x47eeec
mov byte [ebp - 4], 0x25
mov eax, dword [ebp - 0x270]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47f0c0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47f0e6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x27c]
call fcn.00475240
mov esi, dword [ebp - 0x27c]
jmp 0x47eec3
mov eax, dword [0x4c9034]
mov edx, dword [eax + 0xc]
mov ecx, 0x4c9034
call edx
lea ebx, [eax + 0x10]
mov dword [ebp - 0x268], ebx
mov eax, 0x4b1b00
mov byte [ebp - 4], 0x27
test eax, 0xffff0000
jne 0x47f142
mov ecx, eax
movzx edi, cx
call fcn.0041bbd0
test eax, eax
je 0x47f15e
push eax
mov eax, edi
lea edi, [ebp - 0x268]
call fcn.0041bd80
jmp 0x47f158
push 0x4b1b00
lea edx, [ebp - 0x268]
push edx
mov ebx, 0xf
call fcn.004174d0
mov ebx, dword [ebp - 0x268]
mov byte [ebp - 4], 0x28
mov edi, dword [0x4d2db0]
lea esi, [ebx - 0x10]
add edi, 0xfffffff0
cmp esi, edi
je 0x47f1b9
cmp dword [edi + 0xc], 0
jl 0x47f1ab
mov eax, dword [esi]
cmp eax, dword [edi]
jne 0x47f1ab
mov eax, esi
call fcn.004175b0
mov ebx, eax
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x47f1a0
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
add ebx, 0x10
mov dword [0x4d2db0], ebx
jmp 0x47f1b9
push ebx
mov ebx, dword [ebx - 0xc]
push 0x4d2db0
call fcn.004174d0
mov byte [ebp - 4], 0xd
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47f1d6
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
push 0x1c
call fcn.004881ae
mov edi, eax
add esp, 4
mov dword [ebp - 0x27c], edi
mov byte [ebp - 4], 0x29
test edi, edi
je 0x47f217
push 0
push 0
mov eax, dword [0x4d2da8]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x288], esp
mov esi, esp
call fcn.004175b0
add eax, 0x10
push edi
mov dword [esi], eax
call fcn.0041ae40
jmp 0x47f219
xor eax, eax
xor ecx, ecx
test eax, eax
sete cl
mov dword [0x4d2918], eax
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0x26c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
lea edi, [ecx + ecx + 1]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47f24f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x290]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47f275
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x294]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47f29b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov esi, dword [ebp - 0x2a4]
test esi, esi
je 0x47f2d3
lea ecx, [esi + 4]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x47f2d3
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
lea eax, [esi + 8]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x47f2d3
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x278]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47f2f9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x2a0]
test eax, eax
je 0x47f30a
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x47f319
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00487efe
mov esp, ebp
pop ebp
ret