Function at 0x46b51c
Capabilities:
Enumerate files on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffd70
push ebx
push esi
xor ecx, ecx
mov dword [ebp - 0x290], ecx
mov dword [ebp - 0x28c], ecx
mov dword [ebp - 0x288], ecx
mov dword [ebp - 0x284], ecx
mov dword [ebp - 0x278], ecx
mov dword [ebp - 0x27c], ecx
mov dword [ebp - 0x280], ecx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x46b848
push dword fs:[eax]
mov dword fs:[eax], esp
lea edx, [ebp - 8]
mov eax, ebx
call sym.P_Interface.bpl__Jcldotnet_TJclClrHost_CorSystemDirectory_qqrp17System_TMetaClass
lea edx, [ebp - 0x280]
mov eax, ebx
call sym.P_Interface.bpl__Jcldotnet_TJclClrHost_CorVersion_qqrp17System_TMetaClass
mov edx, dword [ebp - 0x280]
lea eax, [ebp - 0x27c]
call sub.rtl70.bpl__System__LStrFromWStr_qqrr17System_AnsiStringx17System_WideString
mov eax, dword [ebp - 0x27c]
lea edx, [ebp - 0x278]
call sub.rtl70.bpl__Sysutils_AnsiUpperCase_qqrx17System_AnsiString
mov edx, dword [ebp - 0x278]
mov eax, 0x46b860
call sub.rtl70.bpl__System__LStrPos_qqrv
test eax, eax
jle 0x46b5c3
xor eax, eax
mov dword [ebp - 0x24], eax
jmp 0x46b5ca
mov dword [ebp - 0x24], 0x40
mov eax, dword [ebp - 8]
xor edx, edx
call sub.rtl70.bpl__System__WStrCmp_qqrv
je 0x46b805
mov eax, dword [ebp - 8]
call fcn.0046b4f8
test al, al
je 0x46b805
xor ebx, ebx
mov eax, dword [ebp - 8]
call sub.rtl70.bpl__System__WStrLen_qqrx17System_WideString
mov esi, eax
dec esi
cmp esi, 1
jl 0x46b620
mov eax, dword [ebp - 8]
mov ax, word [eax + esi*2 - 2]
cmp ax, word [0x6d4638]
jne 0x46b61b
lea eax, [ebp - 8]
mov edx, esi
call sub.rtl70.bpl__System__WStrSetLength_qqrr17System_WideStringi
mov bl, 1
jmp 0x46b620
dec esi
test esi, esi
jne 0x46b5fc
test bl, bl
je 0x46b805
xor eax, eax
mov dword [ebp - 0x274], eax
lea eax, [ebp - 0x274]
push eax
lea eax, [ebp - 0x284]
mov ecx, 0x46b868
mov edx, dword [ebp - 8]
call sub.rtl70.bpl__System__WStrCat3_qqrr17System_WideStringx17System_WideStringt2
mov eax, dword [ebp - 0x284]
call sub.rtl70.bpl__System__WStrToPWChar_qqrx17System_WideString
push eax
call sub.kernel32.dll_FindFirstFileW
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
je 0x46b805
xor eax, eax
push ebp
push 0x46b7fe
push dword fs:[eax]
mov dword fs:[eax], esp
test byte [ebp - 0x274], 0x10
je 0x46b7cf
lea eax, [ebp - 0x288]
lea edx, [ebp - 0x248]
mov ecx, 0x104
call sub.rtl70.bpl__System__WStrFromWArray_qqrr17System_WideStringpbi
mov eax, dword [ebp - 0x288]
mov edx, 0x46b874
call sub.rtl70.bpl__System__WStrCmp_qqrv
je 0x46b7cf
lea eax, [ebp - 0x28c]
lea edx, [ebp - 0x248]
mov ecx, 0x104
call sub.rtl70.bpl__System__WStrFromWArray_qqrr17System_WideStringpbi
mov eax, dword [ebp - 0x28c]
mov edx, 0x46b87c
call sub.rtl70.bpl__System__WStrCmp_qqrv
je 0x46b7cf
push 1
call sub.kernel32.dll_SetErrorMode
mov dword [ebp - 0x20], eax
xor eax, eax
push ebp
push 0x46b7c8
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x1c]
push eax
push 0
push 0
lea eax, [ebp - 0x18]
push eax
push 0
push 0
mov eax, dword [ebp - 0x24]
push eax
push 0
push 0
lea eax, [ebp - 0x248]
push eax
push 0
call sym.P_Interface.bpl__Jcldotnet_GetRequestedRuntimeInfo_qqspbt1t1xuixuit1xuiruit1xuit8
and eax, 0x1fff
cmp eax, 0x7a
jne 0x46b7b1
cmp dword [ebp - 0x18], 0
jbe 0x46b7b1
cmp dword [ebp - 0x1c], 0
jbe 0x46b7b1
mov edx, dword [ebp - 0x18]
dec edx
lea eax, [ebp - 0x10]
call sub.rtl70.bpl__System__WStrSetLength_qqrr17System_WideStringi
mov edx, dword [ebp - 0x1c]
dec edx
lea eax, [ebp - 0x14]
call sub.rtl70.bpl__System__WStrSetLength_qqrr17System_WideStringi
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x14]
call sub.rtl70.bpl__System__WStrToPWChar_qqrx17System_WideString
push eax
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x10]
call sub.rtl70.bpl__System__WStrToPWChar_qqrx17System_WideString
push eax
push 0x40
push 0
push 0
lea eax, [ebp - 0x248]
push eax
push 0
call sym.P_Interface.bpl__Jcldotnet_GetRequestedRuntimeInfo_qqspbt1t1xuixuit1xuiruit1xuit8
test eax, eax
jne 0x46b7b1
lea eax, [ebp - 0x290]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
call sub.rtl70.bpl__System__WStrCat3_qqrr17System_WideStringx17System_WideStringt2
mov ecx, dword [ebp - 0x290]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
call sym.P_Interface.bpl__Jclwidestrings_TJclWideStrings_SetValue_qqrx17System_WideStringt1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46b7cf
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_SetErrorMode
ret
lea eax, [ebp - 0x274]
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_FindNextFileW
test eax, eax
jne 0x46b676
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46b805
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_FindClose
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46b84f
lea eax, [ebp - 0x290]
mov edx, 5
call sub.rtl70.bpl__System__WStrArrayClr_qqrpvi
lea eax, [ebp - 0x27c]
mov edx, 2
call sub.rtl70.bpl__System__LStrArrayClr_qqrpvi
lea eax, [ebp - 0x14]
mov edx, 2
call sub.rtl70.bpl__System__WStrArrayClr_qqrpvi
lea eax, [ebp - 8]
call sub.rtl70.bpl__System__WStrClr_qqrpv
ret