Function at 0x180049d20
Capabilities:
Get file size

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x100]
sub rsp, 0x200
mov qword [rbp - 0x50], 0xfffffffffffffffe
mov qword [rsp + 0x250], rbx
mov rax, qword [0x18012c3a8]
xor rax, rsp
mov qword [rbp + 0xf0], rax
mov r13, r9
mov r12, r8
mov r15, rdx
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x48], rcx
mov esi, dword [rbp + 0x160]
cmp rdx, 0xffffffffffffffff
je 0x18004a1ff
test r8, r8
je 0x18004a1ff
test r9, r9
je 0x18004a1ff
xor r9d, r9d
lea r10d, [r9 + 8]
mov rcx, r8
lea rdx, [0x1800fcfb0]
mov r8, rdx
mov r11, rcx
test cl, 1
je 0x180049db7
inc r9
add r10, 4
add r10, qword [r8]
shr rcx, 1
add r8, 8
cmp r11, 2
jae 0x180049da5
mov eax, dword [r13]
cmp rax, r10
jb 0x18004a1ff
mov dword [r13 + 4], r9d
lea r9d, [r9*4 + 8]
mov rcx, r12
lea r8, [r13 + 0xa]
mov r10, rcx
test cl, 1
je 0x180049dff
mov word [r8 - 2], r9w
movzx eax, word [rdx]
mov word [r8], ax
add r9d, dword [rdx]
add r8, 4
shr rcx, 1
add rdx, 8
cmp r10, 2
jae 0x180049de4
call fcn.18005d170
mov rdi, qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
lea rax, [0x18004a8f0]
test esi, esi
cmovne rdi, rax
mov rax, qword [sym.imp.KERNEL32.dll_ReadFile]
lea rcx, [0x18004a950]
cmovne rax, rcx
mov qword [rsp + 0x50], rax
mov rbx, qword [sym.imp.KERNEL32.dll_GetFileSizeEx]
lea rcx, [0x1800335b0]
cmovne rbx, rcx
test rdi, rdi
je 0x18004a1ff
test rax, rax
je 0x18004a1ff
xor r14d, r14d
xor r9d, r9d
lea r8, [rbp - 0x70]
mov edx, r14d
mov rcx, r15
call rdi
test eax, eax
je 0x180049f1f
xor eax, eax
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x48]
cmp dword [rax + 0x40], r14d
je 0x180049eeb
test rbx, rbx
je 0x18004a1ff
lea rdx, [rsp + 0x40]
mov rcx, r15
call rbx
test eax, eax
je 0x180049f1f
lea rbx, vtable.IInternalReadFile.0
mov qword [rbp - 0x68], rbx
lea rax, vtable.CMyReadFileByHandle.0
mov qword [rbp - 0x68], rax
mov dword [rbp - 0x58], esi
mov rsi, qword [rsp + 0x38]
mov qword [rbp - 0x60], rsi
mov rax, qword [rsp + 0x48]
lea r9, [rax + 0x48]
lea r8, [rax + 0x44]
lea rdx, [rsp + 0x40]
lea rcx, [rbp - 0x68]
call fcn.1800566b0
nop
mov qword [rbp - 0x68], rbx
jmp 0x180049efd
mov rsi, r15
test rbx, rbx
je 0x180049efd
lea rdx, [rsp + 0x40]
mov rcx, r15
call rbx
mov rbx, qword [rsp + 0x48]
cmp dword [rbx + 0x40], 0
je 0x180049f3a
xor ebx, ebx
mov r14d, ebx
xor r9d, r9d
lea r8, [rbp - 0x70]
mov edx, ebx
mov rcx, rsi
call rdi
test eax, eax
jne 0x180049f3c
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x18004a204
movzx eax, ax
or eax, 0x80070000
jmp 0x18004a204
xor ebx, ebx
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x68], rbx
mov qword [rsp + 0x70], rbx
mov edx, 0x10000
lea rcx, [rsp + 0x60]
call fcn.1800479a0
mov rax, qword [rsp + 0x68]
mov rdi, qword [rsp + 0x60]
sub rax, rdi
cmp rax, 0x10000
je 0x180049f79
mov ebx, 0x8007000e
jmp 0x18004a1b1
mov r15, r12
and r15d, 1
je 0x180049f92
lea rcx, [rbp - 0x40]
call fcn.180072c00
mov qword [rsp + 0x78], rbx
jmp 0x180049f9c
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x78], rax
mov rax, r12
and eax, 2
mov qword [rbp - 0x80], rax
mov qword [rsp + 0x58], r15
je 0x180049fc5
lea rcx, [rbp + 0x20]
call fcn.180072f20
mov qword [rbp - 0x78], r15
lea rax, [r15 + 1]
mov qword [rsp + 0x58], rax
jmp 0x180049fce
mov rax, qword [rsp + 0x50]
mov qword [rbp - 0x78], rax
and r12d, 8
je 0x180049fe2
lea rcx, [rbp + 0x80]
call fcn.180073490
jmp 0x180049fec
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x58], rax
xor ebx, ebx
nop
mov qword [rsp + 0x20], 0
lea r9, [rsp + 0x30]
mov r8d, 0x10000
mov rdx, rdi
mov rcx, rsi
call qword [rsp + 0x50]
test eax, eax
jne 0x18004a03f
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x21
jne 0x18004a139
lea r9, [rsp + 0x30]
mov r8d, 0x10000
mov rdx, rdi
mov rcx, rsi
call fcn.1800247a0
test eax, eax
je 0x18004a139
mov r9d, dword [rsp + 0x30]
test r9d, r9d
je 0x18004a157
add rbx, r9
cmp rbx, qword [rsp + 0x40]
jg 0x18004a150
mov rcx, r14
add r14, r9
mov r8, qword [rsp + 0x48]
mov edx, dword [r8 + 0x44]
lea rax, [rdx + 4]
cmp rax, rcx
jbe 0x18004a0e0
cmp rdx, r14
jae 0x18004a0e0
test edx, edx
je 0x18004a0e0
cmp dword [r8 + 0x40], 0
je 0x18004a0e0
cmp dword [r8 + 0x48], 0
je 0x18004a0e0
lea r8d, [rdx + 1]
lea r10d, [r8 + 1]
lea r11d, [r10 + 1]
cmp rdx, rcx
jb 0x18004a0a4
mov eax, edx
sub rax, rcx
mov byte [rax + rdi], 0
mov eax, r8d
cmp rax, rcx
jb 0x18004a0b8
cmp rax, r14
jae 0x18004a0b8
sub rax, rcx
mov byte [rax + rdi], 0
mov eax, r10d
cmp rax, rcx
jb 0x18004a0cc
cmp rax, r14
jae 0x18004a0cc
sub rax, rcx
mov byte [rax + rdi], 0
mov eax, r11d
cmp rax, rcx
jb 0x18004a0e0
cmp rax, r14
jae 0x18004a0e0
sub rax, rcx
mov byte [rax + rdi], 0
test r15, r15
je 0x18004a0f9
mov r8, r9
mov rdx, rdi
lea rcx, [rbp - 0x40]
call fcn.180072c50
mov r9d, dword [rsp + 0x30]
cmp qword [rbp - 0x80], 0
je 0x18004a114
mov r8d, r9d
mov rdx, rdi
lea rcx, [rbp + 0x20]
call fcn.180072f80
mov r9d, dword [rsp + 0x30]
test r12, r12
mov rsi, qword [rsp + 0x38]
je 0x180049ff0
mov r8d, r9d
mov rdx, rdi
lea rcx, [rbp + 0x80]
call fcn.180073500
jmp 0x180049ff0
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
test eax, eax
jle 0x18004a1b1
movzx ebx, ax
or ebx, 0x80070000
jmp 0x18004a1b1
mov ebx, 0xd
jmp 0x18004a1b1
test r15, r15
je 0x18004a173
mov rax, qword [rsp + 0x78]
movzx ecx, word [r13 + rax*4 + 8]
add rcx, r13
lea rdx, [rbp - 0x40]
call fcn.180072a90
cmp qword [rbp - 0x80], 0
je 0x18004a190
mov rax, qword [rbp - 0x78]
movzx ecx, word [r13 + rax*4 + 8]
add rcx, r13
lea rdx, [rbp + 0x20]
call fcn.180072d90
test r12, r12
je 0x18004a1af
mov rax, qword [rsp + 0x58]
movzx ecx, word [r13 + rax*4 + 8]
add rcx, r13
lea rdx, [rbp + 0x80]
call fcn.180073170
xor ebx, ebx
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x18004a1fb
mov rdx, qword [rsp + 0x70]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x18004a1e4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18004a22e
call fcn.18008f874
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], 0
mov eax, ebx
jmp 0x18004a204
mov eax, 0x80070057
mov rcx, qword [rbp + 0xf0]
xor rcx, rsp
call fcn.18008f850
mov rbx, qword [rsp + 0x250]
add rsp, 0x200
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1800aee30
int3