Function at 0x4385b0
Capabilities:
Get file system object information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xab7ab2
mov eax, dword fs:[0]
push eax
sub esp, 0x2d4
mov eax, dword [0xaf908c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov ebx, dword [ebp + 0xc]
or edi, 0xffffffff
xor ecx, ecx
movzx edx, word [ebx]
test dx, dx
je 0x438606
cmp dx, 0x2e
mov eax, ecx
movzx edx, word [ebx + ecx*2 + 2]
cmovne eax, edi
inc ecx
mov edi, eax
test dx, dx
jne 0x4385f0
mov eax, dword [ebp + 8]
test al, 0x10
jne 0x43882b
test edi, edi
js 0x43882b
lea eax, [ebx + edi*2]
mov ebx, dword [esi + 0x10]
xor edi, edi
mov dword [ebp - 0x2c8], eax
mov dword [ebp - 0x2cc], edi
lea edx, [eax + 2]
mov dword [ebp - 0x2d0], edx
test ebx, ebx
je 0x438677
nop word [eax + eax]
mov eax, dword [esi + 0xc]
add edi, ebx
shr edi, 1
mov eax, dword [eax + edi*4]
push dword [eax]
push edx
call fcn.0040b170
test eax, eax
je 0x4386df
jns 0x438666
mov ebx, edi
mov edi, dword [ebp - 0x2cc]
jmp 0x43866d
inc edi
mov dword [ebp - 0x2cc], edi
mov edx, dword [ebp - 0x2d0]
cmp edi, ebx
jne 0x438640
movzx eax, word [edx]
xor ecx, ecx
test ax, ax
je 0x4386ed
add eax, 0xffffffd0
cmp ax, 9
ja 0x438695
movzx eax, word [edx + ecx*2 + 2]
inc ecx
test ax, ax
jne 0x438681
test ecx, ecx
je 0x4386ed
cmp word [edx + ecx*2], 0
jne 0x4386ed
cmp dword [esi + 0x1c], 0
jne 0x4386d7
push 0x4010
push 0x2b4
lea eax, [ebp - 0x2c4]
push eax
push 0x80
push str.__FILE__.001
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov ecx, dword [ebp - 0x2c0]
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], 1
mov eax, dword [esi + 0x18]
jmp 0x43892e
mov eax, dword [esi + 0xc]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0xc]
jmp 0x43892e
lea ecx, [ebp - 0x2e0]
call fcn.0040a7f0
push dword [ebp - 0x2d0]
lea ecx, [ebp - 0x2e0]
mov dword [ebp - 4], 0
call fcn.0040a9a0
push 0x4010
push 0x2b4
lea eax, [ebp - 0x2c4]
push eax
mov eax, dword [ebp + 8]
or eax, 0x80
push eax
push dword [ebp - 0x2c8]
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov ecx, dword [esi + 0x14]
mov eax, dword [ebp - 0x2c0]
mov dword [ebp - 0x2d4], eax
cmp dword [esi + 0x10], ecx
jne 0x4387b9
cmp ecx, 0x7fffffff
jae 0x43894c
mov eax, ecx
mov ebx, SysReAllocString
sub ebx, ecx
shr eax, 2
inc eax
mov edx, 4
cmp eax, ebx
cmovbe ebx, eax
add ebx, ecx
xor ecx, ecx
mov eax, ebx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00a407c3
mov ecx, dword [esi + 0x10]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x4387a2
shl ecx, 2
push ecx
push dword [esi + 0xc]
push eax
call fcn.00a91c60
add esp, 0xc
push dword [esi + 0xc]
call fcn.00a407cc
mov eax, dword [ebp - 0x2c8]
add esp, 4
mov dword [esi + 0xc], eax
mov dword [esi + 0x14], ebx
push 0x10
call fcn.00a40785
mov ebx, eax
add esp, 4
mov dword [ebp - 0x2c8], ebx
mov byte [ebp - 4], 1
test ebx, ebx
je 0x4387ec
lea eax, [ebp - 0x2e0]
mov ecx, ebx
push eax
call fcn.0040a610
mov eax, dword [ebp - 0x2d4]
mov dword [ebx + 0xc], eax
jmp 0x4387ee
xor ebx, ebx
mov eax, dword [esi + 0xc]
lea ecx, [eax + edi*4]
mov eax, dword [esi + 0x10]
sub eax, edi
shl eax, 2
push eax
push ecx
lea eax, [ecx + 4]
push eax
call fcn.00a91c60
mov eax, dword [esi + 0xc]
mov dword [eax + edi*4], ebx
inc dword [esi + 0x10]
push dword [ebp - 0x2e0]
mov esi, dword [ebp - 0x2d4]
call fcn.00a407cc
add esp, 0x10
mov eax, esi
jmp 0x43892e
mov edx, dword [esi + 4]
xor edi, edi
test edx, edx
je 0x43885b
mov ebx, dword [esi]
lea ecx, [edx + edi]
shr ecx, 1
mov ebx, dword [ebx + ecx*8]
cmp eax, ebx
je 0x438893
cmp dword [ebp + 8], ebx
mov eax, ecx
mov ebx, dword [esi]
cmovae eax, edx
mov edx, eax
lea eax, [ecx + 1]
cmovae edi, eax
mov eax, dword [ebp + 8]
cmp edi, edx
jne 0x438836
push 0x4010
push 0x2b4
lea ecx, [ebp - 0x2c4]
or eax, 0x80
push ecx
push eax
push str.__DIR__
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov ecx, dword [esi + 8]
cmp dword [esi + 4], ecx
jne 0x4388fe
cmp ecx, 0x7fffffff
jae 0x438967
jmp 0x43889e
mov eax, dword [esi]
mov eax, dword [eax + ecx*8 + 4]
jmp 0x43892e
mov eax, ecx
mov ebx, SysReAllocString
sub ebx, ecx
shr eax, 2
inc eax
mov edx, 8
cmp eax, ebx
cmovbe ebx, eax
add ebx, ecx
xor ecx, ecx
mov eax, ebx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00a407c3
mov ecx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x4388e9
shl ecx, 3
push ecx
push dword [esi]
push eax
call fcn.00a91c60
add esp, 0xc
push dword [esi]
call fcn.00a407cc
mov eax, dword [ebp - 0x2c8]
add esp, 4
mov dword [esi], eax
mov dword [esi + 8], ebx
mov eax, dword [esi]
lea ecx, [eax + edi*8]
mov eax, dword [esi + 4]
sub eax, edi
shl eax, 3
push eax
push ecx
add ecx, 8
push ecx
call fcn.00a91c60
mov ecx, dword [esi]
add esp, 0xc
mov eax, dword [ebp + 8]
mov dword [ecx + edi*8], eax
mov eax, dword [ebp - 0x2c0]
mov dword [ecx + edi*8 + 4], eax
inc dword [esi + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00a405be
mov esp, ebp
pop ebp
ret 8
push 0xaf24ec
lea eax, [ebp - 0x2c8]
mov dword [ebp - 0x2c8], 0x7e5
push eax
call fcn.00a9269c
push 0xaf24ec
lea eax, [ebp - 0x2cc]
mov dword [ebp - 0x2cc], 0x7e5
push eax
call fcn.00a9269c
int3