Function at 0x1402ea470
Capabilities:
Create thread

Disassembly:
mov rax, rsp
mov dword [rax + 0x18], r8d
mov qword [rax + 0x10], rdx
push rdi
sub rsp, 0x90
mov qword [rax - 0x10], rbx
mov rdi, rdx
mov qword [rax - 0x18], rbp
mov rbx, rcx
mov ebp, dword [rcx + 0x1c]
mov qword [rax - 0x20], rsi
xor esi, esi
mov qword [rax - 0x28], r12
mov r12, rdx
mov qword [rax - 0x30], r13
mov rcx, r12
mov r13d, r8d
mov qword [rsp + 0x38], rdx
mov r8d, ebp
mov qword [rax - 0x38], r14
imul r8d, r13d
xor edx, edx
mov qword [rax - 0x40], r15
mov dword [rsp + 0xb8], ebp
mov dword [rsp + 0xa0], esi
mov dword [rsp + 0x30], esi
shl r8, 2
call fcn.140328dd0
cmp dword [rbx + 0x230], esi
je 0x1402ea622
cmp qword [rbx + 0x228], rsi
jne 0x1402ea622
lea r14, [rbx + 0x248]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea r15, [rbx + 0x240]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_InitializeConditionVariable]
movsxd rcx, dword [rbx + 0x230]
lea edx, [rsi + 0x58]
call fcn.14032cd1c
mov rcx, rax
mov qword [rbx + 0x228], rax
mov eax, dword [rbx + 0x230]
mov ebp, esi
test eax, eax
jle 0x1402ea606
lea r12, [rbx + 0x234]
lea r13, [rbx + 0x238]
nop dword [rax]
mov qword [rcx + rsi + 0x48], r14
mov rax, qword [rbx + 0x228]
mov qword [rax + rsi + 0x38], r15
mov rax, qword [rbx + 0x228]
mov qword [rax + rsi + 0x10], r12
mov rax, qword [rbx + 0x228]
mov qword [rax + rsi + 0x18], r13
mov rcx, qword [rbx + 0x228]
movsxd rax, ebp
add rcx, 0x40
imul rdi, rax, 0x58
add rcx, rdi
call qword [sym.imp.KERNEL32.dll_InitializeConditionVariable]
mov r9, qword [rbx + 0x228]
lea r8, [0x1402eb2d0]
xor eax, eax
add r9, rdi
mov qword [rsp + 0x28], rax
xor edx, edx
xor ecx, ecx
mov dword [rsp + 0x20], eax
call fcn.1403381f8
mov rcx, rax
mov rax, qword [rbx + 0x228]
mov qword [rax + rsi + 0x50], rcx
mov rcx, qword [rbx + 0x228]
cmp qword [rcx + rsi + 0x50], 0
je 0x1402ea5ed
mov eax, dword [rbx + 0x230]
inc ebp
add rsi, 0x58
cmp ebp, eax
jl 0x1402ea550
jmp 0x1402ea5f5
mov dword [rbx + 0x230], ebp
mov eax, ebp
mov r13d, dword [rsp + 0xb0]
xor esi, esi
mov r12, qword [rsp + 0x38]
test eax, eax
jne 0x1402ea61b
mov rcx, qword [rbx + 0x228]
call fcn.14032cd24
mov qword [rbx + 0x228], rsi
mov ebp, dword [rsp + 0xb8]
mov dword [rbx + 0x238], esi
test r13d, r13d
je 0x1402eafbc
mov rax, qword [rbx + 0x1e8]
mov r15d, esi
mov r14, qword [rax]
mov edi, dword [r14 + 0x1c]
test edi, edi
je 0x1402ea670
test dword [r14 + 0x20], 0x800
je 0x1402ea670
movzx ecx, byte [r14 + 0x12]
mov eax, dword [r14 + 0x18]
shl rcx, 0x20
add rcx, rdi
add rcx, rax
cmp qword [r14 + 0xb0], rcx
jl 0x1402ea82c
cmp dword [rbx + 0x70], 0x1000000
jae 0x1402eafbc
mov rcx, rbx
call fcn.1402ea300
mov rax, qword [rbx + 0x90]
mov rcx, qword [rbx + 0x98]
call qword [rax + 0x10]
mov rdx, qword [rbx + 0x98]
lea r8, [r14 + 8]
mov rcx, qword [rbx + 0x90]
mov rsi, rax
call fcn.1402ed2b0
cmp eax, 0xffffffff
je 0x1402eafbc
mov eax, eax
add rax, rsi
mov qword [rbx + 0xb8], rax
mov ecx, dword [r14 + 0xc]
add ecx, 8
call fcn.14033c138
mov qword [r14 + 0x78], rax
test rax, rax
je 0x1402eafbc
movups xmm0, xmmword [r14 + 8]
movups xmmword [rax], xmm0
movups xmm1, xmmword [r14 + 0x18]
movups xmmword [rax + 0x10], xmm1
mov r8d, dword [r14 + 0xc]
mov rdx, qword [r14 + 0x78]
sub r8d, 0x18
mov rax, qword [rbx + 0x90]
add rdx, 0x20
mov rcx, qword [rbx + 0x98]
call qword [rax]
mov ecx, eax
mov eax, dword [r14 + 0xc]
sub eax, 0x18
cmp ecx, eax
jne 0x1402eaf74
mov edx, dword [rbx + 0xe4]
mov rcx, qword [r14 + 0x78]
shr edx, 0xb
not edx
and edx, 1
call fcn.1402ec690
xor esi, esi
test eax, eax
jne 0x1402ea75e
mov rax, qword [r14 + 0x78]
mov dword [r14 + 0xc], 0x18
mov dword [r14 + 0x1c], esi
movups xmm0, xmmword [r14 + 8]
movups xmmword [rax], xmm0
movups xmm1, xmmword [r14 + 0x18]
movups xmmword [rax + 0x10], xmm1
test byte [rbx + 0xe4], 0x20
je 0x1402ea774
mov qword [r14 + 0xb0], rsi
xor al, al
mov ecx, esi
jmp 0x1402ea792
mov eax, dword [r14 + 0x18]
movzx ecx, byte [r14 + 0x12]
shl rcx, 0x20
sub rcx, qword [rbx + 0xd0]
add rcx, rax
mov rax, rcx
sar rax, 0x20
mov dword [r14 + 0x18], ecx
mov byte [r14 + 0x12], al
mov rax, qword [r14 + 0x78]
movups xmm0, xmmword [r14 + 8]
movups xmmword [rax], xmm0
movups xmm1, xmmword [r14 + 0x18]
movups xmmword [rax + 0x10], xmm1
mov edx, dword [r14 + 0x1c]
mov dword [r14 + 0x188], esi
test edx, edx
je 0x1402ea7fc
movzx ecx, byte [r14 + 0x12]
mov eax, dword [r14 + 0x18]
shl rcx, 0x20
add rcx, rax
cmp qword [r14 + 0xb0], rcx
je 0x1402ea7e1
inc dword [rbx + 0xd8]
mov edx, dword [r14 + 0x1c]
test edx, edx
je 0x1402ea7fc
cmp dword [rbx + 0xe0], 0
je 0x1402ea7fc
xor edx, edx
mov rcx, rbx
call fcn.1402ed410
mov edx, dword [r14 + 0x1c]
mov edi, edx
test edx, edx
jne 0x1402ea834
cmp dword [r14 + 0x188], edx
jne 0x1402ea81d
mov rcx, rbx
call fcn.1402eda20
test eax, eax
jne 0x1402ea81d
inc dword [rbx + 0xd8]
mov edi, dword [r14 + 0x1c]
mov dword [r14 + 0x188], 1
test edi, edi
je 0x1402eaef9
mov r8d, dword [r14 + 0x20]
bt r8d, 0xb
jae 0x1402eaef9
movzx ecx, byte [r14 + 0x12]
mov edx, dword [r14 + 0x18]
mov r10d, ecx
mov r9, qword [r14 + 0xb0]
shl r10, 0x20
mov eax, edi
add rax, rdx
add rax, r10
cmp r9, rax
jge 0x1402eaef9
shl rcx, 0x20
lea rax, [rdx + r10]
sub ecx, r9d
cmp r9, rax
jge 0x1402ea8e7
add edx, ecx
sar r8d, 0x1f
and r8d, 0x55
lea eax, [rdx - 1]
cmp eax, 0x3ffff
ja 0x1402eaf09
cmp edx, r13d
mov eax, r13d
cmovbe eax, edx
mov ecx, eax
add rax, r9
add dword [rsp + 0x30], ecx
sub r13d, ecx
mov qword [r14 + 0xb0], rax
mov eax, dword [rbx + 0xec]
test eax, eax
mov dword [rsp + 0xb0], r13d
cmove eax, ebp
imul eax, ecx
test eax, eax
je 0x1402eaef9
mov edx, eax
mov rdi, r12
movsxd rax, r8d
mov ecx, edx
rep stosd dword [rdi], eax
lea r12, [r12 + rdx*4]
mov qword [rsp + 0x38], r12
jmp 0x1402eaef9
add ecx, edi
mov edi, dword [rsp + 0xb0]
add ecx, edx
cmp ecx, edi
cmovbe r13d, ecx
cmp dword [r14 + 0x188], 0
jne 0x1402ea916
xor edx, edx
mov rcx, rbx
call fcn.1402eda20
test eax, eax
jne 0x1402ea916
inc dword [rbx + 0xd8]
mov dword [r14 + 0x188], 1
mov eax, dword [rbx + 0xec]
test eax, eax
jne 0x1402ead35
test dword [r14 + 0x20], 0x1000
jne 0x1402ead35
lea edx, [r13*8]
lea ecx, [rax + 1]
call fcn.14032cd1c
mov qword [rsp + 0x40], rax
mov ebp, esi
mov r12, rsi
nop word [rax + rax]
mov eax, dword [rbx + 0x1d8]
mov rcx, qword [rbx + 0x1e8]
cmp r15d, eax
jne 0x1402eab0c
inc eax
movsxd rdx, eax
shl rdx, 3
call fcn.1403320d4
mov qword [rbx + 0x1e8], rax
test rax, rax
je 0x1402eac45
mov edx, 0x8f8
mov ecx, 1
call fcn.14032cd1c
movsxd rcx, dword [rbx + 0x1d8]
mov r14, rax
mov rax, qword [rbx + 0x1e8]
mov qword [rax + rcx*8], r14
inc dword [rbx + 0x1d8]
test r14, r14
je 0x1402eac45
mov qword [r14], rbx
lea r8, [r14 + 8]
mov dword [r14 + 0x74], r15d
mov rdx, qword [rbx + 0x98]
mov rcx, qword [rbx + 0x90]
call fcn.1402ed2b0
cmp eax, 0xffffffff
je 0x1402eac17
mov ecx, dword [r14 + 0xc]
add ecx, 8
call fcn.14033c138
mov qword [r14 + 0x78], rax
test rax, rax
je 0x1402eac45
movups xmm0, xmmword [r14 + 8]
movups xmmword [rax], xmm0
movups xmm1, xmmword [r14 + 0x18]
movups xmmword [rax + 0x10], xmm1
mov r8d, dword [r14 + 0xc]
mov rdx, qword [r14 + 0x78]
sub r8d, 0x18
mov rax, qword [rbx + 0x90]
add rdx, 0x20
mov rcx, qword [rbx + 0x98]
call qword [rax]
mov ecx, eax
mov eax, dword [r14 + 0xc]
sub eax, 0x18
cmp ecx, eax
jne 0x1402eac17
mov edx, dword [rbx + 0xe4]
mov rcx, qword [r14 + 0x78]
shr edx, 0xb
not edx
and edx, 1
call fcn.1402ec690
test eax, eax
jne 0x1402eaa85
mov rax, qword [r14 + 0x78]
mov dword [r14 + 0xc], 0x18
mov dword [r14 + 0x1c], esi
movups xmm0, xmmword [r14 + 8]
movups xmmword [rax], xmm0
movups xmm1, xmmword [r14 + 0x18]
movups xmmword [rax + 0x10], xmm1
test byte [rbx + 0xe4], 0x20
je 0x1402eaa9b
mov qword [r14 + 0xb0], rsi
xor al, al
mov ecx, esi
jmp 0x1402eaab9
mov eax, dword [r14 + 0x18]
movzx ecx, byte [r14 + 0x12]
shl rcx, 0x20
sub rcx, qword [rbx + 0xd0]
add rcx, rax
mov rax, rcx
sar rax, 0x20
mov dword [r14 + 0x18], ecx
mov byte [r14 + 0x12], al
mov rax, qword [r14 + 0x78]
movups xmm0, xmmword [r14 + 8]
movups xmmword [rax], xmm0
movups xmm1, xmmword [r14 + 0x18]
movups xmmword [rax + 0x10], xmm1
cmp dword [rbx + 0xe0], 0
je 0x1402eaaea
mov edx, r15d
mov rcx, rbx
call fcn.1402ed410
mov edx, r15d
mov rcx, rbx
call fcn.1402eda20
test eax, eax
jne 0x1402eaaff
inc dword [rbx + 0xd8]
mov dword [r14 + 0x188], 1
jmp 0x1402eab10
mov r14, qword [rcx + r12]
mov eax, dword [rbx + 0x230]
test eax, eax
je 0x1402eab7c
cmp qword [rbx + 0x228], 0
je 0x1402eab7c
cmp eax, 4
jge 0x1402eab4f
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [rbx + 0x234]
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
je 0x1402eab7c
xor esi, esi
cmp dword [r14 + 0xc0], 0
jne 0x1402eab7c
test dword [r14 + 0x20], 0x1000
jne 0x1402eab7c
mov rdx, qword [rsp + 0x38]
mov r9d, r13d
mov r8d, ebp
mov dword [rsp + 0x20], esi
mov rcx, r14
call fcn.1402eb090
jmp 0x1402eabc8
mov r9, qword [rsp + 0x40]
mov r8d, ebp
mov rdx, qword [rsp + 0x38]
mov rcx, r14
mov dword [rsp + 0x20], r13d
call fcn.1402eb1c0
mov eax, dword [r14 + 0x1c]
movzx ecx, byte [r14 + 0x12]
shl rcx, 0x20
add rcx, rax
mov eax, dword [r14 + 0x18]
add rcx, rax
cmp qword [r14 + 0xb0], rcx
jne 0x1402eabc6
cmp dword [r14 + 0xc0], 0
je 0x1402eabc6
inc dword [rbx + 0xd8]
xor esi, esi
mov ecx, dword [r14 + 0x20]
mov edx, dword [rsp + 0xb8]
test cl, 4
je 0x1402eabdc
inc ebp
jmp 0x1402eabf4
lea eax, [rdx - 1]
cmp ebp, eax
jne 0x1402eabf1
inc dword [rbx + 0xd8]
mov ecx, dword [r14 + 0x20]
inc ebp
jmp 0x1402eabf4
add ebp, 2
bt ecx, 0xc
jb 0x1402eac45
mov eax, dword [rbx + 0x1dc]
dec eax
cmp r15d, eax
je 0x1402eac45
cmp ebp, edx
je 0x1402eac45
inc r15d
add r12, 8
jmp 0x1402ea960
mov rax, qword [rbx + 0x1e8]
mov r15d, 1
mov dword [rsp + 0xa0], r15d
mov rcx, qword [rax]
mov dword [rcx + 0x1c], esi
mov rax, qword [rbx + 0x1e8]
mov rcx, qword [rax]
mov dword [rcx + 0xc], 0x18
jmp 0x1402eac4d
mov r15d, dword [rsp + 0xa0]
cmp qword [rbx + 0x228], 0
je 0x1402eaca7
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [rbx + 0x230]
cmp dword [rbx + 0x234], eax
jge 0x1402eac9a
mov r8d, 0xffffffff
lea rdx, [rbx + 0x248]
lea rcx, [rbx + 0x240]
call qword [sym.imp.KERNEL32.dll_SleepConditionVariableCS]
mov eax, dword [rbx + 0x230]
cmp dword [rbx + 0x234], eax
jl 0x1402eac72
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [rbx + 0x238]
test eax, eax
je 0x1402eacc1
add dword [rbx + 0xd8], eax
mov dword [rbx + 0x238], 0
mov rcx, qword [rsp + 0x40]
call fcn.14032cd24
mov ecx, dword [rsp + 0xb8]
cmp ebp, ecx
je 0x1402ead11
mov eax, r13d
imul eax, ecx
cmp dword [r14 + 0x20], 0
jge 0x1402eacf7
test eax, eax
je 0x1402ead0b
mov rdi, qword [rsp + 0x38]
mov ecx, eax
mov eax, 0x55
rep stosd dword [rdi], eax
jmp 0x1402ead0b
mov rcx, qword [rsp + 0x38]
lea r8d, [rax*4]
xor edx, edx
call fcn.140328dd0
inc dword [rbx + 0xd8]
mov rax, qword [rbx + 0x1e8]
mov r14, qword [rax]
test r15d, r15d
jne 0x1402eaf3a
mov r12, qword [rsp + 0x38]
mov ebp, dword [rsp + 0xb8]
jmp 0x1402eaea9
test byte [r14 + 0x20], 4
jne 0x1402ead67
cmp ebp, 1
je 0x1402ead46
cmp eax, 1
jne 0x1402ead67
lea r8, [r13*4]
mov edi, r13d
xor edx, edx
mov rcx, r12
call fcn.140328dd0
add qword [r14 + 0xb0], rdi
jmp 0x1402eaea3
mov eax, dword [rbx + 0x230]
test eax, eax
je 0x1402eae5d
cmp qword [rbx + 0x228], 0
je 0x1402eae5d
cmp eax, 4
jge 0x1402eadb7
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [rbx + 0x234]
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
je 0x1402eae5d
mov edi, dword [rsp + 0xb0]
cmp dword [r14 + 0xc0], 0
jne 0x1402eae5d
mov eax, dword [r14 + 0x1c]
movzx ecx, byte [r14 + 0x12]
shl rcx, 0x20
add rcx, rax
mov eax, dword [r14 + 0x18]
add rcx, rax
mov eax, edi
add rax, qword [r14 + 0xb0]
cmp rax, rcx
jle 0x1402eae5d
mov ecx, 0x8f8
call fcn.14033c138
mov rcx, rax
mov rdx, r14
mov r8d, 0x8f8
mov rdi, rax
call fcn.140328640
xor esi, esi
mov eax, r13d
add qword [r14 + 0xb0], rax
mov r9d, r13d
xor r8d, r8d
mov qword [r14 + 0x78], rsi
mov rdx, r12
mov qword [r14 + 0x88], rsi
mov rcx, rdi
mov qword [r14 + 0x860], rsi
mov qword [r14 + 0x888], rsi
mov qword [r14 + 0x868], rsi
mov qword [r14 + 0x870], rsi
mov qword [r14 + 0x8f0], rsi
mov dword [rsp + 0x20], 1
call fcn.1402eb090
jmp 0x1402eaea9
cmp dword [r14 + 0x20], 0
mov r8d, r13d
mov rdx, r12
mov rcx, r14
jge 0x1402eae74
call fcn.1402ef4c0
jmp 0x1402eae79
call fcn.1402f0930
mov eax, dword [r14 + 0x1c]
movzx ecx, byte [r14 + 0x12]
shl rcx, 0x20
add rcx, rax
mov eax, dword [r14 + 0x18]
add rcx, rax
cmp qword [r14 + 0xb0], rcx
jne 0x1402eaea9
cmp dword [r14 + 0xc0], 0
je 0x1402eaea9
inc dword [rbx + 0xd8]
mov eax, dword [rbx + 0xec]
mov ecx, ebp
test eax, eax
cmovne ecx, eax
add dword [rsp + 0x30], r13d
sub dword [rsp + 0xb0], r13d
mov eax, r13d
imul eax, ecx
lea r12, [r12 + rax*4]
mov rax, qword [rbx + 0xc8]
mov qword [rsp + 0x38], r12
cmp rax, 0xffffffffffffffff
je 0x1402eaef1
mov qword [rsp + 0x38], r12
cmp qword [r14 + 0xb0], rax
je 0x1402eafbc
mov r13d, dword [rsp + 0xb0]
test r13d, r13d
je 0x1402eafbc
xor esi, esi
jmp 0x1402ea631
movups xmm0, xmmword [str.discontinuity_found__aborting_file_]
movups xmmword [rbx + 0x278], xmm0
movups xmm1, xmmword [0x1403b41f0]
movups xmmword [rbx + 0x288], xmm1
mov eax, dword [0x1403b4200]
mov dword [rbx + 0x298], eax
mov dword [r14 + 0x1c], esi
jmp 0x1402eafb4
movups xmm0, xmmword [str.cant_read_all_of_last_block_]
movups xmmword [rbx + 0x278], xmm0
movsd xmm1, qword [0x1403b41d0]
movsd qword [rbx + 0x288], xmm1
mov eax, dword [0x1403b41d8]
mov dword [rbx + 0x290], eax
movzx eax, word [0x1403b41dc]
mov word [rbx + 0x294], ax
jmp 0x1402eafbc
movups xmm0, xmmword [str.cant_read_all_of_last_block_]
movups xmmword [rbx + 0x278], xmm0
movsd xmm1, qword [0x1403b41d0]
movsd qword [rbx + 0x288], xmm1
mov eax, dword [0x1403b41d8]
mov dword [rbx + 0x290], eax
movzx eax, word [0x1403b41dc]
mov word [rbx + 0x294], ax
mov dword [r14 + 0x1c], 0
mov dword [r14 + 0xc], 0x18
cmp qword [rbx + 0x228], 0
mov r15, qword [rsp + 0x58]
mov r14, qword [rsp + 0x60]
mov r13, qword [rsp + 0x68]
mov r12, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x80]
je 0x1402eb035
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [rbx + 0x230]
cmp dword [rbx + 0x234], eax
jge 0x1402eb028
nop dword [rax]
mov r8d, 0xffffffff
lea rdx, [rbx + 0x248]
lea rcx, [rbx + 0x240]
call qword [sym.imp.KERNEL32.dll_SleepConditionVariableCS]
mov eax, dword [rbx + 0x230]
cmp dword [rbx + 0x234], eax
jl 0x1402eb000
lea rcx, [rbx + 0x248]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [rbx + 0x238]
mov rsi, qword [rsp + 0x78]
test ecx, ecx
je 0x1402eb054
add dword [rbx + 0xd8], ecx
mov dword [rbx + 0x238], 0
mov rcx, qword [rbx + 0x218]
mov rbx, qword [rsp + 0x88]
test rcx, rcx
je 0x1402eb07a
mov r8d, dword [rsp + 0x30]
mov rdx, qword [rsp + 0xa8]
call fcn.1402ee110
mov eax, dword [rsp + 0x30]
add rsp, 0x90
pop rdi
ret