Function at 0x14008b930
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x1d8
movaps xmmword [rsp + 0x1c0], xmm6
mov rdi, r9
mov rbx, r8
mov r14, rdx
mov r15, rcx
mov rax, qword [0x140203ac0]
xor rax, rsp
mov qword [rsp + 0x1b8], rax
mov ecx, 1
mov edx, 0x4888
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
test rax, rax
je 0x14008ba2d
mov r11, rax
mov qword [rax], r15
lea rax, [0x140099770]
mov qword [r11 + 0x4870], rax
lea rax, [0x140099c20]
mov qword [r11 + 0x4878], rax
lea rax, [0x140099d30]
mov qword [r11 + 0x4880], rax
mov eax, 1
xor ecx, ecx
xchg rbx, r8
cpuid
xchg rbx, r8
test edx, 0x4000000
je 0x14008b9f3
lea rax, [0x140099fd0]
mov qword [r11 + 0x4870], rax
lea rax, [0x14009a830]
mov qword [r11 + 0x4878], rax
lea rax, [0x14009aaa0]
mov qword [r11 + 0x4880], rax
mov rax, qword [r11]
mov dword [rax + 8], 0
cmp dword [rsp + 0x240], 5
jb 0x14008ba56
mov eax, dword [0x14020d230]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_req_comp
mov qword [rax + 8], rcx
jmp 0x14008e0b6
mov eax, dword [0x14020d230]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.outofmem
mov qword [rax + 8], rcx
xor r15d, r15d
jmp 0x14008e0c2
mov qword [rsp + 0xb8], r14
mov qword [rsp + 0xc0], rbx
mov qword [rsp + 0xc8], rdi
mov dword [r11 + 0x4868], 0
pxor xmm0, xmm0
movdqu xmmword [r11 + 0x46d8], xmm0
movdqu xmmword [r11 + 0x4738], xmm0
movdqu xmmword [r11 + 0x4798], xmm0
movdqu xmmword [r11 + 0x47f8], xmm0
mov rcx, r11
xor edx, edx
mov qword [rsp + 0x38], r11
call fcn.140099610
mov r11, qword [rsp + 0x38]
test eax, eax
je 0x14008e01f
mov rcx, r11
call fcn.14009ac50
mov r11, qword [rsp + 0x38]
lea rcx, [r11 + 0x1a48]
mov qword [rsp + 0x60], rcx
lea rcx, [r11 + 8]
mov qword [rsp + 0x50], rcx
lea rcx, [r11 + 0x46a0]
mov qword [rsp + 0x80], rcx
lea r14, [r11 + 0x2074]
lea rbx, str.bad_SOS_component_count
lea r15, str.bad_SOS_len
lea r13, str.bad_DNL_len
cmp al, 0xda
je 0x14008bb3b
movzx edx, al
cmp edx, 0xdc
je 0x14008bb70
cmp edx, 0xd9
je 0x14008d1dd
mov rcx, r11
call fcn.14009adb0
mov r11, qword [rsp + 0x38]
test eax, eax
jne 0x14008bb9d
jmp 0x14008d438
mov rcx, qword [r11]
call fcn.140093db0
mov r11, qword [rsp + 0x38]
mov ebp, eax
mov rdi, qword [r11]
mov rax, qword [rdi + 0xc0]
cmp rax, qword [rdi + 0xc8]
jae 0x14008bbaf
lea rcx, [rax + 1]
mov qword [rdi + 0xc0], rcx
movzx eax, byte [rax]
jmp 0x14008bc16
mov rcx, qword [r11]
mov rsi, r11
call fcn.140093db0
mov ebp, eax
mov rcx, qword [rsi]
call fcn.140093db0
cmp ebp, 4
jne 0x14008d611
mov rcx, qword [rsi]
cmp eax, dword [rcx + 4]
mov r11, rsi
jne 0x14008d61c
mov rcx, r11
call fcn.14009ac50
mov r11, qword [rsp + 0x38]
jmp 0x14008bb0a
cmp dword [rdi + 0x30], 0
je 0x14008d88a
mov r8d, dword [rdi + 0x34]
lea r12, [rdi + 0x38]
mov rcx, qword [rdi + 0x28]
mov rdx, r12
call qword [rdi + 0x10]
mov ecx, dword [rdi + 0xc0]
sub ecx, dword [rdi + 0xd0]
add dword [rdi + 0xb8], ecx
test eax, eax
je 0x14008bbee
movsxd rcx, eax
add rcx, r12
movzx eax, byte [r12]
jmp 0x14008bbff
mov dword [rdi + 0x30], 0
lea rcx, [rdi + 0x39]
mov byte [rdi + 0x38], 0
xor eax, eax
mov qword [rdi + 0xc8], rcx
lea rcx, [rdi + 0x39]
mov qword [rdi + 0xc0], rcx
mov r11, qword [rsp + 0x38]
movzx eax, al
mov dword [r11 + 0x4854], eax
lea ecx, [rax - 5]
cmp cl, 0xfc
jb 0x14008e005
mov r13, qword [r11]
cmp dword [r13 + 8], eax
jl 0x14008e005
add eax, eax
add eax, 6
cmp ebp, eax
jne 0x14008d628
mov qword [rsp + 0x78], r14
xor r15d, r15d
mov rax, qword [r13 + 0xc0]
cmp rax, qword [r13 + 0xc8]
jae 0x14008bc70
lea rcx, [rax + 1]
mov qword [r13 + 0xc0], rcx
movzx edi, byte [rax]
jmp 0x14008bcdd
cmp dword [r13 + 0x30], 0
je 0x14008bcaf
mov r8d, dword [r13 + 0x34]
lea r12, [r13 + 0x38]
mov rcx, qword [r13 + 0x28]
mov rdx, r12
call qword [r13 + 0x10]
mov ecx, dword [r13 + 0xc0]
sub ecx, dword [r13 + 0xd0]
add dword [r13 + 0xb8], ecx
test eax, eax
je 0x14008bcb3
cdqe
add rax, r12
movzx edi, byte [r12]
jmp 0x14008bcc6
xor edi, edi
jmp 0x14008bcdd
mov dword [r13 + 0x30], 0
lea rax, [r13 + 0x39]
mov byte [r13 + 0x38], 0
xor edi, edi
mov r11, qword [rsp + 0x38]
mov qword [r13 + 0xc8], rax
lea rax, [r13 + 0x39]
mov qword [r13 + 0xc0], rax
mov rbx, qword [r11]
mov rax, qword [rbx + 0xc0]
cmp rax, qword [rbx + 0xc8]
jae 0x14008bd00
lea rcx, [rax + 1]
mov qword [rbx + 0xc0], rcx
movzx eax, byte [rax]
jmp 0x14008bd67
cmp dword [rbx + 0x30], 0
je 0x14008bd3b
mov r8d, dword [rbx + 0x34]
lea r12, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, r12
call qword [rbx + 0x10]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
test eax, eax
je 0x14008bd3f
movsxd rcx, eax
add rcx, r12
movzx eax, byte [r12]
jmp 0x14008bd50
xor eax, eax
jmp 0x14008bd67
mov dword [rbx + 0x30], 0
lea rcx, [rbx + 0x39]
mov byte [rbx + 0x38], 0
xor eax, eax
mov r11, qword [rsp + 0x38]
mov qword [rbx + 0xc8], rcx
lea rcx, [rbx + 0x39]
mov qword [rbx + 0xc0], rcx
mov r13, qword [r11]
mov edx, dword [r13 + 8]
test edx, edx
jle 0x14008bd96
movzx r8d, dil
mov r9, qword [rsp + 0x80]
xor ecx, ecx
cmp dword [r9], r8d
je 0x14008bd98
inc rcx
add r9, 0x60
cmp rdx, rcx
jne 0x14008bd80
jmp 0x14008e01f
xor ecx, ecx
cmp ecx, edx
je 0x14008e01f
movzx eax, al
mov r8d, eax
shr r8d, 4
mov edx, ecx
lea rdx, [rdx + rdx*2]
shl rdx, 5
mov dword [r11 + rdx + 0x46b0], r8d
cmp al, 0x3f
ja 0x14008d1c5
and eax, 0xf
mov dword [r11 + rdx + 0x46b4], eax
cmp eax, 3
ja 0x14008d1d1
mov dword [r11 + r15*4 + 0x4858], ecx
inc r15
movsxd rax, dword [r11 + 0x4854]
cmp r15, rax
jl 0x14008bc4e
mov rax, qword [r13 + 0xc0]
cmp rax, qword [r13 + 0xc8]
jae 0x14008be1a
lea rcx, [rax + 1]
mov qword [r13 + 0xc0], rcx
movzx eax, byte [rax]
lea rbx, str.bad_SOS
jmp 0x14008be8f
cmp dword [r13 + 0x30], 0
lea rbx, str.bad_SOS
je 0x14008be61
mov r8d, dword [r13 + 0x34]
lea r12, [r13 + 0x38]
mov rcx, qword [r13 + 0x28]
mov rdx, r12
call qword [r13 + 0x10]
mov ecx, dword [r13 + 0xc0]
sub ecx, dword [r13 + 0xd0]
add dword [r13 + 0xb8], ecx
test eax, eax
je 0x14008be65
movsxd rcx, eax
add rcx, r12
movzx eax, byte [r12]
jmp 0x14008be78
xor eax, eax
jmp 0x14008be8f
mov dword [r13 + 0x30], 0
lea rcx, [r13 + 0x39]
mov byte [r13 + 0x38], 0
xor eax, eax
mov r11, qword [rsp + 0x38]
mov qword [r13 + 0xc8], rcx
lea rcx, [r13 + 0x39]
mov qword [r13 + 0xc0], rcx
movzx eax, al
mov dword [r11 + 0x4834], eax
mov rdi, qword [r11]
mov rax, qword [rdi + 0xc0]
cmp rax, qword [rdi + 0xc8]
jae 0x14008bebc
lea rcx, [rax + 1]
mov qword [rdi + 0xc0], rcx
movzx eax, byte [rax]
jmp 0x14008bf23
cmp dword [rdi + 0x30], 0
je 0x14008bef7
mov r8d, dword [rdi + 0x34]
lea r12, [rdi + 0x38]
mov rcx, qword [rdi + 0x28]
mov rdx, r12
call qword [rdi + 0x10]
mov ecx, dword [rdi + 0xc0]
sub ecx, dword [rdi + 0xd0]
add dword [rdi + 0xb8], ecx
test eax, eax
je 0x14008befb
movsxd rcx, eax
add rcx, r12
movzx eax, byte [r12]
jmp 0x14008bf0c
xor eax, eax
jmp 0x14008bf23
mov dword [rdi + 0x30], 0
lea rcx, [rdi + 0x39]
mov byte [rdi + 0x38], 0
xor eax, eax
mov r11, qword [rsp + 0x38]
mov qword [rdi + 0xc8], rcx
lea rcx, [rdi + 0x39]
mov qword [rdi + 0xc0], rcx
movzx eax, al
mov dword [r11 + 0x4838], eax
mov rdi, qword [r11]
mov rax, qword [rdi + 0xc0]
cmp rax, qword [rdi + 0xc8]
jae 0x14008bf50
lea rcx, [rax + 1]
mov qword [rdi + 0xc0], rcx
movzx eax, byte [rax]
jmp 0x14008bfb7
cmp dword [rdi + 0x30], 0
je 0x14008bf8b
mov r8d, dword [rdi + 0x34]
lea r12, [rdi + 0x38]
mov rcx, qword [rdi + 0x28]
mov rdx, r12
call qword [rdi + 0x10]
mov ecx, dword [rdi + 0xc0]
sub ecx, dword [rdi + 0xd0]
add dword [rdi + 0xb8], ecx
test eax, eax
je 0x14008bf8f
movsxd rcx, eax
add rcx, r12
movzx eax, byte [r12]
jmp 0x14008bfa0
xor eax, eax
jmp 0x14008bfb7
mov dword [rdi + 0x30], 0
lea rcx, [rdi + 0x39]
mov byte [rdi + 0x38], 0
xor eax, eax
mov r11, qword [rsp + 0x38]
mov qword [rdi + 0xc8], rcx
lea rcx, [rdi + 0x39]
mov qword [rdi + 0xc0], rcx
movzx edx, al
mov ecx, edx
shr ecx, 4
mov dword [r11 + 0x483c], ecx
and edx, 0xf
mov dword [r11 + 0x4840], edx
mov ecx, dword [r11 + 0x4830]
mov r8d, dword [r11 + 0x4834]
test ecx, ecx
je 0x14008c018
cmp r8d, 0x3f
jg 0x14008e005
mov r9d, dword [r11 + 0x4838]
cmp r9d, 0x3f
jg 0x14008e005
cmp r8d, r9d
jg 0x14008e005
cmp al, 0xdf
ja 0x14008e005
cmp edx, 0xd
jbe 0x14008c03c
jmp 0x14008e005
test r8d, r8d
jne 0x14008e005
cmp al, 0xf
ja 0x14008e005
test edx, edx
jne 0x14008e005
mov dword [r11 + 0x4838], 0x3f
mov edx, dword [r11 + 0x4854]
mov eax, dword [r11 + 0x4868]
test eax, eax
mov r8d, 0x7fffffff
cmove eax, r8d
mov qword [r11 + 0x4820], 0
mov dword [r11 + 0x482c], 0
mov dword [r11 + 0x47d8], 0
mov dword [r11 + 0x4778], 0
mov dword [r11 + 0x4718], 0
mov dword [r11 + 0x46b8], 0
mov byte [r11 + 0x4828], 0xff
mov dword [r11 + 0x486c], eax
mov dword [r11 + 0x4844], 0
test ecx, ecx
je 0x14008c99e
cmp edx, 1
jne 0x14008ca10
movsxd rax, dword [r11 + 0x4858]
mov qword [rsp + 0x98], rax
lea rax, [rax + rax*2]
shl rax, 5
mov edx, dword [r11 + rax + 0x46c0]
test edx, edx
jle 0x14008cfb8
mov ecx, edx
add ecx, 7
shr ecx, 3
mov dword [rsp + 0xa4], ecx
mov ecx, dword [r11 + rax + 0x46bc]
mov qword [rsp + 0xb0], rcx
add ecx, 7
sar ecx, 3
add rax, r11
add rax, 0x46f0
mov qword [rsp + 0x90], rax
cmp ecx, 2
mov eax, 1
cmovl ecx, eax
mov dword [rsp + 0x70], ecx
mov dword [rsp + 0x58], 0
cmp dword [rsp + 0xb0], 0
mov rcx, qword [rsp + 0x90]
jle 0x14008c982
xor edi, edi
jmp 0x14008c1eb
movzx eax, byte [r11 + 0x4828]
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x14008cfc0
mov qword [r11 + 0x4820], 0
mov dword [r11 + 0x482c], 0
mov dword [r11 + 0x47d8], 0
mov dword [r11 + 0x4778], 0
mov dword [r11 + 0x4718], 0
mov dword [r11 + 0x46b8], 0
mov byte [r11 + 0x4828], 0xff
mov eax, dword [r11 + 0x4868]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [r11 + 0x486c], eax
mov dword [r11 + 0x4844], 0
inc edi
cmp edi, dword [rsp + 0x70]
mov rcx, qword [rsp + 0x90]
je 0x14008c982
mov eax, dword [rcx + 8]
imul eax, dword [rsp + 0x58]
add eax, edi
shl eax, 6
movsxd r13, eax
add r13, r13
add r13, qword [rcx]
movsxd r15, dword [r11 + 0x4834]
test r15, r15
mov dword [rsp + 0x48], edi
je 0x14008c303
movsxd rcx, dword [rcx - 0x3c]
imul rbx, rcx, 0x690
lea r14, [r11 + rbx]
add r14, 0x1a48
cmp dword [r11 + 0x483c], 0
mov ebp, dword [r11 + 0x4840]
mov eax, dword [r11 + 0x4844]
je 0x14008c337
test eax, eax
je 0x14008c386
dec eax
mov dword [r11 + 0x4844], eax
cmp r15d, dword [r11 + 0x4838]
jg 0x14008c348
mov edi, 0x10000
mov ecx, ebp
shl edi, cl
sar edi, 0x10
mov ebx, edi
neg ebx
jmp 0x14008c28e
lea rax, [r15 + 1]
movsxd rcx, dword [r11 + 0x4838]
cmp r15, rcx
mov r15, rax
jge 0x14008c348
lea rax, [0x14011a870]
movzx r14d, byte [r15 + rax]
cmp word [r13 + r14*2], 0
je 0x14008c277
mov eax, dword [r11 + 0x4824]
test eax, eax
jg 0x14008c2c6
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov eax, dword [r11 + 0x4824]
test eax, eax
jle 0x14008c277
mov ecx, dword [r11 + 0x4820]
lea edx, [rcx + rcx]
mov dword [r11 + 0x4820], edx
dec eax
mov dword [r11 + 0x4824], eax
test ecx, ecx
jns 0x14008c277
movsx eax, word [r13 + r14*2]
test edi, eax
jne 0x14008c277
test ax, ax
mov ecx, ebx
cmovg ecx, edi
add ecx, eax
mov word [r13 + r14*2], cx
jmp 0x14008c277
movsxd rax, dword [rcx - 0x40]
imul rax, rax, 0x690
lea r8, [r11 + rax]
add r8, 8
mov rcx, r11
mov rdx, r13
mov r9, qword [rsp + 0x98]
call fcn.14009d040
mov r11, qword [rsp + 0x38]
test eax, eax
jne 0x14008c348
jmp 0x14008e01f
test eax, eax
je 0x14008c674
dec eax
mov dword [r11 + 0x4844], eax
mov eax, dword [r11 + 0x486c]
lea ecx, [rax - 1]
mov dword [r11 + 0x486c], ecx
cmp eax, 1
mov edi, dword [rsp + 0x48]
jg 0x14008c1d7
cmp dword [r11 + 0x4824], 0x17
jg 0x14008c154
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
jmp 0x14008c154
mov eax, 0x10000
mov ecx, ebp
shl eax, cl
sar eax, 0x10
mov dword [rsp + 0x44], eax
neg eax
mov dword [rsp + 0x88], eax
mov rax, qword [rsp + 0x78]
lea r12, [rax + rbx]
mov qword [rsp + 0x68], r14
jmp 0x14008c3d0
inc r15d
mov word [r13 + rbx*2], si
mov eax, dword [r11 + 0x4838]
mov rbx, rbp
mov r14, qword [rsp + 0x68]
cmp r15d, eax
jg 0x14008c348
cmp dword [r11 + 0x4824], 0xf
jg 0x14008c3e7
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov r8d, dword [r11 + 0x4820]
mov rax, r8
shr rax, 0x17
movzx eax, byte [r14 + rax]
cmp rax, 0xff
je 0x14008c433
lea rcx, [r11 + rbx]
movzx ecx, byte [rax + rcx + 0x1f48]
mov edx, dword [r11 + 0x4824]
sub edx, ecx
jl 0x14008dffe
shl r8d, cl
mov dword [r11 + 0x4820], r8d
mov dword [r11 + 0x4824], edx
jmp 0x14008c4b7
mov eax, r8d
shr eax, 0x10
xor r9d, r9d
mov rcx, r9
inc r9
cmp eax, dword [r12 + rcx*4]
jae 0x14008c43c
mov edx, dword [r11 + 0x4824]
cmp r9d, 8
je 0x14008dff4
lea rax, [r9 + 9]
cmp edx, eax
jl 0x14008dffe
mov cl, 0x17
sub cl, r9b
mov r10d, r8d
shr r10d, cl
mov ecx, eax
mov rsi, r11
lea r11, [0x14011a8d0]
and r10d, dword [r11 + rcx*4]
lea r11, [rsi + rbx]
add r10d, dword [r11 + rcx*4 + 0x2094]
cmp r10d, 0xff
ja 0x14008e0f1
sub edx, r9d
mov ecx, eax
shl r8d, cl
add edx, 0xfffffff7
mov dword [rsi + 0x4824], edx
mov dword [rsi + 0x4820], r8d
mov eax, r10d
mov r11, rsi
lea rcx, [r11 + rbx]
movzx eax, byte [rax + rcx + 0x1e48]
mov ecx, eax
and ecx, 0xf
mov rbp, rax
shr rbp, 4
cmp ecx, 1
je 0x14008c56b
test ecx, ecx
jne 0x14008dffe
xor esi, esi
mov edi, 0xf
cmp al, 0xef
ja 0x14008c5b8
mov r8d, 0xffffffff
mov ecx, ebp
shl r8d, cl
not r8d
mov dword [r11 + 0x4844], r8d
mov edi, 0x40
cmp al, 0x10
jb 0x14008c5b8
cmp edx, ebp
jge 0x14008c529
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov edx, dword [r11 + 0x4824]
xor esi, esi
mov eax, 0
sub edx, ebp
jl 0x14008c562
mov eax, dword [r11 + 0x4820]
mov ecx, ebp
rol eax, cl
lea rcx, [0x14011a8d0]
mov ecx, dword [rcx + rbp*4]
mov r8d, ecx
not r8d
and r8d, eax
mov dword [r11 + 0x4820], r8d
and eax, ecx
mov dword [r11 + 0x4824], edx
add dword [r11 + 0x4844], eax
jmp 0x14008c5b8
test edx, edx
jg 0x14008c58e
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov edx, dword [r11 + 0x4824]
test edx, edx
jle 0x14008c5a7
mov r8d, dword [r11 + 0x4820]
lea eax, [r8 + r8]
mov dword [r11 + 0x4820], eax
dec edx
mov dword [r11 + 0x4824], edx
test r8d, r8d
js 0x14008c5b2
mov edi, ebp
mov esi, dword [rsp + 0x88]
jmp 0x14008c5b8
mov edi, ebp
mov esi, dword [rsp + 0x44]
mov eax, dword [r11 + 0x4838]
cmp r15d, eax
jg 0x14008c3c7
mov rbp, rbx
movsxd r15, r15d
lea r14, [0x14011a870]
jmp 0x14008c5f8
sub eax, dword [rsp + 0x44]
mov word [r13 + rbx*2], ax
inc r15
movsxd rax, dword [r11 + 0x4838]
lea rcx, [r15 - 1]
cmp rcx, rax
jge 0x14008c3bf
movzx ebx, byte [r15 + r14]
cmp word [r13 + rbx*2], 0
je 0x14008c665
mov eax, dword [r11 + 0x4824]
test eax, eax
jg 0x14008c629
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov eax, dword [r11 + 0x4824]
test eax, eax
jle 0x14008c5e1
mov ecx, dword [r11 + 0x4820]
lea edx, [rcx + rcx]
mov dword [r11 + 0x4820], edx
dec eax
mov dword [r11 + 0x4824], eax
test ecx, ecx
jns 0x14008c5e1
movsx eax, word [r13 + rbx*2]
test dword [rsp + 0x44], eax
jne 0x14008c5e1
test ax, ax
jle 0x14008c5d7
add eax, dword [rsp + 0x44]
jmp 0x14008c5db
test edi, edi
je 0x14008c3af
dec edi
jmp 0x14008c5e1
shl rcx, 0xa
lea rdi, [r11 + rcx]
add rdi, 0x3688
mov rax, qword [rsp + 0x78]
lea r12, [rax + rbx]
mov dword [rsp + 0x44], ebp
mov qword [rsp + 0x88], rdi
mov qword [rsp + 0xa8], r12
jmp 0x14008c6cc
inc r15d
mov ecx, ebp
shl eax, cl
mov word [r13 + rdi*2], ax
mov rdi, qword [rsp + 0x88]
mov r12, qword [rsp + 0xa8]
cmp r15d, dword [r11 + 0x4838]
jg 0x14008c348
cmp dword [r11 + 0x4824], 0xf
jg 0x14008c6e3
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov r8d, dword [r11 + 0x4820]
mov rcx, r8
shr rcx, 0x17
movsx eax, word [rdi + rcx*2]
test eax, eax
je 0x14008c75e
mov ecx, eax
and ecx, 0xf
mov edx, dword [r11 + 0x4824]
sub edx, ecx
lea r10, [0x14011a870]
jl 0x14008dffe
mov r9d, eax
shr r9d, 4
and r9d, 0xf
shl r8d, cl
movsxd rcx, r15d
add rcx, r9
mov dword [r11 + 0x4820], r8d
mov dword [r11 + 0x4824], edx
lea r15d, [rcx + 1]
movzx edx, byte [r10 + rcx]
shr eax, 8
mov ecx, ebp
shl eax, cl
mov word [r13 + rdx*2], ax
cmp r15d, dword [r11 + 0x4838]
jle 0x14008c6cc
jmp 0x14008c348
cmp dword [r11 + 0x4824], 0xf
lea rdi, [0x14011a870]
jg 0x14008c78a
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov r8d, dword [r11 + 0x4820]
mov rcx, r8
shr rcx, 0x17
movzx eax, byte [r14 + rcx]
cmp rax, 0xff
je 0x14008c7c8
lea rcx, [r11 + rbx]
movzx ecx, byte [rax + rcx + 0x1f48]
mov edx, dword [r11 + 0x4824]
sub edx, ecx
jl 0x14008dffe
shl r8d, cl
mov dword [r11 + 0x4820], r8d
mov dword [r11 + 0x4824], edx
jmp 0x14008c84e
mov eax, r8d
shr eax, 0x10
xor r9d, r9d
mov rcx, r9
inc r9
cmp eax, dword [r12 + rcx*4]
jae 0x14008c7d1
mov edx, dword [r11 + 0x4824]
cmp r9d, 8
je 0x14008dff4
lea rax, [r9 + 9]
cmp edx, eax
jl 0x14008e143
mov cl, 0x17
sub cl, r9b
mov r10d, r8d
shr r10d, cl
mov ecx, eax
lea r11, [0x14011a8d0]
and r10d, dword [r11 + rcx*4]
mov rsi, qword [rsp + 0x38]
lea r11, [rsi + rbx]
add r10d, dword [r11 + rcx*4 + 0x2094]
cmp r10d, 0xff
ja 0x14008e0f1
sub edx, r9d
mov ecx, eax
shl r8d, cl
add edx, 0xfffffff7
mov dword [rsi + 0x4824], edx
mov dword [rsi + 0x4820], r8d
mov eax, r10d
mov r11, rsi
lea rcx, [r11 + rbx]
movzx r8d, byte [rax + rcx + 0x1e48]
mov r12d, r8d
and r12d, 0xf
mov rbp, r8
shr rbp, 4
test r12, r12
je 0x14008c8f4
mov eax, ebp
movsxd r15, r15d
add r15, rax
movzx edi, byte [rdi + r15]
cmp edx, r12d
jge 0x14008c898
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
mov edx, dword [r11 + 0x4824]
xor eax, eax
sub edx, r12d
mov ebp, dword [rsp + 0x44]
jl 0x14008c6a2
mov r8d, dword [r11 + 0x4820]
mov eax, r8d
mov ecx, r12d
rol r8d, cl
shr eax, 0x1f
lea rcx, [0x14011a8d0]
mov ecx, dword [rcx + r12*4]
mov r9d, ecx
not r9d
and r9d, r8d
mov dword [r11 + 0x4820], r9d
and r8d, ecx
mov dword [r11 + 0x4824], edx
dec eax
lea rcx, [0x14011a920]
and eax, dword [rcx + r12*4]
add eax, r8d
jmp 0x14008c6a2
cmp r8b, 0xef
jbe 0x14008c907
add r15d, 0x10
mov ebp, dword [rsp + 0x44]
jmp 0x14008c6af
mov eax, 1
mov ecx, ebp
shl eax, cl
mov dword [r11 + 0x4844], eax
cmp r8b, 0x10
jb 0x14008c33f
cmp edx, ebp
jge 0x14008c938
mov rsi, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14009ce80
mov edx, dword [rsi + 0x4824]
xor eax, eax
sub edx, ebp
jl 0x14008c971
mov r9, qword [rsp + 0x38]
mov eax, dword [r9 + 0x4820]
mov ecx, ebp
rol eax, cl
lea rcx, [0x14011a8d0]
mov ecx, dword [rcx + rbp*4]
mov r8d, ecx
not r8d
and r8d, eax
mov dword [r9 + 0x4820], r8d
and eax, ecx
mov dword [r9 + 0x4824], edx
mov r11, qword [rsp + 0x38]
add eax, dword [r11 + 0x4844]
jmp 0x14008c33f
mov eax, dword [rsp + 0x58]
inc eax
mov dword [rsp + 0x58], eax
cmp eax, dword [rsp + 0xa4]
jne 0x14008c137
jmp 0x14008cfb8
cmp edx, 1
mov ecx, 1
jne 0x14008cbdc
movsxd rdi, dword [r11 + 0x4858]
lea rax, [rdi + rdi*2]
shl rax, 5
mov edx, dword [r11 + rax + 0x46c0]
mov ebp, 1
test edx, edx
jle 0x14008cfb0
add edx, 7
shr edx, 3
mov dword [rsp + 0x44], edx
mov edx, dword [r11 + rax + 0x46bc]
lea r15d, [rdx + 7]
sar r15d, 3
cmp r15d, 2
cmovl r15d, ecx
lea r12, [r11 + rax]
add r12, 0x46b4
shl r15, 3
xor r13d, r13d
xor ebp, ebp
mov qword [rsp + 0x48], rdx
jmp 0x14008ce50
mov edx, dword [r11 + 0x4694]
test edx, edx
jle 0x14008cfb8
mov ecx, dword [r11 + 0x4690]
xor ebp, ebp
test ecx, ecx
jle 0x14008cbcd
xor r15d, r15d
mov edx, dword [r11 + 0x4854]
test edx, edx
jle 0x14008cb04
xor edi, edi
movsxd r12, dword [r11 + rdi*4 + 0x4858]
lea rax, [r12 + r12*2]
shl rax, 5
mov ecx, dword [r11 + rax + 0x46a8]
test ecx, ecx
jle 0x14008caee
lea rbx, [r11 + rax]
add rbx, 0x46a8
mov eax, dword [r11 + rax + 0x46a4]
xor r14d, r14d
jmp 0x14008ca84
inc r14d
cmp r14d, ecx
jge 0x14008cae7
test eax, eax
jle 0x14008ca7c
xor r13d, r13d
mov ecx, dword [rbx]
imul ecx, ebp
add ecx, r14d
imul ecx, dword [rbx + 0x50]
imul eax, r15d
add eax, r13d
add eax, ecx
shl eax, 6
movsxd rdx, eax
add rdx, rdx
add rdx, qword [rbx + 0x48]
movsxd rax, dword [rbx + 8]
imul rax, rax, 0x690
lea r8, [r11 + rax]
add r8, 8
mov rcx, r11
mov r9d, r12d
call fcn.14009d040
mov r11, qword [rsp + 0x38]
test eax, eax
je 0x14008e01f
inc r13d
mov eax, dword [rbx - 4]
cmp r13d, eax
jl 0x14008ca8b
mov ecx, dword [rbx]
jmp 0x14008ca7c
mov edx, dword [r11 + 0x4854]
inc rdi
movsxd rax, edx
cmp rdi, rax
jl 0x14008ca44
mov eax, dword [r11 + 0x486c]
lea ecx, [rax - 1]
mov dword [r11 + 0x486c], ecx
cmp eax, 1
mov eax, ecx
jg 0x14008cbb3
cmp dword [r11 + 0x4824], 0x17
jg 0x14008cb30
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
movzx eax, byte [r11 + 0x4828]
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x14008cfc0
mov qword [r11 + 0x4820], 0
mov dword [r11 + 0x482c], 0
mov dword [r11 + 0x47d8], 0
mov dword [r11 + 0x4778], 0
mov dword [r11 + 0x4718], 0
mov dword [r11 + 0x46b8], 0
mov byte [r11 + 0x4828], 0xff
mov eax, dword [r11 + 0x4868]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [r11 + 0x486c], eax
mov dword [r11 + 0x4844], 0
inc r15d
mov ecx, dword [r11 + 0x4690]
cmp r15d, ecx
jl 0x14008ca33
mov edx, dword [r11 + 0x4694]
inc ebp
cmp ebp, edx
jl 0x14008ca28
jmp 0x14008cfb8
mov edx, dword [r11 + 0x4694]
mov ebp, 1
test edx, edx
jle 0x14008cfb0
mov ecx, dword [r11 + 0x4690]
mov dword [rsp + 0x44], 0
test ecx, ecx
jle 0x14008ce20
mov dword [rsp + 0x48], 0
mov ecx, dword [r11 + 0x4854]
test ecx, ecx
jle 0x14008cd55
xor r8d, r8d
movsxd rbx, dword [r11 + r8*4 + 0x4858]
lea rdx, [rbx + rbx*2]
shl rdx, 5
mov eax, dword [r11 + rdx + 0x46a8]
test eax, eax
jle 0x14008cd3f
mov qword [rsp + 0x58], r8
lea r14, [r11 + rdx]
add r14, 0x46a8
mov r13d, dword [r11 + rdx + 0x46a4]
xor ebp, ebp
jmp 0x14008cc67
inc ebp
cmp ebp, eax
jge 0x14008cd2e
test r13d, r13d
jle 0x14008cc5d
xor edi, edi
lea r12, [rsp + 0xd0]
mov r15d, dword [r14]
movsxd rax, dword [r14 + 0xc]
movsxd rcx, dword [r14 + 4]
shl rcx, 7
add rcx, r11
add rcx, 0x3488
imul r9, rax, 0x690
shl rax, 0xa
add rax, r11
add rax, 0x3688
add r9, qword [rsp + 0x60]
movsxd rdx, dword [r14 + 8]
imul r8, rdx, 0x690
add r8, qword [rsp + 0x50]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
mov rcx, r11
mov rdx, r12
mov rsi, r11
call fcn.14009c960
test eax, eax
je 0x14008cfab
imul r15d, dword [rsp + 0x44]
add r15d, ebp
imul r13d, dword [rsp + 0x48]
add r13d, edi
shl r13d, 3
mov edx, dword [r14 + 0x1c]
imul r15d, edx
shl r15d, 3
movsxd rax, r15d
add rax, qword [r14 + 0x28]
movsxd rcx, r13d
add rcx, rax
mov r8, r12
call qword [rsi + 0x4870]
inc edi
mov r13d, dword [r14 - 4]
cmp edi, r13d
mov r11, rsi
jl 0x14008cc76
mov eax, dword [r14]
jmp 0x14008cc5d
mov ecx, dword [r11 + 0x4854]
mov ebp, 1
mov r8, qword [rsp + 0x58]
inc r8
movsxd rax, ecx
cmp r8, rax
jl 0x14008cc21
mov eax, dword [r11 + 0x486c]
lea ecx, [rax - 1]
mov dword [r11 + 0x486c], ecx
cmp eax, 1
mov eax, ecx
jg 0x14008ce00
cmp dword [r11 + 0x4824], 0x17
jg 0x14008cd81
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
movzx eax, byte [r11 + 0x4828]
and al, 0xf8
cmp al, 0xd0
jne 0x14008cfb0
mov qword [r11 + 0x4820], 0
mov dword [r11 + 0x482c], 0
mov dword [r11 + 0x47d8], 0
mov dword [r11 + 0x4778], 0
mov dword [r11 + 0x4718], 0
mov dword [r11 + 0x46b8], 0
mov byte [r11 + 0x4828], 0xff
mov eax, dword [r11 + 0x4868]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [r11 + 0x486c], eax
mov dword [r11 + 0x4844], 0
mov edx, dword [rsp + 0x48]
inc edx
mov ecx, dword [r11 + 0x4690]
mov dword [rsp + 0x48], edx
cmp edx, ecx
jl 0x14008cc0f
mov edx, dword [r11 + 0x4694]
mov r8d, dword [rsp + 0x44]
inc r8d
mov dword [rsp + 0x44], r8d
cmp r8d, edx
jl 0x14008cbff
jmp 0x14008cfb0
inc ebp
add r13d, 8
cmp ebp, dword [rsp + 0x44]
mov rdx, qword [rsp + 0x48]
je 0x14008d1b3
test edx, edx
jle 0x14008ce3b
xor r14d, r14d
jmp 0x14008cee8
movzx eax, byte [r11 + 0x4828]
and al, 0xf8
cmp al, 0xd0
jne 0x14008d1b3
mov qword [r11 + 0x4820], 0
mov dword [r11 + 0x482c], 0
mov dword [r11 + 0x47d8], 0
mov dword [r11 + 0x4778], 0
mov dword [r11 + 0x4718], 0
mov dword [r11 + 0x46b8], 0
mov byte [r11 + 0x4828], 0xff
mov eax, dword [r11 + 0x4868]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [r11 + 0x486c], eax
mov dword [r11 + 0x4844], 0
add r14, 8
cmp r15, r14
je 0x14008ce3b
movsxd rax, dword [r12]
movsxd rcx, dword [r12 - 8]
shl rcx, 7
add rcx, r11
add rcx, 0x3488
imul r9, rax, 0x690
shl rax, 0xa
add rax, r11
add rax, 0x3688
add r9, qword [rsp + 0x60]
movsxd rdx, dword [r12 - 4]
imul r8, rdx, 0x690
add r8, qword [rsp + 0x50]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], edi
mov qword [rsp + 0x20], rax
mov rcx, r11
lea rbx, [rsp + 0xd0]
mov rdx, rbx
mov rsi, r11
call fcn.14009c960
test eax, eax
je 0x14008cfab
mov edx, dword [r12 + 0x10]
mov eax, r13d
imul eax, edx
movsxd rcx, eax
add rcx, qword [r12 + 0x1c]
add rcx, r14
mov r8, rbx
call qword [rsi + 0x4870]
mov eax, dword [rsi + 0x486c]
lea ecx, [rax - 1]
mov dword [rsi + 0x486c], ecx
cmp eax, 1
mov r11, rsi
jg 0x14008cedb
cmp dword [r11 + 0x4824], 0x17
jg 0x14008ce5c
mov rcx, r11
call fcn.14009ce80
mov r11, qword [rsp + 0x38]
jmp 0x14008ce5c
xor ebp, ebp
mov r11, rsi
test ebp, ebp
je 0x14008e01f
movzx eax, byte [r11 + 0x4828]
cmp al, 0xff
lea rbx, str.bad_SOS_component_count
mov r14, qword [rsp + 0x78]
lea r15, str.bad_SOS_len
lea r13, str.bad_DNL_len
jne 0x14008d193
jmp 0x14008d152
mov rdi, qword [r11]
mov rax, qword [rdi + 0xc0]
cmp rax, qword [rdi + 0xc8]
jae 0x14008d00d
lea rcx, [rax + 1]
mov qword [rdi + 0xc0], rcx
movzx eax, byte [rax]
jmp 0x14008d090
cmp dword [rdi + 0x30], 0
je 0x14008d048
mov r8d, dword [rdi + 0x34]
lea r12, [rdi + 0x38]
mov rcx, qword [rdi + 0x28]
mov rdx, r12
call qword [rdi + 0x10]
mov ecx, dword [rdi + 0xc0]
sub ecx, dword [rdi + 0xd0]
add dword [rdi + 0xb8], ecx
test eax, eax
je 0x14008d04c
movsxd rcx, eax
add rcx, r12
movzx eax, byte [r12]
jmp 0x14008d05d
xor eax, eax
jmp 0x14008d090
mov dword [rdi + 0x30], 0
lea rcx, [rdi + 0x39]
mov byte [rdi + 0x38], 0
xor eax, eax
mov qword [rdi + 0xc8], rcx
lea rcx, [rdi + 0x39]
mov qword [rdi + 0xc0], rcx
mov r11, qword [rsp + 0x38]
jmp 0x14008d090
lea rcx, [rax + 1]
mov qword [rdi + 0xc0], rcx
movzx eax, byte [rax]
lea ecx, [rax - 1]
cmp cl, 0xfd
jbe 0x14008d18c
cmp al, 0xff
jne 0x14008d152
mov rdi, qword [r11]
cmp qword [rdi + 0x10], 0
je 0x14008d0bc
mov rcx, qword [rdi + 0x28]
call qword [rdi + 0x20]
mov r11, qword [rsp + 0x38]
test eax, eax
je 0x14008d0d0
cmp dword [rdi + 0x30], 0
je 0x14008d18a
mov rax, qword [rdi + 0xc0]
cmp rax, qword [rdi + 0xc8]
jae 0x14008d18a
mov rdi, qword [r11]
mov rax, qword [rdi + 0xc0]
cmp rax, qword [rdi + 0xc8]
jb 0x14008d076
cmp dword [rdi + 0x30], 0
je 0x14008d11e
mov r8d, dword [rdi + 0x34]
lea r12, [rdi + 0x38]
mov rcx, qword [rdi + 0x28]
mov rdx, r12
call qword [rdi + 0x10]
mov ecx, dword [rdi + 0xc0]
sub ecx, dword [rdi + 0xd0]
add dword [rdi + 0xb8], ecx
test eax, eax
je 0x14008d125
movsxd rcx, eax
add rcx, r12
movzx eax, byte [r12]
jmp 0x14008d136
xor eax, eax
jmp 0x14008d084
mov dword [rdi + 0x30], 0
lea rcx, [rdi + 0x39]
mov byte [rdi + 0x38], 0
xor eax, eax
mov qword [rdi + 0xc8], rcx
lea rcx, [rdi + 0x39]
mov qword [rdi + 0xc0], rcx
mov r11, qword [rsp + 0x38]
jmp 0x14008d084
mov rdi, qword [r11]
cmp qword [rdi + 0x10], 0
je 0x14008d176
mov rcx, qword [rdi + 0x28]
call qword [rdi + 0x20]
mov r11, qword [rsp + 0x38]
test eax, eax
je 0x14008cfe7
cmp dword [rdi + 0x30], 0
je 0x14008d18a
mov rax, qword [rdi + 0xc0]
cmp rax, qword [rdi + 0xc8]
jb 0x14008cfe7
mov al, 0xff
mov byte [r11 + 0x4828], al
mov rcx, r11
call fcn.14009ac50
mov r11, qword [rsp + 0x38]
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x14008bb0a
jmp 0x14008bb9d
mov ebp, 1
test ebp, ebp
jne 0x14008cfb8
jmp 0x14008e01f
lea rbx, str.bad_DC_huff
jmp 0x14008e005
lea rbx, str.bad_AC_huff
jmp 0x14008e005
cmp dword [r11 + 0x4830], 0
je 0x14008d438
mov rax, qword [r11]
cmp dword [rax + 8], 0
jle 0x14008d438
lea r15, [r11 + 0x3508]
lea r12, [r11 + 0x348e]
xor edx, edx
jmp 0x14008d222
mov rax, qword [r11]
mov rdx, qword [rsp + 0x60]
inc rdx
movsxd rcx, dword [rax + 8]
cmp rdx, rcx
jge 0x14008d438
lea rcx, [rdx + rdx*2]
shl rcx, 5
mov esi, dword [r11 + rcx + 0x46c0]
test esi, esi
jle 0x14008d212
mov qword [rsp + 0x60], rdx
add esi, 7
shr esi, 3
mov eax, dword [r11 + rcx + 0x46bc]
mov qword [rsp + 0x80], rax
lea ebx, [rax + 7]
sar ebx, 3
lea r14, [r11 + rcx]
add r14, 0x46f0
cmp ebx, 2
mov eax, 1
cmovl ebx, eax
xor r13d, r13d
jmp 0x14008d288
inc r13d
cmp r13d, esi
je 0x14008d20a
cmp dword [rsp + 0x80], 0
jle 0x14008d280
lea ebp, [r13*8]
xor edi, edi
jmp 0x14008d384
movdqu xmm0, xmmword [rax]
movdqu xmm1, xmmword [r8]
pmullw xmm1, xmm0
movdqu xmm0, xmmword [r8 + 0x10]
movdqu xmm2, xmmword [r8 + 0x20]
movdqu xmm3, xmmword [r8 + 0x30]
movdqu xmmword [r8], xmm1
movdqu xmm1, xmmword [rax + 0x10]
pmullw xmm1, xmm0
movdqu xmmword [r8 + 0x10], xmm1
movdqu xmm0, xmmword [rax + 0x20]
pmullw xmm0, xmm2
movdqu xmmword [r8 + 0x20], xmm0
movdqu xmm0, xmmword [rax + 0x30]
pmullw xmm0, xmm3
movdqu xmmword [r8 + 0x30], xmm0
movdqu xmm0, xmmword [rax + 0x40]
movdqu xmm1, xmmword [r8 + 0x40]
pmullw xmm1, xmm0
movdqu xmmword [r8 + 0x40], xmm1
movdqu xmm0, xmmword [rax + 0x50]
movdqu xmm1, xmmword [r8 + 0x50]
pmullw xmm1, xmm0
movdqu xmmword [r8 + 0x50], xmm1
movdqu xmm0, xmmword [rax + 0x60]
movdqu xmm1, xmmword [r8 + 0x60]
pmullw xmm1, xmm0
movdqu xmmword [r8 + 0x60], xmm1
movdqu xmm0, xmmword [rax + 0x70]
movdqu xmm1, xmmword [r8 + 0x70]
pmullw xmm1, xmm0
movdqu xmmword [r8 + 0x70], xmm1
mov edx, dword [r14 - 0x2c]
mov eax, ebp
imul eax, edx
cdqe
add rax, qword [r14 - 0x20]
lea rcx, [rax + rdi*8]
mov rax, qword [rsp + 0x38]
call qword [rax + 0x4870]
mov r11, qword [rsp + 0x38]
inc rdi
cmp rdi, rbx
je 0x14008d280
mov rdx, qword [r14]
mov eax, dword [r14 + 8]
imul eax, r13d
add eax, edi
shl eax, 6
movsxd r9, eax
lea r8, [rdx + r9*2]
movsxd rcx, dword [r14 - 0x44]
shl rcx, 7
lea rax, [r11 + rcx]
add rax, 0x3488
lea r10, [r15 + rcx]
cmp r8, r10
jae 0x14008d2b0
lea r10, [rdx + r9*2]
add r10, 0x80
cmp rax, r10
jae 0x14008d2b0
add rcx, r12
lea rax, [rdx + r9*2]
add rax, 6
xor edx, edx
nop dword [rax + rax]
movzx r9d, word [rax + rdx*2 - 6]
imul r9w, word [rcx + rdx*2 - 6]
movzx r10d, word [rax + rdx*2 - 4]
mov word [rax + rdx*2 - 6], r9w
imul r10w, word [rcx + rdx*2 - 4]
mov word [rax + rdx*2 - 4], r10w
movzx r9d, word [rax + rdx*2 - 2]
imul r9w, word [rcx + rdx*2 - 2]
mov word [rax + rdx*2 - 2], r9w
movzx r9d, word [rax + rdx*2]
imul r9w, word [rcx + rdx*2]
mov word [rax + rdx*2], r9w
add rdx, 4
cmp rdx, 0x40
jne 0x14008d3e0
jmp 0x14008d355
mov r12, qword [r11]
mov eax, dword [r12 + 8]
xor ecx, ecx
cmp eax, 3
setge cl
mov edx, dword [rsp + 0x240]
test edx, edx
lea ecx, [rcx + rcx + 1]
cmovne ecx, edx
cmp eax, 3
jne 0x14008d477
mov dl, 1
cmp dword [r11 + 0x4850], 3
je 0x14008d479
cmp dword [r11 + 0x484c], 0
je 0x14008d8ae
xor edx, edx
test dl, dl
mov r8d, 1
cmovne r8d, eax
cmp ecx, 3
cmovge r8d, eax
cmp eax, 3
cmovne r8d, eax
test r8d, r8d
jle 0x14008d630
mov dword [rsp + 0x44], edx
mov dword [rsp + 0x60], ecx
pxor xmm0, xmm0
movdqa xmmword [rsp + 0x1a0], xmm0
movdqa xmmword [rsp + 0x190], xmm0
mov eax, dword [0x14020d230]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rax, [rax + 8]
mov qword [rsp + 0x50], rax
mov dword [rsp + 0x78], r8d
mov eax, r8d
mov ecx, dword [r12]
mov qword [rsp + 0x80], rax
shl rax, 4
lea rdi, [rax + rax*2]
xor ebx, ebx
mov r14, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
lea rsi, [0x14009c590]
lea rbp, [0x14009c7a0]
lea r13, [0x14009c390]
lea r15, [0x14009c380]
jmp 0x14008d534
mov rax, rbp
mov qword [rsp + rbx + 0xd0], rax
add rbx, 0x30
cmp rdi, rbx
je 0x14008d745
add ecx, 3
call r14
mov r11, qword [rsp + 0x38]
mov qword [r11 + rbx*2 + 0x46e8], rax
test rax, rax
je 0x14008d6c1
mov eax, dword [r11 + 0x4688]
cdq
idiv dword [r11 + rbx*2 + 0x46a4]
mov r9d, eax
mov dword [rsp + rbx + 0xe8], eax
mov eax, dword [r11 + 0x468c]
cdq
idiv dword [r11 + rbx*2 + 0x46a8]
mov r8d, eax
mov dword [rsp + rbx + 0xec], eax
sar eax, 1
mov dword [rsp + rbx + 0xf4], eax
mov ecx, dword [r12]
lea eax, [r9 + rcx]
dec eax
xor edx, edx
div r9d
mov dword [rsp + rbx + 0xf0], eax
mov dword [rsp + rbx + 0xf8], 0
movq xmm0, qword [r11 + rbx*2 + 0x46d0]
pshufd xmm0, xmm0, 0x44
movdqu xmmword [rsp + rbx + 0xd8], xmm0
cmp r9d, 2
je 0x14008d5ee
cmp r9d, 1
jne 0x14008d51c
cmp r8d, 2
mov rax, rbp
cmove rax, r13
cmp r8d, 1
cmove rax, r15
jmp 0x14008d51f
mov rax, rsi
cmp r8d, 1
je 0x14008d51f
cmp r8d, 2
jne 0x14008d51c
mov rax, qword [r11 + 0x4880]
jmp 0x14008d51f
mov rbx, r13
mov r11, rsi
jmp 0x14008e005
lea rbx, str.bad_DNL_height
jmp 0x14008e005
mov rbx, r15
jmp 0x14008e005
test eax, eax
jle 0x14008e0b6
shl rax, 5
lea rdi, [rax + rax*2]
mov rbx, r11
add rbx, 0x46f0
xor r15d, r15d
mov r14, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xorps xmm6, xmm6
xor r12d, r12d
jmp 0x14008d669
add r12, 0x60
cmp rdi, r12
je 0x14008e0b9
mov rcx, qword [rbx + r12 - 0x18]
test rcx, rcx
je 0x14008d681
call r14
mov r11, qword [rsp + 0x38]
movups xmmword [rbx + r12 - 0x20], xmm6
mov rcx, qword [rbx + r12 - 0x10]
test rcx, rcx
je 0x14008d6a4
call r14
mov r11, qword [rsp + 0x38]
mov qword [rbx + r12 - 0x10], 0
mov qword [rbx + r12], 0
mov rcx, qword [rbx + r12 - 8]
test rcx, rcx
je 0x14008d65c
call r14
mov r11, qword [rsp + 0x38]
mov qword [rbx + r12 - 8], 0
jmp 0x14008d65c
mov eax, dword [r12 + 8]
test eax, eax
jle 0x14008d89a
shl rax, 5
lea rdi, [rax + rax*2]
mov rbx, r11
add rbx, 0x46f0
xor r14d, r14d
mov r15, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xorps xmm6, xmm6
jmp 0x14008d6fc
add r14, 0x60
cmp rdi, r14
je 0x14008d86e
mov rcx, qword [rbx + r14 - 0x18]
test rcx, rcx
je 0x14008d70f
call r15
movups xmmword [rbx + r14 - 0x20], xmm6
mov rcx, qword [rbx + r14 - 0x10]
test rcx, rcx
je 0x14008d72d
call r15
mov qword [rbx + r14 - 0x10], 0
mov qword [rbx + r14], 0
mov rcx, qword [rbx + r14 - 8]
test rcx, rcx
je 0x14008d6ef
call r15
mov qword [rbx + r14 - 8], 0
jmp 0x14008d6ef
mov eax, ecx
mov ebx, dword [rsp + 0x60]
or eax, ebx
js 0x14008d7f0
mov edi, dword [r12 + 4]
test ecx, ecx
je 0x14008d76d
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, ebx
jl 0x14008d7f0
imul ecx, ebx
mov eax, edi
or eax, ecx
js 0x14008d7f0
test edi, edi
je 0x14008d787
mov eax, 0x7fffffff
xor edx, edx
div edi
cmp eax, ecx
jl 0x14008d7f0
imul ecx, edi
cmp ecx, 0x7fffffff
je 0x14008d7f0
inc ecx
movsxd rcx, ecx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
test rax, rax
je 0x14008d7f0
mov r15, rax
test edi, edi
je 0x14008df51
mov r13d, ebx
mov rax, qword [rsp + 0x38]
add rax, 0x46c0
mov qword [rsp + 0x90], rax
lea rax, [r15 + 1]
mov qword [rsp + 0x68], rax
lea rax, [r15 + 2]
mov qword [rsp + 0x98], rax
lea rax, [r15 + 3]
mov qword [rsp + 0x70], rax
xor edi, edi
xor r11d, r11d
mov qword [rsp + 0x58], r13
jmp 0x14008d8ff
mov eax, dword [r12 + 8]
test eax, eax
jle 0x14008d86e
shl rax, 5
lea rdi, [rax + rax*2]
mov rbx, qword [rsp + 0x38]
add rbx, 0x46f0
xor r14d, r14d
mov r15, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xorps xmm6, xmm6
jmp 0x14008d825
add r14, 0x60
cmp rdi, r14
je 0x14008d86e
mov rcx, qword [rbx + r14 - 0x18]
test rcx, rcx
je 0x14008d838
call r15
movups xmmword [rbx + r14 - 0x20], xmm6
mov rcx, qword [rbx + r14 - 0x10]
test rcx, rcx
je 0x14008d856
call r15
mov qword [rbx + r14 - 0x10], 0
mov qword [rbx + r14], 0
mov rcx, qword [rbx + r14 - 8]
test rcx, rcx
je 0x14008d81c
call r15
mov qword [rbx + r14 - 8], 0
jmp 0x14008d81c
lea rax, str.outofmem
mov rcx, qword [rsp + 0x50]
mov qword [rcx], rax
xor r15d, r15d
mov r11, qword [rsp + 0x38]
jmp 0x14008e0b9
mov dword [r11 + 0x4854], 0
jmp 0x14008e005
lea rax, str.outofmem
mov rcx, qword [rsp + 0x50]
mov qword [rcx], rax
jmp 0x14008e0b6
cmp dword [r11 + 0x4848], 0
sete dl
jmp 0x14008d479
mov eax, dword [r12]
mov r8, qword [rsp + 0x198]
mov r9, qword [rsp + 0x1a0]
mov dword [rsp + 0x28], r14d
mov dword [rsp + 0x20], eax
mov rsi, qword [rsp + 0x38]
call qword [rsi + 0x4878]
mov r11d, dword [rsp + 0x50]
mov r12, qword [rsi]
inc r11d
add edi, r14d
cmp r11d, dword [r12 + 4]
jae 0x14008df51
mov dword [rsp + 0x50], r11d
mov qword [rsp + 0x48], rdi
mov ebp, dword [r12]
cmp dword [rsp + 0x78], 0
jle 0x14008d9b7
lea rdi, [rsp + 0xf8]
mov rbx, qword [rsp + 0x90]
xor r14d, r14d
jmp 0x14008d942
inc r14
add rbx, 0x60
add rdi, 0x30
cmp qword [rsp + 0x80], r14
je 0x14008d9b7
mov r12d, dword [rdi - 4]
mov eax, dword [rdi - 0x10]
mov r13d, dword [rdi - 0xc]
mov ecx, r13d
sar ecx, 1
xor edx, edx
xor r8d, r8d
cmp r12d, ecx
setge dl
setl r8b
mov r9d, dword [rdi - 8]
mov r8, qword [rdi + r8*8 - 0x20]
mov rdx, qword [rdi + rdx*8 - 0x20]
mov rcx, qword [rbx + 0x28]
mov dword [rsp + 0x20], eax
call qword [rdi - 0x28]
mov qword [rsp + r14*8 + 0x190], rax
inc r12d
mov dword [rdi - 4], r12d
cmp r12d, r13d
jl 0x14008d92d
mov dword [rdi - 4], 0
mov rax, qword [rdi - 0x18]
mov qword [rdi - 0x20], rax
mov ecx, dword [rdi]
inc ecx
mov dword [rdi], ecx
cmp ecx, dword [rbx]
jge 0x14008d92d
movsxd rcx, dword [rbx + 4]
add rax, rcx
mov qword [rdi - 0x18], rax
jmp 0x14008d92d
mov r14d, dword [rsp + 0x60]
cmp r14d, 3
jl 0x14008dad1
mov r11d, dword [rsp + 0x50]
mov ecx, r11d
imul ecx, r14d
imul ecx, ebp
add rcx, r15
mov rdx, qword [rsp + 0x190]
mov rax, qword [rsp + 0x38]
mov r12, qword [rax]
mov eax, dword [r12 + 8]
cmp eax, 3
je 0x14008dc73
cmp eax, 4
mov r13, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x48]
jne 0x14008dce1
mov rax, qword [rsp + 0x38]
mov eax, dword [rax + 0x484c]
cmp eax, 2
je 0x14008ddfb
test eax, eax
jne 0x14008d8be
cmp dword [r12], 0
je 0x14008d8ee
mov rax, qword [rsp + 0x1a8]
mov rcx, qword [rsp + 0x198]
mov r8, qword [rsp + 0x1a0]
imul ebp, edi
add rbp, qword [rsp + 0x70]
xor r9d, r9d
movzx r10d, byte [rax + r9]
movzx r11d, byte [rdx + r9]
imul r11d, r10d
lea edi, [r11 + 0x80]
shr edi, 8
lea ebx, [rdi + r11]
add ebx, 0x80
mov byte [rbp - 3], bh
movzx r11d, byte [rcx + r9]
imul r11d, r10d
lea edi, [r11 + 0x80]
shr edi, 8
lea ebx, [rdi + r11]
add ebx, 0x80
mov byte [rbp - 2], bh
movzx r11d, byte [r8 + r9]
imul r11d, r10d
lea r10d, [r11 + 0x80]
shr r10d, 8
lea ebx, [r10 + r11]
add ebx, 0x80
mov byte [rbp - 1], bh
mov byte [rbp], 0xff
inc r9
mov r10d, dword [r12]
add rbp, r13
cmp r9, r10
jb 0x14008da53
jmp 0x14008dc64
mov rax, qword [rsp + 0x38]
mov r12, qword [rax]
cmp byte [rsp + 0x44], 0
mov r11d, dword [rsp + 0x50]
je 0x14008db61
mov eax, dword [r12]
cmp r14d, 1
mov rdi, qword [rsp + 0x48]
jne 0x14008dd5a
test eax, eax
je 0x14008d8ee
mov rax, qword [rsp + 0x1a0]
mov rcx, qword [rsp + 0x190]
mov rdx, qword [rsp + 0x198]
imul ebp, edi
add rbp, r15
xor edi, edi
movzx ebx, byte [rax + rdi]
movzx r8d, byte [rdx + rdi]
movzx r9d, byte [rcx + rdi]
imul r9d, r9d, 0x4d
imul r8d, r8d, 0x96
lea r10d, [rbx + rbx*8]
lea r10d, [r10 + r10*2]
add ebx, ebx
add ebx, r10d
add ebx, r8d
add ebx, r9d
mov byte [rbp + rdi], bh
inc rdi
mov r8d, dword [r12]
cmp rdi, r8
jb 0x14008db20
jmp 0x14008ddc3
cmp dword [r12 + 8], 4
mov r13, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x48]
jne 0x14008dd1b
mov rax, qword [rsp + 0x38]
mov eax, dword [rax + 0x484c]
cmp eax, 2
je 0x14008dedd
test eax, eax
jne 0x14008dd1b
cmp dword [r12], 0
je 0x14008d8ee
mov rax, qword [rsp + 0x1a8]
mov rcx, qword [rsp + 0x190]
mov rdx, qword [rsp + 0x198]
mov r8, qword [rsp + 0x1a0]
imul ebp, edi
add rbp, qword [rsp + 0x68]
xor r9d, r9d
movzx r10d, byte [rax + r9]
movzx r11d, byte [rcx + r9]
imul r11d, r10d
lea edi, [r11 + 0x80]
shr edi, 8
add r11d, edi
add r11d, 0x80
shr r11d, 8
movzx edi, byte [rdx + r9]
imul edi, r10d
lea ebx, [rdi + 0x80]
shr ebx, 8
add edi, ebx
add edi, 0x80
shr edi, 8
movzx ebx, byte [r8 + r9]
imul ebx, r10d
lea r10d, [rbx + 0x80]
shr r10d, 8
add ebx, r10d
add ebx, 0x80
shr ebx, 8
imul r10d, r11d, 0x4d
imul r11d, edi, 0x96
add r11d, r10d
lea r10d, [rbx + rbx*8]
lea r10d, [r10 + r10*2]
add ebx, ebx
add ebx, r10d
add ebx, r11d
mov byte [rbp - 1], bh
mov byte [rbp], 0xff
inc r9
mov r10d, dword [r12]
add rbp, r13
cmp r9, r10
jb 0x14008dbc9
mov rdi, qword [rsp + 0x48]
mov r11d, dword [rsp + 0x50]
jmp 0x14008d8ee
cmp byte [rsp + 0x44], 0
mov r13, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x48]
je 0x14008d8be
cmp dword [r12], 0
je 0x14008d8ee
mov rax, qword [rsp + 0x198]
mov rcx, qword [rsp + 0x1a0]
imul ebp, edi
add rbp, qword [rsp + 0x70]
xor r8d, r8d
movzx r9d, byte [rdx + r8]
mov byte [rbp - 3], r9b
movzx r9d, byte [rax + r8]
mov byte [rbp - 2], r9b
movzx r9d, byte [rcx + r8]
mov byte [rbp - 1], r9b
mov byte [rbp], 0xff
inc r8
mov r9d, dword [r12]
add rbp, r13
cmp r8, r9
jb 0x14008dcae
jmp 0x14008d8ee
cmp dword [r12], 0
je 0x14008d8ee
imul ebp, edi
add rbp, qword [rsp + 0x70]
xor eax, eax
movzx ecx, byte [rdx + rax]
mov byte [rbp - 1], cl
mov byte [rbp - 2], cl
mov byte [rbp - 3], cl
mov byte [rbp], 0xff
inc rax
mov ecx, dword [r12]
add rbp, r13
cmp rax, rcx
jb 0x14008dcf6
jmp 0x14008d8ee
mov rax, qword [rsp + 0x190]
mov ecx, dword [r12]
cmp r14d, 1
jne 0x14008ddcd
test ecx, ecx
je 0x14008d8ee
imul ebp, edi
add rbp, r15
xor ecx, ecx
movzx edx, byte [rax + rcx]
mov byte [rbp + rcx], dl
inc rcx
mov edx, dword [r12]
cmp rcx, rdx
jb 0x14008dd41
jmp 0x14008d8ee
test eax, eax
je 0x14008d8ee
mov rax, qword [rsp + 0x1a0]
mov rcx, qword [rsp + 0x190]
mov rdx, qword [rsp + 0x198]
imul ebp, edi
add rbp, r15
xor edi, edi
movzx ebx, byte [rax + rdi]
movzx r8d, byte [rdx + rdi]
movzx r9d, byte [rcx + rdi]
imul r9d, r9d, 0x4d
imul r8d, r8d, 0x96
lea r10d, [rbx + rbx*8]
lea r10d, [r10 + r10*2]
add ebx, ebx
add ebx, r10d
add ebx, r8d
add ebx, r9d
mov byte [rbp + rdi*2], bh
mov byte [rbp + rdi*2 + 1], 0xff
inc rdi
mov r8d, dword [r12]
cmp rdi, r8
jb 0x14008dd82
mov rdi, qword [rsp + 0x48]
jmp 0x14008d8ee
test ecx, ecx
je 0x14008d8ee
imul ebp, edi
add rbp, r15
xor ecx, ecx
movzx edx, byte [rax + rcx]
mov byte [rbp + rcx*2], dl
mov byte [rbp + rcx*2 + 1], 0xff
inc rcx
mov edx, dword [r12]
cmp rcx, rdx
jb 0x14008dddd
jmp 0x14008d8ee
mov eax, dword [r12]
mov r8, qword [rsp + 0x198]
mov r9, qword [rsp + 0x1a0]
mov dword [rsp + 0x28], r14d
mov dword [rsp + 0x20], eax
mov rsi, qword [rsp + 0x38]
call qword [rsi + 0x4878]
mov r12, qword [rsi]
cmp dword [r12], 0
je 0x14008df47
mov rax, qword [rsp + 0x1a8]
imul ebp, edi
add rbp, qword [rsp + 0x98]
xor ecx, ecx
mov r11d, dword [rsp + 0x50]
movzx edx, byte [rax + rcx]
movzx r8d, byte [rbp - 2]
xor r8d, 0xff
imul r8d, edx
lea r9d, [r8 + 0x80]
shr r9d, 8
lea ebx, [r9 + r8]
add ebx, 0x80
mov byte [rbp - 2], bh
movzx r8d, byte [rbp - 1]
xor r8d, 0xff
imul r8d, edx
lea r9d, [r8 + 0x80]
shr r9d, 8
lea ebx, [r9 + r8]
add ebx, 0x80
mov byte [rbp - 1], bh
movzx r8d, byte [rbp]
xor r8d, 0xff
imul r8d, edx
lea edx, [r8 + 0x80]
shr edx, 8
add edx, r8d
add edx, 0x80
mov byte [rbp], dh
inc rcx
mov edx, dword [r12]
add rbp, r13
cmp rcx, rdx
jb 0x14008de4b
jmp 0x14008d8ee
cmp dword [r12], 0
je 0x14008d8ee
mov rax, qword [rsp + 0x190]
mov rcx, qword [rsp + 0x1a8]
imul ebp, edi
add rbp, qword [rsp + 0x68]
xor edx, edx
movzx r8d, byte [rcx + rdx]
movzx r9d, byte [rax + rdx]
xor r9d, 0xff
imul r9d, r8d
lea r8d, [r9 + 0x80]
shr r8d, 8
lea ebx, [r8 + r9]
add ebx, 0x80
mov byte [rbp - 1], bh
mov byte [rbp], 0xff
inc rdx
mov r8d, dword [r12]
add rbp, r13
cmp rdx, r8
jb 0x14008df02
jmp 0x14008d8ee
mov r11d, dword [rsp + 0x50]
jmp 0x14008d8ee
mov eax, dword [r12 + 8]
test eax, eax
mov r11, qword [rsp + 0x38]
jle 0x14008e103
shl rax, 5
lea rdi, [rax + rax*2]
xor ebx, ebx
mov r14, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xorps xmm6, xmm6
jmp 0x14008df86
add rbx, 0x60
cmp rdi, rbx
je 0x14008e100
mov rcx, qword [r11 + rbx + 0x46d8]
test rcx, rcx
je 0x14008dfa4
call r14
mov r11, qword [rsp + 0x38]
movups xmmword [r11 + rbx + 0x46d0], xmm6
mov rcx, qword [r11 + rbx + 0x46e0]
test rcx, rcx
je 0x14008dfd1
call r14
mov r11, qword [rsp + 0x38]
mov qword [r11 + rbx + 0x46e0], 0
mov qword [r11 + rbx + 0x46f0], 0
mov rcx, qword [r11 + rbx + 0x46e8]
test rcx, rcx
je 0x14008df79
call r14
mov r11, qword [rsp + 0x38]
mov qword [r11 + rbx + 0x46e8], 0
jmp 0x14008df79
add edx, 0xfffffff0
mov dword [r11 + 0x4824], edx
lea rbx, str.bad_huffman_code
mov eax, dword [0x14020d230]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov qword [rax + 8], rbx
mov rax, qword [r11]
mov eax, dword [rax + 8]
test eax, eax
jle 0x14008e0b6
shl rax, 5
lea rdi, [rax + rax*2]
mov rbx, r11
add rbx, 0x46f0
xor r15d, r15d
mov r14, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xorps xmm6, xmm6
xor r12d, r12d
jmp 0x14008e06d
add r12, 0x60
cmp rdi, r12
je 0x14008d880
mov rcx, qword [rbx + r12 - 0x18]
test rcx, rcx
je 0x14008e080
call r14
movups xmmword [rbx + r12 - 0x20], xmm6
mov rcx, qword [rbx + r12 - 0x10]
test rcx, rcx
je 0x14008e09e
call r14
mov qword [rbx + r12 - 0x10], 0
mov qword [rbx + r12], 0
mov rcx, qword [rbx + r12 - 8]
test rcx, rcx
je 0x14008e060
call r14
mov qword [rbx + r12 - 8], 0
jmp 0x14008e060
xor r15d, r15d
mov rcx, r11
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rcx, qword [rsp + 0x1b8]
xor rcx, rsp
call fcn.140106b10
mov rax, r15
movaps xmm6, xmmword [rsp + 0x1c0]
add rsp, 0x1d8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rbx, str.bad_huffman_code
mov r11, rsi
jmp 0x14008e005
mov r12, qword [r11]
mov eax, dword [r12]
mov rcx, qword [rsp + 0xb8]
mov dword [rcx], eax
mov eax, dword [r12 + 4]
mov rcx, qword [rsp + 0xc0]
mov dword [rcx], eax
mov rcx, qword [rsp + 0xc8]
test rcx, rcx
je 0x14008e0b9
xor eax, eax
cmp dword [r12 + 8], 3
setge al
add eax, eax
inc eax
mov dword [rcx], eax
jmp 0x14008e0b9
lea rbx, str.bad_huffman_code
mov r11, qword [rsp + 0x38]
jmp 0x14008e005