Function at 0x412a90
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 0x412b77
mov r8, qword [rcx + 0x10]
lea r14, [rsp + 0x60]
mov esi, 1
xor ebx, ebx
mov r15d, 0x3f
jmp 0x412b5d
cmp rdx, rbx
jbe 0x412f70
mov qword [rsp + 0x58], rax
mov rax, qword [rdi + 8]
mov r9, qword [rdi + 0x10]
shr rax, 3
cmp r9, rax
ja 0x412f90
je 0x412b90
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 0x412b77
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 0x412ad1
cmp rdx, rsi
ja 0x412b55
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 0x412bd1
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 0x413009
mov ecx, r8d
shl rax, cl
cmp r12, rax
jbe 0x413029
mov r12, rdx
cmp r9, r12
ja 0x412fe7
mov rax, qword [0x006bca98]
test rax, rax
je 0x412fad
lea rdx, [rax - 1]
lea r13, [r12*8]
test rdx, rax
jne 0x413004
add r13, rdx
neg rax
lea rdx, str.InternalMmapVector
and r13, rax
mov rcx, r13
call fcn.0040d510
mov rcx, qword [rdi]
mov r12, rax
mov rax, qword [rdi + 0x10]
lea rdx, [rax*8]
test rdx, rdx
je 0x412f50
lea rax, [r12 + 0x10]
cmp rcx, rax
lea rax, [rcx + 0x10]
setae r8b
cmp r12, rax
setae al
or r8b, al
je 0x412fc6
cmp rdx, 0x16
jbe 0x412fc6
mov r8, rcx
neg r8
and r8d, 0xf
cmp r8, rdx
cmova r8, rdx
xor eax, eax
test r8, r8
je 0x412d8d
movzx eax, byte [rcx]
cmp r8, 1
mov byte [r12], al
je 0x413053
movzx eax, byte [rcx + 1]
cmp r8, 2
mov byte [r12 + 1], al
je 0x413049
movzx eax, byte [rcx + 2]
cmp r8, 3
mov byte [r12 + 2], al
je 0x4130cb
movzx eax, byte [rcx + 3]
cmp r8, 4
mov byte [r12 + 3], al
je 0x4130c1
movzx eax, byte [rcx + 4]
cmp r8, 5
mov byte [r12 + 4], al
je 0x4130b7
movzx eax, byte [rcx + 5]
cmp r8, 6
mov byte [r12 + 5], al
je 0x4130ad
movzx eax, byte [rcx + 6]
cmp r8, 7
mov byte [r12 + 6], al
je 0x4130a3
movzx eax, byte [rcx + 7]
cmp r8, 8
mov byte [r12 + 7], al
je 0x413099
movzx eax, byte [rcx + 8]
cmp r8, 9
mov byte [r12 + 8], al
je 0x41308f
movzx eax, byte [rcx + 9]
cmp r8, 0xa
mov byte [r12 + 9], al
je 0x413085
movzx eax, byte [rcx + 0xa]
cmp r8, 0xb
mov byte [r12 + 0xa], al
je 0x41307b
movzx eax, byte [rcx + 0xb]
cmp r8, 0xc
mov byte [r12 + 0xb], al
je 0x413071
movzx eax, byte [rcx + 0xc]
cmp r8, 0xd
mov byte [r12 + 0xc], al
je 0x413067
movzx eax, byte [rcx + 0xd]
cmp r8, 0xe
mov byte [r12 + 0xd], al
je 0x41305d
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 0x412e0d
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 0x412dd5
mov r10, qword [rsp + 0x30]
mov rax, qword [rsp + 0x48]
add rax, r10
cmp r10, r11
je 0x412f4d
movzx r8d, byte [rcx + rax]
mov byte [r12 + rax], r8b
lea r8, [rax + 1]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 1]
mov byte [r12 + rax + 1], r8b
lea r8, [rax + 2]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 2]
mov byte [r12 + rax + 2], r8b
lea r8, [rax + 3]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 3]
mov byte [r12 + rax + 3], r8b
lea r8, [rax + 4]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 4]
mov byte [r12 + rax + 4], r8b
lea r8, [rax + 5]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 5]
mov byte [r12 + rax + 5], r8b
lea r8, [rax + 6]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 6]
mov byte [r12 + rax + 6], r8b
lea r8, [rax + 7]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 7]
mov byte [r12 + rax + 7], r8b
lea r8, [rax + 8]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 8]
mov byte [r12 + rax + 8], r8b
lea r8, [rax + 9]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 9]
mov byte [r12 + rax + 9], r8b
lea r8, [rax + 0xa]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 0xa]
mov byte [r12 + rax + 0xa], r8b
lea r8, [rax + 0xb]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 0xb]
mov byte [r12 + rax + 0xb], r8b
lea r8, [rax + 0xc]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 0xc]
mov byte [r12 + rax + 0xc], r8b
lea r8, [rax + 0xd]
cmp rdx, r8
jbe 0x412f4d
movzx r8d, byte [rcx + rax + 0xd]
mov byte [r12 + rax + 0xd], r8b
lea r8, [rax + 0xe]
cmp rdx, r8
jbe 0x412f4d
movzx edx, byte [rcx + rax + 0xe]
mov byte [r12 + rax + 0xe], dl
mov rcx, qword [rdi]
mov rdx, qword [rdi + 8]
call fcn.0040e770
mov qword [rdi], r12
mov r9, qword [rdi + 0x10]
mov qword [rdi + 8], r13
jmp 0x412afd
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.00406910
mov qword [rsp + 0x20], rax
lea r8, str.__size________capacity____
mov edx, 0x1e7
lea rcx, str....._sanitizer_common_sanitizer_common.h
call fcn.00406910
mov rcx, r14
call qword [sym.imp.kernel32.dll_GetSystemInfo]
mov eax, dword [rsp + 0x64]
mov qword [0x006bca98], rax
jmp 0x412bea
xor eax, eax
nop dword [rax + rax]
movzx r8d, byte [rcx + rax]
mov byte [r12 + rax], r8b
add rax, 1
cmp rax, rdx
jne 0x412fd0
jmp 0x412f4d
mov qword [rsp + 0x20], r12
lea r8, str.__size________new_capacity__
mov edx, 0x226
lea rcx, str....._sanitizer_common_sanitizer_common.h
call fcn.00406910
call fcn.0040b440
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.00406910
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.00406910
mov eax, 2
jmp 0x412d8d
mov eax, 1
jmp 0x412d8d
mov eax, 0xe
jmp 0x412d8d
mov eax, 0xd
jmp 0x412d8d
mov eax, 0xc
jmp 0x412d8d
mov eax, 0xb
jmp 0x412d8d
mov eax, 0xa
jmp 0x412d8d
mov eax, 9
jmp 0x412d8d
mov eax, 8
jmp 0x412d8d
mov eax, 7
jmp 0x412d8d
mov eax, 6
jmp 0x412d8d
mov eax, 5
jmp 0x412d8d
mov eax, 4
jmp 0x412d8d
mov eax, 3
jmp 0x412d8d