Function at 0x4153f0
Capabilities:
Check for time delay via gettickcount
Resume thread

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x8c
mov dword [ebp - 0x70], eax
mov dword [esp], 8
mov dword [ebp - 0x3c], ebp
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x6c], eax
call sym._malloc
mov dword [ebp - 0x50], eax
test eax, eax
je 0x4154a9
mov dword [eax], 0
lea ecx, [ebp - 0x34]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualQuery]
mov dword [esp + 8], 0x1c
mov dword [ebp - 0x58], ecx
mov dword [esp + 4], ecx
mov dword [ebp - 0x4c], eax
call eax
sub esp, 0xc
cmp eax, 0x1c
je 0x41545e
mov dword [esp], str.Weird_VirtualQuery_result
call sym._GC_default_on_abort.lto_priv.70
call dword [sym.imp.KERNEL32.dll_DebugBreak]
mov ecx, dword [0x42a4c4]
mov ebx, dword [ebp - 0x30]
test ecx, ecx
je 0x41548f
cmp ebx, dword [ecx]
je 0x415820
mov eax, ecx
jmp 0x415488
cmp dword [eax], ebx
je 0x415820
mov eax, dword [eax + 4]
test eax, eax
jne 0x415480
mov eax, dword [0x42a7dc]
test eax, eax
jne 0x415e6d
mov eax, dword [ebp - 0x50]
mov dword [eax], ebx
mov dword [eax + 4], ecx
mov dword [0x42a4c4], eax
mov ecx, dword [0x42a8dc]
test ecx, ecx
je 0x415574
mov dword [ebp - 0x4c], 0
xor esi, esi
xor edi, edi
jmp 0x4154ef
mov dword [esp], str.Bad_toggle_ref_status_returned_by_callback
call sym._GC_default_on_abort.lto_priv.70
call dword [sym.imp.KERNEL32.dll_DebugBreak]
mov ecx, dword [0x42a8dc]
add edi, 1
cmp edi, ecx
jae 0x415535
mov eax, dword [0x42a8d8]
mov ebx, dword [eax + edi*4]
test bl, 1
je 0x4154fe
not ebx
test ebx, ebx
je 0x4154e8
xor eax, eax
mov dword [esp], ebx
call eax
cmp eax, 1
je 0x415750
mov ecx, dword [0x42a8dc]
test eax, eax
je 0x4154e8
cmp eax, 2
jne 0x4154d0
mov eax, dword [0x42a8d8]
not ebx
add edi, 1
mov dword [eax + esi*4], ebx
add esi, 1
cmp edi, ecx
jb 0x4154ef
cmp esi, ecx
jae 0x415560
mov eax, dword [0x42a8d8]
sub ecx, esi
mov dword [esp + 4], 0
shl ecx, 2
lea eax, [eax + esi*4]
mov dword [esp + 8], ecx
mov dword [esp], eax
call sym._memset
mov dword [0x42a8dc], esi
mov eax, dword [ebp - 0x4c]
test eax, eax
je 0x415574
mov eax, dword [0x42a7e4]
test eax, eax
jne 0x415b00
mov eax, dword [0x42a7dc]
test eax, eax
jne 0x415ab0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x74], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esp], 0x42a524
xor edi, edi
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
sub esp, 4
lea esi, [esi]
mov esi, dword [edi*4 + 0x42a060]
test esi, esi
jne 0x4155c6
jmp 0x4155f0
mov esi, dword [esi]
test esi, esi
je 0x4155f0
mov eax, dword [esi + 4]
mov eax, dword [eax]
test eax, eax
je 0x4155c0
cmp ebx, dword [esi + 8]
je 0x4155c0
test byte [esi + 0x10], 0x21
jne 0x4155c0
mov eax, esi
call sym._GC_suspend
mov esi, dword [esi]
test esi, esi
jne 0x4155c6
lea esi, [esi]
nop
add edi, 1
cmp edi, 0x100
jne 0x4155b0
mov dword [esp], 0x42a524
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call sym._GC_noop6.constprop.45
mov eax, dword [0x42a8a0]
mov esi, dword [0x42a7e8]
mov dword [ebp - 0x50], eax
test esi, esi
jne 0x415970
mov dword [0x449330], 0
mov eax, dword [ebp - 0x50]
test eax, eax
jne 0x415641
mov dword [0x42a8a0], 1
mov dword [0x42a898], 0
xor edi, edi
mov esi, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x70]
jmp 0x415672
mov eax, esi
call sym._GC_mark_some.lto_priv.62
test eax, eax
jne 0x4157e0
add edi, 1
call ebx
test eax, eax
je 0x415660
test edi, edi
js 0x4157e5
mov dword [0x449308], edi
xor esi, esi
lea esi, [esi]
nop
mov ebx, dword [esi*4 + 0x42a060]
test ebx, ebx
jne 0x4156a6
jmp 0x41571a
mov ebx, dword [ebx]
test ebx, ebx
je 0x41571a
test byte [ebx + 0x10], 0x40
je 0x4156a0
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
sub esp, 4
cmp eax, 0xffffffff
jne 0x4156d2
mov dword [esp], str.ResumeThread_failed
call sym._GC_default_on_abort.lto_priv.70
call dword [sym.imp.KERNEL32.dll_DebugBreak]
mov eax, dword [0x42a7e8]
test eax, eax
je 0x415710
mov ecx, dword [0x42a7e4]
test ecx, ecx
jne 0x415710
mov eax, dword [ebx + 4]
cmp eax, 0x42a468
je 0x4156f9
mov edx, dword [0x42a7e0]
test edx, edx
je 0x415770
cmp ebx, 0x42a480
jne 0x4157b0
lea esi, [esi]
lea esi, [esi]
and byte [ebx + 0x10], 0xbf
mov ebx, dword [ebx]
test ebx, ebx
jne 0x4156a6
add esi, 1
cmp esi, 0x100
jne 0x415690
mov ecx, dword [ebp - 0x64]
test ecx, ecx
jne 0x4158f0
mov dword [ebp - 0x64], 1
test edi, edi
jns 0x415800
mov eax, dword [ebp - 0x64]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [0x42a8d8]
mov ecx, dword [0x42a8dc]
mov dword [ebp - 0x4c], 1
mov dword [eax + esi*4], ebx
add esi, 1
jmp 0x4154e8
and eax, 0xfffff000
xor ecx, ecx
mov edx, 1
call sym._GC_remove_protection.part.34.lto_priv.72
cmp ebx, 0x42a480
je 0x415710
mov eax, dword [0x42a7e8]
test eax, eax
je 0x415710
mov ecx, dword [0x42a7e4]
mov eax, ebx
and eax, 0xfffff000
test ecx, ecx
jne 0x415710
jmp 0x4157b7
mov eax, ebx
and eax, 0xfffff000
mov edx, dword [0x42a7e0]
test edx, edx
jne 0x415710
xor ecx, ecx
mov edx, 1
call sym._GC_remove_protection.part.34.lto_priv.72
jmp 0x415710
mov edi, 0xffffffff
add dword [0x42a7d8], 1
jmp 0x415686
mov eax, dword [0x42a7dc]
mov dword [ebp - 0x64], eax
test eax, eax
jne 0x41594e
mov eax, dword [ebp - 0x64]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, 0x2710
mov dword [esp], esi
call sym._malloc
mov edi, eax
test eax, eax
je 0x4158ac
mov eax, dword [ebp - 0x58]
mov dword [esp + 8], 0x1c
mov dword [esp], edi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4c]
call eax
sub esp, 0xc
cmp eax, 0x1c
je 0x415864
mov dword [esp], str.Weird_VirtualQuery_result
call sym._GC_default_on_abort.lto_priv.70
call dword [sym.imp.KERNEL32.dll_DebugBreak]
mov dword [esp], edi
mov ebx, dword [ebp - 0x30]
add esi, esi
call sym._free
mov ecx, dword [0x42a4c4]
test ecx, ecx
je 0x41548f
mov edi, dword [ecx]
cmp ebx, edi
je 0x4158c0
mov eax, ecx
jmp 0x415894
cmp dword [eax], ebx
je 0x4158c0
mov eax, dword [eax + 4]
test eax, eax
jne 0x415890
mov eax, ecx
mov eax, dword [eax + 4]
test eax, eax
je 0x41548f
cmp dword [eax], ebx
jne 0x41589d
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call sym._free
jmp 0x4154a9
mov eax, 0xcccccccd
mul dword [0x41f020]
shr edx, 3
cmp esi, edx
jae 0x4158de
cmp esi, 0x7a11f
jbe 0x415825
cmp ebx, edi
jne 0x41589b
jmp 0x4158ac
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [0x42a7dc]
test edx, edx
je 0x415734
mov edx, dword [0x449304]
mov ebx, dword [0x449300]
test edx, edx
js 0x415e64
cmp ebx, 0x3e7
ja 0x415e64
sub eax, dword [ebp - 0x74]
cmp eax, 0x7fffffff
mov ecx, eax
mov eax, 0x7fffffff
cmovb eax, ecx
add ebx, 1
mov dword [0x449300], ebx
add eax, edx
mov dword [0x449304], eax
test edi, edi
js 0x415f02
mov dword [esp + 4], edi
mov dword [esp], str.Abandoned_stopped_marking_after__d_iterations_n
call sym._GC_log_printf
mov dword [ebp - 0x64], 0
mov eax, dword [ebp - 0x64]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [0x42a7e4]
mov dword [ebp - 0x4c], eax
test eax, eax
jne 0x415df0
mov esi, dword [0x42a7e0]
test esi, esi
je 0x415b2c
cmp dword [ebp - 0x50], 5
jne 0x415ed4
mov eax, dword [0x42a8a8]
test eax, eax
je 0x415f27
lea eax, [ebp - 0x34]
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x60]
jmp 0x415a36
mov eax, dword [0x43ea10]
add eax, edi
mov ebx, dword [eax]
mov esi, dword [eax + 4]
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x415a10
cmp ebx, dword [0x4472e0]
je 0x415a10
mov eax, dword [0x4472dc]
lea edx, [eax + 1]
mov dword [0x4472dc], edx
cmp eax, 4
jg 0x415a10
mov dword [0x4472e0], ebx
mov dword [esp + 4], ebx
mov dword [esp], str.GC_Warning:_GC_gww_read_dirty_unexpectedly_failed_at__p:_Falling_back_to_marking_all_pages_dirty_n
call dword [0x42184c]
lea esi, [esi]
lea esi, [esi]
cmp dword [ebp - 0x50], 5
jne 0x415d70
add dword [ebp - 0x60], 1
mov eax, dword [ebp - 0x60]
cmp eax, dword [0x42a8a8]
je 0x415dca
lea esi, [esi]
mov esi, dword [0x42a7e0]
lea edi, [eax*8]
lea esi, [esi]
mov eax, dword [0x43ea10]
mov ecx, dword [ebp - 0x58]
lea edx, [ebp - 0x38]
mov dword [esp + 0xc], 0x447300
mov dword [esp + 0x10], edx
add eax, edi
mov dword [esp + 0x14], ecx
mov edx, dword [eax + 4]
mov dword [ebp - 0x38], 0x800
mov dword [esp + 8], edx
mov eax, dword [eax]
mov dword [esp], 1
mov dword [esp + 4], eax
call esi
sub esp, 0x18
test eax, eax
jne 0x4159c0
mov eax, dword [ebp - 0x38]
cmp dword [ebp - 0x50], 5
mov dword [ebp - 0x54], eax
jne 0x415cf0
cmp dword [ebp - 0x54], 0x800
jne 0x415a1a
mov esi, dword [0x42a7e0]
jmp 0x415a40
mov eax, dword [0x42a844]
mov dword [esp], str._n____Marking_for_collection__lu_after__lu_allocated_bytes_n
mov dword [esp + 8], eax
mov eax, dword [0x42a7d8]
add eax, 1
mov dword [esp + 4], eax
call sym._GC_log_printf
mov eax, dword [0x42a7dc]
test eax, eax
je 0x415581
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x64], 1
mov dword [ebp - 0x74], eax
jmp 0x41558f
mov ecx, dword [0x42a8d8]
mov edx, 1
mov eax, ecx
shr ecx, 0xc
shr eax, 0x11
shl edx, cl
and eax, 0x1fff
add eax, 0x307c
lock or dword [eax*4 + 0x42a820], edx
jmp 0x415574
cmp dword [ebp - 0x50], 5
jne 0x415eb3
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
mov dword [esp], 0x436a10
call sym._memset
mov eax, 2
cmp dword [0x42a4e0], 0x1000
cmove eax, dword [ebp - 0x4c]
mov ebx, dword [0x42a8a8]
mov dword [ebp - 0x4c], eax
test ebx, ebx
je 0x415626
xor edi, edi
jmp 0x415bc2
cmp dword [0x421848], 1
mov dword [esp + 0xc], 0x4493f8
sbb edx, edx
mov dword [esp + 4], esi
and edx, 0xffffffe2
mov dword [esp], eax
add edx, 0x20
mov dword [esp + 8], edx
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
test eax, eax
je 0x415cc0
add edi, 1
cmp edi, dword [0x42a8a8]
jae 0x415dca
mov eax, dword [0x43ea10]
mov ecx, dword [ebp - 0x4c]
lea edx, [eax + edi*8]
mov eax, dword [edx]
mov esi, dword [edx + 4]
test ecx, ecx
jne 0x415b80
add esi, eax
cmp esi, eax
jbe 0x415bb3
mov ecx, eax
jmp 0x415c29
and ebx, 0xfffff000
add ebx, eax
cmp ecx, eax
jae 0x415c21
cmp dword [0x421848], 1
mov dword [esp + 0xc], 0x4493f8
sbb edx, edx
sub eax, ecx
mov dword [esp], ecx
and edx, 0xffffffe2
mov dword [esp + 4], eax
add edx, 0x20
mov dword [esp + 8], edx
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
test eax, eax
je 0x415e37
mov ecx, ebx
mov eax, ebx
cmp eax, esi
jae 0x415c80
mov edx, eax
shr edx, 0x16
mov ebx, dword [edx*4 + 0x446214]
mov edx, eax
shr edx, 0xc
and edx, 0x3ff
mov edx, dword [ebx + edx*4]
cmp edx, 0xfff
jbe 0x415de0
mov ebx, dword [edx + 0x10]
test byte [edx + 0xd], 4
jne 0x415be0
add ebx, 0xfff
mov edx, dword [edx + 0x14]
and ebx, 0xfffff000
add ebx, eax
test edx, edx
je 0x415be8
mov eax, ebx
cmp eax, esi
jb 0x415c29
lea esi, [esi]
nop
cmp ecx, eax
jae 0x415bb3
cmp dword [0x421848], 1
mov dword [esp + 0xc], 0x4493f8
sbb edx, edx
sub eax, ecx
mov dword [esp], ecx
and edx, 0xffffffe2
mov dword [esp + 4], eax
add edx, 0x20
mov dword [esp + 8], edx
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
test eax, eax
jne 0x415bb3
lea esi, [esi]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], str.VirtualProtect_failed:_errcode_0x_X_n
mov dword [esp + 4], eax
call sym._GC_log_printf
mov dword [esp], str.VirtualProtect_failed
call sym._GC_default_on_abort.lto_priv.70
call dword [sym.imp.KERNEL32.dll_DebugBreak]
jmp 0x415bb3
lea eax, [eax*4 + 0x447300]
mov dword [ebp - 0x5c], eax
cmp eax, 0x447300
je 0x415a95
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x68], edi
mov ebx, 0x447300
mov edi, eax
lea esi, [esi]
lea esi, [esi]
add ebx, 4
mov eax, dword [ebx - 4]
lea esi, [eax + edi]
lea esi, [esi]
mov edx, eax
mov ecx, eax
add eax, 0x1000
shr edx, 0x11
shr ecx, 0xc
and edx, 0x1fff
mov dword [ebp - 0x4c], edx
mov edx, 1
shl edx, cl
mov ecx, edx
mov edx, dword [ebp - 0x4c]
or dword [edx*4 + 0x42ea10], ecx
cmp eax, esi
jb 0x415d30
cmp dword [ebp - 0x5c], ebx
jne 0x415d20
mov edi, dword [ebp - 0x68]
jmp 0x415a95
shr esi, 0xc
je 0x415a1a
shl esi, 0xc
mov eax, ebx
lea ebx, [ebx + esi]
lea esi, [esi]
lea esi, [esi]
nop
mov edx, eax
mov ecx, eax
mov edi, 1
add eax, 0x1000
shr edx, 0x11
shr ecx, 0xc
and edx, 0x1fff
shl edi, cl
or dword [edx*4 + 0x42ea10], edi
cmp ebx, eax
jne 0x415d90
add dword [ebp - 0x60], 1
mov eax, dword [ebp - 0x60]
cmp eax, dword [0x42a8a8]
jne 0x415a30
mov eax, dword [0x42a8a0]
mov dword [ebp - 0x50], eax
jmp 0x415626
add eax, 0x1000
mov ecx, eax
jmp 0x415c25
cmp dword [ebp - 0x50], 5
je 0x415e88
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0x436a10
mov dword [esp], 0x42ea10
call sym._memcpy
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
mov dword [esp], 0x436a10
call sym._memset
jmp 0x415626
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], str.VirtualProtect_failed:_errcode_0x_X_n
mov dword [esp + 4], eax
call sym._GC_log_printf
mov dword [esp], str.VirtualProtect_failed
call sym._GC_default_on_abort.lto_priv.70
call dword [sym.imp.KERNEL32.dll_DebugBreak]
jmp 0x415c21
shr edx, 1
shr ebx, 1
jmp 0x415924
mov dword [esp + 4], ebx
mov dword [esp], str.Found_new_system_malloc_AllocationBase_at__p_n
call sym._GC_log_printf
mov ecx, dword [0x42a4c4]
jmp 0x41549c
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
mov dword [esp], 0x436a10
call sym._memset
mov dword [0x449330], 0
jmp 0x415641
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0x436a10
mov dword [esp], 0x42ea10
call sym._memcpy
jmp 0x415b36
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
mov dword [esp], 0x42ea10
call sym._memset
mov eax, dword [0x42a8a8]
test eax, eax
jne 0x4159a5
jmp 0x415626
xor edx, edx
mov dword [esp + 8], 0
div ebx
mov dword [esp + 4], ecx
mov dword [esp], str.World_stopped_marking_took__lu_ms__lu_ns___u_ms_in_average__n
mov dword [esp + 0xc], eax
call sym._GC_log_printf
jmp 0x415743
mov dword [0x449330], 0
jmp 0x415641