Function at 0x471ca8
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff00
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd4], eax
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
lea eax, [ebp - 0x48]
mov edx, dword [0x40f890]
call sub.rtl250.bpl__System__InitializeRecord_qqrpvt1
xor eax, eax
push ebp
push 0x472ef5
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 4]
mov edx, dword [0x406228]
call sub.rtl250.bpl__System__DynArrayClear_qqrrpvpv
lea eax, [ebp - 0x60]
push eax
call sub.kernel32.dll_QueryPerformanceCounter
test eax, eax
je 0x471d3d
lea eax, [ebp - 0x68]
push eax
call sub.kernel32.dll_QueryPerformanceFrequency
test eax, eax
je 0x471d3d
push 0
push 0x3e8
mov eax, dword [ebp - 0x68]
mov edx, dword [ebp - 0x64]
call sub.rtl250.bpl__System___lldiv_qqrv
push edx
push eax
mov eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x5c]
call sub.rtl250.bpl__System___lldiv_qqrv
mov dword [0x4e3610], eax
mov dword [0x4e3614], edx
push 0x472f04
mov eax, dword [0x4e360c]
push eax
call fcn.00403598
test eax, eax
setne byte [0x4e3618]
cmp byte [0x4e3618], 0
je 0x471d64
call fcn.00471a94
call sub.kernel32.dll_GetVersion
cmp al, 6
jb 0x471d87
push 0x472f44
push 0x472f5c
call sub.kernel32.dll_LoadLibraryA
push eax
call fcn.00403598
mov dword [0x4e361c], eax
mov eax, dword [0x4e49e4]
mov dword [eax], fcn.00471180
mov eax, dword [0x4e4ac4]
mov dword [eax], 0x4441b0
mov eax, dword [0x4e4d84]
mov dword [eax], 0x4447c0
mov eax, 0x4712ec
mov edx, dword [0x4e4c00]
mov dword [edx], eax
push 0x472f6c
push 0x472f84
call sub.kernel32.dll_GetModuleHandleW
push eax
call fcn.00403598
mov dword [0x4e3628], eax
push 0x472fa0
push 0x472fbc
call sub.kernel32.dll_GetModuleHandleW
push eax
call fcn.00403598
mov dword [0x4e362c], eax
lea edx, [ebp - 0xd4]
mov eax, dword [0x4e360c]
call fcn.00448df8
mov edx, dword [ebp - 0xd4]
mov eax, 0x4e3e4c
call sub.rtl250.bpl__System__IntfCopy_qqrr44System__DelphiInterface_17System_IInterface_x44System__DelphiInterface_17System_IInterf
mov eax, dword [0x4e3e4c]
mov edx, dword [eax]
call dword [edx + 0x368]
test al, al
je 0x471e67
mov eax, dword [0x4e3e4c]
mov edx, dword [eax]
call dword [edx + 0x36c]
test al, al
je 0x471e67
mov eax, dword [0x4e3e4c]
mov edx, dword [eax]
call dword [edx + 0x378]
test al, al
je 0x471e67
mov eax, dword [0x4e360c]
call fcn.004713f8
mov eax, dword [0x4e3e4c]
mov edx, dword [eax]
call dword [edx + 0xc]
cmp eax, dword [0x4e360c]
je 0x471e67
mov eax, dword [0x4e3e4c]
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.004713f8
call fcn.004719a4
push 0x4e8500
call sub.kernel32.dll_InitializeCriticalSection
push 0x4e84e8
call sub.kernel32.dll_InitializeCriticalSection
mov eax, dword [0x4e3e4c]
mov edx, dword [eax]
call dword [edx + 0x368]
test al, al
je 0x472e78
lea edx, [ebp - 0xd0]
lea eax, [ebp - 0xbc]
call fcn.00434574
lea eax, [ebp - 0xdc]
push eax
call sub.kernel32.dll_GetCurrentProcessId
mov cl, 0x30
mov edx, 1
call fcn.00408980
mov ecx, dword [ebp - 0xdc]
lea eax, [ebp - 0xd8]
mov edx, 0x472fdc
call sub.rtl250.bpl__System__LStrCat3_qqrr27System__AnsiStringT_us_i0__x27System__AnsiStringT_us_i0__t2
mov eax, dword [ebp - 0xd8]
call sub.rtl250.bpl__System__LStrToPChar_qqrx27System__AnsiStringT_us_i0__
push eax
push 0x14
push 0
push 4
lea eax, [ebp - 0xbc]
push eax
push 0xffffffffffffffff
call sub.kernel32.dll_CreateFileMappingA
mov ebx, eax
call sub.kernel32.dll_GetLastError
test eax, eax
jne 0x471f9d
push 0
push 0
push 0
push 0xf001f
push ebx
call sub.kernel32.dll_MapViewOfFile
mov dword [0x4e3624], eax
mov eax, dword [0x4e3624]
mov dword [eax + 0xc], 1
push 0
push 0
push 0
call fcn.00403344
mov edx, dword [0x4e3624]
mov dword [edx], eax
push 0
push 0
push 0
call fcn.00403344
mov edx, dword [0x4e3624]
mov dword [edx + 4], eax
mov eax, dword [0x4e3624]
xor edx, edx
mov dword [eax + 8], edx
mov eax, dword [0x4e3624]
mov dword [eax + 0x10], ebx
lea eax, [ebp - 4]
call fcn.004332e4
cmp dword [ebp - 4], 0
je 0x471f8f
mov eax, dword [ebp - 4]
mov eax, dword [eax]
mov dword [0x4e3510], eax
push 0
push 0
push 0
mov eax, dword [ebp - 4]
mov eax, dword [eax]
mov ecx, 0x473000
xor edx, edx
call fcn.00434eec
jmp 0x471fe7
mov eax, dword [sym.imp.rtl250.bpl__System_MainThreadID]
mov eax, dword [eax]
mov dword [0x4e3510], eax
jmp 0x471fe7
test ebx, ebx
je 0x471fcd
push 0
push 0
push 0
push 0xf001f
push ebx
call sub.kernel32.dll_MapViewOfFile
mov dword [0x4e3624], eax
push ebx
call sub.kernel32.dll_CloseHandle
mov eax, dword [0x4e3624]
add eax, 0xc
push eax
call fcn.004034a0
jmp 0x471fe7
push 0
push 0x473018
push 0x473024
push 0
call sub.user32.dll_MessageBoxA
push 0
call sub.kernel32.dll_ExitProcess
cmp dword [0x4e3624], 0
jne 0x47200a
push 0
push 0x473018
push 0x47304c
push 0
call sub.user32.dll_MessageBoxA
push 0
call sub.kernel32.dll_ExitProcess
cmp dword [0x4e3510], 0
jne 0x472084
push 0xffffffffffffffff
mov eax, dword [0x4e3624]
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_WaitForSingleObject
xor edx, edx
push ebp
push 0x472068
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [0x4e3624]
mov eax, dword [eax + 8]
test eax, eax
je 0x47204c
mov edx, dword [eax]
mov dword [0x4e3510], edx
mov eax, dword [eax + 8]
test eax, eax
jne 0x47203d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47206f
mov eax, dword [0x4e3624]
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_ReleaseMutex
ret
push 0
call sub.kernel32.dll_GetModuleHandleW
cmp eax, dword [0x4e360c]
je 0x4720a0
cmp byte [0x4e3618], 0
jne 0x4720a0
xor ebx, ebx
jmp 0x4720a2
mov bl, 1
mov eax, dword [0x4e3e4c]
mov edx, dword [eax]
call dword [edx + 0x36c]
test al, al
je 0x472e6f
mov eax, 0x4e3598
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e359c
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35a0
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35a4
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35a8
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35ac
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35b0
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35b4
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35b8
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35bc
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35c0
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35c4
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35d0
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35d4
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35d8
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35dc
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35e0
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35e4
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35e8
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35ec
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35f0
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35f4
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35f8
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e35fc
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e3600
mov edx, dword [0x4e360c]
call fcn.00471308
mov eax, 0x4e3608
mov edx, dword [0x4e360c]
call fcn.00471308
cmp dword [0x4e35e0], 0
je 0x47227f
cmp dword [0x4e3598], 0
je 0x47227f
cmp dword [0x4e35a0], 0
je 0x47227f
cmp dword [0x4e35a8], 0
jne 0x472648
test bl, bl
je 0x472648
mov esi, sub.rtl250.bpl__System_FreeMemory_qpv
cmp word [esi], 0x25ff
jne 0x4722bc
add esi, 2
mov eax, dword [esi]
mov esi, dword [eax]
mov edi, dword [0x4e4adc]
mov edi, dword [edi]
lea ecx, [ebp - 8]
lea edx, [ebp - 0x50]
mov eax, esi
call edi
mov eax, dword [ebp - 0x50]
cmp eax, dword [0x4e360c]
jne 0x4722bc
xor eax, eax
mov dword [ebp - 0x50], eax
mov esi, 0x140
push 0x473088
mov ecx, esi
mov edx, 0x4730d4
mov eax, dword [ebp - 0x50]
call fcn.00471668
mov edi, eax
cmp dword [ebp - 0x50], 0
jne 0x4722f3
push 0x4730e4
mov ecx, esi
mov edx, 0x473108
mov eax, edi
call fcn.00471668
mov dword [ebp - 0x50], eax
push 0x473118
mov ecx, esi
mov edx, 0x473160
xor eax, eax
call fcn.00471668
mov dword [ebp - 0x54], eax
push 0x473174
mov ecx, esi
mov edx, 0x4731c0
xor eax, eax
call fcn.00471668
mov esi, eax
cmp dword [0x4e35e0], 0
jne 0x4725b1
cmp dword [ebp - 0x50], 0
je 0x4725b1
push 0x4731c4
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35b0], eax
cmp dword [0x4e35b0], 0
je 0x4725a8
mov eax, dword [0x4e35b0]
cmp byte [eax], 0xe9
je 0x4725a8
push 0x473230
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35b4], eax
push 0x4732a0
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35b8], eax
push 0x4732f4
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35bc], eax
push 0x473388
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35c0], eax
push 0x4733e4
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35c4], eax
push 0x473430
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35c8], eax
push 0x473478
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35cc], eax
push 0x4734c0
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
mov dword [0x4e35d0], eax
push 0x47350c
mov eax, dword [ebp - 0x50]
push eax
call fcn.00403598
lea edx, [ebp - 0x8c]
call fcn.00413aac
mov byte [ebp - 0x49], 1
jmp 0x47258e
cmp dword [ebp - 0x84], 0
je 0x472569
cmp byte [ebp - 0x85], 0
je 0x472569
cmp dword [ebp - 0x78], 4
jne 0x472569
cmp byte [ebp - 0x49], 0
je 0x4724de
mov byte [ebp - 0x49], 0
lea edx, [ebp - 0xb0]
mov eax, dword [ebp - 0x84]
call fcn.00413aac
jmp 0x4724c1
cmp word [ebp - 0xae], 0xc7
jne 0x472499
cmp byte [ebp - 0xac], 0x40
jne 0x472499
mov eax, dword [ebp - 0x90]
sub eax, 5
cmp byte [eax], 4
jne 0x472499
mov eax, dword [ebp - 0x90]
sub eax, 4
mov eax, dword [eax]
mov dword [0x4e35e8], eax
jmp 0x472569
lea edx, [ebp - 0x100]
mov eax, dword [ebp - 0x90]
call fcn.00413aac
push esi
push edi
lea esi, [ebp - 0x100]
lea edi, [ebp - 0xb0]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
cmp byte [ebp - 0xb0], 0
je 0x472569
cmp word [ebp - 0xae], 0xc3
jne 0x472462
jmp 0x472569
mov eax, dword [ebp - 0x84]
mov dword [0x4e35e0], eax
lea edx, [ebp - 0x8c]
mov eax, dword [0x4e35e0]
call fcn.00413aac
jmp 0x472553
cmp dword [ebp - 0x84], 0
je 0x47252e
cmp word [ebp - 0x8a], 0xe8
jne 0x47252e
cmp byte [ebp - 0x85], 0
je 0x47252e
cmp dword [ebp - 0x78], 4
jne 0x47252e
mov eax, dword [ebp - 0x84]
mov dword [0x4e35e4], eax
jmp 0x4725b1
lea edx, [ebp - 0x100]
mov eax, dword [ebp - 0x6c]
call fcn.00413aac
push esi
push edi
lea esi, [ebp - 0x100]
lea edi, [ebp - 0x8c]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
cmp byte [ebp - 0x8c], 0
je 0x4725b1
cmp word [ebp - 0x8a], 0xc3
jne 0x4724fb
jmp 0x4725b1
lea edx, [ebp - 0x100]
mov eax, dword [ebp - 0x6c]
call fcn.00413aac
push esi
push edi
lea esi, [ebp - 0x100]
lea edi, [ebp - 0x8c]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
cmp byte [ebp - 0x8c], 0
je 0x4725b1
cmp word [ebp - 0x8a], 0xc3
jne 0x47241d
jmp 0x4725b1
xor ebx, ebx
xor eax, eax
mov dword [0x4e35b0], eax
test bl, bl
je 0x472648
cmp dword [0x4e3598], 0
jne 0x4725e6
test edi, edi
je 0x4725e6
push 0x473594
push edi
call fcn.00403598
mov dword [0x4e3598], eax
push 0x473610
push edi
call fcn.00403598
mov dword [0x4e359c], eax
cmp dword [0x4e35a0], 0
jne 0x47261b
cmp dword [ebp - 0x54], 0
je 0x47261b
push 0x47369c
mov eax, dword [ebp - 0x54]
push eax
call fcn.00403598
mov dword [0x4e35a0], eax
push 0x473710
mov eax, dword [ebp - 0x54]
push eax
call fcn.00403598
mov dword [0x4e35a4], eax
cmp dword [0x4e35a8], 0
jne 0x472648
test esi, esi
je 0x472648
push 0x473788
push esi
call fcn.00403598
mov dword [0x4e35a8], eax
push 0x473804
push esi
call fcn.00403598
mov dword [0x4e35ac], eax
mov eax, dword [sym.imp.rtl250.bpl__System_ExceptObjProc]
mov dword [0x4e3f80], eax
cmp dword [0x4e35e8], 0
je 0x47266a
mov edx, 0x46efb4
mov eax, dword [0x4e35e8]
call fcn.004672e4
cmp dword [0x4e3598], 0
je 0x472682
mov edx, 0x46e5d8
mov eax, dword [0x4e3598]
call fcn.004672e4
cmp dword [0x4e359c], 0
je 0x47269a
mov edx, 0x46e5b0
mov eax, dword [0x4e359c]
call fcn.004672e4
cmp dword [0x4e35a0], 0
je 0x4726b2
mov edx, 0x46e5d8
mov eax, dword [0x4e35a0]
call fcn.004672e4
cmp dword [0x4e35a4], 0
je 0x4726ca
mov edx, 0x46e5b0
mov eax, dword [0x4e35a4]
call fcn.004672e4
cmp dword [0x4e35a8], 0
je 0x4726e2
mov edx, 0x46e5d8
mov eax, dword [0x4e35a8]
call fcn.004672e4
cmp dword [0x4e35ac], 0
je 0x4726fa
mov edx, 0x46e5b0
mov eax, dword [0x4e35ac]
call fcn.004672e4
cmp dword [0x4e35b0], 0
je 0x472712
mov edx, 0x46e584
mov eax, dword [0x4e35b0]
call fcn.004672e4
cmp dword [0x4e35d4], 0
je 0x47272a
mov edx, 0x46e61c
mov eax, dword [0x4e35d4]
call fcn.004672e4
cmp dword [0x4e35d8], 0
je 0x472742
mov edx, 0x46e644
mov eax, dword [0x4e35d8]
call fcn.004672e4
cmp dword [0x4e35dc], 0
je 0x47276c
mov byte [0x4e3588], 1
mov eax, 0x18
call sub.rtl250.bpl__System__GetMem_qqri
mov dword [0x4e3f94], eax
mov eax, dword [0x4e3f94]
push eax
call sub.kernel32.dll_InitializeCriticalSection
cmp dword [0x4e35b4], 0
je 0x472844
cmp dword [0x4e35b8], 0
je 0x472844
lea edx, [ebp - 0x48]
mov eax, dword [0x4e35b4]
call fcn.00414dac
mov eax, dword [ebp - 0x28]
call sub.rtl250.bpl__System__DynArrayLength_qqrpxv
dec eax
jne 0x4727a9
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0xc]
mov dword [0x4e35b4], eax
lea edx, [ebp - 0x48]
mov eax, dword [0x4e35b8]
call fcn.00414dac
mov eax, dword [ebp - 0x28]
call sub.rtl250.bpl__System__DynArrayLength_qqrpxv
dec eax
jne 0x4727cc
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0xc]
mov dword [0x4e35b8], eax
lea edx, [ebp - 0x8c]
mov eax, dword [0x4e35b4]
call fcn.00413aac
jmp 0x472832
mov esi, dword [ebp - 0x84]
test esi, esi
je 0x472811
cmp esi, dword [0x4e35b8]
jne 0x472811
cmp dword [ebp - 0x78], 4
jne 0x472844
cmp byte [ebp - 0x85], 0
je 0x472844
mov edx, 0x46e834
sub edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x80]
call fcn.0046733c
jmp 0x472844
lea edx, [ebp - 0x100]
mov eax, dword [ebp - 0x6c]
call fcn.00413aac
lea esi, [ebp - 0x100]
lea edi, [ebp - 0x8c]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
movzx eax, word [ebp - 0x8a]
add eax, 0xffffff3e
sub ax, 2
jae 0x4727de
cmp dword [0x4e35d0], 0
je 0x4728da
mov esi, sub.rtl250.bpl__System_AcquireExceptionObject_qqrv
cmp word [esi], 0x25ff
jne 0x472864
add esi, 2
mov eax, dword [esi]
mov esi, dword [eax]
lea edx, [ebp - 0x8c]
mov eax, dword [0x4e35d0]
call fcn.00413aac
jmp 0x4728c8
mov edi, dword [ebp - 0x84]
test edi, edi
je 0x4728a5
cmp esi, edi
jne 0x4728a5
cmp dword [ebp - 0x78], 4
jne 0x4728da
cmp byte [ebp - 0x85], 0
lea edx, [ebp - 0x100]
mov eax, dword [ebp - 0x6c]
call fcn.00413aac
push esi
lea esi, [ebp - 0x100]
lea edi, [ebp - 0x8c]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
pop esi
movzx eax, word [ebp - 0x8a]
add eax, 0xffffff3e
sub ax, 2
jae 0x472876
lea eax, [ebp - 4]
call fcn.004332e4
cmp dword [ebp - 4], 0
je 0x472e92
mov eax, dword [ebp - 4]
mov eax, dword [eax]
mov dword [0x4e3510], eax
jmp 0x472e9e
mov eax, dword [sym.imp.rtl250.bpl__System_MainThreadID]
mov eax, dword [eax]
mov dword [0x4e3510], eax
mov eax, 0x4e3e4c
call sub.rtl250.bpl__System__IntfClear_qqrr44System__DelphiInterface_17System_IInterface_