Function at 0x10038e90
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24c
mov eax, dword [0x100f38c4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
xor edx, edx
cmp dword [esi + 0x28], 0xffff
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x240], edx
je 0x10038f0a
cmp eax, 2
jbe 0x10038edc
pop edi
pop esi
mov eax, 0x80070057
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10055898
mov esp, ebp
pop ebp
ret 0xc
lea edx, [ebp - 0x240]
push edx
lea eax, [edi + eax*8]
mov edx, dword [eax*4 + 0x1007bdc8]
mov eax, dword [esi + 0x18]
lea ecx, [esi + 0x18]
push edx
mov edx, dword [eax + 4]
push 0x220468
call edx
mov ecx, eax
call fcn.10024030
jmp 0x10038ff8
mov ecx, dword [esi + 0x24]
cmp ecx, edx
je 0x10038ffa
xor eax, eax
push edx
mov dword [ebp - 0x21c], eax
mov dword [ebp - 0x214], eax
mov dword [ebp - 0x210], eax
mov dword [ebp - 0x218], eax
mov ebx, 9
mov dword [ebp - 0x21c], ebx
mov eax, dword [ecx]
mov ecx, dword [edi*4 + 0x1007be28]
mov dword [ebp - 0x230], edx
mov dword [ebp - 0x210], eax
xor eax, eax
lea edx, [ebp - 0x230]
push edx
push 0x10
mov dword [ebp - 0x22c], eax
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x220], eax
lea eax, [ebp - 0x22c]
push eax
mov eax, dword [esi + 0x18]
mov dword [ebp - 0x214], ecx
push 0x10
lea ecx, [esi + 0x18]
lea edx, [ebp - 0x21c]
push edx
mov edx, dword [eax + 4]
push 0x220740
call edx
mov ecx, eax
call fcn.10023db0
test eax, eax
js 0x10038fda
cmp dword [ebp - 0x22c], ebx
jne 0x10038fda
mov eax, dword [ebp - 0x224]
cmp eax, 3
je 0x10038fd3
cmp eax, 0x33
je 0x10038fca
cmp eax, 0x3f
jne 0x10038fda
mov dword [esi + 0x30], 3
jmp 0x10038fda
mov dword [esi + 0x30], 2
jmp 0x10038fda
mov dword [esi + 0x30], 1
mov ecx, esi
call fcn.10037f90
mov eax, dword [esi + 0x34]
test eax, eax
je 0x10038ff8
mov edx, dword [eax]
mov edx, dword [edx + 0x30]
lea ecx, [esi + 0x14]
push ecx
mov ecx, dword [esi + 0x30]
push ecx
push eax
call edx
xor edx, edx
cmp byte [ebp + 0x10], 0
je 0x10039238
cmp edi, 6
jne 0x100390bc
mov edx, dword [esi + 0x18]
lea eax, [ebp - 0x240]
push eax
mov eax, dword [edx + 4]
push 1
push 0x22061c
lea ecx, [esi + 0x18]
call eax
mov ecx, eax
call fcn.10024030
xor edi, edi
nop
push 1
push 0x40
mov ecx, esi
call fcn.10038b20
test eax, eax
je 0x10039097
push 0x114
lea ecx, [ebp - 0x118]
push 0
push ecx
call fcn.10056000
add esp, 0xc
lea edx, [ebp - 0x118]
push edx
mov dword [ebp - 0x118], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x10039097
mov eax, dword [ebp - 0x114]
cmp eax, 6
ja 0x10039086
jne 0x10039097
cmp dword [ebp - 0x110], 1
jne 0x10039097
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
inc edi
cmp edi, 0xa
jl 0x10039030
mov edx, dword [esi + 0x18]
lea eax, [ebp - 0x240]
push eax
mov eax, dword [edx + 4]
push 0
push 0x22061c
lea ecx, [esi + 0x18]
call eax
mov ecx, eax
call fcn.10024030
jmp 0x10039238
cmp edi, 2
jne 0x10039238
mov edi, dword [sym.imp.ole32.dll_CoCreateInstance]
lea ecx, [ebp - 0x230]
push ecx
push 0x10077df0
push 1
push edx
push 0x10078684
mov dword [ebp - 0x230], edx
mov dword [ebp - 0x24c], edx
mov dword [ebp - 0x248], edx
mov dword [ebp - 0x238], edx
mov dword [ebp - 0x234], edx
mov dword [ebp - 0x244], edx
call edi
test eax, eax
jns 0x10039132
lea edx, [ebp - 0x24c]
push edx
push 0x1007becc
push 1
push 0
push 0x10078684
call edi
test eax, eax
js 0x10039238
mov dword [ebp - 0x244], 1
lea eax, [ebp - 0x248]
push eax
push 0x10078b3c
push 0x17
push 0
push 0x10078b2c
call edi
mov eax, dword [ebp - 0x248]
mov ecx, dword [eax]
lea edx, [ebp - 0x238]
push edx
push 1
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jne 0x10039238
mov eax, dword [ebp - 0x238]
mov ecx, dword [eax]
lea edx, [ebp - 0x234]
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jne 0x10039238
xor ebx, ebx
cmp dword [ebp - 0x234], ebx
jbe 0x10039238
jmp 0x100391a0
mov eax, dword [ebp - 0x238]
mov dword [ebp - 0x23c], 0
test eax, eax
je 0x100391c4
mov ecx, dword [eax]
lea edx, [ebp - 0x23c]
push edx
push ebx
push eax
mov eax, dword [ecx + 0x10]
call eax
mov edx, dword [ebp - 0x23c]
push 0
push 0
push 0
push 0x104
lea ecx, [ebp - 0x20c]
push ecx
push edx
mov ecx, esi
call fcn.10038630
mov edi, eax
mov eax, dword [ebp - 0x23c]
test eax, eax
je 0x100391f8
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp edi, 0x30
jne 0x1003922b
cmp dword [ebp - 0x244], 0
push 0
lea edx, [ebp - 0x20c]
push edx
je 0x1003921d
mov eax, dword [ebp - 0x24c]
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x34]
jmp 0x10039229
mov eax, dword [ebp - 0x230]
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x30]
call eax
inc ebx
cmp ebx, dword [ebp - 0x234]
jb 0x100391a0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.10055898
mov esp, ebp
pop ebp
ret 0xc