Function at 0x45a6bc
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
mov ecx, 4
push 0
push 0
dec ecx
jne 0x45a6c4
push ecx
push ebx
push esi
push edi
mov esi, edx
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x45aa0e
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x1a4], 0
jne 0x45a718
mov dl, 1
mov eax, dword [0x4336f8]
call fcn.0043b908
mov ebx, eax
mov eax, dword [ebp - 0xc]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0xc]
add eax, 0x1a4
mov edx, ebx
test edx, edx
je 0x45a713
sub edx, 0xffffffc0
call sub.rtl120.bpl__System__IntfCopy_qqrr45System__DelphiInterface_t17System_IInterface_x45System__DelphiInterface_t17System_IInte
mov eax, esi
mov edx, dword [ebp - 0xc]
mov edx, dword [edx + 0x1a4]
call sub.rtl120.bpl__System__IntfCopy_qqrr45System__DelphiInterface_t17System_IInterface_x45System__DelphiInterface_t17System_IInte
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x1c4], 0
je 0x45a9d5
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x1a4]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jne 0x45a9d5
lea eax, [ebp - 0x18]
mov edx, dword [ebp - 0xc]
mov edx, dword [edx + 0x1a4]
call sub.rtl120.bpl__System__IntfCopy_qqrr45System__DelphiInterface_t17System_IInterface_x45System__DelphiInterface_t17System_IInte
lea eax, [ebp - 0x24]
mov edx, dword [ebp - 0xc]
mov edx, dword [edx + 0x1a4]
mov ecx, 0x45aa1c
call sub.rtl120.bpl__System__IntfCast_qqrr45System__DelphiInterface_t17System_IInterface_x45System__DelphiInterface_t17System_IInte
mov eax, dword [ebp - 0x24]
mov edx, dword [eax]
call dword [edx + 0x18]
xor eax, eax
mov dword [ebp - 8], eax
push ebp
call fcn.0045a404
pop ecx
lea ecx, [ebp - 0x14]
mov edx, 0x45aa38
mov eax, dword [ebp - 0xc]
call fcn.0043a2d0
mov ebx, dword [0x5a799c]
mov ebx, dword [ebx]
mov dl, 0x7c
mov eax, dword [ebp - 0x14]
call ebx
test eax, eax
jle 0x45a85a
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 1
xor eax, eax
push ebp
push 0x45a844
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x10]
push eax
mov ebx, dword [0x5a7ab0]
mov ebx, dword [ebx]
mov cl, 0x7c
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
call ebx
mov eax, dword [0x5a9194]
call sub.rtl120.bpl__System__DynArrayHigh_qqrv
mov esi, eax
test esi, esi
jl 0x45a83a
inc esi
xor ebx, ebx
mov edi, ebx
add edi, edi
add edi, edi
add edi, edi
sub edi, ebx
mov eax, dword [0x5a9194]
mov eax, dword [eax + edi*4]
mov ecx, dword [0x5a728c]
mov ecx, dword [ecx]
mov edx, dword [ebp - 0x10]
call ecx
test al, al
je 0x45a836
mov eax, dword [0x5a9194]
cmp byte [eax + edi*4 + 0x18], 0
je 0x45a83a
push ebp
mov eax, dword [0x5a9194]
mov eax, dword [eax + edi*4]
mov edx, 0x45aa4c
call fcn.00459b5c
pop ecx
jmp 0x45a83a
inc ebx
dec esi
jne 0x45a7f1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45a84e
inc dword [ebp - 0x1c]
dec dword [ebp - 0x20]
jne 0x45a7ba
mov eax, dword [ebp - 0xc]
call fcn.00437d94
test al, al
je 0x45a883
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x13c], 0
je 0x45a883
push ebp
mov edx, 0x45aa4c
mov eax, 0x45aa90
call fcn.00459b5c
pop ecx
mov eax, dword [ebp - 0xc]
call fcn.00437db4
test al, al
je 0x45a8ac
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x13c], 0
je 0x45a8ac
push ebp
mov edx, 0x45aa4c
mov eax, 0x45aab8
call fcn.00459b5c
pop ecx
mov eax, dword [ebp - 0xc]
call fcn.00437dd8
test al, al
je 0x45a8d2
cmp dword [0x597e14], 0
je 0x45a8d2
push ebp
mov edx, 0x45aa4c
mov eax, 0x45aadc
call fcn.00459b5c
pop ecx
mov eax, dword [ebp - 0x18]
mov edx, dword [eax]
call dword [edx + 0xc]
xor eax, eax
push ebp
push 0x45a928
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
dec eax
test eax, eax
jl 0x45a91e
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 0
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [eax + edx*8 + 4]
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x1c]
mov edx, dword [eax + edx*8]
mov eax, dword [ebp - 0x18]
mov ebx, dword [eax]
call dword [ebx + 0x28]
inc dword [ebp - 0x1c]
dec dword [ebp - 0x20]
jne 0x45a8fb
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45a932
mov eax, dword [ebp - 0x18]
mov edx, dword [eax]
call dword [edx + 0x10]
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x218], 0
jne 0x45a9d5
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x219], 0
jne 0x45a963
call sub.kernel32.dll_GetCurrentThreadId
cmp eax, dword [0x5987e4]
jne 0x45a997
mov eax, 0xfa
call fcn.0042e668
test al, al
jne 0x45a997
mov eax, dword [ebp - 0xc]
add eax, 0x1fc
push eax
push 0
mov eax, dword [ebp - 0xc]
push eax
push fcn.0045908c
push 0
push 0
call sub.kernel32.dll_CreateThread
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x1f8], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x1f8]
test eax, eax
jne 0x45a9cd
mov eax, dword [ebp - 0xc]
call fcn.00436fe4
test al, al
je 0x45a9c2
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x204]
mov cl, 1
xor edx, edx
mov ebx, dword [eax]
call dword [ebx + 0x34]
mov eax, dword [ebp - 0xc]
push eax
call fcn.0045908c
jmp 0x45a9d5
push 1
push eax
call sub.kernel32.dll_SetThreadPriority
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45aa15
lea eax, [ebp - 0x24]
call sub.rtl120.bpl__System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_
lea eax, [ebp - 0x18]
call sub.rtl120.bpl__System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_
lea eax, [ebp - 0x14]
mov edx, 2
call sub.rtl120.bpl__System__UStrArrayClr_qqrpvi
lea eax, [ebp - 4]
mov edx, dword [0x459b28]
call sub.rtl120.bpl__System__DynArrayClear_qqrrpvpv
ret