Function at 0x14000a9e0
Capabilities:
Check for time delay via gettickcount
Get system information on windows
Query environment variable
Terminate process

Disassembly:
push rbp
mov rbp, rsp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x98
lea rcx, str.kernel32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
test rax, rax
je 0x14000aa34
lea rdx, str.InitializeCriticalSectionAndSpinCount
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x14000aa34
mov edx, 0xfa0
lea rcx, [0x140031200]
call rax
mov rbx, qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x14000aa44
mov rbx, qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rcx, [0x140031200]
call rbx
lea r13, [0x1400311c0]
lea rcx, [0x14005c580]
call rbx
mov rcx, r13
mov r12, qword [sym.imp.KERNEL32.dll_GetSystemInfo]
call r12
mov eax, dword [0x1400311c4]
lea rcx, str.GC_PRINT_VERBOSE_STATS
mov dword [0x1400311a4], 1
mov qword [0x14005c5b0], rax
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000b525
mov dword [0x140031e94], 2
lea rcx, str.GC_DUMP_REGULARLY
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000aab2
mov dword [0x14005c56c], 1
lea rcx, str.GC_FIND_LEAK
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000aacd
mov dword [0x140031a70], 1
lea rcx, str.GC_FINDLEAK_DELAY_FREE
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000aae8
mov dword [0x14005c524], 1
lea rcx, str.GC_ALL_INTERIOR_POINTERS
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000ab03
mov dword [0x140031e98], 1
lea rcx, str.GC_DONT_GC
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000ab1e
mov dword [0x140031a74], 1
lea rcx, str.GC_PRINT_BACK_HEIGHT
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000ab39
mov dword [0x14005c568], 1
lea rcx, str.GC_NO_BLACKLIST_WARNING
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000ab54
mov dword [0x140025020], 0x7fffffff
lea rcx, str.GC_TRACE
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000ab73
xor edx, edx
lea rcx, str.GC_Warning:_Tracing_not_enabled:_Ignoring_GC_TRACE_value_n
call sym.GC_default_warn_proc.lto_priv.0
lea rcx, str.GC_PAUSE_TIME_TARGET
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000ab96
mov rcx, rax
call sub.ucrtbase.dll_atol
test eax, eax
jle 0x14000ab96
mov dword [0x140025260], eax
lea rcx, str.GC_FULL_FREQUENCY
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000abb9
mov rcx, rax
call sub.ucrtbase.dll_atoi
test eax, eax
jle 0x14000abb9
mov dword [0x140025248], eax
lea rcx, str.GC_LARGE_ALLOC_WARN_INTERVAL
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000abe0
mov rcx, rax
call sub.ucrtbase.dll_atol
test eax, eax
jle 0x14000b152
mov dword [0x140025020], eax
lea rcx, str.GC_FREE_SPACE_DIVISOR
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000ac06
mov rcx, rax
call sub.ucrtbase.dll_atoi
test eax, eax
jle 0x14000ac06
cdqe
mov qword [0x140025250], rax
mov rsi, qword [sym.imp.KERNEL32.dll_GetTickCount]
call rsi
mov r11d, dword [0x140031e98]
mov dword [0x1400311a0], eax
test r11d, r11d
je 0x14000ac2c
mov qword [0x140025070], 0xfffffffffffffff8
lea rdi, [0x14005c290]
lea rbx, [rdi - 0x2a3d0]
mov rdx, rdi
mov rcx, rbx
call sym.GC_exclude_static_roots_inner
lea rdx, [0x140025240]
lea rcx, [rdx - 0x200]
call sym.GC_exclude_static_roots_inner
cmp qword [0x140060600], 0
je 0x14000b4aa
call sym.GC_scratch_alloc.constprop.1
mov qword [0x140031f78], rax
mov rcx, rax
test rax, rax
je 0x14000b7cc
mov r8d, 0x2020
xor edx, edx
call sym.memset
lea rax, [0x140058290]
movq xmm0, qword [0x140031f78]
punpcklqdq xmm0, xmm0
nop
movaps xmmword [rax], xmm0
add rax, 0x10
cmp rdi, rax
jne 0x14000aca0
mov r10d, dword [0x140031a78]
test r10d, r10d
je 0x14000b176
cmp dword [0x140031e94], 2
je 0x14000b733
test word [0x14005c5b0], 0xfff
jne 0x14000b24f
call sym.detect_GetWriteWatch
cmp qword [0x140031e88], 0
je 0x14000b5e2
mov r9d, dword [0x140031e94]
test r9d, r9d
jne 0x14000b6d2
mov dword [0x140031a78], 1
mov ecx, dword [0x140031e98]
test ecx, ecx
je 0x14000b1cc
call sym.GC_scratch_alloc.constprop.0
mov qword [0x140031eb0], rax
call sym.GC_scratch_alloc.constprop.0
mov rcx, qword [0x140031eb0]
mov qword [0x140031ea0], rax
mov rdi, rax
test rcx, rcx
je 0x14000b7d5
test rax, rax
je 0x14000b7d5
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.ucrtbase.dll_getenv
mov rdi, rax
test rax, rax
je 0x14000b165
cmp byte [rax], 0
jne 0x14000b390
xor r13d, r13d
xor r12d, r12d
mov rdx, rdi
lea rcx, str.GC_Warning:_Bad_initial_heap_size__s___ignoring_it._n
call sym.GC_default_warn_proc.lto_priv.0
lea rcx, str.GC_MAXIMUM_HEAP_SIZE
call sub.ucrtbase.dll_getenv
mov rdi, rax
test rax, rax
je 0x14000adf4
cmp byte [rax], 0
jne 0x14000b428
xor r14d, r14d
cmp r14, r12
jae 0x14000add8
mov rdx, rdi
lea rcx, str.GC_Warning:_Bad_maximum_heap_size__s___ignoring_it._n
call sym.GC_default_warn_proc.lto_priv.0
cmp qword [0x14005c530], 0
jne 0x14000aded
mov qword [0x14005c530], 2
mov qword [0x14005c548], r14
mov rcx, r13
call sym.GC_expand_hp_inner
test eax, eax
je 0x14000b7af
movsxd r9, dword [0x140031e98]
add qword [0x140031ec8], r12
test r9d, r9d
jne 0x14000b190
cmp byte [0x140037288], 0
jne 0x14000ae32
mov byte [0x140037288], 1
mov byte [0x140032258], 1
mov qword [0x140032e78], 1
xor edx, edx
mov r8d, 0x180
mov eax, 1
lea r11, [0x140032e78]
mov r10, 0xfffffffffffffff0
sub r8, r9
jmp 0x14000ae79
lea rdx, [rdx + rax + 0xf]
shr rdx, 4
mov qword [r11 + rax*8], rdx
add rax, 1
cmp r8, rax
jb 0x14000aea0
mov rdx, r9
mov rcx, r10
sub rcx, rdx
cmp rax, rcx
jb 0x14000ae60
movabs rdi, 0xfffffffffffffff
mov qword [r11 + rax*8], rdi
add rax, 1
cmp r8, rax
jae 0x14000ae76
nop dword [rax + rax]
mov dword [0x1400311f8], 1
mov edx, dword [0x14005c5a8]
test edx, edx
jne 0x14000afd8
mov dword [0x14005c5a8], 1
mov r14, qword [0x140060600]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r13d, eax
mov eax, dword [0x140031a78]
test eax, eax
je 0x14000aeea
mov eax, dword [0x140031a60]
test eax, eax
je 0x14000b362
mov dword [0x14005c3cc], 1
mov eax, r13d
shr eax, 8
xor eax, r13d
movzx r12d, al
mov eax, dword [0x14005c290]
test eax, eax
je 0x14000b6e3
mov edx, 1
mov ecx, 0xc0
call sym.GC_generic_malloc_inner.lto_priv.0
mov rdi, rax
test rax, rax
je 0x14000b574
movsxd rax, r12d
lea rdx, [0x140031260]
mov rcx, qword [rdx + rax*8]
mov qword [rdi], rcx
mov qword [rdx + rax*8], rdi
lea rax, [0x14005c300]
cmp rdi, rax
je 0x14000b70d
mov eax, dword [0x140031a60]
test eax, eax
jne 0x14000b5ac
mov dword [0x14005c3cc], 0
mov r12, qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call r12
mov r15, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov qword [rbp - 0x88], rax
call r12
mov dword [rsp + 0x30], 2
lea r9, [rdi + 0x10]
mov r8, r15
mov dword [rsp + 0x28], 0
mov rcx, rax
mov dword [rsp + 0x20], 0
mov rdx, qword [rbp - 0x88]
call qword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
je 0x14000b549
mov qword [rdi + 0x20], 0xffffffffffffffff
mov qword [rdi + 0x18], r14
mov rax, qword [rdi + 0x18]
test rax, rax
je 0x14000b595
mov dword [rdi + 8], r13d
mov eax, dword [0x14005c56c]
test eax, eax
jne 0x14000b5d8
mov r15d, dword [0x140031a74]
test r15d, r15d
jne 0x14000b130
mov r14d, dword [0x140031a78]
test r14d, r14d
je 0x14000b034
mov r13d, dword [0x140031f90]
test r13d, r13d
je 0x14000b034
mov r12d, dword [0x140031e94]
test r12d, r12d
jne 0x14000b790
mov ecx, 1
call sym.GC_collect_a_little_inner.lto_priv.0
mov r11d, dword [0x140031f90]
test r11d, r11d
jne 0x14000b01e
mov edi, dword [0x140031e94]
xor r12d, r12d
test edi, edi
jne 0x14000b266
call sym.GC_promote_black_lists
mov r10d, dword [0x140031a70]
test r10d, r10d
jne 0x14000b2b7
mov rax, qword [0x140031f50]
mov rbx, qword [0x140031f28]
mov dword [0x140031f90], 5
sub rax, 0x10
mov qword [0x140031f60], rax
test rbx, rbx
je 0x14000b0e3
nop word [rax + rax]
mov r11d, 0x3ff
jmp 0x14000b0b8
test byte [rax + 0x19], 4
jne 0x14000b0af
mov rcx, qword [rbx + 0x2010]
xor edx, edx
shl rcx, 0xa
add rcx, r11
shl rcx, 0xc
call sym.clear_marks_for_block
sub r11, 1
test r11, r11
js 0x14000b0d7
mov rax, qword [rbx + r11*8]
cmp rax, 0xfff
ja 0x14000b090
lea rdx, [r11 - 1]
sub r11, rax
test rax, rax
cmove r11, rdx
test r11, r11
jns 0x14000b0b8
mov rbx, qword [rbx + 0x2000]
test rbx, rbx
jne 0x14000b088
lea rcx, [sym.GC_never_stop_func]
mov dword [0x140031f98], 0
mov dword [0x140031f90], 5
mov qword [0x140031f80], 0
mov dword [0x1400605fc], 1
call sym.GC_stopped_mark
test eax, eax
jne 0x14000b281
mov r9d, dword [0x140031a78]
test r9d, r9d
je 0x14000b688
mov eax, dword [0x140031a70]
test eax, eax
jne 0x14000b230
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
xor edx, edx
lea rcx, str.GC_Warning:_GC_LARGE_ALLOC_WARN_INTERVAL_environment_variable_has_bad_value:_Ignoring_n
call sym.GC_default_warn_proc.lto_priv.0
jmp 0x14000abe0
mov r13d, 0x10
mov r12d, 0x10000
jmp 0x14000ada4
lea rcx, str.GC_ENABLE_INCREMENTAL
call sub.ucrtbase.dll_getenv
test rax, rax
jne 0x14000acbc
jmp 0x14000ad05
lea rdx, [0x140037288]
mov ecx, 0x200
movabs rax, 0x101010101010101
mov qword [0x140032e78], 1
mov rdi, rdx
rep stosq qword [rdi], rax
cmp r9, 0x180
je 0x14000aea0
mov rdx, r9
jmp 0x14000ae3f
cmp qword [0x140031ea8], 0
jne 0x14000ad13
call sym.GC_scratch_alloc.constprop.0
mov qword [0x140031eb8], rax
call sym.GC_scratch_alloc.constprop.0
mov rcx, qword [0x140031eb8]
mov qword [0x140031ea8], rax
mov rdi, rax
test rcx, rcx
je 0x14000b7d5
test rax, rax
je 0x14000b7d5
xor edx, edx
mov r8d, 0x8000
call sym.memset
mov r8d, 0x8000
xor edx, edx
mov rcx, rdi
call sym.memset
jmp 0x14000ad13
lea rcx, [sym.GC_exit_check]
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
jmp sym.atexit
lea rcx, str.Page_size_not_multiple_of_HBLKSIZE
call sym.GC_default_on_abort.lto_priv.0
call qword [sym.imp.KERNEL32.dll_DebugBreak]
jmp 0x14000acd8
lea rcx, str.Initiating_full_world_stop_collection__n
mov edi, 1
call sym.GC_log_printf
call rsi
mov r12d, eax
jmp 0x14000b045
call sym.GC_finish_collection
test edi, edi
je 0x14000b130
call rsi
mov ecx, dword [0x140031e94]
mov edx, eax
test ecx, ecx
je 0x14000b130
sub edx, r12d
xor r8d, r8d
lea rcx, str.Complete_collection_took__lu_ms__lu_ns_n
call sym.GC_log_printf
jmp 0x14000b130
xor r13d, r13d
cmp dword [0x140031e94], 2
je 0x14000b744
lea r14, [0x140025040]
mov rax, qword [r14 + 8]
lea rdx, [rax + 0x408]
lea r15, [rax + 8]
mov qword [rbp - 0x88], rdx
test rax, rax
je 0x14000b631
nop dword [rax]
mov r8, qword [r15]
test r8, r8
je 0x14000b620
mov rdx, r8
shr rdx, 0x16
mov rax, rdx
and eax, 0x7ff
mov rax, qword [rbx + rax*8 + 0x263d0]
cmp qword [rax + 0x2010], rdx
je 0x14000b33d
mov rcx, qword [0x140031f78]
jmp 0x14000b338
mov rax, qword [rax + 0x2018]
cmp rdx, qword [rax + 0x2010]
je 0x14000b33d
cmp rcx, rax
jne 0x14000b328
mov rdx, r8
mov rcx, r8
shr rdx, 0xc
and edx, 0x3ff
mov rax, qword [rax + rdx*8]
mov rdx, qword [rax]
mov qword [r15], rdx
mov rdx, qword [rax + 0x20]
call sym.GC_reclaim_small_nonempty_block.constprop.0
jmp 0x14000b2f0
call sym.detect_GetWriteWatch
cmp qword [0x140031e88], 0
jne 0x14000aeea
lea rcx, [sym.GC_write_fault_handler]
call qword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
jmp 0x14000aeea
mov rcx, rax
lea rdx, [rbp - 0x70]
mov r8d, 0xa
call sym.strtoumax
mov r12, rax
mov rax, qword [rbp - 0x70]
movzx ecx, byte [rax]
test cl, cl
je 0x14000b40b
cmp byte [rax + 1], 0
jne 0x14000ad8f
sub ecx, 0x47
cmp cl, 0x26
ja 0x14000ad8f
movabs rdx, 0x100000001
mov eax, 1
shl rax, cl
test rax, rdx
jne 0x14000b787
movabs rdx, 0x4000000040
test rax, rdx
jne 0x14000b77e
movabs rdx, 0x1000000010
shl r12, 0xa
test rax, rdx
je 0x14000ad8f
mov r13, r12
shr r13, 0xc
cmp r12, 0x10000
ja 0x14000ada4
jmp 0x14000ad95
mov rcx, rax
lea rdx, [rbp - 0x70]
mov r8d, 0xa
call sym.strtoumax
mov r14, rax
mov rax, qword [rbp - 0x70]
movzx ecx, byte [rax]
test cl, cl
je 0x14000adc4
cmp byte [rax + 1], 0
jne 0x14000adc1
sub ecx, 0x47
cmp cl, 0x26
ja 0x14000adc1
movabs rdx, 0x100000001
mov eax, 1
shl rax, cl
test rax, rdx
jne 0x14000b775
movabs rdx, 0x4000000040
and rdx, rax
jne 0x14000b76c
movabs rcx, 0x1000000010
shl r14, 0xa
test rax, rcx
cmove r14, rdx
jmp 0x14000adc4
mov rax, qword [0x14005c5b0]
test rax, rax
je 0x14000b670
mov qword [rbp - 0x78], rbp
mov rdx, qword [rbp - 0x78]
neg rax
mov r8d, 0x30
and rax, rdx
lea rdx, [rbp - 0x70]
mov r12, rax
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp rax, 0x30
je 0x14000b4f6
lea rcx, [0x140027862]
call sym.GC_default_on_abort.lto_priv.0
call qword [sym.imp.KERNEL32.dll_DebugBreak]
mov eax, dword [rbp - 0x4c]
and ah, 0xfc
lea edx, [rax - 4]
and edx, 0xfffffffb
je 0x14000b50c
sub eax, 0x40
and eax, 0xffffffbf
jne 0x14000b519
cmp dword [rbp - 0x50], 0x1000
jne 0x14000b519
add r12, qword [rbp - 0x58]
mov qword [0x140060600], r12
jmp 0x14000ac66
lea rcx, str.GC_PRINT_STATS
call sub.ucrtbase.dll_getenv
test rax, rax
je 0x14000aa97
mov dword [0x140031e94], 1
jmp 0x14000aa97
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 0x14000afbb
lea rcx, str.Failed_to_allocate_memory_for_thread_registering
mov dword [0x14005c3cc], 0
call sym.GC_default_on_abort.lto_priv.0
call qword [sym.imp.KERNEL32.dll_DebugBreak]
jmp 0x14000af67
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 0x14000afd4
mov rcx, rdi
mov edx, 1
shr rcx, 0xc
and ecx, 0x3ffff
mov rax, rcx
shl rdx, cl
shr rax, 6
add rax, 0x1c79
lock or qword [rbx + rax*8], rdx
jmp 0x14000af5d
call sym.GC_dump_named.constprop.0
jmp 0x14000afe6
lea rcx, [sym.GC_write_fault_handler]
call qword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
mov qword [0x14005c3c0], rax
test rax, rax
je 0x14000b723
mov r8d, dword [0x140031e94]
test r8d, r8d
je 0x14000acfb
lea rcx, str.Replaced_other_UnhandledExceptionFilter_n
call sym.GC_log_printf
jmp 0x14000acfb
add r15, 8
cmp qword [rbp - 0x88], r15
jne 0x14000b2f0
add r14, 0x20
lea rax, [0x1400250a0]
cmp r14, rax
jne 0x14000b2ce
cmp dword [0x140031e94], 2
jne 0x14000b05a
call rsi
xor r8d, r8d
lea rcx, str.Disposing_of_reclaim_lists_took__lu_ms__lu_ns_n
sub eax, r13d
mov edx, eax
call sym.GC_log_printf
jmp 0x14000b05a
mov rcx, r13
call r12
mov eax, dword [0x1400311c4]
mov qword [0x14005c5b0], rax
jmp 0x14000b4ba
mov rax, qword [0x140031f50]
mov r8d, dword [0x140031e98]
mov dword [0x140031f90], 5
sub rax, 0x10
mov qword [0x140031f60], rax
test r8d, r8d
je 0x14000b74e
mov rdx, qword [0x140031eb0]
mov rcx, qword [0x140031ea0]
mov r8d, 0x8000
call sym.memcpy
jmp 0x14000b130
lea rcx, str.Using_GetWriteWatch___n
call sym.GC_log_printf
jmp 0x14000acfb
lea rdx, [0x140031260]
movsxd rax, r12d
lea rdi, [0x14005c300]
mov dword [0x14005c290], 1
mov rcx, qword [rdx + rax*8]
mov qword [rdx + rax*8], rdi
mov qword [0x14005c300], rcx
mov dword [0x14005c3cc], 0
lea rdi, [0x14005c300]
jmp 0x14000af67
mov qword [0x14005c3c0], 0xffffffffffffffff
jmp 0x14000acfb
lea rcx, str.Initializing_mprotect_virtual_dirty_bit_implementation_n
call sym.GC_log_printf
jmp 0x14000acc9
call rsi
mov r13d, eax
jmp 0x14000b2c7
mov rdx, qword [0x140031eb8]
mov rcx, qword [0x140031ea8]
mov r8d, 0x8000
call sym.memcpy
jmp 0x14000b6b4
shl r14, 0x14
jmp 0x14000adc4
shl r14, 0x1e
jmp 0x14000adc4
shl r12, 0x14
jmp 0x14000b40b
shl r12, 0x1e
jmp 0x14000b40b
lea rcx, str.GC_try_to_collect_inner:_finishing_collection_in_progress_n
call sym.GC_log_printf
mov edi, dword [0x140031f90]
test edi, edi
jne 0x14000b01e
jmp 0x14000b034
lea rcx, str.Cant_start_up:_not_enough_memory_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_GC_all_nils_n
jmp 0x14000b7b6
lea rcx, str.Insufficient_memory_for_black_list_n
jmp 0x14000b7b6