Function at 0x604400
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov ebx, ecx
mov eax, dword [0x7a9040]
xor eax, ebp
mov dword [esp + 0x88], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax]
mov ecx, dword [ecx]
test eax, eax
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ecx
mov dword [esp + 0x24], eax
jne 0x604650
mov edx, dword [ebx + 8]
cmp edx, 0x3ffffff1
jae 0x60513e
lea esi, [edx + 0x17]
and esi, 0x7ffffff8
cmp esi, 0x11
jb 0x6050c6
cmp esi, dword [ecx + 0x10]
ja 0x6050c6
mov dword [esp + 0x18], edx
mov eax, dword [ebx + 4]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x28]
mov dl, byte [ecx + 0x1c]
test dl, 1
jne 0x605154
mov edi, dword [ecx + 4]
mov edx, dword [edi + 0x24]
test dl, 1
jne 0x605145
mov dword [esp + 0x14], 0x739968
mov dword [esp + 0x10], esi
add esi, eax
mov ebx, dword [ecx + 0xc]
cmp esi, ebx
ja 0x605118
cmp eax, 0x40
jb 0x605149
mov edx, eax
and edx, 7
jne 0x605149
mov edx, eax
add edx, 0x10
jb 0x605149
cmp edx, ebx
ja 0x605149
mov edx, edi
add edx, eax
mov dword [esp + 0x20], edx
je 0x605149
mov ecx, dword [ecx + 0x10]
mov dword [esp + 8], eax
xor edx, edx
div ecx
sub ecx, edx
mov eax, ecx
sub eax, dword [esp + 0x10]
jb 0x60517d
cmp eax, 0x17
jbe 0x6050b1
mov eax, dword [esp + 8]
lock cmpxchg dword [edi + 0x28], esi
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0x20]
jne 0x604dc9
mov dword [esp + 8], eax
cmp dword [edi], 0
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jne 0x605149
cmp dword [edi + 4], 0
jne 0x605149
mov eax, dword [edi + 8]
test eax, eax
jne 0x605149
mov eax, dword [edi + 0xc]
test eax, eax
jne 0x605149
mov eax, dword [ecx + 0x14]
lea edx, [edi + eax]
add edx, 0xf
neg eax
and eax, edx
lea edx, [edi + esi]
cmp edx, eax
ja 0x604da6
mov dword [edi], esi
mov dword [edi + 4], 0xc8799269
mov eax, dword [esp + 0x1c]
mov dword [edi + 8], eax
mov edx, dword [esp + 8]
test edx, edx
je 0x605154
mov esi, dword [ecx + 0x20]
test esi, esi
jne 0x6056e3
mov ecx, dword [ebx + 0x10]
xor eax, eax
lock cmpxchg dword [ecx], edx
mov ecx, dword [ebx]
mov dword [esp + 4], ecx
jne 0x605701
mov dword [esp + 8], edx
cmp edx, 0x40
jb 0x60465f
mov eax, dword [esp + 8]
and eax, 7
jne 0x60465f
mov eax, dword [ebx + 8]
lea edi, [eax + 0x10]
mov ecx, dword [esp + 8]
add ecx, edi
jb 0x60465f
mov edx, dword [esp + 4]
mov esi, dword [edx + 0xc]
cmp ecx, esi
ja 0x60465f
mov edx, dword [ebx + 4]
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 4]
mov ebx, dword [esp + 8]
mov ebx, dword [ecx + ebx + 4]
cmp ebx, 0xc8799269
mov ebx, dword [esp + 0xc]
jne 0x60465f
add ecx, dword [esp + 8]
mov ebx, dword [ecx]
cmp ebx, edi
mov ebx, dword [esp + 0xc]
jb 0x60465f
mov edi, dword [ecx]
add edi, dword [esp + 8]
jb 0x60465f
cmp edi, esi
ja 0x60465f
test edx, edx
je 0x60461e
mov esi, dword [ecx + 8]
cmp esi, edx
jne 0x60465f
test ecx, ecx
je 0x60465f
add ecx, 0x10
je 0x60465f
mov edx, dword [ebx + 0xc]
sub eax, edx
add ecx, edx
mov esi, dword [ebp + 8]
mov dword [esi], ecx
mov dword [esi + 4], eax
mov ecx, dword [esp + 0x88]
xor ecx, ebp
call fcn.00650d60
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4
mov dword [esp + 0x14], 0x739968
mov edx, eax
jmp 0x6045a0
mov dword [esp + 0x48], 0xffffffff
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x24]
xor edx, edx
test al, 2
mov esi, 0x739968
mov edi, 0x739963
cmovne esi, edi
sete dl
or edx, 4
mov eax, dword [0x7ad2c4]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [0x7bebf4]
cmp ecx, dword [eax + 4]
jg 0x604fe5
lea ecx, [esp + 0x48]
push edx
push esi
push dword [0x7bebf0]
call fcn.005f7030
mov dword [esp + 0x3c], 0xffffffff
mov ecx, dword [ebx]
mov al, byte [ecx + 0x1c]
test al, 1
jne 0x6046de
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x24]
mov edi, 0x739968
test al, 1
jne 0x604db6
push edi
call fcn.0066e590
add esp, 4
mov esi, eax
mov eax, dword [0x7bebfc]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604de5
lea ecx, [esp + 0x3c]
push esi
push edi
push dword [0x7bebf8]
call fcn.005f7030
mov dword [esp + 0x80], 0xffffffff
mov eax, dword [ebx]
mov eax, dword [eax + 4]
lea esi, [esp + 0x70]
push dword [eax + 0x28]
push esi
call fcn.005dc3f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x60474b
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x604dc7
sete al
test esi, esi
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bec04]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604e25
lea ecx, [esp + 0x80]
push edi
push esi
push dword [0x7bec00]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x6047ab
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x30], 0xffffffff
mov eax, dword [ebx]
mov eax, dword [eax + 4]
lea esi, [esp + 0x70]
push dword [eax]
push esi
call fcn.005dc3f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x6047d7
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x604dc7
sete al
test esi, esi
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bec0c]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604e65
lea ecx, [esp + 0x30]
push edi
push esi
push dword [0x7bec08]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x604834
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x6c], 0xffffffff
lea esi, [esp + 0x70]
push dword [esp + 8]
push esi
call fcn.005dc3f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x60485d
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x604dc7
sete al
test esi, esi
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bec14]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604ea5
lea ecx, [esp + 0x6c]
push edi
push esi
push dword [0x7bec10]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x6048ba
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
xor ecx, ecx
cmp dword [esp + 0x24], 0
sete cl
mov eax, 0x739968
mov esi, 0x739963
cmove esi, eax
mov dword [esp + 0x68], 0xffffffff
or ecx, 4
mov edi, ecx
mov eax, dword [0x7bec1c]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604ee5
lea ecx, [esp + 0x68]
push edi
push esi
push dword [0x7bec18]
call fcn.005f7030
mov dword [esp + 0x64], 0xffffffff
mov edi, dword [esp + 0x14]
push edi
call fcn.0066e590
add esp, 4
mov esi, eax
mov eax, dword [0x7bec24]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604f25
lea ecx, [esp + 0x64]
push esi
push edi
push dword [0x7bec20]
call fcn.005f7030
mov dword [esp + 0x60], 0xffffffff
lea esi, [esp + 0x70]
push dword [ebx + 4]
push esi
call fcn.005dc3f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x604981
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x604dc7
sete al
test esi, esi
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bec2c]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604f65
lea ecx, [esp + 0x60]
push edi
push esi
push dword [0x7bec28]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x6049de
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x5c], 0xffffffff
lea esi, [esp + 0x70]
push dword [ebx + 8]
push esi
call fcn.005dc3f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x604a06
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x604dc7
sete al
test esi, esi
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bec34]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x604fa5
lea ecx, [esp + 0x5c]
push edi
push esi
push dword [0x7bec30]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x604a63
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
cmp dword [esp + 8], 0xc8799269
jne 0x604cf5
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [ebx + 0x10]
lea esi, [eax - 4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x7b4788]
bt edx, ecx
jae 0x604d89
push 4
push esi
push eax
call fcn.005462d0
add esp, 0xc
mov ecx, esi
shr ecx, 0xe
mov edx, esi
shr edx, 0x13
mov eax, dword [edx*4 + 0x7b4788]
bt eax, ecx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
jae 0x604cb4
push esi
call fcn.00545e50
add esp, 4
lea edi, [esp + 0x70]
push dword [esi]
push edi
call fcn.005dc3f0
add esp, 8
movsx ebx, byte [edi + 0xb]
test ebx, ebx
jns 0x604aef
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
test ebx, ebx
js 0x604dc7
sete al
test edi, edi
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bec3c]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x605031
lea ecx, [esp + 0x58]
push ebx
push edi
push dword [0x7bec38]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x604b4c
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov eax, dword [esp + 4]
mov eax, dword [eax*4 + 0x7b4788]
mov ecx, dword [esp + 8]
bt eax, ecx
mov edi, dword [esp + 0xc]
jae 0x604b6d
push esi
call fcn.00545f70
add esp, 4
mov dword [esp + 0x54], 0xffffffff
mov eax, dword [edi + 0x10]
lea esi, [eax + 4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x7b4788]
bt edx, ecx
jae 0x604cd6
push 4
push esi
push eax
call fcn.005462d0
add esp, 0xc
mov ecx, esi
shr ecx, 0xe
mov eax, esi
shr eax, 0x13
mov dword [esp + 4], eax
mov eax, dword [eax*4 + 0x7b4788]
mov dword [esp + 8], ecx
bt eax, ecx
jae 0x604cc5
push esi
call fcn.00545e50
add esp, 4
lea edi, [esp + 0x70]
push dword [esi]
push edi
call fcn.005dc3f0
add esp, 8
movsx ebx, byte [edi + 0xb]
test ebx, ebx
jns 0x604beb
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
test ebx, ebx
js 0x604dc7
sete al
test edi, edi
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bec44]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x605071
lea ecx, [esp + 0x54]
push ebx
push edi
push dword [0x7bec40]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x604c48
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov eax, dword [esp + 4]
mov eax, dword [eax*4 + 0x7b4788]
mov ecx, dword [esp + 8]
bt eax, ecx
jae 0x604c65
push esi
call fcn.00545f70
add esp, 4
lea edi, [esp + 0x70]
push 0x543
push str....._basemetricspersistent_memory_allocator.cc
push str.GetUntyped
push edi
call fcn.005e4620
add esp, 0x10
lea esi, [esp + 0x2c]
push edi
push esi
call fcn.006a7d40
add esp, 8
mov ecx, esi
call fcn.006a7dc0
xor eax, eax
mov esi, dword [ebp + 8]
mov dword [esi + 4], eax
mov dword [esi], eax
lea ecx, [esp + 0x54]
call fcn.005f7090
lea ecx, [esp + 0x58]
call fcn.005f7090
jmp 0x604d30
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x7bc788], 1
jmp 0x604ad0
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x7bc788], 1
jmp 0x604bcc
mov eax, esi
shr eax, 0xe
mov ecx, esi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x7b4788]
bt ecx, eax
jae 0x604ba1
jmp 0x60578b
lea edi, [esp + 0x70]
push 0x549
push str....._basemetricspersistent_memory_allocator.cc
push str.GetUntyped
push edi
call fcn.005e4620
add esp, 0x10
lea esi, [esp + 0x28]
push edi
push esi
call fcn.006a7d40
add esp, 8
mov ecx, esi
call fcn.006a7dc0
xor eax, eax
mov esi, dword [ebp + 8]
mov dword [esi + 4], eax
mov dword [esi], eax
lea ecx, [esp + 0x5c]
call fcn.005f7090
lea ecx, [esp + 0x60]
call fcn.005f7090
lea ecx, [esp + 0x64]
call fcn.005f7090
lea ecx, [esp + 0x68]
call fcn.005f7090
lea ecx, [esp + 0x6c]
call fcn.005f7090
lea ecx, [esp + 0x30]
call fcn.005f7090
lea ecx, [esp + 0x80]
call fcn.005f7090
lea ecx, [esp + 0x3c]
call fcn.005f7090
lea ecx, [esp + 0x48]
call fcn.005f7090
jmp 0x604636
mov eax, esi
shr eax, 0xe
mov ecx, esi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x7b4788]
bt ecx, eax
jae 0x604aa5
int3
mov byte [eax], 0
add eax, dword [ecx + 0x14]
cmp eax, edx
jae 0x604564
jmp 0x604da6
push 0
call fcn.006ce590
mov edi, 0x739963
jmp 0x6046de
ud2
mov esi, eax
mov ecx, dword [esp + 4]
mov al, byte [ecx + 0x1c]
test al, 1
mov eax, esi
mov esi, dword [esp + 0x10]
je 0x604481
jmp 0x605154
push 0x7bebfc
call fcn.00650831
add esp, 4
cmp dword [0x7bebfc], 0xffffffff
jne 0x60470a
push 0x20
push str.PersistentMemoryAllocator_corrupted
call fcn.00557b50
add esp, 8
mov dword [0x7bebf8], eax
push 0x7bebfc
call fcn.006508ab
add esp, 4
jmp 0x60470a
push 0x7bec04
call fcn.00650831
add esp, 4
cmp dword [0x7bec04], 0xffffffff
jne 0x604784
push 0x20
push str.PersistentMemoryAllocator_freeptr
call fcn.00557b50
add esp, 8
mov dword [0x7bec00], eax
push 0x7bec04
call fcn.006508ab
add esp, 4
jmp 0x604784
push 0x7bec0c
call fcn.00650831
add esp, 4
cmp dword [0x7bec0c], 0xffffffff
jne 0x604810
push 0x20
push str.PersistentMemoryAllocator_cookie
call fcn.00557b50
add esp, 8
mov dword [0x7bec08], eax
push 0x7bec0c
call fcn.006508ab
add esp, 4
jmp 0x604810
push 0x7bec14
call fcn.00650831
add esp, 4
cmp dword [0x7bec14], 0xffffffff
jne 0x604896
push 0x20
push str.PersistentMemoryAllocator_ref
call fcn.00557b50
add esp, 8
mov dword [0x7bec10], eax
push 0x7bec14
call fcn.006508ab
add esp, 4
jmp 0x604896
push 0x7bec1c
call fcn.00650831
add esp, 4
cmp dword [0x7bec1c], 0xffffffff
jne 0x6048ff
push 0x20
push str.PersistentMemoryAllocator_ref_found
call fcn.00557b50
add esp, 8
mov dword [0x7bec18], eax
push 0x7bec1c
call fcn.006508ab
add esp, 4
jmp 0x6048ff
push 0x7bec24
call fcn.00650831
add esp, 4
cmp dword [0x7bec24], 0xffffffff
jne 0x604948
push 0x20
push str.PersistentMemoryAllocator_raced
call fcn.00557b50
add esp, 8
mov dword [0x7bec20], eax
push 0x7bec24
call fcn.006508ab
add esp, 4
jmp 0x604948
push 0x7bec2c
call fcn.00650831
add esp, 4
cmp dword [0x7bec2c], 0xffffffff
jne 0x6049ba
push 0x20
push str.PersistentMemoryAllocator_type_
call fcn.00557b50
add esp, 8
mov dword [0x7bec28], eax
push 0x7bec2c
call fcn.006508ab
add esp, 4
jmp 0x6049ba
push 0x7bec34
call fcn.00650831
add esp, 4
cmp dword [0x7bec34], 0xffffffff
jne 0x604a3f
push 0x20
push str.PersistentMemoryAllocator_size_
call fcn.00557b50
add esp, 8
mov dword [0x7bec30], eax
push 0x7bec34
call fcn.006508ab
add esp, 4
jmp 0x604a3f
push 0x7bebf4
mov dword [esp + 8], edx
call fcn.00650831
mov edx, dword [esp + 8]
add esp, 4
cmp dword [0x7bebf4], 0xffffffff
jne 0x6046a9
push 0x20
push str.PersistentMemoryAllocator_full
call fcn.00557b50
add esp, 8
mov dword [0x7bebf0], eax
push 0x7bebf4
call fcn.006508ab
mov edx, dword [esp + 8]
add esp, 4
jmp 0x6046a9
push 0x7bec3c
call fcn.00650831
add esp, 4
cmp dword [0x7bec3c], 0xffffffff
jne 0x604b28
push 0x20
push str.PersistentMemoryAllocator_ref_before
call fcn.00557b50
add esp, 8
mov dword [0x7bec38], eax
push 0x7bec3c
call fcn.006508ab
add esp, 4
jmp 0x604b28
push 0x7bec44
call fcn.00650831
add esp, 4
cmp dword [0x7bec44], 0xffffffff
jne 0x604c24
push 0x20
push str.PersistentMemoryAllocator_ref_after
call fcn.00557b50
add esp, 8
mov dword [0x7bec40], eax
push 0x7bec44
call fcn.006508ab
add esp, 4
jmp 0x604c24
mov eax, dword [esp + 8]
lea esi, [ecx + eax]
mov dword [esp + 0x10], ecx
cmp esi, ebx
jbe 0x604500
jmp 0x60512d
mov dword [esp + 0x84], 0x14
mov dword [esp + 0x80], 0x1dd76000
lea esi, [esp + 0x70]
push 0x2a1
push str....._basemetricspersistent_memory_allocator.cc
push str.AllocateImpl
push esi
call fcn.005e4620
add esp, 4
movsd xmm0, qword [esp + 0x8c]
movsd qword [esp + 4], xmm0
mov dword [esp], esi
call fcn.006a7220
mov ecx, dword [esp + 0x10]
add esp, 0xc
jmp 0x605154
mov eax, dword [edi + 0x24]
mov ecx, dword [esp + 4]
mov edx, eax
or edx, 2
lock cmpxchg dword [edi + 0x24], edx
jne 0x60511f
jmp 0x605154
mov esi, dword [esp + 4]
mov ecx, esi
push 1
call fcn.006ce590
mov ecx, esi
jmp 0x605154
call fcn.006a7ec0
jmp 0x605150
push 0
jmp 0x60514b
push 1
call fcn.006ce590
mov ecx, dword [esp + 4]
mov esi, dword [ecx + 0x20]
test esi, esi
je 0x60516e
mov eax, dword [esi]
mov edi, dword [eax + 0x14]
mov ecx, edi
call dword [0x7a29f4]
mov ecx, esi
push 0
call edi
xor eax, eax
mov esi, dword [ebp + 8]
mov dword [esi + 4], eax
mov dword [esi], eax
jmp 0x604636
cmp ecx, 0x10
jbe 0x60512d
mov edi, ecx
mov dword [esp + 0x6c], 0xffffffff
lea esi, [esp + 0x70]
push ebx
push esi
call fcn.005dc3f0
add esp, 8
mov ebx, esi
movsx esi, byte [esi + 0xb]
test esi, esi
jns 0x6051ac
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebb4]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x60578e
lea ecx, [esp + 0x6c]
push esi
push ebx
push dword [0x7bebb0]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x605209
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x68], 0xffffffff
lea ebx, [esp + 0x70]
mov eax, dword [esp + 4]
push dword [eax + 0x10]
push ebx
call fcn.005dc3f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x605235
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebbc]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x6057ce
lea ecx, [esp + 0x68]
push esi
push ebx
push dword [0x7bebb8]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x605292
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x64], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 8]
push ebx
call fcn.005dc3f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x6052bb
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebc4]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x60580e
lea ecx, [esp + 0x64]
push esi
push ebx
push dword [0x7bebc0]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x605318
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x60], 0xffffffff
lea ebx, [esp + 0x70]
push edi
push ebx
call fcn.005dc3f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x60533e
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebcc]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x60584e
lea ecx, [esp + 0x60]
push esi
push ebx
push dword [0x7bebc8]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x60539b
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x5c], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 0x10]
push ebx
call fcn.005dc3f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x6053c4
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebd4]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x60588e
lea ecx, [esp + 0x5c]
push esi
push ebx
push dword [0x7bebd0]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x605421
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x58], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 0x18]
push ebx
call fcn.005dc3f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x60544a
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebdc]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x6058ce
lea ecx, [esp + 0x58]
push esi
push ebx
push dword [0x7bebd8]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x6054a7
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
mov dword [esp + 0x54], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 0x1c]
push ebx
call fcn.005dc3f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x6054d0
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebe4]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x60590e
lea ecx, [esp + 0x54]
push esi
push ebx
push dword [0x7bebe0]
call fcn.005f7030
cmp byte [esp + 0x7b], 0
jns 0x60552d
push dword [esp + 0x70]
call fcn.006507ee
add esp, 4
xor eax, eax
dec eax
lea ebx, [esp + 0x48]
mov dword [ebx], eax
mov dword [ebx + 4], eax
mov dword [ebx + 8], eax
mov ecx, ebx
push 0x78c163
call fcn.005b8140
call fcn.006029f0
test eax, eax
je 0x6055b7
mov esi, eax
mov ecx, eax
call fcn.006cd610
test al, al
je 0x6055b7
mov ecx, esi
call fcn.006cd600
lea esi, [esp + 0x3c]
mov ecx, eax
push esi
call fcn.005e6390
lea eax, [esp + 0x70]
mov ecx, esi
push eax
call fcn.0053e710
cmp byte [esp + 0x53], 0
jns 0x605590
push dword [esp + 0x48]
call fcn.006507ee
add esp, 4
mov eax, dword [esp + 0x78]
mov dword [esp + 0x50], eax
movsd xmm0, qword [esp + 0x70]
movsd qword [esp + 0x48], xmm0
xor eax, eax
mov byte [esp + 0x7b], al
mov byte [esp + 0x70], al
lea ecx, [esp + 0x3c]
call fcn.005e5500
mov dword [esp + 0x3c], 0xffffffff
movsx esi, byte [esp + 0x53]
test esi, esi
cmovs esi, dword [esp + 0x4c]
cmovs ebx, dword [esp + 0x48]
test esi, esi
js 0x604dc7
sete al
test ebx, ebx
setne cl
or cl, al
je 0x604dc7
mov eax, dword [0x7bebec]
mov ecx, dword [0x7ad2c4]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x60594e
lea ecx, [esp + 0x3c]
push esi
push ebx
push dword [0x7bebe8]
call fcn.005f7030
mov dword [esp + 0x34], 0x14
mov dword [esp + 0x30], 0x1dd76000
lea esi, [esp + 0x70]
push 0x2e6
push str....._basemetricspersistent_memory_allocator.cc
push str.AllocateImpl
push esi
call fcn.005e4620
add esp, 4
movsd xmm0, qword [esp + 0x3c]
movsd qword [esp + 4], xmm0
mov dword [esp], esi
call fcn.006a7220
add esp, 0xc
mov esi, dword [esp + 8]
lea ecx, [edi + esi]
mov eax, dword [esp + 4]
mov edx, dword [eax + 4]
mov eax, esi
lock cmpxchg dword [edx + 0x28], ecx
mov esi, eax
jne 0x605683
mov eax, dword [esp + 0x20]
mov dword [eax], edi
mov dword [eax + 4], 0x4b594f52
lea ecx, [esp + 0x3c]
call fcn.005f7090
cmp byte [esp + 0x53], 0
jns 0x60569f
push dword [esp + 0x48]
call fcn.006507ee
add esp, 4
lea ecx, [esp + 0x54]
call fcn.005f7090
lea ecx, [esp + 0x58]
call fcn.005f7090
lea ecx, [esp + 0x5c]
call fcn.005f7090
lea ecx, [esp + 0x60]
call fcn.005f7090
lea ecx, [esp + 0x64]
call fcn.005f7090
lea ecx, [esp + 0x68]
call fcn.005f7090
lea ecx, [esp + 0x6c]
call fcn.005f7090
jmp 0x604dcb
mov eax, dword [esi]
mov edi, dword [eax + 0x14]
mov ecx, edi
call dword [0x7a29f4]
mov ecx, esi
push dword [esp + 0x18]
call edi
mov edx, dword [esp + 8]
jmp 0x60458b
mov edi, eax
cmp edx, 0x40
setb al
test dl, 7
setne cl
mov dword [esp + 0x14], 0x739963
or cl, al
jne 0x605758
mov eax, dword [esp + 8]
add eax, 0x10
jb 0x605758
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 0xc]
cmp eax, ecx
ja 0x605758
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
mov edx, dword [esp + 4]
mov edx, dword [edx + 4]
mov esi, dword [esp + 8]
mov esi, dword [edx + esi + 4]
cmp esi, 0xc8799269
jne 0x605758
add edx, dword [esp + 8]
mov esi, dword [edx]
cmp esi, 0x10
jae 0x605763
mov ebx, dword [esp + 0xc]
mov edx, edi
jmp 0x6045a0
mov esi, dword [edx]
add esi, dword [esp + 8]
setb bl
test edx, edx
je 0x605758
test bl, bl
jne 0x605758
cmp esi, ecx
ja 0x605758
xor ecx, ecx
lock cmpxchg dword [edx + 8], ecx
mov ebx, dword [esp + 0xc]
mov eax, dword [ebx]
mov dword [esp + 4], eax
jmp 0x60575c
int3
push 0x7bebb4
call fcn.00650831
add esp, 4
cmp dword [0x7bebb4], 0xffffffff
jne 0x6051e5
push 0x20
push str.PersistentMemoryAllocator_mem_size_
call fcn.00557b50
add esp, 8
mov dword [0x7bebb0], eax
push 0x7bebb4
call fcn.006508ab
add esp, 4
jmp 0x6051e5
push 0x7bebbc
call fcn.00650831
add esp, 4
cmp dword [0x7bebbc], 0xffffffff
jne 0x60526e
push 0x20
push str.PersistentMemoryAllocator_mem_page_
call fcn.00557b50
add esp, 8
mov dword [0x7bebb8], eax
push 0x7bebbc
call fcn.006508ab
add esp, 4
jmp 0x60526e
push 0x7bebc4
call fcn.00650831
add esp, 4
cmp dword [0x7bebc4], 0xffffffff
jne 0x6052f4
push 0x20
push str.PersistentMemoryAllocator_freeptr
call fcn.00557b50
add esp, 8
mov dword [0x7bebc0], eax
push 0x7bebc4
call fcn.006508ab
add esp, 4
jmp 0x6052f4
push 0x7bebcc
call fcn.00650831
add esp, 4
cmp dword [0x7bebcc], 0xffffffff
jne 0x605377
push 0x20
push str.PersistentMemoryAllocator_page_free
call fcn.00557b50
add esp, 8
mov dword [0x7bebc8], eax
push 0x7bebcc
call fcn.006508ab
add esp, 4
jmp 0x605377
push 0x7bebd4
call fcn.00650831
add esp, 4
cmp dword [0x7bebd4], 0xffffffff
jne 0x6053fd
push 0x20
push str.PersistentMemoryAllocator_size
call fcn.00557b50
add esp, 8
mov dword [0x7bebd0], eax
push 0x7bebd4
call fcn.006508ab
add esp, 4
jmp 0x6053fd
push 0x7bebdc
call fcn.00650831
add esp, 4
cmp dword [0x7bebdc], 0xffffffff
jne 0x605483
push 0x20
push str.PersistentMemoryAllocator_req_size
call fcn.00557b50
add esp, 8
mov dword [0x7bebd8], eax
push 0x7bebdc
call fcn.006508ab
add esp, 4
jmp 0x605483
push 0x7bebe4
call fcn.00650831
add esp, 4
cmp dword [0x7bebe4], 0xffffffff
jne 0x605509
push 0x20
push str.PersistentMemoryAllocator_type_id
call fcn.00557b50
add esp, 8
mov dword [0x7bebe0], eax
push 0x7bebe4
call fcn.006508ab
add esp, 4
jmp 0x605509
push 0x7bebec
call fcn.00650831
add esp, 4
cmp dword [0x7bebec], 0xffffffff
jne 0x605609
push 0x100
push str.PersistentMemoryAllocator_file_name
call fcn.00557b50
add esp, 8
mov dword [0x7bebe8], eax
push 0x7bebec
call fcn.006508ab
add esp, 4
jmp 0x605609