Function at 0x4171e0
Capabilities:
Check for time delay via gettickcount

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rsi, qword [0x00420490]
mov r12, qword [0x00420390]
mov rbx, qword [0x00420360]
mov eax, dword [rsi]
or eax, dword [r12]
mov rbp, rcx
mov r14d, edx
jne 0x4172e0
mov rax, qword [rbx + 0xf8]
mov rdx, qword [0x004525c8]
cmp rax, rdx
jbe 0x417247
mov rcx, qword [rbx + 0x50]
or rcx, qword [0x004525c0]
je 0x417247
sub rax, rdx
imul rax, rax, 0x2710
cmp rax, qword [rbx + 0x40]
ja 0x417270
mov dword [rsp + 0xb0], r8d
call sym.GC_should_collect.lto_priv.61
test eax, eax
je 0x4172e0
mov eax, dword [r12]
mov r8d, dword [rsp + 0xb0]
test eax, eax
jne 0x4178b0
mov dword [rsp + 0xb0], r8d
call sym.GC_never_stop_func.lto_priv.42
mov r8d, dword [rsp + 0xb0]
test eax, eax
jne 0x4178b0
lea rcx, [sym.GC_never_stop_func.lto_priv.42]
mov dword [rsp + 0xb0], r8d
call sym.GC_try_to_collect_inner.part.44.lto_priv.105
mov r8d, dword [rsp + 0xb0]
cmp eax, 1
mov r13d, eax
sete al
test r8d, r8d
je 0x4172bb
test al, al
je 0x4172e6
mov rax, qword [rbx + 0xf8]
mov r15d, 1
mov qword [0x004525c8], rax
mov rax, qword [rbx + 0x50]
mov qword [0x004525c0], rax
jmp 0x417643
mov r13d, 1
mov rax, qword [0x00420400]
xor edx, edx
mov rcx, qword [rax]
mov rax, qword [rbx]
shl rcx, 0xc
div rcx
lea rdi, [rax + rbp]
cmp rdi, 0x800
jbe 0x41734f
test r14d, r14d
mov edi, 4
jne 0x41732b
mov rax, qword [0x00420370]
mov rdi, qword [rax]
shr rdi, 0xc
add rdi, rdi
cmp rdi, rbp
cmova rdi, rbp
movabs rax, 0xfffffffffffff
add rdi, rbp
cmp rdi, rax
cmova rdi, rax
mov eax, 0x800
cmp rdi, 0x800
cmovb rdi, rax
mov rcx, rdi
call sym.GC_expand_hp_inner.lto_priv.65
test eax, eax
mov r15d, eax
jne 0x417630
cmp rdi, rbp
je 0x417377
mov rcx, rbp
call sym.GC_expand_hp_inner.lto_priv.65
test eax, eax
jne 0x417630
test r13d, r13d
je 0x417700
mov rdx, qword [0x004203c0]
mov eax, dword [rdx]
lea ecx, [rax + 1]
mov dword [rdx], ecx
mov rdx, qword [0x00420510]
cmp rax, qword [rdx]
jae 0x417680
lea rcx, str.GC_Warning:_Out_of_Memory___Trying_to_continue..._n
xor edx, edx
call sym.GC_default_warn_proc.lto_priv.47
mov r13d, dword [r12]
test r13d, r13d
jne 0x41763d
mov r12d, dword [rsi]
mov r13, qword [0x00420600]
test r12d, r12d
mov r15d, dword [r13]
je 0x417400
mov ebp, dword [rbx + 0xd0]
test ebp, ebp
je 0x417400
test r15d, r15d
jne 0x417d72
nop
mov ecx, 1
call sym.GC_collect_a_little_inner.lto_priv.62
mov r11d, dword [rbx + 0xd0]
test r11d, r11d
jne 0x4173e0
mov r15d, dword [r13]
nop word [rax + rax]
test r15d, r15d
mov dword [rsp + 0x34], 0
je 0x417429
lea rcx, str.Initiating_full_world_stop_collection__n
mov r15d, 1
call sym.GC_log_printf
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x34], eax
call sym.GC_promote_black_lists.lto_priv.68
mov rax, qword [0x004203d0]
mov r10d, dword [rax]
test r10d, r10d
jne 0x417940
mov r9, qword [rbx + 0x68]
mov edi, 1
mov r11d, 0x1000
mov dword [rbx + 0xd0], 5
mov rax, qword [rbx + 0x90]
sub rax, 0x10
test r9, r9
mov qword [rbx + 0xa0], rax
je 0x417584
nop
nop word cs:[rax + rax]
mov r8d, 0x3ff
nop word cs:[rax + rax]
mov rax, qword [r9 + r8*8]
cmp rax, 0xfff
jbe 0x4176a0
test byte [rax + 0x19], 4
jne 0x417567
mov rax, qword [r9 + 0x2010]
shl rax, 0xa
add rax, r8
mov rcx, rax
shl rcx, 0xc
shr rcx, 0x16
mov rdx, rcx
and edx, 0x7ff
mov rdx, qword [rbx + rdx*8 + 0x263d0]
cmp rcx, qword [rdx + 0x2010]
je 0x417505
mov r10, qword [rbx + 0xb8]
jmp 0x417500
mov rdx, qword [rdx + 0x2018]
cmp rcx, qword [rdx + 0x2010]
je 0x417505
cmp r10, rdx
jne 0x4174f0
and eax, 0x3ff
mov r10, qword [rdx + rax*8]
cmp byte [r10 + 0x18], 2
je 0x417567
mov rax, qword [r10 + 0x20]
mov ecx, 1
mov edx, 0x20
cmp rax, 0x800
jbe 0x4176c0
lea rax, [r10 + 0x40]
mov qword [r10 + 0x40], 0
mov qword [r10 + 0x48], 0
mov qword [r10 + 0x50], 0
mov qword [r10 + 0x58], 0
mov qword [r10 + 0x60], 0
or qword [rax + rdx], rcx
mov qword [r10 + 0x38], 0
sub r8, 1
test r8, r8
jns 0x417490
mov r9, qword [r9 + 0x2000]
test r9, r9
jne 0x417480
mov rax, qword [0x004204a0]
lea rcx, [sym.GC_never_stop_func.lto_priv.42]
mov dword [rbx + 0xd8], 0
mov dword [rbx + 0xd0], 5
mov qword [rbx + 0xc0], 0
mov dword [rax], 1
call sym.GC_stopped_mark.lto_priv.69
test eax, eax
jne 0x4178c0
mov r9d, dword [rsi]
test r9d, r9d
jne 0x41763d
mov rax, qword [rbx + 0x90]
mov dword [rbx + 0xd0], 5
sub rax, 0x10
mov qword [rbx + 0xa0], rax
mov rax, qword [0x00420340]
mov r8d, dword [rax]
test r8d, r8d
je 0x417d30
mov rax, qword [0x00420480]
mov r8d, 0x8000
mov r15d, 1
mov rcx, qword [rax]
mov rax, qword [0x004205c0]
mov rdx, qword [rax]
call sym.memcpy
jmp 0x417643
mov rax, qword [0x004203c0]
mov edx, dword [rax]
test edx, edx
jne 0x417660
mov r15d, 1
mov eax, r15d
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [0x00420600]
mov eax, dword [rax]
test eax, eax
je 0x41763d
lea rcx, str.Memory_available_again..._n
call sym.GC_log_printf
jmp 0x41763d
mov rdx, qword [rbx]
lea rcx, str.GC_Warning:_Out_of_Memory__Heap_size:__ld_MiB._Returning_NULL__n
shr rdx, 0x14
call sym.GC_default_warn_proc.lto_priv.47
jmp 0x417643
lea rdx, [r8 - 1]
sub r8, rax
test rax, rax
cmove r8, rdx
jmp 0x41756b
mov rcx, qword [r10 + 0x20]
mov rax, r11
xor edx, edx
mov r14, rdi
mov rbp, qword [r10 + 0x20]
div rbp
imul rax, rcx
mov rdx, rax
shr rax, 4
mov ecx, eax
shr rdx, 0xa
shl r14, cl
shl rdx, 3
mov rcx, r14
jmp 0x41752f
mov eax, dword [r12]
test eax, eax
jne 0x41763d
mov eax, dword [rsi]
mov r13, qword [0x00420600]
test eax, eax
mov r15d, dword [r13]
jne 0x417900
test r15d, r15d
mov dword [rsp + 0x34], 0
je 0x41774a
lea rcx, str.Initiating_full_world_stop_collection__n
mov r15d, 1
call sym.GC_log_printf
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x34], eax
call sym.GC_promote_black_lists.lto_priv.68
mov rax, qword [0x004203d0]
mov r14d, dword [rax]
test r14d, r14d
jne 0x417b70
mov r9, qword [rbx + 0x68]
mov edi, 1
mov r11d, 0x1000
mov dword [rbx + 0xd0], 5
mov rax, qword [rbx + 0x90]
sub rax, 0x10
test r9, r9
mov qword [rbx + 0xa0], rax
je 0x417584
nop word cs:[rax + rax]
mov r8d, 0x3ff
nop word cs:[rax + rax]
mov rax, qword [r9 + r8*8]
cmp rax, 0xfff
jbe 0x417a90
test byte [rax + 0x19], 4
jne 0x417888
mov rdx, qword [r9 + 0x2010]
shl rdx, 0xa
add rdx, r8
mov rcx, rdx
shl rcx, 0xc
shr rcx, 0x16
mov rax, rcx
and eax, 0x7ff
mov rax, qword [rbx + rax*8 + 0x263d0]
cmp rcx, qword [rax + 0x2010]
je 0x417825
mov r10, qword [rbx + 0xb8]
jmp 0x417820
mov rax, qword [rax + 0x2018]
cmp rcx, qword [rax + 0x2010]
je 0x417825
cmp r10, rax
jne 0x417810
and edx, 0x3ff
mov r10, qword [rax + rdx*8]
cmp byte [r10 + 0x18], 2
je 0x417888
mov rax, qword [r10 + 0x20]
mov ecx, 1
mov edx, 0x20
cmp rax, 0x800
jbe 0x417ad0
lea rax, [r10 + 0x40]
mov qword [r10 + 0x40], 0
mov qword [r10 + 0x48], 0
mov qword [r10 + 0x50], 0
mov qword [r10 + 0x58], 0
mov qword [r10 + 0x60], 0
or qword [rax + rdx], rcx
mov qword [r10 + 0x38], 0
sub r8, 1
test r8, r8
jns 0x4177b0
mov r9, qword [r9 + 0x2000]
test r9, r9
jne 0x4177a0
jmp 0x417584
xor eax, eax
xor r13d, r13d
jmp 0x4172b2
call sym.GC_finish_collection.lto_priv.70
test r15d, r15d
je 0x41763d
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [r13]
test ecx, ecx
je 0x41763d
sub eax, dword [rsp + 0x34]
lea rcx, str.Complete_collection_took__lu_ms__lu_ns_n
xor r8d, r8d
mov edx, eax
call sym.GC_log_printf
jmp 0x417643
mov eax, dword [rbx + 0xd0]
test eax, eax
je 0x417721
test r15d, r15d
jne 0x417d91
nop word [rax + rax]
mov ecx, 1
call sym.GC_collect_a_little_inner.lto_priv.62
mov r15d, dword [rbx + 0xd0]
test r15d, r15d
jne 0x417920
mov r15d, dword [r13]
jmp 0x417721
cmp dword [r13], 2
mov dword [rsp + 0x40], 0
je 0x417d54
mov rbp, qword [0x00420590]
mov qword [rsp + 0x48], r13
mov r13, rbx
mov r12, qword [0x00420420]
mov dword [rsp + 0x44], r15d
lea rax, [rbp + 0x60]
mov r14, rbp
mov qword [rsp + 0x38], rax
mov rax, qword [r14 + 8]
lea rdi, [rax + 8]
test rax, rax
lea rbx, [rax + 0x408]
je 0x417b20
nop dword [rax]
nop word cs:[rax + rax]
mov rcx, qword [rdi]
test rcx, rcx
je 0x417b10
mov rdx, rcx
shr rdx, 0x16
mov r9, rdx
and r9d, 0x7ff
add r9, 0x4c7a
mov rax, qword [r13 + r9*8]
cmp rdx, qword [rax + 0x2010]
je 0x417ac0
mov r8, qword [r13 + 0xb8]
jmp 0x4179f4
mov rax, qword [rax + 0x2018]
cmp rdx, qword [rax + 0x2010]
je 0x417ac0
cmp rax, r8
jne 0x4179e0
mov r10, rcx
shr r10, 0xc
and r10d, 0x3ff
mov rax, qword [r8 + r10*8]
mov r8, qword [rax]
mov qword [rdi], r8
mov r8, qword [rax + 0x20]
mov rax, qword [r13 + r9*8]
cmp rdx, qword [rax + 0x2010]
je 0x417ab0
mov r9, qword [r13 + 0xb8]
jmp 0x417a40
mov rax, qword [rax + 0x2018]
cmp rdx, qword [rax + 0x2010]
je 0x417ab0
cmp rax, r9
jne 0x417a30
mov rdx, qword [r9 + r10*8]
mov r10, r8
shr r10, 4
movzx eax, byte [rdx + 0x18]
shl rax, 5
add rax, rbp
mov r9, qword [rax]
lea r15, [r9 + r10*8]
mov r9, qword [r12]
mov word [rdx + 0x1a], r9w
mov r9, qword [r15]
mov qword [rsp + 0x20], r9
mov r9d, dword [rax + 0x1c]
call sym.GC_reclaim_generic.constprop.35
mov qword [r15], rax
jmp 0x4179a0
lea rdx, [r8 - 1]
sub r8, rax
test rax, rax
cmove r8, rdx
jmp 0x41788c
mov r9, rax
jmp 0x417a45
mov r8, rax
jmp 0x4179f9
mov rcx, qword [r10 + 0x20]
mov rax, r11
xor edx, edx
mov r14, rdi
mov rbp, qword [r10 + 0x20]
div rbp
imul rax, rcx
mov rdx, rax
shr rax, 4
mov ecx, eax
shr rdx, 0xa
shl r14, cl
shl rdx, 3
mov rcx, r14
jmp 0x417850
add rdi, 8
cmp rbx, rdi
jne 0x4179a0
nop dword [rax]
add r14, 0x20
cmp qword [rsp + 0x38], r14
jne 0x41797a
mov rbx, r13
mov r13, qword [rsp + 0x48]
mov r15d, dword [rsp + 0x44]
cmp dword [r13], 2
jne 0x417441
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [rsp + 0x40]
xor r8d, r8d
lea rcx, str.Disposing_of_reclaim_lists_took__lu_ms__lu_ns_n
mov edx, eax
call sym.GC_log_printf
jmp 0x417441
cmp dword [r13], 2
mov dword [rsp + 0x40], 0
je 0x417d63
mov rbp, qword [0x00420590]
mov qword [rsp + 0x48], r13
mov r13, rbx
mov r12, qword [0x00420420]
mov dword [rsp + 0x44], r15d
lea rax, [rbp + 0x60]
mov r14, rbp
mov qword [rsp + 0x38], rax
mov rax, qword [r14 + 8]
lea rdi, [rax + 8]
test rax, rax
lea rbx, [rax + 0x408]
je 0x417cdd
nop dword [rax]
nop word cs:[rax + rax]
mov rcx, qword [rdi]
test rcx, rcx
je 0x417cd0
mov rdx, rcx
shr rdx, 0x16
mov r9, rdx
and r9d, 0x7ff
add r9, 0x4c7a
mov rax, qword [r13 + r9*8]
cmp rdx, qword [rax + 0x2010]
je 0x417c25
mov r8, qword [r13 + 0xb8]
jmp 0x417c20
mov rax, qword [rax + 0x2018]
cmp rdx, qword [rax + 0x2010]
je 0x417c25
cmp r8, rax
jne 0x417c10
mov r10, rcx
shr r10, 0xc
and r10d, 0x3ff
mov rax, qword [rax + r10*8]
mov r8, qword [rax]
mov qword [rdi], r8
mov r8, qword [rax + 0x20]
mov rax, qword [r13 + r9*8]
cmp rdx, qword [rax + 0x2010]
je 0x417cc0
mov r9, qword [r13 + 0xb8]
jmp 0x417c70
mov rax, qword [rax + 0x2018]
cmp rdx, qword [rax + 0x2010]
je 0x417cc0
cmp rax, r9
jne 0x417c60
mov rdx, qword [r9 + r10*8]
mov r10, r8
shr r10, 4
movzx eax, byte [rdx + 0x18]
shl rax, 5
add rax, rbp
mov r9, qword [rax]
lea r15, [r9 + r10*8]
mov r9, qword [r12]
mov word [rdx + 0x1a], r9w
mov r9, qword [r15]
mov qword [rsp + 0x20], r9
mov r9d, dword [rax + 0x1c]
call sym.GC_reclaim_generic.constprop.35
mov qword [r15], rax
jmp 0x417bd0
mov r9, rax
jmp 0x417c75
add rdi, 8
cmp rdi, rbx
jne 0x417bd0
add r14, 0x20
cmp qword [rsp + 0x38], r14
jne 0x417baa
mov rbx, r13
mov r13, qword [rsp + 0x48]
mov r15d, dword [rsp + 0x44]
cmp dword [r13], 2
jne 0x417762
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [rsp + 0x40]
xor r8d, r8d
lea rcx, str.Disposing_of_reclaim_lists_took__lu_ms__lu_ns_n
mov edx, eax
call sym.GC_log_printf
jmp 0x417762
mov rax, qword [0x00420470]
mov r8d, 0x8000
mov rcx, qword [rax]
mov rax, qword [0x004205a0]
mov rdx, qword [rax]
call sym.memcpy
jmp 0x4175fb
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x40], eax
jmp 0x417953
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x40], eax
jmp 0x417b83
lea rcx, str.GC_try_to_collect_inner:_finishing_collection_in_progress_n
call sym.GC_log_printf
mov edi, dword [rbx + 0xd0]
test edi, edi
je 0x4173f6
jmp 0x4173e0
lea rcx, str.GC_try_to_collect_inner:_finishing_collection_in_progress_n
call sym.GC_log_printf
mov eax, dword [rbx + 0xd0]
test eax, eax
je 0x417936
jmp 0x417920