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

Disassembly:
push 0xffffffffffffffff
push 0x6d1f13
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xdc
push ebx
push ebp
xor ebp, ebp
push esi
push edi
mov esi, ecx
mov dword [esp + 0x2c], ebp
mov al, byte [esp + 0x2b]
mov dword [esp + 0xf4], 1
mov byte [esp + 0x14], al
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
lea ecx, [esp + 0x54]
mov byte [esp + 0xf4], 2
call fcn.0061aaa0
lea ecx, [esp + 0xc8]
mov byte [esp + 0xf4], 3
call fcn.005548f0
mov ecx, dword [0x720c04]
mov dx, word [0x720c08]
mov dword [esp + 0x34], ecx
push 6
push 0x714484
lea ecx, [esp + 0x18]
mov byte [esp + 0xfc], 4
mov word [esp + 0x40], dx
call fcn.0061d820
push 4
lea ecx, [esp + 0x104]
mov byte [esp + 0xf8], 5
call fcn.0061daa0
push 5
lea ecx, [esp + 0x104]
mov byte [esp + 0x40], al
call fcn.0061daa0
mov byte [esp + 0x30], al
mov al, byte [esi + 0x14]
cmp al, 0xff
jne 0x5d8c60
mov byte [esi + 0x14], 1
mov al, byte [0x72bd0c]
test al, al
je 0x5d8c21
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push ebp
call fcn.0061d7b0
lea edi, [esi + 0x10]
mov ecx, edi
call fcn.0061dab0
push 0x16
mov ecx, edi
call fcn.0061dc20
push 0x61
mov ecx, edi
call fcn.0061dc20
mov al, byte [esi + 0x14]
mov ecx, edi
push eax
call fcn.0061dc20
mov ebx, 0x14
mov al, byte [0x720ee8]
mov cl, al
inc al
push ecx
mov ecx, edi
mov byte [0x720ee8], al
call fcn.0061dc20
dec ebx
jne 0x5d8c06
jmp 0x5d8c60
sub esp, 0x24
lea edx, [esp + 0x58]
mov ecx, esp
mov dword [esp + 0x48], esp
push 1
push edx
push ecx
lea ecx, [esp + 0xf8]
call fcn.00555a50
lea ecx, [esp + 0x78]
call fcn.0061ac40
push ecx
lea ecx, [esp + 0x58]
mov eax, esp
mov dword [esp + 0x28], esp
push eax
call fcn.0061afb0
lea ecx, [esi + 0x10]
call fcn.0061dab0
add esi, 0x10
mov ecx, esi
call fcn.0061dc40
cmp ax, 0x12
jge 0x5d8d83
push 0x71386c
lea ecx, [esp + 0x44]
push 0x713868
push ecx
call fcn.006a6fa5
lea edi, [esp + 0x4c]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebx, ecx
lea ecx, [esp + 0x18]
push ebx
call fcn.00414230
test al, al
je 0x5d8ccf
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0x40]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [eax + ebx], 0
mov esi, dword [esp + 0xfc]
mov cl, byte [esp + 0x14]
lea eax, [esp + 0x14]
mov byte [esi], cl
mov dword [esi + 4], ebp
mov dword [esi + 8], ebp
mov dword [esi + 0xc], ebp
mov edx, dword [0x6dd1fc]
mov ecx, esi
push edx
push ebp
push eax
call fcn.004136c0
mov dword [esp + 0x2c], 1
lea ecx, [esp + 0x10]
mov byte [esp + 0xf4], 4
call fcn.0061d8c0
lea ecx, [esp + 0xc8]
mov byte [esp + 0xf4], 3
call fcn.005549b0
lea ecx, [esp + 0x54]
mov byte [esp + 0xf4], 2
call fcn.0061ab90
mov eax, dword [esp + 0x18]
cmp eax, ebp
je 0x5d8d5c
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d8d53
cmp al, 0xff
je 0x5d8d53
dec al
mov byte [ecx], al
jmp 0x5d8d5c
push ecx
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x100]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
mov byte [esp + 0xf4], 0
call fcn.0061d8c0
mov eax, esi
jmp 0x5d92b5
mov eax, dword [esp + 0x3c]
xor edi, edi
and eax, 0xff
sub eax, ebp
je 0x5d8f9d
dec eax
jne case.default.0x5d8db3
mov ecx, dword [esp + 0x30]
and ecx, 0xff
lea eax, [ecx - 1]
cmp eax, 3
ja case.default.0x5d8db3
jmp dword [eax*4 + 0x5d92d0]
push 0x11
mov ecx, esi
call fcn.0061daa0
test al, 1
je 0x5d8dcb
push 0x57
jmp 0x5d8dcd
push 0x58
push 5
lea ecx, [esp + 0x18]
call fcn.0061dbc0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.0061d790
lea eax, [esp + 0x7c]
push eax
call fcn.0061ca80
add esp, 8
mov ecx, dword [0x6dd1fc]
mov byte [esp + 0xf4], 7
push ecx
push ebp
push eax
lea ecx, [esp + 0x20]
call fcn.004136c0
mov eax, dword [esp + 0x7c]
mov byte [esp + 0xf4], 5
jmp 0x5d8f76
push 0x12
mov ecx, esi
call fcn.0061daa0
test al, 1
je 0x5d8e32
push 0x57
jmp 0x5d8e34
push 0x58
push 5
lea ecx, [esp + 0x18]
call fcn.0061dbc0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.0061d790
lea eax, [esp + 0x8c]
push eax
call fcn.0061ca80
add esp, 8
mov ecx, dword [0x6dd1fc]
mov byte [esp + 0xf4], 8
push ecx
push ebp
push eax
lea ecx, [esp + 0x20]
call fcn.004136c0
mov eax, dword [esp + 0x8c]
mov byte [esp + 0xf4], 5
jmp 0x5d8f76
push 0x12
mov ecx, esi
call fcn.0061daa0
test al, 2
je 0x5d8e9f
push 0x59
jmp 0x5d8ea1
push 0x5a
push 5
lea ecx, [esp + 0x18]
call fcn.0061dbc0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.0061d790
lea eax, [esp + 0xac]
push eax
call fcn.0061ca80
add esp, 8
mov ecx, dword [0x6dd1fc]
mov byte [esp + 0xf4], 9
push ecx
push ebp
push eax
lea ecx, [esp + 0x20]
call fcn.004136c0
mov eax, dword [esp + 0xac]
mov byte [esp + 0xf4], 5
jmp 0x5d8f76
push 0x12
mov ecx, esi
call fcn.0061daa0
and al, 0xf0
cmp al, 0xb0
jae 0x5d8f1f
push 0x12
mov ecx, esi
call fcn.0061daa0
and eax, 0xff
shr eax, 4
mov edi, eax
jmp case.default.0x5d8db3
push 0x5b
push 5
lea ecx, [esp + 0x18]
call fcn.0061dbc0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.0061d790
lea eax, [esp + 0x9c]
push eax
call fcn.0061ca80
add esp, 8
mov ecx, dword [0x6dd1fc]
mov byte [esp + 0xf4], 0xa
push ecx
push ebp
push eax
lea ecx, [esp + 0x20]
call fcn.004136c0
mov eax, dword [esp + 0x9c]
mov byte [esp + 0xf4], 5
cmp eax, ebp
je case.default.0x5d8db3
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d909f
cmp al, 0xff
je 0x5d909f
dec al
mov byte [ecx], al
jmp case.default.0x5d8db3
mov eax, dword [esp + 0x30]
and eax, 0xff
dec eax
je 0x5d8fe8
dec eax
jne case.default.0x5d8db3
push 0xd
mov ecx, esi
call fcn.0061daa0
test al, 1
je 0x5d8fe1
xor edi, edi
mov ebx, 1
push 0xd
mov ecx, esi
call fcn.0061daa0
mov cl, bl
shr al, cl
test al, 1
je 0x5d8fd6
inc edi
inc ebx
cmp ebx, 6
jl 0x5d8fc4
jmp case.default.0x5d8db3
xor edi, edi
jmp case.default.0x5d8db3
push 0xc
mov ecx, esi
call fcn.0061daa0
test al, al
jne 0x5d8ff9
push 0x50
jmp 0x5d9032
push 0xc
mov ecx, esi
call fcn.0061daa0
and eax, 0x3e
add eax, 0xfffffffe
cmp eax, 0x1e
ja case.0x5d9015.7
xor edx, edx
mov dl, byte [eax + 0x5d92f8]
jmp dword [edx*4 + 0x5d92e0]
push 0x51
jmp 0x5d9032
push 0x52
jmp 0x5d9032
push 0x53
jmp 0x5d9032
push 0x54
jmp 0x5d9032
push 0x55
jmp 0x5d9032
push 0x56
push 5
lea ecx, [esp + 0x18]
call fcn.0061dbc0
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0xbc]
push ecx
call fcn.0061ca80
add esp, 8
mov edx, dword [0x6dd1fc]
lea ecx, [esp + 0x14]
push edx
push ebp
push eax
mov byte [esp + 0x100], 6
call fcn.004136c0
mov eax, dword [esp + 0xbc]
mov byte [esp + 0xf4], 5
cmp eax, ebp
je case.default.0x5d8db3
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d909f
cmp al, 0xff
je 0x5d909f
dec al
mov byte [ecx], al
jmp case.default.0x5d8db3
push ecx
call fcn.006a64d0
add esp, 4
push edi
lea eax, [esp + 0x44]
push 0x713498
push eax
call fcn.006a6fa5
mov eax, dword [esp + 0x28]
add esp, 0xc
cmp eax, ebp
jne 0x5d9160
lea edi, [esp + 0x40]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x5d90e1
call fcn.006a64db
mov edi, dword [esp + 0x18]
cmp edi, ebp
je 0x5d9109
mov al, byte [edi - 1]
test al, al
je 0x5d9109
cmp al, 0xff
je 0x5d9109
cmp ebx, ebp
jne 0x5d9132
dec al
push ebp
lea ecx, [esp + 0x18]
mov byte [edi - 1], al
call fcn.004138c0
jmp 0x5d9160
cmp ebx, ebp
jne 0x5d911a
push 1
lea ecx, [esp + 0x18]
call fcn.004138c0
jmp 0x5d9160
mov eax, dword [esp + 0x20]
cmp eax, 0x1f
ja 0x5d9127
cmp eax, ebx
jae 0x5d9140
push 1
lea ecx, [esp + 0x18]
call fcn.004138c0
push ebx
lea ecx, [esp + 0x18]
call fcn.00414a60
mov edi, dword [esp + 0x18]
mov ecx, ebx
lea esi, [esp + 0x40]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [eax + ebx], 0
mov ebx, dword [esp + 0xfc]
mov cl, byte [esp + 0x14]
xor edi, edi
mov byte [ebx], cl
mov ecx, dword [esp + 0x1c]
mov dword [ebx + 4], edi
mov dword [ebx + 8], edi
mov dword [ebx + 0xc], edi
mov eax, dword [0x6dd1fc]
mov ebp, ecx
cmp eax, ebp
jae 0x5d9189
mov ebp, eax
lea edx, [esp + 0x14]
cmp ebx, edx
jne 0x5d91a8
push eax
push ebp
mov ecx, ebx
call fcn.004140f0
push edi
push edi
mov ecx, ebx
call fcn.004140f0
jmp 0x5d9230
cmp ebp, edi
jbe 0x5d91f4
cmp ebp, ecx
jne 0x5d91f4
mov eax, dword [esp + 0x18]
cmp eax, edi
jne 0x5d91bd
mov eax, 0x6dd1f8
cmp byte [eax - 1], 0xfe
jae 0x5d91f4
push 1
mov ecx, ebx
call fcn.004138c0
mov eax, dword [esp + 0x18]
cmp eax, edi
jne 0x5d91d9
mov eax, 0x6dd1f8
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [ebx + 4], eax
mov dword [ebx + 8], ecx
mov dword [ebx + 0xc], edx
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x5d9230
push 1
push ebp
mov ecx, ebx
call fcn.00414230
test al, al
je 0x5d9230
mov esi, dword [esp + 0x18]
cmp esi, edi
jne 0x5d920f
mov esi, 0x6dd1f8
mov edi, dword [ebx + 4]
mov ecx, ebp
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx + 4]
mov dword [ebx + 8], ebp
add ebp, eax
xor edi, edi
mov byte [ebp], 0
lea ecx, [esp + 0x10]
mov dword [esp + 0x2c], 1
mov byte [esp + 0xf4], 4
call fcn.0061d8c0
lea ecx, [esp + 0xc8]
mov byte [esp + 0xf4], 3
call fcn.005549b0
lea ecx, [esp + 0x54]
mov byte [esp + 0xf4], 2
call fcn.0061ab90
mov eax, dword [esp + 0x18]
cmp eax, edi
je 0x5d9293
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d928a
cmp al, 0xff
je 0x5d928a
dec al
mov byte [ecx], al
jmp 0x5d9293
push ecx
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x100]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edi
mov byte [esp + 0xf4], 0
call fcn.0061d8c0
mov eax, ebx
mov ecx, dword [esp + 0xec]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0xe8
ret 8