Function at 0x180072670
Capabilities:
Get file size

Disassembly:
mov rax, rsp
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rax - 0x5f]
sub rsp, 0x90
mov qword [rbp - 0x19], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rsi
mov rax, qword [0x18028e088]
xor rax, rsp
mov qword [rbp + 0x27], rax
mov rdi, rdx
mov rbx, rcx
xor r15d, r15d
mov qword [rbp + 0x1f], r15
mov rsi, qword [rcx + 8]
mov qword [rbp + 0x1f], rsi
test rsi, rsi
je 0x1800723dd
mov rcx, qword [rsi]
test rcx, rcx
je 0x1800723dd
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov rdx, rdi
mov rcx, rbx
call fcn.1800656e0
cmp dword [rbx + 0x10], 0
je 0x180072626
mov rcx, qword [0x1802963d8]
test rcx, rcx
je 0x180072626
mov rax, qword [rcx]
call qword [rax + 0x28]
mov rdi, rax
test rax, rax
je 0x180072626
xor eax, eax
mov qword [rbp - 1], rax
mov qword [rbp + 7], rax
mov qword [rbp + 0xf], rax
mov qword [rbp + 0x17], rax
lea r12, vtable.RC::RCBuffer_unsigned_char_.0
mov qword [rbp - 1], r12
mov qword [rbp + 7], r15
mov qword [rbp + 0xf], r15
mov qword [rbp + 0x17], r15
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x29], xmm0
movdqa xmm1, xmmword [0x18023b300]
movdqu xmmword [rbp - 0x29], xmm1
mov word [rbp - 0x39], r15w
lea r8d, [rax + 3]
lea rdx, [0x1802238f8]
lea rcx, [rbp - 0x39]
call fcn.1800089e0
nop
mov rax, qword [rdi]
lea r9, [rbp - 0x39]
lea r8, [rbp - 1]
mov edx, dword [rbx + 0x10]
mov rcx, rdi
call qword [rax + 0x30]
movzx edi, al
mov rdx, qword [rbp - 0x21]
cmp rdx, 8
jb 0x1800724c3
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x39]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800724be
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18007266a
call fcn.1801ccd54
movdqa xmm0, xmmword [0x18023b300]
movdqu xmmword [rbp - 0x29], xmm0
mov word [rbp - 0x39], r15w
test dil, dil
je 0x18007260c
mov rax, qword [rbx + 0x20]
mov rcx, qword [rax]
test rcx, rcx
je 0x18007260c
mov rax, qword [rcx]
mov r8d, dword [rbp + 7]
mov rdx, qword [rbp + 0xf]
call qword [rax + 0x10]
test al, al
je 0x18007260c
mov rax, qword [rbx + 0x20]
mov rcx, qword [rax]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov r14d, eax
mov rcx, qword [rbx + 0x20]
mov rcx, qword [rcx]
mov rdx, qword [rcx]
call qword [rdx + 0x28]
mov edi, eax
xor eax, eax
mov qword [rbp - 0x11], rax
mov qword [rbp - 9], rax
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x11], xmm0
mov rcx, qword [rbx + 0x20]
mov rcx, qword [rcx]
mov r8, qword [rcx]
xor edx, edx
call qword [r8 + 0x40]
mov rdx, rax
lea rcx, [rbp - 0x11]
call fcn.18004f400
test r14d, r14d
je 0x1800725d2
test edi, edi
je 0x1800725d2
cmp qword [rbp - 0x11], 0
je 0x1800725d2
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x68]
mov dword [rbx + 0x18], r14d
mov dword [rbx + 0x14], edi
mov rcx, qword [rbx + 0x20]
add rcx, 0x10
lea rdx, [rbp - 0x11]
call fcn.180072e00
mov rdx, qword [rbx + 0x20]
mov rcx, qword [rdx]
mov rax, qword [rcx]
add rdx, 0x28
call qword [rax + 0x30]
nop
mov rcx, qword [rbp - 9]
test rcx, rcx
je 0x1800725ce
mov edi, 0xffffffff
mov eax, edi
lock xadd dword [rcx + 8], eax
cmp eax, 1
jne 0x1800725ce
mov rbx, qword [rbp - 9]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], edi
cmp edi, 1
jne 0x1800725ce
mov rcx, qword [rbp - 9]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov bl, 1
jmp 0x18007260e
mov rcx, qword [rbp - 9]
test rcx, rcx
je 0x18007260c
mov edi, 0xffffffff
mov eax, edi
lock xadd dword [rcx + 8], eax
cmp eax, 1
jne 0x18007260c
mov rbx, qword [rbp - 9]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], edi
cmp edi, 1
jne 0x18007260c
mov rcx, qword [rbp - 9]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor bl, bl
mov qword [rbp - 1], r12
mov rcx, qword [rbp + 0xf]
test rcx, rcx
je 0x180072628
call fcn.1801ccd54
mov qword [rbp + 0xf], r15
jmp 0x180072628
xor bl, bl
test rsi, rsi
je 0x18007263f
mov rcx, qword [rsi]
test rcx, rcx
je 0x18007263b
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbp + 0x1f], r15
movzx eax, bl
mov rcx, qword [rbp + 0x27]
xor rcx, rsp
call fcn.1801ccd30
lea r11, [rsp + 0x90]
mov rbx, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
call fcn.1801d1a6c
nop
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xb0
mov qword [rbp - 0x49], 0xfffffffffffffffe
mov qword [rsp + 0x100], rbx
mov rax, qword [0x18028e088]
xor rax, rsp
mov qword [rbp + 0x17], rax
mov rdi, rdx
mov r14, rcx
xor r12d, r12d
mov qword [rbp + 0xf], r12
mov r15, qword [rcx + 8]
mov qword [rbp + 0xf], r15
test r15, r15
je 0x1800726cf
mov rcx, qword [r15]
test rcx, rcx
je 0x1800726cf
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
cmp qword [rdi + 0x10], 0
je 0x180072a0d
mov rax, qword [r14 + 0x20]
cmp qword [rax], 0
je 0x180072a0d
xor eax, eax
mov qword [rbp - 0x29], rax
mov qword [rbp - 0x21], rax
mov rbx, r12
mov qword [rbp - 0x29], rbx
mov qword [rbp - 0x21], r12
cmp qword [rdi + 0x18], 8
jb 0x180072707
mov rdi, qword [rdi]
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [r9 + 1]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CreateFileW]
cmp rax, 0xffffffffffffffff
jne 0x180072746
call fcn.180004a40
test eax, eax
js 0x1800729fb
jmp 0x18007274d
mov rbx, rax
mov qword [rbp - 0x29], rax
xor eax, eax
mov qword [rbp - 0x19], rax
mov qword [rbp - 0x11], rax
mov qword [rbp - 9], rax
mov qword [rbp - 1], rax
mov qword [rbp + 7], rax
mov rsi, r12
mov qword [rbp - 0x19], r12
mov qword [rbp - 9], r12
lea rdx, [rbp - 0x3d]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [rbp - 0x41], eax
mov r9, qword [rbp - 0x41]
shr r9, 0x20
mov qword [rsp + 0x28], r12
mov dword [rsp + 0x20], eax
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov rdi, rax
mov qword [rbp - 9], rax
test rax, rax
jne 0x1800727b4
call fcn.180004a40
mov r12d, eax
jmp 0x180072807
mov rax, qword [rbp - 0x41]
mov qword [rbp - 0x11], rax
mov dword [rbp + 7], 4
mov qword [rbp - 1], r12
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 4]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_MapViewOfFileEx]
mov rsi, rax
mov qword [rbp - 0x19], rax
test rax, rax
jne 0x180072813
call fcn.180004a40
mov r12d, eax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor edi, edi
mov qword [rbp - 9], rdi
test r12d, r12d
js 0x1800729b7
xor r12d, r12d
mov rax, qword [r14 + 0x20]
mov rcx, qword [rax]
mov rax, qword [rcx]
mov r8d, dword [rbp - 0x11]
mov rdx, rsi
call qword [rax + 0x10]
test al, al
je 0x1800729ba
mov rax, qword [r14 + 0x20]
mov rcx, qword [rax]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov r13d, eax
mov rcx, qword [r14 + 0x20]
mov rcx, qword [rcx]
mov rdx, qword [rcx]
call qword [rdx + 0x28]
mov r12d, eax
xor eax, eax
mov qword [rbp - 0x39], rax
mov qword [rbp - 0x31], rax
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x39], xmm0
mov rcx, qword [r14 + 0x20]
mov rcx, qword [rcx]
mov r8, qword [rcx]
xor edx, edx
call qword [r8 + 0x40]
mov rdx, rax
lea rcx, [rbp - 0x39]
call fcn.18004f400
test r13d, r13d
je 0x180072971
test r12d, r12d
je 0x180072971
cmp qword [rbp - 0x39], 0
je 0x180072971
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x68]
mov dword [r14 + 0x18], r13d
mov dword [r14 + 0x14], r12d
mov rcx, qword [r14 + 0x20]
add rcx, 0x10
lea rdx, [rbp - 0x39]
call fcn.180072e00
mov rdx, qword [r14 + 0x20]
mov rcx, qword [rdx]
mov rax, qword [rcx]
add rdx, 0x28
call qword [rax + 0x30]
nop
mov rcx, qword [rbp - 0x31]
test rcx, rcx
je 0x180072914
mov edi, 0xffffffff
mov eax, edi
lock xadd dword [rcx + 8], eax
sub eax, 1
jne 0x180072908
mov rbx, qword [rbp - 0x31]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], edi
cmp edi, 1
jne 0x180072908
mov rcx, qword [rbp - 0x31]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rsi, qword [rbp - 0x19]
mov rdi, qword [rbp - 9]
mov rbx, qword [rbp - 0x29]
xor r12d, r12d
mov r14d, r12d
test rsi, rsi
je 0x180072938
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
test eax, eax
jne 0x180072934
call fcn.180004a40
mov r14d, eax
mov qword [rbp - 0x19], r12
test rdi, rdi
je 0x180072958
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x180072954
test r14d, r14d
js 0x180072954
call fcn.180004a40
mov qword [rbp - 9], r12
test rbx, rbx
je 0x18007296a
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 0x29], r12
mov bl, 1
jmp 0x180072a0f
mov rcx, qword [rbp - 0x31]
test rcx, rcx
je 0x1800729b7
mov edi, 0xffffffff
mov eax, edi
lock xadd dword [rcx + 8], eax
sub eax, 1
jne 0x1800729ab
mov rbx, qword [rbp - 0x31]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], edi
cmp edi, 1
jne 0x1800729ab
mov rcx, qword [rbp - 0x31]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rsi, qword [rbp - 0x19]
mov rdi, qword [rbp - 9]
mov rbx, qword [rbp - 0x29]
xor r12d, r12d
mov r14d, r12d
test rsi, rsi
je 0x1800729db
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
test eax, eax
jne 0x1800729d7
call fcn.180004a40
mov r14d, eax
mov qword [rbp - 0x19], r12
test rdi, rdi
je 0x1800729fb
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x1800729f7
test r14d, r14d
js 0x1800729f7
call fcn.180004a40
mov qword [rbp - 9], r12
test rbx, rbx
je 0x180072a0d
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 0x29], r12
xor bl, bl
test r15, r15
je 0x180072a26
mov rcx, qword [r15]
test rcx, rcx
je 0x180072a22
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbp + 0xf], r12
movzx eax, bl
mov rcx, qword [rbp + 0x17]
xor rcx, rsp
call fcn.1801ccd30
mov rbx, qword [rsp + 0x100]
add rsp, 0xb0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret