Function at 0x412b10
Capabilities:
Get system information on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
mov rdi, rdx
mov rdx, qword [rcx + 0x20]
mov rbp, rcx
test rdx, rdx
je 0x412bf7
mov r8, qword [rcx + 0x10]
lea r14, [rsp + 0x60]
mov esi, 1
xor ebx, ebx
mov r15d, 0x3f
jmp 0x412bdd
cmp rdx, rbx
jbe 0x412ff0
mov qword [rsp + 0x58], rax
mov rax, qword [rdi + 8]
mov r9, qword [rdi + 0x10]
shr rax, 3
cmp r9, rax
ja 0x413010
je 0x412c10
mov r12, qword [rdi]
movzx edx, byte [rsp + 0x58]
lea rax, [r9 + 1]
mov qword [rdi + 0x10], rax
lea rax, [r12 + r9*8]
mov byte [rax], dl
movzx edx, byte [rsp + 0x59]
mov byte [rax + 1], dl
movzx edx, byte [rsp + 0x5a]
mov byte [rax + 2], dl
movzx edx, byte [rsp + 0x5b]
mov byte [rax + 3], dl
movzx edx, byte [rsp + 0x5c]
mov byte [rax + 4], dl
movzx edx, byte [rsp + 0x5d]
mov byte [rax + 5], dl
movzx edx, byte [rsp + 0x5e]
mov byte [rax + 6], dl
movzx edx, byte [rsp + 0x5f]
mov byte [rax + 7], dl
mov rdx, qword [rbp + 0x20]
cmp rdx, rsi
jbe 0x412bf7
mov r8, qword [rbp + 0x10]
add rsi, 1
add rbx, 1
mov rax, rbx
shl rax, 5
add rax, r8
mov ecx, dword [rax + 0x10]
test ecx, ecx
jne 0x412b51
cmp rdx, rsi
ja 0x412bd5
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r12, [r9 + 1]
test r9, r12
je 0x412c51
bsr rax, r12
mov r8d, r15d
xor rax, 0x3f
sub r8d, eax
mov eax, 1
lea ecx, [r8 + 1]
mov rdx, rax
shl rdx, cl
cmp r12, rdx
jae 0x413089
mov ecx, r8d
shl rax, cl
cmp r12, rax
jbe 0x4130a9
mov r12, rdx
cmp r9, r12
ja 0x413067
mov rax, qword [0x006891d8]
test rax, rax
je 0x41302d
lea rdx, [rax - 1]
lea r13, [r12*8]
test rdx, rax
jne 0x413084
add r13, rdx
neg rax
lea rdx, str.InternalMmapVector
and r13, rax
mov rcx, r13
call fcn.0040d590
mov rcx, qword [rdi]
mov r12, rax
mov rax, qword [rdi + 0x10]
lea rdx, [rax*8]
test rdx, rdx
je 0x412fd0
lea rax, [r12 + 0x10]
cmp rcx, rax
lea rax, [rcx + 0x10]
setae r8b
cmp r12, rax
setae al
or r8b, al
je 0x413046
cmp rdx, 0x16
jbe 0x413046
mov r8, rcx
neg r8
and r8d, 0xf
cmp r8, rdx
cmova r8, rdx
xor eax, eax
test r8, r8
je 0x412e0d
movzx eax, byte [rcx]
cmp r8, 1
mov byte [r12], al
je 0x4130d3
movzx eax, byte [rcx + 1]
cmp r8, 2
mov byte [r12 + 1], al
je 0x4130c9
movzx eax, byte [rcx + 2]
cmp r8, 3
mov byte [r12 + 2], al
je 0x41314b
movzx eax, byte [rcx + 3]
cmp r8, 4
mov byte [r12 + 3], al
je 0x413141
movzx eax, byte [rcx + 4]
cmp r8, 5
mov byte [r12 + 4], al
je 0x413137
movzx eax, byte [rcx + 5]
cmp r8, 6
mov byte [r12 + 5], al
je 0x41312d
movzx eax, byte [rcx + 6]
cmp r8, 7
mov byte [r12 + 6], al
je 0x413123
movzx eax, byte [rcx + 7]
cmp r8, 8
mov byte [r12 + 7], al
je 0x413119
movzx eax, byte [rcx + 8]
cmp r8, 9
mov byte [r12 + 8], al
je 0x41310f
movzx eax, byte [rcx + 9]
cmp r8, 0xa
mov byte [r12 + 9], al
je 0x413105
movzx eax, byte [rcx + 0xa]
cmp r8, 0xb
mov byte [r12 + 0xa], al
je 0x4130fb
movzx eax, byte [rcx + 0xb]
cmp r8, 0xc
mov byte [r12 + 0xb], al
je 0x4130f1
movzx eax, byte [rcx + 0xc]
cmp r8, 0xd
mov byte [r12 + 0xc], al
je 0x4130e7
movzx eax, byte [rcx + 0xd]
cmp r8, 0xe
mov byte [r12 + 0xd], al
je 0x4130dd
movzx eax, byte [rcx + 0xe]
mov byte [r12 + 0xe], al
mov eax, 0xf
mov r11, rdx
sub r11, r8
lea r9, [r11 - 0x10]
shr r9, 4
add r9, 1
mov r10, r9
shl r10, 4
mov qword [rsp + 0x30], r10
lea r10, [rdx - 1]
sub r10, r8
cmp r10, 0xe
jbe 0x412e8d
lea r10, [rcx + r8]
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x38], r10
lea r10, [r12 + r8]
xor r8d, r8d
mov qword [rsp + 0x40], r10
xor r10d, r10d
mov rax, qword [rsp + 0x38]
add r10, 1
movdqa xmm0, xmmword [rax + r8]
mov rax, qword [rsp + 0x40]
movups xmmword [rax + r8], xmm0
add r8, 0x10
cmp r10, r9
jb 0x412e55
mov r10, qword [rsp + 0x30]
mov rax, qword [rsp + 0x48]
add rax, r10
cmp r10, r11
je 0x412fcd
movzx r8d, byte [rcx + rax]
mov byte [r12 + rax], r8b
lea r8, [rax + 1]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 1]
mov byte [r12 + rax + 1], r8b
lea r8, [rax + 2]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 2]
mov byte [r12 + rax + 2], r8b
lea r8, [rax + 3]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 3]
mov byte [r12 + rax + 3], r8b
lea r8, [rax + 4]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 4]
mov byte [r12 + rax + 4], r8b
lea r8, [rax + 5]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 5]
mov byte [r12 + rax + 5], r8b
lea r8, [rax + 6]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 6]
mov byte [r12 + rax + 6], r8b
lea r8, [rax + 7]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 7]
mov byte [r12 + rax + 7], r8b
lea r8, [rax + 8]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 8]
mov byte [r12 + rax + 8], r8b
lea r8, [rax + 9]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 9]
mov byte [r12 + rax + 9], r8b
lea r8, [rax + 0xa]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 0xa]
mov byte [r12 + rax + 0xa], r8b
lea r8, [rax + 0xb]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 0xb]
mov byte [r12 + rax + 0xb], r8b
lea r8, [rax + 0xc]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 0xc]
mov byte [r12 + rax + 0xc], r8b
lea r8, [rax + 0xd]
cmp rdx, r8
jbe 0x412fcd
movzx r8d, byte [rcx + rax + 0xd]
mov byte [r12 + rax + 0xd], r8b
lea r8, [rax + 0xe]
cmp rdx, r8
jbe 0x412fcd
movzx edx, byte [rcx + rax + 0xe]
mov byte [r12 + rax + 0xe], dl
mov rcx, qword [rdi]
mov rdx, qword [rdi + 8]
call fcn.0040e7f0
mov qword [rdi], r12
mov r9, qword [rdi + 0x10]
mov qword [rdi + 8], r13
jmp 0x412b7d
mov qword [rsp + 0x20], rdx
mov r9, rbx
mov edx, 0x1df
lea r8, str.__i_______size___
lea rcx, str....._sanitizer_common_sanitizer_common.h
call fcn.00406990
mov qword [rsp + 0x20], rax
lea r8, str.__size________capacity____
mov edx, 0x1e7
lea rcx, str....._sanitizer_common_sanitizer_common.h
call fcn.00406990
mov rcx, r14
call qword [sym.imp.kernel32.dll_GetSystemInfo]
mov eax, dword [rsp + 0x64]
mov qword [0x006891d8], rax
jmp 0x412c6a
xor eax, eax
nop dword [rax + rax]
movzx r8d, byte [rcx + rax]
mov byte [r12 + rax], r8b
add rax, 1
cmp rax, rdx
jne 0x413050
jmp 0x412fcd
mov qword [rsp + 0x20], r12
lea r8, str.__size________new_capacity__
mov edx, 0x226
lea rcx, str....._sanitizer_common_sanitizer_common.h
call fcn.00406990
call fcn.0040b4c0
mov qword [rsp + 0x20], rdx
mov r9, r12
mov edx, 0x1a4
lea r8, str.__size________1ULL_____up__1____
lea rcx, str....._sanitizer_common_sanitizer_common.h
call fcn.00406990
mov qword [rsp + 0x20], rax
mov r9, r12
mov edx, 0x1a5
lea r8, str.__size________1ULL____up___
lea rcx, str....._sanitizer_common_sanitizer_common.h
call fcn.00406990
mov eax, 2
jmp 0x412e0d
mov eax, 1
jmp 0x412e0d
mov eax, 0xe
jmp 0x412e0d
mov eax, 0xd
jmp 0x412e0d
mov eax, 0xc
jmp 0x412e0d
mov eax, 0xb
jmp 0x412e0d
mov eax, 0xa
jmp 0x412e0d
mov eax, 9
jmp 0x412e0d
mov eax, 8
jmp 0x412e0d
mov eax, 7
jmp 0x412e0d
mov eax, 6
jmp 0x412e0d
mov eax, 5
jmp 0x412e0d
mov eax, 4
jmp 0x412e0d
mov eax, 3
jmp 0x412e0d