Function at 0x437e50
Capabilities:
Get file system object information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xaabdf2
mov eax, dword fs:[0]
push eax
sub esp, 0x2d4
mov eax, dword [0xaee08c]
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 0x437ea6
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 0x437e90
mov eax, dword [ebp + 8]
test al, 0x10
jne 0x4380cb
test edi, edi
js 0x4380cb
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 0x437f17
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 0x437f7f
jns 0x437f06
mov ebx, edi
mov edi, dword [ebp - 0x2cc]
jmp 0x437f0d
inc edi
mov dword [ebp - 0x2cc], edi
mov edx, dword [ebp - 0x2d0]
cmp edi, ebx
jne 0x437ee0
movzx eax, word [edx]
xor ecx, ecx
test ax, ax
je 0x437f8d
add eax, 0xffffffd0
cmp ax, 9
ja 0x437f35
movzx eax, word [edx + ecx*2 + 2]
inc ecx
test ax, ax
jne 0x437f21
test ecx, ecx
je 0x437f8d
cmp word [edx + ecx*2], 0
jne 0x437f8d
cmp dword [esi + 0x1c], 0
jne 0x437f77
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 0x4381ce
mov eax, dword [esi + 0xc]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0xc]
jmp 0x4381ce
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 0x438059
cmp ecx, 0x7fffffff
jae 0x4381ec
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.00a34af3
mov ecx, dword [esi + 0x10]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x438042
shl ecx, 2
push ecx
push dword [esi + 0xc]
push eax
call fcn.00a85f90
add esp, 0xc
push dword [esi + 0xc]
call fcn.00a34afc
mov eax, dword [ebp - 0x2c8]
add esp, 4
mov dword [esi + 0xc], eax
mov dword [esi + 0x14], ebx
push 0x10
call fcn.00a34ab5
mov ebx, eax
add esp, 4
mov dword [ebp - 0x2c8], ebx
mov byte [ebp - 4], 1
test ebx, ebx
je 0x43808c
lea eax, [ebp - 0x2e0]
mov ecx, ebx
push eax
call fcn.0040a610
mov eax, dword [ebp - 0x2d4]
mov dword [ebx + 0xc], eax
jmp 0x43808e
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.00a85f90
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.00a34afc
add esp, 0x10
mov eax, esi
jmp 0x4381ce
mov edx, dword [esi + 4]
xor edi, edi
test edx, edx
je 0x4380fb
mov ebx, dword [esi]
lea ecx, [edx + edi]
shr ecx, 1
mov ebx, dword [ebx + ecx*8]
cmp eax, ebx
je 0x438133
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 0x4380d6
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 0x43819e
cmp ecx, 0x7fffffff
jae 0x438207
jmp 0x43813e
mov eax, dword [esi]
mov eax, dword [eax + ecx*8 + 4]
jmp 0x4381ce
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.00a34af3
mov ecx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x438189
shl ecx, 3
push ecx
push dword [esi]
push eax
call fcn.00a85f90
add esp, 0xc
push dword [esi]
call fcn.00a34afc
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.00a85f90
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.00a348e6
mov esp, ebp
pop ebp
ret 8
push 0xae6a6c
lea eax, [ebp - 0x2c8]
mov dword [ebp - 0x2c8], 0x7e5
push eax
call fcn.00a869cc
push 0xae6a6c
lea eax, [ebp - 0x2cc]
mov dword [ebp - 0x2cc], 0x7e5
push eax
call fcn.00a869cc
int3