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

Disassembly:
push ebp
push edi
push esi
mov esi, eax
push ebx
sub esp, 0x3c
mov edi, dword [0x42d534]
or edi, dword [0x42d530]
jne 0x40d046
mov ebx, edx
mov eax, dword [0x42d810]
mov edx, dword [0x44c3c4]
cmp edx, eax
jae 0x40d03d
mov ecx, dword [0x42d7ac]
or ecx, dword [0x44c3c0]
je 0x40d03d
sub eax, edx
imul eax, eax, 0x2710
cmp dword [0x42d7a4], eax
jae 0x40d03d
mov eax, 0x401720
xor ebx, 1
call fcn.00408b60
or ebx, eax
and ebx, 1
je 0x40d04b
mov eax, dword [0x42d810]
mov dword [0x44c3c4], eax
mov eax, dword [0x42d7ac]
mov dword [0x44c3c0], eax
mov ebp, 1
add esp, 0x3c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.004025f0
test eax, eax
jne 0x40d006
mov edi, 1
mov ecx, dword [0x42d780]
mov ebx, dword [0x422030]
xor edx, edx
shl ebx, 0xc
mov eax, ecx
sub eax, dword [0x42d088]
div ebx
mov ebx, 0x10
add eax, esi
cmp eax, ebx
cmovae ebx, eax
cmp eax, 0x800
jbe 0x40d09f
mov eax, dword [0x422188]
shr eax, 0xc
add eax, eax
cmp eax, esi
cmova eax, esi
lea ebx, [eax + esi]
mov eax, 0xfffff
cmp ebx, eax
cmova ebx, eax
mov eax, 0x800
cmp ebx, eax
cmovb ebx, eax
mov eax, dword [0x42d0ac]
cmp ecx, eax
jae 0x40d0b9
sub eax, ecx
shr eax, 0xc
cmp esi, eax
mov edx, eax
cmovae edx, esi
cmp eax, ebx
cmovb ebx, edx
mov eax, ebx
call fcn.004043a0
mov ebp, eax
test eax, eax
jne 0x40d260
cmp esi, ebx
je 0x40d0dd
mov eax, esi
call fcn.004043a0
test eax, eax
jne 0x40d260
test edi, edi
je 0x40d2b1
mov eax, dword [0x42d0b8]
lea edx, [eax + 1]
mov dword [0x42d0b8], edx
mov edx, dword [0x422184]
cmp eax, dword [0x42d044]
jae 0x40d28c
mov dword [esp + 4], 0
mov dword [esp], str.GC_Warning:_Out_of_Memory___Trying_to_continue..._n
call edx
mov eax, dword [0x42d530]
test eax, eax
jne 0x40d02e
mov eax, dword [0x42d534]
test eax, eax
je 0x40d139
mov eax, dword [0x42d800]
test eax, eax
jne 0x40d6ce
mov ebx, dword [0x42d760]
xor esi, esi
test ebx, ebx
je 0x40d15b
mov dword [esp], str.Initiating_full_world_stop_collection__n
mov ebx, edi
call fcn.00402d00
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
call fcn.00402da0
mov edi, dword [0x42d52c]
test edi, edi
jne 0x40d489
mov eax, dword [0x42d7cc]
mov ebp, dword [0x42d7b8]
mov dword [0x42d800], 5
sub eax, 8
mov dword [0x42d7d4], eax
test ebp, ebp
je 0x40d1e4
mov edi, 0x3ff
jmp 0x40d1c1
test byte [eax + 0xd], 4
jne 0x40d1ba
mov dword [esp + 4], 0
mov eax, dword [ebp + 0x1008]
shl eax, 0xa
add eax, edi
shl eax, 0xc
mov dword [esp], eax
call fcn.00401ab0
sub edi, 1
test edi, edi
js 0x40d1da
mov eax, dword [ebp + edi*4]
cmp eax, 0xfff
ja 0x40d196
lea edx, [edi - 1]
sub edi, eax
test eax, eax
cmove edi, edx
test edi, edi
jns 0x40d1c1
mov ebp, dword [ebp + 0x1000]
test ebp, ebp
jne 0x40d18f
mov dword [0x42d7dc], 0
mov eax, 0x401720
mov dword [0x42d800], 5
mov dword [0x42d7f8], 0
mov dword [0x42d528], 1
call fcn.00407df0
test eax, eax
je 0x40d3c3
call fcn.00405d30
test ebx, ebx
je 0x40d02e
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x42d760]
test ecx, ecx
je 0x40d02e
sub eax, esi
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], str.Complete_collection_took__lu_ms__lu_ns_n
call fcn.00402d00
jmp 0x40d02e
mov edx, dword [0x42d0b8]
test edx, edx
je 0x40d02e
mov eax, dword [0x42d760]
test eax, eax
je 0x40d02e
mov dword [esp], str.Memory_available_again..._n
call fcn.00402d00
jmp 0x40d02e
mov eax, dword [0x42d780]
cmp eax, 0x500000
jbe 0x40d477
shr eax, 0x14
mov dword [esp], str.GC_Warning:_Out_of_Memory__Heap_size:__lu_MiB._Returning_NULL__n
mov dword [esp + 4], eax
call edx
jmp 0x40d033
mov eax, dword [0x42d530]
test eax, eax
jne 0x40d02e
mov ebp, dword [0x42d534]
test ebp, ebp
je 0x40d2f4
mov edi, dword [0x42d800]
test edi, edi
je 0x40d2f4
mov esi, dword [0x42d760]
test esi, esi
jne 0x40d6f0
mov eax, 1
call fcn.004088f0
mov ebx, dword [0x42d800]
test ebx, ebx
jne 0x40d2e0
mov ebx, dword [0x42d760]
xor edi, edi
test ebx, ebx
jne 0x40d459
call fcn.00402da0
mov ecx, dword [0x42d52c]
test ecx, ecx
jne 0x40d5c3
mov eax, dword [0x42d7cc]
mov ebp, dword [0x42d7b8]
mov dword [0x42d800], 5
sub eax, 8
mov dword [0x42d7d4], eax
test ebp, ebp
je 0x40d38d
mov esi, 0x3ff
jmp 0x40d36a
test byte [eax + 0xd], 4
jne 0x40d363
mov dword [esp + 4], 0
mov eax, dword [ebp + 0x1008]
shl eax, 0xa
add eax, esi
shl eax, 0xc
mov dword [esp], eax
call fcn.00401ab0
sub esi, 1
test esi, esi
js 0x40d383
mov eax, dword [ebp + esi*4]
cmp eax, 0xfff
ja 0x40d33f
lea edx, [esi - 1]
sub esi, eax
test eax, eax
cmove esi, edx
test esi, esi
jns 0x40d36a
mov ebp, dword [ebp + 0x1000]
test ebp, ebp
jne 0x40d338
mov dword [0x42d7dc], 0
mov eax, 0x401720
mov dword [0x42d800], 5
mov dword [0x42d7f8], 0
mov dword [0x42d528], 1
call fcn.00407df0
test eax, eax
jne 0x40d419
mov esi, dword [0x42d534]
test esi, esi
jne 0x40d02e
mov eax, dword [0x42d7cc]
mov ebx, dword [0x42d764]
mov dword [0x42d800], 5
sub eax, 8
mov dword [0x42d7d4], eax
test ebx, ebx
je 0x40d70f
mov eax, dword [0x42d770]
mov dword [esp + 8], 0x8000
mov dword [esp + 4], eax
mov eax, dword [0x42d768]
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
jmp 0x40d02e
call fcn.00405d30
test ebx, ebx
je 0x40d02e
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [0x42d760]
test edx, edx
je 0x40d02e
sub eax, edi
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], str.Complete_collection_took__lu_ms__lu_ns_n
call fcn.00402d00
jmp 0x40d02e
mov dword [esp], str.Initiating_full_world_stop_collection__n
mov ebx, 1
call fcn.00402d00
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
jmp 0x40d304
mov dword [esp + 4], eax
mov dword [esp], str.GC_Warning:_Out_of_Memory__Heap_size:__lu_bytes._Returning_NULL__n
call edx
jmp 0x40d033
xor edi, edi
cmp dword [0x42d760], 2
je 0x40d5b6
mov dword [esp + 0x28], esi
mov ebp, 0x422040
mov ecx, ebx
mov dword [esp + 0x2c], edi
mov eax, dword [ebp + 4]
mov esi, ecx
lea ebx, [eax + 4]
lea edi, [eax + 0x404]
test eax, eax
je 0x40d56a
lea esi, [esi]
mov eax, dword [ebx]
test eax, eax
je 0x40d55d
mov dword [esp + 0x18], eax
nop
mov eax, dword [esp + 0x18]
mov edx, eax
shr edx, 0x16
mov ecx, dword [edx*4 + 0x449174]
mov edx, eax
shr edx, 0xc
and edx, 0x3ff
mov eax, dword [ecx + edx*4]
mov ecx, dword [eax]
mov edx, dword [eax + 0x10]
mov dword [esp + 0x1c], eax
mov dword [ebx], ecx
movzx ecx, byte [eax + 0xc]
mov dword [esp + 0x20], edx
shr edx, 3
lea ecx, [ecx + ecx*4]
mov eax, dword [ecx*4 + 0x422040]
lea edx, [eax + edx*4]
movzx eax, word [0x42d544]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x1c]
mov word [edx + 0xe], ax
mov edx, dword [esp + 0x24]
mov eax, dword [edx]
mov edx, dword [esp + 0x1c]
mov dword [esp + 4], eax
mov ecx, dword [ecx*4 + 0x422050]
mov eax, dword [esp + 0x18]
mov dword [esp], ecx
mov ecx, dword [esp + 0x20]
call fcn.0040cdb0
mov edx, dword [esp + 0x24]
mov dword [edx], eax
mov eax, dword [ebx]
mov dword [esp + 0x18], eax
test eax, eax
jne 0x40d4d0
add ebx, 4
cmp edi, ebx
jne 0x40d4c0
mov ecx, esi
add ebp, 0x14
mov eax, 0x42207c
cmp eax, ebp
jne 0x40d4a7
cmp dword [0x42d760], 2
mov esi, dword [esp + 0x28]
mov ebx, ecx
mov edi, dword [esp + 0x2c]
jne 0x40d16e
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 8], 0
sub eax, edi
mov dword [esp], str.Disposing_of_reclaim_lists_took__lu_ms__lu_ns_n
mov dword [esp + 4], eax
call fcn.00402d00
jmp 0x40d16e
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
jmp 0x40d498
xor ebp, ebp
cmp dword [0x42d760], 2
je 0x40d6c1
mov dword [esp + 0x1c], ebx
mov esi, 0x422040
mov dword [esp + 0x20], edi
mov eax, dword [esi + 4]
lea ebx, [eax + 4]
lea edi, [eax + 0x404]
test eax, eax
je 0x40d677
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], edi
jmp 0x40d660
mov edx, eax
shr edx, 0x16
mov ecx, dword [edx*4 + 0x449174]
mov edx, eax
shr edx, 0xc
and edx, 0x3ff
mov edx, dword [ecx + edx*4]
mov ecx, dword [edx]
mov dword [ebx], ecx
movzx esi, byte [edx + 0xc]
mov ecx, dword [edx + 0x10]
lea edi, [esi + esi*4]
mov esi, dword [edi*4 + 0x422040]
mov ebp, ecx
shr ebp, 3
lea esi, [esi + ebp*4]
mov ebp, dword [0x42d544]
mov word [edx + 0xe], bp
mov ebp, dword [esi]
mov dword [esp + 4], ebp
mov edi, dword [edi*4 + 0x422050]
mov dword [esp], edi
call fcn.0040cdb0
mov dword [esi], eax
mov eax, dword [ebx]
test eax, eax
jne 0x40d608
add ebx, 4
cmp dword [esp + 0x18], ebx
jne 0x40d660
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
add esi, 0x14
mov eax, 0x42207c
cmp eax, esi
jne 0x40d5df
cmp dword [0x42d760], 2
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
jne 0x40d317
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 8], 0
sub eax, ebp
mov dword [esp], str.Disposing_of_reclaim_lists_took__lu_ms__lu_ns_n
mov dword [esp + 4], eax
call fcn.00402d00
jmp 0x40d317
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebp, eax
jmp 0x40d5d2
mov eax, dword [0x42d760]
test eax, eax
jne 0x40d701
mov eax, 1
call fcn.004088f0
mov ebp, dword [0x42d800]
test ebp, ebp
jne 0x40d6d7
jmp 0x40d139
mov dword [esp], str.GC_try_to_collect_inner:_finishing_collection_in_progress_n
call fcn.00402d00
jmp 0x40d2e0
mov dword [esp], str.GC_try_to_collect_inner:_finishing_collection_in_progress_n
call fcn.00402d00
jmp 0x40d6d7
mov eax, dword [0x42d774]
mov dword [esp + 8], 0x8000
mov dword [esp + 4], eax
mov eax, dword [0x42d76c]
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
jmp 0x40d3f6