Function at 0x5ad920
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x6f6782
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x120
push ebx
push ebp
push esi
push edi
mov ebp, ecx
call fcn.00419aa0
lea ecx, [ebp + 0x14]
call fcn.005ca5f0
mov eax, dword [ebp + 0x18]
lea ecx, [esp + 0x18]
push ecx
push 9
lea ecx, [ebp + 0x20]
mov dword [esp + 0x20], eax
call fcn.005ac290
mov eax, 1
xor esi, esi
xor ebx, ebx
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x34], eax
mov byte [ebp + 0x38], 0
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], esi
mov dword [esp + 0x138], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], esi
mov edx, dword [esp + 0x140]
or edi, 0xffffffff
mov byte [esp + 0x138], 3
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], edi
mov byte [esp + 0x13], bl
mov byte [esp + 0x1c], bl
mov byte [esp + 0x20], bl
mov edx, dword [esp + 0x18]
mov al, byte [edx]
test al, al
mov ecx, edx
mov dword [esp + 0x24], ecx
je 0x5ad9f8
cmp al, 0xd
je 0x5ad9f4
cmp al, 0xa
je 0x5ad9f4
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x5ad9e4
mov dword [esp + 0x24], ecx
mov eax, ecx
sub eax, edx
mov dword [esp + 0x28], eax
inc eax
test esi, esi
jne 0x5ada09
xor ecx, ecx
jmp 0x5ada0d
mov ecx, ebx
sub ecx, esi
cmp ecx, eax
jae 0x5ada39
test esi, esi
jne 0x5ada19
xor ecx, ecx
jmp 0x5ada1d
mov ecx, ebx
sub ecx, esi
lea edx, [esp + 0x1c]
push edx
sub eax, ecx
push eax
push ebx
lea ecx, [esp + 0x48]
call fcn.005a37d0
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
jmp 0x5ada5d
test esi, esi
je 0x5ada5d
mov ecx, ebx
sub ecx, esi
cmp eax, ecx
jae 0x5ada5d
add eax, esi
cmp eax, ebx
je 0x5ada5d
push 0
push ebx
push eax
call fcn.0065cc10
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x44], ebx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
push eax
push ecx
push esi
call fcn.0065c820
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
mov eax, esi
sub eax, edx
add eax, ecx
add esp, 0xc
test esi, esi
mov byte [eax], 0
jne 0x5ada89
xor eax, eax
jmp 0x5ada8d
mov eax, ebx
sub eax, esi
mov ebx, dword [esp + 0x30]
test ebx, ebx
mov ecx, dword [esp + 0x34]
jne 0x5ada9d
xor edx, edx
jmp 0x5adaa1
mov edx, ecx
sub edx, ebx
cmp edx, eax
jae 0x5adac9
test ebx, ebx
jne 0x5adaad
xor edx, edx
jmp 0x5adab1
mov edx, ecx
sub edx, ebx
lea ebx, [esp + 0x20]
push ebx
sub eax, edx
push eax
push ecx
lea ecx, [esp + 0x38]
call fcn.005a37d0
mov ebx, dword [esp + 0x30]
jmp 0x5adaeb
test ebx, ebx
je 0x5adaeb
mov edx, ecx
sub edx, ebx
cmp eax, edx
jae 0x5adaeb
add eax, ebx
cmp eax, ecx
je 0x5adaeb
push 0
push ecx
push eax
call fcn.0065cc10
add esp, 0xc
mov dword [esp + 0x34], eax
push esi
push ebx
call fcn.0065d920
push esi
call fcn.005a3cc0
push esi
call fcn.005a3d40
mov al, byte [esi]
add esp, 0x10
test al, al
je 0x5ae053
push 0x71be7c
push esi
call fcn.0065dff0
add esp, 8
cmp eax, esi
je 0x5ae053
cmp byte [esi], 0x5b
jne 0x5add4a
mov ecx, dword [esp + 0x14]
xor ebx, ebx
cmp ecx, ebx
jl 0x5adba4
cmp edi, ebx
jl 0x5adba4
mov eax, dword [ebp + 4]
imul ecx, ecx, 0x54
imul edi, edi, 0x38
add ecx, eax
mov eax, ecx
mov eax, dword [eax + 0x48]
add edi, eax
mov eax, dword [edi + 0x30]
add edi, 0x1c
cmp eax, ebx
jbe 0x5adb71
cmp dword [edi + 0x18], 0x10
jb 0x5adb5f
mov eax, dword [edi + 4]
jmp 0x5adb62
lea eax, [edi + 4]
cmp byte [eax], 0x22
jne 0x5adb71
push 1
push ebx
mov ecx, edi
call fcn.00403bd0
mov eax, dword [edi + 0x14]
cmp eax, ebx
jbe 0x5adb98
cmp dword [edi + 0x18], 0x10
jb 0x5adb83
mov ecx, dword [edi + 4]
jmp 0x5adb86
lea ecx, [edi + 4]
cmp byte [eax + ecx - 1], 0x22
jne 0x5adb98
push 1
dec eax
push eax
mov ecx, edi
call fcn.00403bd0
or edi, 0xffffffff
mov dword [esp + 0x14], edi
mov byte [esp + 0x13], 0
push esi
call fcn.0065c790
add esp, 4
cmp eax, 2
jl 0x5ae053
cmp byte [esi + eax - 1], 0x5d
jne 0x5adbc2
mov byte [esi + eax - 1], 0
mov al, byte [ebp + 0x39]
test al, al
jne 0x5adbd2
push esi
call fcn.006ecd72
add esp, 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], ebx
lea ebx, [ebx]
mov edi, dword [ebp + 4]
test edi, edi
je 0x5adc51
mov ecx, dword [ebp + 8]
sub ecx, edi
mov eax, 0x30c30c31
imul ecx
mov ecx, dword [esp + 0x18]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
jae 0x5adc51
mov edx, dword [esp + 0x14]
lea ebx, [esi + 1]
push ebx
add edi, edx
call fcn.0065c790
add esp, 4
push eax
mov eax, dword [edi + 0x14]
push ebx
push eax
push 0
mov ecx, edi
call fcn.00403b00
test eax, eax
je 0x5adc40
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
inc ecx
add eax, 0x54
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
jmp 0x5adbe0
mov eax, dword [esp + 0x18]
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
jne 0x5ae050
mov eax, dword [ebp + 4]
test eax, eax
jne 0x5adc5c
xor ebx, ebx
jmp 0x5adc72
mov ecx, dword [ebp + 8]
sub ecx, eax
mov eax, 0x30c30c31
imul ecx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
lea ecx, [esp + 0xdc]
mov dword [esp + 0x14], ebx
call fcn.005acce0
push eax
mov ecx, ebp
mov byte [esp + 0x13c], 4
call fcn.005ad890
lea ecx, [esp + 0xdc]
mov byte [esp + 0x138], 3
call fcn.00417c90
mov eax, dword [ebp + 4]
lea edi, [esi + 1]
mov esi, ebx
imul esi, esi, 0x54
push edi
add esi, eax
call fcn.0065c790
add esp, 4
push eax
push edi
mov ecx, esi
call fcn.00404b60
push edi
mov dword [esp + 0x88], 0xf
mov dword [esp + 0x84], 0
mov byte [esp + 0x74], 0
call fcn.0065c790
add esp, 4
push eax
push edi
lea ecx, [esp + 0x74]
call fcn.00404b60
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [ebp + 0x10]
mov byte [esp + 0x13c], 5
call fcn.005ad1d0
mov dword [eax], ebx
cmp dword [esp + 0x84], 0x10
mov byte [esp + 0x138], 3
jb 0x5add2a
mov edx, dword [esp + 0x70]
push edx
call fcn.0065d0d4
add esp, 4
mov dword [esp + 0x84], 0xf
mov dword [esp + 0x80], 0
mov byte [esp + 0x70], 0
jmp 0x5ae050
mov ebx, dword [esp + 0x14]
cmp ebx, 0xffffffff
jle 0x5ae053
push 0x6ffc44
push esi
call fcn.0065dff0
add esp, 8
test eax, eax
mov dword [esp + 0x18], eax
je 0x5adf97
mov al, byte [esp + 0x13]
test al, al
jne 0x5adf97
mov ebx, dword [esp + 0x18]
sub ebx, esi
lea eax, [ebx + 1]
push 0
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0x1b], 0
call fcn.005a39a0
push ebx
mov ebx, dword [esp + 0x64]
push esi
push ebx
call fcn.0065c820
mov eax, ebx
sub eax, esi
mov esi, dword [esp + 0x24]
add eax, esi
push ebx
mov byte [eax], 0
call fcn.005a3d40
push ebx
call fcn.005a3cc0
inc esi
push esi
call fcn.0065c790
add esp, 0x18
inc eax
push 0
push eax
lea ecx, [esp + 0x54]
call fcn.005a39a0
push esi
mov esi, dword [esp + 0x54]
push esi
call fcn.0065d920
push esi
call fcn.005a3d40
push esi
call fcn.005a3cc0
mov eax, dword [esp + 0x24]
add esp, 0x10
test eax, eax
jl 0x5ade4e
test edi, edi
jl 0x5ade4e
mov ecx, dword [ebp + 4]
imul eax, eax, 0x54
imul edi, edi, 0x38
add eax, ecx
mov eax, dword [eax + 0x48]
add edi, eax
mov eax, dword [edi + 0x30]
test eax, eax
lea esi, [edi + 0x1c]
jbe 0x5ade2c
push 0
mov ecx, esi
call fcn.00411f70
cmp byte [eax], 0x22
jne 0x5ade2c
push 1
push 0
mov ecx, esi
call fcn.00403bd0
mov edi, dword [esi + 0x14]
test edi, edi
jbe 0x5ade4e
lea eax, [edi - 1]
push eax
mov ecx, esi
call fcn.00411f70
cmp byte [eax], 0x22
jne 0x5ade4e
push 1
dec edi
push edi
mov ecx, esi
call fcn.00403bd0
mov al, byte [ebp + 0x39]
test al, al
jne 0x5ade5e
push ebx
call fcn.006ecd72
add esp, 4
mov esi, dword [esp + 0x14]
mov eax, dword [ebp + 4]
imul esi, esi, 0x54
lea ecx, [eax + esi + 0x44]
call fcn.004027e0
mov ecx, dword [esp + 0x60]
push ecx
lea ecx, [esp + 0xc4]
mov edi, eax
call fcn.00404e50
mov eax, dword [ebp + 4]
lea edx, [esp + 0xc0]
push edx
lea ecx, [eax + esi + 0x1c]
mov byte [esp + 0x13c], 6
call fcn.005ad1d0
lea ecx, [esp + 0xc0]
mov dword [eax], edi
call fcn.0040c6b0
xor eax, eax
mov ecx, 0xf
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x9c], eax
mov byte [esp + 0x8c], al
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xb8], eax
mov byte [esp + 0xa8], al
mov eax, dword [ebp + 4]
lea ecx, [esp + 0x88]
push ecx
lea ecx, [eax + esi + 0x44]
mov byte [esp + 0x13c], 7
call fcn.005acd50
lea ecx, [esp + 0x88]
mov byte [esp + 0x138], 3
call fcn.00412190
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x60]
mov ebx, edi
imul ebx, ebx, 0x38
add eax, esi
mov eax, dword [eax + 0x48]
add eax, ebx
push edx
mov dword [esp + 0x2c], eax
call fcn.0065c790
mov ecx, dword [esp + 0x2c]
add esp, 4
push eax
mov eax, dword [esp + 0x64]
push eax
call fcn.00404b60
mov eax, dword [ebp + 4]
add eax, esi
mov esi, dword [eax + 0x48]
add esi, ebx
mov ebx, dword [esp + 0x50]
push ebx
call fcn.0065c790
add esp, 4
push eax
push ebx
lea ecx, [esi + 0x1c]
call fcn.00404b60
cmp byte [ebx], 0x22
jne 0x5adf69
mov byte [esp + 0x13], 1
mov ecx, dword [esp + 0x50]
push ecx
call fcn.0065c790
add esp, 4
test eax, eax
jle 0x5ae053
mov edx, dword [esp + 0x50]
cmp byte [edx + eax - 1], 0x22
jne 0x5ae053
mov byte [esp + 0x13], 0
jmp 0x5ae053
test ebx, ebx
jl 0x5ae053
test edi, edi
jl 0x5ae053
mov esi, dword [esp + 0x14]
mov eax, dword [ebp + 4]
imul esi, esi, 0x54
mov ebx, edi
imul ebx, ebx, 0x38
add eax, esi
mov eax, dword [eax + 0x48]
add eax, ebx
push 0x6ffc40
lea ecx, [eax + 0x1c]
call fcn.0040d310
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x30]
add eax, esi
mov eax, dword [eax + 0x48]
add eax, ebx
push ecx
lea ecx, [eax + 0x1c]
call fcn.0040d310
mov edx, dword [esp + 0x30]
push edx
call fcn.0065c790
add esp, 4
test eax, eax
jle 0x5ae053
mov ecx, dword [esp + 0x30]
cmp byte [ecx + eax - 1], 0x22
jne 0x5ae053
mov eax, dword [ebp + 4]
add eax, esi
mov eax, dword [eax + 0x48]
add eax, ebx
lea esi, [eax + 0x1c]
mov eax, dword [esi + 0x14]
test eax, eax
jbe 0x5ae02a
push 0
mov ecx, esi
call fcn.00411f70
cmp byte [eax], 0x22
jne 0x5ae02a
push 1
push 0
mov ecx, esi
call fcn.00403bd0
mov eax, dword [esi + 0x14]
test eax, eax
jbe 0x5ae04b
lea edi, [eax - 1]
push edi
mov ecx, esi
call fcn.00411f70
cmp byte [eax], 0x22
jne 0x5ae04b
push 1
push edi
mov ecx, esi
call fcn.00403bd0
mov byte [esp + 0x13], 0
or edi, 0xffffffff
mov eax, dword [esp + 0x24]
cmp byte [eax], 0
je 0x5ae083
lea ecx, [eax + 1]
mov al, byte [ecx]
test al, al
mov dword [esp + 0x18], ecx
je 0x5ae083
cmp al, 0xa
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
jne 0x5ad9d4
inc ecx
mov dword [esp + 0x18], ecx
jmp 0x5ad9d4
mov eax, dword [esp + 0x14]
test eax, eax
jl 0x5ae0ef
test edi, edi
jl 0x5ae0ef
mov edx, dword [ebp + 4]
imul eax, eax, 0x54
imul edi, edi, 0x38
mov ecx, dword [eax + edx + 0x48]
add eax, edx
add edi, ecx
mov eax, dword [edi + 0x30]
test eax, eax
lea esi, [edi + 0x1c]
jbe 0x5ae0c8
cmp dword [esi + 0x18], 0x10
jb 0x5ae0b5
mov eax, dword [esi + 4]
jmp 0x5ae0b8
lea eax, [esi + 4]
cmp byte [eax], 0x22
jne 0x5ae0c8
push 1
push 0
mov ecx, esi
call fcn.00403bd0
mov eax, dword [esi + 0x14]
test eax, eax
jbe 0x5ae0ef
cmp dword [esi + 0x18], 0x10
jb 0x5ae0da
mov ecx, dword [esi + 4]
jmp 0x5ae0dd
lea ecx, [esi + 4]
cmp byte [eax + ecx - 1], 0x22
jne 0x5ae0ef
push 1
dec eax
push eax
mov ecx, esi
call fcn.00403bd0
mov eax, dword [esp + 0x50]
test eax, eax
pop edi
pop esi
mov byte [ebp + 0x38], 1
pop ebp
pop ebx
je 0x5ae108
push eax
call fcn.0065d0d4
add esp, 4
mov eax, dword [esp + 0x50]
test eax, eax
je 0x5ae119
push eax
call fcn.0065d0d4
add esp, 4
mov eax, dword [esp + 0x20]
test eax, eax
je 0x5ae12a
push eax
call fcn.0065d0d4
add esp, 4
mov edx, dword [esp + 0x30]
push edx
call fcn.0065d0d4
mov ecx, dword [esp + 0x124]
mov al, 1
mov dword fs:[0], ecx
add esp, 0x130
ret 4