Function at 0x42c7a0
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xac
mov eax, dword [0x82aea4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x8c], edx
test ebx, ebx
jns 0x42c7de
mov eax, dword [sym.postgres.exe_LocalBufferBlockPointers]
lea ecx, [ebx*4 + 4]
sub eax, ecx
mov eax, dword [eax]
mov dword [ebp - 0x88], eax
jmp 0x42c7f7
mov eax, dword [sym.postgres.exe_BufferBlocks]
mov ecx, ebx
shl ecx, 0xd
lea ecx, [ecx + eax - 0x2000]
mov dword [ebp - 0x88], ecx
mov eax, ecx
movzx ecx, word [eax + 0x10]
push esi
movzx esi, word [edx + 6]
and esi, 0x1fff
add ecx, eax
add esi, 7
push eax
mov dword [ebp - 0x94], ecx
and esi, 0xfffffff8
call sym.postgres.exe_PageGetFreeSpace
add esp, 4
cmp eax, esi
jae 0x42c8c7
mov eax, dword [ebp - 0x94]
mov dl, byte [eax + 0xc]
and dl, 2
cmp dword [eax], 0
mov byte [ebp - 0x90], dl
jne 0x42c846
cmp dword [eax + 4], 0
mov byte [ebp - 0x7c], 1
je 0x42c84a
mov byte [ebp - 0x7c], 0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x88]
lea eax, [ebp - 0xa4]
push eax
push esi
push ecx
push edx
push edi
call fcn.0042c410
mov edx, dword [ebp + 0xc]
movzx ecx, ax
mov eax, dword [ebp - 0xa4]
push eax
push esi
push edx
mov edx, dword [ebp - 0x8c]
push ebx
push edi
call fcn.0042b9a0
mov esi, eax
push esi
call sym.postgres.exe_BufferGetBlockNumber
add esp, 0x2c
push eax
push ebx
call sym.postgres.exe_BufferGetBlockNumber
add esp, 4
push eax
push edi
call sym.postgres.exe_PredicateLockPageSplit
mov eax, dword [ebp - 0x7c]
mov ecx, dword [ebp - 0x90]
mov edx, dword [ebp - 0x84]
push eax
push ecx
push edx
push esi
push ebx
push edi
call sym.postgres.exe__bt_insert_parent
add esp, 0x24
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.006a8ca2
mov esp, ebp
pop ebp
ret
xor eax, eax
push ebx
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x90], eax
call sym.postgres.exe_BufferGetBlockNumber
add esp, 4
cmp byte [ebp + 0x10], 0
mov dword [ebp - 0x7c], eax
je 0x42c95d
push 2
push 0
push edi
call sym.postgres.exe__bt_getbuf
add esp, 0xc
mov dword [ebp - 0x80], eax
test eax, eax
jns 0x42c917
mov edx, dword [sym.postgres.exe_LocalBufferBlockPointers]
lea ecx, [eax*4 + 4]
sub edx, ecx
mov ecx, dword [edx]
mov dword [ebp - 0x84], ecx
jmp 0x42c92f
mov ecx, dword [sym.postgres.exe_BufferBlocks]
mov edx, eax
shl edx, 0xd
lea edx, [edx + ecx - 0x2000]
mov dword [ebp - 0x84], edx
mov ecx, dword [ebp - 0x84]
mov edx, dword [ebp - 0x94]
add ecx, 0x18
mov dword [ebp - 0x90], ecx
mov ecx, dword [ecx + 0x14]
cmp ecx, dword [edx + 8]
jb 0x42c95d
push eax
push edi
call sym.postgres.exe__bt_relbuf
add esp, 8
mov dword [ebp - 0x80], 0
mov edx, dword [ebp - 0x88]
inc dword [sym.postgres.exe_CritSectionCount]
movzx eax, word [edx + 0x10]
mov ecx, dword [ebp - 0x8c]
add eax, edx
test byte [eax + 0xc], 1
jne 0x42c9b3
xor edx, edx
cmp dword [eax + 4], edx
movzx eax, word [ebp + 0xc]
setne dl
inc edx
cmp eax, edx
jne 0x42c9b3
mov eax, ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, 8
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x9c], edx
mov word [ebp - 0x9a], ax
lea ecx, [ebp - 0xa0]
mov esi, eax
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x88]
push 0
push 0
push edx
push esi
push ecx
push eax
call sym.postgres.exe_PageAddItem
add esp, 0x18
test ax, ax
jne 0x42c9fc
push str._bt_insertonpg
push 0x2ff
push str.src_backend_access_nbtree_nbtinsert.c
call sym.postgres.exe_elog_start
mov ecx, dword [edi + 0x24]
mov edx, dword [ebp - 0x7c]
push ecx
push edx
push str.failed_to_add_new_item_to_block__u_in_index___s_
push 0x16
call sym.postgres.exe_elog_finish
add esp, 0x1c
push ebx
call sym.postgres.exe_MarkBufferDirty
mov eax, dword [ebp - 0x80]
mov esi, dword [ebp - 0x90]
add esp, 4
test eax, eax
je 0x42ca2d
mov ecx, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x94]
mov dword [esi + 0x10], ecx
mov ecx, dword [edx + 8]
push eax
mov dword [esi + 0x14], ecx
call sym.postgres.exe_MarkBufferDirty
add esp, 4
mov edx, dword [edi + 0x24]
cmp byte [edx + 0x72], 0x70
jne 0x42cbb9
mov eax, dword [edi]
mov edx, dword [edi + 8]
mov ecx, dword [edi + 4]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x60], edx
mov dx, word [ebp + 0xc]
mov dword [ebp - 0x64], ecx
mov ecx, eax
mov word [ebp - 0x5a], ax
mov word [ebp - 0x58], dx
mov edx, dword [ebp - 0x94]
mov dx, word [edx + 0xc]
lea eax, [ebp - 0x68]
shr ecx, 0x10
and dx, 1
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x40]
mov word [ebp - 0x5c], cx
mov ecx, eax
mov dword [ebp - 0x50], 0x12
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x44], ecx
je 0x42ca95
mov byte [ebp - 0x7c], 0
jmp 0x42cace
mov eax, dword [ebp - 0x8c]
movzx ecx, word [eax]
movzx eax, word [eax + 2]
shl ecx, 0x10
or ecx, eax
mov dword [ebp - 0x98], ecx
lea ecx, [ebp - 0x98]
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x3c], 4
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], eax
mov byte [ebp - 0x7c], 0x10
cmp dword [ebp - 0x80], 0
je 0x42cb0b
mov ecx, dword [esi + 8]
mov dword [ebp - 0x78], ecx
mov ecx, dword [esi + 0xc]
mov dword [ebp - 0x74], ecx
mov ecx, dword [esi + 0x10]
mov dword [ebp - 0x70], ecx
mov ecx, dword [esi + 0x14]
mov dword [ebp - 0x6c], ecx
lea ecx, [ebp - 0x78]
mov dword [eax], ecx
lea ecx, [eax + 0x14]
mov dword [eax + 4], 0x10
mov dword [eax + 8], 0
mov dword [eax + 0x10], ecx
mov eax, ecx
mov byte [ebp - 0x7c], 0x20
test dx, dx
jne 0x42cb52
mov ecx, dword [ebp - 0x94]
xor edx, edx
cmp dword [ecx + 4], edx
movzx ecx, word [ebp + 0xc]
setne dl
inc edx
cmp ecx, edx
jne 0x42cb52
mov ecx, dword [ebp - 0x8c]
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [ebp - 0xac], edx
mov dword [ebp - 0xa8], ecx
mov edx, 8
mov word [ebp - 0xa6], dx
lea ecx, [ebp - 0xac]
jmp 0x42cb62
mov ecx, dword [ebp - 0x8c]
movzx edx, word [ecx + 6]
and edx, 0x1fff
mov dword [eax], ecx
mov ecx, dword [ebp - 0x7c]
mov dword [eax + 4], edx
mov dword [eax + 8], ebx
mov byte [eax + 0xc], 1
mov dword [eax + 0x10], 0
lea eax, [ebp - 0x54]
push eax
push ecx
push 0xb
call sym.postgres.exe_XLogInsert
add esp, 0xc
cmp dword [ebp - 0x80], 0
je 0x42cba3
mov ecx, dword [ebp - 0x84]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov si, word [sym.postgres.exe_ThisTimeLineID]
mov word [ecx + 8], si
mov ecx, dword [ebp - 0x88]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov dx, word [sym.postgres.exe_ThisTimeLineID]
mov word [ecx + 8], dx
dec dword [sym.postgres.exe_CritSectionCount]
cmp dword [ebp - 0x80], 0
je 0x42cbe4
cmp byte [sym.postgres.exe_InRecovery], 0
jne 0x42cbd7
push edi
call sym.postgres.exe_CacheInvalidateRelcache
add esp, 4
mov eax, dword [ebp - 0x80]
push eax
push edi
call sym.postgres.exe__bt_relbuf
add esp, 8
push ebx
push edi
call sym.postgres.exe__bt_relbuf
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
pop esi
call fcn.006a8ca2
mov esp, ebp
pop ebp
ret