Function at 0x621bf8
Capabilities:
Get file size

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x280
mov qword [rsp + 0xe8], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov r13, rdx
mov rsi, rcx
mov rax, qword [0x00862cb8]
cmp byte [rax + 0x2fb4], 0
jne 0x621c4f
mov rcx, qword [rax + 0xb8]
test rcx, rcx
je 0x621c4f
mov edx, 0x134
call fcn.0040a51c
jmp 0x621c55
mov eax, dword [rax + 0x28f4]
cmp eax, 1
sete bl
mov rdx, qword [r13]
add rdx, 0x68
lea rcx, [rsp + 0x198]
call fcn.00401f00
mov rcx, qword [rax + 0x48]
neg bl
sbb eax, eax
and eax, 0xe8000000
add eax, 0x20000000
and qword [rsp + 0x30], 0
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [r9 + 1]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
lea rax, [rsp + 0x198]
mov rcx, qword [rsp + 0x1e0]
cmp rcx, rax
je 0x621ce9
test rcx, rcx
je 0x621ce9
mov rdx, qword [rsp + 0x198]
sub rdx, rcx
sar rdx, 1
add rdx, rdx
cmp rdx, 0x100
jbe 0x621ce4
call fcn.006a4944
jmp 0x621ce9
call fcn.006a3610
mov rdi, qword [r13]
lea rax, [0x007955b8]
mov qword [rsp + 0x58], rax
lea rax, [0x007955c8]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], rbx
cmp rbx, 0xffffffffffffffff
jne 0x621da9
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea rcx, [rsp + 0x218]
call fcn.0058defc
nop
lea r8, [0x00795b68]
mov rdx, rax
lea rcx, [rsp + 0x1e8]
call fcn.00402658
nop
lea r8, [rdi + 0x68]
mov rdx, rax
lea rcx, [rsp + 0x248]
call fcn.00402448
mov rbx, rax
lea rcx, [rsp + 0x150]
call fcn.006a49e8
lea r11, [0x00798b08]
mov qword [rsp + 0x150], r11
mov rdx, rbx
lea rcx, [rsp + 0x168]
call fcn.004029b4
lea r11, [0x00798b08]
mov qword [rsp + 0x150], r11
lea rdx, [0x00850da0]
lea rcx, [rsp + 0x150]
call fcn.006ab82c
nop
lea rdx, [rsp + 0x44]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileSize]
or ecx, 0xffffffff
cmp eax, ecx
jne 0x621dcf
mov edx, ecx
lea rcx, [rsp + 0x44]
call fcn.00594950
mov r11, rax
jmp 0x621ddd
mov r11d, dword [rsp + 0x44]
shl r11, 0x20
mov eax, eax
or r11, rax
mov qword [rsi + 0x280], r11
mov rax, qword [r13]
mov qword [rax + 0x98], r11
and dword [rsp + 0x50], 0
xor eax, eax
mov dword [rsp + 0x54], eax
lea r9, [rsp + 0x50]
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileTime]
mov r11, qword [r13]
movabs rcx, 0xfe624e212ac18000
mov rax, qword [rsp + 0x50]
add rcx, rax
movabs rax, 0xd6bf94d5e57a42bd
mul rcx
shr rdx, 0x17
mov eax, edx
mov qword [r11 + 0xa0], rax
call fcn.00615ab8
mov r14, rax
xor r15d, r15d
xor r12d, r12d
mov edi, 0x100000
mov rdx, qword [0x00862cb8]
cmp byte [rdx + 0x307c], 0
jne 0x621e78
mov rcx, qword [rdx + 0xb8]
test rcx, rcx
je 0x621e78
mov edx, 0x1fc
call fcn.0040a51c
jmp 0x621e7e
mov eax, dword [rdx + 0x2c14]
test eax, eax
jle 0x621eed
call fcn.00615ab8
mov rdi, rax
mov rdx, qword [0x00862cb8]
cmp byte [rdx + 0x307c], 0
jne 0x621eb2
mov rcx, qword [rdx + 0xb8]
test rcx, rcx
je 0x621eb2
mov edx, 0x1fc
call fcn.0040a51c
jmp 0x621eb8
mov eax, dword [rdx + 0x2c14]
movsxd rcx, eax
shl rcx, 0x14
imul r12, r12, 0x3e8
xor edx, edx
mov rax, r12
div rcx
lea rbx, [rax + r14]
cmp rbx, rdi
jbe 0x621ee3
sub eax, edi
lea ecx, [r14 + rax]
call qword [sym.imp.KERNEL32.dll_Sleep]
mov r14, rbx
mov edi, 0x100000
jmp 0x621ef5
call fcn.00615ab8
mov r14, rax
test r15, r15
jle 0x621f08
cmp qword [rsi + 0x280], 0
je 0x6223f6
mov rbx, qword [rsi + 0x280]
cmp rbx, rdi
cmova rbx, rdi
mov ecx, gethostname
call fcn.006a494c
mov rbp, rax
test rax, rax
je 0x621f64
mov rax, qword [r13]
mov qword [rbp], rax
test rax, rax
je 0x621f3a
lock add dword [rax + 8], 1
mov qword [rbp + 0x10], r15
mov qword [rbp + 0x18], rbx
and qword [rbp + 0x20], 0
mov r9d, 4
mov r8d, 0x1000
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov qword [rbp + 8], rax
jmp 0x621f66
xor ebp, ebp
mov qword [rsp + 0x78], rbp
lea eax, [rbx + 0xfff]
mov ecx, 0xfffff000
and rax, rcx
mov qword [rsp + 0x80], rax
lea r8, [rsp + 0x80]
mov rdx, qword [rbp + 8]
lea rcx, [rsp + 0x58]
call fcn.00594a94
mov r12, rax
and dword [rbp + 0x30], 0
cmp rax, qword [rbp + 0x18]
jne 0x6220c8
lea rcx, [rsi + 0x1f8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
movsxd rcx, dword [rsi + 0x238]
shl rcx, 0x15
mov rax, qword [rsi + 0x228]
cmp rax, rcx
setae dil
lea rcx, [rsi + 0x1f8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test dil, dil
je 0x622028
or edx, 0xffffffff
mov rcx, qword [rsi + 0x230]
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea rcx, [rsi + 0x1f8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
movsxd r11, dword [rsi + 0x238]
shl r11, 0x15
mov rax, qword [rsi + 0x228]
cmp rax, r11
setae dil
lea rcx, [rsi + 0x1f8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test dil, dil
jne 0x621fe0
lea rcx, [rsi + 0x1f8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rcx, [rsi + 0x1a8]
mov rdx, qword [rcx + 0x20]
mov rax, qword [rcx + 0x30]
sub rax, 8
cmp rdx, rax
je 0x622067
xor eax, eax
mov byte [rsp + 0x2d0], al
mov byte [rsp + 0x2d8], al
mov qword [rdx], rbp
add qword [rcx + 0x20], 8
jmp 0x622071
lea rdx, [rsp + 0x78]
call fcn.00623270
mov rax, qword [rbp + 0x18]
add qword [rsi + 0x228], rax
lea rcx, [rsi + 0x1f8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor r8d, r8d
lea edx, [r8 + 1]
mov rcx, qword [rsi + 0x220]
call qword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
sub qword [rsi + 0x280], r12
add r15, r12
test r12, r12
je 0x6223f6
mov al, byte [0x008669f2]
test al, al
jne 0x6223f6
mov edi, 0x100000
jmp 0x621e50
mov r8, qword [r13]
add r8, 0x68
lea rdx, [0x008897c0]
lea rcx, [rsp + 0xf0]
call fcn.00402448
nop
lea r8, str.:_size_mismatch
mov rdx, rax
lea rcx, [rsp + 0x120]
call fcn.00402658
nop
xor r8d, r8d
mov rdx, rax
mov rcx, qword [0x00862cd0]
call fcn.00415954
nop
lea rax, [rsp + 0x120]
mov rcx, qword [rsp + 0x148]
cmp rcx, rax
je 0x62214b
test rcx, rcx
je 0x62214b
mov rdx, qword [rsp + 0x120]
sub rdx, rcx
cmp rdx, 0x100
jbe 0x622145
call fcn.006a4944
jmp 0x62214b
call fcn.006a3610
nop
lea rax, [rsp + 0xf0]
mov rcx, qword [rsp + 0x118]
cmp rcx, rax
je 0x622185
test rcx, rcx
je 0x622185
mov rdx, qword [rsp + 0xf0]
sub rdx, rcx
cmp rdx, 0x100
jbe 0x622180
call fcn.006a4944
jmp 0x622185
call fcn.006a3610
lea rcx, [rsi + 0x1f8]
mov qword [rsp + 0x70], rcx
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov rax, qword [rsi + 0x1a8]
mov r14d, 0x8000
cmp qword [rsi + 0x1c8], rax
je 0x62239a
mov r12d, 0x20
lea rcx, [rsp + 0xc8]
lea rdx, [rsi + 0x1c8]
mov r8, r12
call fcn.006a4bf0
mov rcx, qword [rsp + 0xc8]
cmp rcx, qword [rsp + 0xd0]
jne 0x6221fc
mov rax, qword [rsp + 0xe0]
mov rcx, qword [rax - 8]
mov qword [rsp + 0xd0], rcx
add rcx, 0x100
sub rcx, 8
mov qword [rsp + 0xc8], rcx
mov rcx, qword [rcx]
mov rax, qword [r13]
cmp qword [rcx], rax
jne 0x62239a
lea rcx, [rsp + 0xa8]
lea rdx, [rsi + 0x1c8]
mov r8, r12
call fcn.006a4bf0
mov rax, qword [rsp + 0xa8]
cmp rax, qword [rsp + 0xb0]
jne 0x62225c
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rax - 8]
mov qword [rsp + 0xb0], rcx
lea rax, [rcx + 0x100]
sub rax, 8
mov qword [rsp + 0xa8], rax
mov rax, qword [rax]
mov rcx, qword [rax + 0x18]
sub qword [rsi + 0x228], rcx
lea rcx, [rsp + 0x88]
lea rdx, [rsi + 0x1c8]
mov r8, r12
call fcn.006a4bf0
mov rcx, qword [rsp + 0x88]
cmp rcx, qword [rsp + 0x90]
jne 0x6222ba
mov rax, qword [rsp + 0xa0]
mov rcx, qword [rax - 8]
mov qword [rsp + 0x90], rcx
add rcx, 0x100
sub rcx, 8
mov qword [rsp + 0x88], rcx
mov rbx, qword [rcx]
test rbx, rbx
je 0x622317
mov rcx, qword [rbx + 0x20]
call fcn.006a5528
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x6222eb
mov r8d, r14d
xor edx, edx
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov rcx, qword [rbx]
test rcx, rcx
je 0x62230f
or eax, 0xffffffff
lock xadd dword [rcx + 8], eax
add eax, 0xffffffff
jne 0x62230f
test rcx, rcx
je 0x62230f
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
mov rcx, rbx
call fcn.006a4944
mov rax, qword [rsi + 0x1c8]
mov rcx, qword [rsi + 0x1d0]
cmp rax, rcx
je 0x62233d
add rax, 0xfffffffffffffff8
mov qword [rsi + 0x1c8], rax
xor eax, eax
mov byte [rsp + 0x40], al
jmp 0x622386
test rcx, rcx
je 0x62234c
mov edx, 0x100
call fcn.006a3610
mov rax, qword [rsi + 0x1e0]
sub rax, 8
mov qword [rsi + 0x1e0], rax
mov rax, qword [rax]
mov qword [rsi + 0x1d0], rax
add rax, 0x100
mov qword [rsi + 0x1d8], rax
sub rax, 8
mov qword [rsi + 0x1c8], rax
xor eax, eax
mov byte [rsp + 0x41], al
mov rax, qword [rsi + 0x1a8]
cmp qword [rsi + 0x1c8], rax
jne 0x6221b8
test rbp, rbp
je 0x6223ea
mov rcx, qword [rbp + 0x20]
call fcn.006a5528
mov rcx, qword [rbp + 8]
test rcx, rcx
je 0x6223bc
mov r8d, r14d
xor edx, edx
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov rcx, qword [rbp]
test rcx, rcx
je 0x6223e1
or eax, 0xffffffff
lock xadd dword [rcx + 8], eax
add eax, 0xffffffff
jne 0x6223e1
test rcx, rcx
je 0x6223e1
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
mov rcx, rbp
call fcn.006a4944
nop
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
lea rax, [0x007955b8]
mov qword [rsp + 0x58], rax
lea rax, [0x007955c8]
mov qword [rsp + 0x60], rax
lea rcx, [rsp + 0x58]
call fcn.0059492c
nop
mov rcx, qword [r13]
test rcx, rcx
je 0x62243e
or eax, 0xffffffff
lock xadd dword [rcx + 8], eax
add eax, 0xffffffff
jne 0x62243e
test rcx, rcx
je 0x62243e
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
mov rbx, qword [rsp + 0x2c0]
add rsp, 0x280
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret