Function at 0x10004260
Capabilities:
Check os version
Get system information on windows

Disassembly:
sub esp, 0x144
mov eax, dword [0x1001203c]
xor eax, esp
mov dword [esp + 0x140], eax
lea eax, [esp]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
lea ecx, [esp + 0x24]
push ecx
mov dword [esp + 0x28], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x100046ce
mov eax, dword [esp + 0x28]
sub eax, 4
push ebx
push edi
mov ebx, 1
je 0x1000463c
sub eax, ebx
je 0x100043f0
sub eax, ebx
je 0x100042d6
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0x1e
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov eax, dword [esp + 0x34]
cmp eax, 3
ja case.default.0x100042e3
jmp dword [eax*4 + 0x100046e8]
cmp byte [esp + 0x146], bl
jne 0x10004321
mov edx, 0x200
cmp word [esp + 0x144], dx
pop edi
setne al
add al, 0x13
mov byte [esi + 0x5a], al
mov eax, ebx
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov ax, word [esp + 0x144]
mov ecx, 0x80
cmp ax, cx
jne 0x10004350
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0x15
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
cmp ax, 2
setne dl
add dl, 0x16
pop edi
mov eax, ebx
mov byte [esi + 0x5a], dl
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
cmp byte [esp + 0x146], bl
pop edi
setne al
add al, 0x18
mov byte [esi + 0x5a], al
mov eax, ebx
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
cmp byte [esp + 0x146], bl
pop edi
setne cl
add cl, 0x1a
mov eax, ebx
mov byte [esi + 0x5a], cl
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
cmp byte [esp + 0x146], bl
pop edi
setne dl
add dl, 0x1c
mov eax, ebx
mov byte [esi + 0x5a], dl
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov eax, dword [esp + 0x34]
sub eax, 0
je 0x10004612
sub eax, ebx
je 0x100045bd
sub eax, ebx
jne case.default.0x100042e3
cmp byte [esp + 0x146], bl
jne 0x10004426
mov eax, 9
cmp word [esp + 8], ax
je 0x10004620
mov ax, word [esp + 0x144]
mov ecx, 0x8000
cmp ax, cx
jne 0x10004455
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0xa
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov edx, 0x2000
cmp ax, dx
jne 0x1000447c
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0xb
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov edi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x59
call edi
test eax, eax
jne 0x100044b6
mov eax, 0x400
cmp word [esp + 0x144], ax
jne 0x100044b6
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0xc
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
push 0x59
call edi
test eax, eax
jne 0x100044ea
mov ecx, 0x4000
cmp word [esp + 0x144], cx
jne 0x100044ea
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0xd
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
push 0x59
call edi
test eax, eax
jne 0x1000451e
mov edx, 0x2000
cmp word [esp + 0x144], dx
jne 0x1000451e
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0xe
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
push 0x59
call edi
test eax, eax
jne 0x10004552
mov eax, 0x80
cmp word [esp + 0x144], ax
jne 0x10004552
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0xf
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
push 0x59
call edi
test eax, eax
jne 0x10004582
cmp word [esp + 0x144], 2
jne 0x10004582
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0x10
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
push 0x59
call edi
test eax, eax
je case.default.0x100042e3
mov ecx, 0x2000
cmp word [esp + 0x144], cx
pop edi
setne dl
add dl, 0x11
mov eax, ebx
mov byte [esi + 0x5a], dl
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov ax, word [esp + 0x144]
cmp ax, 0x40
jne 0x100045e8
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 6
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov ecx, 0x200
cmp ax, cx
setne dl
add dl, 7
pop edi
mov eax, ebx
mov byte [esi + 0x5a], dl
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
cmp word [esp + 0x144], 2
setne al
add al, 4
mov byte [esi + 0x5a], al
pop edi
mov eax, ebx
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov eax, dword [esp + 0x34]
test eax, eax
je 0x10004688
cmp eax, 0xa
je 0x1000466b
cmp eax, 0x5a
jne case.default.0x100042e3
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 3
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 2
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov eax, dword [esp + 0x3c]
cmp eax, 2
jne 0x100046ae
pop edi
mov eax, ebx
mov byte [esi + 0x5a], 0
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
cmp eax, ebx
jne case.default.0x100042e3
mov byte [esi + 0x5a], bl
pop edi
mov eax, ebx
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.10004b1d
add esp, 0x144
ret
mov ecx, dword [esp + 0x140]
xor ecx, esp
xor eax, eax
call fcn.10004b1d
add esp, 0x144
ret