Function at 0x51c5d0
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x140
mov eax, dword [0x601018]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
mov edi, ecx
cmp dword [edi + 8], 0
jne 0x51c7e0
mov ecx, dword [0x6112a0]
test ecx, ecx
jle 0x51c60c
shl ecx, 0x14
cmp ecx, 0x100000
jge 0x51c613
mov ecx, 0x100000
jmp 0x51c620
mov ecx, 0x4000000
jmp 0x51c620
cmp ecx, 0x20000000
jle 0x51c620
mov ecx, 0x20000000
mov eax, 0x7e8472a9
imul ecx
sar edx, 0xb
push ebx
push esi
mov esi, edx
shr esi, 0x1f
add esi, edx
mov eax, esi
shl eax, 0xc
cdq
and edx, 7
add eax, edx
sar eax, 3
xor ecx, ecx
inc eax
mov edx, 8
mul edx
seto cl
push 0x6073b0
mov dword [edi], esi
neg ecx
or ecx, eax
push ecx
call fcn.005965b7
mov dword [edi + 8], eax
mov eax, dword [edi]
xor ecx, ecx
mov edx, 0x30
mul edx
seto cl
push 0x6073b0
neg ecx
or ecx, eax
push ecx
call fcn.005965b7
mov ecx, dword [edi + 8]
add esp, 0x10
mov dword [edi + 4], eax
test ecx, ecx
je 0x51c694
test eax, eax
jne 0x51c74c
mov ebx, dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete___void__]
push ecx
call ebx
mov eax, dword [edi + 4]
push eax
call ebx
xor ecx, ecx
mov eax, 0x1fa01
mov edx, 8
mul edx
seto cl
push 0x6073b0
mov dword [edi], 0xfd
neg ecx
or ecx, eax
push ecx
call fcn.005965b7
mov dword [edi + 8], eax
mov eax, dword [edi]
xor ecx, ecx
mov edx, 0x30
mul edx
seto cl
push 0x6073b0
neg ecx
or ecx, eax
push ecx
call fcn.005965b7
add esp, 0x18
cmp dword [edi + 8], 0
mov dword [edi + 4], eax
je 0x51c7ef
test eax, eax
je 0x51c7ef
push str.unable_to_allocate_full_index_cache
mov eax, 0x4777
lea ecx, [ebp - 0x140]
call fcn.005064b0
push esi
mov ebx, eax
push str.wanted
push str._s___d_
mov esi, ebx
call fcn.00506600
push 0xfd
push str.minimum
push str._s___d_
call fcn.00506600
add esp, 0x18
lea esi, [ebp - 0x140]
call fcn.00506520
mov eax, dword [edi]
mov ecx, dword [edi + 8]
shl eax, 0xc
push eax
push 0
push ecx
call sub.MSVCR100.dll_memset
mov eax, dword [edi]
lea edx, [eax + eax*2]
mov eax, dword [edi + 4]
shl edx, 4
push edx
push 0
push eax
call sub.MSVCR100.dll_memset
xor edx, edx
add esp, 0x18
cmp dword [edi], edx
jle 0x51c7de
xor eax, eax
xor esi, esi
mov edi, edi
mov ecx, dword [edi + 4]
add ecx, eax
mov dword [ecx], ecx
mov ecx, dword [edi + 8]
mov ebx, dword [edi + 4]
add ecx, esi
mov dword [ebx + eax + 0x14], ecx
mov ecx, dword [edi + 4]
test edx, edx
jle 0x51c7a4
lea ebx, [ecx + eax - 0x30]
mov dword [ecx + eax + 0x10], ebx
jmp 0x51c7b0
add ecx, eax
mov dword [edi + 0x10], ecx
mov dword [ecx + 0x10], 0
mov ecx, dword [edi]
dec ecx
cmp edx, ecx
mov ecx, dword [edi + 4]
jge 0x51c7c4
lea ebx, [ecx + eax + 0x30]
mov dword [ecx + eax + 0xc], ebx
jmp 0x51c7d0
add ecx, eax
mov dword [edi + 0xc], ecx
mov dword [ecx + 0xc], 0
inc edx
add esi, 0x1000
add eax, 0x30
cmp edx, dword [edi]
jl 0x51c780
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop edi
call fcn.00596083
mov esp, ebp
pop ebp
ret
push str.unable_to_allocate_minimum_index_cache
mov eax, 0x4776
lea ecx, [ebp - 0x140]
call fcn.005064b0
push esi
mov edi, eax
push str.wanted
push str._s___d_
mov esi, edi
call fcn.00506600
push 0xfd
push str.minimum
push str._s___d_
call fcn.00506600
add esp, 0x18
lea esi, [ebp - 0x140]
call fcn.00506520
push 1
call dword [sym.imp.MSVCR100.dll_exit]
int3