Function at 0x45b154
Capabilities:
Check os version
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffea8
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x158], ecx
mov dword [ebp - 0x154], ecx
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x124], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
mov esi, eax
xor eax, eax
push ebp
push 0x45bc3c
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [esi], 0xffffffff
lea eax, [ebp - 0xac]
xor ecx, ecx
mov edx, 0x9c
call fcn.00403734
mov dword [ebp - 0xac], 0x9c
lea eax, [ebp - 0xac]
push eax
call sub.kernel32.dll_GetVersionExA_1
cmp eax, 1
sbb ebx, ebx
inc ebx
test bl, bl
jne 0x45b1f8
mov dword [ebp - 0xac], 0x94
lea eax, [ebp - 0xac]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
jne 0x45b1f8
xor eax, eax
mov dword [esi], eax
mov eax, dword [ebp - 8]
mov edx, 0x45bc54
call fcn.00404e94
jmp 0x45bc00
lea eax, [ebp - 0x120]
call fcn.004249e8
mov eax, dword [ebp - 0x9c]
sub eax, 1
jb 0x45bbeb
je 0x45b9f4
dec eax
jne 0x45bbfa
cmp dword [ebp - 0xa8], 6
jne 0x45b338
cmp dword [ebp - 0xa4], 0
jne 0x45b338
cmp byte [ebp - 0x12], 1
jne 0x45b32b
movzx edi, word [ebp - 0xa0]
movzx eax, di
cmp eax, 0xfbd
jg 0x45b270
je 0x45b2ae
sub eax, 0xe63
je 0x45b28a
sub eax, 0x23
je 0x45b28a
sub eax, 0x122
je 0x45b29c
sub eax, 7
je 0x45b2ae
jmp 0x45b2ea
sub eax, 0xfd3
je 0x45b2bd
sub eax, 2
je 0x45b2bd
sub eax, 0x15
je 0x45b2cc
sub eax, 0x3ce
je 0x45b2db
jmp 0x45b2ea
mov eax, dword [ebp - 8]
mov edx, 0x45bc8c
call fcn.00404e94
jmp 0x45b338
mov eax, dword [ebp - 8]
mov edx, 0x45bcc0
call fcn.00404e94
jmp 0x45b338
mov eax, dword [ebp - 8]
mov edx, 0x45bcf4
call fcn.00404e94
jmp 0x45b338
mov eax, dword [ebp - 8]
mov edx, 0x45bd28
call fcn.00404e94
jmp 0x45b338
mov eax, dword [ebp - 8]
mov edx, 0x45bd5c
call fcn.00404e94
jmp 0x45b338
mov eax, dword [ebp - 8]
mov edx, 0x45bd94
call fcn.00404e94
jmp 0x45b338
mov eax, dword [ebp - 8]
mov edx, 0x45bdc4
call fcn.00404e94
sub di, 0x13f8
jne 0x45b30e
mov eax, dword [ebp - 8]
mov edx, 0x45bde8
call fcn.0040510c
mov eax, dword [ebp - 8]
lea eax, [ebp - 4]
movzx edx, byte [ebp - 0x98]
call fcn.00405038
cmp dword [ebp - 4], 0
jne 0x45b338
mov dword [esi], 2
jmp 0x45b338
mov eax, dword [ebp - 8]
mov edx, 0x45be10
call fcn.00404e94
cmp dword [ebp - 0xa8], 5
jne 0x45b383
cmp dword [ebp - 0xa4], 2
jne 0x45b383
push 0x59
call sub.user32.dll_GetSystemMetrics
test eax, eax
je 0x45b364
mov eax, dword [ebp - 8]
mov edx, 0x45be40
call fcn.00404e94
jmp 0x45b390
cmp byte [ebp - 0x12], 1
jne 0x45b390
cmp word [ebp - 0x120], 9
jne 0x45b390
mov eax, dword [ebp - 8]
mov edx, 0x45be6c
call fcn.00404e94
jmp 0x45b390
mov eax, dword [ebp - 8]
mov edx, 0x45bea4
call fcn.00404e94
cmp dword [ebp - 0xa8], 5
jne 0x45b3af
cmp dword [ebp - 0xa4], 1
jne 0x45b3af
mov eax, dword [ebp - 8]
mov edx, 0x45becc
call fcn.00404e94
mov esi, dword [ebp - 0xa8]
cmp esi, 5
jne 0x45b3d0
cmp dword [ebp - 0xa4], 0
jne 0x45b3d0
mov eax, dword [ebp - 8]
mov edx, 0x45beec
call fcn.00404e94
cmp esi, 4
ja 0x45b3e2
mov eax, dword [ebp - 8]
mov edx, 0x45bf0c
call fcn.00404e94
test bl, bl
je 0x45b712
cmp byte [ebp - 0x12], 1
jne 0x45b4b0
cmp word [ebp - 0x120], 9
je 0x45b4b0
cmp dword [ebp - 0xa8], 4
jne 0x45b420
mov eax, dword [ebp - 8]
mov edx, 0x45bf2c
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
test byte [ebp - 0x13], 2
je 0x45b43b
mov eax, dword [ebp - 8]
mov edx, 0x45bf48
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
push 0x57
call sub.user32.dll_GetSystemMetrics
test eax, eax
je 0x45b45b
mov eax, dword [ebp - 8]
mov edx, 0x45bf60
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
push 0x56
call sub.user32.dll_GetSystemMetrics
test eax, eax
je 0x45b47b
mov eax, dword [ebp - 8]
mov edx, 0x45bf80
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
push 0x58
call sub.user32.dll_GetSystemMetrics
test eax, eax
je 0x45b49b
mov eax, dword [ebp - 8]
mov edx, 0x45bf9c
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45bfb8
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
movzx eax, byte [ebp - 0x12]
cmp al, 3
je 0x45b4c0
cmp al, 2
jne 0x45b87c
cmp dword [ebp - 0xa8], 5
jne 0x45b5e9
cmp dword [ebp - 0xa4], 2
jne 0x45b5e9
movzx eax, word [ebp - 0x120]
cmp ax, 6
jne 0x45b532
movzx eax, word [ebp - 0x14]
test al, 0x80
je 0x45b504
mov eax, dword [ebp - 8]
mov edx, 0x45bfd0
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
test al, 2
je 0x45b51d
mov eax, dword [ebp - 8]
mov edx, 0x45c008
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c040
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
cmp ax, 9
jne 0x45b583
movzx eax, word [ebp - 0x14]
test al, 0x80
je 0x45b555
mov eax, dword [ebp - 8]
mov edx, 0x45c074
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
test al, 2
je 0x45b56e
mov eax, dword [ebp - 8]
mov edx, 0x45c094
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c0b4
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
movzx eax, word [ebp - 0x14]
test al, 0x80
je 0x45b5a0
mov eax, dword [ebp - 8]
mov edx, 0x45c0d4
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
test al, 2
je 0x45b5b9
mov eax, dword [ebp - 8]
mov edx, 0x45c0f0
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
cmp ax, 0x400
jne 0x45b5d4
mov eax, dword [ebp - 8]
mov edx, 0x45c10c
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c124
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
cmp dword [ebp - 0xa8], 5
jne 0x45b6e2
cmp dword [ebp - 0xa4], 0
jne 0x45b6e2
movzx eax, word [ebp - 0x14]
test al, 0x80
je 0x45b61d
mov eax, dword [ebp - 8]
mov edx, 0x45c140
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b643
test al, 2
je 0x45b633
mov eax, dword [ebp - 8]
mov edx, 0x45c15c
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b643
mov eax, dword [ebp - 8]
mov edx, 0x45c178
call fcn.0040510c
mov eax, dword [ebp - 8]
movzx eax, word [ebp - 0xa0]
cmp eax, 0x7ef
jg 0x45b666
je 0x45b6a3
sub eax, 0x687
je 0x45b679
sub eax, 0xce
je 0x45b68e
jmp 0x45b87c
sub eax, 0x818
je 0x45b6b8
sub eax, 0xbdf
je 0x45b6cd
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c188
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c1ac
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c1d0
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c1f4
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c230
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
test byte [ebp - 0x14], 2
je 0x45b6fd
mov eax, dword [ebp - 8]
mov edx, 0x45c250
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov eax, dword [ebp - 8]
mov edx, 0x45c278
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45b87c
mov dword [ebp - 0x10], 0x50
lea eax, [ebp - 0xc]
push eax
push 1
push 0
push 0x45c284
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x45b7ab
xor eax, eax
push ebp
push 0x45b7a4
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0xfc]
xor ecx, ecx
mov edx, 0x50
call fcn.00403734
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xfc]
push eax
push 0
push 0
push 0x45c2b4
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x45b77b
cmp dword [ebp - 0x10], 0x50
jbe 0x45b78d
lea eax, [ebp - 0xfc]
xor ecx, ecx
mov edx, 0x50
call fcn.00403734
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45b7ab
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey_1
ret
lea eax, [ebp - 0xfc]
push eax
push 0x45c2c0
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x45b7d0
mov eax, dword [ebp - 8]
mov edx, 0x45c2d0
call fcn.0040510c
mov eax, dword [ebp - 8]
lea eax, [ebp - 0xfc]
push eax
push 0x45c2e0
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x45b7f5
mov eax, dword [ebp - 8]
mov edx, 0x45c178
call fcn.0040510c
mov eax, dword [ebp - 8]
lea eax, [ebp - 0xfc]
push eax
push 0x45c2ec
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x45b81a
mov eax, dword [ebp - 8]
mov edx, 0x45c15c
call fcn.0040510c
mov eax, dword [ebp - 8]
lea eax, [ebp - 0x124]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov dword [ebp - 0x13c], eax
mov byte [ebp - 0x138], 0xb
mov eax, dword [ebp - 0xa8]
mov dword [ebp - 0x134], eax
mov byte [ebp - 0x130], 0
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0x12c], eax
mov byte [ebp - 0x128], 0
lea edx, [ebp - 0x13c]
mov ecx, 2
mov eax, 0x45c300
call fcn.0040d434
mov edx, dword [ebp - 0x124]
mov eax, dword [ebp - 8]
call fcn.00404e94
cmp dword [ebp - 0xa8], 4
jne 0x45b988
push 0x45c308
lea eax, [ebp - 0x98]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x45b988
lea eax, [ebp - 0xc]
push eax
push 1
push 0
push 0x45c318
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x45b913
lea eax, [ebp - 0x140]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov dword [ebp - 0x150], eax
mov byte [ebp - 0x14c], 0xb
mov eax, dword [ebp - 0xa0]
and eax, 0xffff
mov dword [ebp - 0x148], eax
mov byte [ebp - 0x144], 0
lea edx, [ebp - 0x150]
mov ecx, 1
mov eax, 0x45c35c
call fcn.0040d434
mov edx, dword [ebp - 0x140]
mov eax, dword [ebp - 8]
call fcn.00404e94
jmp 0x45b97a
lea eax, [ebp - 0x154]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov dword [ebp - 0x13c], eax
mov byte [ebp - 0x138], 0xb
lea eax, [ebp - 0x98]
mov dword [ebp - 0x134], eax
mov byte [ebp - 0x130], 6
mov eax, dword [ebp - 0xa0]
and eax, 0xffff
mov dword [ebp - 0x12c], eax
mov byte [ebp - 0x128], 0
lea edx, [ebp - 0x13c]
mov ecx, 2
mov eax, 0x45c384
call fcn.0040d434
mov edx, dword [ebp - 0x154]
mov eax, dword [ebp - 8]
call fcn.00404e94
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey_1
jmp 0x45bc00
lea eax, [ebp - 0x158]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov dword [ebp - 0x13c], eax
mov byte [ebp - 0x138], 0xb
lea eax, [ebp - 0x98]
mov dword [ebp - 0x134], eax
mov byte [ebp - 0x130], 6
mov eax, dword [ebp - 0xa0]
and eax, 0xffff
mov dword [ebp - 0x12c], eax
mov byte [ebp - 0x128], 0
lea edx, [ebp - 0x13c]
mov ecx, 2
mov eax, 0x45c384
call fcn.0040d434
mov edx, dword [ebp - 0x158]
mov eax, dword [ebp - 8]
call fcn.00404e94
jmp 0x45bc00
cmp dword [ebp - 0xa8], 4
jne 0x45bb26
cmp dword [ebp - 0xa4], 0
jne 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c39c
call fcn.00404e94
movzx eax, word [ebp - 0xa0]
cmp eax, 0x3b6
jg 0x45ba4c
je 0x45bac5
sub eax, 0x7a
je 0x45ba77
sub eax, 0x43
je 0x45ba8c
sub eax, 0x9e
je 0x45baa1
sub eax, 0x85
je 0x45bab3
jmp 0x45bb26
sub eax, 0x3e7
je 0x45bae0
sub eax, 0x70
je 0x45baf2
add eax, 0xffffff9b
sub eax, 2
jb 0x45bb04
je 0x45bb16
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c3bc
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c3e0
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c410
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c440
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
cmp byte [ebp - 0x98], 0x41
jne 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c470
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c480
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c4a8
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c4b8
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bb26
mov eax, dword [ebp - 8]
mov edx, 0x45c4cc
call fcn.0040510c
mov eax, dword [ebp - 8]
cmp dword [ebp - 0xa8], 4
jne 0x45bbad
cmp dword [ebp - 0xa4], 0xa
jne 0x45bbad
mov eax, dword [ebp - 8]
mov edx, 0x45c4e0
call fcn.00404e94
cmp byte [ebp - 0x98], 0x41
jne 0x45bb5e
mov eax, dword [ebp - 8]
mov edx, 0x45c500
call fcn.0040510c
mov eax, dword [ebp - 8]
movzx eax, word [ebp - 0xa0]
sub ax, 0x56b
je 0x45bb79
sub ax, 0x65
je 0x45bb8b
sub ax, 0x8d
je 0x45bb9d
jmp 0x45bbad
mov eax, dword [ebp - 8]
mov edx, 0x45c50c
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bbad
mov eax, dword [ebp - 8]
mov edx, 0x45c53c
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bbad
mov eax, dword [ebp - 8]
mov edx, 0x45c564
call fcn.0040510c
mov eax, dword [ebp - 8]
cmp dword [ebp - 0xa8], 4
jne 0x45bc00
cmp dword [ebp - 0xa4], 0x5a
jne 0x45bc00
mov eax, dword [ebp - 8]
mov edx, 0x45c58c
call fcn.00404e94
movzx eax, word [ebp - 0xa0]
sub ax, 0x94c
jne 0x45bc00
mov eax, dword [ebp - 8]
mov edx, 0x45c5bc
call fcn.0040510c
mov eax, dword [ebp - 8]
jmp 0x45bc00
mov eax, dword [ebp - 8]
mov edx, 0x45c5e4
call fcn.00404e94
jmp 0x45bc00
mov dword [esi], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45bc43
lea eax, [ebp - 0x158]
mov edx, 2
call fcn.00404e64
lea eax, [ebp - 0x140]
call fcn.00404e40
lea eax, [ebp - 0x124]
call fcn.00404e40
lea eax, [ebp - 4]
call fcn.00404e40
ret