Function at 0x438b50
Capabilities:
Get file system object information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xabfea2
mov eax, dword fs:[0]
push eax
sub esp, 0x2d4
mov eax, dword [0xb0108c]
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 0x438ba6
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 0x438b90
mov eax, dword [ebp + 8]
test al, 0x10
jne 0x438dcb
test edi, edi
js 0x438dcb
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 0x438c17
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 0x438c7f
jns 0x438c06
mov ebx, edi
mov edi, dword [ebp - 0x2cc]
jmp 0x438c0d
inc edi
mov dword [ebp - 0x2cc], edi
mov edx, dword [ebp - 0x2d0]
cmp edi, ebx
jne 0x438be0
movzx eax, word [edx]
xor ecx, ecx
test ax, ax
je 0x438c8d
add eax, 0xffffffd0
cmp ax, 9
ja 0x438c35
movzx eax, word [edx + ecx*2 + 2]
inc ecx
test ax, ax
jne 0x438c21
test ecx, ecx
je 0x438c8d
cmp word [edx + ecx*2], 0
jne 0x438c8d
cmp dword [esi + 0x1c], 0
jne 0x438c77
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 0x438ece
mov eax, dword [esi + 0xc]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0xc]
jmp 0x438ece
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 0x438d59
cmp ecx, 0x7fffffff
jae 0x438eec
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.00a48bd3
mov ecx, dword [esi + 0x10]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x438d42
shl ecx, 2
push ecx
push dword [esi + 0xc]
push eax
call fcn.00a9a050
add esp, 0xc
push dword [esi + 0xc]
call fcn.00a48bdc
mov eax, dword [ebp - 0x2c8]
add esp, 4
mov dword [esi + 0xc], eax
mov dword [esi + 0x14], ebx
push 0x10
call fcn.00a48b95
mov ebx, eax
add esp, 4
mov dword [ebp - 0x2c8], ebx
mov byte [ebp - 4], 1
test ebx, ebx
je 0x438d8c
lea eax, [ebp - 0x2e0]
mov ecx, ebx
push eax
call fcn.0040a610
mov eax, dword [ebp - 0x2d4]
mov dword [ebx + 0xc], eax
jmp 0x438d8e
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.00a9a050
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.00a48bdc
add esp, 0x10
mov eax, esi
jmp 0x438ece
mov edx, dword [esi + 4]
xor edi, edi
test edx, edx
je 0x438dfb
mov ebx, dword [esi]
lea ecx, [edx + edi]
shr ecx, 1
mov ebx, dword [ebx + ecx*8]
cmp eax, ebx
je 0x438e33
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 0x438dd6
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 0x438e9e
cmp ecx, 0x7fffffff
jae 0x438f07
jmp 0x438e3e
mov eax, dword [esi]
mov eax, dword [eax + ecx*8 + 4]
jmp 0x438ece
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.00a48bd3
mov ecx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x438e89
shl ecx, 3
push ecx
push dword [esi]
push eax
call fcn.00a9a050
add esp, 0xc
push dword [esi]
call fcn.00a48bdc
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.00a9a050
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.00a489d2
mov esp, ebp
pop ebp
ret 8
push 0xafa36c
lea eax, [ebp - 0x2c8]
mov dword [ebp - 0x2c8], 0x7e5
push eax
call fcn.00a9aa8c
push 0xafa36c
lea eax, [ebp - 0x2cc]
mov dword [ebp - 0x2cc], 0x7e5
push eax
call fcn.00a9aa8c
int3