Function at 0x437e70
Capabilities:
Get file system object information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xad0912
mov eax, dword fs:[0]
push eax
sub esp, 0x2d4
mov eax, dword [0xb1208c]
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 0x437ec6
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 0x437eb0
mov eax, dword [ebp + 8]
test al, 0x10
jne 0x4380eb
test edi, edi
js 0x4380eb
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 0x437f37
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 0x437f9f
jns 0x437f26
mov ebx, edi
mov edi, dword [ebp - 0x2cc]
jmp 0x437f2d
inc edi
mov dword [ebp - 0x2cc], edi
mov edx, dword [ebp - 0x2d0]
cmp edi, ebx
jne 0x437f00
movzx eax, word [edx]
xor ecx, ecx
test ax, ax
je 0x437fad
add eax, 0xffffffd0
cmp ax, 9
ja 0x437f55
movzx eax, word [edx + ecx*2 + 2]
inc ecx
test ax, ax
jne 0x437f41
test ecx, ecx
je 0x437fad
cmp word [edx + ecx*2], 0
jne 0x437fad
cmp dword [esi + 0x1c], 0
jne 0x437f97
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 0x4381ee
mov eax, dword [esi + 0xc]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0xc]
jmp 0x4381ee
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 0x438079
cmp ecx, 0x7fffffff
jae 0x43820c
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.00a59633
mov ecx, dword [esi + 0x10]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x438062
shl ecx, 2
push ecx
push dword [esi + 0xc]
push eax
call fcn.00aaaab0
add esp, 0xc
push dword [esi + 0xc]
call fcn.00a5963c
mov eax, dword [ebp - 0x2c8]
add esp, 4
mov dword [esi + 0xc], eax
mov dword [esi + 0x14], ebx
push 0x10
call fcn.00a595f5
mov ebx, eax
add esp, 4
mov dword [ebp - 0x2c8], ebx
mov byte [ebp - 4], 1
test ebx, ebx
je 0x4380ac
lea eax, [ebp - 0x2e0]
mov ecx, ebx
push eax
call fcn.0040a610
mov eax, dword [ebp - 0x2d4]
mov dword [ebx + 0xc], eax
jmp 0x4380ae
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.00aaaab0
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.00a5963c
add esp, 0x10
mov eax, esi
jmp 0x4381ee
mov edx, dword [esi + 4]
xor edi, edi
test edx, edx
je 0x43811b
mov ebx, dword [esi]
lea ecx, [edx + edi]
shr ecx, 1
mov ebx, dword [ebx + ecx*8]
cmp eax, ebx
je 0x438153
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 0x4380f6
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 0x4381be
cmp ecx, 0x7fffffff
jae 0x438227
jmp 0x43815e
mov eax, dword [esi]
mov eax, dword [eax + ecx*8 + 4]
jmp 0x4381ee
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.00a59633
mov ecx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x4381a9
shl ecx, 3
push ecx
push dword [esi]
push eax
call fcn.00aaaab0
add esp, 0xc
push dword [esi]
call fcn.00a5963c
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.00aaaab0
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.00a5942e
mov esp, ebp
pop ebp
ret 8
push 0xb0ad6c
lea eax, [ebp - 0x2c8]
mov dword [ebp - 0x2c8], 0x7e5
push eax
call fcn.00aab4ec
push 0xb0ad6c
lea eax, [ebp - 0x2cc]
mov dword [ebp - 0x2cc], 0x7e5
push eax
call fcn.00aab4ec
int3