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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov ebx, dword [esp + 0x44]
mov esi, ecx
mov eax, dword [esp + 0x48]
mov ecx, dword [ecx + 0x14]
mov dword [esp + 0x1c], edx
test ebx, ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 4], eax
je 0x46a4cf
mov eax, dword [esp + 0x48]
mov dword [esp + 0x20], esi
mov dword [esp + 4], eax
jmp 0x46a0ad
call fcn.00442220
test ebx, ebx
je 0x46a4cf
cmp dword [esi + 0x10], 0
je 0x46a4cf
mov dword [esp + 0x14], 0xffffffff
lea eax, [ebx - 1]
cmp eax, dword [esi + 0xc]
jae 0x46a498
mov edi, esi
mov esi, dword [esi + 8]
mov edx, ebx
mov eax, ebx
shr edx, 3
mov ecx, eax
mov dword [esp + 8], eax
mov eax, 1
and cl, 7
shl eax, cl
movzx ecx, cl
movzx ebx, byte [esi + edx]
bt ebx, ecx
jb 0x46a4b0
mov ecx, dword [edi + 0x44]
cmp dword [ecx + 0x110], 0
jne 0x46a4cd
or al, bl
mov byte [esi + edx], al
mov eax, dword [esp + 4]
lea ebx, [eax - 1]
mov eax, dword [edi + 4]
push 0
lea ecx, [esp + 0x18]
push ecx
push dword [esp + 0x10]
push eax
call dword [eax + 0xcc]
add esp, 0x10
test eax, eax
mov esi, edi
jne 0x46a512
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x1c], 0
mov ebp, dword [eax + 4]
je 0x46a1c0
mov ecx, dword [esi]
mov edx, dword [ebp + 4]
mov dword [esp + 0x28], ebx
cmp byte [ecx + 0x11], 0
bswap edx
mov dword [esp + 0x10], edx
je 0x46a233
mov edx, dword [esp + 8]
lea eax, [esp + 0xc]
mov byte [esp + 3], 0xff
mov dword [esp + 0xc], 0xffffffff
push eax
lea eax, [esp + 7]
push eax
call fcn.00446e90
add esp, 8
test eax, eax
je 0x46a430
cmp eax, 0xc0a
je 0x46a193
cmp eax, 7
jne 0x46a19a
mov dword [esi + 0x18], 1
mov edi, dword [esp + 8]
push edi
push str.Failed_to_read_ptrmap_key_d
push esi
call fcn.0046a540
add esp, 0xc
mov ecx, dword [esi]
mov edx, dword [esp + 0x10]
jmp 0x46a237
test ebx, ebx
je 0x46a3c2
mov ecx, dword [esi]
cmp byte [ecx + 0x11], 0
je 0x46a3c2
mov edi, ebx
mov ebx, ebp
mov ebp, dword [ebp]
lea eax, [esp + 0xc]
mov byte [esp + 3], 0xff
mov dword [esp + 0xc], 0xffffffff
bswap ebp
mov edx, ebp
push eax
lea eax, [esp + 7]
push eax
call fcn.00446e90
add esp, 8
test eax, eax
je 0x46a464
cmp eax, 0xc0a
je 0x46a212
cmp eax, 7
jne 0x46a219
mov dword [esi + 0x18], 1
push ebp
push str.Failed_to_read_ptrmap_key_d
push esi
call fcn.0046a540
add esp, 0xc
mov ebp, ebx
mov dword [esp + 4], edi
jmp 0x46a3d0
mov edi, dword [esp + 8]
mov eax, dword [ecx + 0x28]
shr eax, 2
add eax, 0xfffffffe
cmp edx, eax
jbe 0x46a260
push edi
push str.freelist_leaf_count_too_big_on_page__d
push esi
call fcn.0046a540
add esp, 0xc
add dword [esp + 4], 0xfffffffe
jmp 0x46a3d0
test edx, edx
mov dword [esp + 0x18], ebp
jle 0x46a3b0
mov eax, dword [esp + 0x18]
lea ebp, [eax + 0xb]
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 8], eax
nop dword [eax]
movzx eax, byte [ebp - 3]
movzx edx, byte [ebp - 2]
movzx ebx, byte [ebp - 1]
shl eax, 0x18
shl edx, 0x10
shl ebx, 8
or edx, eax
or ebx, edx
movzx edx, byte [ebp]
or ebx, edx
cmp byte [ecx + 0x11], 0
mov dword [esp + 4], edx
je 0x46a2f4
lea eax, [esp + 0xc]
mov byte [esp + 3], 0xff
mov dword [esp + 0xc], 0xffffffff
mov edx, ebx
push eax
lea eax, [esp + 7]
push eax
call fcn.00446e90
add esp, 8
test eax, eax
je 0x46a37d
cmp eax, 0xc0a
je 0x46a2de
cmp eax, 7
jne 0x46a2e5
mov dword [esi + 0x18], 1
push ebx
push str.Failed_to_read_ptrmap_key_d
push esi
call fcn.0046a540
add esp, 0xc
lea eax, [ebx - 1]
cmp eax, dword [esi + 0xc]
jae 0x46a330
mov eax, dword [esi + 8]
mov ecx, dword [esp + 4]
mov edx, ebx
shr edx, 3
movzx edi, byte [eax + edx]
mov dword [esp + 0x2c], eax
and cl, 7
mov eax, 1
shl eax, cl
movzx ecx, cl
bt edi, ecx
jae 0x46a35a
push ebx
push str.2nd_reference_to_page__d
jmp 0x46a336
push ebx
push str.invalid_page_number__d
push esi
call fcn.0046a540
add esp, 0xc
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0x20]
test ebx, ebx
je 0x46a3b0
mov ecx, dword [esi]
dec ebx
add ebp, 4
mov dword [esp + 8], ebx
jmp 0x46a280
mov esi, dword [esi + 0x44]
mov ecx, edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 4], ecx
cmp dword [esi + 0x110], 0
mov ebx, dword [esp + 8]
jne 0x46a343
or al, byte [esp + 4]
mov byte [edi + edx], al
jmp 0x46a343
movzx eax, byte [esp + 3]
mov ecx, dword [esp + 0xc]
cmp eax, 2
jne 0x46a393
test ecx, ecx
je 0x46a2f4
push ecx
push eax
push 0
push 2
push ebx
push str.Bad_ptr_map_entry_key_d_expected__d__d__got__d__d_
push esi
call fcn.0046a540
add esp, 0x1c
jmp 0x46a2f4
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
sub eax, dword [esp + 0x10]
mov dword [esp + 4], eax
jmp 0x46a3d0
mov dword [esp + 4], ebx
nop word cs:[eax + eax]
mov ebx, dword [ebp]
mov ecx, dword [esp + 0x14]
bswap ebx
test ecx, ecx
je 0x46a0a5
test byte [ecx + 0x1c], 0x20
je 0x46a0a0
mov esi, dword [ecx + 0x14]
dec dword [esi + 0x78]
mov eax, dword [esi + 0x88]
mov dword [ecx + 0x10], eax
mov dword [esi + 0x88], ecx
mov ebp, dword [ecx + 0x18]
mov edi, dword [esi + 0x98]
mov esi, dword [esi + 0x3c]
dec ebp
mov eax, ebp
mul edi
sar edi, 0x1f
imul edi, ebp
add edx, edi
mov edi, dword [esi]
push dword [ecx + 4]
push edx
push eax
push esi
mov esi, dword [esp + 0x30]
call dword [edi + 0x48]
add esp, 0x10
jmp 0x46a0a5
movzx eax, byte [esp + 3]
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 8]
cmp eax, 2
jne 0x46a44a
test ecx, ecx
je 0x46a1ad
push ecx
push eax
push 0
push 2
push edi
push str.Bad_ptr_map_entry_key_d_expected__d__d__got__d__d_
push esi
call fcn.0046a540
add esp, 0x1c
jmp 0x46a1ad
movzx eax, byte [esp + 3]
mov ecx, dword [esp + 0xc]
cmp eax, 4
jne 0x46a47c
cmp ecx, dword [esp + 8]
je 0x46a228
push ecx
push eax
push dword [esp + 0x10]
push 4
push ebp
push str.Bad_ptr_map_entry_key_d_expected__d__d__got__d__d_
push esi
call fcn.0046a540
add esp, 0x1c
jmp 0x46a228
push ebx
push str.invalid_page_number__d
push esi
call fcn.0046a540
add esp, 0xc
cmp dword [esp + 4], 0
jne 0x46a4d6
jmp 0x46a50a
push dword [esp + 8]
push str.2nd_reference_to_page__d
push edi
call fcn.0046a540
add esp, 0xc
mov esi, edi
cmp dword [esp + 4], 0
jne 0x46a4d6
jmp 0x46a50a
mov esi, edi
cmp dword [esp + 4], 0
je 0x46a50a
mov eax, dword [esp + 0x24]
cmp eax, dword [esi + 0x14]
jne 0x46a50a
cmp dword [esp + 0x1c], 0
mov eax, str.overflow_list_length
mov ecx, str.size
cmove ecx, eax
mov eax, dword [esp + 0x48]
push eax
sub eax, dword [esp + 8]
push eax
push ecx
push str._s_is__d_but_should_be__d
push esi
call fcn.0046a540
add esp, 0x14
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
push dword [esp + 8]
push str.failed_to_get_page__d
push esi
call fcn.0046a540
add esp, 0xc
mov dword [esp + 4], ebx
cmp dword [esp + 4], 0
jne 0x46a4d6
jmp 0x46a50a