Function at 0x4ae598
Capabilities:
Enumerate pe sections
Parse pe header

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffbc
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
xor eax, eax
push ebp
push 0x4aedc0
push dword fs:[eax]
mov dword fs:[eax], esp
or edi, 0xffffffff
cmp dword [ebp + 8], 0
je 0x4aeda5
xor edx, edx
push ebp
push 0x4aed99
push dword fs:[edx]
mov dword fs:[edx], esp
mov ebx, dword [ebp + 8]
cmp dword [ebp + 0xc], 0
jne 0x4aed2e
xor edi, edi
mov eax, dword [ebx + 0x18]
cmp word [eax + 0x18], 0x20b
jne 0x4ae60e
lea edx, [eax + 0x18]
mov edx, dword [edx + 0x80]
mov dword [ebp - 0x24], edx
lea edx, [eax + 0x18]
mov edx, dword [edx + 0x24]
mov dword [ebp - 0x28], edx
lea edx, [eax + 0x18]
add edx, 0xf0
mov esi, edx
jmp 0x4ae628
mov edx, dword [eax + 0x88]
mov dword [ebp - 0x24], edx
mov edx, dword [eax + 0x3c]
mov dword [ebp - 0x28], edx
lea edx, [eax + 0x18]
add edx, 0xe0
mov esi, edx
movzx eax, word [eax + 6]
dec eax
test eax, eax
jl 0x4aed1a
inc eax
mov dword [ebp - 0x14], 0
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov edx, dword [esi + edx*8 + 0xc]
cmp edx, dword [ebp - 0x24]
jne 0x4aed10
xor eax, eax
mov dword [ebp - 4], eax
xor eax, eax
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0xc]
push eax
lea ecx, [ebp - 8]
lea edx, [ebp - 4]
mov eax, dword [ebx + 0x1c]
call fcn.004add04
mov eax, dword [ebp - 4]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 0xc]
push eax
lea ecx, [ebp - 0x10]
mov edx, dword [ebx + 0x1c]
mov eax, dword [ebp - 0x24]
call fcn.004adfb4
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x28]
call fcn.004ad5c8
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
sub eax, dword [esi + edx*8 + 0x10]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jge 0x4ae6c7
cmp byte [0x4cd740], 0
je 0x4ae6c7
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x4ae6fb
lea eax, [ebx + 0x10]
push eax
lea eax, [ebx + 0x14]
push eax
mov eax, dword [ebp - 0x14]
lea eax, [eax + eax*4]
mov edx, dword [esi + eax*8 + 0x14]
mov eax, dword [ebp - 0x14]
lea eax, [eax + eax*4]
add edx, dword [esi + eax*8 + 0x10]
mov eax, dword [ebx]
mov ecx, dword [ebp - 0x18]
call fcn.004ad74c
test al, al
je 0x4aed1a
mov eax, dword [ebx + 0x14]
cmp word [eax], 0x5a4d
jne 0x4aed1a
mov edx, dword [ebx + 0x14]
mov eax, edx
add edx, 0x3c
add eax, dword [edx]
mov dword [ebx + 0x18], eax
cmp dword [eax], 0x4550
jne 0x4aed1a
cmp word [eax + 0x18], 0x20b
jne 0x4aea22
lea edx, [eax + 0x18]
add edx, 0xf0
mov esi, edx
add eax, 0x18
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
add eax, 0x80
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x2c]
add dword [edx + 8], eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + 0x20]
call fcn.004ad5c8
mov edi, eax
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x20]
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 4]
call fcn.004ad5c8
sub edi, eax
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + 0x24]
call fcn.004ad5c8
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov dword [esi + edx*8 + 0x10], eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov dword [esi + edx*8 + 8], eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x30]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x2c]
add dword [edx + 0x38], eax
mov eax, dword [ebx + 0x18]
movzx eax, word [eax + 6]
dec eax
test eax, eax
jl 0x4ae864
inc eax
mov dword [ebp - 0x34], eax
xor edi, edi
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0xc]
mov edx, dword [ebp - 0x30]
cmp eax, dword [edx]
jbe 0x4ae85e
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x1c]
add dword [esi + eax*8 + 0xc], edx
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x18]
add dword [esi + eax*8 + 0x14], edx
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x1c]
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
cmp eax, dword [esi + edx*8 + 0x14]
jbe 0x4ae841
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x18]
add dword [esi + eax*8 + 0x1c], edx
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x18]
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
cmp eax, dword [esi + edx*8 + 0x14]
jbe 0x4ae85e
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x18]
add dword [esi + eax*8 + 0x18], edx
inc edi
dec dword [ebp - 0x34]
jne 0x4ae802
xor edi, edi
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + edi*8 + 0x70]
mov edx, dword [ebp - 0x30]
cmp eax, dword [edx]
jbe 0x4ae87e
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
add dword [eax + edi*8 + 0x70], edx
inc edi
cmp edi, 0x10
jne 0x4ae866
xor eax, eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x2c]
cmp dword [eax + 0xa4], 0
jbe 0x4ae8fc
mov eax, dword [ebx + 0x18]
movzx eax, word [eax + 6]
dec eax
test eax, eax
jl 0x4ae8fc
inc eax
mov dword [ebp - 0x34], eax
xor edi, edi
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0xc]
mov edx, dword [ebp - 0x2c]
cmp eax, dword [edx + 0xa0]
ja 0x4ae8f6
mov eax, dword [ebx + 0x18]
movzx eax, word [eax + 6]
dec eax
cmp edi, eax
je 0x4ae8d7
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x34]
mov edx, dword [ebp - 0x2c]
cmp eax, dword [edx + 0xa0]
jbe 0x4ae8f6
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x14]
add eax, dword [ebx + 0x14]
mov edx, dword [ebp - 0x2c]
add eax, dword [edx + 0xa0]
lea edx, [edi + edi*4]
sub eax, dword [esi + edx*8 + 0xc]
mov dword [ebp - 0x20], eax
jmp 0x4ae8fc
inc edi
dec dword [ebp - 0x34]
jne 0x4ae8a7
cmp dword [ebp - 0x20], 0
je 0x4ae968
mov eax, dword [ebp - 0x2c]
mov edi, dword [eax + 0xa4]
mov eax, edi
mov ecx, 0x1c
cdq
idiv ecx
test edx, edx
jne 0x4ae925
mov ecx, 0x1c
mov eax, edi
cdq
idiv ecx
mov edi, eax
test edi, edi
jle 0x4ae968
mov dword [ebp - 0x34], edi
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov edx, dword [esi + edx*8 + 0x14]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x18]
cmp edx, eax
jae 0x4ae95f
test eax, eax
je 0x4ae94d
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x20]
add dword [edx + 0x18], eax
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x14], 0
je 0x4ae95f
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
add dword [edx + 0x14], eax
add dword [ebp - 0x20], 0x1c
dec dword [ebp - 0x34]
jne 0x4ae92c
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
mov ecx, eax
add ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
lea eax, [eax + eax*4]
mov edx, dword [esi + eax*8 + 0x14]
add edx, dword [ebx + 0x14]
mov eax, dword [ebp - 0x10]
call sub.rtl250.bpl__System_Move_qqrpxvpvi
mov eax, dword [ebp - 0x10]
push eax
call fcn.004032b8
lea edx, [ebp - 0x40]
mov eax, dword [ebx + 0x1c]
call fcn.004ad9a4
mov eax, dword [ebp - 0x40]
call fcn.004adb68
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebx + 0x18]
add edx, 0x18
mov edx, dword [edx + 0x24]
call fcn.004ad5c8
mov edi, eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
sub edi, eax
mov dword [ebp - 0x18], edi
cmp dword [ebp - 0x18], 0
jle 0x4aed0b
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov edx, dword [esi + edx*8 + 0x14]
add edx, dword [ebx + 0x14]
add eax, edx
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x18]
call fcn.00403818
jmp 0x4aed0b
lea edx, [eax + 0x18]
add edx, 0xe0
mov esi, edx
add eax, 0x18
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
add eax, 0x70
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x38]
add dword [edx + 8], eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x38]
mov edx, dword [edx + 0x20]
call fcn.004ad5c8
mov edi, eax
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 0x20]
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 4]
call fcn.004ad5c8
sub edi, eax
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x38]
mov edx, dword [edx + 0x24]
call fcn.004ad5c8
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov dword [esi + edx*8 + 0x10], eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov dword [esi + edx*8 + 8], eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x3c]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x38]
add dword [edx + 0x38], eax
mov eax, dword [ebx + 0x18]
movzx eax, word [eax + 6]
dec eax
test eax, eax
jl 0x4aeb56
inc eax
mov dword [ebp - 0x34], eax
xor edi, edi
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0xc]
mov edx, dword [ebp - 0x3c]
cmp eax, dword [edx]
jbe 0x4aeb50
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x1c]
add dword [esi + eax*8 + 0xc], edx
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x18]
add dword [esi + eax*8 + 0x14], edx
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x1c]
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
cmp eax, dword [esi + edx*8 + 0x14]
jbe 0x4aeb33
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x18]
add dword [esi + eax*8 + 0x1c], edx
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x18]
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
cmp eax, dword [esi + edx*8 + 0x14]
jbe 0x4aeb50
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x18]
add dword [esi + eax*8 + 0x18], edx
inc edi
dec dword [ebp - 0x34]
jne 0x4aeaf4
xor edi, edi
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + edi*8 + 0x60]
mov edx, dword [ebp - 0x3c]
cmp eax, dword [edx]
jbe 0x4aeb70
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x1c]
add dword [eax + edi*8 + 0x60], edx
inc edi
cmp edi, 0x10
jne 0x4aeb58
xor eax, eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x38]
cmp dword [eax + 0x94], 0
jbe 0x4aebee
mov eax, dword [ebx + 0x18]
movzx eax, word [eax + 6]
dec eax
test eax, eax
jl 0x4aebee
inc eax
mov dword [ebp - 0x34], eax
xor edi, edi
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0xc]
mov edx, dword [ebp - 0x38]
cmp eax, dword [edx + 0x90]
ja 0x4aebe8
mov eax, dword [ebx + 0x18]
movzx eax, word [eax + 6]
dec eax
cmp edi, eax
je 0x4aebc9
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x34]
mov edx, dword [ebp - 0x38]
cmp eax, dword [edx + 0x90]
jbe 0x4aebe8
lea eax, [edi + edi*4]
mov eax, dword [esi + eax*8 + 0x14]
add eax, dword [ebx + 0x14]
mov edx, dword [ebp - 0x38]
add eax, dword [edx + 0x90]
lea edx, [edi + edi*4]
sub eax, dword [esi + edx*8 + 0xc]
mov dword [ebp - 0x20], eax
jmp 0x4aebee
inc edi
dec dword [ebp - 0x34]
jne 0x4aeb99
cmp dword [ebp - 0x20], 0
je 0x4aec5d
mov eax, dword [ebp - 0x38]
mov edi, dword [eax + 0x94]
mov eax, edi
mov ecx, 0x1c
cdq
idiv ecx
test edx, edx
jne 0x4aec17
mov ecx, 0x1c
mov eax, edi
cdq
idiv ecx
mov edi, eax
test edi, edi
jle 0x4aec5d
mov dword [ebp - 0x34], edi
mov eax, dword [ebp - 0x14]
lea eax, [eax + eax*4]
mov eax, dword [esi + eax*8 + 0x14]
mov edx, dword [ebp - 0x20]
cmp eax, dword [edx + 0x18]
jae 0x4aec54
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x18], 0
je 0x4aec42
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x20]
add dword [edx + 0x18], eax
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x14], 0
je 0x4aec54
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
add dword [edx + 0x14], eax
add dword [ebp - 0x20], 0x1c
dec dword [ebp - 0x34]
jne 0x4aec1e
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
mov ecx, eax
add ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
lea eax, [eax + eax*4]
mov edx, dword [esi + eax*8 + 0x14]
add edx, dword [ebx + 0x14]
mov eax, dword [ebp - 0x10]
call sub.rtl250.bpl__System_Move_qqrpxvpvi
mov eax, dword [ebp - 0x10]
push eax
call fcn.004032b8
lea edx, [ebp - 0x44]
mov eax, dword [ebx + 0x1c]
call fcn.004ad9a4
mov eax, dword [ebp - 0x44]
call fcn.004adb68
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
mov edx, dword [ebx + 0x18]
mov edx, dword [edx + 0x3c]
call fcn.004ad5c8
mov edi, eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
add eax, dword [ebp - 0xc]
sub edi, eax
mov dword [ebp - 0x18], edi
cmp dword [ebp - 0x18], 0
jle 0x4aed0b
mov eax, dword [ebp - 4]
add eax, dword [ebp - 8]
mov edx, 4
call fcn.004ad5c8
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*4]
mov edx, dword [esi + edx*8 + 0x14]
add edx, dword [ebx + 0x14]
add eax, edx
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x18]
call fcn.00403818
or edi, 0xffffffff
jmp 0x4aed1a
inc dword [ebp - 0x14]
dec eax
jne 0x4ae63d
push 0
mov eax, dword [ebx]
push eax
call fcn.00402fb0
mov edx, eax
mov eax, dword [ebx + 0x14]
call fcn.004ae4e8
lea eax, [ebx + 0x1c]
call fcn.004adc7c
mov eax, dword [ebx + 0x14]
push eax
call fcn.004032b8
mov eax, dword [ebx + 0x10]
push eax
call fcn.00402d4c
cmp dword [ebp + 0xc], 0
jne 0x4aed69
push 2
push 0
push 0
mov eax, dword [ebx]
push eax
call fcn.00403258
cmp eax, 0xffffffff
je 0x4aed69
mov eax, dword [ebx]
push eax
call fcn.00403230
cmp byte [ebx + 0xc], 0
je 0x4aed7f
lea eax, [ebx + 4]
push eax
push 0
push 0
mov eax, dword [ebx]
push eax
call fcn.00403260
mov eax, dword [ebx]
push eax
call fcn.00402d4c
mov eax, dword [ebp + 8]
call sub.rtl250.bpl__System__FreeMem_qqrpv
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4aeda5
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4aedc7
lea eax, [ebp - 0x44]
mov edx, 2
call sub.rtl250.bpl__System__UStrArrayClr_qqrpvi
ret