Function at 0x2bbf05530
Capabilities:
Get file system object information

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x798
mov rbx, qword [0x2bc041fd0]
xor r9d, r9d
lea r8, [0x2bbffa5a9]
mov rax, qword [rbx]
mov qword [rsp + 0x7e0], rcx
mov qword [rsp + 0x7e8], rdx
call qword [rax + 0xe50]
mov rdi, rax
mov rax, qword [rbx]
test rdi, rdi
je 0x2bbf05bc0
mov rcx, qword [rsp + 0x7e0]
lea r9, [0x2bbffa5d8]
lea r8, [0x2bbffa5df]
mov rdx, rdi
call qword [rax + 0x718]
test eax, eax
mov rax, qword [rbx]
jne 0x2bbf05870
mov rcx, qword [rsp + 0x7e0]
lea r9, [0x2bbffa5d8]
lea r8, [0x2bbffa5ec]
mov rdx, rdi
call qword [rax + 0x718]
mov r12d, eax
mov rax, qword [rbx]
test r12d, r12d
jne 0x2bbf05870
mov ecx, 0x48
lea rbp, [rsp + 0x4d0]
call qword [rax + 0x28]
mov r8d, 2
mov rdx, rbp
mov rcx, rdi
mov rsi, rax
mov rax, qword [rbx]
call qword [rax + 0x680]
cmp rax, 2
jne 0x2bbf05c78
cmp word [rsp + 0x4d0], 0
mov rax, qword [rbx]
jne 0x2bbf05c78
mov r8d, 2
mov rdx, rbp
mov rcx, rdi
call qword [rax + 0x680]
cmp rax, 2
jne 0x2bbf05c78
cmp word [rsp + 0x4d0], 1
mov rax, qword [rbx]
jne 0x2bbf05c78
mov r8d, 2
mov rdx, rbp
mov rcx, rdi
call qword [rax + 0x680]
cmp rax, 2
jne 0x2bbf05c78
movzx eax, word [rsp + 0x4d0]
mov rcx, rsi
lea edx, [rax - 1]
mov dword [rsi], eax
mov rax, qword [rbx]
movsxd rdx, edx
shl rdx, 6
add rdx, 0x48
call qword [rax + 0x38]
movsxd rcx, dword [rax]
mov rbp, rax
mov rax, qword [rbx]
shl rcx, 4
call qword [rax + 0x28]
mov r8d, dword [rbp]
mov rcx, rdi
mov rdx, rax
mov qword [rsp + 0x48], rax
mov rax, qword [rbx]
shl r8d, 4
movsxd r8, r8d
call qword [rax + 0x680]
movsxd rdx, dword [rbp]
mov eax, eax
mov r8, rdx
mov rcx, rdx
shl r8, 4
cmp rax, r8
jne 0x2bbf05a10
shl rdx, 6
mov rax, rbp
add rdx, rbp
test ecx, ecx
jle 0x2bbf05ad0
mov rcx, rdx
sub rcx, rbp
and ecx, 0x40
je 0x2bbf05700
lea rax, [rbp + 0x40]
mov qword [rbp + 0x18], 0
cmp rdx, rax
je 0x2bbf05719
nop dword [rax]
mov qword [rax + 0x18], 0
sub rax, 0xffffffffffffff80
mov qword [rax - 0x28], 0
cmp rdx, rax
jne 0x2bbf05700
mov rax, qword [rsp + 0x48]
lea r14, [rbp + 8]
lea rsi, [rax + 8]
jmp 0x2bbf0574a
mov qword [r14 + 0x38], rax
add r12d, 1
add rsi, 0x10
add r14, 0x40
cmp r12d, dword [rbp]
jge 0x2bbf05ad0
mov rax, qword [rbx]
mov ecx, dword [rsi]
call qword [rax + 0x28]
xor r8d, r8d
mov rcx, rdi
mov qword [r14 + 0x10], rax
mov eax, dword [rsi]
mov dword [r14 + 0x18], eax
mov rax, qword [rbx]
mov edx, dword [rsi + 4]
call qword [rax + 0xf68]
cmp rax, 0xffffffffffffffff
je 0x2bbf05af8
mov rax, qword [rbx]
mov rdx, qword [r14 + 0x10]
mov rcx, rdi
mov r8d, dword [rsi]
call qword [rax + 0x680]
cmp dword [rsi], eax
jne 0x2bbf05b78
mov rcx, qword [r14 + 0x10]
mov edx, dword [rcx + 8]
movd xmm0, dword [rcx + 4]
mov qword [r14 + 0x20], rcx
mov eax, edx
shr eax, 0x1f
add eax, edx
movzx edx, word [rcx + 0xe]
sar eax, 1
movd xmm1, eax
movzx eax, word [rcx + 0xc]
punpckldq xmm0, xmm1
imul eax, edx
movq qword [r14], xmm0
mov dword [r14 + 8], eax
call sym.FindDIBBits
mov r13d, dword [r14 + 4]
mov rcx, qword [r14 + 0x20]
mov qword [r14 + 0x28], rax
mov r15, rax
call sym.BytesPerLine
mov r8d, r13d
mov rcx, qword [r14 + 0x10]
imul r8d, eax
lea rdx, [r15 + r8]
mov qword [r14 + 0x30], rdx
test rcx, rcx
je 0x2bbf05868
mov edx, dword [r14 + 0x18]
mov dword [rsp + 0x30], 0
mov r9d, 0x30000
mov r8d, dword [rcx + 8]
mov eax, r8d
shr eax, 0x1f
add eax, r8d
mov r8d, 1
sar eax, 1
mov dword [rsp + 0x28], eax
mov eax, dword [rcx + 4]
mov dword [rsp + 0x20], eax
call qword [sym.imp.USER32.dll_CreateIconFromResourceEx]
test rax, rax
jne 0x2bbf05730
mov rax, qword [r14 + 0x20]
cmp word [rax + 0xe], 0x10
je 0x2bbf05868
mov edx, dword [r14 + 0x18]
mov rcx, qword [r14 + 0x10]
mov r9d, 0x30000
mov r8d, 1
call qword [sym.imp.USER32.dll_CreateIconFromResource]
jmp 0x2bbf05730
xor eax, eax
jmp 0x2bbf05730
xor r8d, r8d
mov rdx, rdi
xor ecx, ecx
call qword [rax + 0x1390]
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x7e8]
xor edx, edx
lea rdi, [rsp + 0x50]
mov rsi, qword [rax + 0x7d8]
call qword [rax + 0x1468]
mov rcx, qword [rsp + 0x7e0]
mov r8, rdi
mov rdx, rax
call rsi
mov rsi, rax
test rax, rax
je 0x2bbf05ab9
mov rax, qword [rbx]
lea r12, [rsp + 0x130]
mov rcx, r12
call qword [rax + 0x3e0]
mov rax, qword [rbx]
mov rcx, rsi
mov r8, r12
mov rdx, 0xffffffffffffffff
call qword [rax + 0xb28]
mov r9d, 0x168
xor edx, edx
lea r8, [rsp + 0x210]
mov rcx, rax
mov dword [rsp + 0x20], 0x101
mov rbp, qword [sym.imp.SHELL32.dll_SHGetFileInfoW]
call rbp
mov rcx, rdi
mov rsi, rax
mov rax, qword [rbx]
call qword [rax + 0x3d0]
mov rax, qword [rbx]
test rsi, rsi
je 0x2bbf05ab0
mov rcx, qword [rsp + 0x7e0]
call qword [rax + 0x6d8]
xor edx, edx
mov dword [rsp + 0x20], 0x100
mov rcx, qword [rsp + 0x130]
mov r9d, 0x168
lea r8, [rsp + 0x4d0]
call rbp
test rax, rax
je 0x2bbf05c18
mov rax, qword [rbx]
mov ecx, 0x88
call qword [rax + 0x28]
mov rbp, rax
test rax, rax
je 0x2bbf05cc8
lea rdi, [rbp + 0xc]
mov eax, ebp
mov qword [rbp + 4], 0
mov qword [rbp + 0x80], 0
and rdi, 0xfffffffffffffff8
sub eax, edi
lea ecx, [rax + 0x88]
xor eax, eax
shr ecx, 3
rep stosq qword [rdi], rax
mov rax, qword [0x2bbffb7b8]
mov dword [rbp], 2
mov dword [rbp + 0x10], 4
mov qword [rbp + 8], rax
mov rax, qword [rsp + 0x210]
mov dword [rbp + 0x50], 4
mov qword [rbp + 0x40], rax
mov rax, qword [0x2bbffb7c0]
mov qword [rbp + 0x48], rax
mov rax, qword [rsp + 0x4d0]
mov qword [rbp + 0x80], rax
mov rax, qword [rbx]
mov rcx, r12
call qword [rax + 0x3d0]
mov rax, qword [rbx]
mov ecx, 0x10
call qword [rax + 0x28]
mov qword [rax + 8], rbp
mov qword [rax], 1
jmp 0x2bbf05abb
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x7e0]
mov rsi, qword [rax + 0x768]
mov r12, qword [rax + 0x1220]
call qword [rax + 0x670]
lea rcx, str.error_reading_file:__s
mov rdx, rax
call r12
mov rcx, qword [rsp + 0x7e0]
mov rdx, rax
call rsi
mov rax, qword [rbx]
lea rsi, str.READ
mov rcx, qword [rsp + 0x7e0]
lea r8, [0x2bbffa626]
lea rdx, [0x2bbffa574]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], rsi
lea r9, str.ICON
call qword [rax + 0x730]
mov rax, qword [rbx]
xor r8d, r8d
mov rdx, rdi
xor ecx, ecx
call qword [rax + 0x1390]
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x48]
call qword [rax + 0x30]
mov rax, qword [rbx]
mov rcx, rbp
call qword [rax + 0x30]
jmp 0x2bbf0587e
mov rcx, r12
call qword [rax + 0x3d0]
xor eax, eax
add rsp, 0x798
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x48]
call qword [rax + 0x30]
mov rax, qword [rbx]
xor r8d, r8d
mov rdx, rdi
xor ecx, ecx
call qword [rax + 0x1390]
jmp 0x2bbf059f1
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x7e0]
mov r12, qword [rax + 0x1220]
mov rsi, qword [rax + 0x768]
call qword [rax + 0x670]
lea rcx, str.error_seeking_in_file:__s
mov rdx, rax
call r12
mov rcx, qword [rsp + 0x7e0]
mov rdx, rax
call rsi
mov rax, qword [rbx]
xor r8d, r8d
mov rdx, rdi
xor ecx, ecx
xor esi, esi
call qword [rax + 0x1390]
mov eax, dword [rbp]
test eax, eax
jle 0x2bbf05a95
nop
mov rax, rsi
shl rax, 6
mov rcx, qword [rbp + rax + 0x18]
test rcx, rcx
je 0x2bbf05b67
mov rax, qword [rbx]
call qword [rax + 0x30]
add rsi, 1
cmp dword [rbp], esi
jg 0x2bbf05b50
jmp 0x2bbf05a95
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x7e0]
mov r12, qword [rax + 0x1220]
mov rsi, qword [rax + 0x768]
call qword [rax + 0x670]
lea rcx, str.error_reading_file:__s
mov rdx, rax
call r12
mov rcx, qword [rsp + 0x7e0]
mov rdx, rax
call rsi
jmp 0x2bbf05b31
mov rbp, qword [rax + 0x1220]
mov rcx, qword [rsp + 0x7e0]
mov rdi, qword [rax + 0x768]
call qword [rax + 0x670]
mov rcx, qword [rsp + 0x7e8]
xor edx, edx
mov rsi, rax
mov rax, qword [rbx]
call qword [rax + 0x1468]
mov r8, rsi
lea rcx, str.error_opening_file___s__for_reading:__s
mov rdx, rax
call rbp
mov rcx, qword [rsp + 0x7e0]
mov rdx, rax
call rdi
jmp 0x2bbf0587e
mov rax, qword [rbx]
mov ecx, 0x48
call qword [rax + 0x28]
mov rsi, qword [sym.imp.USER32.dll_DestroyIcon]
mov rbp, rax
test rax, rax
je 0x2bbf05cd9
mov rax, qword [0x2bbffb7b8]
pxor xmm0, xmm0
mov dword [rbp], 1
movups xmmword [rbp + 4], xmm0
mov qword [rbp + 8], rax
mov rax, qword [rsp + 0x210]
movups xmmword [rbp + 0x34], xmm0
mov dword [rbp + 0x10], 4
mov qword [rbp + 0x40], rax
movups xmmword [rbp + 0x14], xmm0
movups xmmword [rbp + 0x24], xmm0
jmp 0x2bbf059e5
mov rax, qword [rbx]
mov dword [rsi], 0xffffffff
mov rdx, 0xffffffffffffffff
lea rcx, str.Invalid_file_header
mov rbp, qword [rax + 0x768]
call qword [rax + 0x1d0]
mov rcx, qword [rsp + 0x7e0]
mov rdx, rax
call rbp
mov rax, qword [rbx]
xor ecx, ecx
xor r8d, r8d
mov rdx, rdi
call qword [rax + 0x1390]
mov rax, qword [rbx]
mov rcx, rsi
call qword [rax + 0x30]
jmp 0x2bbf0587e
mov rcx, qword [rsp + 0x4d0]
mov rsi, qword [sym.imp.USER32.dll_DestroyIcon]
call rsi
mov rcx, qword [rsp + 0x210]
call rsi
mov rax, qword [rbx]
mov rcx, r12
call qword [rax + 0x3d0]
jmp 0x2bbf05ab9