Function at 0x525d18
Capabilities:
Check os version
Get system information on windows
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x2e
push 0
push 0
dec ecx
jne 0x525d20
push ebx
push esi
xor eax, eax
push ebp
push 0x526764
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x525bd8]
call fcn.004038ec
mov esi, eax
mov eax, esi
call fcn.00525c44
mov dword [ebp - 0xa0], esi
lea eax, [ebp - 0xd0]
mov edx, 0x24
call fcn.00407970
lea eax, [ebp - 0x9c]
mov edx, 0x9c
call fcn.00407970
mov dword [ebp - 0x9c], 0x9c
lea eax, [ebp - 0x9c]
push eax
call sub.KERNEL32.DLL_GetVersionExA
cmp eax, 1
sbb ebx, ebx
inc ebx
test bl, bl
jne 0x525db0
mov dword [ebp - 0x9c], 0x94
lea eax, [ebp - 0x9c]
push eax
call sub.KERNEL32.DLL_GetVersionExA
test eax, eax
je 0x52672b
push 0x526778
push 0x52678c
call sub.KERNEL32.DLL_GetModuleHandleA
push eax
call sub.KERNEL32.DLL_GetProcAddress
test eax, eax
je 0x525dd4
lea edx, [ebp - 0xd0]
push edx
call eax
jmp 0x525de0
lea eax, [ebp - 0xd0]
push eax
call sub.KERNEL32.DLL_GetSystemInfo
mov eax, dword [ebp - 0x8c]
sub eax, 1
jb 0x526705
je 0x52662c
dec eax
jne 0x52672b
mov edx, 0x5267a4
mov eax, esi
call fcn.00525c64
cmp dword [ebp - 0x98], 6
jne case.0x525f06.0
mov eax, dword [ebp - 0x94]
test eax, eax
jne 0x525e44
cmp byte [ebp - 2], 1
jne 0x525e36
mov edx, 0x5267bc
mov eax, esi
call fcn.00525c64
jmp 0x525eb7
mov edx, 0x5267d4
mov eax, esi
call fcn.00525c64
jmp 0x525eb7
cmp eax, 1
jne 0x525e6b
cmp byte [ebp - 2], 1
jne 0x525e5d
mov edx, 0x5267f0
mov eax, esi
call fcn.00525c64
jmp 0x525eb7
mov edx, 0x526804
mov eax, esi
call fcn.00525c64
jmp 0x525eb7
cmp eax, 2
jne 0x525e92
cmp byte [ebp - 2], 1
jne 0x525e84
mov edx, 0x526824
mov eax, esi
call fcn.00525c64
jmp 0x525eb7
mov edx, 0x526838
mov eax, esi
call fcn.00525c64
jmp 0x525eb7
cmp eax, 3
jne 0x525eb7
cmp byte [ebp - 2], 1
jne 0x525eab
mov edx, 0x526854
mov eax, esi
call fcn.00525c64
jmp 0x525eb7
mov edx, 0x526868
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x124]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x124]
mov eax, esi
call fcn.00525cb0
push 0x526880
push 0x52678c
call sub.KERNEL32.DLL_GetModuleHandleA
push eax
call sub.KERNEL32.DLL_GetProcAddress
lea edx, [ebp - 0xac]
push edx
push 0
push 0
push 0
push 6
call eax
mov eax, dword [ebp - 0xac]
cmp eax, 0x19
ja case.0x525f06.0
jmp dword [eax*4 + 0x525f0d]
mov edx, 0x526898
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x5268b4
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x5268d4
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x5268f0
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x52690c
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526928
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526944
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526964
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526980
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x5268f0
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x5269b0
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x5269e0
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526a18
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526a38
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526a68
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526a84
mov eax, esi
call fcn.00525cb0
jmp case.0x525f06.0
mov edx, 0x526ab4
mov eax, esi
call fcn.00525cb0
lea edx, [ebp - 0x128]
mov eax, esi
call fcn.00525d00
mov eax, dword [ebp - 0x128]
mov edx, 0x5267a4
call fcn.00404b08
jne 0x5260a1
mov edx, 0x5267a4
mov eax, esi
call fcn.00525cb0
mov ax, word [ebp - 0xd0]
cmp ax, 9
jne 0x5260c5
mov edx, 0x526ad0
mov eax, esi
call fcn.00525cb0
mov dl, 0x40
mov eax, esi
call fcn.00525cfc
jmp 0x5260df
test ax, ax
jne 0x5260df
mov edx, 0x526ae4
mov eax, esi
call fcn.00525cb0
mov dl, 0x20
mov eax, esi
call fcn.00525cfc
cmp dword [ebp - 0x98], 5
jne 0x526261
cmp dword [ebp - 0x94], 2
jne 0x526261
push 0x59
call sub.user32.dll_GetSystemMetrics
test eax, eax
je 0x526112
mov edx, 0x526af8
mov eax, esi
call fcn.00525c64
jmp 0x526168
mov ax, word [ebp - 4]
cmp ax, 0x2000
jne 0x52612a
mov edx, 0x526b18
mov eax, esi
call fcn.00525c64
jmp 0x526168
cmp ax, 0x800
jne 0x52613e
mov edx, 0x526b3c
mov eax, esi
call fcn.00525c64
jmp 0x526168
cmp byte [ebp - 2], 1
jne 0x52615c
cmp word [ebp - 0xd0], 9
jne 0x52615c
mov edx, 0x526b58
mov eax, esi
call fcn.00525c64
jmp 0x526168
mov edx, 0x526b84
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x12c]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x12c]
mov eax, esi
call fcn.00525cb0
cmp byte [ebp - 2], 1
je 0x526261
mov ax, word [ebp - 0xd0]
cmp ax, 6
jne 0x5261cb
mov ax, word [ebp - 4]
test al, 0x80
je 0x5261b2
mov edx, 0x526ba0
mov eax, esi
call fcn.00525cb0
jmp 0x526261
test al, 2
je 0x526261
mov edx, 0x5269e0
mov eax, esi
call fcn.00525cb0
jmp 0x526261
cmp ax, 9
jne 0x526207
mov ax, word [ebp - 4]
test al, 0x80
je 0x5261e7
mov edx, 0x526bd8
mov eax, esi
call fcn.00525cb0
jmp 0x526261
test al, 2
je 0x5261f9
mov edx, 0x526bf8
mov eax, esi
call fcn.00525cb0
jmp 0x526261
mov edx, 0x526c18
mov eax, esi
call fcn.00525cb0
jmp 0x526261
mov ax, word [ebp - 4]
test ah, 0x40
je 0x52621e
mov edx, 0x526c38
mov eax, esi
call fcn.00525cb0
jmp 0x526261
test al, 0x80
je 0x526230
mov edx, 0x526964
mov eax, esi
call fcn.00525cb0
jmp 0x526261
test al, 2
je 0x526242
mov edx, 0x5268f0
mov eax, esi
call fcn.00525cb0
jmp 0x526261
test ah, 4
je 0x526255
mov edx, 0x526c5c
mov eax, esi
call fcn.00525cb0
jmp 0x526261
mov edx, 0x526a68
mov eax, esi
call fcn.00525cb0
cmp dword [ebp - 0x98], 5
jne 0x5262b9
cmp dword [ebp - 0x94], 1
jne 0x5262b9
mov edx, 0x526c74
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x130]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x130]
mov eax, esi
call fcn.00525cb0
test byte [ebp - 3], 2
je 0x5262ad
mov edx, 0x526c88
mov eax, esi
call fcn.00525cb0
jmp 0x5262b9
mov edx, 0x526ca0
mov eax, esi
call fcn.00525cb0
cmp dword [ebp - 0x98], 5
jne 0x526339
cmp dword [ebp - 0x94], 0
jne 0x526339
mov edx, 0x526cb8
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x134]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x134]
mov eax, esi
call fcn.00525cb0
cmp byte [ebp - 2], 1
jne 0x526305
mov edx, 0x526ca0
mov eax, esi
call fcn.00525cb0
jmp 0x526339
mov ax, word [ebp - 4]
test al, 0x80
je 0x52631b
mov edx, 0x526cd0
mov eax, esi
call fcn.00525cb0
jmp 0x526339
test al, 2
je 0x52632d
mov edx, 0x526cec
mov eax, esi
call fcn.00525cb0
jmp 0x526339
mov edx, 0x526d08
mov eax, esi
call fcn.00525cb0
cmp dword [ebp - 0x98], 4
ja 0x5264ea
mov edx, 0x526d18
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x138]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x138]
mov eax, esi
call fcn.00525cb0
test bl, bl
je 0x5263c8
cmp byte [ebp - 2], 1
jne 0x526391
cmp word [ebp - 0xd0], 9
je 0x526391
mov edx, 0x526d2c
mov eax, esi
call fcn.00525cb0
jmp 0x5264ea
mov al, byte [ebp - 2]
cmp al, 3
je 0x5263a0
cmp al, 2
jne 0x5264ea
test byte [ebp - 4], 2
je 0x5263b7
mov edx, 0x526d48
mov eax, esi
call fcn.00525cb0
jmp 0x5264ea
mov edx, 0x526d08
mov eax, esi
call fcn.00525cb0
jmp 0x5264ea
mov dword [ebp - 0xa8], 0x50
lea eax, [ebp - 0xa4]
push eax
push 1
push 0
push 0x526d68
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x52672b
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x11f]
push eax
push 0
push 0
push 0x526d98
mov eax, dword [ebp - 0xa4]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
jne 0x52672b
cmp dword [ebp - 0xa8], 0x50
ja 0x52672b
mov eax, dword [ebp - 0xa4]
push eax
call sub.advapi32.dll_RegCloseKey
lea eax, [ebp - 0x120]
push eax
push 0x526da4
call sub.KERNEL32.DLL_lstrcmpiA
test eax, eax
jne 0x526459
mov edx, 0x526db4
mov eax, esi
call fcn.00525cb0
lea eax, [ebp - 0x120]
push eax
push 0x526dc4
call sub.KERNEL32.DLL_lstrcmpiA
test eax, eax
jne 0x52647a
mov edx, 0x526d08
mov eax, esi
call fcn.00525cb0
lea eax, [ebp - 0x120]
push eax
push 0x526dd0
call sub.KERNEL32.DLL_lstrcmpiA
test eax, eax
jne 0x52649b
mov edx, 0x526cec
mov eax, esi
call fcn.00525cb0
lea eax, [ebp - 0x13c]
push eax
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x14c], eax
mov byte [ebp - 0x148], 0
mov eax, dword [ebp - 0x94]
mov dword [ebp - 0x144], eax
mov byte [ebp - 0x140], 0
lea edx, [ebp - 0x14c]
mov ecx, 1
mov eax, 0x526de4
call fcn.00409d04
mov edx, dword [ebp - 0x13c]
mov eax, esi
call fcn.00525cb0
cmp dword [ebp - 0x98], 4
jne 0x5265d3
push 0x526dec
lea eax, [ebp - 0x88]
push eax
call sub.KERNEL32.DLL_lstrcmpiA
test eax, eax
jne 0x5265d3
lea eax, [ebp - 0xa4]
push eax
push 1
push 0
push 0x526dfc
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x52656e
lea eax, [ebp - 0x150]
push eax
mov eax, dword [ebp - 0x90]
and eax, 0xffff
mov dword [ebp - 0x158], eax
mov byte [ebp - 0x154], 0
lea edx, [ebp - 0x158]
xor ecx, ecx
mov eax, 0x526e40
call fcn.00409d04
mov edx, dword [ebp - 0x150]
mov eax, esi
call fcn.00525cb0
jmp 0x5265c2
lea eax, [ebp - 0x15c]
push eax
lea eax, [ebp - 0x88]
mov dword [ebp - 0x14c], eax
mov byte [ebp - 0x148], 6
mov eax, dword [ebp - 0x90]
and eax, 0xffff
mov dword [ebp - 0x144], eax
mov byte [ebp - 0x140], 0
lea edx, [ebp - 0x14c]
mov ecx, 1
mov eax, 0x526e64
call fcn.00409d04
mov edx, dword [ebp - 0x15c]
mov eax, esi
call fcn.00525cb0
mov eax, dword [ebp - 0xa4]
push eax
call sub.advapi32.dll_RegCloseKey
jmp 0x52672b
lea eax, [ebp - 0x160]
push eax
lea eax, [ebp - 0x88]
mov dword [ebp - 0x14c], eax
mov byte [ebp - 0x148], 6
mov eax, dword [ebp - 0x90]
and eax, 0xffff
mov dword [ebp - 0x144], eax
mov byte [ebp - 0x140], 0
lea edx, [ebp - 0x14c]
mov ecx, 1
mov eax, 0x526e64
call fcn.00409d04
mov edx, dword [ebp - 0x160]
mov eax, esi
call fcn.00525cb0
jmp 0x52672b
cmp dword [ebp - 0x98], 4
jne 0x52667e
cmp dword [ebp - 0x94], 0
jne 0x52667e
mov edx, 0x526e7c
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x164]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x164]
mov eax, esi
call fcn.00525cb0
mov al, byte [ebp - 0x87]
cmp al, 0x43
je 0x526672
cmp al, 0x42
jne 0x52667e
mov edx, 0x526e90
mov eax, esi
call fcn.00525cb0
cmp dword [ebp - 0x98], 4
jne 0x5266cb
cmp dword [ebp - 0x94], 0xa
jne 0x5266cb
mov edx, 0x526ea0
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x168]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x168]
mov eax, esi
call fcn.00525cb0
cmp byte [ebp - 0x87], 0x41
jne 0x5266cb
mov edx, 0x526eb4
mov eax, esi
call fcn.00525cb0
cmp dword [ebp - 0x98], 4
jne 0x52672b
cmp dword [ebp - 0x94], 0x5a
jne 0x52672b
mov edx, 0x526ec0
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x16c]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x16c]
mov eax, esi
call fcn.00525cb0
jmp 0x52672b
mov edx, 0x526ed4
mov eax, esi
call fcn.00525c64
lea edx, [ebp - 0x170]
mov eax, esi
call fcn.00525d00
mov edx, dword [ebp - 0x170]
mov eax, esi
call fcn.00525cb0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x52676b
lea eax, [ebp - 0x170]
mov edx, 6
call fcn.00404730
lea eax, [ebp - 0x150]
call fcn.0040470c
lea eax, [ebp - 0x13c]
mov edx, 7
call fcn.00404730
ret