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

Disassembly:
push 0xffffffffffffffff
push 0x6d1663
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 0x5d2670
mov byte [esi + 0x14], 1
mov al, byte [0x72bd0c]
test al, al
je 0x5d2631
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 [0x720be8]
mov cl, al
inc al
push ecx
mov ecx, edi
mov byte [0x720be8], al
call fcn.0061dc20
dec ebx
jne 0x5d2616
jmp 0x5d2670
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 0x5d2793
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 0x5d26df
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 0x5d276c
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d2763
cmp al, 0xff
je 0x5d2763
dec al
mov byte [ecx], al
jmp 0x5d276c
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 0x5d2cc5
mov eax, dword [esp + 0x3c]
xor edi, edi
and eax, 0xff
sub eax, ebp
je 0x5d29ad
dec eax
jne case.default.0x5d27c3
mov ecx, dword [esp + 0x30]
and ecx, 0xff
lea eax, [ecx - 1]
cmp eax, 3
ja case.default.0x5d27c3
jmp dword [eax*4 + 0x5d2ce0]
push 0x11
mov ecx, esi
call fcn.0061daa0
test al, 1
je 0x5d27db
push 0x57
jmp 0x5d27dd
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 0x5d2986
push 0x12
mov ecx, esi
call fcn.0061daa0
test al, 1
je 0x5d2842
push 0x57
jmp 0x5d2844
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 0x5d2986
push 0x12
mov ecx, esi
call fcn.0061daa0
test al, 2
je 0x5d28af
push 0x59
jmp 0x5d28b1
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 0x5d2986
push 0x12
mov ecx, esi
call fcn.0061daa0
and al, 0xf0
cmp al, 0xb0
jae 0x5d292f
push 0x12
mov ecx, esi
call fcn.0061daa0
and eax, 0xff
shr eax, 4
mov edi, eax
jmp case.default.0x5d27c3
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.0x5d27c3
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d2aaf
cmp al, 0xff
je 0x5d2aaf
dec al
mov byte [ecx], al
jmp case.default.0x5d27c3
mov eax, dword [esp + 0x30]
and eax, 0xff
dec eax
je 0x5d29f8
dec eax
jne case.default.0x5d27c3
push 0xd
mov ecx, esi
call fcn.0061daa0
test al, 1
je 0x5d29f1
xor edi, edi
mov ebx, 1
push 0xd
mov ecx, esi
call fcn.0061daa0
mov cl, bl
shr al, cl
test al, 1
je 0x5d29e6
inc edi
inc ebx
cmp ebx, 6
jl 0x5d29d4
jmp case.default.0x5d27c3
xor edi, edi
jmp case.default.0x5d27c3
push 0xc
mov ecx, esi
call fcn.0061daa0
test al, al
jne 0x5d2a09
push 0x50
jmp 0x5d2a42
push 0xc
mov ecx, esi
call fcn.0061daa0
and eax, 0x3e
add eax, 0xfffffffe
cmp eax, 0x1e
ja case.0x5d2a25.7
xor edx, edx
mov dl, byte [eax + 0x5d2d08]
jmp dword [edx*4 + 0x5d2cf0]
push 0x51
jmp 0x5d2a42
push 0x52
jmp 0x5d2a42
push 0x53
jmp 0x5d2a42
push 0x54
jmp 0x5d2a42
push 0x55
jmp 0x5d2a42
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.0x5d27c3
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d2aaf
cmp al, 0xff
je 0x5d2aaf
dec al
mov byte [ecx], al
jmp case.default.0x5d27c3
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 0x5d2b70
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 0x5d2af1
call fcn.006a64db
mov edi, dword [esp + 0x18]
cmp edi, ebp
je 0x5d2b19
mov al, byte [edi - 1]
test al, al
je 0x5d2b19
cmp al, 0xff
je 0x5d2b19
cmp ebx, ebp
jne 0x5d2b42
dec al
push ebp
lea ecx, [esp + 0x18]
mov byte [edi - 1], al
call fcn.004138c0
jmp 0x5d2b70
cmp ebx, ebp
jne 0x5d2b2a
push 1
lea ecx, [esp + 0x18]
call fcn.004138c0
jmp 0x5d2b70
mov eax, dword [esp + 0x20]
cmp eax, 0x1f
ja 0x5d2b37
cmp eax, ebx
jae 0x5d2b50
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 0x5d2b99
mov ebp, eax
lea edx, [esp + 0x14]
cmp ebx, edx
jne 0x5d2bb8
push eax
push ebp
mov ecx, ebx
call fcn.004140f0
push edi
push edi
mov ecx, ebx
call fcn.004140f0
jmp 0x5d2c40
cmp ebp, edi
jbe 0x5d2c04
cmp ebp, ecx
jne 0x5d2c04
mov eax, dword [esp + 0x18]
cmp eax, edi
jne 0x5d2bcd
mov eax, 0x6dd1f8
cmp byte [eax - 1], 0xfe
jae 0x5d2c04
push 1
mov ecx, ebx
call fcn.004138c0
mov eax, dword [esp + 0x18]
cmp eax, edi
jne 0x5d2be9
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 0x5d2c40
push 1
push ebp
mov ecx, ebx
call fcn.00414230
test al, al
je 0x5d2c40
mov esi, dword [esp + 0x18]
cmp esi, edi
jne 0x5d2c1f
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 0x5d2ca3
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x5d2c9a
cmp al, 0xff
je 0x5d2c9a
dec al
mov byte [ecx], al
jmp 0x5d2ca3
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