Function at 0x140037790
Capabilities:
Read file on windows

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0x138
mov r9, rcx
mov r8, rdx
mov rsi, r9
mov edx, 0x1000000
mov rax, qword [r9 + 0xb38]
mov r11, qword [r9 + 0xb50]
mov ecx, dword [r9 + 0x60]
mov r10d, dword [rax]
add rax, 4
mov dword [rsp + 0x110], r10d
mov r10, qword [r11 + 0xe5fe0]
movzx r11d, byte [r9 + 0x64]
cmp r11d, 0x24
mov qword [rsp + 0x60], r10
mov r10d, 0x24
cmovl r10d, r11d
lea r11, [0x140005b40]
mov byte [r9 + 0x64], r10b
shl r10, 4
mov qword [rsp + 0xc0], rax
mov eax, dword [r9 + 0x58]
neg rax
mov qword [rsp + 0xd8], rax
add r11, r10
mov qword [r9 + 0x68], r11
lea r11, [r9 + 0x8c0]
mov qword [rsp + 0x128], r11
mov qword [rsp + 0xf8], rcx
mov ecx, dword [rsi + 0x58]
mov r15d, ecx
shr r15d, 0x18
xor ebx, ebx
mov eax, dword [rsi + 0x8b8]
cmp r15, rax
mov r12d, ecx
cmovae r15, rbx
mov r14, qword [rsi + r15*8 + 0x4a8]
add r14, 0x1000000
mov rax, qword [rsi + r15*8 + 0x4b0]
and r12, 0xffffff
je 0x14003998d
movzx ebx, byte [rax + r12 - 1]
mov rbp, r12
lea r10, [r8 + r12]
neg rbp
cmp r10, 0x1000000
mov r13, qword [rsi + 0x78]
mov r11, r15
cmovae r10, rdx
shl r11, 0x18
lea rdi, [rbp + r13]
cmp r12, r10
jae 0x1400385e1
mov r9, rax
mov rcx, r14
sub r9, rbp
sub rcx, rbp
sub r9, r13
sub rcx, r13
mov qword [rsp + 0x100], rdi
mov qword [rsp + 0x98], rcx
mov qword [rsp + 0xe0], r9
mov qword [rsp + 0xa0], r11
mov qword [rsp + 0x108], r10
mov qword [rsp + 0xb0], rbp
mov qword [rsp + 0xd0], r14
mov qword [rsp + 0x118], rax
mov qword [rsp + 0xa8], r15
mov qword [rsp + 0xb8], r8
mov rdi, qword [rsp + 0xf8]
cmp byte [rsi + 0xc2c], 0
je 0x140037e75
mov rdx, qword [rsp + 0x100]
mov rax, qword [rsi + 0x8c0]
add rdx, r12
cmp rdx, rax
jb 0x140037afa
mov rbp, r12
mov qword [rsp + 0xf0], rbx
sub rbp, rdx
mov qword [rsp + 0xe8], r12
mov qword [rsp + 0x120], rdx
mov qword [rsp + 0xf8], rdi
mov rbx, qword [rsp + 0xe0]
mov edx, dword [rsi + 0xac8]
movabs r8, 0xffffffffff
mov r15, qword [rsi + 0xa80]
lea r11, [rax + rbp]
mov rdi, qword [rsi + 0x9a8]
mov r13, qword [rsi + 0xac0]
and r8, qword [r15 + rdx*8]
mov r15, r8
shr r8, 0x17
and r15, 0x7fffff
mov r14, qword [rdi + r8*8]
lea r12, [r15 + r14]
cmp r11, r13
jl 0x140038826
mov r10, r13
lea rdx, [r12 + r13]
add r11, qword [rsp + 0x118]
mov rcx, r12
shr r10, 5
sub r11, rdx
test r10, r10
je 0x140037a94
mov rdi, r13
xor r8d, r8d
shr rdi, 6
mov r9d, 1
xor edx, edx
test rdi, rdi
jbe 0x140037a5a
mov r9, rax
lea rcx, [rax + rbx]
sub rcx, r13
sub r9, r13
add r9, rbx
lea r14, [r15 + r14 + 0x40]
mov r15, rdi
mov rdi, rdx
mov rdx, rcx
nop dword [rax]
movdqu xmm0, xmmword [rdi + rdx]
movdqu xmm1, xmmword [rdi + r9 + 0x10]
movdqu xmmword [rdi + r12], xmm0
inc r8
movdqu xmmword [rdi + r12 + 0x10], xmm1
lea rcx, [r14 + rdi]
movdqu xmm2, xmmword [rdi + r9 + 0x20]
movdqu xmm3, xmmword [rdi + r9 + 0x30]
movdqu xmmword [rdi + r12 + 0x20], xmm2
movdqu xmmword [rdi + r12 + 0x30], xmm3
add rdi, 0x40
cmp r8, r15
jb 0x140037a10
lea r9, [r8 + r8 + 1]
lea rdi, [r9 - 1]
cmp rdi, r10
jae 0x140037a94
shl rdi, 5
lea rdx, [rax + rbx]
sub rax, r13
sub rdx, r13
add rax, rbx
shl r9, 5
movdqu xmm0, xmmword [rdi + rdx]
movdqu xmm1, xmmword [rdi + rax + 0x10]
movdqu xmmword [rdi + r12], xmm0
lea rcx, [r12 + r9]
movdqu xmmword [rdi + r12 + 0x10], xmm1
and r13, 0x1f
je 0x140037ab8
mov al, byte [rcx + r11]
mov byte [rcx], al
cmp r13, 1
je 0x140037ab8
mov al, byte [rcx + r11 + 1]
mov byte [rcx + 1], al
add rcx, 2
add r13, 0xfffffffffffffffe
jne 0x140037a9a
mov rcx, qword [rsp + 0x128]
call fcn.14002d170
mov rax, qword [rsi + 0x8c0]
cmp rax, qword [rsp + 0x120]
jbe 0x140037969
mov r12, qword [rsp + 0xe8]
mov rbx, qword [rsp + 0xf0]
mov rdx, qword [rsp + 0x120]
mov rdi, qword [rsp + 0xf8]
cmp rdx, qword [rsi + 0x8c8]
jb 0x140037e75
movsxd rbp, dword [rsi + 0x950]
movabs r10, 0xffffffffff
mov r14, qword [rsi + 0x930]
mov r13, qword [rsp + 0x118]
mov rax, qword [rsi + 0xa80]
lea rbx, [rbp*4]
shl rbp, 5
sub rbp, rbx
mov rdx, qword [r14 + rbp + 0x28]
mov r14d, dword [r14 + rbp + 0x30]
lea rbp, [r12 + r13]
mov r13, rdx
shr r13, 0x20
mov edx, edx
movzx ebx, r14w
and r10, qword [rax + r13*8]
add rdx, r10
mov r10, rdx
shr r10, 0x17
cmp r10, qword [rsi + 0x9d8]
jae 0x140037c79
xor r8d, r8d
mov rcx, qword [rsi + 0x9c8]
call fcn.14004529c
mov edx, 1
mov r8, rbx
mov rcx, qword [rsi + 0x9b8]
mov r9, qword [rsi + 0x9c8]
call fcn.140045c34
mov rdx, rbx
mov r15, rbp
mov rax, qword [rsi + 0x9b8]
mov r11, rax
shr rdx, 5
sub r11, rbp
test rdx, rdx
je 0x140037c49
mov r8, rbx
xor r9d, r9d
shr r8, 6
mov r10d, 1
xor ecx, ecx
test r8, r8
jbe 0x140037c1c
movdqu xmm0, xmmword [rcx + rax]
movdqu xmm1, xmmword [rcx + rax + 0x10]
movdqu xmmword [rcx + rbp], xmm0
movdqu xmmword [rcx + rbp + 0x10], xmm1
inc r9
movdqu xmm2, xmmword [rcx + rax + 0x20]
movdqu xmm3, xmmword [rcx + rax + 0x30]
movdqu xmmword [rcx + rbp + 0x20], xmm2
movdqu xmmword [rcx + rbp + 0x30], xmm3
add rcx, 0x40
cmp r9, r8
jb 0x140037bd4
lea r10, [r9 + r9 + 1]
shl r9, 6
lea r15, [rbp + r9]
lea rcx, [r10 - 1]
cmp rcx, rdx
jae 0x140037c49
shl rcx, 5
shl r10, 5
movdqu xmm0, xmmword [rax + rcx]
movdqu xmm1, xmmword [rax + rcx + 0x10]
movdqu xmmword [rbp + rcx], xmm0
movdqu xmmword [rbp + rcx + 0x10], xmm1
lea r15, [rbp + r10]
mov rax, rbx
and rax, 0x1f
je 0x140037c72
mov dl, byte [r15 + r11]
mov byte [r15], dl
cmp rax, 1
je 0x140037c72
mov dl, byte [r15 + r11 + 1]
mov byte [r15 + 1], dl
add r15, 2
add rax, 0xfffffffffffffffe
jne 0x140037c52
mov dl, 1
jmp 0x140037d71
mov rax, qword [rsi + 0x9a8]
and rdx, 0x7fffff
sub rdx, rbp
mov r11, rbp
add rdx, qword [rax + r10*8]
mov r10, rbx
shr r10, 5
test r10, r10
je 0x140037d46
mov rcx, rbx
xor r8d, r8d
shr rcx, 6
mov eax, 1
xor r15d, r15d
test rcx, rcx
jbe 0x140037d10
lea rax, [rbp + rdx]
nop dword [rax]
movdqu xmm0, xmmword [r15 + rax]
movdqu xmm1, xmmword [r15 + rax + 0x10]
movdqu xmmword [r15 + rbp], xmm0
movdqu xmmword [r15 + rbp + 0x10], xmm1
inc r8
movdqu xmm2, xmmword [r15 + rax + 0x20]
movdqu xmm3, xmmword [r15 + rax + 0x30]
movdqu xmmword [r15 + rbp + 0x20], xmm2
movdqu xmmword [r15 + rbp + 0x30], xmm3
add r15, 0x40
cmp r8, rcx
jb 0x140037cc0
lea rax, [r8 + r8 + 1]
shl r8, 6
lea r11, [rbp + r8]
lea r15, [rax - 1]
cmp r15, r10
jae 0x140037d46
shl r15, 5
lea r10, [rbp + rdx]
shl rax, 5
movdqu xmm0, xmmword [r10 + r15]
movdqu xmm1, xmmword [r10 + r15 + 0x10]
movdqu xmmword [rbp + r15], xmm0
movdqu xmmword [rbp + r15 + 0x10], xmm1
lea r11, [rbp + rax]
mov rax, rbx
and rax, 0x1f
je 0x140037d6f
mov bpl, byte [r11 + rdx]
mov byte [r11], bpl
cmp rax, 1
je 0x140037d6f
mov bpl, byte [r11 + rdx + 1]
mov byte [r11 + 1], bpl
add r11, 2
add rax, 0xfffffffffffffffe
jne 0x140037d4f
xor dl, dl
mov eax, dword [rsi + 0x948]
mov ebp, dword [rsi + 0x950]
lea r11d, [rax + 1]
and r11d, 0xfff
cmp r11d, dword [rsi + 0x94c]
je 0x140037da9
mov r10, qword [rsi + 0x940]
mov dword [r10 + rax*4], ebp
mov dword [rsi + 0x948], r11d
mov ebp, dword [rsi + 0x950]
movsxd r11, ebp
mov rax, qword [rsi + 0x930]
lea r10, [r11*4]
shl r11, 5
sub r11, r10
mov r10d, dword [rax + r11 + 0x1c]
test r10d, r10d
jl 0x140037dd8
mov dword [rsi + 0x950], r10d
mov ebp, r10d
jmp 0x140037e28
mov r10, qword [rax + r11 + 0x20]
mov ecx, dword [rsi + 0x960]
shr r10, cl
test r10d, r10d
jl 0x140037e28
movsxd r11, r10d
inc r11
cmp r11, 0x10000
jae 0x140037e19
mov r10, qword [rsi + 0x958]
mov ebp, dword [r10 + r11*4]
test ebp, ebp
jge 0x14003881b
inc r11
cmp r11, 0x10000
jb 0x140037e01
mov dword [rsi + 0x950], 0xffffffff
mov ebp, 0xffffffff
test r14d, r14d
jl 0x140038670
movsxd rbp, ebp
add r12, rbx
lea r8, [0x140000000]
mov rbx, qword [rsp + 0x118]
lea rdx, [rbp*4]
shl rbp, 5
sub rbp, rdx
movzx edi, byte [r8 + rdi + 0xa2b0]
mov rax, qword [rax + rbp + 0x20]
mov qword [rsi + 0x8c8], rax
movzx ebx, byte [rbx + r12 - 1]
jmp 0x1400385a7
mov r8, qword [rsp + 0xd8]
movzx edx, byte [rsi + 0xc39]
mov r10, qword [rsi + 0x68]
mov r11, qword [rsi + 0x70]
lea rbp, [r12 + r8]
and rbp, rdx
movzx r9d, byte [rbp + r10]
mov r13, r9
shl r13, 6
mov rbp, qword [rsi + 0xb50]
mov r10d, dword [rsp + 0x110]
mov eax, r10d
movzx r8d, byte [r11 + r9]
mov r11d, r10d
shr r11d, 0xe
lea rdx, [r13 + rdi*4]
and eax, 0x3fff
movzx r13d, word [rbp + rdx]
imul r11d, r13d
cmp eax, r13d
jae 0x140038032
mov r10d, r13d
add eax, r11d
neg r10d
add r10d, 0x4000
shr r10d, 5
add r13d, r10d
mov word [rbp + rdx], r13w
cmp eax, 0x800000
jae 0x140037f37
mov r10, qword [rsp + 0xc0]
shl eax, 8
movzx r11d, byte [r10]
or eax, r11d
inc r10
cmp eax, 0x800000
jae 0x140037f2f
shl eax, 8
movzx r11d, byte [r10]
or eax, r11d
inc r10
cmp eax, 0x800000
jb 0x140037f1b
mov qword [rsp + 0xc0], r10
xor r10b, r10b
cmp r8d, 0x63
jge 0x140038029
mov r11d, eax
mov r10d, eax
shr r11d, 0xe
and r10d, 0x3fff
movzx r13d, word [rbp + rdx + 2]
imul r11d, r13d
cmp r10d, r13d
jae 0x140037fc9
lea eax, [r10 + r11]
mov r10d, r13d
neg r10d
add r10d, 0x4000
shr r10d, 5
add r13d, r10d
mov word [rbp + rdx + 2], r13w
cmp eax, 0x800000
jae 0x140037fbd
mov rdx, qword [rsp + 0xc0]
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jae 0x140037fb5
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jb 0x140037fa3
mov qword [rsp + 0xc0], rdx
mov dword [rsp + 0x110], eax
xor r10b, r10b
jmp 0x140038024
mov r10d, r13d
sub eax, r11d
shr r10d, 5
sub eax, r13d
sub r13d, r10d
mov word [rbp + rdx + 2], r13w
cmp eax, 0x800000
jae 0x14003801a
mov rdx, qword [rsp + 0xc0]
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jae 0x140038012
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jb 0x140038000
mov qword [rsp + 0xc0], rdx
mov dword [rsp + 0x110], eax
mov r10b, 1
add r10b, r10b
jmp 0x140038090
mov dword [rsp + 0x110], eax
jmp 0x140038090
sub r10d, r11d
mov eax, r10d
mov r10d, r13d
shr r10d, 5
sub eax, r13d
sub r13d, r10d
mov word [rbp + rdx], r13w
cmp eax, 0x800000
jae 0x140038086
mov rdx, qword [rsp + 0xc0]
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jae 0x14003807e
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jb 0x14003806c
mov qword [rsp + 0xc0], rdx
mov dword [rsp + 0x110], eax
mov r10b, 1
test r10b, r10b
je 0x14003965e
cmp r10b, 1
je 0x1400384cc
cmp r10b, 2
jne 0x1400385a7
cmp r8d, 8
ja 0x1400385a7
lea rdx, [0x140000000]
movzx eax, word [rdx + r8*2 + 0xa8ac]
lea rax, [rdx + rax + 0x380d1]
jmp rax
mov r10d, dword [rsi]
mov r8, r10
not r8
add r8, r12
js 0x140039627
mov rdx, qword [rsp + 0x118]
movzx edx, byte [r8 + rdx]
mov rbp, rsp
mov rcx, rsi
lea r8, [rsp + 0xc0]
mov qword [rbp + 0x30], rdx
lea rdx, [rsp + 0x110]
mov qword [rbp + 0x28], rdi
lea rdi, [rsp + 0x68]
mov qword [rbp + 0x38], r10
lea r10, [rsp + 0x70]
mov qword [rbp + 0x20], rbx
mov qword [rbp + 0x40], rsi
mov qword [rbp + 0x48], rdi
mov qword [rbp + 0x50], r10
call fcn.140039ae0
mov r10, rax
mov rdi, qword [rsp + 0x68]
mov rax, qword [rsp + 0x70]
cmp byte [rsi + 0xc34], 0
jne 0x14003926f
cmp rax, r12
jae 0x14003913f
not rax
add rax, r12
mov r8, rax
sar r8, 0x18
add r8, qword [rsp + 0xa8]
jl 0x14003856a
xor edx, edx
jmp 0x140038570
mov edx, dword [rsi + 0x8b8]
mov rbx, qword [rsp + 0x118]
add r8, rdx
and rax, 0xffffff
lea rbp, [r12 + rbx]
sub rax, rbp
lea rdx, [r10 + rbp]
add rax, qword [rsi + r8*8 + 0x4b0]
movzx ebx, byte [rbp + rax]
mov byte [rbp], bl
inc rbp
cmp rbp, rdx
jb 0x140038594
add r12, r10
cmp r12, qword [rsp + 0x108]
jb 0x140037913
mov qword [rsp + 0xf8], rdi
mov edx, 0x1000000
mov rbp, qword [rsp + 0xb0]
mov rax, qword [rsp + 0x118]
mov r8, qword [rsp + 0xb8]
mov ecx, dword [rsi + 0x58]
mov r13, qword [rsi + 0x78]
add rbp, r12
add rcx, rbp
add r13, rbp
add dword [rsi + 0x84], ebp
sub r8, rbp
mov dword [rsi + 0x58], ecx
mov qword [rsi + 0x78], r13
cmp r12, 0x1000000
jbe 0x140038625
shr ecx, 0x18
lea rbp, [rax + 0x1000000]
mov r13, qword [rsi + rcx*8 + 0x4b0]
and r12, 0xffffff
cmp r13, rbp
jne 0x140039040
test r8, r8
jne 0x140037835
mov r9, rsi
mov rax, rbx
mov rdx, qword [r9 + 0xb50]
mov rcx, qword [rsp + 0xf8]
mov dword [r9 + 0x80], eax
mov rax, qword [rsp + 0x60]
mov dword [r9 + 0x60], ecx
mov qword [rdx + 0xe5fe0], rax
xor eax, eax
add rsp, 0x138
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
test dl, dl
jne 0x140037e31
mov eax, dword [rsi + 0xa98]
lea ebp, [rax + 1]
and ebp, 0xfff
cmp ebp, dword [rsi + 0xa9c]
je 0x1400386a0
mov rdx, qword [rsi + 0xa90]
mov dword [rdx + rax*4], r13d
mov dword [rsi + 0xa98], ebp
mov rax, qword [rsi + 0xa80]
mov edx, dword [rsi + 0x994]
mov r14, qword [rax + r13*8]
mov rbp, r14
shr rbp, 0x28
cmp edx, dword [rsi + 0x990]
je 0x1400386e2
mov rax, qword [rsi + 0x988]
mov r11, qword [rsi + 0x978]
mov r13d, dword [rax + rdx*4]
inc edx
and edx, 0xfff
mov dword [rsi + 0x994], edx
jmp 0x14003870b
mov r13, qword [rsi + 0x968]
mov rdx, qword [rsi + 0x970]
lea rax, [r13 + 1]
mov qword [rsi + 0x968], rax
cmp rax, rdx
jae 0x1400387d6
mov r11, qword [rsi + 0x978]
movabs r10, 0xffffffffff
lea rdx, [r13 + r13*2]
and r10, r14
mov r14, rbp
shl r14, 0x28
mov eax, ebp
add r10, r14
mov qword [r11 + rdx*4 + 4], r10
mov dword [r11 + rdx*4], 0xffffffff
mov r11d, eax
shr r11d, 0x12
shr eax, 7
movzx r10d, word [rsi + r11*4 + 0x9e8]
cmp r10d, 0xffff
jne 0x140038773
mov word [rsi + r11*4 + 0x9ea], ax
mov word [rsi + r11*4 + 0x9e8], ax
mov eax, eax
mov rdx, qword [rsi + 0xa68]
mov dword [rdx + rax*4], r13d
jmp 0x1400387bd
cmp r10d, eax
cmovae r10d, eax
mov word [rsi + r11*4 + 0x9e8], r10w
movzx r10d, word [rsi + r11*4 + 0x9ea]
cmp r10d, eax
cmovbe r10d, eax
mov word [rsi + r11*4 + 0x9ea], r10w
mov r11, qword [rsi + 0xa68]
mov r15, qword [rsi + 0x978]
mov r14d, dword [r11 + rax*4]
mov dword [r15 + rdx*4], r14d
mov rdx, qword [rsi + 0xa68]
mov dword [rdx + rax*4], r13d
sub qword [rsi + 0xaa0], rbp
mov rax, qword [rsi + 0x930]
mov ebp, dword [rsi + 0x950]
jmp 0x140037e31
mov r10d, 0x1000
test rdx, rdx
lea rax, [rdx + rdx]
cmovne r10, rax
xor edx, edx
mov rcx, qword [rsi + 0x980]
mov r8, qword [rsi + 0x978]
mov qword [rsi + 0x970], r10
lea r9, [r10 + r10*2]
shl r9, 2
call qword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov r11, rax
mov qword [rsi + 0x978], r11
jmp 0x14003870b
mov dword [rsi + 0x950], ebp
jmp 0x140037e28
mov rdi, r13
mov rdx, r13
sub rdi, r11
mov r10, r12
cmp rdi, r13
mov r8, qword [rsp + 0xd0]
cmovl rdx, rdi
sub r8, r12
mov rcx, rdx
sub r8, rdi
shr rcx, 5
mov qword [rsp + 0xc8], r8
test rcx, rcx
je 0x140038937
mov r8, rdx
xor r9d, r9d
shr r8, 6
mov edi, 1
test r8, r8
jbe 0x1400388f0
mov r10, qword [rsp + 0x98]
mov rdi, rax
sub rdi, r13
lea r14, [r15 + r14 + 0x40]
add rdi, r10
mov qword [rsp + 0x78], rsi
add r10, rax
sub r10, r13
mov rsi, r10
mov r15, r9
nop
movdqu xmm0, xmmword [r15 + rsi]
movdqu xmm1, xmmword [r15 + rdi + 0x10]
movdqu xmmword [r15 + r12], xmm0
inc r9
movdqu xmmword [r15 + r12 + 0x10], xmm1
lea r10, [r14 + r15]
movdqu xmm2, xmmword [r15 + rdi + 0x20]
movdqu xmm3, xmmword [r15 + rdi + 0x30]
movdqu xmmword [r15 + r12 + 0x20], xmm2
movdqu xmmword [r15 + r12 + 0x30], xmm3
add r15, 0x40
cmp r9, r8
jb 0x1400388a0
mov rsi, qword [rsp + 0x78]
lea rdi, [r9 + r9 + 1]
lea r15, [rdi - 1]
cmp r15, rcx
jae 0x140038937
mov r10, qword [rsp + 0x98]
mov r14, rax
sub r14, r13
shl r15, 5
add r14, r10
shl rdi, 5
lea r8, [rax + r10]
sub r8, r13
movdqu xmm1, xmmword [r15 + r14 + 0x10]
movdqu xmm0, xmmword [r15 + r8]
movdqu xmmword [r15 + r12], xmm0
lea r10, [r12 + rdi]
movdqu xmmword [r15 + r12 + 0x10], xmm1
mov rdi, rdx
and rdi, 0x1f
je 0x140038968
mov r14, qword [rsp + 0xc8]
mov r8b, byte [r10 + r14]
mov byte [r10], r8b
cmp rdi, 1
je 0x140038968
mov r8b, byte [r10 + r14 + 1]
mov byte [r10 + 1], r8b
add r10, 2
add rdi, 0xfffffffffffffffe
jne 0x140038948
mov rdi, r13
lea r9, [rdx + r12]
sub rdi, rdx
mov r10, rdi
add r11, qword [rsp + 0x118]
shr r10, 5
lea r8, [rdi + r9]
sub r11, r8
test r10, r10
je 0x140038aa7
mov r14, rdi
xor r8d, r8d
shr r14, 6
mov ecx, 1
xor r15d, r15d
test r14, r14
jbe 0x140038a60
mov qword [rsp + 0x80], rax
lea rcx, [rax + rbx]
sub rcx, r13
lea r9, [r12 + rdx]
add rcx, rdx
mov qword [rsp + 0x90], rcx
mov rcx, rax
sub rcx, r13
mov qword [rsp + 0x88], r9
lea r9, [r12 + rdx + 0x40]
add rcx, rbx
mov qword [rsp + 0x78], rsi
add rcx, rdx
mov rax, r9
mov rbx, qword [rsp + 0x88]
mov rsi, qword [rsp + 0x90]
nop dword [rax + rax]
movdqu xmm0, xmmword [r15 + rcx]
movdqu xmm1, xmmword [r15 + rsi + 0x10]
movdqu xmmword [r15 + rbx], xmm0
movdqu xmmword [r15 + rbx + 0x10], xmm1
inc r8
lea r9, [rax + r15]
movdqu xmm2, xmmword [r15 + rsi + 0x20]
movdqu xmm3, xmmword [r15 + rsi + 0x30]
movdqu xmmword [r15 + rbx + 0x20], xmm2
movdqu xmmword [r15 + rbx + 0x30], xmm3
add r15, 0x40
cmp r8, r14
jb 0x140038a00
mov rax, qword [rsp + 0x80]
lea rcx, [r8 + r8 + 1]
mov rbx, qword [rsp + 0xe0]
mov rsi, qword [rsp + 0x78]
lea r14, [rcx - 1]
cmp r14, r10
jae 0x140038aa7
mov r8, rax
add rax, rbx
sub r8, r13
sub rax, r13
add r8, rbx
add rax, rdx
shl r14, 5
add r8, rdx
shl rcx, 5
add r12, rdx
movdqu xmm0, xmmword [r14 + r8]
movdqu xmm1, xmmword [r14 + rax + 0x10]
movdqu xmmword [r12 + r14], xmm0
movdqu xmmword [r12 + r14 + 0x10], xmm1
lea r9, [r12 + rcx]
and rdi, 0x1f
je 0x140037ab8
mov al, byte [r9 + r11]
mov byte [r9], al
cmp rdi, 1
je 0x140037ab8
mov al, byte [r9 + r11 + 1]
mov byte [r9 + 1], al
add r9, 2
add rdi, 0xfffffffffffffffe
jne 0x140038ab1
jmp 0x140037ab8
mov rbp, r12
mov r11, rax
shr rbp, 5
sub r11, r13
mov rdi, r13
test rbp, rbp
je 0x140039105
mov r15, r12
xor ecx, ecx
shr r15, 6
mov r10d, 1
xor r14d, r14d
test r15, r15
jbe 0x1400390cd
movdqu xmm0, xmmword [r14 + rax + 0x1000000]
inc rcx
movdqu xmm1, xmmword [r14 + rax + 0x1000010]
movdqu xmmword [r14 + r13], xmm0
movdqu xmmword [r14 + r13 + 0x10], xmm1
movdqu xmm2, xmmword [r14 + rax + 0x1000020]
movdqu xmm3, xmmword [r14 + rax + 0x1000030]
movdqu xmmword [r14 + r13 + 0x20], xmm2
movdqu xmmword [r14 + r13 + 0x30], xmm3
add r14, 0x40
cmp rcx, r15
jb 0x140039070
lea r10, [rcx + rcx + 1]
shl rcx, 6
lea rdi, [r13 + rcx]
lea r14, [r10 - 1]
cmp r14, rbp
jae 0x140039105
shl r14, 5
shl r10, 5
movdqu xmm0, xmmword [r14 + rax + 0x1000000]
movdqu xmm1, xmmword [r14 + rax + 0x1000010]
lea rdi, [r13 + r10]
movdqu xmmword [r13 + r14], xmm0
movdqu xmmword [r13 + r14 + 0x10], xmm1
and r12, 0x1f
je 0x140038625
mov bpl, byte [rdi + r11 + 0x1000000]
mov byte [rdi], bpl
cmp r12, 1
je 0x140038625
mov bpl, byte [rdi + r11 + 0x1000001]
mov byte [rdi + 1], bpl
add rdi, 2
add r12, 0xfffffffffffffffe
jne 0x14003910f
jmp 0x140038625
not rax
add rax, r12
mov r11, rax
mov rbp, rax
sar r11, 0x18
and rbp, 0xffffff
add r11, qword [rsp + 0xa8]
jl 0x140039164
xor edx, edx
jmp 0x14003916a
mov edx, dword [rsi + 0x8b8]
add r11, rdx
lea rdx, [r10 + r12]
add r10, rbp
cmp r10, 0x1000000
ja 0x1400391c1
sub rbp, r12
add rbp, qword [rsi + r11*8 + 0x4b0]
mov r8, qword [rsp + 0x118]
movzx ebx, byte [rbp + r12]
mov byte [r8 + r12], bl
inc r12
cmp r12, rdx
jae 0x1400391b4
movzx ebx, byte [rbp + r12]
mov byte [r8 + r12], bl
inc r12
cmp r12, rdx
jb 0x140039190
mov qword [rsp + 0x118], r8
jmp 0x1400385a7
mov rbx, qword [rsp + 0x118]
or rax, 0xffffffffff000000
lea r8, [r12 + rbx]
mov rbx, qword [rsi + r11*8 + 0x4b0]
add rbp, rbx
add rbx, 0x1000000
sub r12, rax
movdqu xmm0, xmmword [rbp]
movdqu xmmword [r8], xmm0
lea rax, [rbp + 0x10]
cmp rax, rbx
jae 0x140039213
movdqu xmm0, xmmword [rbp + 0x10]
add rbp, 0x20
movdqu xmmword [r8 + 0x10], xmm0
add r8, 0x20
cmp rbp, rbx
jb 0x1400391e8
cmp r12, rdx
jae 0x14003925c
mov rax, qword [rsi + r11*8 + 0x4b8]
mov rbp, qword [rsp + 0x118]
sub rax, r12
movzx ebx, byte [rax + r12]
mov byte [rbp + r12], bl
inc r12
cmp r12, rdx
jae 0x14003924f
movzx ebx, byte [rax + r12]
mov byte [rbp + r12], bl
inc r12
cmp r12, rdx
jb 0x14003922b
mov qword [rsp + 0x118], rbp
jmp 0x1400385a7
mov rax, qword [rsp + 0x118]
movzx ebx, byte [rax + r12 - 1]
jmp 0x1400385a7
test rax, rax
jl 0x1400395f2
cmp rax, r12
jae 0x14003936d
not rax
add rax, r12
mov rbp, rax
sar rbp, 0x18
add rbp, qword [rsp + 0xa8]
jl 0x14003929c
xor edx, edx
jmp 0x1400392a2
mov edx, dword [rsi + 0x8b8]
add rbp, rdx
and rax, 0xffffff
sub rax, r12
add r10, r12
mov rdx, qword [rsp + 0xa0]
mov r11d, ebx
mov r8, qword [rsp + 0x118]
add rax, qword [rsi + rbp*8 + 0x4b0]
xor ebp, ebp
movzx r14d, r11b
lea rbx, [r12 + rdx]
mov r11, qword [rsi + r14*8 + 0xc90]
mov r13d, dword [rsi + r14*4 + 0x88]
mov dword [r11 + r13*4], ebx
inc r13d
cmp r13d, dword [rsi + 0xc28]
cmovae r13d, ebp
mov dword [rsi + r14*4 + 0x88], r13d
movzx ebx, byte [rax + r12]
mov byte [r8 + r12], bl
inc r12
cmp r12, r10
jae 0x140039358
mov r13, qword [rsi + rbx*8 + 0xc90]
lea r11, [r12 + rdx]
mov r14d, dword [rsi + rbx*4 + 0x88]
mov dword [r13 + r14*4], r11d
inc r14d
cmp r14d, dword [rsi + 0xc28]
cmovae r14d, ebp
mov dword [rsi + rbx*4 + 0x88], r14d
movzx ebx, byte [rax + r12]
mov r11d, ebx
mov byte [r8 + r12], r11b
inc r12
cmp r12, r10
jb 0x1400392ce
mov qword [rsp + 0xa0], rdx
mov qword [rsp + 0x118], r8
jmp 0x1400385a7
not rax
add rax, r12
mov rbp, rax
sar rax, 0x18
and rbp, 0xffffff
add rax, qword [rsp + 0xa8]
jl 0x14003938f
xor edx, edx
jmp 0x140039395
mov edx, dword [rsi + 0x8b8]
mov r13, rbp
add rax, rdx
sub r13, r12
lea rdx, [r10 + r12]
add r10, rbp
cmp r10, 0x1000000
ja 0x140039472
mov rbp, qword [rsi + rax*8 + 0x4b0]
add r13, rbp
mov rax, qword [rsp + 0xa0]
mov r10d, ebx
mov r8, qword [rsp + 0x118]
xor ebp, ebp
movzx r14d, r10b
lea rbx, [r12 + rax]
mov r10, qword [rsi + r14*8 + 0xc90]
mov r11d, dword [rsi + r14*4 + 0x88]
mov dword [r10 + r11*4], ebx
inc r11d
cmp r11d, dword [rsi + 0xc28]
cmovae r11d, ebp
mov dword [rsi + r14*4 + 0x88], r11d
movzx ebx, byte [r13 + r12]
mov byte [r8 + r12], bl
inc r12
cmp r12, rdx
jae 0x14003945d
mov r11, qword [rsi + rbx*8 + 0xc90]
lea r10, [r12 + rax]
mov r14d, dword [rsi + rbx*4 + 0x88]
mov dword [r11 + r14*4], r10d
inc r14d
cmp r14d, dword [rsi + 0xc28]
cmovae r14d, ebp
mov dword [rsi + rbx*4 + 0x88], r14d
movzx ebx, byte [r13 + r12]
mov r10d, ebx
mov byte [r8 + r12], r10b
inc r12
cmp r12, rdx
jb 0x1400393d2
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0x118], r8
jmp 0x1400385a7
mov r10, qword [rsi + rax*8 + 0x4b0]
mov r14d, ebx
add r10, r13
neg r13
mov rbp, qword [rsp + 0xa0]
add r13, 0x1000000
mov r8, qword [rsp + 0x118]
xor r11d, r11d
movzx ecx, r14b
lea rbx, [r12 + rbp]
mov r14, qword [rsi + rcx*8 + 0xc90]
mov r15d, dword [rsi + rcx*4 + 0x88]
mov dword [r14 + r15*4], ebx
inc r15d
cmp r15d, dword [rsi + 0xc28]
cmovae r15d, r11d
mov dword [rsi + rcx*4 + 0x88], r15d
movzx ebx, byte [r10 + r12]
mov r14d, ebx
mov byte [r8 + r12], r14b
inc r12
cmp r12, r13
jae 0x140039525
mov r15, qword [rsi + rbx*8 + 0xc90]
lea r14, [r12 + rbp]
mov ecx, dword [rsi + rbx*4 + 0x88]
mov dword [r15 + rcx*4], r14d
inc ecx
cmp ecx, dword [rsi + 0xc28]
cmovae ecx, r11d
mov dword [rsi + rbx*4 + 0x88], ecx
movzx ebx, byte [r10 + r12]
mov r14d, ebx
mov byte [r8 + r12], r14b
inc r12
cmp r12, r13
jb 0x14003949d
mov qword [rsp + 0xa0], rbp
mov qword [rsp + 0x118], r8
cmp r12, rdx
jae 0x1400385a7
mov rbp, qword [rsi + rax*8 + 0x4b8]
mov rax, qword [rsp + 0xa0]
sub rbp, r12
lea rbx, [r12 + rax]
mov r10, qword [rsi + r14*8 + 0xc90]
mov r13d, dword [rsi + r14*4 + 0x88]
mov dword [r10 + r13*4], ebx
inc r13d
cmp r13d, dword [rsi + 0xc28]
cmovae r13d, r11d
mov dword [rsi + r14*4 + 0x88], r13d
movzx ebx, byte [rbp + r12]
mov byte [r8 + r12], bl
inc r12
cmp r12, rdx
jae 0x14003945d
mov r13, qword [rsi + rbx*8 + 0xc90]
lea r10, [r12 + rax]
mov r14d, dword [rsi + rbx*4 + 0x88]
mov dword [r13 + r14*4], r10d
inc r14d
cmp r14d, dword [rsi + 0xc28]
cmovae r14d, r11d
mov dword [rsi + rbx*4 + 0x88], r14d
movzx ebx, byte [rbp + r12]
mov r14d, ebx
mov byte [r8 + r12], r14b
inc r12
cmp r12, rdx
jb 0x140039551
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0x118], r8
jmp 0x1400385a7
mov rdx, qword [rsp + 0xa0]
lea rbp, [r12 + rdx]
add rax, rbp
js 0x140039607
xor edx, edx
jmp 0x14003960d
mov edx, dword [rsi + 0xc20]
movdqu xmm0, xmmword [rsi + 0x44]
add rax, rdx
mov qword [rsp + 0x70], rax
movdqu xmmword [rsi + 0x48], xmm0
mov dword [rsi + 0x44], eax
jmp 0x140039278
mov rbp, r8
sar rbp, 0x18
add rbp, qword [rsp + 0xa8]
jl 0x14003963c
xor edx, edx
jmp 0x140039642
mov edx, dword [rsi + 0x8b8]
add rbp, rdx
and r8, 0xffffff
mov rdx, qword [rsi + rbp*8 + 0x4b0]
movzx edx, byte [rdx + r8]
jmp 0x1400384eb
mov r8d, dword [rsi]
not r8
add r8, r12
js 0x140039956
mov rdx, qword [rsp + 0x118]
movzx r8d, byte [r8 + rdx]
mov r11, r8
mov rbp, r9
movzx ecx, byte [rsi + 0xc3d]
mov edx, eax
shr r11, cl
and edx, 0x7fff
mov r10, r11
shl r10, 5
shl rbp, 4
add rbp, r9
movd xmm2, edx
shl rbp, 7
add rbp, qword [rsi + 0xb58]
lea r13, [r10 + r11*2]
add rbp, r13
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
shr eax, 0xf
movdqu xmm1, xmmword [rbp]
movdqu xmm0, xmmword [rbp + 0x10]
movdqa xmm5, xmm1
movdqa xmm4, xmm0
pcmpgtw xmm5, xmm3
pcmpgtw xmm4, xmm3
packsswb xmm5, xmm4
pmovmskb r14d, xmm5
add r14d, 0x10000
bsf r15d, r14d
lea r10d, [r15 - 1]
movzx r11d, word [rbp + r15*2]
movzx r13d, word [rbp + r10*2]
sub r11d, r13d
imul eax, r11d
movsxd r14, r10d
sub eax, r13d
shl r14, 5
add eax, edx
lea rdx, [0x140000000]
movdqu xmm2, xmmword [rdx + r14 + 0x1f00]
movdqu xmm3, xmmword [rdx + r14 + 0x1f10]
psubw xmm2, xmm1
psubw xmm3, xmm0
psraw xmm2, 6
psraw xmm3, 6
paddw xmm1, xmm2
paddw xmm0, xmm3
movdqu xmmword [rbp], xmm1
movdqu xmmword [rbp + 0x10], xmm0
cmp eax, 0x800000
jb 0x14003991b
mov r11, r8
mov rbp, r9
shr r8, 4
and r11, 0xf
add r11, 0x10
cmp r10, r8
mov dword [rsp + 0x110], eax
cmovne r11, r10
mov rdx, r11
shl rdx, 5
shl rbp, 4
add rbp, r9
shl rbp, 6
lea r8, [rdx + r11*2]
add rbp, r8
mov r8d, eax
and r8d, 0x7fff
add rbp, qword [rsi + 0xb58]
shr eax, 0xf
movdqu xmm1, xmmword [rbp + 0xe6680]
movdqu xmm0, xmmword [rbp + 0xe6690]
movd xmm2, r8d
movdqa xmm5, xmm1
punpcklwd xmm2, xmm2
movdqa xmm4, xmm0
pshufd xmm3, xmm2, 0
pcmpgtw xmm5, xmm3
pcmpgtw xmm4, xmm3
packsswb xmm5, xmm4
pmovmskb r13d, xmm5
add r13d, 0x10000
bsf r15d, r13d
lea edx, [r15 - 1]
movzx r13d, word [rbp + rdx*2 + 0xe6680]
movzx r15d, word [rbp + r15*2 + 0xe6680]
sub r15d, r13d
imul eax, r15d
movsxd r11, edx
sub eax, r13d
shl r11, 5
add eax, r8d
lea r8, [0x140000000]
movdqu xmm2, xmmword [r8 + r11 + 0x1c00]
movdqu xmm3, xmmword [r8 + r11 + 0x1c10]
psubw xmm2, xmm1
psubw xmm3, xmm0
psraw xmm2, 7
psraw xmm3, 7
paddw xmm1, xmm2
paddw xmm0, xmm3
movdqu xmmword [rbp + 0xe6680], xmm1
movdqu xmmword [rbp + 0xe6690], xmm0
cmp eax, 0x800000
jb 0x1400398da
shl r10, 4
add r10, rdx
mov dword [rsp + 0x110], eax
cmp byte [rsi + 0xc34], 0
je 0x1400398b3
movzx r11d, bl
xor r8d, r8d
mov rax, qword [rsp + 0xa0]
mov rbx, qword [rsi + r11*8 + 0xc90]
lea rdx, [r12 + rax]
mov ebp, dword [rsi + r11*4 + 0x88]
mov dword [rbx + rbp*4], edx
inc ebp
cmp ebp, dword [rsi + 0xc28]
cmovb r8d, ebp
mov dword [rsi + r11*4 + 0x88], r8d
lea rdx, [0x140000000]
mov rax, qword [rsp + 0x118]
movzx ebx, r10b
mov byte [rax + r12], r10b
inc r12
movzx edi, byte [rdx + rdi + 0xa260]
jmp 0x1400385a7
mov rbp, qword [rsp + 0xc0]
shl eax, 8
movzx r8d, byte [rbp]
or eax, r8d
inc rbp
cmp eax, 0x800000
jb 0x140039904
mov qword [rsp + 0xc0], rbp
jmp 0x140039862
shl eax, 8
movzx r8d, byte [rbp]
or eax, r8d
inc rbp
cmp eax, 0x800000
jb 0x140039904
jmp 0x1400398f7
mov rdx, qword [rsp + 0xc0]
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jb 0x140039942
mov qword [rsp + 0xc0], rdx
jmp 0x14003975d
shl eax, 8
movzx ebp, byte [rdx]
or eax, ebp
inc rdx
cmp eax, 0x800000
jb 0x140039942
jmp 0x140039935
mov rbp, r8
sar rbp, 0x18
add rbp, qword [rsp + 0xa8]
jl 0x14003996b
xor edx, edx
jmp 0x140039971
mov edx, dword [rsi + 0x8b8]
add rbp, rdx
and r8, 0xffffff
mov rdx, qword [rsi + rbp*8 + 0x4b0]
movzx r8d, byte [rdx + r8]
jmp 0x14003967a
movzx ebx, byte [r14 - 1]
jmp 0x14003787b