Function at 0x180014720
Capabilities:
Get system information on windows

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x128
mov rax, qword [0x1800cb028]
xor rax, rsp
mov qword [rsp + 0x120], rax
cmp byte [rcx + 0x1c], 0
je 0x180015035
mov rbx, r9
mov r13, r8
mov r14, rdx
mov qword [rsp + 0x50], rcx
mov esi, dword [rcx + 0x18]
test sil, 4
jne 0x180015045
mov rcx, r14
mov r15, rcx
movzx eax, byte [rcx]
cmp eax, 0x48
jne 0x180014f97
cmp byte [r15 + 1], 0xff
mov rcx, r15
je 0x180014f72
cmp r15, rcx
jne 0x18001476d
cmp r15, r14
jne 0x18001509c
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x108], rax
mov qword [rsp + 0x110], r14
mov dword [rsp + 0x118], 0
cmp byte [rax + 0x1c], 0
je 0x18001506a
mov esi, dword [rax + 0x18]
mov eax, dword [0x1800cd8d4]
mov ecx, dword [0x1800cb4e0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x180014e9b
mov r12d, dword [0x1800cd8d0]
mov al, 1
mov dword [rsp + 0x4c], eax
xor r15d, r15d
test sil, 1
je 0x1800150b2
mov eax, dword [0x1800cd8d4]
mov ecx, dword [0x1800cb4e0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x180014f24
shl esi, 0x1f
mov edi, dword [0x1800cd8d0]
mov eax, dword [0x1800cd8e0]
mov ecx, dword [0x1800cb4e0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jle 0x180014890
lea rcx, [0x1800cd8e0]
call fcn.180060ac0
cmp dword [0x1800cd8e0], 0xffffffff
jne 0x180014890
lea r14, [rsp + 0xb0]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov rax, qword [r14 + 0x10]
mov qword [0x1800cd8d8], rax
lea rcx, [0x1800cd8e0]
call fcn.180060b40
mov rcx, qword [0x1800cd8d8]
mov eax, esi
cmp rcx, rax
cmovb rax, rcx
cmp rax, r12
jb 0x1800150af
lea r15, [rdi - 1]
and r15, 0xfffffffffff00000
add r15, 0x100000
xor esi, esi
sub rax, r12
cmovb rax, rsi
neg rdi
and rdi, rax
sub rdi, r15
jbe 0x1800150b9
test r15, r15
je 0x18001501c
cmp rdi, 0xffffffffffffffff
je 0x18001501c
mov dword [rsp + 0x4c], 0
mov rsi, rdi
mov eax, dword [0x1800cd8e8]
mov ecx, dword [0x1800cb4e0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x180014e09
lea rcx, [0x1800cd8f0]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [rsp + 0x4c], 0
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x40], rsi
je 0x180014bf7
xor r14d, r14d
xor esi, esi
mov r13, qword [0x1800cd8c8]
test r13, r13
jne 0x18001496b
mov ecx, 0x18
call sym.mozglue.dll_moz_xmalloc
mov r13, rax
xorps xmm0, xmm0
movups xmmword [rax + 8], xmm0
mov qword [rax], 0x18
mov qword [0x1800cd8c8], rax
cmp byte [rsp + 0x4c], 0
je 0x180014c0e
cmp qword [r13 + 8], 0
jne 0x1800149e3
mov ecx, 0x20
call sym.mozglue.dll_moz_xmalloc
mov rbp, rax
xorps xmm0, xmm0
movups xmmword [rax + 8], xmm0
mov dword [rax + 0x18], 0
mov rax, qword [r13 + 8]
cmp rax, qword [r13 + 0x10]
jne 0x1800149ae
mov rcx, r13
call fcn.180015500
mov rax, qword [r13 + 8]
mov rcx, qword [r13]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], r14
mov qword [rcx + rax*8 + 8], rsi
mov qword [rcx + rax*8 + 0x10], rbp
inc qword [r13 + 8]
mov r13, qword [0x1800cd8c8]
test r13, r13
je 0x180015083
cmp qword [r13 + 8], 0
je 0x180015083
mov rsi, qword [r13]
add rsi, 0x10
mov r14, qword [rsp + 0x40]
mov r13, qword [rsi]
test r13, r13
je 0x1800150cf
test r12, r12
je 0x1800150cf
cmp qword [r13 + 8], 0
jne 0x180014f69
mov eax, dword [0x1800cd8d4]
mov ecx, dword [0x1800cb4e0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x180014ee0
mov edi, dword [0x1800cd8d0]
mov eax, r12d
xor edx, edx
div edi
sub edi, edx
test edx, edx
cmove edi, edx
add edi, r12d
lea rsi, [r13 + 0x10]
mov dword [r13 + 0x10], edi
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
cmp byte [rsp + 0x4c], 0
je 0x180014cff
mov edx, edi
xor ecx, ecx
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
je 0x1800150c1
mov qword [r13 + 8], rax
cmp dword [rsi], 0
je 0x1800150cf
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0xf8], r13
mov byte [rsp + 0x100], 1
lea rcx, [0x1800cd8f0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [0x1800cd8e8]
mov ecx, dword [0x1800cb4e0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x180014e52
lea r14, [0x1800cd8f0]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea r15, [rsp + 0xb0]
mov rcx, r13
mov rdx, r15
call fcn.1800156d0
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp byte [r15 + 0x38], 0
je 0x1800150f3
mov rax, qword [rsp + 0xb0]
lea r14, [rsp + 0x78]
mov qword [r14], rax
mov eax, dword [rsp + 0xb8]
mov dword [r14 + 8], eax
movups xmm0, xmmword [rsp + 0xc0]
movups xmmword [r14 + 0x10], xmm0
movups xmm0, xmmword [rsp + 0xd0]
movups xmmword [r14 + 0x20], xmm0
mov eax, dword [rsp + 0xe0]
mov dword [r14 + 0x30], eax
mov al, byte [rsp + 0xe4]
mov byte [r14 + 0x34], al
mov dword [rsp + 0xb8], 0
mov byte [rsp + 0xe4], 0
mov qword [rsp + 0x28], rbx
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea rdx, [rsp + 0x108]
lea r8, [rsp + 0xf0]
mov rcx, qword [rsp + 0x50]
mov r9, r14
call fcn.1800158f0
cmp qword [rbx], 0
setne sil
mov rcx, qword [r14 + 0x10]
test rcx, rcx
je 0x180014bd1
mov r8d, dword [rsp + 0x80]
test r8d, r8d
je 0x180014bd1
lea r9, [rsp + 0x80]
mov edx, dword [r9 + 0x28]
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
mov rcx, qword [rsp + 0x120]
xor rcx, rsp
call fcn.180062020
mov eax, esi
add rsp, 0x128
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test rsi, rsi
je 0x1800150fa
add rsi, r15
dec rsi
mov r14, r15
jmp 0x18001493d
mov qword [rsp + 0x58], rsi
mov rax, qword [r13]
mov rcx, qword [r13 + 8]
mov rsi, rax
test rcx, rcx
jle 0x180014c5a
mov r8, rcx
mov rsi, rax
mov rdx, rcx
mov r10, qword [rsp + 0x58]
shr rdx, 1
lea r9, [rdx + rdx*2]
lea r9, [rsi + r9*8]
cmp qword [r9], r14
jae 0x180015133
add r9, 0x18
not rdx
add rdx, r8
mov rsi, r9
mov r8, rdx
test rdx, rdx
jg 0x180014c31
mov qword [rsp + 0x60], rbx
lea rcx, [rcx + rcx*2]
lea rax, [rax + rcx*8]
cmp rsi, rax
jne 0x18001510d
mov ecx, 0x20
call sym.mozglue.dll_moz_xmalloc
mov rbp, rax
xorps xmm0, xmm0
movups xmmword [rax + 8], xmm0
mov dword [rax + 0x18], 0
mov rax, qword [r13]
mov rbx, qword [r13 + 8]
sub rsi, rax
sar rsi, 3
movabs rdi, 0xaaaaaaaaaaaaaaab
imul rdi, rsi
cmp rdi, rbx
jne 0x180015148
mov rcx, rdi
cmp rdi, qword [r13 + 0x10]
mov rsi, qword [rsp + 0x58]
jne 0x180014ccf
mov rcx, r13
call fcn.180015500
mov rax, qword [r13]
mov rcx, qword [r13 + 8]
lea rcx, [rcx + rcx*2]
mov qword [rax + rcx*8], r14
mov qword [rax + rcx*8 + 8], rsi
mov qword [rax + rcx*8 + 0x10], rbp
inc qword [r13 + 8]
mov rbx, qword [rsp + 0x60]
mov rax, qword [r13]
lea rcx, [rdi + rdi*2]
lea rsi, [rax + rcx*8]
add rsi, 0x10
jmp 0x1800149eb
test r14, r14
je 0x180015221
mov r12, rax
mov eax, dword [0x1800cd928]
mov ecx, dword [0x1800cb4e0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jle 0x180014d91
lea rcx, [0x1800cd928]
call fcn.180060ac0
cmp dword [0x1800cd928], 0xffffffff
jne 0x180014d91
lea rcx, str.kernelbase.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [0x1800cd918], rax
mov qword [0x1800cd920], 0
test rax, rax
je 0x180014d85
lea rdx, str.VirtualAlloc2
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x1800cd920], rax
test rax, rax
je 0x18001544d
lea rcx, [0x1800cd928]
call fcn.180060b40
mov rax, qword [0x1800cd920]
mov ebp, edi
test rax, rax
je 0x18001523a
lea rcx, [r15 + r14]
dec rcx
lea rdx, [rsp + 0xb0]
mov qword [rdx], r15
mov qword [rdx + 8], rcx
mov qword [rdx + 0x10], 0
lea rcx, [rsp + 0x78]
mov qword [rcx], 1
mov qword [rcx + 8], rdx
mov edx, 1
mov dword [rsp + 0x30], edx
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], edx
mov rcx, r12
xor edx, edx
mov r8, rbp
mov r9d, 0x2000
call qword [0x1800d2010]
mov qword [r13 + 8], rax
test rax, rax
jne 0x180014a88
jmp 0x1800150cf
lea rcx, [0x1800cd8e8]
call fcn.180060ac0
cmp dword [0x1800cd8e8], 0xffffffff
jne 0x180014916
lea rcx, [0x1800cd8f0]
mov edx, 0xfa0
mov r8d, 0x1000000
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSectionEx]
mov byte [0x1800cd8e4], 1
lea rcx, [0x1800cd8e8]
call fcn.180060b40
jmp 0x180014916
lea rcx, [0x1800cd8e8]
call fcn.180060ac0
cmp dword [0x1800cd8e8], 0xffffffff
jne 0x180014ae0
lea rcx, [0x1800cd8f0]
mov edx, 0xfa0
mov r8d, 0x1000000
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSectionEx]
mov byte [0x1800cd8e4], 1
lea rcx, [0x1800cd8e8]
call fcn.180060b40
jmp 0x180014ae0
lea rcx, [0x1800cd8d4]
call fcn.180060ac0
cmp dword [0x1800cd8d4], 0xffffffff
jne 0x1800147ea
lea r14, [rsp + 0xb0]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [r14 + 0x28]
mov dword [0x1800cd8d0], eax
lea rcx, [0x1800cd8d4]
call fcn.180060b40
jmp 0x1800147ea
lea rcx, [0x1800cd8d4]
call fcn.180060ac0
cmp dword [0x1800cd8d4], 0xffffffff
jne 0x180014a35
lea rbp, [rsp + 0xb0]
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [rbp + 0x28]
mov dword [0x1800cd8d0], eax
lea rcx, [0x1800cd8d4]
call fcn.180060b40
jmp 0x180014a35
lea rcx, [0x1800cd8d4]
call fcn.180060ac0
cmp dword [0x1800cd8d4], 0xffffffff
jne 0x180014829
lea r14, [rsp + 0xb0]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [r14 + 0x28]
mov dword [0x1800cd8d0], eax
lea rcx, [0x1800cd8d4]
call fcn.180060b40
jmp 0x180014829
lea rsi, [r13 + 0x10]
jmp 0x180014a88
mov eax, 3
cmp byte [r15 + 2], 0x25
mov rcx, r15
jne 0x18001478a
lea rcx, [r15 + rax]
movsxd rax, dword [r15 + rax]
mov rcx, qword [rax + rcx + 4]
jmp 0x18001478a
cmp eax, 0xe9
je 0x18001546a
cmp eax, 0xff
je 0x18001547b
mov rcx, r15
cmp eax, 0xeb
jne 0x18001478a
mov rdi, r13
mov rsi, rbx
movsx rax, byte [r15 + 1]
lea r12, [r15 + rax]
add r12, 2
mov eax, r12d
sub eax, r15d
shl eax, 0x18
add eax, 0xfe000000
mov edx, eax
sar edx, 0x18
test eax, eax
js 0x18001548a
mov rcx, r15
mov rbx, rsi
mov r13, rdi
je 0x18001478a
xor eax, eax
mov cl, 1
add eax, 2
cmp byte [r15 + rax], 0x90
jne 0x1800154ed
movsx eax, cl
lea ecx, [rax + 1]
cmp edx, eax
jg 0x180014ffc
mov rcx, r12
jmp 0x1800154f0
lea rax, str.MOZ_RELEASE_ASSERT___elements__extentSize__0____elements__extentSize___dynamic_extent__
mov qword [sym.mozglue.dll_gMozCrashReason], rax
int3
lea rax, str.MOZ_RELEASE_ASSERT_isSome___
mov qword [sym.mozglue.dll_gMozCrashReason], rax
jmp 0x180015078
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x108], rax
mov qword [rsp + 0x110], r14
mov dword [rsp + 0x118], 0
jmp 0x1800147c5
lea rax, str.MOZ_RELEASE_ASSERT_isSome___
mov qword [sym.mozglue.dll_gMozCrashReason], rax
int3
lea rax, str.MOZ_RELEASE_ASSERT_mPolicies___mPolicies__empty___
mov qword [sym.mozglue.dll_gMozCrashReason], rax
int3
mov rcx, r15
call fcn.1800a2200
test al, al
cmovne r14, r15
jmp 0x180014798
xor r15d, r15d
xor esi, esi
jmp 0x1800148f1
xor r15d, r15d
jmp 0x1800148f1
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov qword [r13 + 8], 0
xorps xmm0, xmm0
movaps xmmword [rsp + 0xf0], xmm0
mov qword [rsp + 0x100], 0
lea rcx, [0x1800cd8f0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor esi, esi
jmp 0x180014bd1
lea rax, str.MOZ_RELEASE_ASSERT_idx___storage_.size___
mov qword [sym.mozglue.dll_gMozCrashReason], rax
jmp 0x18001522f
cmp qword [rsi], r14
ja 0x180014c70
mov rax, qword [rsp + 0x58]
cmp qword [rsi + 8], rax
jb 0x180014c70
add rsi, 0x10
mov rbx, qword [rsp + 0x60]
jmp 0x1800149eb
jne 0x180014c52
cmp qword [r9 + 8], r10
jb 0x180014c45
jmp 0x180014c52
lea rsi, [rbx + rbx*2]
movups xmm0, xmmword [rax + rsi*8 - 0x18]
movaps xmmword [rsp + 0xb0], xmm0
mov rcx, qword [rax + rsi*8 - 8]
mov qword [rsp + 0x68], rcx
mov qword [rax + rsi*8 - 8], 0
mov rax, qword [r13 + 8]
cmp rax, qword [r13 + 0x10]
jne 0x180015182
mov rcx, r13
call fcn.180015500
mov rax, qword [r13 + 8]
mov rcx, qword [r13]
lea rax, [rax + rax*2]
movaps xmm0, xmmword [rsp + 0xb0]
movups xmmword [rcx + rax*8], xmm0
mov rdx, qword [rsp + 0x68]
mov qword [rcx + rax*8 + 0x10], rdx
inc qword [r13 + 8]
dec rbx
cmp rbx, rdi
jbe 0x1800151ee
lea rsi, [rsi*8 - 8]
mov rax, qword [r13]
movups xmm0, xmmword [rax + rsi - 0x28]
movups xmmword [rax + rsi - 0x10], xmm0
mov rdx, qword [rax + rsi - 0x18]
mov qword [rax + rsi - 0x18], 0
mov rcx, qword [rax + rsi]
mov qword [rax + rsi], rdx
test rcx, rcx
je 0x1800151e2
call sym.mozglue.dll__aligned_free
dec rbx
add rsi, 0xffffffffffffffe8
cmp rbx, rdi
ja 0x1800151b4
mov rax, qword [r13]
lea rdx, [rdi + rdi*2]
mov qword [rax + rdx*8], r14
mov rcx, qword [rsp + 0x58]
mov qword [rax + rdx*8 + 8], rcx
mov rcx, qword [rax + rdx*8 + 0x10]
mov qword [rax + rdx*8 + 0x10], rbp
test rcx, rcx
je 0x180014ce5
call sym.mozglue.dll__aligned_free
jmp 0x180014ce5
lea rax, str.MOZ_RELEASE_ASSERT_idx___storage_.size___
mov qword [sym.mozglue.dll_gMozCrashReason], rax
int3
mov rdi, rbx
add r14, r15
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov qword [rsp + 0x40], r14
mov r9, r14
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
mov rcx, r12
mov rdx, rbp
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.1800a2e80
test rax, rax
je 0x1800150c7
mov rcx, rax
mov rdx, rbp
mov r8d, 0x2000
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
mov rbx, rdi
jne 0x180014a84
xor ecx, ecx
mov rdx, rbp
jmp 0x180014a69
mov rcx, qword [0x1800cd918]
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov qword [0x1800cd918], 0
jmp 0x180014d85
movsxd rax, dword [r15 + 1]
lea rcx, [r15 + rax]
add rcx, 5
jmp 0x18001478a
mov eax, 2
cmp byte [r15 + 1], 0x25
jmp 0x180014f7c
add dl, 2
mov rcx, r15
call fcn.1800a3080
mov rcx, r15
test al, al
mov rbx, rsi
mov r13, rdi
je 0x18001478a
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x108], rax
mov qword [rsp + 0x110], r12
mov dword [rsp + 0x118], 0
lea r8, [rsp + 0xb0]
mov rcx, r12
xor edx, edx
call fcn.180021610
mov rcx, r15
test al, al
je 0x18001478a
mov rax, qword [rsp + 0x50]
jmp 0x1800147b8
mov rcx, r15
mov rbx, rsi
mov r13, rdi
jmp 0x18001478a