Function at 0x5d1a80
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x95a1a8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x94
push ebx
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x7c]
call fcn.00911f0c
xor edi, edi
lea ecx, [esp + 0x68]
mov dword [esp + 0xa8], edi
call fcn.00911f0c
mov bl, 1
lea ecx, [esp + 0x4c]
mov byte [esp + 0xa8], bl
call fcn.00911f0c
lea eax, [esi + 0x2d2c]
lea ecx, [esp + 0x4c]
push eax
mov byte [esp + 0xac], 2
mov dword [esp + 0x54], edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], edi
mov dword [esp + 0x98], edi
mov dword [esp + 0x9c], edi
call fcn.00911f06
lea ecx, [esi + 0x2d91]
push ecx
lea ecx, [esp + 0x6c]
call fcn.00911f06
mov eax, dword [ebp + 8]
movsx edx, word [esi + 0x2d0a]
lea edi, [eax + 1]
mov eax, dword [esi + 0x2058]
cmp edi, eax
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], edi
jge 0x5d24b0
push edi
mov ecx, esi
call fcn.005c3100
cmp word [esi + 0x2da6], 0x11
jl 0x5d1bac
mov edx, dword [esp + 0x50]
mov eax, dword [esi + 0x2058]
inc edx
inc edi
cmp edi, eax
mov dword [esp + 0x50], edx
jl 0x5d1b86
mov eax, dword [esp + 0x50]
test eax, eax
jle 0x5d24b0
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x88], eax
push ebx
mov ecx, esi
call fcn.005c3100
fld qword [esi + 0x2d10]
call fcn.00912a20
mov ecx, dword [esi + 0x2d18]
mov edx, dword [esi + 0x2d1c]
mov edi, eax
mov eax, dword [0xa8e7a0]
cmp edi, eax
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], edx
jle 0x5d1c2e
mov ecx, edi
sub ecx, eax
push ecx
mov ecx, esi
call fcn.005c3340
mov ecx, dword [0xa8e7a0]
mov edx, edi
sub edx, ecx
mov ecx, esi
push edx
call fcn.005c33c0
mov ecx, dword [0xa8e7a0]
sub edi, ecx
mov ecx, esi
push edi
call fcn.005cf7e0
jmp 0x5d1c46
push edi
mov ecx, esi
call fcn.005c3300
push edi
mov ecx, esi
call fcn.005c3380
push edi
mov ecx, esi
call fcn.005cf440
fld qword [esp + 0x8c]
fmul qword [esi + 0x2ce0]
mov eax, dword [esp + 0x80]
test eax, eax
fstp qword [esp + 0xc]
fld qword [esp + 0x8c]
fmul qword [esi + 0x2ce8]
fstp qword [esp + 0x24]
jne 0x5d1cef
push 0xa7bf04
lea ecx, [esp + 0x50]
call fcn.009121e8
cmp eax, 0xffffffff
jne 0x5d1cca
push 0xa7bf0c
lea ecx, [esp + 0x50]
call fcn.009121e8
cmp eax, 0xffffffff
jne 0x5d1cca
push 0xa7e804
lea ecx, [esp + 0x50]
call fcn.009121e8
cmp eax, 0xffffffff
jne 0x5d1cca
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
push 3
push eax
push ecx
mov ecx, esi
call fcn.005c0970
fstp qword [esp + 0xc]
push 3
jmp 0x5d1d4e
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
push 2
push ecx
push edx
mov ecx, esi
call fcn.005c0970
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
fstp qword [esp + 0xc]
push 2
push eax
push ecx
jmp 0x5d1d58
mov eax, dword [esi + 0x2094]
test eax, eax
jle 0x5d1d63
cmp eax, 6
jge 0x5d1d63
mov eax, dword [0xa8e838]
mov edi, 0xa7e7fc
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [edi]
jne 0x5d1d2c
test cl, cl
je 0x5d1d28
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [edi + 1]
jne 0x5d1d2c
add eax, 2
add edi, 2
test cl, cl
jne 0x5d1d08
xor eax, eax
jmp 0x5d1d31
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x5d1d63
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
push 2
push eax
push ecx
mov ecx, esi
call fcn.005c0970
fstp qword [esp + 0xc]
push 2
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push edx
push eax
mov ecx, esi
call fcn.005c0970
fstp qword [esp + 0x24]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
push ecx
push edx
mov ecx, esi
call fcn.008f5ce0
fcomp qword [0x9ccd50]
fnstsw ax
test ah, 0x41
jne 0x5d1d91
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
push eax
push ecx
mov ecx, esi
call fcn.008f5ce0
fcomp qword [0x9ccd50]
fnstsw ax
test ah, 0x41
jne 0x5d1dbf
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov al, byte [0xa8e771]
test al, al
je 0x5d1df8
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
push edx
push eax
mov ecx, esi
call fcn.008f5ce0
fld dword [esi + 0xe4]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5d1df8
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov ax, word [esi + 0x2da6]
cmp ax, 0x11
jne 0x5d1e22
fld qword [esp + 0xc]
fadd qword [esp + 0x3c]
fstp qword [esp + 0x3c]
fld qword [esp + 0x24]
fadd qword [esp + 0x44]
fstp qword [esp + 0x44]
jmp 0x5d1f85
mov edx, dword [esi + 0x90]
movsx ecx, ax
cmp ecx, edx
je 0x5d1f55
cmp ax, 0x15
je 0x5d1f55
cmp ax, 0x17
je 0x5d1f55
cmp ax, 0x18
je 0x5d1f55
cmp ax, 0x1a
je 0x5d1f55
cmp ax, 0x13
jne 0x5d1e7e
fld qword [esp + 0xc]
fadd qword [esp + 0x34]
fstp qword [esp + 0x34]
fld qword [esp + 0x24]
fadd qword [esp + 0x1c]
fstp qword [esp + 0x1c]
jmp 0x5d1f85
cmp ecx, dword [esi + 0x94]
jne 0x5d1e9d
fld qword [esp + 0x94]
fadd qword [esp + 0xc]
fstp qword [esp + 0x94]
jmp 0x5d1f85
cmp ecx, dword [esi + 0x98]
jne 0x5d1eb6
fld qword [esp + 0xc]
fadd qword [esp + 0x5c]
fstp qword [esp + 0x5c]
jmp 0x5d1f85
cmp ax, 0x21
jne 0x5d1ecd
fld qword [esp + 0xc]
fadd qword [esp + 0x54]
fstp qword [esp + 0x54]
jmp 0x5d1f85
cmp ecx, dword [esi + 0x9c]
je 0x5d1f85
cmp ax, 0x1c
je 0x5d1f85
cmp ax, 0x1d
je 0x5d1f85
cmp ax, 0x1e
je 0x5d1f85
cmp ax, 0x1f
je 0x5d1f85
cmp ax, 0x20
je 0x5d1f85
cmp ax, 0x23
je 0x5d1f85
cmp ax, 0x24
je 0x5d1f85
cmp ax, 0x28
je 0x5d1f85
cmp ax, 0x25
jne 0x5d1f2d
fld qword [esp + 0xc]
fadd qword [esp + 0x3c]
fstp qword [esp + 0x3c]
jmp 0x5d1f85
cmp ax, 0x26
jne 0x5d1f41
fld qword [esp + 0xc]
fadd qword [esp + 0x3c]
fstp qword [esp + 0x3c]
jmp 0x5d1f85
fld qword [esp + 0xc]
cmp ax, 0x27
jne 0x5d1f59
fadd qword [esp + 0x3c]
fstp qword [esp + 0x3c]
jmp 0x5d1f85
fld qword [esp + 0xc]
fadd qword [esp + 0x2c]
fstp qword [esp + 0x2c]
fld qword [esp + 0x24]
fadd qword [esp + 0x14]
fstp qword [esp + 0x14]
fld qword [esp + 0xc]
fadd qword [esp + 0x74]
fstp qword [esp + 0x74]
fld qword [esp + 0x24]
fadd qword [esp + 0x6c]
fstp qword [esp + 0x6c]
mov eax, dword [esp + 0x88]
inc ebx
dec eax
mov dword [esp + 0x88], eax
jne 0x5d1bc6
mov eax, dword [esp + 0x50]
test eax, eax
jle 0x5d219e
mov edi, dword [esp + 0x84]
mov ebx, eax
push edi
mov ecx, esi
call fcn.005c3100
mov ax, word [esi + 0x2da6]
mov edx, dword [esi + 0x9c]
fld qword [esi + 0x2d18]
movsx ecx, ax
cmp ecx, edx
jne 0x5d1ffd
fild dword [esi + 0xc8]
fld st(1)
fmul qword [esp + 0x74]
fdiv st(1)
fadd qword [esp + 0x2c]
fstp qword [esp + 0x2c]
fxch st(1)
fmul qword [esp + 0x6c]
fdiv st(1)
fadd qword [esp + 0x14]
fstp qword [esp + 0x14]
jmp 0x5d2194
cmp ax, 0x1c
jne 0x5d202e
fild dword [esi + 0xc8]
fld st(1)
fmul qword [esp + 0x34]
fdiv st(1)
fadd qword [esp + 0x34]
fstp qword [esp + 0x34]
fxch st(1)
fmul qword [esp + 0x1c]
fdiv st(1)
fadd qword [esp + 0x1c]
fstp qword [esp + 0x1c]
jmp 0x5d2194
cmp ax, 0x1d
jne 0x5d205f
fild dword [esi + 0xc8]
fld st(1)
fmul qword [esp + 0x74]
fdiv st(1)
fadd qword [esp + 0x34]
fstp qword [esp + 0x34]
fxch st(1)
fmul qword [esp + 0x6c]
fdiv st(1)
fadd qword [esp + 0x1c]
fstp qword [esp + 0x1c]
jmp 0x5d2194
cmp ax, 0x1e
jne 0x5d2090
fild dword [esi + 0xc8]
fld st(1)
fmul qword [esp + 0x34]
fdiv st(1)
fadd qword [esp + 0x2c]
fstp qword [esp + 0x2c]
fxch st(1)
fmul qword [esp + 0x1c]
fdiv st(1)
fadd qword [esp + 0x14]
fstp qword [esp + 0x14]
jmp 0x5d2194
cmp ax, 0x1f
jne 0x5d20c1
fild dword [esi + 0xc8]
fld st(1)
fmul qword [esp + 0x3c]
fdiv st(1)
fadd qword [esp + 0x2c]
fstp qword [esp + 0x2c]
fxch st(1)
fmul qword [esp + 0x44]
fdiv st(1)
fadd qword [esp + 0x14]
fstp qword [esp + 0x14]
jmp 0x5d2194
cmp ax, 0x20
jne 0x5d20f2
fild dword [esi + 0xc8]
fld st(1)
fmul qword [esp + 0x3c]
fdiv st(1)
fadd qword [esp + 0x34]
fstp qword [esp + 0x34]
fxch st(1)
fmul qword [esp + 0x44]
fdiv st(1)
fadd qword [esp + 0x1c]
fstp qword [esp + 0x1c]
jmp 0x5d2194
cmp ax, 0x23
jne 0x5d2120
fild dword [esi + 0xc8]
fld qword [esp + 0x34]
fadd qword [esp + 0x2c]
fadd qword [esp + 0x3c]
fmul st(2)
fdiv st(1)
fadd qword [esp + 0x2c]
fstp qword [esp + 0x2c]
fld qword [esp + 0x1c]
fadd qword [esp + 0x14]
jmp 0x5d2182
cmp ax, 0x24
jne 0x5d215e
fild dword [esi + 0xc8]
fld qword [esp + 0x34]
fadd qword [esp + 0x2c]
fadd qword [esp + 0x3c]
fmul st(2)
fdiv st(1)
fadd qword [esp + 0x34]
fstp qword [esp + 0x34]
fld qword [esp + 0x1c]
fadd qword [esp + 0x14]
fadd qword [esp + 0x44]
fmul st(2)
fdiv st(1)
fadd qword [esp + 0x1c]
fstp qword [esp + 0x1c]
jmp 0x5d2192
cmp ax, 0x28
jne 0x5d2194
fild dword [esi + 0xc8]
fld qword [esp + 0x34]
fadd qword [esp + 0x3c]
fmul st(2)
fdiv st(1)
fadd qword [esp + 0x2c]
fstp qword [esp + 0x2c]
fld qword [esp + 0x1c]
fadd qword [esp + 0x44]
fmul st(2)
fdiv st(1)
fadd qword [esp + 0x14]
fstp qword [esp + 0x14]
fstp st(0)
inc edi
dec ebx
fstp st(0)
jne 0x5d1fb0
mov eax, dword [esp + 0x80]
test eax, eax
jle 0x5d2298
mov eax, dword [esi + 0x209c]
test eax, eax
jle 0x5d2298
cmp eax, 6
jge 0x5d2298
mov edx, dword [esp + 0x40]
push eax
mov eax, dword [esp + 0x40]
push edx
push eax
mov ecx, esi
call fcn.005c0970
mov ecx, dword [esi + 0x209c]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
push ecx
push edx
push eax
fstp st(0)
mov ecx, esi
call fcn.005c0970
mov ecx, dword [esi + 0x209c]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
push ecx
push edx
push eax
fstp st(0)
mov ecx, esi
call fcn.005c0970
mov ecx, dword [esi + 0x209c]
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x5c]
push ecx
push edx
push eax
fstp st(0)
mov ecx, esi
call fcn.005c0970
mov ecx, dword [esi + 0x209c]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
push ecx
fstp qword [esp + 0x60]
push edx
push eax
mov ecx, esi
call fcn.005c0970
mov ecx, dword [esi + 0x209c]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
push ecx
fstp qword [esp + 0x48]
push edx
push eax
mov ecx, esi
call fcn.005c0970
mov ecx, dword [esi + 0x209c]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
push ecx
fstp qword [esp + 0x18]
push edx
push eax
mov ecx, esi
call fcn.005c0970
mov ecx, dword [esi + 0x209c]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
push ecx
fstp qword [esp + 0x20]
push edx
push eax
mov ecx, esi
call fcn.005c0970
fstp qword [esp + 0x54]
mov eax, dword [esp + 0x68]
mov edi, 0xa7a6f8
mov ecx, eax
mov bl, byte [ecx]
mov dl, bl
cmp bl, byte [edi]
jne 0x5d22c7
test dl, dl
je 0x5d22c3
mov bl, byte [ecx + 1]
mov dl, bl
cmp bl, byte [edi + 1]
jne 0x5d22c7
add ecx, 2
add edi, 2
test dl, dl
jne 0x5d22a3
xor ecx, ecx
jmp 0x5d22cc
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
je 0x5d2384
mov edi, 0xa7a6f8
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x5d2301
test cl, cl
je 0x5d22fd
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x5d2301
add eax, 2
add edi, 2
test cl, cl
jne 0x5d22d9
xor eax, eax
jmp 0x5d2306
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d2384
fld qword [esp + 0x54]
fadd qword [esp + 0x1c]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x14]
mov dword [esi + 0x3e28], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 0x3e2c], ecx
fadd qword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0x3e30], edx
mov edx, dword [esp + 0x20]
mov dword [esi + 0x3e34], eax
mov eax, dword [esp + 0x5c]
mov dword [esi + 0x3e38], ecx
fadd qword [esp + 0x44]
mov ecx, dword [esp + 0x60]
mov dword [esi + 0x3e3c], edx
mov edx, dword [esp + 0x54]
mov dword [esi + 0x3e48], eax
mov eax, dword [esp + 0x58]
mov dword [esi + 0x3e50], edx
fadd qword [esp + 0x5c]
mov dword [esi + 0x3e4c], ecx
mov dword [esi + 0x3e54], eax
jmp 0x5d23de
mov ecx, dword [esi + 0x3e60]
mov edx, dword [esi + 0x3e64]
fld qword [esi + 0x3e68]
mov eax, dword [esi + 0x3e68]
mov dword [esi + 0x3e28], ecx
fadd qword [esi + 0x3e70]
mov ecx, dword [esi + 0x3e6c]
mov dword [esi + 0x3e2c], edx
mov edx, dword [esi + 0x3e70]
mov dword [esi + 0x3e30], eax
mov eax, dword [esi + 0x3e74]
mov dword [esi + 0x3e38], edx
fadd qword [esi + 0x3e60]
mov dword [esi + 0x3e34], ecx
mov dword [esi + 0x3e3c], eax
fstp qword [esi + 0x3e20]
fld qword [esp + 0x1c]
fadd qword [esp + 0x14]
sub esp, 8
mov ecx, esi
fadd qword [esp + 0x4c]
fld qword [esi + 0x3e70]
fadd qword [esi + 0x3e68]
fadd qword [esi + 0x3e60]
fsubp st(1)
fstp qword [esp]
call fcn.008f5ce0
fld dword [esi + 0xe4]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5d2438
mov ecx, dword [esi + 0x3e58]
mov edx, dword [esi + 0x3e5c]
mov dword [esi + 0x3e20], ecx
mov dword [esi + 0x3e24], edx
mov eax, dword [esi + 0x3e24]
mov ecx, dword [esi + 0x3e20]
push 2
push eax
push ecx
mov ecx, esi
call fcn.005c0970
fst qword [esi + 0x3e20]
fadd qword [esi + 0x100]
lea ecx, [esp + 0x4c]
mov byte [esp + 0xa8], 1
fstp qword [esi + 0x100]
call fcn.00911ee2
lea ecx, [esp + 0x68]
mov byte [esp + 0xa8], 0
call fcn.00911ee2
lea ecx, [esp + 0x7c]
mov dword [esp + 0xa8], 0xffffffff
call fcn.00911ee2
mov al, 1
mov ecx, dword [esp + 0xa0]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
lea ecx, [esp + 0x4c]
mov byte [esp + 0xa8], bl
call fcn.00911ee2
lea ecx, [esp + 0x68]
mov byte [esp + 0xa8], 0
call fcn.00911ee2
lea ecx, [esp + 0x7c]
mov dword [esp + 0xa8], 0xffffffff
call fcn.00911ee2
mov ecx, dword [esp + 0xa0]
pop edi
pop esi
xor al, al
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 4