Function at 0x419544
Capabilities:
Create directory
Get common file path
Get system information on windows
Read .ini file

Disassembly:
push 0x28c
mov eax, 0x46705e
call fcn.00463b54
and dword [ebp - 0x258], 0
lea eax, [ebp - 0x258]
push eax
push str.LoadConfig
lea ecx, [ebp - 0x270]
call fcn.0041bb53
and dword [ebp - 4], 0
call fcn.004068d0
push eax
lea ecx, [ebp - 0x248]
call fcn.00405f99
mov byte [ebp - 4], 2
xor ebx, ebx
push 0x48be18
mov dword [0x48be18], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x4195c2
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Cannot_query_version_info__gle_u
mov dword [ebp - 0x258], eax
call fcn.0041b909
pop ecx
jmp 0x41a209
push 0x48bf34
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
cmp word [0x48bf34], bx
jne 0x419633
lea ecx, [ebp - 0x298]
call fcn.00432816
mov byte [ebp - 4], 3
cmp dword [ebp - 0x288], 0
je 0x419624
lea eax, [ebp - 0x250]
push eax
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [ebp - 0x288]
test eax, eax
je 0x419624
mov eax, 0xaa64
cmp word [ebp - 0x250], ax
jne 0x419624
push 0xc
pop eax
mov word [0x48bf34], ax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x298]
call fcn.004327d5
xor eax, eax
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
jne 0x419667
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x258], eax
jmp 0x41a20a
push 0x47aca0
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.004546cc
add esp, 0xc
lea ecx, [ebp - 0x21c]
call fcn.004082a0
push eax
lea eax, [ebp - 0x21c]
mov edi, 0x48bcec
push eax
mov ecx, edi
call fcn.00408222
mov esi, str.drivers_
mov ecx, esi
call fcn.004082a0
push eax
push esi
mov ecx, edi
call fcn.00409578
lea ecx, [ebp - 0x21c]
call fcn.004082a0
cmp dword [0x48bf5c], 0
push eax
lea eax, [ebp - 0x21c]
push eax
je 0x41973a
mov ecx, 0x48bce8
call fcn.00408222
xor eax, eax
mov edi, 0x104
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push edi
push eax
call dword [0x48bf58]
test eax, eax
je 0x419656
push 0x47aca0
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.004546cc
add esp, 0xc
lea ecx, [ebp - 0x21c]
call fcn.004082a0
push eax
lea eax, [ebp - 0x21c]
mov ecx, 0x48bce4
push eax
call fcn.00408222
jmp 0x419749
mov ecx, 0x48bce4
call fcn.00408222
mov edi, 0x104
xor eax, eax
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push edi
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x240]
push eax
push 0
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
test eax, eax
je 0x4197a3
mov eax, dword [ebp - 0x23c]
add eax, dword [ebp - 0x22c]
mov ecx, dword [ebp - 0x238]
adc ecx, dword [ebp - 0x228]
mov dword [0x48bf80], eax
mov dword [0x48bf84], ecx
mov edx, 0x48bd6c
lea ecx, [ebp - 0x21c]
call fcn.0041f38b
lea ecx, [ebp - 0x21c]
call fcn.004082a0
push eax
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x248]
call fcn.00408222
push 0x5c
pop esi
push esi
push 0x2f
lea ecx, [ebp - 0x248]
call fcn.004075aa
push esi
push dword [ebp - 0x248]
call fcn.00441d1b
mov esi, 0x48bc9c
pop ecx
pop ecx
test eax, eax
je 0x419852
sub eax, dword [ebp - 0x248]
sar eax, 1
cmp eax, 0xffffffff
je 0x419852
inc eax
lea ecx, [ebp - 0x248]
push eax
lea eax, [ebp - 0x24c]
push eax
call fcn.00409467
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x248]
push eax
call fcn.0040764f
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x24c]
lea ecx, [ecx - 0x10]
call fcn.00406985
mov eax, dword [0x48bc9c]
lea ecx, [ebp - 0x248]
push dword [eax - 0xc]
push eax
call fcn.00409578
jmp 0x41985e
push esi
lea ecx, [ebp - 0x248]
call fcn.0040764f
push dword [ebp - 0x248]
xor eax, eax
push edi
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push eax
push 0x478010
push str.Registry
push str.Product
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x48bd7c
mov edx, 0x48bd78
lea ecx, [ebp - 0x21c]
call fcn.0041e780
pop ecx
call fcn.00406ab6
test eax, eax
je 0x4198c1
push dword [ebp - 0x258]
push str.Unable_to_load_product_config__gle_u
call fcn.0041b909
pop ecx
pop ecx
jmp 0x419904
push dword [0x48bdc8]
push str.Current_version:__d
call fcn.0041b909
push dword [0x48bdcc]
push str.Current_update_version:__d
call fcn.0041b909
push dword [0x48bd9c]
push str.Guid:__s
call fcn.0041b909
push dword [0x48bdc0]
push str.Midex:__s
call fcn.0041b909
add esp, 0x20
push esi
mov edx, 0x48bd88
lea ecx, [ebp - 0x24c]
call fcn.0041853b
pop ecx
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x248]
push eax
call fcn.0040764f
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x24c]
lea ecx, [ecx - 0x10]
call fcn.00406985
mov esi, dword [ebp - 0x248]
cmp dword [esi - 0xc], 0
je 0x419f4b
mov ecx, esi
call fcn.0041d1a9
test al, al
je 0x419f45
push 0x10002
call fcn.00445d23
mov ebx, eax
mov dword [ebp - 0x254], ebx
pop ecx
test ebx, ebx
jne 0x41997d
mov dword [ebp - 0x258], 8
jmp 0x41a20a
push dword [ebp - 0x248]
xor eax, eax
push 0x7fff
push ebx
push str.Config
mov dword [ebx + 0xfffe], eax
mov dword [ebx], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
push ebx
lea ecx, [ebp - 0x250]
mov dword [ebp - 0x24c], ebx
call fcn.0040769d
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x250]
cmp dword [eax - 0xc], 0
je 0x419f33
call fcn.004068d0
push eax
lea ecx, [ebp - 0x24c]
call fcn.00405f99
mov byte [ebp - 4], 0xa
call fcn.004068d0
push eax
lea ecx, [ebp - 0x244]
call fcn.00405f99
push 0xc
pop eax
mov byte [ebp - 4], al
lea ecx, [ebp - 0x250]
mov eax, dword [ebp - 0x250]
mov eax, dword [eax - 0xc]
lea ebx, [ebx + eax*2]
add ebx, 2
call fcn.004185e2
mov ecx, eax
call fcn.0040751e
push 0
push 0x3d
lea ecx, [ebp - 0x250]
call fcn.0041a239
mov esi, eax
cmp esi, 0xffffffff
jne 0x419a4b
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x24c]
lea ecx, [ecx - 0x10]
jmp 0x419ef9
push esi
lea eax, [ebp - 0x25c]
push eax
lea ecx, [ebp - 0x250]
call fcn.00409467
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x24c]
push eax
call fcn.0040764f
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x25c]
lea ecx, [ecx - 0x10]
call fcn.00406985
lea ecx, [ebp - 0x24c]
call fcn.004185e2
lea eax, [esi + 1]
push eax
lea eax, [ebp - 0x260]
push eax
lea ecx, [ebp - 0x250]
call fcn.00414abd
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x244]
push eax
call fcn.0040764f
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x260]
lea ecx, [ecx - 0x10]
call fcn.00406985
lea ecx, [ebp - 0x244]
call fcn.0040751e
mov edi, dword [ebp - 0x24c]
push str.IniDescriptor
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419b20
lea eax, [ebp - 0x244]
mov esi, 0x48bcd0
push eax
mov ecx, esi
call fcn.0040764f
push 0x2f
push 0x5c
pop eax
push eax
mov ecx, esi
call fcn.004075aa
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.XmlDescriptor
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419b68
lea eax, [ebp - 0x244]
mov esi, 0x48bcd4
push eax
mov ecx, esi
call fcn.0040764f
push 0x2f
push 0x5c
pop eax
push eax
mov ecx, esi
call fcn.004075aa
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ConnectionCheck
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419ba1
lea eax, [ebp - 0x244]
mov ecx, 0x48bcd8
push eax
call fcn.0040764f
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.TemporaryDir
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419bf0
lea eax, [ebp - 0x244]
mov esi, 0x48bcdc
push eax
mov ecx, esi
call fcn.0040764f
push 0x5c
pop eax
push eax
push 0x2f
mov ecx, esi
call fcn.004075aa
mov byte [0x48bce0], 1
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ConnectivityTimeout
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419c2e
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
pop ecx
test eax, eax
mov ecx, 0xea60
cmove eax, ecx
mov dword [0x48bd00], eax
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ConnectivityStep
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419c6f
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
pop ecx
cmp eax, 0x4e20
mov ecx, 0x1388
cmovb eax, ecx
mov dword [0x48bd04], eax
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ConnectionTimeout
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419cad
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
pop ecx
test eax, eax
mov ecx, 0x7530
cmove eax, ecx
mov dword [0x48bd08], eax
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.CopyBufferSize
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419cf9
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
mov dword [0x48bd10], eax
pop ecx
cmp eax, 0x400
jb 0x419cde
cmp eax, 0x1000000
jbe 0x419ce8
mov dword [0x48bd10], 0x10000
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ProxyEnabled
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419d31
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
test eax, eax
pop ecx
setne byte [0x48bd18]
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ProxyAddress
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419d6a
lea eax, [ebp - 0x244]
mov ecx, 0x48bd1c
push eax
call fcn.0040764f
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ProxyPort
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419d9f
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
pop ecx
mov word [0x48bd20], ax
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ProxyCredentialsEnabled
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419dd7
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
test eax, eax
pop ecx
setne byte [0x48bd22]
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ProxyUsername
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419e10
lea eax, [ebp - 0x244]
mov ecx, 0x48bd24
push eax
call fcn.0040764f
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.ProxyPassword
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419e49
lea eax, [ebp - 0x244]
mov ecx, 0x48bd28
push eax
call fcn.0040764f
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.LastAppliedPatchId
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419e7a
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
pop ecx
mov dword [0x48bd40], eax
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.JobIntervalHours
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419eab
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
pop ecx
mov dword [0x48bccc], eax
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
push str.UseOwnDnsQuery
push edi
call fcn.004496b9
pop ecx
pop ecx
test eax, eax
jne 0x419ee0
mov esi, dword [ebp - 0x244]
push esi
call fcn.00454741
test eax, eax
pop ecx
setne byte [0x48bd0c]
mov byte [ebp - 4], 0xa
lea ecx, [esi - 0x10]
call fcn.00406985
jmp 0x419ef2
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x244]
lea ecx, [ecx - 0x10]
call fcn.00406985
mov byte [ebp - 4], 8
lea ecx, [edi - 0x10]
call fcn.00406985
mov ecx, ebx
call fcn.004082a0
push eax
push ebx
lea ecx, [ebp - 0x250]
call fcn.00408222
mov eax, dword [ebp - 0x250]
cmp dword [eax - 0xc], 0
jne 0x4199c4
mov esi, dword [ebp - 0x248]
mov edi, 0x104
mov ebx, dword [ebp - 0x254]
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x250]
lea ecx, [ecx - 0x10]
call fcn.00406985
cmp dword [esi - 0xc], 0
jne 0x419f5b
push 0x48bc9c
lea ecx, [ebp - 0x248]
call fcn.0040764f
lea eax, [ebp - 0x248]
mov ecx, 0x48bcf4
push eax
call fcn.0040764f
mov ecx, dword [0x48bcdc]
cmp dword [ecx - 0xc], 0
jne 0x419fe8
mov eax, dword [0x48bd84]
cmp dword [eax - 0xc], 0
je 0x419fe8
push str.Setup_
mov edx, 0x48bd84
lea ecx, [ebp - 0x254]
call fcn.004074c4
pop ecx
mov byte [ebp - 4], 0x38
mov esi, 0x48bcdc
push eax
mov ecx, esi
call fcn.0040764f
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00406985
mov ecx, dword [0x48bcdc]
call fcn.0041d1a9
test al, al
jne 0x419fd9
push 0
push dword [0x48bcdc]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [0x48bcdc]
mov byte [0x48bce0], 1
jmp 0x419fed
mov esi, 0x48bcdc
cmp dword [ecx - 0xc], 0
je 0x419ffc
call fcn.0041d1a9
test al, al
jne 0x41a072
xor eax, eax
mov byte [0x48bce0], 0
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x41a058
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
jne 0x41a058
push 0x47ac98
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.0045478b
add esp, 0xc
lea ecx, [ebp - 0x21c]
call fcn.004082a0
push eax
lea eax, [ebp - 0x21c]
mov ecx, esi
push eax
call fcn.00408222
mov eax, dword [0x48bcdc]
mov eax, dword [eax - 0xc]
test eax, eax
je 0x41a08f
dec eax
mov ecx, esi
push eax
call fcn.004076f0
push 0x5c
pop ecx
cmp ax, cx
je 0x41a097
push ecx
mov ecx, esi
call fcn.00407625
mov ecx, dword [0x48bcd0]
cmp dword [ecx - 0xc], 0
je 0x41a0ad
call fcn.0041a756
cmp eax, 1
jg 0x41a0bc
push 0x48bcac
mov ecx, 0x48bcd0
call fcn.0040764f
mov ecx, dword [0x48bcd4]
cmp dword [ecx - 0xc], 0
je 0x41a0d2
call fcn.0041a756
cmp eax, 1
jg 0x41a0e1
push 0x48bcb0
mov ecx, 0x48bcd4
call fcn.0040764f
mov ecx, dword [0x48bcd8]
cmp dword [ecx - 0xc], 0
je 0x41a0f7
call fcn.0041a756
cmp eax, 1
jg 0x41a10f
mov esi, str.http:__emupdate.avcdn.net_files_emupdate_pong.txt
mov ecx, esi
call fcn.004082a0
push eax
push esi
mov ecx, 0x48bcd8
call fcn.00408222
push 0x2f
push dword [0x48bcd0]
call fcn.00441d1b
pop ecx
pop ecx
test eax, eax
je 0x41a162
sub eax, dword [0x48bcd0]
sar eax, 1
cmp eax, 0xffffffff
je 0x41a162
push eax
lea eax, [ebp - 0x254]
mov ecx, 0x48bcd0
push eax
call fcn.00409467
mov byte [ebp - 4], 0x3a
mov ecx, 0x48bcf8
push eax
call fcn.0040764f
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00406985
lea ecx, [ebp - 0x254]
call fcn.0041f472
mov byte [ebp - 4], 0x3c
mov ecx, 0x48bcfc
push eax
call fcn.0040764f
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00406985
call fcn.0041d355
movzx ecx, byte [0x48bd45]
test eax, eax
push 1
pop eax
cmovne ecx, eax
mov byte [0x48bd45], cl
call fcn.0041e268
and dword [ebp - 0x24c], 0
lea eax, [ebp - 0x264]
push eax
lea eax, [ebp - 0x24c]
mov dword [ebp - 0x254], 4
push eax
lea eax, [ebp - 0x254]
mov edx, str.LastAppliedPatchId
push eax
xor ecx, ecx
call fcn.0041dcc2
add esp, 0xc
test eax, eax
jne 0x41a1fa
mov ecx, dword [ebp - 0x24c]
push ecx
mov eax, dword [ecx]
mov dword [0x48bd40], eax
call fcn.00445d2e
pop ecx
call fcn.0041e284
test ebx, ebx
je 0x41a20a
push ebx
call fcn.00445d2e
pop ecx
mov esi, dword [ebp - 0x258]
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x248]
add ecx, 0xfffffff0
call fcn.00406985
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x270]
call fcn.0041bbc1
mov eax, esi
call fcn.00463afe
ret