Function at 0x140029710
Capabilities:
Get file size

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x160]
sub rsp, 0x260
mov qword [rsp + 0x70], 0xfffffffffffffffe
mov qword [rsp + 0x2b0], rbx
mov rax, qword [0x140160188]
xor rax, rsp
mov qword [rbp + 0x158], rax
mov qword [rbp + 0x50], r8
mov r13, rdx
mov rsi, rcx
cmp qword [rdx + 0x10], 0
jne 0x140029765
xor al, al
jmp 0x14002a02e
cmp qword [rdx + 0x30], 0
jne 0x140029776
cmp qword [rdx + 0x80], 0
je 0x14002975e
call fcn.14002c340
cmp qword [rax], 0
je 0x14002975e
mov rbx, qword [rsi]
test rbx, rbx
je 0x14002975e
xor r15d, r15d
mov qword [rbp + 0xa0], r15
add rbx, 0xb0
mov qword [rbp + 0xa0], rbx
je 0x1400297b2
mov rcx, qword [rbx]
test rcx, rcx
je 0x1400297b2
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov rax, qword [rsi]
movzx edi, byte [rax + 0xe8]
test rbx, rbx
je 0x1400297d6
mov rcx, qword [rbx]
test rcx, rcx
je 0x1400297cf
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbp + 0xa0], r15
test dil, dil
jne 0x14002975e
mov qword [rbp + 0x28], r15
mov rdi, qword [rsi]
add rdi, 0xb0
mov qword [rbp + 0x28], rdi
je 0x1400297fe
mov rcx, qword [rdi]
test rcx, rcx
je 0x1400297fe
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov rcx, qword [rsi]
call fcn.14002dd40
test rdi, rdi
je 0x140029820
mov rcx, qword [rdi]
test rcx, rcx
je 0x140029819
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdi, r15
mov qword [rbp + 0x28], r15
xor eax, eax
mov qword [rbp + 0x58], rax
mov qword [rbp + 0x60], rax
mov rax, qword [rsi]
lea r12, [rax + 0xe8]
mov qword [rbp + 0x58], r12
lea r14, [rax + 0xb0]
mov qword [rbp + 0x60], r14
test r12, r12
je 0x14002988b
test r14, r14
je 0x140029886
mov qword [rbp + 0xa8], r15
mov qword [rbp + 0xa8], r14
mov rcx, qword [r14]
test rcx, rcx
je 0x14002986a
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov byte [r12], 1
mov rcx, qword [r14]
test rcx, rcx
je 0x14002987d
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbp + 0xa8], r15
jmp 0x14002988b
mov byte [r12], 1
mov rdx, r13
lea rcx, [rbp - 0x80]
call fcn.1400032d0
nop
lea rdx, [r13 + 0x20]
lea rcx, [rbp - 0x60]
call fcn.1400032d0
nop
lea rdx, [r13 + 0x40]
lea rcx, [rbp - 0x40]
call fcn.1400032d0
nop
lea rdx, [r13 + 0x60]
lea rcx, [rbp - 0x20]
call fcn.1400032d0
nop
mov rax, qword [r13 + 0x80]
mov qword [rbp], rax
movzx eax, byte [r13 + 0x88]
mov byte [rbp + 8], al
mov rax, qword [r13 + 0x90]
mov qword [rbp + 0x10], rax
mov rax, qword [r13 + 0x98]
mov qword [rbp + 0x18], rax
mov qword [rbp + 0x40], r15
mov qword [rbp + 0x48], r15
mov qword [rbp + 0x40], r15
mov qword [rbp + 0x48], 7
mov word [rbp + 0x30], r15w
mov qword [rbp + 0x90], r15
mov qword [rbp + 0x98], r15
mov qword [rbp + 0x90], r15
mov qword [rbp + 0x98], 7
mov word [rbp + 0x80], r15w
mov qword [rbp + 0xc8], r15
mov qword [rbp + 0xd0], r15
mov qword [rbp + 0xc8], r15
mov qword [rbp + 0xd0], 7
mov word [rbp + 0xb8], r15w
mov qword [rbp + 0x20], r15
mov rbx, r15
mov qword [rbp + 0x20], rbx
cmp qword [rbp], 0
jne 0x140029c3d
lea rax, [rbp - 0x80]
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x80]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x80]
lea r8, [rbp - 0x60]
lea rdx, [rsp + 0x50]
mov rcx, rsi
call fcn.14002ace0
mov r15, rax
lea rax, [rbp + 0x30]
cmp rax, r15
je 0x1400299db
lea rcx, [rbp + 0x30]
call fcn.140003400
movups xmm0, xmmword [r15]
movups xmmword [rbp + 0x30], xmm0
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [rbp + 0x40], xmm1
xor eax, eax
mov qword [r15 + 0x10], rax
mov qword [r15 + 0x18], 7
mov word [r15], ax
mov rdx, qword [rsp + 0x68]
cmp rdx, 8
jb 0x140029a1d
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140029a18
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002a05e
call fcn.1400cea54
xor eax, eax
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], 7
mov word [rsp + 0x50], ax
cmp qword [rbp + 0x40], rax
je 0x140029e3b
cmp qword [rbp + 0x90], rax
je 0x140029e3b
cmp byte [rbp + 8], al
je 0x140029a5b
lea rdx, [rbp - 0x80]
lea rcx, [rbp + 0x30]
call fcn.14002b730
mov byte [rsp + 0x40], al
mov ecx, gethostbyname
call fcn.1400ce694
mov rbx, rax
mov qword [rsp + 0x48], rax
xor eax, eax
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
mov qword [rbx + 0x18], rax
mov qword [rbx + 0x20], rax
mov qword [rbx + 0x28], rax
lea rax, vtable.RC::ILibCurlDownloadDataEvent.0
mov qword [rbx], rax
lea rax, vtable.RC::RCLibCurlFileDataEvent.0
mov qword [rbx], rax
lea rcx, [rbx + 8]
lea rdx, [rbp + 0x30]
call fcn.1400032d0
nop
mov ecx, 8
call fcn.1400ce694
mov qword [rbp + 0x68], rax
mov r15, 0xffffffffffffffff
mov qword [rax], r15
lea rcx, [rbx + 0x28]
mov qword [rcx], rax
mov qword [rbp + 0x20], rbx
cmp byte [rsp + 0x40], 0
je 0x140029bd8
xor eax, eax
mov qword [rbp + 0xe0], rax
mov qword [rbp + 0xe8], rax
mov qword [rbp + 0xf0], rax
mov qword [rbp + 0xf8], rax
mov qword [rbp + 0x100], rax
mov qword [rbp + 0x118], rax
mov qword [rbp + 0x120], rax
mov qword [rbp + 0x118], rax
mov qword [rbp + 0x120], 7
mov word [rbp + 0x108], ax
mov qword [rbp + 0xb0], rax
lea ecx, [rax + 8]
call fcn.1400ce694
mov qword [rsp + 0x48], rax
mov qword [rax], r15
mov qword [rbp + 0xb0], rax
lea rdx, [rbp + 0xe0]
lea rcx, [rbp + 0x30]
call fcn.140021820
test al, al
je 0x140029b66
mov rcx, qword [rsi]
mov rax, qword [rbp + 0xe0]
mov qword [rcx + 0xf8], rax
lea rcx, [rbp + 0xb0]
call fcn.140021640
nop
mov rdx, qword [rbp + 0x120]
cmp rdx, 8
jb 0x140029bb9
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x108]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140029bb4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002a064
call fcn.1400cea54
xor eax, eax
mov qword [rbp + 0x118], rax
mov qword [rbp + 0x120], 7
mov word [rbp + 0x108], ax
lea rcx, [rbx + 0x28]
cmp qword [rbx + 0x18], 0
je 0x140029e2c
cmp qword [rcx], 0
je 0x140029e2c
mov dword [rsp + 0x20], 4
mov r9d, 1
mov r8d, 0x40000000
lea rdx, [rbx + 8]
call fcn.140025e70
test al, al
je 0x140029e2c
mov rcx, qword [rsi]
add rcx, 0x20
lea rax, [rbp + 0x30]
cmp rcx, rax
je 0x140029c39
lea rdx, [rbp + 0x30]
cmp qword [rbp + 0x48], 8
cmovae rdx, qword [rbp + 0x30]
mov r8, qword [rbp + 0x40]
call fcn.140003470
mov qword [rbp], rbx
mov rax, qword [rsi]
mov rcx, qword [rbp + 0x50]
mov qword [rax + 0x60], rcx
mov rcx, qword [rsi]
mov rax, qword [rbp + 0x10]
mov qword [rcx + 0xf0], rax
mov rax, qword [rsi]
cmp qword [rax + 0xf8], 0
jbe 0x140029cd2
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x140029cd2
cmp qword [rax], 0xffffffffffffffff
je 0x140029cd2
test rax, rax
je 0x140029c98
mov rcx, qword [rax]
cmp rcx, 0xffffffffffffffff
je 0x140029c98
lea rdx, [rbp + 0x130]
call qword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0xffffffff
jne 0x140029c98
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x140029cd2
cmp qword [rcx], 0xffffffffffffffff
je 0x140029cd2
mov qword [rbp + 0x68], 0
mov r9d, 2
lea r8, [rbp + 0x6c]
xor edx, edx
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
mov dword [rbp + 0x68], eax
cmp eax, 0xffffffff
jne 0x140029cd2
call qword [sym.imp.KERNEL32.dll_GetLastError]
xor eax, eax
mov qword [rbp + 0x70], rax
mov qword [rbp + 0x78], rax
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x70], xmm0
mov r15, qword [rsi + 8]
test r15, r15
je 0x140029d06
lock inc dword [r15 + 8]
mov r15, qword [rsi + 8]
mov rdi, qword [rbp + 0x28]
mov r14, qword [rbp + 0x60]
mov r12, qword [rbp + 0x58]
mov rbx, qword [rbp + 0x20]
mov rax, qword [rsi]
mov qword [rsp + 0x48], rax
mov qword [rbp + 0x70], rax
mov qword [rbp + 0x78], r15
lea rdx, [rbp - 0x80]
mov rcx, rsi
call fcn.14002a080
mov byte [rsp + 0x44], al
test rbx, rbx
je 0x140029d69
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x140029d52
mov rcx, qword [rax]
cmp rcx, 0xffffffffffffffff
je 0x140029d52
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x140029d52
mov rax, qword [rbx + 0x28]
mov qword [rax], 0xffffffffffffffff
mov rcx, rbx
xor ebx, ebx
mov qword [rbp + 0x20], rbx
test rcx, rcx
je 0x140029d69
mov rax, qword [rcx]
lea edx, [rbx + 1]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
cmp qword [r13 + 0x80], 0
jne 0x140029e40
mov rax, qword [rsp + 0x48]
sub rax, 0xffffffffffffff80
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xb8]
lea r8, [rbp + 0x80]
lea rdx, [rbp + 0x138]
call fcn.14002b370
nop
lea r9, [rbp + 0x30]
lea r8, [rbp + 0x138]
mov r13d, dword [rsp + 0x44]
movzx edx, r13b
mov rcx, rsi
call fcn.14002b580
movzx r13d, r13b
test al, al
mov esi, 0
cmove r13d, esi
mov rdx, qword [rbp + 0x150]
cmp rdx, 8
jb 0x140029e11
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x138]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140029e0c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002a06a
call fcn.1400cea54
mov qword [rbp + 0x148], rsi
mov qword [rbp + 0x150], 7
mov word [rbp + 0x138], si
jmp 0x140029e45
mov rsi, qword [rsi]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rsi + 0xa8], eax
xor r13b, r13b
jmp 0x140029ea6
mov r13d, dword [rsp + 0x44]
mov rax, qword [rsp + 0x48]
mov rcx, qword [rax + 0xb8]
test rcx, rcx
je 0x140029e5d
call qword [sym.imp.KERNEL32.dll_SetEvent]
nop
test r15, r15
je 0x140029ea6
mov rdi, 0xffffffffffffffff
mov eax, edi
lock xadd dword [r15 + 8], eax
sub eax, 1
jne 0x140029e96
mov rbx, qword [rbp + 0x78]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], edi
cmp edi, 1
jne 0x140029e96
mov rcx, qword [rbp + 0x78]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rbp + 0x20]
mov r12, qword [rbp + 0x58]
mov r14, qword [rbp + 0x60]
mov rdi, qword [rbp + 0x28]
test rbx, rbx
je 0x140029eba
mov rax, qword [rbx]
mov edx, 1
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp + 0xd0]
cmp rdx, 8
jb 0x140029f00
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0xb8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140029efb
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002a070
call fcn.1400cea54
xor ebx, ebx
mov qword [rbp + 0xc8], rbx
mov qword [rbp + 0xd0], 7
mov word [rbp + 0xb8], bx
mov rdx, qword [rbp + 0x98]
cmp rdx, 8
jb 0x140029f61
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x80]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140029f5c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002a076
call fcn.1400cea54
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0x98], 7
mov word [rbp + 0x80], bx
mov rdx, qword [rbp + 0x48]
cmp rdx, 8
jb 0x140029fba
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140029fb5
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002a058
call fcn.1400cea54
mov qword [rbp + 0x40], rbx
mov qword [rbp + 0x48], 7
mov word [rbp + 0x30], bx
lea rcx, [rbp - 0x80]
call fcn.140023360
nop
test r12, r12
je 0x14002a013
test r14, r14
je 0x14002a00e
mov qword [rbp + 0x50], rbx
mov qword [rbp + 0x50], r14
mov rcx, qword [r14]
test rcx, rcx
je 0x140029ff5
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov byte [r12], 0
mov rcx, qword [r14]
test rcx, rcx
je 0x14002a008
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbp + 0x50], rbx
jmp 0x14002a013
mov byte [r12], 0
test rdi, rdi
je 0x14002a02a
mov rcx, qword [rdi]
test rcx, rcx
je 0x14002a026
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbp + 0x28], rbx
movzx eax, r13b
mov rcx, qword [rbp + 0x158]
xor rcx, rsp
call fcn.1400ce670
mov rbx, qword [rsp + 0x2b0]
add rsp, 0x260
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1400d3cc4
nop
call fcn.1400d3cc4
int3
call fcn.1400d3cc4
nop
call fcn.1400d3cc4
nop
call fcn.1400d3cc4
nop
call fcn.1400d3cc4
int3