TObject.Create:
00403808 84D2 test
dl,
dl
0040380A 7408 jz $00403814
0040380C 83C4F0 add esp,-$10
0040380F E830030000 call @ClassCreate
00403814 84D2 test
dl,
dl
00403816 740F jz $00403827
00403818 E87F030000 call @AfterConstruction
0040381D 648F0500000000 pop dword ptr fs:[$00000000]
00403824 83C40C add esp,$0c
00403827 C3 ret
@ClassCreate:
00403B44 52 push edx
00403B45 51 push ecx
00403B46 53 push ebx
00403B47 84D2 test
dl,
dl
00403B49 7C03 jl $00403b4e
00403B4B FF50F4 call dword ptr [eax-$0c] //<- NewInstance
00403B4E 31D2 xor edx,edx
00403B50 8D4C2410 lea ecx,[esp+$10]
00403B54 648B1A mov ebx,fs:[edx]
00403B57 8919 mov [ecx],ebx
00403B59 896908 mov [ecx+$08],ebp
00403B5C C741046D3B4000 mov [ecx+$04],$00403b6d
00403B63 89410C mov [ecx+$0c],eax
00403B66 64890A mov fs:[edx],ecx
00403B69 5B pop ebx
00403B6A 59 pop ecx
00403B6B 5A pop edx
00403B6C C3 ret
TObject.NewInstance:
004037D0 53 push ebx
004037D1 8BD8 mov ebx,eax
004037D3 8BC3 mov eax,ebx
004037D5 E826000000 call TObject.InstanceSize
004037DA E8B1F4FFFF call @GetMem
004037DF 8BD0 mov edx,eax
004037E1 8BC3 mov eax,ebx
004037E3 E85C000000 call TObject.InitInstance
004037E8 5B pop ebx
004037E9 C3 ret
004037EA 8BC0 mov eax,eax
TObject.InstanceSize:
00403800 83C0D8 add eax,-$28
00403803 8B00 mov eax,[eax]
00403805 C3 ret
00403806 8BC0 mov eax,eax
@GetMem:
00402C90 85C0 test eax,eax
00402C92 7E13 jle $00402ca7
00402C94 FF151C474500 call dword ptr [$0045471c]
00402C9A 85C0 test eax,eax
00402C9C 7402 jz $00402ca0
00402C9E F3C3 rep ret
00402CA0 B001 mov al,$01
00402CA2 E939010000 jmp Error
00402CA7 31C0 xor eax,eax
00402CA9 F3C3 rep ret
00402CAB 90 nop
TObject.InitInstance:
00403844 53 push ebx
//[...]
00403899 C3 ret
@AfterConstruction:
00403B9C 55 push ebp
//[...]
00403BC6 83C408 add esp,$08
00403BC9 EB19 jmp $00403be4
00403BCB E930010000 jmp @HandleAnyException
00403BD0 B201 mov
dl,$01
00403BD2 8B45FC mov eax,[ebp-$04]
00403BD5 E812000000 call @BeforeDestruction
00403BDA E8DD040000 call @RaiseAgain
00403BDF E82C050000 call @DoneExcept
//[...]
00403BE9 C3 ret