Function at 0x140009f10
Capabilities:
Get system information on windows
Query environment variable

Disassembly:
push rbp
mov rbp, rsp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0xf8
lea r13, str.kernel32.dll
mov r12, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, r13
call r12
mov rcx, rax
test rax, rax
je 0x140009f6b
lea rdx, str.InitializeCriticalSectionAndSpinCount
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x140009f6b
mov edx, 0xfa0
lea rcx, [0x14002a280]
call rax
mov rbx, qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x140009f7b
mov rbx, qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rcx, [0x14002a280]
call rbx
lea r15, [0x14002a080]
lea rcx, [0x140055640]
call rbx
mov rcx, r15
mov r14, qword [sym.imp.KERNEL32.dll_GetSystemInfo]
call r14
mov eax, dword [0x14002a084]
lea rcx, str.GC_PRINT_VERBOSE_STATS
mov dword [0x14002a064], 1
mov qword [0x140055610], rax
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000ab36
mov dword [0x14002af0c], 2
lea rcx, str.GC_DUMP_REGULARLY
call sub.msvcrt.dll_getenv
test rax, rax
je 0x140009fe9
mov dword [0x140055634], 1
lea rcx, str.GC_FIND_LEAK
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a004
mov dword [0x14002aaec], 1
lea rcx, str.GC_FINDLEAK_DELAY_FREE
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a01f
mov dword [0x1400554e4], 1
lea rcx, str.GC_ALL_INTERIOR_POINTERS
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a03a
mov dword [0x14002af10], 1
lea rcx, str.GC_DONT_GC
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a055
mov dword [0x14002aaf0], 1
lea rcx, str.GC_PRINT_BACK_HEIGHT
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a070
mov dword [0x140055630], 1
lea rcx, str.GC_NO_BLACKLIST_WARNING
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a08b
mov dword [0x1400236c0], 0x7fffffff
lea rcx, str.GC_TRACE
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a0ab
xor edx, edx
lea rcx, str.GC_Warning:_Tracing_not_enabled:_Ignoring_GC_TRACE_value_n
call qword [sym.GC_default_warn_proc]
lea rcx, str.GC_PAUSE_TIME_TARGET
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a0ce
mov rcx, rax
call sub.msvcrt.dll_atol
test eax, eax
jle 0x14000a0ce
mov dword [0x1400236e8], eax
lea rcx, str.GC_FULL_FREQUENCY
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a0f1
mov rcx, rax
call sub.msvcrt.dll_atoi
test eax, eax
jle 0x14000a0f1
mov dword [0x1400236d8], eax
lea rcx, str.GC_LARGE_ALLOC_WARN_INTERVAL
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a118
mov rcx, rax
call sub.msvcrt.dll_atol
test eax, eax
jle 0x14000a3c5
mov dword [0x1400236c0], eax
lea rcx, str.GC_FREE_SPACE_DIVISOR
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a13e
mov rcx, rax
call sub.msvcrt.dll_atoi
test eax, eax
jle 0x14000a13e
cdqe
mov qword [0x1400236e0], rax
mov rax, qword [sym.imp.KERNEL32.dll_GetTickCount]
mov qword [rbp - 0xe8], rax
call rax
mov dword [0x14002a060], eax
mov eax, dword [0x14002af10]
test eax, eax
je 0x14000a169
mov qword [0x140023730], 0xfffffffffffffff8
lea rdi, [0x140055320]
lea rbx, [rdi - 0x2a3e0]
mov rdx, rdi
mov rcx, rbx
call sym.GC_exclude_static_roots_inner
lea rdx, [0x140023900]
lea rcx, [rdx - 0x200]
call sym.GC_exclude_static_roots_inner
cmp qword [0x1400596b0], 0
je 0x14000ab5a
call sym.GC_scratch_alloc.constprop.1
mov qword [0x14002b020], rax
mov rcx, rax
test rax, rax
je 0x14000ad6c
mov r8d, 0x2020
xor edx, edx
call sym.memset
lea rax, [0x140051320]
movq xmm0, qword [0x14002b020]
punpcklqdq xmm0, xmm0
nop dword [rax + rax]
movaps xmmword [rax], xmm0
add rax, 0x10
cmp rdi, rax
jne 0x14000a1e0
mov eax, dword [0x14002aaf4]
test eax, eax
je 0x14000a43d
mov edi, dword [0x140055348]
test edi, edi
je 0x14000a460
xor edi, edi
cmp qword [0x140059680], 0
setne dil
mov dword [0x14002aaf4], edi
mov eax, dword [0x14002af10]
test eax, eax
je 0x14000a3d9
call sym.GC_scratch_alloc.constprop.0
mov qword [0x14002af28], rax
call sym.GC_scratch_alloc.constprop.0
mov rcx, qword [0x14002af28]
mov qword [0x14002af18], rax
mov rdi, rax
test rcx, rcx
sete dl
test rax, rax
sete al
or dl, al
mov r12d, edx
jne 0x14000ad89
mov r8d, 0x8000
xor edx, edx
call sym.memset
mov r8d, 0x8000
xor edx, edx
mov rcx, rdi
call sym.memset
mov ecx, 0x1000
call sym.alloc_mark_stack
lea rcx, str.GC_INITIAL_HEAP_SIZE
call sub.msvcrt.dll_getenv
mov rdi, rax
test rax, rax
je 0x14000a33c
cmp byte [rax], 0
je 0x14000a32c
lea rdx, [rbp - 0xc0]
mov r8d, 0xa
mov rcx, rax
call dbg.strtoumax
mov rdx, qword [rbp - 0xc0]
mov r13, rax
movzx eax, byte [rdx]
test al, al
je 0x14000aa00
cmp byte [rdx + 1], 0
jne 0x14000a32c
sub eax, 0x47
cmp al, 0x26
ja 0x14000a32c
mov ecx, eax
mov edx, 1
shl rdx, cl
mov rax, rdx
movabs rdx, 0x100000001
test rax, rdx
jne 0x14000acfd
movabs rdx, 0x4000000040
test rax, rdx
jne 0x14000acf4
movabs rdx, 0x1000000010
shl r13, 0xa
test rax, rdx
jne 0x14000aa0a
mov rdx, rdi
lea rcx, str.GC_Warning:_Bad_initial_heap_size__s___ignoring_n
call qword [sym.GC_default_warn_proc]
lea rcx, str.GC_MAXIMUM_HEAP_SIZE
mov r13d, 0x10000
call sub.msvcrt.dll_getenv
mov rdi, rax
test rax, rax
je 0x14000a536
cmp byte [rdi], 0
je 0x14000a9d8
lea rdx, [rbp - 0xc0]
mov rcx, rdi
mov r8d, 0xa
call dbg.strtoumax
mov rcx, qword [rbp - 0xc0]
movzx edx, byte [rcx]
test dl, dl
jne 0x14000a982
cmp rax, 0xffffffffffffffff
sete r12b
cmp rax, r13
jb 0x14000a9d8
test r12b, r12b
jne 0x14000a9d8
cmp qword [0x14002a058], 0
jne 0x14000a3b9
mov qword [0x14002a058], 2
mov qword [0x14002a2b0], rax
jmp 0x14000a9e8
xor edx, edx
lea rcx, str.GC_Warning:_GC_LARGE_ALLOC_WARN_INTERVAL_environment_variable_has_bad_value___ignoring_n
call qword [sym.GC_default_warn_proc]
jmp 0x14000a118
cmp qword [0x14002af20], 0
jne 0x14000a22a
call sym.GC_scratch_alloc.constprop.0
mov qword [0x14002af30], rax
call sym.GC_scratch_alloc.constprop.0
mov rcx, qword [0x14002af30]
mov qword [0x14002af20], rax
mov rdi, rax
test rax, rax
je 0x14000ad89
test rcx, rcx
je 0x14000ad89
xor edx, edx
mov r8d, 0x8000
call sym.memset
mov r8d, 0x8000
xor edx, edx
mov rcx, rdi
call sym.memset
jmp 0x14000a22a
lea rcx, str.GC_ENABLE_INCREMENTAL
call sub.msvcrt.dll_getenv
test rax, rax
je 0x14000a21c
mov edi, dword [0x140055348]
test edi, edi
jne 0x14000a208
mov rcx, r13
call r12
mov rcx, rax
test rax, rax
je 0x14000a519
lea rdx, str.GetWriteWatch
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140059680], rax
test rax, rax
je 0x14000a527
mov rdx, qword [0x140055610]
mov r9d, 4
mov r8d, 0x202000
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov r12, rax
test rax, rax
je 0x14000ad2d
lea rax, [rbp - 0xd4]
mov rdx, r12
mov qword [rbp - 0xc8], 0x10
mov r8, qword [0x140055610]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0xc8]
mov ecx, 1
lea r9, [rbp - 0xc0]
mov qword [rsp + 0x20], rax
call qword [0x140059680]
test eax, eax
je 0x14000ad1e
mov qword [0x140059680], 0
mov r8d, 0x8000
xor edx, edx
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_VirtualFree]
xor edi, edi
cmp qword [0x140059680], 0
setne dil
mov dword [0x140055348], 1
jmp 0x14000a216
mov ecx, 0x10
mov r13d, 0x10000
call sym.GC_expand_hp_inner.lto_priv.0
test eax, eax
je 0x14000ad92
add qword [0x14002af48], r13
movsxd r9, dword [0x14002af10]
test r9d, r9d
jne 0x14000a8b9
cmp byte [0x140030318], 0
jne 0x14000a57c
mov byte [0x140030318], 1
mov byte [0x14002b2e8], 1
mov qword [0x14002bf08], 1
xor edx, edx
mov r8d, 0x180
mov eax, 1
lea r11, [0x14002bf08]
mov r10, 0xfffffffffffffff0
sub r8, r9
jmp 0x14000a5c9
lea rdx, [rdx + rax + 0xf]
shr rdx, 4
mov qword [r11 + rax*8], rdx
add rax, 1
cmp r8, rax
jb 0x14000a5f0
mov rdx, r9
mov rcx, r10
sub rcx, rdx
cmp rax, rcx
jb 0x14000a5b0
movabs rsi, 0xfffffffffffffff
mov qword [r11 + rax*8], rsi
add rax, 1
cmp r8, rax
jae 0x14000a5c6
nop dword [rax + rax]
mov dword [0x14002a274], 1
lea r15, [0x14002a0c0]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r14, qword [0x1400596b0]
mov edi, eax
mov dword [0x140055390], eax
mov r12d, eax
shr edi, 8
xor edi, eax
cmp qword [0x14002a0c8], 0
movzx edi, dil
je 0x14000abfa
mov edx, 1
mov ecx, 0x28
mov dword [0x140055608], 1
call sym.GC_generic_malloc_inner_small.lto_priv.0
mov edx, 1
mov ecx, 0x1a8
mov qword [0x14002a050], rax
mov r13, rax
call sym.GC_generic_malloc_inner_small.lto_priv.0
mov qword [0x14002a050], 0
mov dword [0x140055608], 0
mov rsi, rax
test r13, r13
je 0x14000a8a2
test rax, rax
je 0x14000a8a2
lea rax, [0x14002a2e0]
movq xmm1, r13
movq xmm0, qword [rax + rdi*8]
punpcklqdq xmm0, xmm1
movups xmmword [rsi], xmm0
mov qword [rax + rdi*8], rsi
cmp rsi, r15
je 0x14000a6bd
mov r15d, dword [0x140059688]
test r15d, r15d
jne 0x14000a956
mov r15, qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call r15
mov r13, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov rdi, rax
call r15
lea r9, [rsi + 0x18]
mov r8, r13
mov rdx, rdi
mov dword [rsp + 0x30], 2
mov rcx, rax
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
je 0x14000a8f5
mov rax, qword [rsi + 8]
mov qword [rax + 0x10], 0xffffffffffffffff
mov qword [rax], r14
test r14, r14
je 0x14000a93f
mov r14d, dword [0x140055634]
mov dword [rsi + 0x10], r12d
test r14d, r14d
jne 0x14000abf0
mov r13d, dword [0x14002aaf0]
test r13d, r13d
jne 0x14000a880
mov r12d, dword [0x14002aaf4]
test r12d, r12d
je 0x14000a77f
mov edi, dword [0x14002b038]
test edi, edi
je 0x14000a77f
mov esi, dword [0x14002af0c]
test esi, esi
jne 0x14000ad3d
mov ecx, 1
call sym.GC_collect_a_little_inner.lto_priv.0
mov r11d, dword [0x14002b038]
test r11d, r11d
jne 0x14000a769
mov edi, dword [0x14002af0c]
xor r12d, r12d
test edi, edi
jne 0x14000aa24
call sym.GC_promote_black_lists.lto_priv.0
mov r10d, dword [0x14002aaec]
test r10d, r10d
jne 0x14000aa83
mov rax, qword [0x14002afd8]
mov rbx, qword [0x14002afb0]
mov dword [0x14002b038], 5
sub rax, 0x10
mov qword [0x14002afe8], rax
test rbx, rbx
je 0x14000a833
nop dword [rax]
mov r11d, 0x3ff
jmp 0x14000a808
test byte [rax + 0x19], 4
jne 0x14000a7ff
mov rcx, qword [rbx + 0x2010]
xor edx, edx
shl rcx, 0xa
add rcx, r11
shl rcx, 0xc
call sym.clear_marks_for_block.lto_priv.0
sub r11, 1
test r11, r11
js 0x14000a827
mov rax, qword [rbx + r11*8]
cmp rax, 0xfff
ja 0x14000a7e0
lea rdx, [r11 - 1]
sub r11, rax
test rax, rax
cmove r11, rdx
test r11, r11
jns 0x14000a808
mov rbx, qword [rbx + 0x2000]
test rbx, rbx
jne 0x14000a7d0
lea rcx, [sym.GC_never_stop_func.lto_priv.0]
mov dword [0x14002aff4], 0
mov dword [0x14002b038], 5
mov qword [0x14002b028], 0
mov dword [0x14002aae8], 1
call sym.GC_stopped_mark.lto_priv.0
test eax, eax
jne 0x14000aa46
mov r9d, dword [0x14002aaf4]
test r9d, r9d
je 0x14000ac98
mov eax, dword [0x14002aaec]
test eax, eax
jne 0x14000a920
add rsp, 0xf8
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea rcx, str.Failed_to_allocate_memory_for_thread_registering
call sym.GC_default_on_abort.lto_priv.0
call qword [sym.imp.KERNEL32.dll_DebugBreak]
jmp 0x14000a68c
lea rdx, [0x140030318]
mov ecx, 0x200
movabs rax, 0x101010101010101
mov qword [0x14002bf08], 1
mov rdi, rdx
rep stosq qword [rdi], rax
cmp r9, 0x180
je 0x14000a5f0
mov rdx, r9
jmp 0x14000a589
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.DuplicateHandle_failed:_errcode_0x_X_n
mov edx, eax
call sym.GC_log_printf
lea rcx, str.DuplicateHandle_failed
call sym.GC_default_on_abort.lto_priv.0
call qword [sym.imp.KERNEL32.dll_DebugBreak]
jmp 0x14000a709
lea rcx, [sym.GC_exit_check]
add rsp, 0xf8
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
jmp dbg.atexit
lea rcx, str.Bad_stack_base_in_GC_register_my_thread
call sym.GC_default_on_abort.lto_priv.0
call qword [sym.imp.KERNEL32.dll_DebugBreak]
jmp 0x14000a721
mov rcx, rsi
mov edx, 1
shr rcx, 0xc
and ecx, 0x3ffff
mov rax, rcx
shl rdx, cl
shr rax, 6
add rax, 0x1c7b
lock or qword [rbx + rax*8], rdx
jmp 0x14000a6bd
cmp byte [rcx + 1], 0
jne 0x14000a9d8
sub edx, 0x47
cmp dl, 0x26
ja 0x14000a9d8
mov ecx, edx
mov r8d, 1
shl r8, cl
movabs rcx, 0x100000001
test r8, rcx
jne 0x14000aceb
movabs rcx, 0x4000000040
test r8, rcx
jne 0x14000ace2
movabs rcx, 0x1000000010
shl rax, 0xa
test r8, rcx
jne 0x14000a392
mov rdx, rdi
lea rcx, str.GC_Warning:_Bad_maximum_heap_size__s___ignoring_n
call qword [sym.GC_default_warn_proc]
test r13, r13
je 0x14000a555
mov rcx, r13
shr rcx, 0xc
jmp 0x14000a541
cmp r13, 0xffffffffffffffff
je 0x14000a32c
lea rcx, str.GC_MAXIMUM_HEAP_SIZE
call sub.msvcrt.dll_getenv
mov rdi, rax
test rax, rax
jne 0x14000a35a
jmp 0x14000a9e8
lea rcx, [0x140024b08]
mov edi, 1
call sym.GC_log_printf
mov rax, qword [rbp - 0xe8]
call rax
mov r12d, eax
jmp 0x14000a790
call sym.GC_finish_collection.lto_priv.0
test edi, edi
je 0x14000a880
mov rax, qword [rbp - 0xe8]
call rax
mov ecx, dword [0x14002af0c]
mov edx, eax
test ecx, ecx
je 0x14000a880
sub edx, r12d
xor r8d, r8d
lea rcx, [0x140024b30]
call sym.GC_log_printf
jmp 0x14000a880
mov r15d, dword [0x14002af0c]
xor r13d, r13d
cmp r15d, 2
je 0x14000ad06
lea r14, [0x140023700]
mov rax, qword [r14 + 8]
lea rdx, [rax + 0x408]
lea rsi, [rax + 8]
mov qword [rbp - 0xf0], rdx
test rax, rax
je 0x14000ac37
nop dword [rax]
mov r8, qword [rsi]
test r8, r8
je 0x14000ac26
mov rdx, r8
shr rdx, 0x16
mov rax, rdx
and eax, 0x7ff
mov rax, qword [rbx + rax*8 + 0x263e0]
cmp rdx, qword [rax + 0x2010]
je 0x14000ab31
mov rcx, qword [0x14002b020]
jmp 0x14000ab08
mov rax, qword [rax + 0x2018]
cmp rdx, qword [rax + 0x2010]
je 0x14000ab31
cmp rax, rcx
jne 0x14000aaf8
mov rax, r8
shr rax, 0xc
and eax, 0x3ff
mov rax, qword [rcx + rax*8]
mov rcx, r8
mov rdx, qword [rax]
mov qword [rsi], rdx
mov rdx, qword [rax + 0x20]
call sym.GC_reclaim_small_nonempty_block.constprop.0
jmp 0x14000aac0
mov rcx, rax
jmp 0x14000ab0d
lea rcx, str.GC_PRINT_STATS
call sub.msvcrt.dll_getenv
test rax, rax
je 0x140009fce
mov dword [0x14002af0c], 1
jmp 0x140009fce
mov rax, qword [0x140055610]
test rax, rax
je 0x14000ac80
mov qword [rbp - 0xd0], rbp
neg rax
mov rdx, qword [rbp - 0xd0]
mov r8d, 0x30
and rax, rdx
lea rdx, [rbp - 0xc0]
mov r14, rax
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp rax, 0x30
je 0x14000abaf
lea rcx, [0x14002471f]
call sym.GC_default_on_abort.lto_priv.0
call qword [sym.imp.KERNEL32.dll_DebugBreak]
mov eax, dword [rbp - 0x9c]
and ah, 0xfc
lea rdx, [rax - 4]
test rdx, 0xfffffffffffffffb
je 0x14000abd1
sub rax, 0x40
test rax, 0xffffffffffffffbf
jne 0x14000abe4
cmp dword [rbp - 0xa0], 0x1000
jne 0x14000abe4
add r14, qword [rbp - 0xa8]
mov qword [0x1400596b0], r14
jmp 0x14000a1a3
call sym.GC_dump_named.constprop.0
jmp 0x14000a735
lea rax, [0x140055320]
mov rsi, r15
mov qword [0x14002a0c8], rax
lea rax, [0x14002a2e0]
mov rdx, qword [rax + rdi*8]
mov qword [rax + rdi*8], r15
mov qword [0x14002a0c0], rdx
jmp 0x14000a6bd
add rsi, 8
cmp qword [rbp - 0xf0], rsi
jne 0x14000aac0
add r14, 0x20
lea rax, [0x140023760]
cmp r14, rax
jne 0x14000aa9e
cmp r15d, 2
jne 0x14000a7a5
mov rax, qword [rbp - 0xe8]
call rax
xor r8d, r8d
lea rcx, [0x140024388]
sub eax, r13d
mov edx, eax
call sym.GC_log_printf
jmp 0x14000a7a5
mov rcx, r15
call r14
mov eax, dword [0x14002a084]
mov qword [0x140055610], rax
jmp 0x14000ab6a
mov rax, qword [0x14002afd8]
mov r8d, dword [0x14002af10]
mov dword [0x14002b038], 5
sub rax, 0x10
mov qword [0x14002afe8], rax
test r8d, r8d
je 0x14000ad4e
mov rdx, qword [0x14002af28]
mov rcx, qword [0x14002af18]
mov r8d, 0x8000
call sym.memcpy
jmp 0x14000a880
shl rax, 0x14
jmp 0x14000a392
shl rax, 0x1e
jmp 0x14000a392
shl r13, 0x14
jmp 0x14000aa0a
shl r13, 0x1e
jmp 0x14000aa0a
mov rax, qword [rbp - 0xe8]
call rax
mov r15d, dword [0x14002af0c]
mov r13d, eax
jmp 0x14000aa97
mov dword [0x14002af08], 0x200000
jmp 0x14000a508
mov qword [0x140059680], 0
jmp 0x14000a527
lea rcx, [0x140024ac8]
call sym.GC_log_printf
jmp 0x14000a769
mov rdx, qword [0x14002af30]
mov rcx, qword [0x14002af20]
mov r8d, 0x8000
call sym.memcpy
jmp 0x14000acc4
lea rcx, str.Insufficient_memory_for_GC_all_nils_n
call sym.GC_err_printf
xor ecx, ecx
call sym.GC_default_on_abort.lto_priv.0
mov ecx, 1
call sym.exit
lea rcx, str.Insufficient_memory_for_black_list_n
jmp 0x14000ad73
lea rcx, str.Cant_start_up:_not_enough_memory_n
jmp 0x14000ad73