Function at 0x815192
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x5d811b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x10
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 8]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x30]
test esi, esi
push edi
mov edi, dword [eax]
mov ebp, dword [edi + 0x88]
mov ebx, dword [edi + 0x8c]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebx
je 0x815216
mov eax, dword [esi + 4]
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 0x30]
test eax, eax
jne 0x815257
mov eax, dword [esi + 4]
mov ecx, dword [eax]
mov eax, dword [ecx + 0x58]
mov edx, dword [eax + 0x40]
add eax, 0x40
mov eax, dword [eax + 4]
and ebp, edx
and ebx, eax
mov ecx, ebp
or ecx, ebx
je 0x815257
mov esi, dword [esi]
test esi, esi
jne 0x8151d7
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], ebp
mov ebx, dword [eax + 0xfc]
test ebx, ebx
jl 0x815274
mov eax, dword [eax + 0xf4]
test eax, eax
je 0x815274
mov edx, dword [esp + 0x30]
mov dword [esp + 0x14], eax
mov eax, dword [edx + 0xe0]
cmp eax, 0xa
je 0x815242
cmp eax, 9
jne 0x815290
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
pop edi
pop esi
mov dword [esp + 0x10], ebp
pop ebp
mov dword [esp + 0x10], ebx
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
test ecx, ecx
je 0x8154ff
mov eax, dword [ecx]
test eax, eax
je 0x8154ff
mov ebx, dword [eax + 0x18]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x14], eax
test ebx, ebx
jl 0x8154ff
mov eax, 1
xor edx, edx
mov ecx, ebx
call fcn.00924782
mov esi, edx
and esi, dword [esp + 0x1c]
mov ecx, eax
and ecx, ebp
or ecx, esi
jne 0x8153b9
mov esi, dword [edi + 0xa8]
mov ebp, dword [edi + 0xac]
mov ecx, esi
and ecx, eax
mov eax, ebp
and eax, edx
or ecx, eax
je 0x8152e4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
and ecx, esi
and eax, ebp
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0x18]
push ecx
push edx
push eax
mov eax, ebx
call fcn.00809492
mov esi, eax
add esp, 0xc
cmp esi, 0x40
jae 0x8153b5
mov ebx, dword [esp + 0x30]
mov eax, dword [ebx + 0xfc]
test eax, eax
jl 0x815362
mov eax, dword [ebx + 4]
cmp dword [eax + 0x10], esi
je 0x815330
mov ecx, dword [ebx]
mov edi, edi
cmp dword [eax], ecx
jne 0x815330
mov edx, dword [eax + 0x38]
add eax, 0x28
cmp edx, esi
jne 0x815322
mov ecx, dword [ebx + 0x158]
mov edx, dword [ecx + 0x44]
push edx
mov edx, dword [ecx + 0x40]
push edx
push eax
push ebx
push ecx
call fcn.008145b2
add esp, 0x14
test eax, eax
je 0x8153b3
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.00924782
mov ecx, dword [ebx + 0x158]
test byte [ecx + 0x884], 0x20
je 0x815386
mov ebx, 0xffffffff
jmp 0x815392
mov ebx, dword [ecx + 0x8f8]
mov ebx, dword [ebx + 0xe0]
push 0
push ebx
push 0
push 0
push edx
push eax
mov eax, dword [ecx + 0x860]
mov ecx, dword [esp + 0x28]
push eax
call fcn.007c3532
test eax, eax
jle 0x815242
mov ebx, esi
mov ebp, dword [esp + 0x18]
mov eax, 1
xor edx, edx
mov ecx, ebx
call fcn.00924782
mov esi, dword [esp + 0x1c]
and eax, ebp
and edx, esi
or eax, edx
je 0x815242
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0x34]
push ecx
push ebx
push edi
call fcn.008092b2
add esp, 0xc
test eax, eax
je 0x815242
cmp eax, 0xffffffff
jne 0x8154d2
mov esi, dword [esp + 0x10]
test esi, esi
je 0x81549c
mov ecx, dword [esi]
test ecx, ecx
je 0x81549c
mov edx, dword [ecx]
call dword [edx + 8]
test eax, eax
jne 0x815610
push 0xa8
call fcn.00925c1a
add esp, 4
mov dword [esp + 0x30], eax
test eax, eax
mov dword [esp + 0x28], 0
je 0x81544c
mov ecx, dword [esp + 0x34]
mov edx, dword [esi]
push ecx
push edx
mov ecx, eax
call fcn.007c2342
jmp 0x81544e
xor eax, eax
test eax, eax
mov dword [esp + 0x28], 0xffffffff
je 0x815242
mov ecx, dword [eax + 0x14]
test ecx, ecx
jne 0x81547f
pop edi
mov dword [esi], eax
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0xf4]
cmp ecx, dword [esp + 0x34]
jae 0x8154e7
pop edi
pop esi
pop ebp
mov dword [eax + 0x1c], 0x4a8500
mov dword [eax + 0x30], 0x4a4820
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
mov eax, dword [esp + 0x10]
test eax, eax
je 0x8154e7
mov eax, dword [eax]
test eax, eax
je 0x8154e7
mov dword [eax + 0x10], 1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
mov ecx, dword [edi]
mov edx, dword [esp + 0x38]
cmp edx, dword [ecx + 0x48]
jb 0x81554c
mov eax, dword [ecx]
call dword [eax + 0x24]
mov ebx, dword [eax]
mov ebp, dword [eax + 4]
mov ecx, dword [edi + 0xa8]
mov edx, dword [edi + 0xac]
mov al, byte [edi + 0x138]
or ebx, ecx
or ebp, edx
test al, al
je 0x81553e
mov eax, dword [edi + 0xb0]
mov ecx, dword [edi + 0xb4]
or ebx, eax
or ebp, ecx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
and ebx, ecx
and ebp, eax
jmp 0x815552
mov ebx, ebp
mov ebp, dword [esp + 0x1c]
mov eax, dword [edi + 0x60]
xor esi, esi
test eax, eax
jbe 0x815242
lea ecx, [ecx]
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.00924782
and eax, ebx
and edx, ebp
or eax, edx
je 0x81558f
mov eax, dword [esp + 0x34]
lea edx, [esp + 0x14]
push edx
push esi
push edi
call fcn.008092b2
add esp, 0xc
test eax, eax
jne 0x8155ac
mov eax, dword [edi + 0x60]
inc esi
cmp esi, eax
jb 0x815562
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
mov ecx, dword [esp + 0x3c]
test ecx, ecx
jne 0x815610
mov ecx, dword [esp + 0x30]
test eax, eax
mov dword [ecx + 0xcc], esi
mov eax, 0x4a85f0
jg 0x8155cc
mov eax, 0x4a86c0
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0xe0], 8
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.00924782
mov ebx, dword [edi + 0xa8]
mov esi, dword [edi + 0xac]
and eax, ebx
and edx, esi
or eax, edx
je 0x815610
mov byte [edi + 0x13c], 1
mov edi, dword [edi]
mov eax, dword [edi]
push 7
mov ecx, edi
call dword [eax + 0xa0]
mov ecx, dword [esp + 0x20]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x1c
ret