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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb0
mov edx, dword [ebp + 8]
mov eax, dword [0x557008]
xor eax, ebp
mov dword [esp + 0xa8], eax
cmp edx, 0x3ffffff1
mov dword [esp], ecx
jae 0x477abe
lea edi, [edx + 0x17]
and edi, 0xfffffff8
cmp edi, 0x11
jb 0x477ab3
cmp edi, dword [ecx + 0x10]
ja 0x477ab3
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x28]
mov dl, byte [ecx + 0x1c]
test dl, 1
jne 0x477a95
mov esi, dword [ecx + 4]
mov edx, dword [esi + 0x24]
test dl, 1
jne 0x477aba
mov dword [esp + 8], edi
add edi, eax
mov ebx, dword [ecx + 0xc]
cmp edi, ebx
ja 0x477b00
cmp eax, 0x40
jb 0x477a8b
mov edx, eax
and edx, 7
jne 0x477a8b
mov edx, eax
add edx, 0x10
jb 0x477a8b
cmp edx, ebx
ja 0x477a8b
mov edx, esi
add edx, eax
mov dword [esp + 0x10], edx
je 0x477a8b
mov dword [esp + 0x14], esi
mov esi, dword [ecx + 0x10]
mov ecx, eax
mov dword [esp + 0xc], eax
xor edx, edx
div esi
sub esi, edx
mov dword [esp + 4], esi
sub esi, dword [esp + 8]
jb 0x477b19
cmp esi, 0x17
mov edx, dword [esp + 0x14]
jbe 0x477ac5
mov eax, dword [esp + 0xc]
lock cmpxchg dword [edx + 0x28], edi
mov ecx, dword [esp]
jne 0x477a73
mov ebx, dword [esp + 0x10]
cmp dword [ebx], 0
mov esi, dword [esp + 8]
jne 0x477a8b
cmp dword [ebx + 4], 0
jne 0x477a8b
mov edi, eax
mov eax, dword [ebx + 8]
test eax, eax
jne 0x477a8b
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0x477a8b
mov eax, dword [ecx + 0x14]
lea edx, [ebx + eax]
add edx, 0xf
neg eax
and eax, edx
lea edx, [ebx + esi]
cmp edx, eax
ja 0x477a67
mov dword [ebx], esi
mov dword [ebx + 4], 0xc8799269
mov eax, dword [ebp + 0xc]
mov dword [ebx + 8], eax
mov eax, edi
test edi, edi
je 0x477a95
mov esi, dword [ecx + 0x20]
test esi, esi
jne 0x477aec
mov ecx, dword [esp + 0xa8]
xor ecx, ebp
call fcn.004a927c
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov byte [eax], 0
add eax, dword [ecx + 0x14]
cmp eax, edx
jae 0x477a2d
jmp 0x477a67
mov esi, eax
mov ecx, dword [esp]
mov al, byte [ecx + 0x1c]
test al, 1
mov eax, esi
mov edi, dword [esp + 8]
je 0x477959
jmp 0x477a95
push 1
call fcn.004f6a20
mov ecx, dword [esp]
mov esi, dword [ecx + 0x20]
xor edi, edi
test esi, esi
je 0x477a4d
mov eax, dword [esi]
mov ebx, dword [eax + 0x14]
mov ecx, ebx
call dword [section..00cfg]
mov ecx, esi
push 0
call ebx
jmp 0x477a4d
call fcn.004f1650
jmp 0x477a92
push 0
jmp 0x477a8d
call fcn.004f1650
jmp 0x477a92
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 4]
lea edi, [ecx + eax]
mov dword [esp + 8], ecx
cmp edi, ebx
jbe 0x4779dc
mov esi, dword [esp]
mov ecx, esi
push 1
call fcn.004f6a20
mov ecx, esi
jmp 0x477a95
mov eax, dword [esi]
mov ebx, dword [eax + 0x14]
mov ecx, ebx
call dword [section..00cfg]
mov ecx, esi
push dword [ebp + 8]
jmp 0x477aaf
mov edi, esi
mov eax, dword [esi + 0x24]
mov ecx, dword [esp]
mov edx, eax
or edx, 2
lock cmpxchg dword [edi + 0x24], edx
jne 0x477b08
jmp 0x477a95
cmp dword [esp + 4], 0x10
jbe 0x477adc
mov dword [esp + 0xa4], 0xffffffff
lea edi, [esp + 0x18]
push ebx
push edi
call fcn.004747e0
add esp, 8
movzx eax, byte [edi + 0xb]
test al, al
js 0x477b46
and eax, 0x7f
jmp 0x477b4e
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x9c]
push eax
push edi
call fcn.0045c520
mov eax, dword [0x56b688]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4780b3
lea ecx, [esp + 0xa4]
push dword [esp + 0xa0]
push dword [esp + 0xa0]
push dword [0x56b684]
call fcn.00475ec0
cmp byte [esp + 0x23], 0
jns 0x477bb0
push dword [esp + 0x18]
call fcn.004a8b10
add esp, 4
mov dword [esp + 0x98], 0xffffffff
lea edi, [esp + 0x18]
mov eax, dword [esp]
push dword [eax + 0x10]
push edi
call fcn.004747e0
add esp, 8
movzx eax, byte [edi + 0xb]
test al, al
js 0x477bdb
and eax, 0x7f
jmp 0x477be3
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x90]
push eax
push edi
call fcn.0045c520
mov eax, dword [0x56b690]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4780f3
lea ecx, [esp + 0x98]
push dword [esp + 0x94]
push dword [esp + 0x94]
push dword [0x56b68c]
call fcn.00475ec0
cmp byte [esp + 0x23], 0
jns 0x477c45
push dword [esp + 0x18]
call fcn.004a8b10
add esp, 4
mov dword [esp + 0x8c], 0xffffffff
lea edi, [esp + 0x18]
push dword [esp + 0xc]
push edi
call fcn.004747e0
add esp, 8
movzx eax, byte [edi + 0xb]
test al, al
js 0x477c6e
and eax, 0x7f
jmp 0x477c76
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x84]
push eax
push edi
call fcn.0045c520
mov eax, dword [0x56b698]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x478133
lea ecx, [esp + 0x8c]
push dword [esp + 0x88]
push dword [esp + 0x88]
push dword [0x56b694]
call fcn.00475ec0
cmp byte [esp + 0x23], 0
jns 0x477cd8
push dword [esp + 0x18]
call fcn.004a8b10
add esp, 4
mov dword [esp + 0x80], 0xffffffff
lea edi, [esp + 0x18]
push dword [esp + 4]
push edi
call fcn.004747e0
add esp, 8
movzx eax, byte [edi + 0xb]
test al, al
js 0x477d01
and eax, 0x7f
jmp 0x477d09
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x78]
push eax
push edi
call fcn.0045c520
mov eax, dword [0x56b6a0]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x478173
lea ecx, [esp + 0x80]
push dword [esp + 0x7c]
push dword [esp + 0x7c]
push dword [0x56b69c]
call fcn.00475ec0
cmp byte [esp + 0x23], 0
jns 0x477d62
push dword [esp + 0x18]
call fcn.004a8b10
add esp, 4
mov dword [esp + 0x74], 0xffffffff
lea edi, [esp + 0x18]
push dword [esp + 8]
push edi
call fcn.004747e0
add esp, 8
movzx eax, byte [edi + 0xb]
test al, al
jns 0x477d8d
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
jmp 0x477d90
and eax, 0x7f
lea ecx, [esp + 0x6c]
push eax
push edi
call fcn.0045c520
mov eax, dword [0x56b6a8]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4781b3
lea ecx, [esp + 0x74]
push dword [esp + 0x70]
push dword [esp + 0x70]
push dword [0x56b6a4]
call fcn.00475ec0
cmp byte [esp + 0x23], 0
jns 0x477de6
push dword [esp + 0x18]
call fcn.004a8b10
add esp, 4
mov dword [esp + 0x68], 0xffffffff
lea edi, [esp + 0x18]
push dword [ebp + 8]
push edi
call fcn.004747e0
add esp, 8
movzx eax, byte [edi + 0xb]
test al, al
jns 0x477e10
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
jmp 0x477e13
and eax, 0x7f
lea ecx, [esp + 0x60]
push eax
push edi
call fcn.0045c520
mov eax, dword [0x56b6b0]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4781f3
lea ecx, [esp + 0x68]
push dword [esp + 0x64]
push dword [esp + 0x64]
push dword [0x56b6ac]
call fcn.00475ec0
cmp byte [esp + 0x23], 0
jns 0x477e69
push dword [esp + 0x18]
call fcn.004a8b10
add esp, 4
mov dword [esp + 0x5c], 0xffffffff
lea edi, [esp + 0x18]
push dword [ebp + 0xc]
push edi
call fcn.004747e0
add esp, 8
movzx eax, byte [edi + 0xb]
test al, al
js 0x477e8e
and eax, 0x7f
jmp 0x477e96
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x54]
push eax
push edi
call fcn.0045c520
mov eax, dword [0x56b6b8]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x478233
lea ecx, [esp + 0x5c]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [0x56b6b4]
call fcn.00475ec0
cmp byte [esp + 0x23], 0
jns 0x477eec
push dword [esp + 0x18]
call fcn.004a8b10
add esp, 4
xor eax, eax
dec eax
lea esi, [esp + 0x48]
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov ecx, esi
push 0x5478ef
call fcn.004d55d0
call fcn.0047fee0
test eax, eax
je 0x477f76
mov edi, eax
mov ecx, eax
call fcn.00515a60
test al, al
je 0x477f76
mov ecx, edi
call fcn.00515a50
lea edi, [esp + 0x3c]
mov ecx, eax
push edi
call fcn.0046f570
lea eax, [esp + 0x18]
mov ecx, edi
push eax
call fcn.0042c770
cmp byte [esp + 0x53], 0
jns 0x477f4f
push dword [esp + 0x48]
call fcn.004a8b10
add esp, 4
mov eax, dword [esp + 0x20]
mov dword [esp + 0x50], eax
movsd xmm0, qword [esp + 0x18]
movsd qword [esp + 0x48], xmm0
xor eax, eax
mov byte [esp + 0x23], al
mov byte [esp + 0x18], al
lea ecx, [esp + 0x3c]
call fcn.0046e900
movzx eax, byte [esp + 0x53]
mov edx, eax
and edx, 0x7f
test al, al
cmovs edx, dword [esp + 0x4c]
mov dword [esp + 0x3c], 0xffffffff
cmovs esi, dword [esp + 0x48]
lea ecx, [esp + 0x34]
push edx
push esi
call fcn.0045c520
mov eax, dword [0x56b6c0]
mov ecx, dword [0x55ae20]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x478273
lea ecx, [esp + 0x3c]
push dword [esp + 0x38]
push dword [esp + 0x38]
push dword [0x56b6bc]
call fcn.00475ec0
mov dword [esp + 0x2c], 0x14
mov dword [esp + 0x28], 0x1dd76000
lea edi, [esp + 0x18]
push 0x2d6
push str....._basemetricspersistent_memory_allocator.cc
push str.AllocateImpl
push edi
call fcn.0046e4d0
add esp, 4
movsd xmm0, qword [esp + 0x34]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
call fcn.004f6c50
add esp, 0xc
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 4]
lea ecx, [eax + esi]
mov eax, dword [esp]
mov edx, dword [eax + 4]
mov eax, esi
lock cmpxchg dword [edx + 0x28], ecx
mov esi, eax
jne 0x478047
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 4]
mov dword [eax], ecx
mov dword [eax + 4], 0x4b594f52
lea ecx, [esp + 0x3c]
call fcn.00475f40
cmp byte [esp + 0x53], 0
jns 0x478063
push dword [esp + 0x48]
call fcn.004a8b10
add esp, 4
lea ecx, [esp + 0x5c]
call fcn.00475f40
lea ecx, [esp + 0x68]
call fcn.00475f40
lea ecx, [esp + 0x74]
call fcn.00475f40
lea ecx, [esp + 0x80]
call fcn.00475f40
lea ecx, [esp + 0x8c]
call fcn.00475f40
lea ecx, [esp + 0x98]
call fcn.00475f40
lea ecx, [esp + 0xa4]
call fcn.00475f40
jmp 0x477a75
push 0x56b688
call fcn.004a8b87
add esp, 4
cmp dword [0x56b688], 0xffffffff
jne 0x477b7d
push 0x20
push str.PersistentMemoryAllocator_mem_size_
call fcn.00438cd0
add esp, 8
mov dword [0x56b684], eax
push 0x56b688
call fcn.004a8bfd
add esp, 4
jmp 0x477b7d
push 0x56b690
call fcn.004a8b87
add esp, 4
cmp dword [0x56b690], 0xffffffff
jne 0x477c12
push 0x20
push str.PersistentMemoryAllocator_mem_page_
call fcn.00438cd0
add esp, 8
mov dword [0x56b68c], eax
push 0x56b690
call fcn.004a8bfd
add esp, 4
jmp 0x477c12
push 0x56b698
call fcn.004a8b87
add esp, 4
cmp dword [0x56b698], 0xffffffff
jne 0x477ca5
push 0x20
push str.PersistentMemoryAllocator_freeptr
call fcn.00438cd0
add esp, 8
mov dword [0x56b694], eax
push 0x56b698
call fcn.004a8bfd
add esp, 4
jmp 0x477ca5
push 0x56b6a0
call fcn.004a8b87
add esp, 4
cmp dword [0x56b6a0], 0xffffffff
jne 0x477d35
push 0x20
push str.PersistentMemoryAllocator_page_free
call fcn.00438cd0
add esp, 8
mov dword [0x56b69c], eax
push 0x56b6a0
call fcn.004a8bfd
add esp, 4
jmp 0x477d35
push 0x56b6a8
call fcn.004a8b87
add esp, 4
cmp dword [0x56b6a8], 0xffffffff
jne 0x477dbc
push 0x20
push str.PersistentMemoryAllocator_size
call fcn.00438cd0
add esp, 8
mov dword [0x56b6a4], eax
push 0x56b6a8
call fcn.004a8bfd
add esp, 4
jmp 0x477dbc
push 0x56b6b0
call fcn.004a8b87
add esp, 4
cmp dword [0x56b6b0], 0xffffffff
jne 0x477e3f
push 0x20
push str.PersistentMemoryAllocator_req_size
call fcn.00438cd0
add esp, 8
mov dword [0x56b6ac], eax
push 0x56b6b0
call fcn.004a8bfd
add esp, 4
jmp 0x477e3f
push 0x56b6b8
call fcn.004a8b87
add esp, 4
cmp dword [0x56b6b8], 0xffffffff
jne 0x477ec2
push 0x20
push str.PersistentMemoryAllocator_type_id
call fcn.00438cd0
add esp, 8
mov dword [0x56b6b4], eax
push 0x56b6b8
call fcn.004a8bfd
add esp, 4
jmp 0x477ec2
push 0x56b6c0
call fcn.004a8b87
add esp, 4
cmp dword [0x56b6c0], 0xffffffff
jne 0x477fc0
push 0x100
push str.PersistentMemoryAllocator_file_name
call fcn.00438cd0
add esp, 8
mov dword [0x56b6bc], eax
push 0x56b6c0
call fcn.004a8bfd
add esp, 4
jmp 0x477fc0