Function at 0x1400e9030
Capabilities:
Get system information on windows

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x1b8
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x120], xmm6
mov qword [rbp + 0x118], 0xfffffffffffffffe
cmp qword [rcx + 0x80], 0
jne 0x1400e99e4
mov esi, edx
mov rdi, rcx
pxor xmm0, xmm0
movdqa xmmword [rbp - 0x40], xmm0
movdqa xmmword [rbp - 0x50], xmm0
movdqa xmmword [rbp - 0x60], xmm0
lea rcx, [rbp - 0x60]
call sub.kernel32.dll_GetSystemInfo
movzx eax, word [rbp - 0x60]
mov word [rbp + 0xb8], ax
mov eax, 0x80000000
xor ecx, ecx
mov r8, rbx
cpuid
xchg rbx, r8
mov dword [rbp + 0x108], eax
cmp eax, 0x80000004
mov byte [rbp + 0x117], sil
mov qword [rbp + 0xa0], rdi
jb 0x1400e91a8
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e90f1
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400e9b51
mov rcx, rax
mov qword [0x1402443c8], rax
xor r14d, r14d
mov r8d, 0x50
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400e9b51
mov r8, rax
mov qword [rbp + 0xc8], rax
mov qword [rbp + 0xd0], 5
mov eax, 0x80000000
xor esi, esi
jmp 0x1400e915d
mov r8, qword [rbp + 0xc8]
mov r14, qword [rbp + 0xd8]
mov rax, r14
shl rax, 4
mov dword [r8 + rax], r13d
mov dword [r8 + rax + 4], edi
mov dword [r8 + rax + 8], r12d
mov dword [r8 + rax + 0xc], r15d
inc r14
mov eax, ebx
mov qword [rbp + 0xd8], r14
test sil, 1
jne 0x1400e91c2
cmp eax, dword [rbp + 0x108]
ja 0x1400e91c2
setae sil
mov ebx, eax
adc ebx, 0
xor ecx, ecx
mov rdi, rbx
cpuid
xchg rbx, rdi
mov r12d, ecx
mov r15d, edx
mov r13d, eax
cmp r14, qword [rbp + 0xd0]
jne 0x1400e913e
lea rcx, [rbp + 0xc8]
mov rdx, r14
call fcn.1400ed2f0
jmp 0x1400e9130
mov eax, 1
mov qword [rbp + 0xc0], rax
xor eax, eax
mov qword [rbp + 0x100], rax
jmp 0x1400e936f
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e91ee
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400e9b62
mov rcx, rax
mov qword [0x1402443c8], rax
mov r8d, 0x30
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400e9b62
mov qword [rbp + 0xe0], rax
mov qword [rbp + 0xe8], 0x30
mov qword [rbp + 0xf0], 0
mov rdi, qword [rbp + 0xc8]
shl r14, 4
add r14, rdi
mov eax, 2
mov esi, 5
xor r12d, r12d
lea rbx, [rbp + 0xe0]
mov r15, rdi
nop word [rax + rax]
test r12b, 1
je 0x1400e9270
test rsi, rsi
je 0x1400e92ce
cmp r15, r14
je 0x1400e92ce
dec rsi
jmp 0x1400e9294
cmp rsi, rax
jbe 0x1400e92ce
mov rcx, r14
sub rcx, r15
shr rcx, 4
cmp rcx, rax
jbe 0x1400e92ce
mov rcx, rax
not rcx
add rsi, rcx
shl rax, 4
add r15, rax
mov edx, dword [r15]
mov rcx, rbx
call fcn.1400ed3b0
mov edx, dword [r15 + 4]
mov rcx, rbx
call fcn.1400ed3b0
mov edx, dword [r15 + 8]
mov rcx, rbx
call fcn.1400ed3b0
mov edx, dword [r15 + 0xc]
add r15, 0x10
mov r12b, 1
mov rcx, rbx
call fcn.1400ed3b0
xor eax, eax
jmp 0x1400e9250
mov rbx, qword [rbp + 0xe0]
mov r8, qword [rbp + 0xf0]
test r8, r8
movzx esi, byte [rbp + 0x117]
je 0x1400e930c
xor ecx, ecx
nop word [rax + rax]
cmp byte [rbx + rcx], 0
je 0x1400e9300
inc rcx
cmp r8, rcx
jne 0x1400e92f0
jmp 0x1400e930c
cmp rcx, r8
ja 0x1400e9b8e
mov r8, rcx
mov rcx, rbp
mov rdx, rbx
call fcn.140031270
cmp qword [rbp], 0
je 0x1400e99ff
mov eax, 1
mov qword [rbp + 0xc0], rax
xor eax, eax
mov qword [rbp + 0x100], rax
cmp qword [rbp + 0xe8], 0
je 0x1400e9353
mov rcx, qword [0x1402443c8]
xor edx, edx
mov r8, rbx
call qword [sym.imp.kernel32.dll_HeapFree]
cmp qword [rbp + 0xd0], 0
je 0x1400e936f
mov rcx, qword [0x1402443c8]
xor edx, edx
mov r8, rdi
call qword [sym.imp.kernel32.dll_HeapFree]
xor eax, eax
xor ecx, ecx
mov r14, rbx
cpuid
xchg rbx, r14
mov edi, ecx
mov ebx, edx
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e93ab
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400e9b22
mov rcx, rax
mov qword [0x1402443c8], rax
mov r8d, 0xc
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400e9b22
mov qword [rbp + 0xe0], rax
mov qword [rbp + 0xe8], 0xc
mov qword [rbp + 0xf0], 0
lea rcx, [rbp + 0xe0]
mov edx, r14d
call fcn.1400ed3b0
lea rcx, [rbp + 0xe0]
mov edx, ebx
call fcn.1400ed3b0
lea rcx, [rbp + 0xe0]
mov edx, edi
call fcn.1400ed3b0
mov rdi, qword [rbp + 0xe0]
mov r8, qword [rbp + 0xf0]
test r8, r8
mov r14, qword [rbp + 0xa0]
je 0x1400e944c
xor ecx, ecx
nop word cs:[rax + rax]
cmp byte [rdi + rcx], 0
je 0x1400e9440
inc rcx
cmp r8, rcx
jne 0x1400e9430
jmp 0x1400e944c
cmp rcx, r8
ja 0x1400e9b73
mov r8, rcx
mov rcx, rbp
mov rdx, rdi
call fcn.140031270
cmp qword [rbp], 0
je 0x1400e94ae
movzx eax, word [rbp + 0xb8]
cmp ax, 0xe
ja 0x1400e9525
movzx eax, ax
lea rcx, [0x1401b3c20]
mov rcx, qword [rcx + rax*8]
mov qword [rbp + 0x108], rcx
lea rcx, [0x1401b3c98]
movsxd rbx, dword [rcx + rax*4]
add rbx, rcx
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e956b
jmp 0x1400e954b
mov rbx, qword [rbp + 8]
mov rax, qword [rbp + 0x10]
mov qword [rbp + 0x108], rax
test rax, rax
je 0x1400e9a72
js 0x1400e9b87
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e94f4
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400e950f
mov rcx, rax
mov qword [0x1402443c8], rax
xor edx, edx
mov r8, qword [rbp + 0x108]
call qword [sym.imp.kernel32.dll_HeapAlloc]
mov r12, rax
test rax, rax
jne 0x1400e9a78
mov ecx, 1
mov rdx, qword [rbp + 0x108]
call fcn.140162bd0
jmp 0x1400e9ba7
lea rbx, [0x1401b36b6]
mov eax, 7
mov qword [rbp + 0x108], rax
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e956b
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
mov r15, qword [rbp + 0x108]
je 0x1400e9b42
mov rcx, rax
mov qword [0x1402443c8], rax
xor edx, edx
mov r15, qword [rbp + 0x108]
mov r8, r15
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400e9b42
mov r12, rax
mov rcx, rax
mov rdx, rbx
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
cmp qword [rbp + 0xe8], 0
je 0x1400e95b3
mov rcx, qword [0x1402443c8]
xor edx, edx
mov r8, rdi
call qword [sym.imp.kernel32.dll_HeapFree]
mov edi, dword [rbp - 0x40]
test sil, sil
mov qword [rbp + 0x98], r12
je 0x1400e95d0
lea rcx, [rbp + 0x78]
mov rdx, rdi
call fcn.1400ed470
jmp 0x1400e9639
test edi, edi
je 0x1400e9622
lea rbx, [rdi*8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e95fd
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400e9610
mov rcx, rax
mov qword [0x1402443c8], rax
mov edx, 8
mov r8, rbx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
jne 0x1400e9627
mov ecx, 8
mov rdx, rbx
call fcn.140162bd0
jmp 0x1400e9ba7
mov eax, 8
mov qword [rbp + 0x78], rax
mov qword [rbp + 0x80], rdi
mov qword [rbp + 0x88], rdi
lea rsi, [rdi + 1]
imul rdi, rsi, 0x70
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e966d
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400e9b33
mov rcx, rax
mov qword [0x1402443c8], rax
xor edx, edx
mov r8, rdi
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400e9b33
mov r15, rax
lea rax, [r14 + 0x70]
mov qword [rbp - 0x10], rax
mov qword [rbp + 0xc8], r15
mov qword [rbp + 0xd0], rsi
mov qword [rbp + 0xd8], 0
mov r12, qword [rbp + 0x78]
mov rax, qword [rbp + 0x88]
lea rsi, [r12 + rax*8]
xor r13d, r13d
mov qword [rbp - 8], r12
xor ebx, ebx
jmp 0x1400e9727
mov r15, qword [rbp + 0xc8]
mov r13, qword [rbp + 0xd8]
add r12, 8
imul rax, r13, 0x70
movups xmm0, xmmword [rbp + 0x60]
movups xmmword [r15 + rax + 0x60], xmm0
movups xmm0, xmmword [rbp + 0x50]
movups xmmword [r15 + rax + 0x50], xmm0
movups xmm0, xmmword [rbp + 0x40]
movups xmmword [r15 + rax + 0x40], xmm0
movdqu xmm0, xmmword [rbp]
movups xmm1, xmmword [rbp + 0x10]
movups xmm2, xmmword [rbp + 0x20]
movups xmm3, xmmword [rbp + 0x30]
movups xmmword [r15 + rax + 0x30], xmm3
movups xmmword [r15 + rax + 0x20], xmm2
movups xmmword [r15 + rax + 0x10], xmm1
movdqu xmmword [r15 + rax], xmm0
inc r13
mov qword [rbp + 0xd8], r13
cmp r12, rsi
je 0x1400e98fe
inc rbx
mov qword [rbp - 0x18], rbx
lea rax, [rbp - 0x18]
mov qword [rbp - 0x28], rax
lea rax, [fcn.14002dc30]
mov qword [rbp - 0x20], rax
lea rax, str.CPU
mov qword [rbp], rax
mov qword [rbp + 8], 1
mov qword [rbp + 0x20], 0
lea rax, [rbp - 0x28]
mov qword [rbp + 0x10], rax
mov qword [rbp + 0x18], 1
lea rcx, [rbp + 0xe0]
mov rdx, rbp
call fcn.14001ffe0
mov rax, qword [rbp + 0xe0]
mov qword [rbp + 0xb8], rax
movups xmm6, xmmword [rbp + 0xe8]
mov edi, 1
mov eax, 1
mov r14, qword [rbp + 0x108]
test r14, r14
je 0x1400e9803
js 0x1400e9b11
movzx eax, byte [0x1402448a8]
mov rax, qword [0x1402443c8]
test rax, rax
jne 0x1400e97e5
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
mov r14, qword [rbp + 0x108]
je 0x1400e9ace
mov qword [0x1402443c8], rax
mov rcx, rax
xor edx, edx
mov r14, qword [rbp + 0x108]
mov r8, r14
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400e9ace
mov qword [rbp + 0x90], rax
mov rcx, rax
mov rdx, qword [rbp + 0x98]
mov r8, r14
call sub.VCRUNTIME140.dll_memcpy
mov r14, qword [rbp + 0x100]
test r14, r14
je 0x1400e987f
js 0x1400e9b00
movzx eax, byte [0x1402448a8]
mov rax, qword [0x1402443c8]
test rax, rax
jne 0x1400e985e
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
mov r14, qword [rbp + 0x100]
je 0x1400e9ae7
mov qword [0x1402443c8], rax
mov rcx, rax
xor edx, edx
mov r14, qword [rbp + 0x100]
mov r8, r14
call qword [sym.imp.kernel32.dll_HeapAlloc]
mov rdi, rax
test rax, rax
je 0x1400e9ae7
mov rcx, rdi
mov rdx, qword [rbp + 0xc0]
mov r8, r14
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [r12]
mov rcx, qword [rbp + 0xb8]
mov qword [rbp], rcx
movups xmmword [rbp + 8], xmm6
mov dword [rbp + 0x68], 0
mov qword [rbp + 0x48], 0
mov rcx, qword [rbp + 0x90]
mov qword [rbp + 0x18], rcx
mov rcx, qword [rbp + 0x108]
mov qword [rbp + 0x20], rcx
mov qword [rbp + 0x28], rcx
mov qword [rbp + 0x30], rdi
mov qword [rbp + 0x38], r14
mov qword [rbp + 0x40], r14
mov qword [rbp + 0x60], rax
cmp r13, qword [rbp + 0xd0]
jne 0x1400e96ce
lea rcx, [rbp + 0xc8]
mov rdx, r13
call fcn.1400ed800
jmp 0x1400e96c0
mov rax, qword [rbp + 0xd8]
mov qword [rbp + 0xf0], rax
movups xmm0, xmmword [rbp + 0xc8]
movaps xmmword [rbp + 0xe0], xmm0
cmp qword [rbp + 0x80], 0
je 0x1400e9937
mov rcx, qword [0x1402443c8]
xor edx, edx
mov r8, qword [rbp - 8]
call qword [sym.imp.kernel32.dll_HeapFree]
mov rax, qword [rbp + 0xf0]
mov qword [rbp + 0x10], rax
movaps xmm0, xmmword [rbp + 0xe0]
movaps xmmword [rbp], xmm0
mov rsi, qword [rbp - 0x10]
mov rcx, rsi
call fcn.1400ed730
mov rax, qword [rbp + 0x10]
mov qword [rsi + 0x10], rax
movaps xmm0, xmmword [rbp]
movups xmmword [rsi], xmm0
mov rsi, qword [rbp + 0xa0]
cmp qword [rsi + 0x20], 0
movzx ebx, byte [rbp + 0x117]
mov rdi, qword [rbp + 0x98]
je 0x1400e9997
mov r8, qword [rsi + 0x18]
mov rcx, qword [0x1402443c8]
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapFree]
mov qword [rsi + 0x18], rdi
mov rax, qword [rbp + 0x108]
mov qword [rsi + 0x20], rax
mov qword [rsi + 0x28], rax
cmp qword [rsi + 0x38], 0
je 0x1400e99c4
mov r8, qword [rsi + 0x30]
mov rcx, qword [0x1402443c8]
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapFree]
mov rax, qword [rbp + 0xc0]
mov qword [rsi + 0x30], rax
mov rax, qword [rbp + 0x100]
mov qword [rsi + 0x38], rax
mov qword [rsi + 0x40], rax
mov byte [rsi + 0x88], bl
movaps xmm6, xmmword [rbp + 0x120]
add rsp, 0x1b8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov r14, qword [rbp + 8]
mov rcx, qword [rbp + 0x10]
mov rax, rcx
mov qword [rbp + 0x100], rcx
test rcx, rcx
je 0x1400e9a9d
js 0x1400e9ba2
movzx eax, byte [0x1402448a8]
mov rcx, qword [0x1402443c8]
test rcx, rcx
jne 0x1400e9a48
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400e9a5c
mov rcx, rax
mov qword [0x1402443c8], rax
xor edx, edx
mov r8, qword [rbp + 0x100]
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
jne 0x1400e9aa2
mov ecx, 1
mov rdx, qword [rbp + 0x100]
call fcn.140162bd0
jmp 0x1400e9ba7
mov r12d, 1
mov rcx, r12
mov rdx, rbx
mov r8, qword [rbp + 0x108]
call sub.VCRUNTIME140.dll_memcpy
cmp qword [rbp + 0xe8], 0
jne 0x1400e95a1
jmp 0x1400e95b3
mov eax, 1
mov qword [rbp + 0xc0], rax
mov rcx, rax
mov rdx, r14
mov r8, qword [rbp + 0x100]
call sub.VCRUNTIME140.dll_memcpy
cmp qword [rbp + 0xe8], 0
jne 0x1400e9341
jmp 0x1400e9353
movaps xmmword [rbp + 0xa0], xmm6
mov ecx, 1
mov rdx, r14
call fcn.140162bd0
jmp 0x1400e9ba7
movaps xmmword [rbp + 0xa0], xmm6
mov ecx, 1
mov rdx, r14
call fcn.140162bd0
jmp 0x1400e9ba7
movaps xmmword [rbp + 0xa0], xmm6
call fcn.14001f7e0
jmp 0x1400e9ba7
movaps xmmword [rbp + 0xa0], xmm6
call fcn.14001f7e0
jmp 0x1400e9ba7
mov ecx, 1
mov edx, 0xc
call fcn.140162bd0
jmp 0x1400e9ba7
mov ecx, 8
mov rdx, rdi
call fcn.140162bd0
jmp 0x1400e9ba7
mov ecx, 1
mov rdx, r15
call fcn.140162bd0
jmp 0x1400e9ba7
mov ecx, 4
mov edx, 0x50
call fcn.140162bd0
ud2
mov ecx, 1
mov edx, 0x30
call fcn.140162bd0
jmp 0x1400e9ba7
lea rax, [0x1401b3748]
mov rdx, r8
mov r8, rax
call fcn.1401644b0
jmp 0x1400e9ba7
call fcn.14001f7e0
jmp 0x1400e9ba7
lea rax, [0x1401b3730]
mov rdx, r8
mov r8, rax
call fcn.1401644b0
jmp 0x1400e9ba7
call fcn.14001f7e0
ud2