Function at 0x10171500
Capabilities:
Get system information on windows
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
cmp dword [ecx + 0x48], 0
jne 0x10171e8d
pxor xmm0, xmm0
mov edi, edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0xe0], 0
movdqa xmmword [esp + 0xd0], xmm0
movdqa xmmword [esp + 0xc0], xmm0
lea eax, [esp + 0xc0]
push eax
call sub.KERNEL32.dll_GetSystemInfo
movsx eax, word [esp + 0xc0]
xor ecx, ecx
mov ebx, 1
mov dword [esp + 0x48], eax
mov eax, 0x80000000
mov esi, ebx
cpuid
xchg ebx, esi
cmp eax, 0x80000004
mov dword [esp + 0x40], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x3c], edi
jb 0x101717fd
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x101715ae
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171f20
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
push 0x50
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10171f20
mov ecx, dword [esp + 0x40]
mov esi, 0x80000000
xor ebx, ebx
mov edx, 0x80000000
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 5
mov dword [esp + 0x28], 0
nop word cs:[eax + eax]
nop
cmp esi, ecx
mov dword [esp + 0x4c], eax
mov eax, esi
adc edx, 0
xor ecx, ecx
mov dword [esp + 8], edx
mov edi, ebx
cpuid
xchg ebx, edi
mov dword [esp + 0xb0], edi
mov edi, eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x2c], edx
cmp ebx, dword [esp + 0x24]
jne 0x10171640
lea ecx, [esp + 0x20]
mov edx, ebx
call fcn.1016d490
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x28]
jmp 0x10171644
mov eax, dword [esp + 0x4c]
mov edx, edi
mov edi, ebx
mov ecx, dword [esp + 0x40]
inc ebx
shl edi, 4
mov dword [eax + edi], edx
mov edx, dword [esp + 0xb0]
cmp esi, ecx
mov dword [eax + edi + 4], edx
mov edx, dword [esp + 0x44]
mov dword [eax + edi + 8], edx
mov edx, dword [esp + 0x2c]
mov dword [eax + edi + 0xc], edx
mov edx, dword [esp + 8]
mov dword [esp + 0x28], ebx
jae 0x10171684
cmp edx, ecx
mov esi, edx
jbe 0x101715f0
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x101716ac
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171f2e
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
push 0x30
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10171f2e
mov esi, dword [esp + 0x20]
xor edx, edx
cmp ebx, 3
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0x30
mov dword [esp + 0x18], 0
mov dword [esp + 0x2c], esi
jb 0x10171770
mov edx, dword [esi + 0x20]
lea ecx, [esp + 0x10]
call fcn.10172060
mov edx, dword [esi + 0x24]
lea ecx, [esp + 0x10]
call fcn.10172060
mov edx, dword [esi + 0x28]
lea ecx, [esp + 0x10]
call fcn.10172060
mov edx, dword [esi + 0x2c]
lea ecx, [esp + 0x10]
call fcn.10172060
lea ebx, [esi + 0x30]
lea esi, [esp + 0x10]
mov dword [esp + 8], 0x20
nop word cs:[eax + eax]
nop
mov eax, dword [esp + 8]
test eax, eax
je 0x10171776
add eax, edi
cmp eax, 0x40
je 0x10171776
mov edx, dword [ebx]
mov ecx, esi
call fcn.10172060
mov edx, dword [ebx + 4]
mov ecx, esi
call fcn.10172060
mov edx, dword [ebx + 8]
mov ecx, esi
call fcn.10172060
mov edx, dword [ebx + 0xc]
add dword [esp + 8], 0xfffffff0
add ebx, 0x10
mov ecx, esi
call fcn.10172060
jmp 0x10171730
mov ecx, eax
mov esi, eax
jmp 0x101717a7
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
xor edx, edx
test eax, eax
je 0x101717a7
nop word cs:[eax + eax]
nop
cmp byte [esi + edx], 0
je 0x1017179f
inc edx
cmp eax, edx
jne 0x10171790
mov edx, eax
jmp 0x101717a7
cmp edx, eax
ja 0x10171f6e
lea eax, [esp + 0x60]
push edx
push esi
push eax
call fcn.1002a2f0
add esp, 0xc
cmp dword [esp + 0x60], 0
je 0x10171a3a
mov dword [esp + 0xc], 0
mov ebx, 1
cmp dword [esp + 0x14], 0
je 0x101717e4
push esi
push 0
mov eax, dword [0x1035648c]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x24], 0
je 0x101717fd
push dword [esp + 0x2c]
push 0
mov eax, dword [0x1035648c]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov dword [esp + 0x30], ebx
xor ecx, ecx
xor eax, eax
mov ebx, ebx
cpuid
xchg ebx, ebx
mov eax, dword [0x103564a0]
mov esi, ecx
mov edi, edx
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171837
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171efb
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
push 0xc
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10171efb
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0xc
mov dword [esp + 0x18], 0
lea ecx, [esp + 0x10]
mov edx, ebx
call fcn.10172060
mov ebx, dword [esp + 0x48]
lea ecx, [esp + 0x10]
mov edx, edi
call fcn.10172060
lea ecx, [esp + 0x10]
mov edx, esi
call fcn.10172060
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
test eax, eax
je 0x101718a7
xor ecx, ecx
cmp byte [esi + ecx], 0
je 0x1017189d
inc ecx
cmp eax, ecx
jne 0x10171890
jmp 0x101718a7
cmp ecx, eax
ja 0x10171f48
mov eax, ecx
lea ecx, [esp + 0x60]
push eax
push esi
push ecx
call fcn.1002a2f0
add esp, 0xc
cmp dword [esp + 0x60], 0
je 0x101718d7
cmp bx, 0xe
ja 0x10171930
mov eax, dword [ebx*4 + 0x1034db78]
mov edi, dword [ebx*4 + 0x1034dbb4]
mov dword [esp + 8], eax
jmp 0x1017193d
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
test eax, eax
mov dword [esp + 8], eax
je 0x10171aac
js 0x10171f60
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171919
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171f09
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
mov ebx, dword [esp + 8]
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10171f09
jmp 0x1017197a
mov edi, 0x1034d7a3
mov dword [esp + 8], 7
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171965
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171f09
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
mov ebx, dword [esp + 8]
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10171f09
push ebx
push edi
mov dword [esp + 0x40], eax
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp dword [esp + 0x14], 0
je 0x1017199f
push esi
push 0
mov eax, dword [0x1035648c]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov esi, dword [esp + 0xd4]
cmp byte [esp + 0x3c], 0
je 0x101719cb
lea ecx, [esp + 0x54]
mov edx, esi
call fcn.101720f0
inc esi
jne 0x10171ad1
xor esi, esi
mov ecx, 8
jmp 0x10171b35
test esi, esi
je 0x10171a30
xor ebx, ebx
cmp esi, 0x10000000
setb al
jae 0x10171f59
mov bl, al
lea edi, [esi*8]
shl ebx, 3
test edi, edi
js 0x10171f59
je 0x10171aba
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171a1a
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171f3c
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
push edi
push 8
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
jne 0x10171ac4
jmp 0x10171f3c
mov eax, 8
jmp 0x10171ac4
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0xc], eax
je 0x10171eae
setns al
js 0x10171f67
mov byte [esp + 8], al
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171a7f
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171a95
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
push dword [esp + 0xc]
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
mov ebx, eax
test eax, eax
jne 0x10171eb3
movzx eax, byte [esp + 8]
push dword [esp + 0xc]
push eax
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
mov ebx, dword [esp + 8]
mov eax, 1
jmp 0x1017197a
mov eax, ebx
test eax, eax
je 0x10171f3c
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
inc esi
xor ebx, ebx
cmp esi, 0x2000000
setb al
jae 0x10171f19
mov edi, esi
mov bl, al
shl edi, 6
shl ebx, 3
test edi, edi
js 0x10171f19
je 0x10171e95
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171b22
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10171e9f
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
mov ecx, eax
test ecx, ecx
je 0x10171e9f
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x28], 0
test esi, esi
mov dword [esp + 0x34], eax
je 0x10171dd2
shl esi, 3
xor ebx, ebx
mov edi, 1
jmp 0x10171bff
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x48]
movsd xmm0, qword [esp + 0x98]
mov eax, ebx
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x40]
inc ebx
shl eax, 6
movsd qword [ecx + eax + 0x38], xmm0
inc edi
add esi, 0xfffffff8
movsd xmm0, qword [esp + 0x90]
movsd qword [ecx + eax + 0x30], xmm0
movsd xmm0, qword [esp + 0x88]
movsd qword [ecx + eax + 0x28], xmm0
movsd xmm0, qword [esp + 0x80]
movsd qword [ecx + eax + 0x20], xmm0
movsd xmm0, qword [esp + 0x78]
movsd qword [ecx + eax + 0x18], xmm0
movsd xmm0, qword [esp + 0x70]
movsd qword [ecx + eax + 0x10], xmm0
movq xmm0, qword [esp + 0x60]
movsd xmm1, qword [esp + 0x68]
movsd qword [ecx + eax + 8], xmm1
movq qword [ecx + eax], xmm0
mov dword [esp + 0x28], ebx
je 0x10171dd2
lea eax, [esp + 0xa4]
mov dword [esp + 0x60], 0x1034db0c
mov dword [esp + 0x64], 1
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x40], esi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x2c], edi
mov dword [esp + 0xa4], edi
mov dword [esp + 0x70], 0
mov dword [esp + 0xa8], eax
lea eax, [esp + 0xa8]
mov dword [esp + 0xac], 0x1002d590
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], 1
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.1001ac00
add esp, 8
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x10]
movsd xmm0, qword [esp + 0x14]
mov ebx, 1
mov edi, 1
test esi, esi
mov dword [esp + 0x44], eax
movaps xmmword [esp + 0xb0], xmm0
je 0x10171cd7
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171cc0
call sub.KERNEL32.dll_GetProcessHeap
mov esi, dword [esp + 8]
test eax, eax
je 0x10171ee1
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
mov esi, dword [esp + 8]
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
mov edi, eax
test eax, eax
je 0x10171ee1
push esi
push dword [esp + 0x3c]
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov esi, dword [esp + 0xc]
test esi, esi
je 0x10171d36
js 0x10171ef1
mov eax, dword [0x103564a0]
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10171d1f
call sub.KERNEL32.dll_GetProcessHeap
mov esi, dword [esp + 0xc]
test eax, eax
je 0x10171ed1
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
mov esi, dword [esp + 0xc]
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
mov ebx, eax
test eax, eax
je 0x10171ed1
push esi
push dword [esp + 0x34]
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x44]
movaps xmm1, xmmword [esp + 0xb0]
movq xmm0, qword [eax + ecx*8 - 8]
mov ecx, dword [esp + 8]
mov dword [esp + 0x68], edx
movlps qword [esp + 0x6c], xmm1
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], ecx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], ebx
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
movq qword [esp + 0x60], xmm0
cmp ebx, dword [esp + 0x24]
jne 0x10171b70
lea ecx, [esp + 0x20]
mov edx, ebx
call fcn.1016d5e0
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x28]
jmp 0x10171b78
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x28]
movsd xmm0, qword [esp + 0x20]
cmp dword [esp + 0x58], 0
mov edi, edx
lea esi, [eax + 0x40]
mov dword [esp + 0x18], ecx
movsd qword [esp + 0x10], xmm0
je 0x10171e08
push dword [esp + 0x34]
push 0
mov eax, dword [0x1035648c]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x18]
movsd xmm0, qword [esp + 0x10]
mov dword [esp + 0x68], eax
movsd qword [esp + 0x60], xmm0
mov ecx, esi
call fcn.1016bb00
mov eax, dword [esp + 0x68]
movsd xmm0, qword [esp + 0x60]
mov dword [esi + 8], eax
movsd qword [esi], xmm0
mov esi, dword [esp + 0x50]
cmp dword [esi + 0x18], 0
je 0x10171e4f
push dword [esi + 0x14]
push 0
mov eax, dword [0x1035648c]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 8]
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], ecx
cmp dword [esi + 0x24], 0
je 0x10171e77
push dword [esi + 0x20]
push 0
mov eax, dword [0x1035648c]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x30]
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0xc]
mov dword [esi + 0x24], eax
mov dword [esi + 0x28], eax
mov eax, edi
mov byte [esi + 0x4c], al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, ebx
test ecx, ecx
jne 0x10171b35
push edi
push ebx
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
mov ebx, 1
push dword [esp + 0xc]
push edi
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp dword [esp + 0x14], 0
jne 0x101717d5
jmp 0x101717e4
push esi
push 1
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
push esi
push 1
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
call fcn.1001a7a0
jmp 0x10171f7d
push 0xc
push 1
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
push dword [esp + 8]
push 1
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
call fcn.1001a7a0
jmp 0x10171f7d
push 0x50
push 4
call fcn.1001a7e0
add esp, 8
ud2
push 0x30
push 1
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
push edi
push ebx
call fcn.1001a7e0
add esp, 8
jmp 0x10171f7d
push 0x1034d824
push eax
push ecx
call fcn.1002a190
add esp, 0xc
jmp 0x10171f7d
call fcn.1001a7a0
jmp 0x10171f7d
call fcn.1001a7a0
jmp 0x10171f7d
call fcn.1001a7a0
jmp 0x10171f7d
push 0x1034d814
push eax
push edx
call fcn.1002a190
add esp, 0xc
ud2