Function at 0x41b689
Capabilities:
Accept command line arguments
Create directory
Get common file path
Get memory capacity
Get system information on windows
Read .ini file

Disassembly:
push 0x2b8
mov eax, 0x47738d
call fcn.0045053c
and dword [ebp - 0x264], 0
lea eax, [ebp - 0x264]
push eax
push str.LoadConfig
lea ecx, [ebp - 0x29c]
call fcn.0041dfa0
and dword [ebp - 4], 0
call fcn.00409480
push eax
lea ecx, [ebp - 0x258]
call fcn.00408c39
mov byte [ebp - 4], 2
call fcn.00409480
push eax
lea ecx, [ebp - 0x27c]
call fcn.00408c39
mov byte [ebp - 4], 4
call fcn.00409480
push eax
lea ecx, [ebp - 0x278]
call fcn.00408c39
mov byte [ebp - 4], 6
call fcn.00409480
push eax
lea ecx, [ebp - 0x28c]
call fcn.00408c39
mov byte [ebp - 4], 8
call fcn.00409480
push eax
lea ecx, [ebp - 0x270]
call fcn.00408c39
mov byte [ebp - 4], 0xa
call fcn.00409480
push eax
lea ecx, [ebp - 0x280]
call fcn.00408c39
push 0xc
pop eax
mov byte [ebp - 4], al
xor ebx, ebx
mov dword [ebp - 0x25c], ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
push 0x48c654
call fcn.0041dafb
pop ecx
pop ecx
lea eax, [ebp - 0x22c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
push 0x40
pop esi
push esi
push esi
lea ecx, [ebp - 0x27c]
call fcn.00409176
push eax
push str.yyyy_MM_dd
lea eax, [ebp - 0x22c]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetDateFormatW]
push esi
push esi
lea ecx, [ebp - 0x278]
call fcn.00409176
push eax
push str.HH:mm:ss
lea eax, [ebp - 0x22c]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetTimeFormatW]
push ecx
lea ecx, [ebp - 0x27c]
call fcn.004089f1
push ecx
lea ecx, [ebp - 0x278]
call fcn.004089f1
mov esi, dword [ebp - 0x278]
mov edi, dword [ebp - 0x27c]
push esi
push edi
push str.UTC:__s__s
call fcn.0041dafb
add esp, 0xc
mov dword [0x4a047c], 0x11c
push 0x4a047c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x41b812
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Cannot_query_version_info__gle_u
mov dword [ebp - 0x264], eax
call fcn.0041dafb
pop ecx
jmp 0x41c5ec
push 0x4a0598
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
push 0x18
push dword [0x4a05ac]
call fcn.0046534a
pop ecx
pop ecx
mov ecx, eax
mov dword [ebp - 0x284], ecx
test ecx, ecx
jne 0x41b847
mov dword [ebp - 0x264], 8
jmp 0x41c5ed
imul eax, dword [0x4a05ac], 0x18
push eax
push ecx
push 0
push 0
push 0xb
call dword [sym.imp.POWRPROF.dll_CallNtPowerInformation]
test eax, eax
jne 0x41b88c
mov ecx, dword [0x4a05ac]
test ecx, ecx
je 0x41b89e
mov edx, dword [ebp - 0x284]
mov eax, dword [0x4a05bc]
add edx, 4
cmp dword [edx], eax
cmova eax, dword [edx]
lea edx, [edx + 0x18]
sub ecx, 1
jne 0x41b878
mov dword [0x4a05bc], eax
jmp 0x41b89e
push dword [ebp - 0x264]
push str.Cannot_query_processor_power_info_info__ntst_X
call fcn.0041dafb
pop ecx
pop ecx
push 0x4a05c0
mov dword [0x4a05c0], 0x40
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
cmp word [0x4a0598], bx
jne 0x41b920
lea ecx, [ebp - 0x2c4]
call fcn.00434d41
mov byte [ebp - 4], 0xd
mov ebx, dword [ebp - 0x2b4]
test ebx, ebx
je 0x41b909
lea eax, [ebp - 0x26c]
push eax
lea eax, [ebp - 0x254]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call ebx
push 0xc
test eax, eax
je 0x41b90b
mov eax, 0xaa64
cmp word [ebp - 0x26c], ax
pop eax
jne 0x41b90c
mov word [0x4a0598], ax
jmp 0x41b90c
push 0xc
pop eax
mov byte [ebp - 4], al
lea ecx, [ebp - 0x2c4]
call fcn.00434cfb
mov ebx, dword [ebp - 0x25c]
mov ecx, 0x48c758
call fcn.0040b056
push eax
push 0x48c758
lea ecx, [ebp - 0x280]
call fcn.0040afd8
movzx eax, word [0x4a0598]
test eax, eax
je 0x41b98d
cmp eax, 9
je 0x41b97b
push 0xc
pop ecx
cmp eax, ecx
je 0x41b969
push eax
lea eax, [ebp - 0x270]
push 0x48c774
push eax
call fcn.00408e2a
add esp, 0xc
jmp 0x41b9a8
mov ecx, str.arm64
call fcn.0040b056
push eax
push str.arm64
jmp 0x41b99d
mov ecx, 0x48c760
call fcn.0040b056
push eax
push 0x48c760
jmp 0x41b99d
mov ecx, 0x48c758
call fcn.0040b056
push eax
push 0x48c758
lea ecx, [ebp - 0x270]
call fcn.0040afd8
push dword [ebp - 0x280]
push dword [ebp - 0x270]
push dword [0x4a0488]
push dword [0x4a0484]
push dword [0x4a0480]
push str.Windows__u._u._u__s__build:__s
call fcn.0041dafb
add esp, 0x18
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 0x41ba07
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x264], eax
jmp 0x41c5d6
push 0x48cb28
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00465355
add esp, 0xc
lea ecx, [ebp - 0x21c]
call fcn.0040b056
push eax
lea eax, [ebp - 0x21c]
mov ecx, 0x4a0348
push eax
call fcn.0040afd8
mov ecx, str.drivers_
call fcn.0040b056
push eax
push str.drivers_
mov ecx, 0x4a0348
call fcn.0040c3a0
cmp dword [0x4a0604], 0
je 0x41babe
lea ecx, [ebp - 0x21c]
call fcn.0040b056
push eax
lea eax, [ebp - 0x21c]
mov ecx, 0x4a0344
push eax
call fcn.0040afd8
xor eax, eax
lea ecx, [ebp - 0x21c]
push 0x104
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
mov eax, dword [0x4a0600]
push ecx
call eax
test eax, eax
je 0x41b9f6
push 0x48cb28
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00465355
add esp, 0xc
lea ecx, [ebp - 0x21c]
call fcn.0040b056
push eax
lea eax, [ebp - 0x21c]
mov ecx, 0x4a0340
push eax
call fcn.0040afd8
xor eax, eax
mov esi, 0x104
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push esi
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x250]
push eax
push 0
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
test eax, eax
je 0x41bb3a
mov eax, dword [ebp - 0x24c]
add eax, dword [ebp - 0x23c]
mov ecx, dword [ebp - 0x248]
adc ecx, dword [ebp - 0x238]
mov dword [0x4a0628], eax
mov dword [0x4a062c], ecx
mov edx, 0x4a03cc
lea ecx, [ebp - 0x21c]
call fcn.00421c85
lea ecx, [ebp - 0x21c]
call fcn.0040b056
push eax
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x258]
call fcn.0040afd8
push 0x5c
pop eax
push eax
push 0x2f
lea ecx, [ebp - 0x258]
call fcn.0040a11e
push 0x5c
pop eax
push eax
push dword [ebp - 0x258]
call fcn.00450d4e
pop ecx
pop ecx
test eax, eax
je 0x41bbe9
sub eax, dword [ebp - 0x258]
sar eax, 1
cmp eax, 0xffffffff
je 0x41bbe9
inc eax
lea ecx, [ebp - 0x258]
push eax
lea eax, [ebp - 0x25c]
push eax
call fcn.0040c287
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x258]
push eax
call fcn.0040a1c3
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x25c]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov eax, dword [0x4a02fc]
lea ecx, [ebp - 0x258]
push dword [eax - 0xc]
push eax
call fcn.0040c3a0
jmp 0x41bbf9
push 0x4a02fc
lea ecx, [ebp - 0x258]
call fcn.0040a1c3
push dword [ebp - 0x258]
xor eax, eax
push esi
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push eax
push 0x489c34
push str.Registry
push str.Product
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x4a03dc
mov edx, 0x4a03d8
lea ecx, [ebp - 0x21c]
call fcn.00421028
pop ecx
call fcn.004096c2
test eax, eax
je 0x41bc5c
push dword [ebp - 0x264]
push str.Unable_to_load_product_config__gle_u
call fcn.0041dafb
pop ecx
pop ecx
jmp 0x41bc9f
push dword [0x4a042c]
push str.Current_version:__d
call fcn.0041dafb
push dword [0x4a0430]
push str.Current_update_version:__d
call fcn.0041dafb
push dword [0x4a0400]
push str.Guid:__s
call fcn.0041dafb
push dword [0x4a0424]
push str.Midex:__s
call fcn.0041dafb
add esp, 0x20
mov al, byte [0x4a0374]
lea ecx, [ebp - 0x25c]
push 0x4a02fc
mov edx, 0x4a03e8
mov byte [ebp - 0x26b], al
call fcn.0041aaa2
pop ecx
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x258]
push eax
call fcn.0040a1c3
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x25c]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov esi, dword [ebp - 0x258]
cmp dword [esi - 0xc], 0
je 0x41c301
mov ecx, esi
call fcn.0041f708
test al, al
je 0x41c2fb
push 0x10002
call fcn.00454c58
mov ebx, eax
mov dword [ebp - 0x25c], ebx
pop ecx
test ebx, ebx
jne 0x41bd29
mov dword [ebp - 0x264], 8
jmp 0x41c5d0
push dword [ebp - 0x258]
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 - 0x260]
mov dword [ebp - 0x274], ebx
call fcn.0040a211
mov byte [ebp - 4], 0x12
mov eax, dword [ebp - 0x260]
cmp dword [eax - 0xc], 0
je 0x41c2e7
call fcn.00409480
push eax
lea ecx, [ebp - 0x274]
call fcn.00408c39
mov byte [ebp - 4], 0x14
call fcn.00409480
push eax
lea ecx, [ebp - 0x254]
call fcn.00408c39
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0x260]
mov eax, dword [ebp - 0x260]
mov eax, dword [eax - 0xc]
lea ebx, [ebx + eax*2]
add ebx, 2
call fcn.0041ab4d
mov ecx, eax
call fcn.0040a092
push 0
push 0x3d
lea ecx, [ebp - 0x260]
call fcn.0041c66a
mov esi, eax
cmp esi, 0xffffffff
jne 0x41bdf5
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov byte [ebp - 4], 0x12
mov ecx, dword [ebp - 0x274]
add ecx, 0xfffffff0
jmp 0x41c2ac
push esi
lea eax, [ebp - 0x288]
push eax
lea ecx, [ebp - 0x260]
call fcn.0040c287
mov byte [ebp - 4], 0x19
lea ecx, [ebp - 0x274]
push eax
call fcn.0040a1c3
mov byte [ebp - 4], 0x16
mov ecx, dword [ebp - 0x288]
lea ecx, [ecx - 0x10]
call fcn.00409575
lea ecx, [ebp - 0x274]
call fcn.0041ab4d
lea eax, [esi + 1]
push eax
lea eax, [ebp - 0x268]
push eax
lea ecx, [ebp - 0x260]
call fcn.00416d0f
mov byte [ebp - 4], 0x1b
lea ecx, [ebp - 0x254]
push eax
call fcn.0040a1c3
mov byte [ebp - 4], 0x16
mov ecx, dword [ebp - 0x268]
lea ecx, [ecx - 0x10]
call fcn.00409575
lea ecx, [ebp - 0x254]
call fcn.0040a092
mov edi, dword [ebp - 0x274]
push str.IniDescriptor
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41bec6
lea eax, [ebp - 0x254]
mov esi, 0x4a032c
push eax
mov ecx, esi
call fcn.0040a1c3
push 0x2f
push 0x5c
pop eax
push eax
mov ecx, esi
call fcn.0040a11e
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.XmlDescriptor
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41bf0e
lea eax, [ebp - 0x254]
mov esi, 0x4a0330
push eax
mov ecx, esi
call fcn.0040a1c3
push 0x2f
push 0x5c
pop eax
push eax
mov ecx, esi
call fcn.0040a11e
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ConnectionCheck
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41bf47
lea eax, [ebp - 0x254]
mov ecx, 0x4a0334
push eax
call fcn.0040a1c3
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.TemporaryDir
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41bf96
lea eax, [ebp - 0x254]
mov esi, 0x4a0338
push eax
mov ecx, esi
call fcn.0040a1c3
push 0x5c
pop eax
push eax
push 0x2f
mov ecx, esi
call fcn.0040a11e
mov byte [0x4a033c], 1
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ConnectivityTimeout
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41bfd4
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
pop ecx
test eax, eax
mov ecx, 0xea60
cmove eax, ecx
mov dword [0x4a035c], eax
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ConnectivityStep
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c015
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
pop ecx
cmp eax, 0x4e20
mov ecx, 0x1388
cmovb eax, ecx
mov dword [0x4a0360], eax
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ConnectionTimeout
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c053
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
pop ecx
test eax, eax
mov ecx, 0x7530
cmove eax, ecx
mov dword [0x4a0364], eax
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.CopyBufferSize
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c09f
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
mov dword [0x4a036c], eax
pop ecx
cmp eax, 0x400
jb 0x41c084
cmp eax, 0x1000000
jbe 0x41c08e
mov dword [0x4a036c], 0x10000
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
cmp byte [ebp - 0x26b], 0
jne 0x41c1fc
push str.ProxyEnabled
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c0e4
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
test eax, eax
pop ecx
setne byte [0x4a0374]
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ProxyAddress
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c11d
lea eax, [ebp - 0x254]
mov ecx, 0x4a0378
push eax
call fcn.0040a1c3
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ProxyPort
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c152
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
pop ecx
mov word [0x4a037c], ax
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ProxyCredentialsEnabled
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c18a
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
test eax, eax
pop ecx
setne byte [0x4a037e]
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ProxyUsername
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c1c3
lea eax, [ebp - 0x254]
mov ecx, 0x4a0380
push eax
call fcn.0040a1c3
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.ProxyPassword
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c1fc
lea eax, [ebp - 0x254]
mov ecx, 0x4a0384
push eax
call fcn.0040a1c3
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.LastAppliedPatchId
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c22d
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
pop ecx
mov dword [0x4a039c], eax
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.JobIntervalHours
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c25e
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
pop ecx
mov dword [0x4a0328], eax
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
push str.UseOwnDnsQuery
push edi
call fcn.00458623
pop ecx
pop ecx
test eax, eax
jne 0x41c293
mov esi, dword [ebp - 0x254]
push esi
call fcn.004653ca
test eax, eax
pop ecx
setne byte [0x4a0368]
mov byte [ebp - 4], 0x14
lea ecx, [esi - 0x10]
call fcn.00409575
jmp 0x41c2a5
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov byte [ebp - 4], 0x12
lea ecx, [edi - 0x10]
call fcn.00409575
mov ecx, ebx
call fcn.0040b056
push eax
push ebx
lea ecx, [ebp - 0x260]
call fcn.0040afd8
mov eax, dword [ebp - 0x260]
cmp dword [eax - 0xc], 0
jne 0x41bd70
mov esi, dword [ebp - 0x258]
mov edi, dword [ebp - 0x27c]
mov ebx, dword [ebp - 0x25c]
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x260]
lea ecx, [ecx - 0x10]
call fcn.00409575
cmp dword [esi - 0xc], 0
jne 0x41c311
push 0x4a02fc
lea ecx, [ebp - 0x258]
call fcn.0040a1c3
lea eax, [ebp - 0x258]
mov ecx, 0x4a0350
push eax
call fcn.0040a1c3
mov ecx, dword [0x4a0338]
cmp dword [ecx - 0xc], 0
jne 0x41c3a2
mov eax, dword [0x4a03e4]
cmp dword [eax - 0xc], 0
je 0x41c39c
push str.Setup_
mov edx, 0x4a03e4
lea ecx, [ebp - 0x268]
call fcn.0040a03a
pop ecx
mov byte [ebp - 4], 0x42
mov ecx, 0x4a0338
push eax
call fcn.0040a1c3
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x268]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov ecx, dword [0x4a0338]
call fcn.0041f708
test al, al
jne 0x41c38f
push 0
push dword [0x4a0338]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [0x4a0338]
mov byte [0x4a033c], 1
cmp dword [ecx - 0xc], 0
je 0x41c3ab
call fcn.0041f708
test al, al
jne 0x41c429
xor eax, eax
mov byte [0x4a033c], 0
mov word [ebp - 0x14], ax
mov esi, 0x104
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x41c40c
mov word [ebp - 0x14], ax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
jne 0x41c40c
push 0x48cb10
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00465410
add esp, 0xc
lea ecx, [ebp - 0x21c]
call fcn.0040b056
push eax
lea eax, [ebp - 0x21c]
mov ecx, 0x4a0338
push eax
call fcn.0040afd8
mov eax, dword [0x4a0338]
mov eax, dword [eax - 0xc]
test eax, eax
je 0x41c449
dec eax
mov ecx, 0x4a0338
push eax
call fcn.0040a264
push 0x5c
pop ecx
cmp ax, cx
je 0x41c454
push ecx
mov ecx, 0x4a0338
call fcn.0040a199
mov ecx, dword [0x4a032c]
cmp dword [ecx - 0xc], 0
je 0x41c46a
call fcn.0041cb77
cmp eax, 1
jg 0x41c479
push 0x4a030c
mov ecx, 0x4a032c
call fcn.0040a1c3
mov ecx, dword [0x4a0330]
cmp dword [ecx - 0xc], 0
je 0x41c48f
call fcn.0041cb77
cmp eax, 1
jg 0x41c49e
push 0x4a0310
mov ecx, 0x4a0330
call fcn.0040a1c3
mov ecx, dword [0x4a0334]
cmp dword [ecx - 0xc], 0
je 0x41c4b4
call fcn.0041cb77
cmp eax, 1
jg 0x41c4cc
mov esi, str.http:__emupdate.avcdn.net_files_emupdate_pong.txt
mov ecx, esi
call fcn.0040b056
push eax
push esi
mov ecx, 0x4a0334
call fcn.0040afd8
push 0x2f
push dword [0x4a032c]
call fcn.00450d4e
pop ecx
pop ecx
test eax, eax
je 0x41c521
sub eax, dword [0x4a032c]
sar eax, 1
cmp eax, 0xffffffff
je 0x41c521
push eax
lea eax, [ebp - 0x268]
mov ecx, 0x4a032c
push eax
call fcn.0040c287
mov byte [ebp - 4], 0x44
mov ecx, 0x4a0354
push eax
call fcn.0040a1c3
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x268]
lea ecx, [ecx - 0x10]
call fcn.00409575
lea ecx, [ebp - 0x268]
call fcn.00421d65
mov byte [ebp - 4], 0x46
mov ecx, 0x4a0358
push eax
call fcn.0040a1c3
push 0xc
pop eax
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0x268]
lea ecx, [ecx - 0x10]
call fcn.00409575
push dword [0x4a0358]
push str.Geo:__s
call fcn.0041dafb
call fcn.0041f8b4
movzx ecx, byte [0x4a03a2]
test eax, eax
push 1
pop eax
cmovne ecx, eax
mov byte [0x4a03a2], cl
call fcn.00420ab9
and dword [ebp - 0x25c], 0
lea eax, [ebp - 0x290]
push eax
lea eax, [ebp - 0x25c]
mov dword [ebp - 0x268], 4
push eax
lea eax, [ebp - 0x268]
mov edx, str.LastAppliedPatchId
push eax
xor ecx, ecx
call fcn.0042030c
add esp, 0x14
test eax, eax
jne 0x41c5cb
mov ecx, dword [ebp - 0x25c]
push ecx
mov eax, dword [ecx]
mov dword [0x4a039c], eax
call fcn.00454c63
pop ecx
call fcn.00420b0e
mov esi, dword [ebp - 0x278]
push dword [ebp - 0x284]
call fcn.00454c63
pop ecx
test ebx, ebx
je 0x41c5ed
push ebx
call fcn.00454c63
pop ecx
mov ebx, dword [ebp - 0x264]
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x280]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x270]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x28c]
lea ecx, [ecx - 0x10]
call fcn.00409575
mov byte [ebp - 4], 4
lea ecx, [esi - 0x10]
call fcn.00409575
mov byte [ebp - 4], 2
lea ecx, [edi - 0x10]
call fcn.00409575
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x258]
add ecx, 0xfffffff0
call fcn.00409575
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x29c]
call fcn.0041e015
mov eax, ebx
call fcn.004504e6
ret