Function at 0x427090
Capabilities:
Check if file exists
Get file version info
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49ff95
mov eax, dword fs:[0]
push eax
sub esp, 0x8cc
mov eax, dword [0x4c9890]
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
mov edi, ecx
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
lea esi, [edi + 0x1148]
push esi
mov dword [ebp - 0x8b0], ebx
mov dword [ebp - 0x8a4], eax
mov dword [ebp - 0x8d8], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
inc dword [edi + 0x1160]
push dword [edi + 0x1160]
mov dword [ebp - 4], 0
push dword [ebp - 0x8a4]
push ebx
push 0x4ae24c
push str._UNO___s__vendor_id_s__tags_s__ref_d
call fcn.00422df0
add esp, 0x14
cmp dword [edi + 0x1060], 0
je 0x427211
mov dword [ebp - 0x8bc], 0
mov dword [ebp - 0x8b8], 0
mov dword [ebp - 0x8b4], 0
lea eax, [ebp - 0x8bc]
push eax
push dword [ebp - 0x8a4]
mov ecx, edi
mov byte [ebp - 4], 1
call fcn.0042e560
push dword [ebp - 0x8d8]
mov ebx, dword [ebp - 0x8bc]
push dword [ebp - 0x8b8]
lea ecx, [edi + 8]
push ebx
push dword [edi + 0xc]
call fcn.00424490
cmp dword [edi + 4], 0
je 0x4271e4
mov ecx, dword [ebp - 0x8b8]
sub ecx, ebx
mov eax, 0x2aaaaaab
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x8a4], eax
je 0x4271d5
add ebx, 0x18
lea esp, [esp]
cmp dword [ebx + 0x14], 8
jb 0x4271aa
mov ecx, dword [ebx]
jmp 0x4271ac
mov ecx, ebx
cmp dword [ebx - 4], 8
jb 0x4271b7
mov eax, dword [ebx - 0x18]
jmp 0x4271ba
lea eax, [ebx - 0x18]
push ecx
mov ecx, dword [edi + 4]
push eax
call fcn.00431aa0
add ebx, 0x30
dec dword [ebp - 0x8a4]
jne 0x4271a0
mov ebx, dword [ebp - 0x8bc]
mov ecx, dword [edi + 4]
lea eax, [edi + 0x424]
push eax
call fcn.00433130
test ebx, ebx
je 0x42720a
push dword [ebp - 0x8d8]
lea eax, [ebp - 0x8c1]
push eax
push dword [ebp - 0x8b8]
push ebx
call fcn.004243e0
push ebx
call fcn.00486409
add esp, 0x14
xor edi, edi
jmp 0x42795e
mov ecx, ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x427216
sub ecx, edx
sar ecx, 1
jne 0x427243
push 0x4ae24c
push str._UNO___s__Product_or_Version_is_not_valid
call fcn.00422df0
add esp, 8
mov edi, 1
jmp 0x42795e
cmp dword [edi + 0x107c], 0
jne 0x427296
push 0x6c
call fcn.004867f5
add esp, 4
mov dword [ebp - 0x8ac], eax
mov byte [ebp - 4], 2
test eax, eax
je 0x42726f
push 1
mov ecx, eax
call fcn.0042fb90
jmp 0x427271
xor eax, eax
mov byte [ebp - 4], 0
mov dword [edi + 0x107c], eax
test eax, eax
jne 0x427289
mov edi, 0x80004003
jmp 0x42795e
push edi
push 0x42a040
mov ecx, eax
call fcn.00430270
mov ecx, dword [edi + 0x107c]
push 0xffffffffffffffff
call fcn.0042fe90
test eax, eax
js 0x427239
mov ecx, dword [edi + 0x107c]
push 0xffffffffffffffff
push 1
call fcn.0042fd90
mov ecx, edi
call fcn.0042d780
cmp eax, 1
jne 0x4272d1
mov ecx, dword [edi + 0x107c]
push 0xffffffffffffffff
push 3
call fcn.0042fd90
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x650], ax
lea eax, [ebp - 0x64e]
push eax
call fcn.004866f0
add esp, 0xc
lea eax, [ebp - 0x650]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
lea eax, [ebp - 0x650]
push eax
call ebx
push eax
lea eax, [edi + 0x834]
push 0x4a6650
push eax
call fcn.0042f2d0
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x240], ax
lea eax, [ebp - 0x23e]
push eax
call fcn.004866f0
add esp, 0x18
lea eax, [ebp - 0x240]
push 0x104
push eax
push 0x400000
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x240]
push eax
call ebx
push eax
lea eax, [edi + 0xa3c]
push 0x4a6650
push eax
call fcn.0042f2d0
mov ebx, dword [ebp - 0x8b0]
add esp, 0xc
lea ecx, [edi + 0x834]
push ecx
lea eax, [edi + 0x14]
push ebx
push eax
mov ecx, edi
call fcn.0042cf70
lea eax, [edi + 0x14]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4273a9
lea eax, [edi + 0x14]
push eax
mov ecx, edi
call fcn.0042e7c0
push str.ToGo
lea eax, [edi + 0x21c]
push ebx
push eax
mov ecx, edi
call fcn.0042cf70
lea ebx, [edi + 0x21c]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4273d6
push ebx
mov ecx, edi
call fcn.0042e7c0
push str.UNO.ini
lea eax, [edi + 0x14]
push eax
lea ebx, [edi + 0x62c]
push str._s_s
push ebx
call fcn.0042f2d0
add esp, 0x10
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x427418
push ebx
push 0x4a1b98
push 0x4ae33c
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileSectionW]
push ebx
call fcn.0042f880
add esp, 4
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push 1
push str.init
push 0x4ae33c
call ebx
mov dword [edi + 0x1058], eax
lea eax, [edi + 0x62c]
push eax
push 0xb4
push str.interval
push 0x4ae33c
call ebx
mov dword [edi + 0x111c], eax
lea eax, [edi + 0x62c]
push eax
push 5
push str.init_interval
push 0x4ae33c
call ebx
mov dword [edi + 0x1120], eax
lea eax, [edi + 0x62c]
push eax
push 4
push str.size
push 0x4ae33c
call ebx
mov dword [edi + 0x1128], eax
cmp eax, 4
jle 0x427496
mov dword [edi + 0x1128], 4
push dword [edi + 0x1128]
push dword [edi + 0x111c]
push dword [edi + 0x1120]
push dword [edi + 0x1058]
push 0x4ae24c
push str._UNO___s__FirstUse_d__First_Interval_d__Interval_d__Size_Limit_d
call fcn.00422df0
add esp, 0x18
lea eax, [ebp - 0x8d0]
push eax
lea eax, [ebp - 0x240]
xorps xmm0, xmm0
push eax
mov dword [ebp - 0x8d0], 0
mov dword [ebp - 0x8b0], 0
movq qword [ebp - 0x8bc], xmm0
mov dword [ebp - 0x8a8], 0
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov ebx, eax
push ebx
call fcn.0048614e
add esp, 4
mov dword [ebp - 0x8cc], eax
push eax
push ebx
push dword [ebp - 0x8d0]
lea eax, [ebp - 0x240]
push eax
call sub.VERSION.dll_GetFileVersionInfoW
mov ebx, dword [ebp - 0x8cc]
test eax, eax
je 0x427588
lea eax, [ebp - 0x8ac]
push eax
lea eax, [ebp - 0x8a8]
push eax
push 0x4a7124
push ebx
mov dword [ebp - 0x8ac], 0
mov dword [ebp - 0x8a8], 0
call sub.VERSION.dll_VerQueryValueW
mov eax, dword [ebp - 0x8a8]
movzx ecx, word [eax + 0xa]
mov dword [ebp - 0x8b0], ecx
movzx ecx, word [eax + 8]
mov dword [ebp - 0x8d4], ecx
movzx ecx, word [eax + 0xe]
movzx eax, word [eax + 0xc]
mov dword [ebp - 0x8c8], ecx
mov dword [ebp - 0x8a8], eax
jmp 0x4275a0
mov eax, dword [ebp - 0x8b8]
mov dword [ebp - 0x8c8], eax
mov eax, dword [ebp - 0x8bc]
mov dword [ebp - 0x8d4], eax
push ebx
call fcn.004866e2
push dword [ebp - 0x8a8]
xor eax, eax
push dword [ebp - 0x8c8]
xorps xmm0, xmm0
push dword [ebp - 0x8d4]
mov word [ebp - 0x38], ax
push dword [ebp - 0x8b0]
mov dword [ebp - 0x16], eax
mov word [ebp - 0x12], ax
lea eax, [ebp - 0x38]
push str._d._d._d._d
push eax
movq qword [ebp - 0x36], xmm0
movq qword [ebp - 0x2e], xmm0
movq qword [ebp - 0x26], xmm0
movq qword [ebp - 0x1e], xmm0
call fcn.0042f2d0
lea eax, [ebp - 0x38]
push eax
push 0x4ae24c
push str._UNO___s__UNO_version_s
call fcn.00422df0
add esp, 0x28
lea eax, [ebp - 0x38]
push eax
lea ecx, [edi + 0x1080]
call fcn.004256b0
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x858], ax
lea eax, [ebp - 0x856]
push eax
call fcn.004866f0
add esp, 0xc
lea eax, [ebp - 0x858]
push eax
mov ecx, edi
call fcn.00426fb0
lea eax, [ebp - 0x858]
push eax
lea ecx, [edi + 0x1098]
call fcn.004256b0
mov dword [ebp - 0x8bc], 0
mov dword [ebp - 0x8b8], 0
mov dword [ebp - 0x8b4], 0
lea eax, [ebp - 0x8bc]
push eax
push dword [ebp - 0x8a4]
mov ecx, edi
mov byte [ebp - 4], 3
call fcn.0042e560
push dword [ebp - 0x8b8]
lea eax, [ebp - 0x8ac]
push dword [ebp - 0x8bc]
lea ecx, [edi + 8]
push dword [edi + 0xc]
push eax
call fcn.00424ab0
xor eax, eax
mov dword [ebp - 0x88c], 7
mov dword [ebp - 0x890], 0
mov word [ebp - 0x8a0], ax
mov dword [ebp - 0x874], 7
mov dword [ebp - 0x878], eax
mov word [ebp - 0x888], ax
push 0x4ae468
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 4
call fcn.004256b0
lea eax, [edi + 0x834]
push eax
lea ecx, [ebp - 0x888]
call fcn.004256b0
lea eax, [edi + 0x834]
push eax
push 0x4ae24c
push str._UNO___s__exe_name_s
call fcn.00422df0
add esp, 0xc
lea eax, [ebp - 0x8a0]
push eax
lea ecx, [edi + 8]
call fcn.0042e8a0
push str.dll_name
lea ecx, [ebp - 0x8a0]
call fcn.004256b0
lea eax, [edi + 0xa3c]
push eax
lea ecx, [ebp - 0x888]
call fcn.004256b0
lea eax, [edi + 0xa3c]
push eax
push 0x4ae24c
push str._UNO___s__dll_name_s
call fcn.00422df0
add esp, 0xc
lea eax, [ebp - 0x8a0]
push eax
lea ecx, [edi + 8]
call fcn.0042e8a0
mov dword [ebp - 0x85c], 7
xor eax, eax
mov word [ebp - 0x870], ax
lea eax, [ebp - 0x870]
push eax
mov ecx, edi
mov byte [ebp - 4], 5
mov dword [ebp - 0x860], 0
call fcn.0042ef70
test eax, eax
je 0x4277c0
lea ecx, [edi + 0x10b0]
lea eax, [ebp - 0x870]
cmp ecx, eax
je 0x4277c0
push 0xffffffffffffffff
push 0
push eax
call fcn.00421f40
cmp dword [ebp - 0x85c], 8
lea eax, [ebp - 0x870]
cmovae eax, dword [ebp - 0x870]
xor ecx, ecx
mov dword [ebp - 0x860], 0
mov word [eax], cx
lea eax, [ebp - 0x870]
push eax
mov ecx, edi
call fcn.0042e9a0
test eax, eax
je 0x42780f
lea ecx, [edi + 0x10e0]
lea eax, [ebp - 0x870]
cmp ecx, eax
je 0x42780f
push 0xffffffffffffffff
push 0
push eax
call fcn.00421f40
cmp dword [ebp - 0x85c], 8
lea eax, [ebp - 0x870]
cmovae eax, dword [ebp - 0x870]
xor ecx, ecx
mov dword [ebp - 0x860], 0
mov word [eax], cx
lea eax, [ebp - 0x870]
push eax
mov ecx, edi
call fcn.0042ec90
test eax, eax
je 0x42785e
lea ecx, [edi + 0x10c8]
lea eax, [ebp - 0x870]
cmp ecx, eax
je 0x42785e
push 0xffffffffffffffff
push 0
push eax
call fcn.00421f40
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov ebx, eax
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x448], ax
lea eax, [ebp - 0x446]
push eax
call fcn.004866f0
push ebx
lea eax, [ebp - 0x448]
push 0x4a62b0
push eax
call fcn.00424c20
add esp, 0x18
lea eax, [ebp - 0x448]
push eax
lea ecx, [edi + 0x10f8]
call fcn.004256b0
mov ecx, edi
call fcn.0042c300
lea ebx, [edi + 0x1130]
mov dword [ebx + 0xc], edi
mov dword [ebx + 0x10], 0x428170
cmp dword [edi + 0x1058], 0
je 0x4278d0
mov eax, dword [edi + 0x1120]
jmp 0x4278d6
mov eax, dword [edi + 0x111c]
mov dword [edi + 0x1124], eax
cmp dword [ebx + 4], 0
jne 0x42790c
push 0
lea eax, [ebx + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push 0x20
push 0x3e8
push 0x3e8
push ebx
push 0x42a250
push 0
lea eax, [ebx + 4]
push eax
call dword [sym.imp.KERNEL32.dll_CreateTimerQueueTimer]
mov dword [edi + 0x1060], 1
xor edi, edi
cmp dword [ebp - 0x85c], 8
jb 0x42792f
push dword [ebp - 0x870]
call fcn.00486409
add esp, 4
xor eax, eax
lea ecx, [ebp - 0x8a0]
mov dword [ebp - 0x85c], 7
mov dword [ebp - 0x860], edi
mov word [ebp - 0x870], ax
call fcn.004254f0
lea ecx, [ebp - 0x8bc]
call fcn.004252a0
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, edi
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.00487c50
mov esp, ebp
pop ebp
ret 8