Function at 0x10091010
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x101bf97a
mov eax, dword fs:[0]
push eax
sub esp, 0x94
mov eax, dword [0x102832a0]
xor eax, esp
mov dword [esp + 0x90], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x102832a0]
xor eax, esp
push eax
lea eax, [esp + 0xa8]
mov dword fs:[0], eax
mov esi, dword [0x102b00f0]
mov eax, dword [esp + 0xb8]
mov ebp, dword [esp + 0xd8]
mov edi, dword [esp + 0xbc]
mov ebx, esi
add esi, 0xe8
push esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x3c], ebp
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebx + 0x68]
push esi
mov dword [esp + 0x34], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test ebp, ebp
je 0x100910cb
cmp dword [esp + 0xd4], 0
je 0x100910a8
cmp dword [esp + 0x20], 0
jne 0x100910cb
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xdc]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ebp
push ecx
call fcn.10091c30
mov eax, dword [esp + 0x18]
or ebp, 0xffffffff
cmp dword [eax + 0x1dc], 0
jne 0x100910e8
cmp dword [eax + 0x9c], 0
je 0x100912dc
cmp dword [esp + 0x20], 0
jne 0x100912dc
xor ebx, ebx
cmp dword [esp + 0xc4], ebx
je 0x10091254
push 0x14
call fcn.100f5c37
add esp, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0xb0], ebx
cmp eax, ebx
je 0x10091131
mov edx, dword [esp + 0xd0]
mov ecx, dword [esp + 0x2c]
push edx
push eax
call fcn.100a1570
mov esi, eax
jmp 0x10091133
xor esi, esi
mov dword [esp + 0xb0], ebp
push 0x20
call fcn.100f5c37
add esp, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0xb0], 1
cmp eax, ebx
je 0x10091163
push eax
mov ecx, esi
call fcn.100a16d0
mov edi, eax
jmp 0x10091165
xor edi, edi
mov dword [esp + 0xb0], ebp
mov eax, dword [edi]
mov edx, dword [eax + 8]
mov ecx, edi
mov dword [esp + 0x2c], edi
call edx
mov edx, dword [esp + 0x18]
push 0x102638d4
mov dword [esp + 0x2c], ebx
call fcn.10097d00
jmp 0x10091190
mov eax, dword [edi]
mov edx, dword [eax + 0x10]
mov ecx, edi
call edx
mov ebx, eax
cmp ebx, 0xa
je 0x10091190
cmp ebx, 0xd
je 0x10091190
cmp ebx, 0x3e
je 0x10091220
cmp ebx, 0xffffffff
je 0x10091220
mov eax, dword [esp + 0x18]
mov ebp, dword [eax + 0x1e4]
mov byte [esp + 0x24], bl
test ebp, ebp
je 0x100911dc
mov eax, dword [ebp + 0x18]
lea esi, [eax + 1]
push ebp
mov dword [esp + 0x20], eax
call fcn.100558d0
mov eax, dword [ebp + 0x1c]
add eax, dword [esp + 0x1c]
mov byte [eax], bl
jmp 0x100911f5
mov edx, dword [eax + 0xa4]
mov eax, dword [eax + 0xa0]
push 1
lea ecx, [esp + 0x28]
push ecx
push edx
call eax
add esp, 0xc
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, 0xf0
jne 0x10091190
mov edx, dword [esp + 0x18]
push 0x10230fe0
call fcn.10097d00
mov dword [esp + 0x28], 0
jmp 0x10091190
mov esi, dword [esp + 0x18]
push 0x102638d8
mov edx, esi
call fcn.10097d00
push 0x102638dc
mov edx, esi
call fcn.10097d00
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
jmp 0x100912dc
mov eax, dword [edi]
cmp eax, 9
je 0x10091272
push 9
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov ecx, dword [edi + 0xc]
mov edx, dword [edi + 8]
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x18]
push ecx
push edx
push eax
push ebx
call fcn.1008c680
mov eax, dword [edi]
cmp eax, 9
je 0x100912a7
push 9
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov eax, dword [edi]
mov esi, dword [edi + 0xc]
cmp eax, 9
je 0x100912c8
push 9
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov edi, dword [edi + 8]
push esi
push edi
push str.ImData_0:d_1:d_0_0_n
mov edi, ebx
call fcn.10097e00
add esp, 0xc
mov edi, dword [esp + 0x18]
cmp dword [edi + 0x1dc], 0
jne 0x100912f2
cmp dword [edi + 0x9c], 0
je 0x10091337
mov ebx, dword [esp + 0x20]
test ebx, ebx
jne 0x1009133f
mov eax, str.true
cmp dword [esp + 0xc0], ebx
jne 0x1009130d
mov eax, str.false
mov ebp, dword [esp + 0xcc]
push ebp
mov ecx, ebp
neg ecx
push ecx
mov ecx, dword [esp + 0xd0]
push ecx
push eax
push ebp
push ecx
push str.0:d_1:d_2:s__3:d_0_0_4:d_0_5:d__pdfImM1a_n
call fcn.10097e00
add esp, 0x1c
jmp 0x100913c2
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x10091377
cmp dword [esp + 0x30], 0
mov eax, 0x1026590c
jne 0x10091350
mov eax, 0x10203f07
mov ebp, dword [esp + 0xcc]
push eax
mov eax, dword [esp + 0xcc]
push ebp
mov edx, ebp
neg edx
push edx
push eax
push ebp
push eax
push str.0:d_1:d_8__2:d_0_0_3:d_0_4:d__pdfIm15:s_n
call fcn.10097e00
add esp, 0x1c
jmp 0x100913c2
cmp dword [esp + 0x30], 0
mov ecx, 0x1026590c
jne 0x10091388
mov ecx, 0x10203f07
cmp dword [esp + 0xc0], 0
mov eax, str.true
jne 0x1009139c
mov eax, str.false
mov ebp, dword [esp + 0xcc]
push ecx
push ebp
mov ecx, ebp
neg ecx
push ecx
mov ecx, dword [esp + 0xd4]
push ecx
push eax
push ebp
push ecx
push str.0:d_1:d_2:s__3:d_0_0_4:d_0_5:d__pdfImM16:s_n
call fcn.10097e00
add esp, 0x20
cmp dword [edi + 0x1dc], 0
jne 0x100913d4
cmp dword [edi + 0x9c], 0
je 0x100913e2
test ebx, ebx
je 0x10091678
mov ebx, dword [esp + 0x20]
jmp 0x100913ea
test ebx, ebx
je 0x1009159d
push 0x1c
call fcn.100f5c37
mov esi, eax
add esp, 4
mov dword [esp + 0x1c], esi
mov dword [esp + 0xb0], 2
test esi, esi
je 0x10091424
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 4]
mov edx, dword [ebx + 8]
push eax
mov eax, dword [esp + 0xcc]
call fcn.1009a530
mov esi, eax
jmp 0x10091426
xor esi, esi
mov dword [esp + 0xb0], 0xffffffff
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
mov eax, dword [esp + 0xcc]
xor ebp, ebp
test eax, eax
jle 0x10091574
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x1c], eax
jmp 0x10091460
cmp dword [esp + 0xc8], 0
jle 0x1009154b
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x28], ecx
lea esp, [esp]
mov edx, dword [esi + 0x18]
cmp edx, dword [esi + 0x10]
jl 0x10091494
call fcn.1009a5f0
mov dword [esi + 0x18], 0
xor eax, eax
cmp dword [esi + 8], eax
jle 0x100914b7
mov edi, dword [esi + 0x14]
mov edi, edi
mov ecx, dword [esi + 0x18]
mov dl, byte [edi + ecx]
inc ecx
mov byte [esp + eax + 0x84], dl
inc eax
mov dword [esi + 0x18], ecx
cmp eax, dword [esi + 8]
jl 0x100914a0
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x88]
call fcn.10050660
mov eax, dword [esp + 0x34]
imul eax, eax, 0xff
add eax, 0x8000
sar eax, 0x10
test ebx, ebx
je 0x100914e8
mov byte [esp + ebp + 0x3c], al
jmp 0x1009151e
mov cl, al
shr cl, 4
cmp cl, 0xa
sbb dl, dl
and dl, 0xd9
add dl, 0x57
add dl, cl
movzx eax, al
mov byte [esp + ebp + 0x3c], dl
inc ebp
and eax, reloc.WS2_32.dll_ntohs
jns 0x1009150e
dec eax
or eax, 0xfffffff0
inc eax
cmp al, 0xa
sbb cl, cl
and cl, 0xd9
add cl, 0x57
add cl, al
mov byte [esp + ebp + 0x3c], cl
inc ebp
cmp ebp, 0x40
jl 0x10091540
test ebx, ebx
jne 0x1009152e
mov byte [esp + ebp + 0x3c], 0xa
inc ebp
mov eax, dword [esp + 0x18]
push ebp
lea edx, [esp + 0x40]
push edx
push eax
call fcn.10097d80
xor ebp, ebp
sub dword [esp + 0x28], 1
jne 0x10091480
sub dword [esp + 0x1c], 1
jne 0x10091460
test ebp, ebp
je 0x10091574
test ebx, ebx
jne 0x10091564
mov byte [esp + ebp + 0x3c], 0xa
inc ebp
mov edx, dword [esp + 0x18]
push ebp
lea ecx, [esp + 0x40]
push ecx
push edx
call fcn.10097d80
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov eax, dword [esi + 0x14]
test eax, eax
je 0x1009158f
push eax
call fcn.10109eb5
add esp, 4
push esi
call fcn.100f5c66
add esp, 4
jmp 0x10091678
mov edi, dword [esp + 0x2c]
mov eax, dword [edi]
mov edx, dword [eax + 8]
mov ecx, edi
call edx
xor esi, esi
test ebp, ebp
jle 0x1009166f
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x1c], ebp
lea esp, [esp]
cmp dword [esp + 0xc8], 0
jle 0x10091646
mov ebp, dword [esp + 0xc8]
dec ebp
shr ebp, 3
inc ebp
mov eax, dword [edi]
mov edx, dword [eax + 0x10]
mov ecx, edi
call edx
test ebx, ebx
je 0x100915e9
mov byte [esp + esi + 0x3c], al
jmp 0x1009161f
mov cl, al
shr cl, 4
cmp cl, 0xa
sbb dl, dl
and dl, 0xd9
add dl, 0x57
add dl, cl
movzx eax, al
mov byte [esp + esi + 0x3c], dl
inc esi
and eax, reloc.WS2_32.dll_ntohs
jns 0x1009160f
dec eax
or eax, 0xfffffff0
inc eax
cmp al, 0xa
sbb cl, cl
and cl, 0xd9
add cl, 0x57
add cl, al
mov byte [esp + esi + 0x3c], cl
inc esi
cmp esi, 0x40
jl 0x10091641
test ebx, ebx
jne 0x1009162f
mov byte [esp + esi + 0x3c], 0xa
inc esi
mov eax, dword [esp + 0x18]
push esi
lea edx, [esp + 0x40]
push edx
push eax
call fcn.10097d80
xor esi, esi
sub ebp, 1
jne 0x100915d6
sub dword [esp + 0x1c], 1
jne 0x100915c0
test esi, esi
je 0x1009166f
test ebx, ebx
jne 0x1009165f
mov byte [esp + esi + 0x3c], 0xa
inc esi
mov edx, dword [esp + 0x18]
push esi
lea ecx, [esp + 0x40]
push ecx
push edx
call fcn.10097d80
mov eax, dword [edi]
mov edx, dword [eax + 0xc]
mov ecx, edi
call edx
cmp dword [esp + 0x38], 0
je 0x1009169e
cmp dword [esp + 0xd4], 0
je 0x10091690
cmp dword [esp + 0x20], 0
jne 0x1009169e
mov edx, dword [esp + 0x18]
push str.pdfImClipEnd_n
call fcn.10097d00
mov ecx, dword [esp + 0xa8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x90]
xor ecx, esp
call fcn.1010583a
add esp, 0xa0
ret 0x30